From 40f60ac3edda1fb17879ed96e057f647cf4e32bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caf=C3=A9DeColombiaFPS?= <92343247+ColombianGuy@users.noreply.github.com> Date: Wed, 3 May 2023 09:33:56 -0500 Subject: [PATCH 01/17] add base changes from my scripts --- .gitignore | 2 + levels/mp_rr_canyonlands_mu1_night.rson | 2 +- levels/settings/mp_rr_aqueduct.kv | 5 +- resource/ui/menus/R5R/panels/createserver.res | 4 +- resource/ui/menus/R5R/panels/home.res | 2 +- .../ui/menus/R5R/panels/matchstarting.res | 2 +- resource/ui/menus/R5R/privatematch.res | 4 +- vscripts/_mapspawn.gnut | 2 +- vscripts/client/cl_gamestate.gnut | 4 +- vscripts/client/cl_utility.gnut | 2 +- .../conversation/_survival_commentary.gnut | 2 +- .../custom_prophunt/_gamemode_prophunt.nut | 942 ------- .../{custom_tdm => fs_1v1}/_gamemode_1v1.nut | 0 .../_gamemode_aimtrainer.nut} | 0 .../cl_gamemode_aimtrainer.nut} | 0 .../sh_gamemode_aimtrainer.nut} | 0 .../fs_duckhunt/_gamemode_duckhunt.nut | 1320 ++++++++++ .../fs_duckhunt/cl_gamemode_duckhunt.nut | 146 ++ .../fs_duckhunt/sh_gamemode_duckhunt.nut | 1727 +++++++++++++ .../fs_prophunt/_gamemode_prophunt.nut | 2221 +++++++++++++++++ .../fs_prophunt/cl_gamemode_prophunt.nut | 886 +++++++ .../fs_prophunt/sh_gamemode_prophunt.nut | 736 ++++++ .../_gamemode_surf.nut | 0 .../_gamemode_surf2.nut | 0 .../_gamemode_fsdm.nut} | 2 +- .../cl_gamemode_fsdm.nut} | 0 .../fsdm_settings.nut} | 0 .../sh_gamemode_fsdm.nut} | 0 vscripts/gamemodes/sh_gamemodes.gnut | 2 +- .../{ => survival}/_gamemode_survival.nut | 0 .../{ => survival}/cl_gamemode_survival.nut | 2 +- .../{ => survival}/sh_gamemode_survival.nut | 0 vscripts/lobby/lobbyvm/_lobbyvm.nut | 2 +- vscripts/mp/_codecallbacks.gnut | 2 +- .../mp/levels/mp_rr_canyonlands_common.nut | 6 +- .../mp/levels/mp_rr_desertlands_common.nut | 4 +- vscripts/scripts.rson | 38 +- vscripts/sh_consts.gnut | 2 +- vscripts/sh_dev_utility.nut | 2 +- vscripts/sh_onboarding.gnut | 6 +- vscripts/ui/R5RMenus/menu_lobby.nut | 2 +- vscripts/ui/R5RMenus/panel_createserver.nut | 2 +- vscripts/ui/menu_dev.nut | 8 +- vscripts/ui/menu_system.nut | 2 +- vscripts/weapons/mp_weapon_jump_pad.nut | 6 +- weapons/_base_assault_rifle.txt | 5 + weapons/_base_handgun.txt | 15 + weapons/_base_lmg.txt | 10 +- weapons/_base_optics_cq.txt | 2 +- weapons/_base_shotgun.txt | 10 + weapons/_base_smg.txt | 15 + weapons/_base_sniper.txt | 15 + weapons/constant_types/ammo_pool_types.txt | 2 + weapons/mp_ability_area_sonar_scan.txt | 13 + weapons/mp_ability_consumable.txt | 26 +- 55 files changed, 7211 insertions(+), 999 deletions(-) create mode 100644 .gitignore delete mode 100644 vscripts/gamemodes/custom_prophunt/_gamemode_prophunt.nut rename vscripts/gamemodes/{custom_tdm => fs_1v1}/_gamemode_1v1.nut (100%) rename vscripts/gamemodes/{custom_aimtrainer/_aimtrainer.nut => fs_aimtrainer/_gamemode_aimtrainer.nut} (100%) rename vscripts/gamemodes/{custom_aimtrainer/cl_aimtrainer.nut => fs_aimtrainer/cl_gamemode_aimtrainer.nut} (100%) rename vscripts/gamemodes/{custom_aimtrainer/sh_aimtrainer.nut => fs_aimtrainer/sh_gamemode_aimtrainer.nut} (100%) create mode 100644 vscripts/gamemodes/fs_duckhunt/_gamemode_duckhunt.nut create mode 100644 vscripts/gamemodes/fs_duckhunt/cl_gamemode_duckhunt.nut create mode 100644 vscripts/gamemodes/fs_duckhunt/sh_gamemode_duckhunt.nut create mode 100644 vscripts/gamemodes/fs_prophunt/_gamemode_prophunt.nut create mode 100644 vscripts/gamemodes/fs_prophunt/cl_gamemode_prophunt.nut create mode 100644 vscripts/gamemodes/fs_prophunt/sh_gamemode_prophunt.nut rename vscripts/gamemodes/{custom_surf => fs_surf}/_gamemode_surf.nut (100%) rename vscripts/gamemodes/{custom_surf => fs_surf}/_gamemode_surf2.nut (100%) rename vscripts/gamemodes/{custom_tdm/_gamemode_flowstate.nut => fs_tdm/_gamemode_fsdm.nut} (99%) rename vscripts/gamemodes/{custom_tdm/cl_gamemode_custom_tdm.nut => fs_tdm/cl_gamemode_fsdm.nut} (100%) rename vscripts/gamemodes/{custom_tdm/custom_tdm_settings.nut => fs_tdm/fsdm_settings.nut} (100%) rename vscripts/gamemodes/{custom_tdm/sh_gamemode_custom_tdm.nut => fs_tdm/sh_gamemode_fsdm.nut} (100%) rename vscripts/gamemodes/{ => survival}/_gamemode_survival.nut (100%) rename vscripts/gamemodes/{ => survival}/cl_gamemode_survival.nut (99%) rename vscripts/gamemodes/{ => survival}/sh_gamemode_survival.nut (100%) diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..5b9bd8749 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ + +*.bak diff --git a/levels/mp_rr_canyonlands_mu1_night.rson b/levels/mp_rr_canyonlands_mu1_night.rson index 89cb35fb1..9d96f25f8 100644 --- a/levels/mp_rr_canyonlands_mu1_night.rson +++ b/levels/mp_rr_canyonlands_mu1_night.rson @@ -14,7 +14,7 @@ Scripts: [ sh_evac_ship_precache.nut sh_loot_creeps.gnut - gamemodes/sh_gamemode_shadow_squad_precache.nut + //gamemodes/sh_gamemode_shadow_squad_precache.nut mp/levels/mp_rr_canyonlands_mu1_night.nut mp/levels/mp_rr_canyonlands_common.nut ] \ No newline at end of file diff --git a/levels/settings/mp_rr_aqueduct.kv b/levels/settings/mp_rr_aqueduct.kv index 674d02781..0185feae8 100644 --- a/levels/settings/mp_rr_aqueduct.kv +++ b/levels/settings/mp_rr_aqueduct.kv @@ -2,8 +2,9 @@ { "PakList" { - "mp_rr_desertlands_64k_x_64k" "1" - "mp_rr_canyonlands_mu1" "1" + "mp_rr_canyonlands_mu1_night" "1" + "mp_rr_desertlands_64k_x_64k" "1" + "ui_flowstate" "1" } "StreamDB" "mp_rr_desertlands_64k_x_64k" diff --git a/resource/ui/menus/R5R/panels/createserver.res b/resource/ui/menus/R5R/panels/createserver.res index 923fbf976..4665580da 100644 --- a/resource/ui/menus/R5R/panels/createserver.res +++ b/resource/ui/menus/R5R/panels/createserver.res @@ -139,7 +139,7 @@ scripts/resource/ui/menus/R5R/panels/createserver.res PlaylistInfoEdit { ControlName Label - labelText "custom_tdm" + labelText "flowstate" font Default_27_Outline "allcaps" "1" wide 225 @@ -213,7 +213,7 @@ scripts/resource/ui/menus/R5R/panels/createserver.res VisInfoEdit { ControlName Label - labelText "custom_tdm" + labelText "flowstate" font Default_27_Outline "allcaps" "1" wide 125 diff --git a/resource/ui/menus/R5R/panels/home.res b/resource/ui/menus/R5R/panels/home.res index ec582d174..253ba510d 100644 --- a/resource/ui/menus/R5R/panels/home.res +++ b/resource/ui/menus/R5R/panels/home.res @@ -166,7 +166,7 @@ "VersionNumber" { "ControlName" "Label" - "labelText" "custom_tdm" + "labelText" "flowstate" "font" "Default_27_Outline" "allcaps" "1" "wide" "225" diff --git a/resource/ui/menus/R5R/panels/matchstarting.res b/resource/ui/menus/R5R/panels/matchstarting.res index b9348984e..b677891f1 100644 --- a/resource/ui/menus/R5R/panels/matchstarting.res +++ b/resource/ui/menus/R5R/panels/matchstarting.res @@ -54,7 +54,7 @@ MapAndGamemode { ControlName Label - labelText "CUSTOM_TDM - MP_RR_BOX" + labelText "FLOWSTATE BY @CAFEFPS" "font" "DefaultBold_41" "allcaps" "1" auto_wide_tocontents 1 diff --git a/resource/ui/menus/R5R/privatematch.res b/resource/ui/menus/R5R/privatematch.res index f2fa24dc2..26833fa64 100644 --- a/resource/ui/menus/R5R/privatematch.res +++ b/resource/ui/menus/R5R/privatematch.res @@ -294,7 +294,7 @@ PlaylistInfoEdit { ControlName Label - labelText "custom_tdm" + labelText "flowstate" font Default_27_Outline "allcaps" "1" wide 225 @@ -368,7 +368,7 @@ VisInfoEdit { ControlName Label - labelText "custom_tdm" + labelText "flowstate" font Default_27_Outline "allcaps" "1" wide 125 diff --git a/vscripts/_mapspawn.gnut b/vscripts/_mapspawn.gnut index 55a164513..e0d37aa67 100644 --- a/vscripts/_mapspawn.gnut +++ b/vscripts/_mapspawn.gnut @@ -308,7 +308,7 @@ void function CodeCallback_MapSpawn() // original script entry point switch(GameRules_GetGameMode()) { - case "custom_tdm": + case "flowstate_dm": break case "custom_aimtrainer": PrecacheWeapon( $"mp_weapon_clickweapon") diff --git a/vscripts/client/cl_gamestate.gnut b/vscripts/client/cl_gamestate.gnut index 803dfeb35..65963b885 100644 --- a/vscripts/client/cl_gamestate.gnut +++ b/vscripts/client/cl_gamestate.gnut @@ -158,8 +158,8 @@ void function SetCommonScoreRUIVars( var rui ) if ( IsSoloMode() ) { RuiSetBool( rui, "shouldDisplayLivingPlayerCount", false ) - RuiSetString( rui, "squadsRemainingTextSingular", GameRules_GetGameMode() == "custom_tdm" ? "PLAYERS ONLINE" : "#SURVIVAL_PLAYERS_REMAIN" ) - RuiSetString( rui, "squadsRemainingTextPlural", GameRules_GetGameMode() == "custom_tdm" ? "PLAYERS ONLINE" : "#SURVIVAL_PLAYERS_REMAIN" ) + RuiSetString( rui, "squadsRemainingTextSingular", GameRules_GetGameMode() == "flowstate_dm" ? "PLAYERS ONLINE" : "#SURVIVAL_PLAYERS_REMAIN" ) + RuiSetString( rui, "squadsRemainingTextPlural", GameRules_GetGameMode() == "flowstate_dm" ? "PLAYERS ONLINE" : "#SURVIVAL_PLAYERS_REMAIN" ) } else if(GetCurrentPlaylistVarBool( "dummies_horde_enabled", false )){ RuiSetBool( rui, "shouldDisplayLivingPlayerCount", false ) diff --git a/vscripts/client/cl_utility.gnut b/vscripts/client/cl_utility.gnut index 54bc19030..3218e3cd3 100644 --- a/vscripts/client/cl_utility.gnut +++ b/vscripts/client/cl_utility.gnut @@ -655,7 +655,7 @@ void function Dev_PrintClientMessage( float duration ) Announcement_SetDuration( announcement, duration ) Announcement_SetPurge( announcement, true ) - if( GetCurrentPlaylistName() == "custom_tdm" || GetCurrentPlaylistName() == "custom_surf" ) + if( GetCurrentPlaylistName() == "flowstate_dm" || GetCurrentPlaylistName() == "custom_surf" ) { Announcement_SetStyle(announcement, ANNOUNCEMENT_STYLE_CIRCLE_WARNING) Announcement_SetTitleColor( announcement, Vector(0,0,0) ) diff --git a/vscripts/conversation/_survival_commentary.gnut b/vscripts/conversation/_survival_commentary.gnut index af557db68..11efa8415 100644 --- a/vscripts/conversation/_survival_commentary.gnut +++ b/vscripts/conversation/_survival_commentary.gnut @@ -81,7 +81,7 @@ entity function GetChampion() int function GetMinKillsForKillLeader() { int minKill = GetCurrentPlaylistVarInt( "survival_commentary_kill_leader_min_kills", 0 ) - if( GameRules_GetGameMode() == "custom_tdm" ) + if( GameRules_GetGameMode() == "flowstate_dm" ) minKill = 2 else if( minKill < 1 ) minKill = KILL_LEADER_MIN_KILL_REQUIREMENT // From sh_survival_commentary.gnut diff --git a/vscripts/gamemodes/custom_prophunt/_gamemode_prophunt.nut b/vscripts/gamemodes/custom_prophunt/_gamemode_prophunt.nut deleted file mode 100644 index 124a9f6e2..000000000 --- a/vscripts/gamemodes/custom_prophunt/_gamemode_prophunt.nut +++ /dev/null @@ -1,942 +0,0 @@ -/////////////////////////////////////////////////////// -// ███████ ██ ██████ ██ ██ ███████ ████████ █████ ████████ ███████ -// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ -// █████ ██ ██ ██ ██ █ ██ ███████ ██ ███████ ██ █████ -// ██ ██ ██ ██ ██ ███ ██ ██ ██ ██ ██ ██ ██ -// ██ ███████ ██████ ███ ███ ███████ ██ ██ ██ ██ ███████ -/////////////////////////////////////////////////////// -//APEX PROPHUNT GAMEMODE -//Credits: -//CaféDeColombiaFPS (Retículo Endoplasmático#5955) -- owner/main dev -//everyone else -- advice - -global function _RegisterLocationPROPHUNT -global function PROPHUNT_GiveAndManageRandomProp -global function returnPropBool -global function RunPROPHUNT -global function _OnPlayerConnectedPROPHUNT -global function _OnPlayerDiedPROPHUNT -global function ClientCommand_NextRoundPROPHUNT -global function helpMessagePROPHUNT - -struct{ -float endTime = 0 -array playerSpawnedProps -array locationSettings -array locationsShuffled -LocationSettings& selectedLocation -int nextMapIndex = 0 -bool mapIndexChanged = true -bool cantUseChangeProp = false -bool InProgress = false -} prophunt - -void function _RegisterLocationPROPHUNT(LocationSettings locationSettings) -{ - prophunt.locationSettings.append(locationSettings) -} - -void function _OnPropDynamicSpawnedPROPHUNT(entity prop) -{ - prophunt.playerSpawnedProps.append(prop) -} - -//prophunt start. Colombia -/////////////////////////////////////////////////////// - -const array prophuntAssetsWE = -//By Retículo Endoplasmático#5955 (CaféDeColombiaFPS)// -[ - $"mdl/barriers/concrete/concrete_barrier_01.rmdl", - $"mdl/vehicles_r5/land/msc_truck_samson_v2/veh_land_msc_truck_samson_v2.rmdl", - $"mdl/angel_city/vending_machine.rmdl", - $"mdl/utilities/power_gen1.rmdl", - $"mdl/angel_city/box_small_02.rmdl", - $"mdl/colony/antenna_05_colony.rmdl", - $"mdl/robots/marvin/marvin_gladcard.rmdl", - $"mdl/garbage/trash_bin_single_wtrash_Blue.rmdl", - $"mdl/angel_city/box_small_01.rmdl", - $"mdl/garbage/dumpster_dirty_open_a_02.rmdl", - $"mdl/containers/slumcity_oxygen_tank_red.rmdl", - $"mdl/containers/box_shrinkwrapped.rmdl", - $"mdl/colony/farmland_fridge_01.rmdl", - $"mdl/furniture/chair_beanbag_01.rmdl", - $"mdl/colony/farmland_crate_plastic_01_red.rmdl", - $"mdl/IMC_base/generator_IMC_01.rmdl", - $"mdl/garbage/trash_can_metal_02_b.rmdl", - $"mdl/garbage/trash_bin_single_wtrash.rmdl" -] - -array function shuffleLocationsArray(array arr) -// O(n) Durstenfeld / Knuth shuffle (https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle) -//By michae\l/#1125. -{ - int i; - int j; - int b; - LocationSettings tmp; - - for (i = arr.len() - 1; i > 0; i--) { - j = RandomIntRangeInclusive(1, i) - tmp = arr[b] - arr[b] = arr[j] - arr[j] = tmp - } - - return arr -} - -void function RunPROPHUNT() -//By Retículo Endoplasmático#5955 (CaféDeColombiaFPS)// -{ - WaitForGameState(eGameState.Playing) - AddSpawnCallback("prop_dynamic", _OnPropDynamicSpawnedPROPHUNT) - - prophunt.locationsShuffled = shuffleLocationsArray(prophunt.locationSettings) - - for(; ;) - { - ActualPROPHUNTLobby() - ActualPROPHUNTGameLoop() - } - WaitForever() -} - -void function _OnPlayerConnectedPROPHUNT(entity player) -//By Retículo Endoplasmático#5955 (CaféDeColombiaFPS)// -{ - if(!IsValid(player)) return - //CreatePanelText( player, "Flowstate", "", <-19766, 2111, 6541>, <0, 180, 0>, false, 2 ) - printt("Flowstate DEBUG - New player connected.", player) - if(FlowState_ForceCharacter()){CharSelect(player)} - GivePassive(player, ePassives.PAS_PILOT_BLOOD) - UpdatePlayerCounts() - array IMCplayers = GetPlayerArrayOfTeam(TEAM_IMC) - array MILITIAplayers = GetPlayerArrayOfTeam(TEAM_MILITIA) - array playersON = GetPlayerArray_Alive() - playersON.fastremovebyvalue( player ) - ItemFlavor playerCharacter = LoadoutSlot_GetItemFlavor( ToEHI( player ), Loadout_CharacterClass() ) - asset characterSetFile = CharacterClass_GetSetFile( playerCharacter ) - player.SetPlayerSettingsWithMods( characterSetFile, [] ) - SetPlayerSettings(player, PROPHUNT_SETTINGS) - DoRespawnPlayer( player, null ) - Survival_SetInventoryEnabled( player, true ) - player.SetPlayerNetInt( "respawnStatus", eRespawnStatus.NONE ) - player.SetPlayerNetBool( "pingEnabled", true ) - player.SetHealth( 100 ) - player.kv.solid = 6 - player.kv.CollisionGroup = TRACE_COLLISION_GROUP_PLAYER - player.AllowMantle() - - switch(GetGameState()) - { - case eGameState.WaitingForPlayers: - if(IsValidPlayer(player)) - { - printt("Flowstate DEBUG - Player connected waitingforplayers.", player) - //player has a team assigned already, we need to fix it before spawn - GiveTeamToProphuntPlayer(player) - - if(GetCurrentPlaylistVarBool("flowstatePROPHUNTDebug", false )){ - SetTeam( player, TEAM_MILITIA ) - } - - if (GetMapName() == "mp_rr_desertlands_64k_x_64k" || GetMapName() == "mp_rr_desertlands_64k_x_64k_nx") - { - player.SetOrigin(<-19459, 2127, 6404>)} - else if(GetMapName() == "mp_rr_canyonlands_mu1" || GetMapName() == "mp_rr_canyonlands_mu1_night" || GetMapName() == "mp_rr_canyonlands_64k_x_64k") - { - player.SetOrigin(<-19459, 2127, 18404>)} - player.SetThirdPersonShoulderModeOn() - player.UnforceStand() - player.UnfreezeControlsOnServer() - } - break - case eGameState.MapVoting: - if(IsValidPlayer(player)) - { - printt("Flowstate DEBUG - Prophunt player connected mapvoting.", player) - //player has a team assigned already, we need to fix it before spawn - GiveTeamToProphuntPlayer(player) - - if (GetMapName() == "mp_rr_desertlands_64k_x_64k" || GetMapName() == "mp_rr_desertlands_64k_x_64k_nx") - { - player.SetOrigin(<-19459, 2127, 6404>)} - else if(GetMapName() == "mp_rr_canyonlands_mu1" || GetMapName() == "mp_rr_canyonlands_mu1_night" || GetMapName() == "mp_rr_canyonlands_64k_x_64k") - { - player.SetOrigin(<-19459, 2127, 18404>)} - - player.SetThirdPersonShoulderModeOn() - player.UnforceStand() - player.UnfreezeControlsOnServer() - } - break - case eGameState.Playing: //wait round ends, set new player to spectate random player - if(IsValid(player)) - { - printt("Flowstate DEBUG - Prophunt player connected midround, setting spectator.", player) - array prophuntSpawns = prophunt.selectedLocation.spawns - player.SetOrigin(prophuntSpawns[RandomIntRangeInclusive(0,prophuntSpawns.len()-1)].origin) - player.MakeInvisible() - player.p.PROPHUNT_isSpectatorDiedMidRound = false - SetTeam(player, 20 ) - Message(player, "APEX PROPHUNT", " Game is in progress, you'll spawn in the next round.\n Change spectate target with mouse click.", 10) - player.SetObserverTarget( playersON[RandomIntRangeInclusive(0,playersON.len()-1)] ) - player.SetSpecReplayDelay( 2 ) - player.StartObserverMode( OBS_MODE_IN_EYE ) - Remote_CallFunction_NonReplay(player, "ServerCallback_KillReplayHud_Activate") - - // foreach(sPlayer in playersON) - // { - // Message(player, "APEX PROPHUNT", "Player connected! He/she is going to spawn next round." + player.GetPlayerName(), 10) - // } - } - break - default: - break - } - - -} - -void function _OnPlayerDiedPROPHUNT(entity victim, entity attacker, var damageInfo) -//By Retículo Endoplasmático#5955 (CaféDeColombiaFPS)// -{ - UpdatePlayerCounts() - printt("Flowstate DEBUG - Prophunt player killed.", victim, " -by- ", attacker) - - switch(GetGameState()) - { - case eGameState.Playing: - // Víctima - void functionref() victimHandleFunc = void function() : (victim, attacker, damageInfo) { - victim.Hide() - entity effect = StartParticleEffectInWorld_ReturnEntity( GetParticleSystemIndex($"P_ball_tick_exp_CP"), victim.GetOrigin(), <0, 0, 0> ) - EntFireByHandle( effect, "Kill", "", 2, null, null ) - - array playersON = GetPlayerArray_Alive() - playersON.fastremovebyvalue( victim ) - - if(!IsValid(victim)) return - - wait 0.5 - if(IsValid(victim)){ - - if(victim != attacker){ - victim.SetObserverTarget( attacker ) - victim.SetSpecReplayDelay( 2 ) - victim.StartObserverMode( OBS_MODE_IN_EYE ) - Remote_CallFunction_NonReplay(victim, "ServerCallback_KillReplayHud_Activate") - } - else { - victim.SetObserverTarget( playersON[0] ) - victim.SetSpecReplayDelay( 2 ) - victim.StartObserverMode( OBS_MODE_IN_EYE ) - Remote_CallFunction_NonReplay(victim, "ServerCallback_KillReplayHud_Activate") - } - - int invscore = victim.GetPlayerGameStat( PGS_DEATHS ); - invscore++; - victim.SetPlayerGameStat( PGS_DEATHS, invscore); - //Add a death to the victim - int invscore2 = victim.GetPlayerNetInt( "assists" ) - invscore2++; - victim.SetPlayerNetInt( "assists", invscore2 ) - victim.p.PROPHUNT_isSpectatorDiedMidRound = true - } - } - - // Atacante - void functionref() attackerHandleFunc = void function() : (victim, attacker, damageInfo) - { - if(IsValid(attacker) && attacker.IsPlayer() && IsAlive(attacker) && attacker != victim) - { - DamageInfo_AddCustomDamageType( damageInfo, DF_KILLSHOT ) - thread EmitSoundOnEntityOnlyToPlayer( attacker, attacker, "flesh_bulletimpact_downedshot_1p_vs_3p" ) - //Autoreload on kill without animation //By CaféDeColombiaFPS - WpnAutoReloadOnKill(attacker) - int score = GameRules_GetTeamScore(TEAM_IMC); - score++; - GameRules_SetTeamScore(TEAM_IMC, score); - } - array teamMILITIAplayersalive = GetPlayerArrayOfTeam_Alive( TEAM_MILITIA ) - if ( teamMILITIAplayersalive.len() == 0 ) - { - SetTdmStateToNextRound() - SetGameState(eGameState.MapVoting) - } - } -thread victimHandleFunc() -thread attackerHandleFunc() - break - default: - break - } -} - -void function _HandleRespawnPROPHUNT(entity player) -//By Retículo Endoplasmático#5955 (CaféDeColombiaFPS)// -{ - if(!IsValid(player)) return - printt("Flowstate DEBUG - Tping prophunt player to Lobby.", player) - - if(IsValid( player )) - { - if(FlowState_ForceCharacter()){CharSelect(player)} - if(!IsAlive(player)) {DoRespawnPlayer( player, null )} - - if (GetMapName() == "mp_rr_desertlands_64k_x_64k" || GetMapName() == "mp_rr_desertlands_64k_x_64k_nx") - { - player.SetOrigin(<-19459, 2127, 6404>)} - else if(GetMapName() == "mp_rr_canyonlands_mu1" || GetMapName() == "mp_rr_canyonlands_mu1_night" || GetMapName() == "mp_rr_canyonlands_64k_x_64k") - { - player.SetOrigin(<-19459, 2127, 18404>)} - player.SetThirdPersonShoulderModeOn() - Survival_SetInventoryEnabled( player, true ) - player.SetPlayerNetInt( "respawnStatus", eRespawnStatus.NONE ) - player.SetPlayerNetBool( "pingEnabled", true ) - player.SetHealth( 100 ) - TakeAllWeapons(player) - } - -} - -bool function returnPropBool(){ -//By Retículo Endoplasmático#5955 (CaféDeColombiaFPS)// - return prophunt.cantUseChangeProp -} - -void function GiveTeamToProphuntPlayer(entity player) -//By Retículo Endoplasmático#5955 (CaféDeColombiaFPS)// -{ - array IMCplayers = GetPlayerArrayOfTeam(TEAM_IMC) - array MILITIAplayers = GetPlayerArrayOfTeam(TEAM_MILITIA) - - - - if(IMCplayers.len() > MILITIAplayers.len()) - { - SetTeam(player, TEAM_MILITIA ) - } else if (MILITIAplayers.len() > IMCplayers.len()) - { - SetTeam(player, TEAM_IMC ) - } else { - switch(RandomIntRangeInclusive(0,1)) - { - case 0: - SetTeam(player, TEAM_IMC ) - break; - case 1: - SetTeam(player, TEAM_MILITIA ) - break; - } - } - printt("Flowstate DEBUG - Giving team to player.", player, player.GetTeam()) -} - - -void function EmitSoundOnSprintingProp() -//By Retículo Endoplasmático#5955 (CaféDeColombiaFPS)// -{ - while(prophunt.InProgress) - { - array MILITIAplayers = GetPlayerArrayOfTeam(TEAM_MILITIA) - foreach(player in MILITIAplayers) - { - if(player.IsSprinting() && IsValid(player)) - { - EmitSoundOnEntity( player, "husaria_sprint_default_3p" ) - } - } - wait 0.2 - } -} - - -void function EmitWhistleOnProp() -//By Retículo Endoplasmático#5955 (CaféDeColombiaFPS)// -{ - while(prophunt.InProgress) - { - wait 30 //40 s COD original value: 20. - array MILITIAplayers = GetPlayerArrayOfTeam(TEAM_MILITIA) - foreach(player in MILITIAplayers) - { - if(IsValid(player)) - { - EmitSoundOnEntity( player, "husaria_sprint_default_3p" ) - EmitSoundOnEntity( player, "concrete_bulletimpact_1p_vs_3p" ) - EmitSoundOnEntity( player, "husaria_sprint_default_3p" ) - } - } - } -} - -void function CheckForPlayersPlaying() -//By Retículo Endoplasmático#5955 (CaféDeColombiaFPS)// -{ - - while(prophunt.InProgress) - { - if(GetPlayerArray().len() == 1) - { - SetTdmStateToNextRound() - foreach(player in GetPlayerArray()){ - Message(player, "ATTENTION", "Not enough players. Round is ending.", 5) - } - } - WaitFrame() - } - printt("Flowstate DEBUG - Ending round cuz not enough players midround") -} - -void function PropWatcher(entity prop, entity player) -//By Retículo Endoplasmático#5955 (CaféDeColombiaFPS)// -{ - while(prophunt.InProgress && !player.p.PROPHUNT_DestroyProp) - { - WaitFrame()} - - if(IsValid(prop)) - prop.Destroy() -} - -void function DestroyPlayerPropsPROPHUNT() -//By Retículo Endoplasmático#5955 (CaféDeColombiaFPS)// -{ - foreach(prop in prophunt.playerSpawnedProps) - { - if(IsValid(prop)) - prop.Destroy() - } - prophunt.playerSpawnedProps.clear() -} - - -void function PROPHUNT_GiveAndManageRandomProp(entity player, bool anglesornah = false) -//By Retículo Endoplasmático#5955 (CaféDeColombiaFPS)// -{ - // Using gamestat as boolean Destroy prop y otras cosas más - // player.SetPlayerGameStat( PGS_DEFENSE_SCORE, 20) true - // player.SetPlayerGameStat( PGS_DEFENSE_SCORE, 10) false - player.p.PROPHUNT_DestroyProp = true - if(!anglesornah && IsValid(player)){ - WaitFrame() - asset selectedModel = prophuntAssetsWE[RandomIntRangeInclusive(0,(prophuntAssetsWE.len()-1))] - player.p.PROPHUNT_LastModel = selectedModel - player.kv.solid = 6 - player.kv.CollisionGroup = TRACE_COLLISION_GROUP_PLAYER - entity prop = CreatePropDynamic(selectedModel, player.GetOrigin(), player.GetAngles(), 6, -1) - prop.kv.CollisionGroup = TRACE_COLLISION_GROUP_PLAYER - prop.kv.solid = 6 - prop.SetDamageNotifications( true ) - prop.SetTakeDamageType( DAMAGE_YES ) - prop.AllowMantle() - prop.SetCanBeMeleed( true ) - prop.SetBoundingBox( < -150, -75, 0 >, <150, 75, 100 > ) - prop.SetMaxHealth( 100 ) - prop.SetHealth( 100 ) - prop.SetParent(player) - AddEntityCallback_OnDamaged(prop, NotifyDamageOnProp) - player.p.PROPHUNT_DestroyProp = false - WaitFrame() - thread PropWatcher(prop, player) - } else if(anglesornah && IsValid(player)){ - player.p.PROPHUNT_DestroyProp = true - player.Show() - player.SetBodyModelOverride( player.p.PROPHUNT_LastModel ) - player.SetArmsModelOverride( player.p.PROPHUNT_LastModel ) - Message(player, "prophunt", "Angles locked.", 1) - player.kv.solid = SOLID_BBOX - player.kv.CollisionGroup = TRACE_COLLISION_GROUP_PLAYER - player.AllowMantle() - player.SetDamageNotifications( true ) - player.SetTakeDamageType( DAMAGE_YES ) - } -} - - -void function PlayerwithLockedAngles_OnDamaged(entity ent, var damageInfo) -//By Retículo Endoplasmático#5955 (CaféDeColombiaFPS)// -{ - entity attacker = DamageInfo_GetAttacker(damageInfo) - float damage = DamageInfo_GetDamage( damageInfo ) - attacker.NotifyDidDamage - ( - ent, - DamageInfo_GetHitBox( damageInfo ), - DamageInfo_GetDamagePosition( damageInfo ), - DamageInfo_GetCustomDamageType( damageInfo ), - DamageInfo_GetDamage( damageInfo ), - DamageInfo_GetDamageFlags( damageInfo ), - DamageInfo_GetHitGroup( damageInfo ), - DamageInfo_GetWeapon( damageInfo ), - DamageInfo_GetDistFromAttackOrigin( damageInfo ) - ) - float NextHealth = ent.GetHealth() - DamageInfo_GetDamage( damageInfo ) - if (NextHealth > 0 && IsValid(ent)){ - ent.SetHealth(NextHealth) - } else if (IsValid(ent)){ - ent.SetTakeDamageType( DAMAGE_NO ) - ent.SetHealth(0) - ent.kv.solid = 0 - // ent.SetOwner( attacker ) - // ent.kv.teamnumber = attacker.GetTeam() - } -} - -void function NotifyDamageOnProp(entity ent, var damageInfo) -//By Retículo Endoplasmático#5955 (CaféDeColombiaFPS)// -{ -//props health bleedthrough - entity attacker = DamageInfo_GetAttacker(damageInfo) - entity victim = ent.GetParent() - float damage = DamageInfo_GetDamage( damageInfo ) - - attacker.NotifyDidDamage - ( - ent, - DamageInfo_GetHitBox( damageInfo ), - DamageInfo_GetDamagePosition( damageInfo ), - DamageInfo_GetCustomDamageType( damageInfo ), - DamageInfo_GetDamage( damageInfo ), - DamageInfo_GetDamageFlags( damageInfo ), - DamageInfo_GetHitGroup( damageInfo ), - DamageInfo_GetWeapon( damageInfo ), - DamageInfo_GetDistFromAttackOrigin( damageInfo ) - ) - - float playerNextHealth = ent.GetHealth() - DamageInfo_GetDamage( damageInfo ) - - if (playerNextHealth > 0 && IsValid(victim) && IsAlive(victim)){ - victim.SetHealth(playerNextHealth)} else { - ent.ClearParent() - victim.SetHealth(0) - ent.Destroy()} -} - -void function ActualPROPHUNTLobby() -//By Retículo Endoplasmático#5955 (CaféDeColombiaFPS)// -{ - WaitFrame() - DestroyPlayerPropsPROPHUNT() - SetGameState(eGameState.MapVoting) - SetFallTriggersStatus(true) - if(GetMapName() == "mp_rr_desertlands_64k_x_64k" || GetMapName() == "mp_rr_desertlands_64k_x_64k_nx" || GetMapName() == "mp_rr_canyonlands_mu1" || GetMapName() == "mp_rr_canyonlands_mu1_night" || GetMapName() == "mp_rr_canyonlands_64k_x_64k") - { - thread CreateShipRoomFallTriggers() - } - printt("Flowstate DEBUG - Fall triggers created.") - -if (FlowState_LockPOI()) { - prophunt.nextMapIndex = FlowState_LockedPOI() -}else if (!prophunt.mapIndexChanged) - { - prophunt.nextMapIndex = (prophunt.nextMapIndex + 1 ) % prophunt.locationsShuffled.len() - } - -int choice = prophunt.nextMapIndex -prophunt.mapIndexChanged = false -prophunt.selectedLocation = prophunt.locationsShuffled[choice] - printt("Flowstate DEBUG - Next location selected: ", prophunt.selectedLocation.name) - -if(prophunt.selectedLocation.name == "Skill trainer By Colombia"){ - DestroyPlayerPropsPROPHUNT() - wait 2 - thread SkillTrainerLoad() - printt("Flowstate DEBUG - Skill trainer loading.") -} - foreach(player in GetPlayerArray()) - { - if(IsValid(player)) - { - player.p.PROPHUNT_isSpectatorDiedMidRound = false - player.p.PROPHUNT_Max3changes = 0 - player.p.PROPHUNT_DestroyProp = false - player.UnforceStand() - player.UnfreezeControlsOnServer() - Message(player, "APEX PROPHUNT", " Made by CaféDeColombiaFPS. Game is starting.\n\n" + helpMessagePROPHUNT(), 10) - } - WaitFrame() - } - wait 10 - -if(!GetCurrentPlaylistVarBool("flowstatePROPHUNTDebug", false )){ - while(true) - { - array playersON = GetPlayerArray_Alive() - if(playersON.len() > 1 ) - { - foreach(player in GetPlayerArray()) - { - Message(player, "APEX PROPHUNT", "We have enough players, starting now.", 5, "diag_ap_aiNotify_circleMoves10sec") - } - wait 5 - break - } else { - foreach(player in GetPlayerArray()) - { - Message(player, "APEX PROPHUNT", "Waiting another player to start. Please wait.", 1) - } - wait 5 - } - WaitFrame() - } -} -array IMCplayers = GetPlayerArrayOfTeam(TEAM_IMC) -array MILITIAplayers = GetPlayerArrayOfTeam(TEAM_MILITIA) - foreach(player in MILITIAplayers) - { - Message(player, "ATTENTION", " You're a prop. Teleporting in 5 seconds! \n Use your ULTIMATE to CHANGE PROP up to 3 times. ", 5) - } -wait 5 -} - -void function ActualPROPHUNTGameLoop() -//By Retículo Endoplasmático#5955 (CaféDeColombiaFPS)// -{ -SetTdmStateToInProgress() -printt("Flowstate DEBUG - tdmState is eTDMState.IN_PROGRESS Starting round.") -entity bubbleBoundary = CreateBubbleBoundaryPROPHUNT(prophunt.selectedLocation) -SetGameState(eGameState.Playing) - -float endTime = Time() + GetCurrentPlaylistVarFloat("flowstatePROPHUNTLimitTime", 300 ) - array IMCplayers = GetPlayerArrayOfTeam(TEAM_IMC) - array MILITIAplayers = GetPlayerArrayOfTeam(TEAM_MILITIA) - -array prophuntSpawns = prophunt.selectedLocation.spawns - -prophunt.cantUseChangeProp = false -prophunt.InProgress = true -thread EmitSoundOnSprintingProp() - -printt("Flowstate DEBUG - Tping props team.") -foreach(player in GetPlayerArray()) - { - if(IsValidPlayer(player)) - { - //try{TakePassive(player, ePassives.PAS_PILOT_BLOOD)}catch(e420){} - //Inventory_SetPlayerEquipment(player, WHITE_SHIELD, "armor") //props dont like shields FX - ClearInvincible(player) - player.p.playerDamageDealt = 0.0 - if(player.GetTeam() == TEAM_MILITIA){ - vector lastPosForCoolParticles = player.GetOrigin() - vector lastAngForCoolParticles = player.GetAngles() - StartParticleEffectInWorld( GetParticleSystemIndex( $"P_impact_shieldbreaker_sparks" ), lastPosForCoolParticles, lastAngForCoolParticles ) - StartParticleEffectInWorld( GetParticleSystemIndex( $"P_impact_shieldbreaker_sparks" ), lastPosForCoolParticles, lastAngForCoolParticles ) - EmitSoundOnEntityOnlyToPlayer( player, player, "PhaseGate_Enter_1p" ) - EmitSoundOnEntityExceptToPlayer( player, player, "PhaseGate_Enter_3p" ) - player.SetOrigin(prophuntSpawns[RandomIntRangeInclusive(0,prophuntSpawns.len()-1)].origin) - asset selectedModel = prophuntAssetsWE[RandomIntRangeInclusive(0,(prophuntAssetsWE.len()-1))] - player.p.PROPHUNT_LastModel = selectedModel - player.kv.solid = 6 - player.kv.CollisionGroup = TRACE_COLLISION_GROUP_PLAYER - player.Hide() - entity prop = CreatePropDynamic(selectedModel, player.GetOrigin(), player.GetAngles(), 6, -1) - prop.kv.solid = 6 - prop.kv.CollisionGroup = TRACE_COLLISION_GROUP_PLAYER - prop.AllowMantle() - prop.SetDamageNotifications( true ) - prop.SetTakeDamageType( DAMAGE_YES ) - prop.SetMaxHealth( 100 ) - prop.SetHealth( 100 ) - prop.SetParent(player) - AddEntityCallback_OnDamaged(prop, NotifyDamageOnProp) - player.p.PROPHUNT_DestroyProp = false - thread PropWatcher(prop, player) //destroys prop on end round and restores player model. - player.SetThirdPersonShoulderModeOn() - player.TakeOffhandWeapon(OFFHAND_TACTICAL) - player.TakeOffhandWeapon(OFFHAND_ULTIMATE) - player.GiveOffhandWeapon("mp_ability_heal", OFFHAND_TACTICAL) - player.GiveOffhandWeapon("mp_ability_phase_walk", OFFHAND_ULTIMATE) - DeployAndEnableWeapons(player) - } else if(player.GetTeam() == TEAM_IMC){ - Message(player, "PROPS ARE HIDING", "Teleporting in 30 seconds. Please wait.", 10)} - } - wait 0.2 - } -if(!GetCurrentPlaylistVarBool("flowstatePROPHUNTDebug", false )){ -wait 25} else {wait 2} -foreach(player in GetPlayerArray()) - { -if(player.GetTeam() == TEAM_IMC && IsValid(player)){ -ScreenFade( player, 0, 0, 0, 255, 4.0, 1, FFADE_OUT | FFADE_PURGE )} - } -wait 4 -SetFallTriggersStatus(false) -foreach(player in GetPlayerArray()) - { - if(IsValidPlayer(player)) - { - if (player.GetTeam() == TEAM_MILITIA){ - Message(player, "ATTENTION", "The attackers have arrived. Use your ULTIMATE to PLACE PROP (lock angles).", 20, "Survival_UI_Ultimate_Ready") } - else if (player.GetTeam() == TEAM_IMC){ - array MILITIAplayersAlive = GetPlayerArrayOfTeam_Alive(TEAM_MILITIA) - Message(player, "ATTENTION", "Kill the props. Props alive: " + MILITIAplayersAlive.len(), 20) - } - } - - } -prophunt.cantUseChangeProp = true -printt("Flowstate DEBUG - Tping attackers team.") -foreach(player in IMCplayers) - { - if(IsValidPlayer(player)) - { - //Inventory_SetPlayerEquipment(player, WHITE_SHIELD, "armor") - ClearInvincible(player) - EmitSoundOnEntityOnlyToPlayer( player, player, "PhaseGate_Enter_1p" ) - EmitSoundOnEntityExceptToPlayer( player, player, "PhaseGate_Enter_3p" ) - player.SetOrigin(prophuntSpawns[RandomIntRangeInclusive(0,prophuntSpawns.len()-1)].origin) - player.kv.solid = 6 - player.kv.CollisionGroup = TRACE_COLLISION_GROUP_PLAYER - player.SetThirdPersonShoulderModeOff() - string pri = GetCurrentPlaylistVarString("flowstatePROPHUNTweapon1", "~~none~~") - string sec = GetCurrentPlaylistVarString("flowstatePROPHUNTweapon2", "~~none~~") - player.TakeNormalWeaponByIndexNow( WEAPON_INVENTORY_SLOT_PRIMARY_0 ) - player.GiveWeapon( pri, WEAPON_INVENTORY_SLOT_PRIMARY_0, [] ) - player.TakeNormalWeaponByIndexNow( WEAPON_INVENTORY_SLOT_PRIMARY_1 ) - player.GiveWeapon( sec, WEAPON_INVENTORY_SLOT_PRIMARY_1, [] ) - player.TakeOffhandWeapon(OFFHAND_TACTICAL) - player.GiveOffhandWeapon("mp_ability_heal", OFFHAND_TACTICAL) - //if a player punch a prop, he/she will crash. This is a workaround. Colombia - //player.GiveWeapon( "mp_weapon_melee_survival", WEAPON_INVENTORY_SLOT_PRIMARY_2, [] ) - //player.GiveOffhandWeapon( "melee_data_knife", OFFHAND_MELEE, [] ) - DeployAndEnableWeapons(player) - - } - } - -if(!GetCurrentPlaylistVarBool("flowstatePROPHUNTDebug", false )){ - -thread CheckForPlayersPlaying()} -thread EmitWhistleOnProp() - -while( Time() <= endTime ) - { - if(Time() == endTime-120) - { - foreach(player in GetPlayerArray()) - { - if(IsValid(player)) - { - array MILITIAplayersAlive = GetPlayerArrayOfTeam_Alive(TEAM_MILITIA) - Message(player,"2 MINUTES REMAINING!", "Props alive: " + MILITIAplayersAlive.len(), 5) - } - } - } - if(Time() == endTime-60) - { - foreach(player in GetPlayerArray()) - { - if(IsValid(player)) - { - array MILITIAplayersAlive = GetPlayerArrayOfTeam_Alive(TEAM_MILITIA) - Message(player,"1 MINUTE REMAINING!", "Props alive: " + MILITIAplayersAlive.len(), 5, "diag_ap_aiNotify_circleMoves60sec") - } - } - } - if(Time() == endTime-30) - { - foreach(player in GetPlayerArray()) - { - if(IsValid(player)) - { - array MILITIAplayersAlive = GetPlayerArrayOfTeam_Alive(TEAM_MILITIA) - Message(player,"30 SECONDS REMAINING!", "Props alive: " + MILITIAplayersAlive.len(), 5, "diag_ap_aiNotify_circleMoves30sec") - } - } - } - if(Time() == endTime-10) - { - foreach(player in GetPlayerArray()) - { - if(IsValid(player)) - { - array MILITIAplayersAlive = GetPlayerArrayOfTeam_Alive(TEAM_MILITIA) - Message(player,"10 SECONDS REMAINING!", "Props alive: " + MILITIAplayersAlive.len(), 5, "diag_ap_aiNotify_circleMoves10sec") - } - } - } - if(GetTDMState() == 1)//eTDMState.NEXT_ROUND_NOW) - { - printt("Flowstate DEBUG - tdmState is eTDMState.NEXT_ROUND_NOW Loop ended.") - break} - WaitFrame() - } -prophunt.InProgress = false -array MILITIAplayersAlive = GetPlayerArrayOfTeam_Alive(TEAM_MILITIA) -if(MILITIAplayersAlive.len() > 0){ -foreach(player in GetPlayerArray()) - { - Message(player, "PROPS TEAM WIN", "Props alive: " + MILITIAplayersAlive.len() + ". Swapping teams.", 7, "diag_ap_aiNotify_winnerFound") - player.SetThirdPersonShoulderModeOn() - HolsterAndDisableWeapons(player) - } -} else { -foreach(player in GetPlayerArray()) - { - Message(player, "ATTACKERS TEAM WIN", "All props are dead. Swapping teams.", 7, "diag_ap_aiNotify_winnerFound") - player.SetThirdPersonShoulderModeOn() - HolsterAndDisableWeapons(player) - } -} -wait 7 -UpdatePlayerCounts() -bubbleBoundary.Destroy() -printt("Flowstate DEBUG - Prophunt round finished Swapping teams.") - -foreach(player in GetPlayerArray()) - { - if(IsValid(player)){ - player.Show() - //for connected players spectators - if( player.IsObserver() && !player.p.PROPHUNT_isSpectatorDiedMidRound) - { - player.StopObserverMode() - Remote_CallFunction_NonReplay(player, "ServerCallback_KillReplayHud_Deactivate") - TakeAllWeapons(player) - player.SetThirdPersonShoulderModeOn() - player.MakeVisible() - GiveTeamToProphuntPlayer(player) - WaitFrame() - _HandleRespawnPROPHUNT(player) - player.UnforceStand() - player.UnfreezeControlsOnServer() - - //for ded players midround - } else if ( player.IsObserver() && player.p.PROPHUNT_isSpectatorDiedMidRound){ - player.StopObserverMode() - Remote_CallFunction_NonReplay(player, "ServerCallback_KillReplayHud_Deactivate") - if(player.GetTeam() == TEAM_IMC){ - TakeAllWeapons(player) - player.SetThirdPersonShoulderModeOn() - SetTeam(player, TEAM_MILITIA ) - WaitFrame() - _HandleRespawnPROPHUNT(player) - player.MakeVisible() - player.UnforceStand() - player.UnfreezeControlsOnServer() - } else if(player.GetTeam() == TEAM_MILITIA){ - TakeAllWeapons(player) - player.SetThirdPersonShoulderModeOn() - SetTeam(player, TEAM_IMC ) - WaitFrame() - _HandleRespawnPROPHUNT(player) - player.MakeVisible() - player.UnforceStand() - player.UnfreezeControlsOnServer() - } - } else { - //for alive players swap teams - if(player.GetTeam() == TEAM_IMC){ - TakeAllWeapons(player) - player.SetThirdPersonShoulderModeOn() - SetTeam(player, TEAM_MILITIA ) - WaitFrame() - _HandleRespawnPROPHUNT(player) - player.MakeVisible() - player.UnforceStand() - player.UnfreezeControlsOnServer() - - } else if(player.GetTeam() == TEAM_MILITIA){ - TakeAllWeapons(player) - player.SetThirdPersonShoulderModeOn() - SetTeam(player, TEAM_IMC ) - WaitFrame() - _HandleRespawnPROPHUNT(player) - player.MakeVisible() - player.UnforceStand() - player.UnfreezeControlsOnServer() - } - - } - WaitFrame() - } - } -} - -entity function CreateBubbleBoundaryPROPHUNT(LocationSettings location) -{ - array spawns = location.spawns - vector bubbleCenter - foreach(spawn in spawns) - { - bubbleCenter += spawn.origin - } - bubbleCenter /= spawns.len() - float bubbleRadius = 0 - foreach(LocPair spawn in spawns) - { - if(Distance(spawn.origin, bubbleCenter) > bubbleRadius) - bubbleRadius = Distance(spawn.origin, bubbleCenter) - } - bubbleRadius += 200 - entity bubbleShield = CreateEntity( "prop_dynamic" ) - bubbleShield.SetValueForModelKey( BUBBLE_BUNKER_SHIELD_COLLISION_MODEL ) - bubbleShield.SetOrigin(bubbleCenter) - bubbleShield.SetModelScale(bubbleRadius / 235) - bubbleShield.kv.CollisionGroup = 0 - bubbleShield.kv.rendercolor = FlowState_BubbleColor() - DispatchSpawn( bubbleShield ) - thread MonitorBubbleBoundaryPROPHUNT(bubbleShield, bubbleCenter, bubbleRadius) - return bubbleShield -} - -void function MonitorBubbleBoundaryPROPHUNT(entity bubbleShield, vector bubbleCenter, float bubbleRadius) -{ - wait 31 - while(IsValid(bubbleShield)) - { - foreach(player in GetPlayerArray_Alive()) - { - if(!IsValid(player)) continue - if(Distance(player.GetOrigin(), bubbleCenter) > bubbleRadius) - { - Remote_CallFunction_Replay( player, "ServerCallback_PlayerTookDamage", 0, 0, 0, 0, DF_BYPASS_SHIELD | DF_DOOMED_HEALTH_LOSS, eDamageSourceId.deathField, null ) - player.TakeDamage( int( Deathmatch_GetOOBDamagePercent() / 100 * float( player.GetMaxHealth() ) ), null, null, { scriptType = DF_BYPASS_SHIELD | DF_DOOMED_HEALTH_LOSS, damageSourceId = eDamageSourceId.deathField } ) - } - } - wait 1 - } -} - -bool function ClientCommand_NextRoundPROPHUNT(entity player, array args) -{ - if(player.GetPlayerName() == FlowState_Hoster() || player.GetPlayerName() == FlowState_Admin1() || player.GetPlayerName() == FlowState_Admin2() || player.GetPlayerName() == FlowState_Admin3() || player.GetPlayerName() == FlowState_Admin4()) { - - if (args.len()) { - int mapIndex = int(args[0]) - prophunt.nextMapIndex = (((mapIndex >= 0 ) && (mapIndex < prophunt.locationSettings.len())) ? mapIndex : RandomIntRangeInclusive(0, prophunt.locationSettings.len() - 1)) - prophunt.mapIndexChanged = true - - string now = args[0] - if (now == "now") - { - SetTdmStateToNextRound() - prophunt.mapIndexChanged = false - prophunt.InProgress = false - SetGameState(eGameState.MapVoting) - } - - if(args.len() > 1){ - now = args[1] - if (now == "now") - { - SetTdmStateToNextRound() - prophunt.InProgress = false - } - } - } - } - else { - return false - } - return true -} - -string function helpMessagePROPHUNT() -//by michae\l/#1125 -{ - return " Use your ULTIMATE to CHANGE PROP up to 3 times. \n Use your ULTIMATE to LOCK ANGLES as attackers arrive. " -} diff --git a/vscripts/gamemodes/custom_tdm/_gamemode_1v1.nut b/vscripts/gamemodes/fs_1v1/_gamemode_1v1.nut similarity index 100% rename from vscripts/gamemodes/custom_tdm/_gamemode_1v1.nut rename to vscripts/gamemodes/fs_1v1/_gamemode_1v1.nut diff --git a/vscripts/gamemodes/custom_aimtrainer/_aimtrainer.nut b/vscripts/gamemodes/fs_aimtrainer/_gamemode_aimtrainer.nut similarity index 100% rename from vscripts/gamemodes/custom_aimtrainer/_aimtrainer.nut rename to vscripts/gamemodes/fs_aimtrainer/_gamemode_aimtrainer.nut diff --git a/vscripts/gamemodes/custom_aimtrainer/cl_aimtrainer.nut b/vscripts/gamemodes/fs_aimtrainer/cl_gamemode_aimtrainer.nut similarity index 100% rename from vscripts/gamemodes/custom_aimtrainer/cl_aimtrainer.nut rename to vscripts/gamemodes/fs_aimtrainer/cl_gamemode_aimtrainer.nut diff --git a/vscripts/gamemodes/custom_aimtrainer/sh_aimtrainer.nut b/vscripts/gamemodes/fs_aimtrainer/sh_gamemode_aimtrainer.nut similarity index 100% rename from vscripts/gamemodes/custom_aimtrainer/sh_aimtrainer.nut rename to vscripts/gamemodes/fs_aimtrainer/sh_gamemode_aimtrainer.nut diff --git a/vscripts/gamemodes/fs_duckhunt/_gamemode_duckhunt.nut b/vscripts/gamemodes/fs_duckhunt/_gamemode_duckhunt.nut new file mode 100644 index 000000000..045ed6ec0 --- /dev/null +++ b/vscripts/gamemodes/fs_duckhunt/_gamemode_duckhunt.nut @@ -0,0 +1,1320 @@ +//APEX DUCKHUNT +//Made by @CafeFPS (Retículo Endoplasmático#5955) + +// Darkes#8647 - duckhunt maps +// everyone else - advice + +global function _GamemodeDuckhunt_Init +global function CreateFanPusher +global function SpawnKillerWalls +global function SpawnMovingPlatform +global function SpawnMovingPlatformWithFanPusher + +struct { + float endTime = 0 + bool InProgress = false + int currentRound = 1 + int winnerTeam = 0 + array serverSpawnedProps + int spawnedmap = 1 + + vector lobbyLocation + vector lobbyAngles + vector huntersStartLocation + vector huntersStartAngles + vector ducksStartLocation + vector ducksStartAngles + vector ducksStartLocation2 + vector ducksStartAngles2 + vector ducksPostWinLocation + vector ducksPostWinAngles + vector ducksWinTriggerPos + vector ducksWinTriggerPos2 + vector lastFloorTrigger2 +} FS_DUCKHUNT + +void function _GamemodeDuckhunt_Init() +{ + switch(GetMapName()) + { + case "mp_rr_aqueduct": + FS_DUCKHUNT.lobbyLocation = <-323.799377, -16008.7832, 11485.8652> + FS_DUCKHUNT.lobbyAngles = <0, 24.2251167, 0> + + FS_DUCKHUNT.ducksPostWinLocation = <82.84478, 2112.39673, 1670.0625> + FS_DUCKHUNT.ducksPostWinAngles = <0, 90, 0> + + FS_DUCKHUNT.huntersStartLocation = <88.0750809, 3188.95313, 1010> + FS_DUCKHUNT.huntersStartAngles = <0, 90, 0> + + FS_DUCKHUNT.ducksStartLocation = <-1432.19141, 5648.50586, 71.0088806> //1 + FS_DUCKHUNT.ducksStartAngles = <0, 0, 0> //1 + + FS_DUCKHUNT.ducksStartLocation2 = <-2619.22192, 5675.97754, -383.773621> //2 + FS_DUCKHUNT.ducksStartAngles2 = <0, 0, 0> //2 + + FS_DUCKHUNT.ducksWinTriggerPos = <-1765.32825, 5725.50391, 2119.87378> //1 + FS_DUCKHUNT.ducksWinTriggerPos2 = <3288.87207, 5696.21826, 2150.01953> //2 + + FS_DUCKHUNT.lastFloorTrigger2 = <-2554.42065, 5665.15186, 1735.33545> //2 + break + } + + SetConVarInt("sv_quota_stringCmdsPerSecond", 100) + + if(GetCurrentPlaylistVarBool("enable_global_chat", true)) + SetConVarBool("sv_forceChatToTeamOnly", false) + else + SetConVarBool("sv_forceChatToTeamOnly", true) + + AddCallback_OnClientConnected( void function(entity player) { + thread _OnPlayerConnected(player) + }) + + AddCallback_OnPlayerKilled( void function(entity victim, entity attacker, var damageInfo) { + thread _OnPlayerKilled(victim, attacker, damageInfo) + }) + + AddCallback_EntitiesDidLoad( _OnEntitiesDidLoad ) + + AddClientCommandCallback("next_round", ClientCommand_NextRoundDUCKHUNT) + AddClientCommandCallback("sethunter", ClientCommand_AskForHunterTemp) + AddClientCommandCallback("kickplayer", ClientCommand_DuckHuntKick) + + PrecacheParticleSystem( $"P_s2s_flap_wind" ) + PrecacheParticleSystem($"P_impact_shieldbreaker_sparks") + RegisterSignal("EndLobbyDistanceThread") + RegisterSignal("EndScriptedPropsThread") + thread DUCKHUNT_StartGameThread() +} + +void function _OnPlayerConnected(entity player) +{ + while(IsDisconnected( player )) WaitFrame() + + if(!IsValid(player)) return + + DecideRespawnPlayer(player, true) + AssignCharacter(player, RandomInt(9)) + + Remote_CallFunction_NonReplay(player, "Minimap_DisableDraw_Internal") + player.p.askedForHunter = false + player.SetPlayerGameStat( PGS_DEATHS, 0) + player.p.lastFloorCheckPoint = false + + AddEntityCallback_OnDamaged( player, OnPlayerDamaged ) + + // int maxplayers = GetPlayerArray().len() + // int idealImc = int(min(ceil(float(maxplayers) / float(4)), 2.0)) + // int idealMilitia = maxplayers - idealImc + + // if(GetPlayerArrayOfTeam(TEAM_MILITIA).len() < idealMilitia) + // { + SetTeam(player, TEAM_MILITIA ) + // }else + // { + // SetTeam(player, TEAM_IMC ) + // } + + switch(GetGameState()) + { + case eGameState.WaitingForPlayers: + case eGameState.MapVoting: + Message(player, "APEX DUCK HUNT", "Made by @CafeFPS & Darkes#8647. Game is starting.", 4) + + _HandleRespawn(player) + Survival_SetInventoryEnabled( player, false ) + SetPlayerInventory( player, [] ) + + if(IsPlayerEliminated(player)) + ClearPlayerEliminated(player) + + player.SetThirdPersonShoulderModeOn() + player.SetVelocity(Vector(0,0,0)) + + player.SetOrigin(FS_DUCKHUNT.lobbyLocation) + player.SetAngles(FS_DUCKHUNT.lobbyAngles) + + thread CheckDistanceWhileInLobby(player) + + TakeLoadoutRelatedWeapons(player) + Remote_CallFunction_NonReplay(player, "ToggleSetHunterClient", true) + break + case eGameState.Playing: + if ( IsPlayerEliminated( player ) ) + thread StartSpectatingDuckhunt(player, null, true) + else + { + _HandleRespawn(player) + if(player.GetTeam() == TEAM_IMC) + { + Signal(player, "EndLobbyDistanceThread") + + StartParticleEffectInWorld( GetParticleSystemIndex( $"P_impact_shieldbreaker_sparks" ), player.GetOrigin(), Vector(0,0,0) ) + EmitSoundOnEntityOnlyToPlayer( player, player, "PhaseGate_Enter_1p" ) + EmitSoundOnEntityExceptToPlayer( player, player, "PhaseGate_Enter_3p" ) + player.SetVelocity(Vector(0,0,0)) + player.SetOrigin(FS_DUCKHUNT.huntersStartLocation) + player.SetAngles(FS_DUCKHUNT.huntersStartAngles) + TakeLoadoutRelatedWeapons(player) + player.GiveWeapon( "mp_weapon_bolo_sword_primary", WEAPON_INVENTORY_SLOT_PRIMARY_2, [] ) + player.GiveOffhandWeapon( "melee_bolo_sword", OFFHAND_MELEE, [] ) + DeployAndEnableWeapons(player) + Survival_SetInventoryEnabled( player, true ) + Highlight_SetFriendlyHighlight( player, "prophunt_teammate" ) + ClearInvincible(player) + player.SetThirdPersonShoulderModeOff() + + SetPlayerInventory( player, [] ) + Inventory_SetPlayerEquipment(player, "backpack_pickup_lv3", "backpack") + array optics = ["optic_cq_hcog_classic", "optic_cq_hcog_bruiser", "optic_cq_holosight", "optic_cq_threat", "optic_cq_holosight_variable", "optic_ranged_hcog", "optic_ranged_aog_variable", "optic_sniper_variable", "optic_sniper_threat"] + foreach(optic in optics) + SURVIVAL_AddToPlayerInventory(player, optic) + + thread CheckDistanceForHuntersOnPlatform(player) + }else if(player.GetTeam() == TEAM_MILITIA) + { + Signal(player, "EndLobbyDistanceThread") + + StartParticleEffectInWorld( GetParticleSystemIndex( $"P_impact_shieldbreaker_sparks" ), player.GetOrigin(), Vector(0,0,0) ) + EmitSoundOnEntityOnlyToPlayer( player, player, "PhaseGate_Enter_1p" ) + EmitSoundOnEntityExceptToPlayer( player, player, "PhaseGate_Enter_3p" ) + player.SetVelocity(Vector(0,0,0)) + if(FS_DUCKHUNT.spawnedmap == 2) + { + player.SetOrigin(FS_DUCKHUNT.ducksStartLocation2) + player.SetAngles(FS_DUCKHUNT.ducksStartAngles2) + } + else if(FS_DUCKHUNT.spawnedmap == 1) + { + player.SetOrigin(FS_DUCKHUNT.ducksStartLocation) + player.SetAngles(FS_DUCKHUNT.ducksStartAngles) + } + TakeLoadoutRelatedWeapons(player) + player.GiveWeapon( "mp_weapon_bolo_sword_primary", WEAPON_INVENTORY_SLOT_PRIMARY_2, [] ) + player.GiveOffhandWeapon( "melee_bolo_sword", OFFHAND_MELEE, [] ) + DeployAndEnableWeapons(player) + Survival_SetInventoryEnabled( player, false ) + Highlight_SetFriendlyHighlight( player, "prophunt_teammate" ) + ClearInvincible(player) + player.SetThirdPersonShoulderModeOff() + } + } + Remote_CallFunction_NonReplay(player, "ToggleSetHunterClient", false) + break + default: + break + } + + UpdatePlayerCounts() +} + +void function _OnEntitiesDidLoad() +{ + AddSpawnCallback("zipline", _OnPropDynamicSpawned) + AddSpawnCallback("prop_dynamic", _OnPropDynamicSpawned) + SpawnDuckHuntMap() //fake spawn, this will precache props + SpawnDuckHuntMap2() //fake spawn, this will precache props +} + +void function _OnPropDynamicSpawned(entity prop) +{ + + FS_DUCKHUNT.serverSpawnedProps.append(prop) +} + +void function DestroyServerProps() +{ + foreach(prop in FS_DUCKHUNT.serverSpawnedProps) + { + if(IsValid(prop)) + prop.Destroy() + } + FS_DUCKHUNT.serverSpawnedProps.clear() +} + +void function DUCKHUNT_StartGameThread() +{ + WaitForGameState(eGameState.Playing) + + for(;;) + { + DUCKHUNT_Lobby() + DUCKHUNT_GameLoop() + WaitFrame() + } +} + +void function AssignCharacter( entity player, int index ) +{ + ItemFlavor PersonajeEscogido = GetAllCharacters()[index] + CharacterSelect_AssignCharacter( ToEHI( player ), PersonajeEscogido ) + + ItemFlavor playerCharacter = LoadoutSlot_GetItemFlavor( ToEHI( player ), Loadout_CharacterClass() ) + asset characterSetFile = CharacterClass_GetSetFile( playerCharacter ) + player.SetPlayerSettingsWithMods( characterSetFile, [] ) + + TakeAllWeapons(player) +} + +void function OnPlayerDamaged( entity victim, var damageInfo ) +{ + if ( !IsValid( victim ) || !victim.IsPlayer() || Bleedout_IsBleedingOut( victim ) ) + return + + entity attacker = InflictorOwner( DamageInfo_GetAttacker( damageInfo ) ) + + int sourceId = DamageInfo_GetDamageSourceIdentifier( damageInfo ) + if ( sourceId == eDamageSourceId.bleedout || sourceId == eDamageSourceId.human_execution ) + return + UpdateLastDamageTime(victim) + float damage = DamageInfo_GetDamage( damageInfo ) + + int currentHealth = victim.GetHealth() + if ( !( DamageInfo_GetCustomDamageType( damageInfo ) & DF_BYPASS_SHIELD ) ) + currentHealth += victim.GetShieldHealth() + + vector damagePosition = DamageInfo_GetDamagePosition( damageInfo ) + int damageType = DamageInfo_GetCustomDamageType( damageInfo ) + entity weapon = DamageInfo_GetWeapon( damageInfo ) + + //TakingFireDialogue( attacker, victim, weapon ) + + if ( currentHealth - damage <= 0 && !IsInstantDeath( damageInfo ) ) + { + if( !IsValid(victim) || IsValid(victim) && victim.GetPlayerGameStat( PGS_DEATHS ) >= DUCKHUNT_MAX_LIFES_FOR_DUCKS && victim.GetTeam() == TEAM_MILITIA) + return + + // if(victim.GetTeam() == TEAM_MILITIA) + // { + // printt(victim.GetPlayerGameStat( PGS_DEATHS )) + // int deaths = victim.GetPlayerGameStat( PGS_DEATHS ) + // deaths++ + // victim.SetPlayerGameStat( PGS_DEATHS, deaths) + // } + + if(!Bleedout_AreThereAlivingMates( victim.GetTeam(), victim ) || !IsValid(attacker)) return + + // Remote_CallFunction_NonReplay( victim, "DUCKHUNT_CustomHint", 1, DUCKHUNT_MAX_LIFES_FOR_DUCKS - victim.GetPlayerGameStat( PGS_DEATHS )) + + thread EnemyDownedDialogue( attacker, victim ) + + if( GetGameState() >= eGameState.Playing && attacker.IsPlayer() && attacker != victim ) + AddPlayerScore( attacker, "Sur_DownedPilot", victim ) + + foreach ( cbPlayer in GetPlayerArray() ) + Remote_CallFunction_Replay( cbPlayer, "ServerCallback_OnEnemyDowned", attacker, victim, damageType, sourceId ) + + // Add the cool splashy blood and big red crosshair hitmarker + DamageInfo_AddCustomDamageType( damageInfo, DF_KILLSHOT ) + + if( victim.HasPassive( ePassives.PAS_PILOT_BLOOD ) ) + TakePassive(victim, ePassives.PAS_PILOT_BLOOD) + + // Supposed to be bleeding + Bleedout_StartPlayerBleedout( victim, attacker ) + + // Notify the player of the damage (even though it's *technically* canceled and we're hijacking the damage in order to not make an alive 100hp player instantly dead with a well placed kraber shot) + if (attacker.IsPlayer() && IsValid( attacker )) + { + attacker.NotifyDidDamage( victim, DamageInfo_GetHitBox( damageInfo ), damagePosition, damageType, damage, DamageInfo_GetDamageFlags( damageInfo ), DamageInfo_GetHitGroup( damageInfo ), weapon, DamageInfo_GetDistFromAttackOrigin( damageInfo ) ) + } + // Cancel the damage + // Setting damage to 0 cancels all knockback, setting it to 1 doesn't + // There might be a better way to do this, but this works well enough + DamageInfo_SetDamage( damageInfo, 1 ) + + // Delete any shield health remaining + victim.SetShieldHealth( 0 ) + } +} + +void function _OnPlayerKilled(entity victim, entity attacker, var damageInfo) +{ + if ( !IsValid( victim ) || !IsValid( attacker) || IsValid(victim) && !victim.IsPlayer() ) + return + + // Restore weapons for deathbox + // if ( victim.p.storedWeapons.len() > 0 ) + // RetrievePilotWeapons( victim ) + + // int droppableItems = GetAllDroppableItems( victim ).len() + // if ( droppableItems > 0 ) + // CreateSurvivalDeathBoxForPlayer( victim, attacker, damageInfo ) + + switch(GetGameState()) + { + case eGameState.Playing: + + thread function() : (victim, attacker, damageInfo) + { + if( victim.GetPlayerGameStat( PGS_DEATHS ) < DUCKHUNT_MAX_LIFES_FOR_DUCKS && victim.GetTeam() == TEAM_MILITIA ) //IsWorldSpawn( attacker ) + { + printt(victim.GetPlayerGameStat( PGS_DEATHS )) + int deaths = victim.GetPlayerGameStat( PGS_DEATHS ) + deaths++ + victim.SetPlayerGameStat( PGS_DEATHS, deaths) + } + + if(victim.GetTeam() == TEAM_IMC && GetPlayerArrayOfTeam_Alive(TEAM_IMC).len() == 0) + { + FS_DUCKHUNT.winnerTeam = TEAM_MILITIA + SetGameState(eGameState.MapVoting) + return + } + + wait DEATHCAM_TIME_SHORT + + if( !IsValid(victim) || GetGameState() != eGameState.Playing) return + + if( victim.GetPlayerGameStat( PGS_DEATHS ) >= DUCKHUNT_MAX_LIFES_FOR_DUCKS && victim.GetTeam() == TEAM_MILITIA) //no more lives + { + Remote_CallFunction_NonReplay(victim, "DUCKHUNT_Timer", false, 0) + + bool atleastOneValidTeammate = false + foreach( player in GetPlayerArrayOfTeam(TEAM_MILITIA) ) + { + if( !IsValid(player) || IsValid(player) && player == victim) continue + + if( player.GetPlayerGameStat( PGS_DEATHS ) < DUCKHUNT_MAX_LIFES_FOR_DUCKS && !IsPlayerEliminated(player) ) + atleastOneValidTeammate = true + } + + if(!atleastOneValidTeammate) + return + + SetPlayerEliminated( victim ) + thread StartSpectatingDuckhunt(victim, attacker, false) + return + } + + if( victim.GetTeam() == TEAM_MILITIA) //respawn + { + entity player = victim + + _HandleRespawn(player) + + player.SetVelocity(Vector(0,0,0)) + + if(!player.p.lastFloorCheckPoint) + { + if(FS_DUCKHUNT.spawnedmap == 2) + { + player.SetOrigin(FS_DUCKHUNT.ducksStartLocation2) + player.SetAngles(FS_DUCKHUNT.ducksStartAngles2) + } + else if(FS_DUCKHUNT.spawnedmap == 1) + { + player.SetOrigin(FS_DUCKHUNT.ducksStartLocation) + player.SetAngles(FS_DUCKHUNT.ducksStartAngles) + } + } else { + player.SetOrigin(FS_DUCKHUNT.lastFloorTrigger2) + player.SetAngles(FS_DUCKHUNT.ducksStartAngles2) + } + + player.TakeOffhandWeapon(OFFHAND_TACTICAL) + player.TakeOffhandWeapon(OFFHAND_ULTIMATE) + player.GiveWeapon( "mp_weapon_bolo_sword_primary", WEAPON_INVENTORY_SLOT_PRIMARY_2, [] ) + player.GiveOffhandWeapon( "melee_bolo_sword", OFFHAND_MELEE, [] ) + player.TakeOffhandWeapon( OFFHAND_EQUIPMENT ) + DeployAndEnableWeapons(player) + Survival_SetInventoryEnabled( player, false ) + Highlight_SetFriendlyHighlight( player, "prophunt_teammate" ) + StartParticleEffectInWorld( GetParticleSystemIndex( $"P_impact_shieldbreaker_sparks" ), player.GetOrigin(), Vector(0,0,0) ) + EmitSoundOnEntityOnlyToPlayer( player, player, "PhaseGate_Enter_1p" ) + EmitSoundOnEntityExceptToPlayer( player, player, "PhaseGate_Enter_3p" ) + + } else if(victim.GetTeam() == TEAM_IMC) + { + thread StartSpectatingDuckhunt(victim, attacker, false) + + Message(victim, "Spawning in 30 seconds if possible") + wait 30 + + if( !IsValid(victim) || GetGameState() != eGameState.Playing || victim.GetTeam() != TEAM_IMC ) return + + entity player = victim + _HandleRespawn(player) + StartParticleEffectInWorld( GetParticleSystemIndex( $"P_impact_shieldbreaker_sparks" ), player.GetOrigin(), Vector(0,0,0) ) + EmitSoundOnEntityOnlyToPlayer( player, player, "PhaseGate_Enter_1p" ) + EmitSoundOnEntityExceptToPlayer( player, player, "PhaseGate_Enter_3p" ) + + player.SetVelocity(Vector(0,0,0)) + player.SetOrigin(FS_DUCKHUNT.huntersStartLocation) + player.SetAngles(FS_DUCKHUNT.huntersStartAngles) + + player.TakeOffhandWeapon(OFFHAND_TACTICAL) + player.TakeOffhandWeapon(OFFHAND_ULTIMATE) + player.GiveWeapon( "mp_weapon_bolo_sword_primary", WEAPON_INVENTORY_SLOT_PRIMARY_2, [] ) + player.GiveOffhandWeapon( "melee_bolo_sword", OFFHAND_MELEE, [] ) + player.TakeOffhandWeapon( OFFHAND_EQUIPMENT ) + DeployAndEnableWeapons(player) + Survival_SetInventoryEnabled( player, false ) + Highlight_SetFriendlyHighlight( player, "prophunt_teammate" ) + } + }() + break + } + if(IsValid(attacker) && attacker.IsPlayer() && IsAlive(attacker) && attacker != victim) + { + thread EmitSoundOnEntityOnlyToPlayer( attacker, attacker, "flesh_bulletimpact_downedshot_1p_vs_3p" ) + WpnAutoReloadOnKill(attacker) + GameRules_SetTeamScore(attacker.GetTeam(), GameRules_GetTeamScore(attacker.GetTeam()) + 1) + } + + bool shouldEnd = true + foreach( player in GetPlayerArrayOfTeam(TEAM_MILITIA) ) + { + if( !IsValid(player) ) continue + + if ( player.GetPlayerGameStat( PGS_DEATHS ) < DUCKHUNT_MAX_LIFES_FOR_DUCKS && GetGameState() == eGameState.Playing && !IsPlayerEliminated(player) ) + { + shouldEnd = false + } + } + + if(shouldEnd) + { + FS_DUCKHUNT.winnerTeam = TEAM_IMC + SetGameState(eGameState.MapVoting) + return + } + + UpdatePlayerCounts() + printt("Flowstate DEBUG - DUCKHUNT player killed.", victim, " -by- ", attacker) +} + +void function StartSpectatingDuckhunt( entity player, entity attacker, bool FromConnectingPlayerEliminated = false) +{ + array clientTeam = GetPlayerArrayOfTeam_Alive( player.GetTeam() ) + clientTeam.fastremovebyvalue( player ) + + bool isAloneOrSquadEliminated = clientTeam.len() == 0 + + entity specTarget = null + + if ( IsValid(attacker) ) + { + if ( attacker == player ) return; + if ( attacker == null ) return; + if ( !IsValid( attacker ) || !IsAlive( attacker ) ) return; + + specTarget = attacker; + } + else if ( isAloneOrSquadEliminated ) + { + array alivePlayers = GetPlayerArray_Alive() + if ( alivePlayers.len() > 0 ) + specTarget = alivePlayers.getrandom() + else + return + } + else + specTarget = clientTeam.getrandom() + + if ( !FromConnectingPlayerEliminated ) + player.SetPlayerNetInt( "respawnStatus", eRespawnStatus.WAITING_FOR_DELIVERY ) + else + player.SetPlayerNetInt( "respawnStatus", eRespawnStatus.NONE ) + + //wait GetDeathCamLength( player ) // To show deathcamera + + if( IsValid( specTarget ) && ShouldSetObserverTarget( specTarget ) && !IsAlive( player ) ) + { + player.SetPlayerNetInt( "spectatorTargetCount", GetPlayerArrayOfTeam_Alive( specTarget.GetTeam() ).len() ) + player.SetSpecReplayDelay( Spectator_GetReplayDelay() ) + player.StartObserverMode( OBS_MODE_IN_EYE ) + player.SetObserverTarget( specTarget ) + Remote_CallFunction_NonReplay(player, "ServerCallback_KillReplayHud_Activate") + player.p.isSpectating = true + } +} + +void function _HandleTeamForAllPlayers() +{ + // int maxplayers = GetPlayerArray().len() + // int idealImc = int(min(ceil(float(maxplayers) / float(4)), 2.0)) + // int idealMilitia = maxplayers - idealImc + + // printt("Ideal IMC and MILITIA count for this round: " + idealImc + " " + idealMilitia) + + // int imc = 0 + // int mil = 0 + + array players = GetPlayerArray() + players.randomize() + + foreach(player in players) + { + if(!IsValid(player)) continue + + if(player.p.askedForHunter) + SetTeam(player, TEAM_IMC ) + + if(!player.p.askedForHunter) + SetTeam(player, TEAM_MILITIA ) + + // if(mil < idealMilitia) + // { + // SetTeam(player, TEAM_MILITIA ) + // mil++ + // }else + // { + // SetTeam(player, TEAM_IMC ) + // imc++ + // } + } +} + +void function _HandleRespawn(entity player) +{ + if(!IsValid(player)) return + + try{ + if(player.p.isSpectating) + { + player.p.isSpectating = false + player.SetPlayerNetInt( "spectatorTargetCount", 0 ) + player.SetSpecReplayDelay( 0 ) + player.SetObserverTarget( null ) + player.StopObserverMode() + Remote_CallFunction_NonReplay(player, "ServerCallback_KillReplayHud_Deactivate") + } + }catch(e420){} + + if(!IsAlive(player)) + { + DecideRespawnPlayer(player, true) + } + + player.UnforceStand() + player.UnfreezeControlsOnServer() + + player.SetPlayerNetBool( "pingEnabled", true ) + player.SetHealth( 100 ) + player.SetMoveSpeedScale(1) + TakeAllWeapons(player) + + Remote_CallFunction_NonReplay(player, "Minimap_DisableDraw_Internal") + if(GetGameState() == eGameState.Playing) + Remote_CallFunction_NonReplay( player, "DUCKHUNT_CustomHint", 1, DUCKHUNT_MAX_LIFES_FOR_DUCKS - player.GetPlayerGameStat( PGS_DEATHS )) + GivePassive(player, ePassives.PAS_PILOT_BLOOD) + player.MovementEnable() + + if(IsPlayerEliminated(player)) + ClearPlayerEliminated(player) +} + +void function DUCKHUNT_Lobby() +{ + SetGameState(eGameState.MapVoting) + + FS_DUCKHUNT.InProgress = false + + foreach(player in GetPlayerArray()) + { + if(!IsValid(player)) continue + + if(FS_DUCKHUNT.winnerTeam != 0) + { + Message(player, FS_DUCKHUNT.winnerTeam == TEAM_MILITIA ? "DUCKS WIN" : "HUNTERS WIN", "Use SET HUNTER button in Pause menu to become a hunter.", 6) + } else + { + Message( player, "APEX DUCK HUNT", "Made by @CafeFPS & Darkes#8647", 4 ) + } + + _HandleRespawn(player) + AssignCharacter(player, RandomInt(9)) + Survival_SetInventoryEnabled( player, false ) + SetPlayerInventory( player, [] ) + player.SetPlayerGameStat( PGS_DEATHS, 0) + player.p.wasTeleported = false + player.p.lastFloorCheckPoint = false + + player.SetThirdPersonShoulderModeOn() + player.SetVelocity(Vector(0,0,0)) + + player.SetOrigin(FS_DUCKHUNT.lobbyLocation) + player.SetAngles(FS_DUCKHUNT.lobbyAngles) + Inventory_SetPlayerEquipment(player, "", "armor") + player.SetShieldHealth( 0 ) + + thread CheckDistanceWhileInLobby(player) + Remote_CallFunction_NonReplay(player, "DUCKHUNT_Timer", false, 0) + Remote_CallFunction_NonReplay(player, "ToggleSetHunterClient", true) + } + + Signal(svGlobal.levelEnt, "EndScriptedPropsThread") + + WaitFrame() + + DestroyServerProps() + + if(IsOdd(FS_DUCKHUNT.currentRound)) + { + FS_DUCKHUNT.spawnedmap = 1 + thread SpawnDuckHuntMap() + }else + { + FS_DUCKHUNT.spawnedmap = 2 + thread SpawnDuckHuntMap2() + } + + wait 15 + + _HandleTeamForAllPlayers() +} + +void function DUCKHUNT_GameLoop() +{ + foreach(player in GetPlayerArrayOfTeam(TEAM_IMC)) + { + if(!IsValid(player)) continue + + ScreenCoverTransition_Player(player, Time() + 1) + Remote_CallFunction_NonReplay(player, "Minimap_DisableDraw_Internal") + } + wait 0.5 + + SetGameState(eGameState.Playing) + SurvivalCommentary_ResetAllData() + + float starttime = Time() + + foreach(player in GetPlayerArray()) + { + if(!IsValid(player)) continue + + Remote_CallFunction_NonReplay(player, "ToggleSetHunterClient", false) + + if(player.GetTeam() == TEAM_IMC) + Remote_CallFunction_NonReplay( player, "DUCKHUNT_CustomHint", 4, 0) + if(player.GetTeam() == TEAM_MILITIA) + Remote_CallFunction_NonReplay( player, "DUCKHUNT_CustomHint", 6, 0) + } + + foreach(player in GetPlayerArrayOfTeam(TEAM_IMC)) //tpin hunters + { + if(!IsValid(player)) continue + + Signal(player, "EndLobbyDistanceThread") + + thread CheckDistanceForHuntersOnPlatform(player) + + StartParticleEffectInWorld( GetParticleSystemIndex( $"P_impact_shieldbreaker_sparks" ), player.GetOrigin(), Vector(0,0,0) ) + EmitSoundOnEntityOnlyToPlayer( player, player, "PhaseGate_Enter_1p" ) + EmitSoundOnEntityExceptToPlayer( player, player, "PhaseGate_Enter_3p" ) + + player.SetVelocity(Vector(0,0,0)) + player.SetOrigin(FS_DUCKHUNT.huntersStartLocation) + player.SetAngles(FS_DUCKHUNT.huntersStartAngles) + + TakeLoadoutRelatedWeapons(player) + + player.GiveWeapon( "mp_weapon_bolo_sword_primary", WEAPON_INVENTORY_SLOT_PRIMARY_2, [] ) + player.GiveOffhandWeapon( "melee_bolo_sword", OFFHAND_MELEE, [] ) + + DeployAndEnableWeapons(player) + Survival_SetInventoryEnabled( player, true ) + Highlight_SetFriendlyHighlight( player, "prophunt_teammate" ) + ClearInvincible(player) + player.SetThirdPersonShoulderModeOff() + + SetPlayerInventory( player, [] ) + Inventory_SetPlayerEquipment(player, "backpack_pickup_lv3", "backpack") + array optics = ["optic_cq_hcog_classic", "optic_cq_hcog_bruiser", "optic_cq_holosight", "optic_cq_threat", "optic_cq_holosight_variable", "optic_ranged_hcog", "optic_ranged_aog_variable", "optic_sniper_variable", "optic_sniper_threat"] + foreach(optic in optics) + SURVIVAL_AddToPlayerInventory(player, optic) + Inventory_SetPlayerEquipment(player, "armor_pickup_lv2", "armor") + player.SetShieldHealth( 75 ) + GivePassive(player, ePassives.PAS_PILOT_BLOOD) + player.p.askedForHunter = false + } + + wait 14.5 + + foreach(player in GetPlayerArrayOfTeam(TEAM_MILITIA)) + { + if(!IsValid(player)) continue + + ScreenCoverTransition_Player(player, Time() + 1) + Remote_CallFunction_NonReplay(player, "Minimap_DisableDraw_Internal") + } + + wait 0.5 + + foreach(player in GetPlayerArrayOfTeam(TEAM_MILITIA)) //tpin ducks + { + if(!IsValid(player)) continue + + Signal(player, "EndLobbyDistanceThread") + + StartParticleEffectInWorld( GetParticleSystemIndex( $"P_impact_shieldbreaker_sparks" ), player.GetOrigin(), Vector(0,0,0) ) + EmitSoundOnEntityOnlyToPlayer( player, player, "PhaseGate_Enter_1p" ) + EmitSoundOnEntityExceptToPlayer( player, player, "PhaseGate_Enter_3p" ) + + player.SetVelocity(Vector(0,0,0)) + if(FS_DUCKHUNT.spawnedmap == 2) + { + player.SetOrigin(FS_DUCKHUNT.ducksStartLocation2) + player.SetAngles(FS_DUCKHUNT.ducksStartAngles2) + } + else if(FS_DUCKHUNT.spawnedmap == 1) + { + player.SetOrigin(FS_DUCKHUNT.ducksStartLocation) + player.SetAngles(FS_DUCKHUNT.ducksStartAngles) + } + TakeLoadoutRelatedWeapons(player) + + player.GiveWeapon( "mp_weapon_bolo_sword_primary", WEAPON_INVENTORY_SLOT_PRIMARY_2, [] ) + player.GiveOffhandWeapon( "melee_bolo_sword", OFFHAND_MELEE, [] ) + + DeployAndEnableWeapons(player) + Survival_SetInventoryEnabled( player, false ) + Highlight_SetFriendlyHighlight( player, "prophunt_teammate" ) + ClearInvincible(player) + player.SetThirdPersonShoulderModeOff() + // Inventory_SetPlayerEquipment(player, "armor_pickup_lv1", "armor") + // player.SetShieldHealth( 50 ) + GivePassive(player, ePassives.PAS_PILOT_BLOOD) + player.p.askedForHunter = false + } + + CreateTriggerBelowZone(<-247.428192, 5708.75488, -1729.73718>, 5000) + + if(FS_DUCKHUNT.spawnedmap == 2) + CreateDucksWinTrigger(FS_DUCKHUNT.ducksWinTriggerPos2) + else if(FS_DUCKHUNT.spawnedmap == 1) + CreateDucksWinTrigger(FS_DUCKHUNT.ducksWinTriggerPos) + + if(FS_DUCKHUNT.spawnedmap == 2) + CreateLastFloorCheckpointTrigger( FS_DUCKHUNT.lastFloorTrigger2 ) + + FS_DUCKHUNT.winnerTeam = TEAM_IMC + FS_DUCKHUNT.InProgress = true + FS_DUCKHUNT.endTime = Time() + GetCurrentPlaylistVarFloat("DuckHunt_Round_LimitTime", 300 ) + + foreach ( player in GetPlayerArray() ) + { + if(!IsValid(player)) continue + + if(player.GetTeam() == TEAM_IMC) + Remote_CallFunction_NonReplay( player, "DUCKHUNT_CustomHint", 0, 0) + + Remote_CallFunction_NonReplay(player, "DUCKHUNT_Timer", true, FS_DUCKHUNT.endTime) + Remote_CallFunction_NonReplay( player, "DUCKHUNT_CustomHint", 5, 0) + } + + while( Time() <= FS_DUCKHUNT.endTime ) + { + // if(Time() == FS_DUCKHUNT.endTime-GetCurrentPlaylistVarFloat("DuckHunt_Round_LimitTime", 300 )/2) + // { + // foreach(player in GetPlayerArray()) + // { + // if(!IsValid(player)) continue + + // Remote_CallFunction_NonReplay( player, "DUCKHUNT_CustomHint", 5, 0) + // } + // } + + if(GetGameState() == eGameState.MapVoting) + break + + WaitFrame() + } + + bool isThereAnyBleedingOutPlayer = false + + foreach ( player in GetPlayerArray() ) + { + if(!IsValid(player)) continue + + if(Bleedout_IsBleedingOut(player)) + { + player.TakeDamage(player.GetMaxHealth() + 1, player.e.lastAttacker, null, { damageSourceId=eDamageSourceId.invalid, scriptType=DF_BYPASS_SHIELD }) + isThereAnyBleedingOutPlayer = true + } + } + + if(isThereAnyBleedingOutPlayer) + wait DEATHCAM_TIME_SHORT + 1 + + + foreach ( player in GetPlayerArray() ) + { + if(!IsValid(player)) continue + Remote_CallFunction_NonReplay(player, "DUCKHUNT_Timer", false, 0) + MakeInvincible( player ) + AddCinematicFlag( player, CE_FLAG_HIDE_MAIN_HUD_INSTANT ) + AddCinematicFlag( player, CE_FLAG_HIDE_PERMANENT_HUD ) + Remote_CallFunction_NonReplay( player, "ServerCallback_PlayMatchEndMusic" ) + Remote_CallFunction_NonReplay( player, "ServerCallback_MatchEndAnnouncement", player.GetTeam() == FS_DUCKHUNT.winnerTeam, FS_DUCKHUNT.winnerTeam ) + } + + thread SurvivalCommentary_HostAnnounce( eSurvivalCommentaryBucket.WINNER, 3.0 ) + + wait 4.9 + + foreach(player in GetPlayerArray() ) + { + if(!IsValid(player)) continue + + ScreenCoverTransition_Player(player, Time() + 1) + } + + wait 0.2 + + foreach ( player in GetPlayerArray() ) + { + if(!IsValid(player)) continue + + RemoveCinematicFlag( player, CE_FLAG_HIDE_MAIN_HUD_INSTANT ) + RemoveCinematicFlag( player, CE_FLAG_HIDE_PERMANENT_HUD ) + + Remote_CallFunction_NonReplay( player, "ServerCallback_DestroyEndAnnouncement") + } + + wait 0.8 + + FS_DUCKHUNT.currentRound++ + + UpdatePlayerCounts() +} + +void function CheckDistanceWhileInLobby(entity player) +{ + EndSignal(player, "EndLobbyDistanceThread") + + while(IsValid(player)) + { + if(Distance(player.GetOrigin(),FS_DUCKHUNT.lobbyLocation)>2000) + { + player.SetVelocity(Vector(0,0,0)) + player.SetOrigin(FS_DUCKHUNT.lobbyLocation) + } + WaitFrame() + } +} + +void function CheckDistanceForHuntersOnPlatform(entity player) +{ + while(IsValid(player) && player.GetTeam() == TEAM_IMC && GetGameState() == eGameState.Playing) + { + if(Distance(player.GetOrigin(),FS_DUCKHUNT.huntersStartLocation)>1250) + { + player.SetVelocity(Vector(0,0,0)) + player.SetOrigin(FS_DUCKHUNT.huntersStartLocation) + + StartParticleEffectInWorld( GetParticleSystemIndex( $"P_impact_shieldbreaker_sparks" ), player.GetOrigin(), Vector(0,0,0) ) + EmitSoundOnEntityOnlyToPlayer( player, player, "PhaseGate_Enter_1p" ) + EmitSoundOnEntityExceptToPlayer( player, player, "PhaseGate_Enter_3p" ) + + } + WaitFrame() + } +} + +entity function CreateTriggerBelowZone( vector origin , float radius = 1000) +{ + entity trigger = CreateEntity( "trigger_cylinder" ) + trigger.SetRadius( radius ) + trigger.SetAboveHeight( 2000 ) + trigger.SetBelowHeight( 50 ) + trigger.SetOrigin( origin ) + trigger.SetEnterCallback( DucksTriggerEnter ) + trigger.SetAboveHeight( 350 ) + DispatchSpawn( trigger ) + trigger.SearchForNewTouchingEntity() + FS_DUCKHUNT.serverSpawnedProps.append(trigger) + + //DebugDrawCylinder( trigger.GetOrigin() , < -90, 0, 0 >, radius, trigger.GetAboveHeight(), 0, 165, 255, true, 9999.9 ) + //DebugDrawCylinder( trigger.GetOrigin() , < -90, 0, 0 >, radius, -trigger.GetBelowHeight(), 255, 90, 0, true, 9999.9 ) + return trigger +} + +void function DucksTriggerEnter( entity trigger , entity player ) +{ + if( !IsValid(player) || IsValid(player) && player.GetTeam() != TEAM_MILITIA || IsValid(player) && !player.IsPlayer() || GetGameState() != eGameState.Playing) return + + if (!player.p.wasTeleported) + player.TakeDamage(player.GetMaxHealth() + 1, null, null, { damageSourceId=eDamageSourceId.fall, scriptType=DF_BYPASS_SHIELD }) + else + { + player.SetVelocity(Vector(0,0,0)) + player.SetOrigin(FS_DUCKHUNT.ducksPostWinLocation) + player.SetAngles(FS_DUCKHUNT.ducksPostWinAngles) + + StartParticleEffectInWorld( GetParticleSystemIndex( $"P_impact_shieldbreaker_sparks" ), player.GetOrigin(), Vector(0,0,0) ) + EmitSoundOnEntityOnlyToPlayer( player, player, "PhaseGate_Enter_1p" ) + EmitSoundOnEntityExceptToPlayer( player, player, "PhaseGate_Enter_3p" ) + } +} + +entity function CreateDucksWinTrigger( vector origin ) +{ + float radius = 150 + entity trigger = CreateEntity( "trigger_cylinder" ) + trigger.SetRadius( radius ) + trigger.SetAboveHeight( 50 ) + trigger.SetBelowHeight( 50 ) + trigger.SetOrigin( origin + Vector(0,0,50) ) + trigger.SetEnterCallback( DucksWinTriggerEnter ) + trigger.SetAboveHeight( 50 ) + DispatchSpawn( trigger ) + trigger.SearchForNewTouchingEntity() + FS_DUCKHUNT.serverSpawnedProps.append(trigger) + + // DebugDrawCylinder( trigger.GetOrigin() , < -90, 0, 0 >, radius, trigger.GetAboveHeight(), 0, 165, 255, true, 9999.9 ) + // DebugDrawCylinder( trigger.GetOrigin() , < -90, 0, 0 >, radius, -trigger.GetBelowHeight(), 255, 90, 0, true, 9999.9 ) + return trigger +} +void function DucksWinTriggerEnter( entity trigger , entity player ) +{ + if( !IsValid(player) ) return + + if (player.IsPlayer() && player.GetTeam() == TEAM_MILITIA) + { + player.SetVelocity(Vector(0,0,0)) + player.SetOrigin(FS_DUCKHUNT.ducksPostWinLocation) + player.SetAngles(FS_DUCKHUNT.ducksPostWinAngles) + + StartParticleEffectInWorld( GetParticleSystemIndex( $"P_impact_shieldbreaker_sparks" ), player.GetOrigin(), Vector(0,0,0) ) + EmitSoundOnEntityOnlyToPlayer( player, player, "PhaseGate_Enter_1p" ) + EmitSoundOnEntityExceptToPlayer( player, player, "PhaseGate_Enter_3p" ) + + Message(player, "KILL THE HUNTERS", "", 1) + + player.p.wasTeleported = true //to change trigger behavior + + // if(FS_DUCKHUNT.winnerTeam == TEAM_IMC) + // FS_DUCKHUNT.winnerTeam = TEAM_MILITIA + } +} + +entity function CreateLastFloorCheckpointTrigger( vector origin ) +{ + float radius = 300 + entity trigger = CreateEntity( "trigger_cylinder" ) + trigger.SetRadius( radius ) + trigger.SetAboveHeight( 50 ) + trigger.SetBelowHeight( 50 ) + trigger.SetOrigin( origin + Vector(0,0,50) ) + trigger.SetEnterCallback( LastFloorEnter ) + trigger.SetAboveHeight( 50 ) + DispatchSpawn( trigger ) + trigger.SearchForNewTouchingEntity() + FS_DUCKHUNT.serverSpawnedProps.append(trigger) + + // DebugDrawCylinder( trigger.GetOrigin() , < -90, 0, 0 >, radius, trigger.GetAboveHeight(), 0, 165, 255, true, 9999.9 ) + // DebugDrawCylinder( trigger.GetOrigin() , < -90, 0, 0 >, radius, -trigger.GetBelowHeight(), 255, 90, 0, true, 9999.9 ) + return trigger +} + +void function LastFloorEnter( entity trigger , entity player ) +{ + if( !IsValid(player) ) return + + if (player.IsPlayer() && player.GetTeam() == TEAM_MILITIA && !player.p.lastFloorCheckPoint) + { + StartParticleEffectInWorld( GetParticleSystemIndex( $"P_impact_shieldbreaker_sparks" ), player.GetOrigin(), Vector(0,0,0) ) + + Message(player, "Last floor checkpoint", "", 1) + + foreach( sPlayer in GetPlayerArray() ) + { + if(!IsValid(sPlayer) || IsValid(sPlayer) && sPlayer == player ) continue + + Remote_CallFunction_NonReplay( sPlayer, "DUCKHUNT_CustomHint", 3, 0) + } + player.p.lastFloorCheckPoint = true + } +} + +void function CreateFanPusher(vector origin, vector angles2) +{ + EndSignal(svGlobal.levelEnt, "EndScriptedPropsThread") + + entity rotator = CreateEntity( "script_mover_lightweight" ) + rotator.kv.solid = SOLID_VPHYSICS + rotator.SetValueForModelKey( $"mdl/dev/empty_model.rmdl" ) + rotator.kv.fadedist = -1 + rotator.kv.SpawnAsPhysicsMover = 0 + rotator.e.isDoorBlocker = true + rotator.SetOrigin(origin) + rotator.SetAngles(angles2) + rotator.SetScriptName("FanPusher") + DispatchSpawn( rotator ) + FS_DUCKHUNT.serverSpawnedProps.append(rotator) + + //Wind column effect, two so we complete a cylinder-like shape + entity fx = StartParticleEffectInWorld_ReturnEntity( GetParticleSystemIndex( $"P_s2s_flap_wind" ), origin, angles2 ) + EmitSoundOnEntity(fx, "HoverTank_Emit_EdgeWind") + fx.SetParent(rotator) + entity fx2 = StartParticleEffectInWorld_ReturnEntity( GetParticleSystemIndex( $"P_s2s_flap_wind" ), origin, angles2 ) + fx2.SetParent(rotator) + + if(GameRules_GetGameMode() == "flowstate_infection") return + + thread function() : (rotator, origin, angles2) + { + EndSignal(svGlobal.levelEnt, "EndScriptedPropsThread") + + wait 3 + rotator.Destroy() + wait 2 + CreateFanPusher(origin, angles2) + }() +} + +void function SpawnKillerWalls(vector origin) +{ + EndSignal(svGlobal.levelEnt, "EndScriptedPropsThread") + + vector angles1 = Vector(0,90,0) + + entity rotator = CreateEntity( "script_mover_lightweight" ) + rotator.kv.solid = SOLID_VPHYSICS + rotator.kv.fadedist = -1 + rotator.SetValueForModelKey( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl" ) + rotator.kv.SpawnAsPhysicsMover = 0 + rotator.e.isDoorBlocker = true + DispatchSpawn( rotator ) + rotator.SetPusher( true ) + rotator.SetAngles(Vector(angles1.x, (angles1.y + 90) % 360, angles1.z)) + FS_DUCKHUNT.serverSpawnedProps.append(rotator) + + entity rotator2 = CreateEntity( "script_mover_lightweight" ) + rotator2.kv.solid = SOLID_VPHYSICS + rotator2.kv.fadedist = -1 + rotator2.SetValueForModelKey( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl" ) + rotator2.kv.SpawnAsPhysicsMover = 0 + rotator2.e.isDoorBlocker = true + DispatchSpawn( rotator2 ) + rotator2.SetPusher( true ) + rotator2.SetAngles(Vector(angles1.x, (angles1.y + 90) % 360, angles1.z)) + rotator2.SetOrigin(origin) + FS_DUCKHUNT.serverSpawnedProps.append(rotator2) + + entity visual1 = CreatePropDynamic($"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl", rotator.GetOrigin(), < 90, 90, 0 >, SOLID_VPHYSICS, -1) + visual1.kv.fadedist = -1 + visual1.kv.rendermode = 0 + visual1.kv.renderamt = 1 + visual1.kv.CollisionGroup = TRACE_COLLISION_GROUP_PLAYER + visual1.SetParent(rotator2) + + entity visual1_2 = CreatePropDynamic($"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl", rotator.GetOrigin()+Vector(0,0,128), < 90, 90, 0 >, SOLID_VPHYSICS, -1) + visual1_2.kv.fadedist = -1 + visual1_2.kv.rendermode = 0 + visual1_2.kv.renderamt = 1 + visual1_2.kv.CollisionGroup = TRACE_COLLISION_GROUP_PLAYER + visual1_2.SetParent(rotator2) + + entity visual2 = CreatePropDynamic($"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl", rotator.GetOrigin(), < 90, -90, 0 >, SOLID_VPHYSICS, -1) + visual2.kv.fadedist = -1 + visual2.kv.rendermode = 0 + visual2.kv.renderamt = 1 + visual2.kv.CollisionGroup = TRACE_COLLISION_GROUP_PLAYER + visual2.SetParent(rotator) + + entity visual2_2 = CreatePropDynamic($"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl", rotator.GetOrigin()+Vector(0,0,128), < 90, -90, 0 >, SOLID_VPHYSICS, -1) + visual2_2.kv.fadedist = -1 + visual2_2.kv.rendermode = 0 + visual2_2.kv.renderamt = 1 + visual2_2.kv.CollisionGroup = TRACE_COLLISION_GROUP_PLAYER + visual2_2.SetParent(rotator) + + thread function() : (rotator, rotator2, origin) + { + EndSignal(svGlobal.levelEnt, "EndScriptedPropsThread") + + float timemoving = 2 + vector startpos = origin + + while(IsValid(rotator)) + { + rotator.NonPhysicsMoveTo( startpos+AnglesToRight(rotator.GetAngles())*128, timemoving, 0, 0.5 ) + rotator2.NonPhysicsMoveTo( startpos+AnglesToRight(rotator.GetAngles())*-128, timemoving, 0, 0.5 ) + + wait timemoving-0.01 + + rotator.NonPhysicsMoveTo( startpos, 0.3, 0, 0 ) + rotator2.NonPhysicsMoveTo( startpos, 0.3, 0, 0 ) + + wait 0.3-0.01 + } + }() +} + +void function SpawnMovingPlatform(vector origin) +{ + EndSignal(svGlobal.levelEnt, "EndScriptedPropsThread") + + vector angles1 = Vector(0,0,0) + + for(int i = 0; i < 7; i++) + { + entity rotator = CreateEntity( "script_mover_lightweight" ) + rotator.kv.solid = 0 + rotator.kv.fadedist = -1 + rotator.SetValueForModelKey( $"mdl/thunderdome/thunderdome_cage_ceiling_256x128_06.rmdl" ) + rotator.kv.SpawnAsPhysicsMover = 0 + rotator.e.isDoorBlocker = true + DispatchSpawn( rotator ) + rotator.SetAngles(angles1) + rotator.SetOrigin(origin + Vector(256*i,0,0)) + rotator.Hide() + rotator.SetPusher( true ) + FS_DUCKHUNT.serverSpawnedProps.append(rotator) + + entity visual = CreateEntity( "prop_dynamic" ) + visual.kv.solid = SOLID_VPHYSICS + visual.kv.fadedist = -1 + visual.SetValueForModelKey( $"mdl/thunderdome/thunderdome_cage_ceiling_256x128_06.rmdl" ) + visual.SetParent(rotator) + DispatchSpawn( visual ) + visual.SetAngles(rotator.GetAngles()) + visual.SetOrigin(rotator.GetOrigin()) + + thread function() : (i, rotator) + { + EndSignal(svGlobal.levelEnt, "EndScriptedPropsThread") + + float timemoving = 5.0 + vector startpos = rotator.GetOrigin() + + //bad code moment + vector MoveRight = startpos+AnglesToRight(rotator.GetAngles())*300 + vector MoveLeft = startpos+AnglesToRight(rotator.GetAngles())*-300 + + vector MoveTo = IsOdd(i) ? MoveLeft : MoveRight + + while(IsValid(rotator)) + { + rotator.NonPhysicsMoveTo( MoveTo , timemoving, 1, 1 ) + wait timemoving + rotator.NonPhysicsMoveTo( startpos, timemoving, 1, 1 ) + wait timemoving + + if(MoveTo == MoveRight) + MoveTo = MoveLeft + else if(MoveTo == MoveLeft) + MoveTo = MoveRight + + } + }() + } +} + +void function SpawnMovingPlatformWithFanPusher(vector origin) +{ + EndSignal(svGlobal.levelEnt, "EndScriptedPropsThread") + + entity platform = CreateEntity( "prop_dynamic" ) + platform.kv.solid = SOLID_VPHYSICS + platform.kv.fadedist = -1 + platform.SetValueForModelKey( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl" ) + DispatchSpawn( platform ) + + vector angles1 = Vector(0,0,90) + platform.SetOrigin(origin) + platform.SetAngles(angles1) + platform.SetPusher( true ) + vector angles2 = Vector(-90,0,90) + PrecacheParticleSystem( $"P_s2s_flap_wind" ) + + origin = origin + AnglesToUp(angles2) * 128 + entity rotator = CreateEntity( "script_mover_lightweight" ) + rotator.kv.solid = SOLID_VPHYSICS + rotator.kv.fadedist = -1 + //rotator.SetValueForModelKey( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl" ) + rotator.kv.SpawnAsPhysicsMover = 0 + rotator.e.isDoorBlocker = true + rotator.SetOrigin(origin) + rotator.SetAngles(angles2) + rotator.SetScriptName("FanPusher") + DispatchSpawn( rotator ) + rotator.SetParent(platform) + + //Wind column effect, two so we complete a cylinder-like shape + entity fx = StartParticleEffectInWorld_ReturnEntity( GetParticleSystemIndex( $"P_s2s_flap_wind" ), origin, Vector(-90,0,0) ) + EmitSoundOnEntity(fx, "HoverTank_Emit_EdgeWind") + fx.SetParent(platform) + entity fx2 = StartParticleEffectInWorld_ReturnEntity( GetParticleSystemIndex( $"P_s2s_flap_wind" ), origin, Vector(-90,-90,0) ) + fx2.SetParent(platform) + + //Circle on ground FX + entity circle = CreateEntity( "prop_script" ) + circle.SetValueForModelKey( $"mdl/weapons_r5/weapon_tesla_trap/mp_weapon_tesla_trap_ar_trigger_radius.rmdl" ) + circle.kv.fadedist = 30000 + circle.kv.renderamt = 0 + circle.kv.rendercolor = "250, 250, 250" + circle.kv.modelscale = 0.12 + circle.kv.solid = 0 + circle.SetOrigin( fx.GetOrigin() + <0.0, 0.0, -25>) + circle.SetAngles( Vector(0,0,0) ) + circle.NotSolid() + DispatchSpawn(circle) + circle.SetParent(platform) + + // thread function() : (platform) + // { + // float timemoving = 5.0 + // vector startpos = platform.GetOrigin() + + // while(IsValid(platform)) + // { + // platform.NonPhysicsMoveTo( startpos+AnglesToForward(platform.GetAngles())*500, timemoving, 1, 1 ) + // wait timemoving + // platform.NonPhysicsMoveTo( startpos, timemoving, 1, 1 ) + // wait timemoving + // } + // }() +} + +bool function ClientCommand_NextRoundDUCKHUNT(entity player, array args) +{ + if( player.GetPlayerName() != FlowState_Hoster() ) return false + + SetGameState(eGameState.MapVoting) + + return true +} + +bool function ClientCommand_AskForHunterTemp(entity player, array < string > args) +{ + if( !IsValid(player) || IsValid(player) && player.p.askedForHunter || GetGameState() != eGameState.MapVoting ) return false + + player.p.askedForHunter = true + Message(player, "You're a hunter now", "") + Remote_CallFunction_NonReplay(player, "ToggleSetHunterClient", false) + + foreach( sPlayer in GetPlayerArray() ) + { + if(!IsValid(sPlayer)) continue + + Remote_CallFunction_NonReplay( sPlayer, "DUCKHUNT_CustomHint", 2, player.GetEncodedEHandle()) + } + + return true +} + +bool function ClientCommand_DuckHuntKick(entity player, array < string > args) +{ + if (player.GetPlayerName() != "AeonFMC" && player.GetPlayerName() != "r5r_ColombiaFPS" || args.len() == 0) return false + + thread function () : (args, player) + { + foreach(sPlayer in GetPlayerArray()) { + if (sPlayer.GetPlayerName() == args[0]) { + Warning("[Flowstate] -> Kicking " + sPlayer.GetPlayerName() + " from flowstate.") + + SetPlayerEliminated( sPlayer ) + + if(IsValid(sPlayer)) + ClientCommand( sPlayer, "disconnect" ) + } + } + }() + return false +} \ No newline at end of file diff --git a/vscripts/gamemodes/fs_duckhunt/cl_gamemode_duckhunt.nut b/vscripts/gamemodes/fs_duckhunt/cl_gamemode_duckhunt.nut new file mode 100644 index 000000000..fa4afc694 --- /dev/null +++ b/vscripts/gamemodes/fs_duckhunt/cl_gamemode_duckhunt.nut @@ -0,0 +1,146 @@ +//APEX DUCKHUNT +//Made by @CafeFPS (Retículo Endoplasmático#5955) + +// Darkes#8647 - duckhunt maps +// everyone else - advice + +global function Cl_GamemodeDuckhunt_Init +global function DUCKHUNT_CustomHint +global function DUCKHUNT_Timer +global function ToggleSetHunterClient + +struct { + var activeQuickHint = null + float endtime = 0 +} file + +void function Cl_GamemodeDuckhunt_Init() +{ + SetConVarInt("cl_quota_stringCmdsPerSecond", 100) + //I don't want these things in user screen even if they launch in debug + SetConVarBool( "cl_showpos", false ) + SetConVarBool( "cl_showfps", false ) + SetConVarBool( "cl_showgpustats", false ) + SetConVarBool( "cl_showsimstats", false ) + SetConVarBool( "host_speeds", false ) + SetConVarBool( "con_drawnotify", false ) + SetConVarBool( "enable_debug_overlays", false ) + + RegisterSignal("DUCKHUNT_EndTimer") + AddClientCallback_OnResolutionChanged( ReloadCustomRUI ) +} + +void function ReloadCustomRUI() +{ + Signal(GetLocalClientPlayer(), "DUCKHUNT_EndTimer") + + if(file.endtime != 0) + { + Hud_SetEnabled( HudElement( "DuckHuntRoundTimerFrame" ), true ) + Hud_SetVisible( HudElement( "DuckHuntRoundTimerFrame" ), true ) + Hud_SetEnabled( HudElement( "DuckHuntRoundTimer" ), true ) + Hud_SetVisible( HudElement( "DuckHuntRoundTimer" ), true ) + + thread Thread_DUCKHUNT_Timer(file.endtime) + } +} + +void function ToggleSetHunterClient(bool enable) +{ + RunUIScript("ToggleSetHunter", enable) +} + +void function DUCKHUNT_CustomHint(int index, int eHandle) +{ + if(!IsValid(GetLocalViewPlayer())) return + + switch(index) + { + case 0: + QuickHint("", "Kill the ducks!", true, 6) + EmitSoundOnEntity(GetLocalViewPlayer(), "ui_ingame_switchingsides") + break + + case 1: + QuickHint("", "Lives remaining: " + eHandle, false, 4) + EmitSoundOnEntity(GetLocalViewPlayer(), "UI_PostGame_TitanSlideIn") + break + + case 2: + Obituary_Print_Localized( EHI_GetName(eHandle) + " has selected hunter team.", GetChatTitleColorForPlayer( GetLocalViewPlayer() ), BURN_COLOR ) + EmitSoundOnEntity(GetLocalViewPlayer(), "vdu_on") + break + + case 3: + QuickHint("", "A duck has reached last floor checkpoint.", false, 5) + EmitSoundOnEntity(GetLocalViewPlayer(), "vdu_on") + break + + case 4: + QuickHint("", "Teleporting ducks in 15 seconds.", false, 5) + EmitSoundOnEntity(GetLocalViewPlayer(), "vdu_on") + break + + case 6: + QuickHint("", "Hunters were decided. \n Teleporting ducks in 15 seconds.", false, 5) + EmitSoundOnEntity(GetLocalViewPlayer(), "vdu_on") + break + + case 5: + Obituary_Print_Localized( "Made with love by @CafeFPS & Darkes#8647", GetChatTitleColorForPlayer( GetLocalViewPlayer() ), BURN_COLOR ) + break + } +} + +void function DUCKHUNT_Timer(bool enable, float endtime) +{ + Signal(GetLocalClientPlayer(), "DUCKHUNT_EndTimer") + + file.endtime = endtime + + Hud_SetEnabled( HudElement( "DuckHuntRoundTimerFrame" ), enable ) + Hud_SetVisible( HudElement( "DuckHuntRoundTimerFrame" ), enable ) + + Hud_SetEnabled( HudElement( "DuckHuntRoundTimer" ), enable ) + Hud_SetVisible( HudElement( "DuckHuntRoundTimer" ), enable ) + + if(enable) + thread Thread_DUCKHUNT_Timer(endtime) +} + +void function Thread_DUCKHUNT_Timer(float endtime) +{ + entity player = GetLocalClientPlayer() + EndSignal( player, "DUCKHUNT_EndTimer") + + while ( Time() <= endtime ) + { + if(file.endtime == 0) break + + int elapsedtime = int(endtime) - Time().tointeger() + + DisplayTime dt = SecondsToDHMS( elapsedtime ) + Hud_SetText( HudElement( "DuckHuntRoundTimer"), format( "%.2d:%.2d", dt.minutes, dt.seconds )) + + wait 1 + } +} + +void function QuickHint( string buttonText, string hintText, bool blueText = false, int duration = 2) +{ + if(file.activeQuickHint != null) + { + RuiDestroyIfAlive( file.activeQuickHint ) + file.activeQuickHint = null + } + file.activeQuickHint = CreateFullscreenRui( $"ui/announcement_quick_right.rpak" ) + + RuiSetGameTime( file.activeQuickHint, "startTime", Time() ) + RuiSetString( file.activeQuickHint, "messageText", buttonText + " " + hintText ) + RuiSetFloat( file.activeQuickHint, "duration", duration.tofloat() ) + + if(blueText) + RuiSetFloat3( file.activeQuickHint, "eventColor", SrgbToLinear( <48, 107, 255> / 255.0 ) ) + else + RuiSetFloat3( file.activeQuickHint, "eventColor", SrgbToLinear( <255, 0, 119> / 255.0 ) ) +} \ No newline at end of file diff --git a/vscripts/gamemodes/fs_duckhunt/sh_gamemode_duckhunt.nut b/vscripts/gamemodes/fs_duckhunt/sh_gamemode_duckhunt.nut new file mode 100644 index 000000000..bb90a8593 --- /dev/null +++ b/vscripts/gamemodes/fs_duckhunt/sh_gamemode_duckhunt.nut @@ -0,0 +1,1727 @@ +//APEX DUCKHUNT +//Made by @CafeFPS (Retículo Endoplasmático#5955) + +// Darkes#8647 - duckhunt maps +// everyone else - advice + +global function GamemodeDuckhuntShared_Init + +#if SERVER +global function SpawnDuckHuntMap +global function SpawnDuckHuntMap2 +#endif + +global const int DUCKHUNT_MAX_LIFES_FOR_DUCKS = 4 // o sea 5 + +void function GamemodeDuckhuntShared_Init() +{ + +} + +#if SERVER +void function SpawnDuckHuntMap() +{ + //Weapon Racks + MapEditor_CreateRespawnableWeaponRack( < -1429.5000, 5751.3000, 1140.9000 >, < 0, -90, 0 >, "mp_weapon_lmg",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < -1349.7000, 5750, 401.9000 >, < 0, -90, 0 >, "mp_weapon_esaw",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < -1405.1000, 5554.6000, 15.5000 >, < 0, 90, 0 >, "mp_weapon_semipistol",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < 420, 3401, 1000 >, < 0, 90, 0 >, "mp_weapon_wingman",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < -270, 3401, 1000 >, < 0, 90, 0 >, "mp_weapon_rspn101",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < 330, 3401, 999.9999 >, < 0, 90, 0 >, "mp_weapon_dmr",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < -1486.8000, 5751.3000, 1140.9000 >, < 0, -90, 0 >, "mp_weapon_lstar",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < -1322, 5554.6000, 15.5000 >, < 0, 90, 0 >, "mp_weapon_shotgun_pistol",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < -1322, 5750, 401.9000 >, < 0, -90, 0 >, "mp_weapon_energy_shotgun",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < -1435.1000, 5554.6000, 15.5000 >, < 0, 90, 0 >, "mp_weapon_r97",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < 1222, 5753.9000, 656.6000 >, < 0, -90, 0 >, "mp_weapon_vinson",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < -1544.2000, 5751.3000, 1140.9000 >, < 0, -90, 0 >, "mp_weapon_alternator_smg",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < -210, 3401, 1000 >, < 0, 90, 0 >, "mp_weapon_doubletake",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < -1322, 5750, 15.5000 >, < 0, -90, 0 >, "mp_weapon_energy_shotgun",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < -1377.8000, 5750, 15.5000 >, < 0, -90, 0 >, "mp_weapon_lmg",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < -1405.1000, 5750, 15.5000 >, < 0, -90, 0 >, "mp_weapon_hemlok",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < 1079.2000, 5753.9000, 15.5000 >, < 0, -90, 0 >, "mp_weapon_mastiff",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < 1136.6000, 5753.9000, 15.5000 >, < 0, -90, 0 >, "mp_weapon_r97",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < -1373.7000, 5751.3000, 1140.9000 >, < 0, -90, 0 >, "mp_weapon_energy_shotgun",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < -180, 3401, 1000 >, < 0, 90, 0 >, "mp_weapon_doubletake",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < 1107.7000, 5753.9000, 15.5000 >, < 0, -90, 0 >, "mp_weapon_pdw",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < -1492.5000, 5750, 401.9000 >, < 0, -90, 0 >, "mp_weapon_alternator_smg",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < -1377.8000, 5750, 401.9000 >, < 0, -90, 0 >, "mp_weapon_lmg",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < -150, 3401, 1000 >, < 0, 90, 0 >, "mp_weapon_g2",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < -1377.8000, 5554.6000, 15.5000 >, < 0, 90, 0 >, "mp_weapon_wingman",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < 1166.6000, 5753.9000, 656.6000 >, < 0, -90, 0 >, "mp_weapon_semipistol",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < -240, 3401, 1000 >, < 0, 90, 0 >, "mp_weapon_doubletake",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < 360, 3401, 1000 >, < 0, 90, 0 >, "mp_weapon_defender",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < -1492.5000, 5554.6000, 15.5000 >, < 0, 90, 0 >, "mp_weapon_mastiff",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < 1079.2000, 5753.9000, 656.6000 >, < 0, -90, 0 >, "mp_weapon_mastiff",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < 1136.6000, 5753.9000, 656.6000 >, < 0, -90, 0 >, "mp_weapon_r97",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < 1222, 5753.9000, 15.5000 >, < 0, -90, 0 >, "mp_weapon_vinson",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < -1464, 5554.6000, 15.5000 >, < 0, 90, 0 >, "mp_weapon_pdw",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < 1193.9000, 5753.9000, 656.6000 >, < 0, -90, 0 >, "mp_weapon_wingman",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < 1249.7000, 5753.9000, 15.5000 >, < 0, -90, 0 >, "mp_weapon_shotgun_pistol",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < 450, 3401, 1000 >, < 0, 90, 0 >, "mp_weapon_defender",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < 1249.7000, 5753.9000, 656.6000 >, < 0, -90, 0 >, "mp_weapon_shotgun_pistol",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < 1193.9000, 5753.9000, 15.5000 >, < 0, -90, 0 >, "mp_weapon_wingman",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < 1166.6000, 5753.9000, 15.5000 >, < 0, -90, 0 >, "mp_weapon_semipistol",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < -1515.7000, 5751.3000, 1140.9000 >, < 0, -90, 0 >, "mp_weapon_autopistol",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < 300, 3401, 1000 >, < 0, 90, 0 >, "mp_weapon_sniper",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < 1107.7000, 5753.9000, 656.6000 >, < 0, -90, 0 >, "mp_weapon_pdw",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < -1349.7000, 5554.6000, 15.5000 >, < 0, 90, 0 >, "mp_weapon_vinson",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < -1492.5000, 5750, 15.5000 >, < 0, -90, 0 >, "mp_weapon_alternator_smg",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < -1435.1000, 5750, 15.5000 >, < 0, -90, 0 >, "mp_weapon_lstar",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < -95.7000, 2100.8000, 1662.2000 >, < 0, 0, 0 >, "mp_weapon_sniper",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < -1464, 5750, 401.9000 >, < 0, -90, 0 >, "mp_weapon_autopistol",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < -1464, 5750, 15.5000 >, < 0, -90, 0 >, "mp_weapon_autopistol",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < -1401.4000, 5751.3000, 1140.9000 >, < 0, -90, 0 >, "mp_weapon_esaw",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < -1405.1000, 5750, 401.9000 >, < 0, -90, 0 >, "mp_weapon_hemlok",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < -1456.8000, 5751.3000, 1140.9000 >, < 0, -90, 0 >, "mp_weapon_hemlok",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < -1349.7000, 5750, 15.5000 >, < 0, -90, 0 >, "mp_weapon_esaw",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < -1435.1000, 5750, 401.9000 >, < 0, -90, 0 >, "mp_weapon_lstar",0.5 ) + MapEditor_CreateRespawnableWeaponRack( < 390, 3401, 999.9999 >, < 0, 90, 0 >, "mp_weapon_dmr",0.5 ) + + //NonVerticalZipLines + MapEditor_CreateZiplineFromUnity( < -1060.5000, 5561.2000, 590.1000 >, < 0, 0, -90 >, < -488.4000, 5747.1000, 528.4000 >, < 0, 0, -90 >, false, -1, 1, 2, 1, 1, 0, 1, 150, 150, false, 0, false, 0, 0, [ ], [ ], [ ], 32, 60, 0 ) + MapEditor_CreateZiplineFromUnity( < 386, 5666.6000, 2047.8000 >, < 0, 90, 0 >, < 974.7000, 5644.1000, 1777.3000 >, < 0, 90, 0 >, false, -1, 1, 2, 1, 1, 0, 1, 150, 150, false, 0, false, 0, 0, [ ], [ ], [ ], 32, 60, 0 ) + MapEditor_CreateZiplineFromUnity( < -489.6000, 5560, 537.2000 >, < 0, -180, 90 >, < -1047.5000, 5747.4000, 584.7487 >, < 0, -180, 90 >, false, -1, 1, 2, 1, 1, 0, 1, 150, 150, false, 0, false, 0, 0, [ ], [ ], [ ], 32, 60, 0 ) + + //Props + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < 978.2991, 5549.5760, 1721.5000 >, < -85.9226, -180, 180 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < -1406.7010, 5654.3760, 0 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/props/death_box/death_box_01.rmdl", < 638.3992, 5545.9760, 657.3000 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x32_01.rmdl", < 70.0991, 5526.4760, 1909.3000 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1128.7000, 5800.5000, 56 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 423.7991, 5736.8760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 575.8992, 5758.5760, 315 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/vending_machine_04.rmdl", < -139.6000, 5619.3000, 341.3726 >, < 90, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < -107.0200, 3130.5000, 982 >, < 0, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -574.4000, 5543.2000, 69.4000 >, < 0, -90, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 376.9990, 5628.5760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 324.5991, 5700.3760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < 1153.5990, 5654.3760, 1155 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 910.7991, 5764.3760, 1606 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < -1149.8000, 5654.3760, 0 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/wall_city_pillar_concrete_01.rmdl", < -586.6000, 5791.9000, 802.5000 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 1042.1990, 5557.7760, 336 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl", < -1041.4000, 5764.8000, 620.8000 >, < -90, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < -1244.9820, 5628.5760, 1141.4230 >, < 5.1187, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 932.2991, 5628.5760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -302.9000, 5787.7000, 343.2169 >, < 0, 0, 108.4617 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x64_01.rmdl", < -137.2009, 5656.1760, 139 >, < 0, -90, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/pipes/slum_pipe_large_yellow_128_01.rmdl", < -1102, 5736.8900, 2030 >, < -60.8504, -6.6239, 59.4883 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 616.4990, 5736.8760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/walkway_wood_plank_01.rmdl", < 203.5000, 5781.5000, 618.4000 >, < -27, 0, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/wall_city_pillar_concrete_01.rmdl", < -441.3000, 5792.4000, 658 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/wall_city_pillar_concrete_01.rmdl", < -312.2000, 5791.9000, 802.5000 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -562.7000, 5800.5000, 153.6000 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 770.1992, 5758.5760, 295 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/research_station_container_big_01.rmdl", < 392.0991, 5651.5760, 1784 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/walkway_wood_plank_01.rmdl", < 2.7000, 5781.5000, 660 >, < 0, 0, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/rocks/rock_playback_06.rmdl", < 576, 5680.0760, 1480.1000 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 1042.1990, 5748.9760, 464 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/levels_terrain/mp_rr_desertlands/desertlands_z12_mid_platform_01.rmdl", < 85.2000, 3122.3000, 1000 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < -426.7000, 3514.3000, 982 >, < 0, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x64_01.rmdl", < 133, 5526.7000, 496 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/rocks/thunderdome_quarry_block_01.rmdl", < 173.2991, 5651.8760, 1495 >, < -15.0161, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/zipline_arm.rmdl", < -433.4000, 5735.1000, 532.4000 >, < -90, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/zipline_arm.rmdl", < -1115.5000, 5573.2000, 594.1000 >, < -90, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -1586.5610, 5652.7760, 1394.1230 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -695, 5765, 0 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1128.7000, 5800.5000, 31.2000 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 1042.1990, 5748.9760, 76.1000 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/props/death_box/death_box_01.rmdl", < 886.8992, 5545.9760, 657.3000 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/walkway_wood_plank_01.rmdl", < -198.4000, 5529.8000, 619 >, < 27, 0, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < 639.5710, 5654.3760, 295.2759 >, < 5.3973, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 1004.0990, 5748.9760, 1789.9000 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < -107.0200, 2882.4000, 982 >, < 0, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_64.rmdl", < -211, 3378.3400, 982 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 860.3992, 5700.3760, 1606 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/vehicles_r5/land/msc_truck_samson_v2/veh_land_msc_truck_samson_v2.rmdl", < -166, 5654.6760, 656.8000 >, < -0.8150, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -1406.8380, 5533.4760, 15.6000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 982.7991, 5601.0760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 1272.4990, 5654.3760, 913.0999 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/levels_terrain/mp_rr_desertlands/desertlands_z12_outer_circle_platform_01.rmdl", < -1723, 5652.5760, 2089 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 766.3992, 5628.5760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 319.3992, 5654.2760, 336.7000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/walkway_wood_plank_01.rmdl", < -198.4000, 5781.5000, 619 >, < 27, 0, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 515.1992, 5547.5760, 319.8000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 860.3992, 5628.5760, 1606 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -1296.2620, 5749, 721 >, < -90, 179.8197, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -562.7000, 5800.5000, 99.4000 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 384.2991, 5654.2760, 328 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 376.9990, 5700.3760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/wall_city_pillar_concrete_01.rmdl", < -316.3000, 5513.2000, 802.5000 >, < -90, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 1042.1990, 5557.7760, 977.7000 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < -1097.1740, 5764.3760, 1128.1820 >, < 5.1187, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 1153.2990, 5773.6760, 657 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 472.3000, 3762, 982 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 10.8000, 5787.7000, 324.9000 >, < 0, 0, 108.4617 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x64_01.rmdl", < -1074.3000, 5560.6000, 527.2000 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/desertlands_barrier_concrete_128_01.rmdl", < -1198.2000, 5541.5000, 15.5000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 802.4990, 5764.3760, 1606 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/levels_terrain/mp_rr_desertlands/desertlands_z12_mid_platform_01.rmdl", < 340.4009, 3570, 1000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl", < -508.5000, 5763.9000, 620.8000 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 712.7991, 5764.3760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thaw/thaw_rock_horizontal_01.rmdl", < -181.4009, 5692.5760, 1329.8000 >, < 0, -90, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/rocks/rock_desert_05.rmdl", < -480, 5658.5760, 1379 >, < 0, -90, 97.3708 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 1153.2990, 5533.4760, 15.6000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_128x64_01.rmdl", < -1446.1630, 5736.5760, 555.5999 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < 461.1794, 5768.5760, 1788.0920 >, < -86.7984, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 663.6992, 5561.7760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < -78.0275, 5554.5760, 1274.7430 >, < -86.7984, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 1153.2990, 5773.6760, 272 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < -754, 5525.3760, 704.8000 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 522.2991, 5601.0760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -1337.4600, 5749, 1330.0230 >, < -90, 179.8197, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/research_station_container_big_01.rmdl", < -439.9009, 5651.5760, 1928 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < -107.0200, 3006.5000, 982 >, < 0, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_corner_out.rmdl", < -107.0200, 3378.3400, 982 >, < 0, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < 897.7991, 5654.3760, 0 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 328.2991, 5526.6760, 652.4001 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 962.9990, 5561.7760, 1606 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/containers/box_shrinkwrapped.rmdl", < 232.2000, 2290.4000, 1000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -12.9000, 5703, 246.2000 >, < 0, -90, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 568.9990, 5764.3760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1559.7620, 5507.9000, 1089 >, < -90, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -1279.0020, 5557.8010, 76.1000 >, < -90, 179.8197, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/desertlands_barrier_concrete_128_01.rmdl", < -954.2999, 5762, 15.5000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/colony/farmland_wall_128x128x16_metal_01.rmdl", < 579.0991, 5658.5760, 329.3000 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/wall_city_pillar_concrete_01.rmdl", < -718.2000, 5791.5000, 658 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 766.3992, 5700.3760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -1424.7000, 5533.4760, 657 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 1042.1990, 5653.3760, 491.0999 >, < 0, -90, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < -1192.7910, 5628.5760, 1136.7470 >, < 5.1187, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/pipes/slum_pipe_large_yellow_128_01.rmdl", < -671.1000, 5720.7760, 2005.3000 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 830.6990, 5547.5760, 290.1001 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 568.9990, 5628.5760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/wall_city_pillar_concrete_01.rmdl", < -456.1000, 5792.5000, 658 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < -553.4685, 5768.5760, 1844.5920 >, < -86.7984, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/zipline_arm.rmdl", < 1029.7000, 5648.1000, 1789.3000 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/zipline_arm.rmdl", < 390, 5611.6000, 2059.8000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/security_fence_post.rmdl", < 390.8000, 5612.6000, 1899.8000 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_64.rmdl", < 37, 3762, 982 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 523.9990, 5764.3760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 10.8000, 5798.2000, 230.9368 >, < 0, 0, 70.6491 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/walkway_wood_plank_01.rmdl", < -173, 5781.5000, 660 >, < 0, 0, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 880.1992, 5601.0760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/vending_machine_03.rmdl", < 293.1000, 5562.6760, 970.3000 >, < 0, -90, -5.5000 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/domestic/nessy_doll.rmdl", < 1851.7000, -2808.7000, 1000.4000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 984.4990, 5700.3760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < -1174.0610, 5561.7760, 1136.7470 >, < 5.1187, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 822.2991, 5736.8760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 713.6992, 5758.5760, 301.1001 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/wall_city_pillar_concrete_01.rmdl", < -581.9000, 5649.9000, 802.5000 >, < -90, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/walkway_wood_plank_01.rmdl", < 0, 5781.5000, 812.8000 >, < 0, 0, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 384.2991, 5758.5760, 328 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < -1200.0670, 5653.7710, 1113.8230 >, < 5.2190, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < -907.2341, 5700.3760, 1111.1680 >, < 5.1187, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < -1232.1610, 5561.7760, 1141.4230 >, < 5.1187, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/walkway_wood_plank_01.rmdl", < 177, 5529.8000, 660 >, < 0, 0, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_corner_in.rmdl", < -426.7000, 3762, 982 >, < 0, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -1296.5630, 5653.4000, 880.7000 >, < 0, 89.8196, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < -1018.9000, 5525.3760, 424.4000 >, < 65, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -755.3000, 5765, 0 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/colony/farmland_house_frame_01_128.rmdl", < -256.6011, 5681.8760, 360.7000 >, < 0.1516, -88.9860, -8.5042 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x128_02.rmdl", < 131.6991, 5658.8760, 141.6000 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_64.rmdl", < 368.4000, 3378.3400, 982 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl", < -93.8000, 5496.1400, 588.1648 >, < -70, -180, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < -1093.4160, 5554.5760, 1362.2710 >, < 3.2017, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 984.4990, 5561.7760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < -1001.5570, 5700.3760, 1119.6170 >, < 5.1187, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -1338.0610, 5557.8010, 1202.0230 >, < -90, 179.8197, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 276.6000, 2510.6000, 982 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 982.7991, 5736.8760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/wall_city_pillar_concrete_01.rmdl", < -718.2000, 5523.9770, 658 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < -107.0200, 2634.7000, 982 >, < 0, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl", < -161.6000, 5813.8000, 637.6648 >, < -70, 0, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_16.rmdl", < -426.7000, 3446.3000, 982 >, < 0, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x64_01.rmdl", < -28.8009, 5656.1760, 139 >, < 0, -90, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 770.1992, 5547.5760, 295 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x64_01.rmdl", < -185.5000, 5527.8000, 522 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -1338.0610, 5557.8010, 1586.1230 >, < -90, 179.8197, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 576.3992, 5526.6760, 652.4001 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < -382.1008, 5654.3760, 0 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 1115.1990, 5533.4760, 1597.3000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < 130.7991, 5654.3760, 332 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/walkway_wood_plank_01.rmdl", < 203.5000, 5529.8000, 618.4000 >, < -27, 0, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_sand_256x128_01.rmdl", < -1338.2600, 5653.4760, 1388.9230 >, < 0, -90, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 699.9990, 5782.2260, 652.4001 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1275.2620, 5789.7000, 940 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < -553.4685, 5554.5760, 1844.5920 >, < -86.7984, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/colony/farmland_wall_128x128x16_metal_01.rmdl", < 447.5991, 5554.9760, 337.7000 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x64_01.rmdl", < 133, 5827.9000, 496 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 1014.4000, 5507.9000, 560 >, < -90, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -1337.4600, 5749, 1458.1230 >, < -90, 179.8197, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 770.1992, 5654.2760, 295 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -345.6000, 5654.6760, 677.1000 >, < -35, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_128x64_01.rmdl", < 1203.2990, 5572.6760, 86.7000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl", < -218.2000, 5511.4000, 637.8000 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 522.2991, 5672.8760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 881.8992, 5561.7760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/wall_city_pillar_concrete_01.rmdl", < -319.8000, 5523.9770, 658 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 880.1992, 5672.8760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_64.rmdl", < 132.7000, 3762, 982 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 712.7991, 5628.5760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_sand_256x128_01.rmdl", < 1152.9990, 5653.4760, 264.5000 >, < 0, -90, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_128x64_01.rmdl", < 1203.2990, 5737.1760, 165.8000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 376.9990, 5561.7760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < 1153.5990, 5654.3760, 641.9001 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 425.4990, 5700.3760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl", < -208.3000, 5496.1400, 633.8648 >, < -70, -180, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 700.5991, 5526.6760, 652.4001 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -880.6000, 5800.5000, 128.4000 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/desertlands_barrier_concrete_128_01.rmdl", < -1076.1000, 5541.5000, 15.5000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < -1454.8750, 5655.1760, 1123.8230 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -1338.0610, 5557.8010, 1330.0230 >, < -90, 179.8197, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -1337.7600, 5653.4000, 1617.8230 >, < 0, 89.8196, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 456.4990, 5755.9760, 324.6001 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/pipes/slum_pipe_large_yellow_128_01.rmdl", < -1393.8000, 5741.9650, 2064.8660 >, < -42.5254, 5.5988, 113.8053 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/wall_city_pillar_concrete_01.rmdl", < -711.1000, 5513.2000, 802.5000 >, < -90, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < -907.2341, 5764.3760, 1111.1680 >, < 5.1187, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl", < -103.7000, 5511.4000, 592.1000 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < -1144.4840, 5628.5760, 1132.4200 >, < 5.1187, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 596.2000, 3638.2000, 982 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 324.5991, 5628.5760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < -55, 3762, 982 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 276.6000, 2386.9000, 982 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 766.3992, 5561.7760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 663.6992, 5700.3760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 559.0991, 5664.8760, 654 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl", < -443.8000, 5763.9000, 620.8000 >, < -90, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < -582.9376, 5554.5760, 1302.8220 >, < -86.7984, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_16.rmdl", < -175, 3378.3400, 982 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1275.2620, 5789.7000, 1089 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/colony/farmland_house_frame_01_128.rmdl", < -124.1559, 5681.8760, 341.6001 >, < -0.0727, -88.9771, 4.0663 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/wall_city_pillar_concrete_01.rmdl", < -316.3000, 5649.9000, 802.5000 >, < -90, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -1465.8980, 5533.4760, 1138.0230 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 425.4990, 5628.5760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/wall_city_pillar_concrete_01.rmdl", < -448.5000, 5791.9000, 802.5000 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x64_06.rmdl", < 0.0991, 5404.8000, 1030 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 1153.2990, 5533.4760, 913.0999 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/wall_city_pillar_concrete_01.rmdl", < -444.1000, 5513.2000, 802.5000 >, < -90, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -302.9000, 5798.2000, 249.2537 >, < 0, 0, 70.6491 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < -1144.4840, 5700.3760, 1132.4200 >, < 5.1187, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x256_01.rmdl", < 65.6331, 5535.3900, 994.7378 >, < -5.1813, 124.6351, 93.9288 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -1337.7600, 5653.4000, 1361.7230 >, < 0, 89.8196, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -880.5000, 5765.1000, 0 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < -895.3000, 5654.3760, 641.4001 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl", < 109.9000, 5496.1400, 616.1000 >, < -70, -180, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < -1194.6610, 5598.9760, 1129.5230 >, < 5.1187, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 1298.9000, 5507.9000, 560 >, < -90, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < 447.6106, 5554.5760, 1515.7150 >, < -86.7984, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < -1244.9820, 5700.3760, 1141.4230 >, < 5.1187, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 764.6992, 5736.8760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 522.2991, 5736.8760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < -906.3401, 5561.7760, 1119.6170 >, < 5.1187, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -1296.8630, 5557.8010, 849 >, < -90, 179.8197, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl", < -39, 5798.2000, 592.1000 >, < -90, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -1296.2620, 5749, 466.4001 >, < -90, 179.8197, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/rocks/rock_lava_small_desertlands_01.rmdl", < -1262.9000, 5552.7000, 1396.7000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < 641.7991, 5654.3760, 0 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < 385.6992, 5654.3760, 0 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/levels_terrain/mp_rr_desertlands/desertlands_z12_mid_platform_01.rmdl", < 85.2000, 2611.2000, 1000 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 1042.1990, 5748.9760, 204.1000 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/colony/farmland_house_frame_01_128.rmdl", < -123.9365, 5665.9760, 341.6182 >, < 0.1053, -90.5892, 4.0724 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 324.5991, 5764.3760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 830.6990, 5758.5760, 290.1001 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 618.1990, 5764.3760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 930.5991, 5736.8760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/rocks/rock_playback_06.rmdl", < -842.2000, 5680.0760, 1350.5000 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_corner_out.rmdl", < 276.6000, 3378.3400, 982 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < -62.1272, 5768.5760, 1544.1360 >, < -86.7984, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 568.9990, 5561.7760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/domestic/nessy_doll.rmdl", < -1503.6000, 5656.4000, 14 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl", < -499.7000, 5527.5400, 616.8648 >, < -70, -180, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 712.7991, 5561.7760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 1042.1990, 5653.3760, 231.2000 >, < 0, -90, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 1234.3990, 5654.3760, 1597.3000 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < -567.0374, 5768.5760, 1572.2150 >, < -86.7984, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/railing_metal_dirty_64_panel_01.rmdl", < 777.6992, 5654.3760, 411.3000 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < -1144.4840, 5764.3760, 1132.4200 >, < 5.1187, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 1298.9000, 5517.1000, 608 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -574.4000, 5764.9000, 69.4000 >, < 0, -90, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < -639.2000, 5654.3760, 641.4001 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 515.1992, 5758.5760, 320.3999 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/desertlands_barrier_concrete_128_01.rmdl", < -1198.2000, 5762, 15.5000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/wall_city_pillar_concrete_01.rmdl", < -594.4000, 5523.9770, 658 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_128x64_01.rmdl", < 1203.2990, 5737.1760, 815 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1275.2620, 5517.1000, 940 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl", < -1041.4000, 5542.9000, 620.8000 >, < -90, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < -1097.1740, 5628.5760, 1128.1820 >, < 5.1187, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 910.7991, 5628.5760, 1606 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < 894.4353, 5654.3760, 271.1960 >, < 5.3973, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_16.rmdl", < 96.7000, 3762, 982 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/containers/box_shrinkwrapped.rmdl", < -63.6000, 2290.4000, 1000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/levels_terrain/mp_rr_desertlands/desertlands_z12_outer_circle_platform_01.rmdl", < 84.0991, 2098, 1662 >, < 0, -124.3613, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 860.3992, 5561.7760, 1606 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/walkway_wood_plank_01.rmdl", < -44.8000, 5781.5000, 579.1000 >, < 0, 0, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < -107.0200, 2386.9000, 982 >, < 0, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 764.6992, 5601.0760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -1296.8630, 5557.8010, 594.4001 >, < -90, 179.8197, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 348.5000, 3762, 982 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 567.2991, 5672.8760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/vehicles_r5/land/msc_truck_samson_v2/veh_land_msc_truck_samson_v2.rmdl", < 155.9553, 5654.6760, 656.8000 >, < -0.8153, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 1115.1990, 5773.6760, 1597.3000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/colony/farmland_wall_128x128x16_metal_01.rmdl", < 958.0991, 5554.9760, 293.6001 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/walkway_wood_plank_01.rmdl", < -44.8000, 5529.8000, 579.1000 >, < 0, 0, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < -1046.3770, 5700.3760, 1123.6320 >, < 5.1187, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 968.4990, 5547.5760, 277.7000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < -1019.0610, 5663.2760, 1115.2270 >, < 5.1187, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < -48.5584, 5768.5760, 1816.5130 >, < -86.7984, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/colony/farmland_house_frame_01_128.rmdl", < -256.5646, 5646.4760, 360.6943 >, < 0.1071, -89.2836, -8.5048 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -1424.7000, 5773.6760, 401.4001 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_05.rmdl", < 129.7991, 5541.6760, 144.4000 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 661.9993, 5672.8760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 324.5991, 5561.7760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 318.2991, 5547.5760, 336.7000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/vending_machine_03.rmdl", < -638, 5562.6760, 1097 >, < 0, -90, -95.5000 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -574.4000, 5543.2000, 126.5000 >, < 0, -90, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x64_05.rmdl", < 751.0991, 5577.5760, 144 >, < 0, 25, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/walkway_wood_plank_01.rmdl", < -266.4000, 5529.8000, 732.6000 >, < -90, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 896.6990, 5547.5760, 280 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 1042.1990, 5748.9760, 336 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -880.6000, 5800.5000, 99.4000 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/levels_terrain/mp_rr_desertlands/desertlands_z12_mid_platform_01.rmdl", < -171, 3570, 1000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/zipline_arm.rmdl", < -1102.5000, 5735.4000, 580.7487 >, < 90, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/zipline_arm.rmdl", < -434.6000, 5572, 533.2000 >, < 90, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 823.9990, 5782.2260, 652.4001 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_16.rmdl", < 84.7100, 3762, 982 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 618.1990, 5700.3760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 328.2991, 5782.2260, 652.4001 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl", < -39, 5511.4000, 592.1000 >, < -90, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/colony/farmland_house_frame_01_128.rmdl", < -124.1190, 5646.4760, 341.6025 >, < -0.0514, -89.2773, 4.0666 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 968.4990, 5758.5760, 277.7000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 930.5991, 5601.0760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 823.9990, 5700.3760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -1337.4600, 5749, 1586.1230 >, < -90, 179.8197, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 1153.2990, 5533.4760, 657 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/research_station_container_big_01.rmdl", < -32.9009, 5651.5760, 1858 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < 431.7104, 5768.5760, 1246.3220 >, < -86.7984, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x128_02.rmdl", < 614.0991, 5646.7760, 141.6000 >, < 0, -90, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 322.8992, 5736.8760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -1296.2620, 5749, 594.4001 >, < -90, 179.8197, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 276.6000, 2634.7000, 982 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < -952.5527, 5628.5760, 1115.2270 >, < 5.1187, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 1042.1990, 5557.7760, 849.6001 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < -303, 3762, 982 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < -754, 5803, 704.8000 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 802.4990, 5700.3760, 1606 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 881.8992, 5628.5760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 317.7991, 5820.9760, 351.5000 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < -126.3009, 5654.3760, 0 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < -1151.5000, 5654.3760, 641.4001 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_03.rmdl", < -692, 5653.5760, 1064 >, < 0, -90, -5.6757 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 276.6000, 3254.5000, 982 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 711.0991, 5736.8760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 640.4990, 5820.9760, 321.3999 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 276.6000, 2882.4000, 982 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -562.1000, 5543.3000, 0 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_128x64_01.rmdl", < 1203.2990, 5572.6760, 735.9001 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/research_station_container_big_01.rmdl", < -240.9009, 5651.5760, 1899 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < -1151.3000, 5654.3760, 387.3000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < -567.0374, 5554.5760, 1572.2150 >, < -86.7984, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 472.9990, 5764.3760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_corner_in.rmdl", < 596.2000, 3378.3400, 982 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 663.6992, 5764.3760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < -952.5527, 5700.3760, 1115.2270 >, < 5.1187, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -880.5000, 5543.3000, 0 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < -1046.3770, 5628.5760, 1123.6320 >, < 5.1187, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 984.4990, 5764.3760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 472.9990, 5700.3760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x64_01.rmdl", < -475.3000, 5780.2000, 495 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < 896.7520, 5650.5760, 902.9866 >, < 5.2190, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/wall_city_pillar_concrete_01.rmdl", < -711.1000, 5649.9000, 802.5000 >, < -90, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x256_01.rmdl", < -396.6000, 5763.6000, 1047.0880 >, < 4.7806, -42.7680, 85.5919 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 1003.9000, 5653.3760, 1821.5000 >, < 0, -90, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -1278.4000, 5749, 204.1000 >, < -90, 179.8197, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/wall_city_pillar_concrete_01.rmdl", < -586.6000, 5523.9770, 802.5000 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 1042.1990, 5748.9760, 1105.7000 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x64_01.rmdl", < -475.3000, 5559.3000, 495 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < 641.8442, 5650.5760, 926.2717 >, < 5.2190, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -1424.7000, 5773.6760, 657 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/wall_city_pillar_concrete_01.rmdl", < -448.5000, 5523.9770, 802.5000 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 930.5991, 5672.8760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 1042.1990, 5557.7760, 1105.7000 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 962.9990, 5700.3760, 1606 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -1278.4000, 5749, 76.1000 >, < -90, 179.8197, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x64_01.rmdl", < -183.1008, 5814.4000, 521.8000 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 982.7991, 5672.8760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 1004.0990, 5748.9760, 1661.9000 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 880.1992, 5736.8760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x32_01.rmdl", < -331.8009, 5526.4760, 1991 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 471.2991, 5736.8760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -695, 5543.3000, 0 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -1406.8380, 5773.6760, 15.6000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < -530.5000, 5800.8000, 398 >, < -65, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < -907.2341, 5628.5760, 1111.1680 >, < 5.1187, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 641.8992, 5547.5760, 309.6001 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < 1153.5990, 5654.3760, 511.7000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < -754, 5803, 763.1000 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/wall_city_pillar_concrete_01.rmdl", < -319.8000, 5791, 658 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 618.1990, 5628.5760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -1278.7010, 5653.4000, 231.2000 >, < 0, 89.8196, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 276.6000, 3006.5000, 982 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -1545.3630, 5652.7760, 401.4001 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < 897.7991, 5654.3760, 641.4001 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < -1413.6770, 5664.9760, 896.5999 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/containers/box_shrinkwrapped.rmdl", < -349, 5570.7760, 362.9000 >, < 3.2161, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/walkway_wood_plank_01.rmdl", < 272.8000, 5781.5000, 732.6000 >, < -90, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_03.rmdl", < 391.9365, 5652.9760, 945.0864 >, < 0, -90, -5.6757 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < -1001.5570, 5764.3760, 1119.6170 >, < 5.1187, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 575.9990, 5782.2260, 652.4001 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 224.7000, 3762, 982 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 1298.9000, 5789.7000, 560 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 766.3992, 5764.3760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 515.1992, 5654.2760, 320.3999 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 641.8992, 5654.2760, 309.6001 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 881.8992, 5700.3760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 596.2000, 3514.3000, 982 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 425.4990, 5561.7760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -302.9000, 5800.5000, 246.2000 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/containers/box_shrinkwrapped.rmdl", < 35, 2290.4000, 1000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/wall_city_pillar_concrete_01.rmdl", < -581.9000, 5513.2000, 802.5000 >, < -90, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < -894.4009, 5654.3760, 0 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 1042.1990, 5653.3760, 1132.8000 >, < 0, -90, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl", < 154.9000, 5827.1000, 618.9648 >, < -70, 0, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 711.0991, 5672.8760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -1296.8630, 5557.8010, 721 >, < -90, 179.8197, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -1296.2620, 5749, 849 >, < -90, 179.8197, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < -754, 5525.3760, 763.1000 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 1272.4990, 5654.3760, 15.6000 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 1014.4000, 5507.9000, 608 >, < -90, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -1337.4600, 5749, 1202.0230 >, < -90, 179.8197, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 452.2991, 5782.2260, 652.4001 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/railing_metal_dirty_64_panel_01.rmdl", < 777.6992, 5654.3760, 337.1699 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -632.4000, 5765, 0 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 523.9990, 5700.3760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1275.2620, 5507.9000, 940 >, < -90, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_sand_256x128_01.rmdl", < 1152.9990, 5653.4760, 900.5000 >, < 0, -90, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/wall_city_pillar_concrete_01.rmdl", < -577.6000, 5523.9770, 658 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -1279.0020, 5557.8010, 204.1000 >, < -90, 179.8197, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1275.2620, 5517.1000, 1016 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl", < 165.2000, 5811.5000, 622.9000 >, < -90, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -574.4000, 5764.9000, 126.5000 >, < 0, -90, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 567.2991, 5601.0760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < -1406.5010, 5654.3760, 261.2000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x64_01.rmdl", < -263.5009, 5656.1760, 142.6000 >, < 0, -90, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 641.8992, 5758.5760, 309.6001 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 425.4990, 5764.3760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 1042.1990, 5748.9760, 721.6001 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/wall_city_pillar_concrete_01.rmdl", < -456.1000, 5523.9770, 658 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 567.2991, 5736.8760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_sand_256x128_02.rmdl", < -352, 5646, 123.9000 >, < -90, 30.2700, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < -530.5000, 5525.3760, 398 >, < -65, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < 860.2991, 5654.3760, 1582.2000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 823.9990, 5764.3760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < -107.0200, 2758.4000, 982 >, < 0, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 802.4990, 5561.7760, 1606 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl", < -1106.1000, 5542.9000, 620.8000 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/walkway_wood_plank_01.rmdl", < 174.5000, 5529.8000, 812.8000 >, < 0, 0, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 1298.9000, 5507.9000, 608 >, < -90, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < 431.7104, 5554.5760, 1246.3220 >, < -86.7984, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/wall_city_pillar_concrete_01.rmdl", < -441.3000, 5523.9770, 658 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < -1454.8750, 5656.2760, 1635.9230 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/containers/box_shrinkwrapped.rmdl", < 133.6000, 2290.4000, 1000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < -94.9009, 5554.5760, 1306 >, < 3.2017, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl", < -49.3000, 5813.8000, 588.1648 >, < -70, 0, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < -1244.9820, 5764.3760, 1141.4230 >, < 5.1187, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/levels_terrain/mp_rr_desertlands/desertlands_z12_mid_platform_01.rmdl", < 85.2000, 2100.2000, 1000 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 276.6000, 2758.4000, 982 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 318.2991, 5758.5760, 336.7000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -562.1000, 5765, 0 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl", < -1098.5000, 5529.3000, 616.8648 >, < -70, -180, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x256_01.rmdl", < -244.3669, 5545.9900, 1031.2630 >, < -5.1214, 136.9328, 93.9949 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 1042.1990, 5557.7760, 204.1000 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/railing_metal_dirty_64_panel_01.rmdl", < 777.6992, 5654.3760, 300.2700 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 896.6990, 5758.5760, 280 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < 385.6992, 5654.3760, 641.4001 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 1298.9000, 5517.1000, 560 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 962.9990, 5628.5760, 1606 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 1042.1990, 5748.9760, 849.6001 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < 1116.6000, 5654.3760, 1579.5000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 1004.0990, 5557.7760, 1661.9000 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1275.2620, 5517.1000, 1089 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl", < -1051.7000, 5780.3990, 616.8648 >, < -70, 0, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < -944.9607, 5654.3760, 1090.5200 >, < 5.2190, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < -1192.7910, 5764.3760, 1136.7470 >, < 5.1187, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl", < -442.6000, 5541.1400, 620.8000 >, < -90, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 764.6992, 5672.8760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < -62.1272, 5554.5760, 1544.1360 >, < -86.7984, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/walkway_wood_plank_01.rmdl", < 272.8000, 5529.8000, 732.6000 >, < -90, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 523.9990, 5628.5760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 375.2991, 5672.8760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < -383.4000, 5654.3760, 641.4001 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 910.7991, 5561.7760, 1606 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 568.9990, 5700.3760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 984.4990, 5628.5760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 881.8992, 5764.3760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < -107.0200, 2510.6000, 982 >, < 0, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/walkway_wood_plank_01.rmdl", < -173, 5529.8000, 660 >, < 0, 0, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -632.4000, 5543.3000, 0 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x256_01.rmdl", < -228.3669, 5561.4180, 1030.5340 >, < -5.7396, -141.7426, 86.9459 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl", < 100.5000, 5811.5000, 622.9000 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -1465.8980, 5773.6760, 1138.0230 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/rocks/rock_lava_small_desertlands_01.rmdl", < -1120.5130, 5560.3800, 1392.2110 >, < 12.3315, 21.7232, -11.0032 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < 401.0991, 5554.5760, 1279 >, < 3.2017, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_corner_in.rmdl", < -426.7000, 3378.3400, 982 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < -1001.5570, 5628.5760, 1119.6170 >, < 5.1187, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 452.4990, 5526.6760, 652.4001 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < -107.0200, 3254.5000, 982 >, < 0, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl", < -454.1000, 5779.5000, 616.8648 >, < -70, 0, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -1586.5610, 5652.7760, 1138.0230 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 472.9990, 5628.5760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < 129.4991, 5654.3760, 0 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 471.2991, 5601.0760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/rocks/rock_lava_small_desertlands_01.rmdl", < -1213.8000, 5551.5000, 1430 >, < -67.5614, 155.0351, 62.9534 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < -588.5054, 5768.5760, 1334.1930 >, < 3.2017, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < -1093.4160, 5768.5760, 1362.2710 >, < 3.2017, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1275.2620, 5507.9000, 1016 >, < -90, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -813.2000, 5543.3000, 0 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/desertlands_barrier_concrete_128_01.rmdl", < -1076.1000, 5762, 15.5000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -755.3000, 5543.3000, 0 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1275.2620, 5507.9000, 1089 >, < -90, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 1272.4990, 5654.3760, 272 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 910.7991, 5700.3760, 1606 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -1465.8980, 5533.4760, 1394.1230 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/walkway_wood_plank_01.rmdl", < -270.3000, 5781.5000, 732.6000 >, < -90, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < -48.5584, 5554.5760, 1816.5130 >, < -86.7984, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/pipes/slum_pipe_large_yellow_128_01.rmdl", < -951.2098, 5678.9200, 2033.1200 >, < 8.0486, 98.0400, 104.3567 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x32_01.rmdl", < -261.4009, 5416, 1170 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 823.4993, 5526.6760, 652.4001 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/imc_base/generator_IMC_01.rmdl", < -1119, 5582.7760, 1125 >, < 4.8836, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 1298.9000, 5789.7000, 608 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_128x64_01.rmdl", < -1487.3610, 5572.0760, 1211.0230 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl", < -151.3000, 5798.2000, 641.6000 >, < -90, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 661.9993, 5601.0760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 713.6992, 5547.5760, 301.1001 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 663.6992, 5628.5760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_16.rmdl", < 404.4000, 3378.3400, 995.5000 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl", < -1106.1000, 5764.8000, 620.8000 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 888.0991, 5664.8760, 662 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_corner_in.rmdl", < 596.2000, 3762, 982 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < -1192.7910, 5700.3760, 1136.7470 >, < 5.1187, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < -1120.9610, 5666.4760, 1132.4200 >, < 5.1187, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x64_01.rmdl", < -175.3009, 5656.1760, 142.6000 >, < 0, -90, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/wall_city_pillar_concrete_01.rmdl", < -444.1000, 5649.9000, 802.5000 >, < -90, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < -1071.0610, 5623.4760, 1123.6320 >, < 5.1187, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x32_01.rmdl", < 229.0991, 5416, 1151.6000 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 472.3000, 3378.3400, 982 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x64_01.rmdl", < -71.2009, 5528.5000, 466.2000 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/walkway_wood_plank_01.rmdl", < -174.2000, 5781.5000, 812.8000 >, < 0, 0, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 822.2991, 5672.8760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < 1153.5990, 5654.3760, 0 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 712.7991, 5700.3760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/rocks/rock_sand_large_02.rmdl", < -870.2000, 5569.8760, 1129.9000 >, < -27.9021, -90.8117, -8.8947 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < 1153.5990, 5654.3760, 641.4001 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 472.9990, 5561.7760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/walkway_wood_plank_01.rmdl", < 0, 5529.8000, 812.8000 >, < 0, 0, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -813.2000, 5765, 0 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -880.6000, 5800.5000, 153.6000 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 932.2991, 5561.7760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 823.9990, 5561.7760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -1527.5010, 5652.7760, 15.6000 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -13.7000, 5800.5000, 246.2000 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/railing_metal_dirty_64_panel_01.rmdl", < 777.6992, 5654.3760, 374.2000 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < 641.7991, 5654.3760, 641.4001 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 376.9990, 5764.3760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/desertlands_barrier_concrete_128_01.rmdl", < -954.2999, 5541.5000, 15.5000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 1042.1990, 5557.7760, 721.6001 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < -638.2009, 5654.3760, 0 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 1042.1990, 5557.7760, 76.1000 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < -1198.3610, 5656.2760, 1375.1230 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 802.4990, 5628.5760, 1606 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 322.8992, 5672.8760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < -1097.1740, 5701.3760, 1128.1820 >, < 5.1187, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1275.2620, 5789.7000, 1016 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 322.8992, 5601.0760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x64_05.rmdl", < 401.0991, 5606.4760, 144 >, < 0, -35, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 375.2991, 5736.8760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x64_01.rmdl", < -218, 5656.1760, 142.6000 >, < 0, -90, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -1545.3630, 5652.7760, 657 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/research_station_container_big_01.rmdl", < 189.0991, 5651.5760, 1818 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 947.9990, 5782.2260, 652.4001 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 1153.2990, 5773.6760, 15.6000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl", < -216, 5798.2000, 641.6000 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x64_01.rmdl", < -1074.3000, 5780.5000, 527.2000 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 823.9990, 5628.5760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 276.6000, 3130.5000, 982 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/containers/box_shrinkwrapped.rmdl", < -349, 5734.9760, 362.9000 >, < 3.2161, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -562.7000, 5800.5000, 128.4000 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/colony/farmland_house_frame_01_128.rmdl", < -256.3829, 5665.9760, 360.6697 >, < -0.0254, -90.5978, -8.4993 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1559.7620, 5507.9000, 940 >, < -90, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 932.2991, 5764.3760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x64_01.rmdl", < -77.4009, 5656.1760, 139 >, < 0, -90, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < -1408.1000, 5654.3760, 385.8000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < -1046.3770, 5764.3760, 1123.6320 >, < 5.1187, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 947.6992, 5526.6760, 652.4001 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl", < -507.3001, 5541.1400, 620.8000 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < -383.1304, 5654.3760, 351 >, < 3.0855, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 423.7991, 5672.8760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/rocks/thunderdome_quarry_block_01.rmdl", < 735.6130, 5651.8760, 981.0999 >, < 4.7958, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/wall_city_pillar_concrete_01.rmdl", < -312.2000, 5523.9770, 802.5000 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < 447.6106, 5768.5760, 1515.7150 >, < -86.7984, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 1272.4990, 5654.3760, 657 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 932.2991, 5700.3760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < -1018.9000, 5800.8000, 424.4000 >, < 65, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < -78.0275, 5768.5760, 1274.7430 >, < -86.7984, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < 461.1794, 5554.5760, 1788.0920 >, < -86.7984, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < -179, 3762, 982 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -12.9000, 5608.6000, 246.2000 >, < 0, -90, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 860.3992, 5764.3760, 1606 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_128x64_01.rmdl", < -1446.1630, 5572.0760, 476.5000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -1465.8980, 5773.6760, 1394.1230 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x256_01.rmdl", < 89.7055, 5555.0900, 994.5000 >, < -4.7014, -136.2115, 85.5076 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1559.7620, 5507.9000, 1016 >, < -90, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < -582.9376, 5768.5760, 1302.8220 >, < -86.7984, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/walkway_wood_plank_01.rmdl", < 177, 5781.5000, 660 >, < 0, 0, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < -303, 3378.3400, 982 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -1296.8630, 5557.8010, 466.4001 >, < -90, 179.8197, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl", < -153.5000, 5511.4000, 637.8000 >, < -90, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 618.1990, 5561.7760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x64_01.rmdl", < -71.2009, 5814, 466.2000 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/props/death_box/death_box_01.rmdl", < 388.2991, 5545.9760, 657.3000 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 1042.1990, 5557.7760, 464 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 423.7991, 5601.0760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 822.2991, 5601.0760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < -426.7000, 3638.2000, 982 >, < 0, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/colony/farmland_wall_128x128x16_metal_01.rmdl", < 706.3992, 5554.9760, 313.8000 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_16.rmdl", < 73, 3762, 982 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", < 384.6069, 5654.3760, 319.3650 >, < 5.3973, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -1424.7000, 5533.4760, 401.4001 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/vending_machine_04.rmdl", < -139.4000, 5619.1000, 269.5000 >, < -90, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl", < 100, 5511.4000, 620.0352 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 661.9993, 5736.8760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/wall_city_pillar_concrete_01.rmdl", < -577.6000, 5792.2000, 658 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_128x64_01.rmdl", < -1487.3610, 5736.5760, 1290.1230 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl", < -103.7000, 5798.2000, 592.1000 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl", < 164.7000, 5511.4000, 620.0352 >, < -90, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_sand_256x128_01.rmdl", < -1297.0630, 5653.4760, 652.3000 >, < 0, -90, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/walkway_wood_plank_01.rmdl", < -174.2000, 5529.8000, 812.8000 >, < 0, 0, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 1042.1990, 5748.9760, 977.7000 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 471.2991, 5672.8760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 523.9990, 5561.7760, 669 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/walkway_wood_plank_01.rmdl", < 174.5000, 5781.5000, 812.8000 >, < 0, 0, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 375.2991, 5601.0760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_16.rmdl", < 596.2000, 3446.3000, 982 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 575.8992, 5547.5760, 315 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < -94.9009, 5767.8760, 1306 >, < 3.2017, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 384.2991, 5547.5760, 328 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/walkway_wood_plank_01.rmdl", < 48.6000, 5529.8000, 579.1000 >, < 0, 0, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/walkway_wood_plank_01.rmdl", < 48.6000, 5781.5000, 579.1000 >, < 0, 0, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 1153.2990, 5773.6760, 913.0999 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 1004.0990, 5557.7760, 1789.9000 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 962.9990, 5764.3760, 1606 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < 456.4990, 5544.9760, 324 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -1338.0610, 5557.8010, 1458.1230 >, < -90, 179.8197, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 616.4990, 5601.0760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/walkway_wood_plank_01.rmdl", < 2.7000, 5529.8000, 660 >, < 0, 0, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 616.4990, 5672.8760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 1042.1990, 5653.3760, 876.7000 >, < 0, -90, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_green_large_02.rmdl", < 711.0991, 5601.0760, 659 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < -588.5054, 5554.5760, 1334.1930 >, < 3.2017, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 1153.2990, 5533.4760, 272 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/wall_city_pillar_concrete_01.rmdl", < -594.4000, 5792.2000, 658 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl", < 401.0991, 5768.5760, 1279 >, < 3.2017, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < -952.5527, 5764.3760, 1115.2270 >, < 5.1187, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -1296.5630, 5653.4000, 626.1001 >, < 0, 89.8196, 90 >, true, 50000, -1, 1 ) +} + +void function SpawnDuckHuntMap2() +{ + //Jumppads + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 2194.0010, 5667.7450, 1239.2830 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 2848, 5668.7450, 1400.2830 >, < 0, 0.0602, 180 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 2736, 5667.7450, 1239.2830 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 2626, 5667.7450, 1400.2830 >, < 0, 0.0602, 180 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 2035.0010, 5667.7450, 1400.2830 >, < 0, 0.0602, 180 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 2088.0010, 5667.7450, 1400.2830 >, < 0, 0.0602, 180 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 2358.0010, 5667.7450, 1400.2830 >, < 0, 0.0602, 180 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 2194.0010, 5667.7450, 1400.2830 >, < 0, 0.0602, 180 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 2303.0010, 5667.7450, 1239.2830 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 1929.0010, 5667.7450, 1400.2830 >, < 0, 0.0602, 180 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 2790, 5668.7450, 1400.2830 >, < 0, 0.0602, 180 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 2680, 5667.7450, 1239.2830 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 2736, 5667.7450, 1400.2830 >, < 0, 0.0602, 180 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 2463, 5667.7450, 1239.2830 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 2249.0010, 5667.7450, 1239.2830 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 2790, 5668.7450, 1239.2830 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 1983.0010, 5667.7450, 1400.2830 >, < 0, 0.0602, 180 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 1876.0010, 5667.7450, 1239.2830 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 1929.0010, 5667.7450, 1239.2830 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < -749.8249, 5768.6020, 1801.9420 >, < -20, 0, 0 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 2142.0010, 5667.7450, 1400.2830 >, < 0, 0.0602, 180 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 2463, 5667.7450, 1400.2830 >, < 0, 0.0602, 180 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 2358.0010, 5667.7450, 1239.2830 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 2249.0010, 5667.7450, 1400.2830 >, < 0, 0.0602, 180 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 2680, 5667.7450, 1400.2830 >, < 0, 0.0602, 180 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < -749.8249, 5580.6020, 1801.9420 >, < -20, 0, 0 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 2848, 5668.7450, 1239.2830 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < -749.8249, 5707.6020, 1801.9420 >, < -20, 0, 0 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 2303.0010, 5667.7450, 1400.2830 >, < 0, 0.0602, 180 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 2571, 5667.7450, 1400.2830 >, < 0, 0.0602, 180 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 2142.0010, 5667.7450, 1239.2830 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 2626, 5667.7450, 1239.2830 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 1876.0010, 5667.7450, 1400.2830 >, < 0, 0.0602, 180 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 1983.0010, 5667.7450, 1239.2830 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 2412, 5667.7450, 1400.2830 >, < 0, 0.0602, 180 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 2518, 5667.7450, 1239.2830 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 2518, 5667.7450, 1400.2830 >, < 0, 0.0602, 180 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 2412, 5667.7450, 1239.2830 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 2571, 5667.7450, 1239.2830 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 2088.0010, 5667.7450, 1239.2830 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < -749.8249, 5644.6020, 1801.9420 >, < -20, 0, 0 >, true, 50000, -1, 1 ) ) + JumpPad_CreatedCallback( MapEditor_CreateProp( $"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 2035.0010, 5667.7450, 1239.2830 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) ) + + //Weapon Racks + MapEditor_CreateRespawnableWeaponRack( < 450, 3401, 1000 >, < 0, 90, 0 >, "mp_weapon_dmr", 0 ) + MapEditor_CreateRespawnableWeaponRack( < -150, 3401, 1000 >, < 0, 90, 0 >, "mp_weapon_g2", 0 ) + MapEditor_CreateRespawnableWeaponRack( < 330, 3401, 1000 >, < 0, 90, 0 >, "mp_weapon_dmr", 0 ) + MapEditor_CreateRespawnableWeaponRack( < -180, 3401, 1000 >, < 0, 90, 0 >, "mp_weapon_doubletake", 0 ) + MapEditor_CreateRespawnableWeaponRack( < 360, 3401, 1000 >, < 0, 90, 0 >, "mp_weapon_defender", 0 ) + MapEditor_CreateRespawnableWeaponRack( < -240, 3401, 1000 >, < 0, 90, 0 >, "mp_weapon_g2", 0 ) + MapEditor_CreateRespawnableWeaponRack( < 480, 3401, 1000 >, < 0, 90, 0 >, "mp_weapon_sniper", 0 ) + MapEditor_CreateRespawnableWeaponRack( < -210, 3401, 1000 >, < 0, 90, 0 >, "mp_weapon_doubletake", 0 ) + MapEditor_CreateRespawnableWeaponRack( < -270, 3401, 1000 >, < 0, 90, 0 >, "mp_weapon_rspn101", 0 ) + MapEditor_CreateRespawnableWeaponRack( < -68.4000, 2104.6000, 1662.2000 >, < 0, 0, 0 >, "mp_weapon_sniper", 0 ) + MapEditor_CreateRespawnableWeaponRack( < 300, 3401, 1000 >, < 0, 90, 0 >, "mp_weapon_sniper", 0 ) + MapEditor_CreateRespawnableWeaponRack( < 390, 3401, 1000 >, < 0, 90, 0 >, "mp_weapon_defender", 0 ) + MapEditor_CreateRespawnableWeaponRack( < 420, 3401, 1000 >, < 0, 90, 0 >, "mp_weapon_wingman", 0 ) + + //VerticalZipLines + MapEditor_CreateZiplineFromUnity( < 3359.5000, 5737.7490, 1459.2830 >, < 0, 0, 0 >, < 3359.5000, 5737.7490, 725 >, < 0, 0, 0 >, true, -1, 1, 2, 1, 1, 0, 1, 50, 25, false, 1, false, 0, 0, [ ], [ ], [ ], 32, 60, 0 ) + MapEditor_CreateZiplineFromUnity( < 972.6746, 5628.7810, 138.2831 >, < 0, 0, 0 >, < 972.6746, 5628.7810, -566 >, < 0, 0, 0 >, true, -1, 1, 2, 1, 1, 0, 1, 50, 25, false, 1, false, 0, 0, [ ], [ ], [ ], 32, 60, 0 ) + MapEditor_CreateZiplineFromUnity( < 2797.5830, 5631.2960, 424.2831 >, < 0, 0, 0 >, < 2797.5830, 5631.2960, 91 >, < 0, 0, 0 >, true, -1, 1, 2, 1, 1, 0, 1, 50, 25, false, 1, false, 0, 0, [ ], [ ], [ ], 32, 60, 0 ) + MapEditor_CreateZiplineFromUnity( < 273.6747, 5628.7810, 138.2831 >, < 0, 0, 0 >, < 273.6747, 5628.7810, -566 >, < 0, 0, 0 >, true, -1, 1, 2, 1, 1, 0, 1, 50, 25, false, 1, false, 0, 0, [ ], [ ], [ ], 32, 60, 0 ) + MapEditor_CreateZiplineFromUnity( < 2840.1460, 5662.2960, 2771.0450 >, < 0, 0, 0 >, < 2840.1460, 5662.2960, 1914 >, < 0, 0, 0 >, true, -1, 1, 2, 1, 1, 0, 1, 50, 25, false, 1, false, 0, 0, [ ], [ ], [ ], 32, 60, 0 ) + MapEditor_CreateZiplineFromUnity( < -2689.6150, 5729.7410, 955.2831 >, < 0, 0, 0 >, < -2689.6150, 5729.7410, 216 >, < 0, 0, 0 >, true, -1, 1, 2, 1, 1, 0, 1, 50, 25, false, 1, false, 0, 0, [ ], [ ], [ ], 32, 60, 0 ) + MapEditor_CreateZiplineFromUnity( < 2454.5780, 5630.9370, 504.2831 >, < 0, 0, 0 >, < 2454.5780, 5630.9370, 156 >, < 0, 0, 0 >, true, -1, 1, 2, 1, 1, 0, 1, 50, 25, false, 1, false, 0, 0, [ ], [ ], [ ], 32, 60, 0 ) + MapEditor_CreateZiplineFromUnity( < 615.6747, 5628.7810, 138.2831 >, < 0, 0, 0 >, < 615.6747, 5628.7810, -566 >, < 0, 0, 0 >, true, -1, 1, 2, 1, 1, 0, 1, 50, 25, false, 1, false, 0, 0, [ ], [ ], [ ], 32, 60, 0 ) + MapEditor_CreateZiplineFromUnity( < 2627.5850, 5631.1180, 469.2831 >, < 0, 0, 0 >, < 2627.5850, 5631.1180, 112 >, < 0, 0, 0 >, true, -1, 1, 2, 1, 1, 0, 1, 50, 25, false, 1, false, 0, 0, [ ], [ ], [ ], 32, 60, 0 ) + MapEditor_CreateZiplineFromUnity( < -2689.6150, 5729.7410, 1975.0140 >, < 0, 0, 0 >, < -2689.6150, 5729.7410, 1237 >, < 0, 0, 0 >, true, -1, 1, 2, 1, 1, 0, 1, 50, 25, false, 1, false, 0, 0, [ ], [ ], [ ], 32, 60, 0 ) + MapEditor_CreateZiplineFromUnity( < 3374.6680, 5766.9900, 317.6831 >, < 0, 0, 0 >, < 3374.6680, 5766.9900, -440 >, < 0, 0, 0 >, true, -1, 1, 2, 1, 1, 0, 1, 50, 25, false, 1, false, 0, 0, [ ], [ ], [ ], 32, 60, 0 ) + + //NonVerticalZipLines + MapEditor_CreateZiplineFromUnity( < 1816.4720, 5731.1870, 358.2831 >, < 0, -179.9398, 0 >, < -250.5374, 5738.6160, 450.2831 >, < 0, -179.9398, 0 >, false, -1, 1, 2, 1, 1, 0, 1, 150, 150, false, 0, false, 0, 0, [ ], [ ], [ ], 32, 60, 0 ) + + //Props + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x128_05.rmdl", < -2081, 5509, -274 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/rocks/thunderdome_quarry_block_01_orange.rmdl", < -1731, 5524, -354 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x32_01.rmdl", < 511, 5574, 1370.1000 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 3182.1650, 5765.9920, 279.1830 >, < -90, 0.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 2783.4430, 5741.7450, 741.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 3267.4880, 5538.7450, 983.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/barriers/concrete/concrete_barrier_01.rmdl", < 1860.4430, 5784.7450, 728.2831 >, < 0, 90.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_16.rmdl", < -494.9000, 3378.3000, 982 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 2879.4430, 5567.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_16.rmdl", < 404.4000, 3378.3000, 982 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 849.5081, 3638.2000, 982 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1517.5300, 5807, 828.4502 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < -303, 3378.3000, 982 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 145.4431, 5586.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -2493, 5665.7450, 1484.4170 >, < 0, 90.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/vending_machine_03.rmdl", < -104.6001, 5514.4710, -271.3169 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/imc_base/imc_fan_large_case_01.rmdl", < 712.0005, 5791.5310, 1243.1290 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < -490.5569, 5755.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/levels_terrain/mp_rr_desertlands/desertlands_z12_mid_platform_01.rmdl", < 595, 3570, 1000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -2728.3530, 5665.8180, 475.2831 >, < 0, 90.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_frame_256_01.rmdl", < -657.5870, 5787.3910, -287.0169 >, < 90, 90.0602, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < -119.5569, 5655.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2999.9850, 5700.9810, 1344.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < -568.5569, 5581.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_frame_256_01.rmdl", < -748.8925, 5791.8960, -285.6169 >, < -90, -89.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 251.4431, 5768.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 2415.4430, 5741.7450, 741.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1971.6300, 5536.7000, 731.5502 >, < 0, -90, -70 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 645.4431, 5693.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 3267.4880, 5538.7450, 728.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -2728.3530, 5665.8180, 1227.7270 >, < 0, 90.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -2358.5570, 5541, 1234.2830 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x32_01.rmdl", < 957.0005, 5574, 1370.1000 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 2926.4430, 5593.7450, 741.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 3002.4430, 5745.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2345.4430, 5700.9810, 1289.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < -490.5569, 5581.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/barriers/concrete/concrete_barrier_01.rmdl", < 1861.4430, 5557.7450, 728.2831 >, < 0, 90.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 353.4431, 5646.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 964.4431, 5545, 1234.2830 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2084.4430, 5700.9810, 1289.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/barriers/concrete/concrete_barrier_fence_tarp_128.rmdl", < 2701.7250, 5784.4140, -413.7169 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 2573.4430, 5593.7450, 741.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/imc_base/imc_fan_large_case_01.rmdl", < 1229, 5791.5310, 1243.1290 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < -310.5569, 5666.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < 19.4431, 5758.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 81.6000, 3762, 982 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_16.rmdl", < 657.6000, 3762, 982 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 2.4431, 5703.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -1504.3290, 5768, 826.5765 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -2611.5570, 5802.7450, 1740.4170 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1971.6300, 5772, 731.5502 >, < 0, -90, -70 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 144.4431, 5768.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/barriers/concrete/concrete_barrier_fence_tarp_128.rmdl", < 2898.2570, 5560.0210, -413.7169 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_frame_256_01.rmdl", < -657.1298, 5542.1910, -285.6169 >, < -90, 90.0602, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2897.2920, 5623.8200, -242.5169 >, < 90, 90.0602, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2215.4430, 5700.9810, 1289.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -1253.3290, 5768, 826.5765 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < -568.5569, 5755.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < -50.5569, 5703.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_small_orange_01.rmdl", < 1803.4430, 5605.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < -817.5569, 5581.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -2611.5570, 5802.7450, 730.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2606.4430, 5700.9810, 1289.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 595.6000, 3378.3000, 982 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 410.4431, 5693.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 1944.5370, 5531.6750, 199.1831 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 100.4431, 5703.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_swampland_branch_large_03.rmdl", < -688.5569, 5648.7450, 766.2831 >, < 0, 97.6372, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2345.4430, 5627.9810, 1398.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1800.3290, 5807, 792.5507 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/zipline_arm.rmdl", < 3355.4430, 5792.7450, 1471.2830 >, < 0, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 3292.3240, 5808.7340, -413.7169 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -1589, 5544, 1725.9850 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -1905.3290, 5536, 752.5765 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_64.rmdl", < -211.1000, 3378.3000, 982 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 2969.4430, 5772.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 276.6000, 3130.5000, 982 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -312.5569, 5543, 1234.2830 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 3157.4430, 5765.7450, 1421.2830 >, < -90, 0.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/eden_tree_dry_03.rmdl", < 328.4431, 5769.7450, 761.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 725.6000, 3762, 982 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1971.6300, 5536.7000, 887.9569 >, < 0, -90, -70 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 2879.4430, 5772.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 2844.4430, 5696.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 2774.4430, 5772.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1320.0290, 5807, 828.4502 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 276.6000, 2634.7000, 982 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/weapons_r5/misc_bangalore_rockets/bangalore_rockets_projectile.rmdl", < 567.4431, 5673.7450, 740.2831 >, < 65.8152, 6.2448, -123.2528 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/vending_machine_03.rmdl", < 2717, 5548.6370, 758.4000 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_small_orange_01.rmdl", < 1803.4430, 5667.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_green_forest_01.rmdl", < -2174.5570, 5700.7450, 727.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < -148.5569, 5586.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 297.4431, 5656.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/domestic/nessy_doll.rmdl", < -2708.9300, 5656.4000, -413.4498 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 3010.4430, 5567.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 63.4431, 5656.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < -648.5569, 5581.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 3002.4430, 5578.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -2499.8550, 5569.7580, 282.8831 >, < -90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 2674.4430, 5577.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -2738.4540, 5665.8080, 225.6831 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 2671.4430, 5593.7450, 741.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/barriers/concrete/concrete_barrier_01.rmdl", < 1988.4430, 5784.7450, 728.2831 >, < 0, 90.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 3011.4430, 5533, 729.2831 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_small_orange_01.rmdl", < 2268.4430, 5667.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 3181.7200, 5575.6920, -222.3169 >, < -90, 0.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 1988.4430, 5532, 729.2831 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_swampland_branch_large_03.rmdl", < -743.5569, 5755.7450, 766.2831 >, < 0, -77.3676, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 48.4431, 5703.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < -64.5569, 5655.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 48.4431, 5586.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 2413.4430, 5577.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 451.4431, 5703.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/barriers/concrete/concrete_barrier_fence_tarp_128.rmdl", < 2701.8570, 5655.8150, -413.7169 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -2738.4540, 5665.8080, -167.9169 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 2578.4430, 5566.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2897.4300, 5492.4190, -242.5169 >, < 90, 90.0602, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2083.4430, 5627.9810, 1398.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 1731.4430, 5545, 1234.2830 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_small_orange_01.rmdl", < 2195.4430, 5734.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -1574.3290, 5768, 826.5765 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_swampland_branch_large_03.rmdl", < -295.5569, 5643.7450, 766.2831 >, < 0, 53.3107, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 2415.4430, 5593.7450, 741.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1217.7300, 5772, 828.4502 >, < 0, -90, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < 189.4431, 5759.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_small_orange_01.rmdl", < 2124.4430, 5734.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_corner_in.rmdl", < -683, 3378.3000, 982 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 2927.4430, 5567.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 3292.3240, 5808.7340, 96.4831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/levels_terrain/mp_rr_desertlands/desertlands_z12_mid_platform_01.rmdl", < 84, 3570, 1000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < -65.5569, 5758.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 329.9000, 3762, 982 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -2611.4740, 5802.5410, -415.1169 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_small_orange_01.rmdl", < 2046.4430, 5667.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x256_01.rmdl", < -1577.8300, 5835.7000, 229.5144 >, < -87.7888, 180, 90.1798 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_frame_256_01.rmdl", < -743.3306, 5542, -287.0169 >, < 90, -89.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1906.3290, 5807, 751.5507 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1004.3290, 5807, 751.5507 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 48.4431, 5768.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_fir_large_04.rmdl", < -2074.5570, 5541.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_swampland_branch_large_03.rmdl", < -814.5569, 5657.7450, 766.2831 >, < 0, -77.3676, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x256_01.rmdl", < -1096.1890, 5437.7000, 248.1139 >, < -87.7887, -180, 63.9087 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 0.4431, 5735.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 550.4431, 5704.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -2499.8550, 5569.7580, 1291.3270 >, < -90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1120.3290, 5807, 792.5507 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/eden_tree_dry_03.rmdl", < -2006.5570, 5557.7450, 763.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/props/death_box/death_box_01.rmdl", < -1455.1190, 5722.6550, -432.2169 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < -897.5569, 5581.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/weapons_r5/misc_bangalore_rockets/bangalore_rockets_projectile.rmdl", < 702.4431, 5770.7450, 739.2831 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 2728.4430, 5593.7450, 741.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1445.9300, 5807, 828.4502 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/props/death_box/death_box_01.rmdl", < -1304.7190, 5722.8130, -432.2169 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 2983.4430, 5593.7450, 741.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 2583.4430, 5745.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_thin_forest_01.rmdl", < 2844.0580, 5557.7450, 720.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2084.4430, 5700.9810, 1344.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_corner_in.rmdl", < 849.3000, 3762, 982 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < -103.5569, 5703.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/construction_bldg_platform_01.rmdl", < 1375.7220, 5493.2620, -413.7169 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/weapons_r5/misc_bangalore_rockets/bangalore_rockets_projectile.rmdl", < 456.4431, 5596.7450, 740.2831 >, < 66.3982, -63.8358, 93.0419 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -1157.3290, 5536, 798.5765 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < -119.5569, 5610.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_green_forest_01.rmdl", < -2092.5570, 5621.7450, 727.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < -107, 2634.7000, 982 >, < 0, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -2738.5570, 5665.7450, 1984.2730 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 1220.4430, 5545, 1234.2830 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x128_05.rmdl", < 2609, 5647.2210, 1410 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 773.4431, 5611.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 2497.4430, 5577.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < -568.5569, 5666.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < -64.5569, 5692.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 2783.4430, 5593.7450, 741.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 356.4431, 5656.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/zipline_arm.rmdl", < 1027.6700, 5632.8390, 150.2831 >, < 0, 90.0602, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1193.3290, 5807, 818.5507 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -56.5569, 5544, 1234.2830 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -2500.0540, 5760.0570, 282.8831 >, < -90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < -103.5569, 5768.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < -561, 3762, 982 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < -310.5569, 5581.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_sand_256x128_01.rmdl", < -2610.5570, 5671.7450, 1727.2730 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -2499.5570, 5569.7450, 914.2831 >, < -90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/containers/box_shrinkwrapped.rmdl", < 232.2000, 2290.4000, 1000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 2.4431, 5768.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/levels_terrain/mp_rr_desertlands/desertlands_z12_mid_platform_01.rmdl", < 85.2000, 2611.2000, 1000 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < -817.5569, 5666.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -2611.4740, 5802.5410, 219.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/imc_base/imc_fan_large_case_01.rmdl", < -308.9995, 5791.5310, 1243.1290 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -736, 5610, 1796.6110 >, < 0, -90, 20 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -2611.5570, 5532.7450, 1737.4170 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_small_orange_01.rmdl", < 2338.4430, 5667.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 3084.4430, 5696.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/weapons_r5/misc_bangalore_rockets/bangalore_rockets_projectile.rmdl", < 620.4431, 5704.7450, 740.2831 >, < 72.1832, -38.2299, 150.8456 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x256_01.rmdl", < -656.5164, 5542.7000, 265.0927 >, < -87.7885, -180, 114.8801 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/zipline_arm.rmdl", < 2852.5790, 5635.3540, 436.2831 >, < 0, 90.0602, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/props/death_box/death_box_01.rmdl", < -1277.0200, 5722.8410, -432.2169 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < 620.4431, 5582.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -2485.4550, 5666.0720, 225.6831 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -2500.0540, 5760.0570, -351.5168 >, < -90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 234.4431, 5735.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 773.4431, 5656.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < -148.5569, 5768.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/containers/box_shrinkwrapped.rmdl", < 35, 2290.4000, 1000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_swampland_branch_large_03.rmdl", < -447.5569, 5642.7450, 766.2831 >, < 0, 100.5432, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 1823.9850, 5700.9810, 1398.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 2492, 5545, 1912.3000 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -1316.3290, 5536, 826.5765 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/imc_base/imc_fan_large_case_01.rmdl", < 64.7777, 9187, 1704.5970 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/vending_machine_03.rmdl", < 617.5000, 5548.6370, 806 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 2758.4430, 5696.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 1952.9850, 5627.9810, 1344.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_thin_forest_01.rmdl", < 460.4431, 5557.7450, 720.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 2244.4430, 5532, 729.2831 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 709.4431, 5769.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 645.4431, 5736.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 2926.4430, 5741.7450, 741.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 3181.7200, 5575.6920, -350.1169 >, < -90, 0.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 3002.4430, 5639.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -2499.5570, 5759.7450, 1795.2730 >, < -90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < -42.4000, 3762, 982 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 3182.1650, 5765.9920, -222.3169 >, < -90, 0.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2738.4430, 5627.9810, 1398.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < -107, 2758.4000, 982 >, < 0, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 1952.9850, 5627.9810, 1289.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/props/death_box/death_box_01.rmdl", < -1577.0200, 5722.5260, -432.2169 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 297.4431, 5735.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2476.4430, 5627.9810, 1289.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 656.4431, 5587.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 538.4431, 5693.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 3412.4410, 5672.2590, 96.4831 >, < 0, 90.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_small_orange_01.rmdl", < 1961.4430, 5667.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2869.4430, 5700.9810, 1344.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < -103.5569, 5586.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 0.4431, 5655.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/vending_machine_03.rmdl", < -1233, 5428.1000, 370.6000 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_swampland_branch_large_03.rmdl", < -577.5569, 5650.7450, 766.2831 >, < 0, -155.6404, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 2500.4430, 5566.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < -290.4000, 3762, 982 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x32_01.rmdl", < -55.9995, 5574, 1370.1000 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_64.rmdl", < 368.4000, 3378.3000, 982 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 2500.4430, 5772.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -966.0744, 5536.7000, 890.9579 >, < 0, -90, 70 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 2916.4430, 5696.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_small_orange_01.rmdl", < 2196.4430, 5605.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_small_orange_01.rmdl", < 2046.4430, 5734.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 2458.4430, 5566.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/levels_terrain/mp_rr_desertlands/desertlands_z12_outer_circle_platform_01.rmdl", < 84, 2097.9000, 1662 >, < 0, -172.9516, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 234.4431, 5610.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -2488.5580, 5666.0690, 471.2831 >, < 0, 90.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 2745, 5545, 1912.3000 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2999.9850, 5700.9810, 1398.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -2356, 5543, 1725.9850 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2345.4430, 5700.9810, 1344.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < -406.5569, 5666.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_frame_256_01.rmdl", < -402.5874, 5787.6590, -287.0169 >, < 90, 90.0602, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -2499.5570, 5569.7450, 1795.2730 >, < -90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 145.4431, 5703.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_thin_forest_01.rmdl", < 2480.0580, 5763.7450, 720.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2214.4430, 5627.9810, 1344.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 3412.4410, 5672.2590, -158.7169 >, < 0, 90.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/construction_bldg_platform_03.rmdl", < -198.2749, 5489.8720, -357.7169 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/vending_machine_03.rmdl", < 2296, 5548.6370, 806 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -2728.3530, 5665.8180, -415.1169 >, < 0, 90.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2738.4430, 5700.9810, 1344.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 2916.4430, 5639.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 3033.5420, 5552, 89.5831 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/vehicles_r5/land/msc_truck_mod_lrg/veh_land_msc_truck_mod_police_lrg_01_closed_static.rmdl", < 998.4431, 5609.7450, 686.2831 >, < 0, 0.0602, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1472.6300, 5807, 828.4502 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 2691.4430, 5566.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x256_01.rmdl", < -1453.9220, 5652.7000, 234.2993 >, < -87.7888, -180, 123.2676 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -1079, 5545, 1725.9850 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -949.4296, 5772, 731.5502 >, < 0, -90, 70 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 3181.9450, 5672.5920, 246.9830 >, < 0, -89.9399, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 198.4431, 5586.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_512x352_01.rmdl", < -2090.8130, 5496.4340, -406.9169 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x32_01.rmdl", < -2301.7270, 5540.6650, 849.5507 >, < 0, -179.9399, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/vending_machine_03.rmdl", < -423.3369, 5548.6370, 329.1831 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -2738.4540, 5665.8080, 1234.1270 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x256_01.rmdl", < -1868.5740, 5835.7000, 217.2859 >, < -87.7888, 180, 90.1798 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/zipline_arm.rmdl", < 328.6705, 5632.8390, 150.2831 >, < 0, 90.0602, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_128x352_03.rmdl", < -382.7583, 5664.5800, -413.7169 >, < 0, 90.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 2613.4430, 5772.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 3157.4430, 5672.7450, 1452.2830 >, < 0, -89.9399, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 3267.4430, 5808.7450, 728.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_fir_large_04.rmdl", < 1921.4430, 5568.7450, 725.2336 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -1316.3290, 5768, 826.5765 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_small_orange_01.rmdl", < 1881.4430, 5605.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_thin_forest_01.rmdl", < 3045.0580, 5557.7450, 720.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1415.1300, 5536.7000, 828.4502 >, < 0, -90, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 3082.4430, 5772.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 1953.9850, 5700.9810, 1344.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 2774.4430, 5567.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -1970.3290, 5536, 735.5765 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 3157.4430, 5765.7450, 919.2831 >, < -90, 0.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 550.4431, 5646.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 1953.9850, 5700.9810, 1289.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_small_orange_01.rmdl", < 1961.4430, 5734.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_swampland_branch_large_03.rmdl", < -617.5569, 5746.7450, 766.2831 >, < 0, 97.6372, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_sand_256x128_01.rmdl", < 3163.1370, 5677.5990, 89.9831 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_small_orange_01.rmdl", < 1649.4430, 5666.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/traffic_barrel_01.rmdl", < 1116.7220, 5797, 1910.4690 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 3047.4430, 5772.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2869.4430, 5700.9810, 1289.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x32_01.rmdl", < 2112, 5574, 2051 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 1823.9850, 5700.9810, 1344.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 3157.4430, 5765.7450, 1293.2830 >, < -90, 0.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/barriers/concrete/concrete_barrier_01.rmdl", < 1728.4430, 5784.7450, 728.2831 >, < 0, 90.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < -817.5569, 5755.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1623.4300, 5807, 828.4502 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -515.4623, 5668.1400, 296.2831 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -2500.0540, 5760.0570, -223.7169 >, < -90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_small_orange_01.rmdl", < 1881.4430, 5667.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 763.4431, 5769.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2345.4430, 5627.9810, 1344.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < -166.4000, 3762, 982 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -2728.5570, 5665.7450, 1740.4170 >, < 0, 90.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 645.4431, 5611.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_swampland_branch_large_03.rmdl", < -224.5569, 5561.7450, 766.2831 >, < 0, 53.3107, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < 702.4431, 5759.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 1823.9850, 5700.9810, 1289.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 3008.4430, 5547, 1234.2830 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 2758.4430, 5745.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/levels_terrain/mp_rr_desertlands/desertlands_z12_outer_circle_platform_01.rmdl", < 3291, 5665, 2149.9570 >, < 0, -172.9516, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/vending_machine_03.rmdl", < 2134.9620, 5551.3200, 233.2831 >, < 0, 90.0602, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 656.4431, 5769.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/construction_bldg_platform_01.rmdl", < -2738.2710, 5488.9430, -413.7169 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -2611.1940, 5532.6410, 216.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_fir_large_04.rmdl", < 1785.4430, 5771.7450, 725.2336 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/vending_machine_03.rmdl", < -1233, 5428.1000, 314.7999 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_swampland_branch_large_03.rmdl", < -376.5569, 5740.7450, 766.2831 >, < 0, 100.5432, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -962.3291, 5536, 730.5765 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2606.4430, 5700.9810, 1398.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_small_orange_01.rmdl", < 2268.4430, 5735.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 2413.4430, 5566.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 3266.6690, 5533, 729.2831 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2738.4430, 5627.9810, 1289.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 590.4431, 5693.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 3157.4430, 5672.7450, 1389.2830 >, < 0, -89.9399, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1231.6290, 5807, 828.4502 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -2499.9530, 5663.1570, -257.9169 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x128_05.rmdl", < 2861, 5647.2210, 1410 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < -64.5569, 5735.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/construction_bldg_platform_05_corner.rmdl", < 2207.1760, 6014.8400, -163.8169 >, < -45, 90.0601, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1255.0290, 5807, 828.4502 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 2674.4430, 5745.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_fir_large_04.rmdl", < 2177.4430, 5772.7450, 725.2336 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x128_02.rmdl", < 2705.7760, 5448.2010, 253.2831 >, < 0, -179.9399, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x256_01.rmdl", < -2243.2950, 5743, 202.8154 >, < -87.7887, -180, -26.1251 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1238.3300, 5536.7000, 987.5507 >, < 0, -90, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 197.4431, 5703.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 0.4431, 5692.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 0.4431, 5610.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < -897.5569, 5666.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 234.4431, 5693.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1217.7300, 5536.7000, 828.4502 >, < 0, -90, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < 108.4431, 5582.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 3412.4410, 5672.2590, -413.7169 >, < 0, 90.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 2691.4430, 5772.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/eden_tree_dry_03.rmdl", < 582.4431, 5769.7450, 761.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 3292.6060, 5538.8340, -413.7169 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2083.4430, 5627.9810, 1344.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2607.4430, 5627.9810, 1344.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/vending_machine_03.rmdl", < -942.9000, 5548.6370, 758.4000 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2476.4430, 5627.9810, 1344.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 710.4431, 5611.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -966.0744, 5772, 890.9579 >, < 0, -90, 70 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_swampland_branch_large_03.rmdl", < -506.5569, 5749.7450, 766.2831 >, < 0, -155.6404, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 63.4431, 5610.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 773.4431, 5736.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 356.4431, 5611.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_512x352_01.rmdl", < -2091.1670, 5834.3870, -406.9169 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < -64.5569, 5610.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 2734.4430, 5567.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -2500.0540, 5760.0570, 410.6830 >, < -90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 3010.4430, 5772.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -1643.3290, 5536, 826.5765 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < -119.5569, 5692.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2738.4430, 5700.9810, 1398.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 451.4431, 5586.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/barriers/concrete/concrete_barrier_01.rmdl", < 1729.4430, 5557.7450, 728.2831 >, < 0, 90.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < 275.4431, 5759.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 3181.7200, 5575.6920, 279.1830 >, < -90, 0.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 2527.4430, 5593.7450, 741.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 3181.9450, 5672.5920, 310.4830 >, < 0, -89.9399, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 472.2000, 3378.3000, 982 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 1822.9850, 5627.9810, 1289.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/zipline_arm.rmdl", < 2844.2030, 5607.3000, 2783.0450 >, < 0, 0.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1041.3290, 5807, 764.5507 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 504.4431, 5703.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < -107, 3130.5000, 982 >, < 0, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/construction_bldg_platform_01.rmdl", < -1094.4770, 5490.6680, -413.7169 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_small_orange_01.rmdl", < 2125.4430, 5605.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/vending_machine_03.rmdl", < -942.9000, 5548.6370, 806 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/weapons_r5/misc_bangalore_rockets/bangalore_rockets_projectile.rmdl", < 745.4431, 5714.7450, 740.2831 >, < 71.2416, -133.6566, 32.7992 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 48.4431, 5646.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -310.5569, 5529, 729.2831 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/imc_base/imc_fan_large_case_01.rmdl", < 206.0005, 5791.5310, 1243.1290 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_small_orange_01.rmdl", < 1803.4430, 5734.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -2499.5570, 5569.7450, 1922.2730 >, < -90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_small_orange_01.rmdl", < 1961.4430, 5605.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 296.4431, 5768.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 577.7000, 3762, 982 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 3084.4430, 5745.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -2499.5570, 5759.7450, 787.2831 >, < -90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 114.4431, 5610.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 504.4431, 5646.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -2099.5570, 5527, 729.2831 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2084.4430, 5700.9810, 1398.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 2583.4430, 5695.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_512x128_01.rmdl", < -1377, 5345.3750, 1371 >, < -90, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1495.9300, 5807, 828.4502 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2215.4430, 5700.9810, 1398.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 808.4431, 5587.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1415.1300, 5772, 987.5507 >, < 0, -90, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -1709.3290, 5768, 826.5765 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/vending_machine_03.rmdl", < -1765, 5682, 244 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_thin_forest_01.rmdl", < 459.4431, 5763.7450, 720.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/containers/box_shrinkwrapped.rmdl", < -63.6000, 2290.4000, 1000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 2.4431, 5586.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2998.9850, 5627.9810, 1398.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_thin_forest_01.rmdl", < -105.5569, 5762.7450, 720.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_swampland_branch_large_03.rmdl", < -847.5569, 5578.7450, 766.2831 >, < 0, 137.2197, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 727.6000, 3378.3000, 982 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1600.0300, 5807, 828.4502 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 2886.4430, 5593.7450, 741.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 709.4431, 5587.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2738.4430, 5627.9810, 1344.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_512x128_01.rmdl", < -1329, 5416, 439.3751 >, < -90, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_frame_256_01.rmdl", < -402.1304, 5542.4590, -285.6169 >, < -90, 90.0602, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2345.4430, 5627.9810, 1289.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_thin_forest_01.rmdl", < 723.4431, 5763.7450, 720.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 3292.6060, 5538.8340, 96.4831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 3038.4430, 5593.7450, 741.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < -50.5569, 5646.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/weapons_r5/misc_bangalore_rockets/bangalore_rockets_projectile.rmdl", < 32.4431, 5714.7450, 739.2831 >, < 76.6818, -124.8190, 132.5285 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1415.1300, 5772, 828.4502 >, < 0, -90, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_fir_large_04.rmdl", < 1921.4430, 5771.7450, 725.2336 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -1574.3290, 5536, 826.5765 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 3115.4430, 5567.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_small_orange_01.rmdl", < 2124.4430, 5667.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/props/death_box/death_box_01.rmdl", < -1427.4200, 5722.6830, -432.2169 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 2540.4430, 5772.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < 445.4431, 5582.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < -51.5569, 5768.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/barriers/concrete/concrete_barrier_01.rmdl", < 2109.4430, 5784.7450, 728.2831 >, < 0, 90.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 353.4431, 5703.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 3148.4430, 5671.7450, 983.2831 >, < 0, 90.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 709.4431, 5544, 1234.2830 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/barriers/concrete/concrete_barrier_01.rmdl", < 2234.4430, 5784.7450, 728.2831 >, < 0, 90.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < -107, 3254.5000, 982 >, < 0, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -54.5569, 5530, 729.2831 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_swampland_branch_large_03.rmdl", < -376.5569, 5559.7450, 766.2831 >, < 0, 100.5432, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 2573.4430, 5741.7450, 741.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/levels_terrain/mp_rr_desertlands/desertlands_z12_mid_platform_01.rmdl", < -427.9000, 3570, 1000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 297.4431, 5610.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 3156.4430, 5575.7450, 1421.2830 >, < -90, 0.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -1764.3290, 5536, 797.5765 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -2728.3530, 5665.8180, 219.2831 >, < 0, 90.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2476.4430, 5700.9810, 1289.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x32_01.rmdl", < 1466, 5574, 1370 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 201.4431, 5530, 729.2831 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/weapons_r5/misc_bangalore_rockets/bangalore_rockets_projectile.rmdl", < 398.4431, 5730.7450, 739.2831 >, < 76.3893, 79.8078, -76.7103 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -1368.3290, 5768, 826.5765 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 2497.4430, 5745.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/zipline_arm.rmdl", < -305.5330, 5734.5590, 462.2831 >, < 0, -89.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/security_fence_post.rmdl", < -304.5322, 5733.7600, 302.2831 >, < 0, 0.0602, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/zipline_arm.rmdl", < 1871.4680, 5735.2440, 370.2831 >, < 0, 90.0602, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/security_fence_post.rmdl", < 1870.4670, 5736.0430, 210.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_64.rmdl", < -591.2000, 3378.3000, 982 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -1764.3290, 5768, 797.5765 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -1368.3290, 5536, 826.5765 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_small_orange_01.rmdl", < 1726.4430, 5734.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -1709.3290, 5536, 826.5765 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_thin_forest_01.rmdl", < 2844.0580, 5763.7450, 720.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2998.9850, 5627.9810, 1289.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -1643.3290, 5768, 826.5765 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -2728.5570, 5665.7450, 730.2831 >, < 0, 90.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_small_orange_01.rmdl", < 1726.4430, 5605.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -2738.5570, 5665.7450, 976.2831 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 1733.4430, 5531, 729.2831 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 2413.4430, 5745.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2607.4430, 5627.9810, 1289.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < 189.4431, 5582.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/eden_tree_dry_03.rmdl", < 21.4431, 5769.7450, 761.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 353.4431, 5586.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/weapons_r5/misc_bangalore_rockets/bangalore_rockets_projectile.rmdl", < 32.4431, 5613.7450, 739.2831 >, < 75.5924, 115.4908, 32.4101 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_frame_256_01.rmdl", < -991.2660, 5767.3730, -285.6169 >, < -90, -89.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 276.6000, 2758.4000, 982 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 2645.4430, 5566.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/eden_tree_dry_03.rmdl", < 21.4431, 5563.7450, 761.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_frame_256_01.rmdl", < -891.3293, 5541.8460, -287.0169 >, < 90, -89.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 276.6000, 2882.4000, 982 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 100.4431, 5586.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_swampland_branch_large_03.rmdl", < -224.5569, 5741.7450, 766.2831 >, < 0, 53.3107, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 3181.9450, 5672.5920, -191.0169 >, < 0, -89.9399, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 2970.4430, 5567.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 251.4431, 5703.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 398.4431, 5703.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/zipline_arm.rmdl", < -2685.5570, 5674.7450, 967.2831 >, < 0, 0.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 3292.3240, 5808.7340, -158.7169 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 476.4431, 5693.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_128x352_03.rmdl", < -979.1984, 5656.2540, -413.7169 >, < 0, 90.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/props/death_box/death_box_01.rmdl", < -1352.6890, 5596.3620, -432.2169 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 2497.4430, 5638.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -1837.3290, 5768, 773.5765 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_512x128_01.rmdl", < 276.6599, 5552.3710, 444.2131 >, < -87.5166, 0.0602, 89.9999 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 2500.4430, 5532, 729.2831 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/construction_bldg_platform_03.rmdl", < -126.2754, 5489.9480, -295.7169 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 3181.7200, 5575.6920, 151.3831 >, < -90, 0.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2215.4430, 5700.9810, 1344.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 2755.4430, 5533, 729.2831 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 451.4431, 5768.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 2847.4430, 5772.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < -148.5569, 5703.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 2413.4430, 5638.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -1157.3290, 5768, 798.5765 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -736, 5737, 1796.6110 >, < 0, -90, 20 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 297.4431, 5703.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -797, 5737, 1774.6110 >, < 0, -90, 20 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < -310.5569, 5756.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2869.4430, 5700.9810, 1398.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 198.4431, 5646.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < -65.5569, 5581.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -2499.9530, 5663.1570, 438.7831 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 276.6000, 2510.6000, 982 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_corner_out.rmdl", < -107, 3378.3000, 982 >, < 0, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -2499.5570, 5662.7450, 943.2831 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 454.4431, 5544, 1234.2830 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 197.4431, 5768.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 2645.4430, 5772.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 198.4431, 5544, 1234.2830 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 645.4431, 5656.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 2527.4430, 5741.7450, 741.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < -50.5569, 5586.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 276.6000, 3006.5000, 982 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -2499.8550, 5569.7580, 1419.1270 >, < -90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -2499.5570, 5569.7450, 787.2831 >, < -90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 710.4431, 5656.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 476.4431, 5736.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/levels_terrain/mp_rr_desertlands/desertlands_z12_mid_platform_01.rmdl", < 85.2000, 3122.3000, 1000 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 100.4431, 5768.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 2413.4430, 5695.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 2845.4430, 5578.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_corner_in.rmdl", < 849.5001, 3378.3000, 982 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 3182.1650, 5765.9920, 151.3831 >, < -90, 0.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1706.4300, 5807, 828.4502 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 3084.4430, 5741.7450, 741.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_fir_large_04.rmdl", < 1666.4430, 5771.7450, 725.2336 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_thin_forest_01.rmdl", < 2655.0580, 5557.7450, 720.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x128_05.rmdl", < 2101, 5647.2210, 1410 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/vending_machine_03.rmdl", < -423.3369, 5548.6370, 376.7831 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -2499.5570, 5662.7450, 1887.2730 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < -683, 3514.3000, 982 >, < 0, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -2355.5570, 5527, 729.2831 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -1845, 5544, 1725.9850 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_frame_256_01.rmdl", < -374.6584, 5759.7880, -287.0169 >, < 90, 90.0602, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 2886.4430, 5741.7450, 741.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -2499.8550, 5569.7580, -223.7169 >, < -90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 456.4431, 5530, 729.2831 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 169.4431, 5735.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 356.4431, 5693.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_sand_256x128_01.rmdl", < 3138.4430, 5677.7450, 1232.2830 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_fir_large_04.rmdl", < 2307.4430, 5772.7450, 725.2336 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 234.4431, 5656.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/zipline_arm.rmdl", < 2509.5740, 5634.9940, 516.2831 >, < 0, 90.0602, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_small_orange_01.rmdl", < 1726.4430, 5667.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 808.4431, 5704.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -2499.5570, 5759.7450, 1922.2730 >, < -90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < -232.5569, 5581.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/vending_machine_03.rmdl", < -1765, 5682, 299.8000 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/construction_bldg_platform_01.rmdl", < 2398.7220, 5494.3340, -413.7169 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/eden_tree_dry_03.rmdl", < 582.4431, 5564.7450, 761.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_512x128_01.rmdl", < -1923.2740, 5345.3750, 1371 >, < -90, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_small_orange_01.rmdl", < 2338.4430, 5735.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 297.4431, 5693.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 476.4431, 5611.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_thin_forest_01.rmdl", < 2655.0580, 5763.7450, 720.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 1822.9850, 5627.9810, 1398.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 3387.4880, 5671.7450, 983.2831 >, < 0, 90.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 451.4431, 5646.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2501.0240, 5492.0050, -242.5169 >, < 90, 90.0602, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_swampland_branch_large_03.rmdl", < -847.5569, 5759.7450, 766.2831 >, < 0, 137.2197, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1730.3290, 5807, 818.5507 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/indust_struct_gondola_platform_support_01.rmdl", < -1475.8900, 5502.1330, -470.7169 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -1504.3290, 5536, 826.5765 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < -107, 2882.4000, 982 >, < 0, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 276.6000, 2386.9000, 982 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/zipline_arm.rmdl", < 670.6705, 5632.8390, 150.2831 >, < 0, 90.0602, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/weapons_r5/misc_bangalore_rockets/bangalore_rockets_projectile.rmdl", < 335.4431, 5600.7450, 739.2831 >, < 76.3893, 79.8078, -76.7103 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_thin_forest_01.rmdl", < 201.4431, 5763.7450, 720.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x256_01.rmdl", < -644.5253, 5521, 265.5558 >, < -87.7888, 180, 54.2941 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 476.4431, 5656.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -2728.5570, 5665.7450, 1484.4170 >, < 0, 90.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 590.4431, 5656.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/vending_machine_03.rmdl", < 1982.0630, 5551.1600, 233.8831 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2868.4430, 5627.9810, 1398.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/indust_struct_gondola_platform_support_01.rmdl", < -1359.2390, 5835.3550, -470.7169 >, < 0, -89.9399, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 611.4431, 5768.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/vending_machine_03.rmdl", < -104.6001, 5514.4710, -223.7169 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 1475.4430, 5545, 1234.2830 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x256_01.rmdl", < -1994.4800, 5639.7000, 212.4238 >, < -87.7888, -180, 58.0512 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_green_forest_01.rmdl", < -2092.5570, 5700.7450, 727.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < -148.5569, 5646.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -828.7372, 5545, 1770.1290 >, < 20, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < 19.4431, 5582.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -2499.8550, 5569.7580, -351.5168 >, < -90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -2611.1940, 5532.6410, 472.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 145.4431, 5646.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 2758.4430, 5577.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/props/death_box/death_box_01.rmdl", < -1604.7200, 5722.4980, -432.2169 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 3267.4430, 5808.7450, 983.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 710.4431, 5693.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1681.9300, 5807, 828.4502 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < 445.4431, 5759.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2701.6920, 5718.2140, -242.5169 >, < 90, 90.0602, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1706.4300, 5807, 988.5507 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 808.4431, 5647.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x128_05.rmdl", < 1843, 5647.2210, 1410 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < -107, 2386.9000, 982 >, < 0, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/traffic_barrel_01.rmdl", < 310, 5797, 1910.4690 >, < -90, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 808.4431, 5769.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -2611.4740, 5802.5410, 1227.7270 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1157.3290, 5807, 807.5507 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_512x128_01.rmdl", < -779, 5416, 439.3751 >, < -90, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 2624.4430, 5741.7450, 741.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 3156.4430, 5575.7450, 1293.2830 >, < -90, 0.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 2829.4430, 5593.7450, 741.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2868.4430, 5627.9810, 1344.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 3047.4430, 5567.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_16.rmdl", < 645.5999, 3762, 982 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -962.3291, 5768, 730.5765 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 169.4431, 5693.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 2844.4430, 5745.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_16.rmdl", < -175.2000, 3378.3000, 982 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -1431.3290, 5768, 826.5765 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -2499.9530, 5663.1570, 1447.2270 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2738.4430, 5700.9810, 1289.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x256_01.rmdl", < -1007.2550, 5651.7000, 251.5483 >, < -87.7886, 180, 18.6337 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 2540.4430, 5566.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -1905.3290, 5768, 752.5765 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x128_02.rmdl", < 2552.7740, 5448.0400, 253.2831 >, < 0, -179.9399, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -1431.3290, 5536, 826.5765 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1971.6300, 5772, 887.9569 >, < 0, -90, -70 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/barriers/concrete/concrete_barrier_fence_tarp_128.rmdl", < 2501.5220, 5685.6050, -413.7169 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/vending_machine_03.rmdl", < 2717, 5548.6370, 806 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2701.8290, 5586.8150, -242.5169 >, < 90, 90.0602, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2606.4430, 5700.9810, 1344.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/construction_bldg_platform_03.rmdl", < 1303.7240, 5491.4480, -295.7169 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/barriers/concrete/concrete_barrier_01.rmdl", < 2110.4430, 5558.7450, 728.2831 >, < 0, 90.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 710.4431, 5736.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_small_orange_01.rmdl", < 2338.4430, 5605.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_fir_large_04.rmdl", < -2151.5570, 5541.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/vending_machine_03.rmdl", < 1325.6980, 5515.9720, -223.7169 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_64.rmdl", < -530.8000, 3378.3000, 982 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 3181.9450, 5672.5920, -254.5169 >, < 0, -89.9399, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -565.5569, 5529, 729.2831 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -949.4296, 5536.7000, 731.5502 >, < 0, -90, 70 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -2500.0540, 5760.0570, 1419.1270 >, < -90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_16.rmdl", < -481.5000, 3762, 982 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < -406.5569, 5756.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/props/death_box/death_box_01.rmdl", < -1226.8870, 5596.4930, -432.2169 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 3084.4430, 5639.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_green_forest_01.rmdl", < -2174.5570, 5621.7450, 727.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_small_orange_01.rmdl", < 1649.4430, 5734.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 411.4431, 5611.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 100.4431, 5646.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/barriers/concrete/concrete_barrier_01.rmdl", < 1988.4430, 5557.7450, 728.2831 >, < 0, 90.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < 363.4431, 5759.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/zipline_arm.rmdl", < 2682.5810, 5635.1760, 481.2831 >, < 0, 90.0602, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/barriers/concrete/concrete_barrier_fence_tarp_128.rmdl", < 2898.1250, 5686.9210, -413.7169 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 169.4431, 5610.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 2413.4430, 5772.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 3156.4430, 5575.7450, 919.2831 >, < -90, 0.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_corner_in.rmdl", < -682.3000, 3762, 982 >, < 0, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_green_forest_01.rmdl", < -2015.5570, 5621.7450, 727.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -820.5569, 5529, 729.2831 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -1837.3290, 5536, 773.5765 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 504.4431, 5768.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 3173.1400, 5672.0080, -158.7169 >, < 0, 90.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1255.0290, 5807, 988.5507 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 63.4431, 5735.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 251.4431, 5586.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -2611.4740, 5802.5410, 475.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 2734.4430, 5772.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < 787.4431, 5759.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 169.4431, 5656.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 2674.4430, 5696.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 3002.4430, 5696.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -2611.5570, 5802.7450, 1484.4170 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < -232.5569, 5666.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_thin_forest_01.rmdl", < -105.5569, 5557.7450, 720.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1873.3290, 5807, 764.5507 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 3292.6060, 5538.8340, -158.7169 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/zipline_arm.rmdl", < -2685.5570, 5674.7450, 1987.0140 >, < 0, 0.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2607.4430, 5627.9810, 1398.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -797, 5610, 1774.6110 >, < 0, -90, 20 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1238.3300, 5772, 987.5507 >, < 0, -90, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -2611.1940, 5532.6410, -413.7169 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/traffic_cone_01.rmdl", < -2092.1140, 5670, 1735.6430 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_corner_out.rmdl", < 276.6000, 3378.3000, 982 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_fir_large_04.rmdl", < -2151.5570, 5758.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -2499.8550, 5569.7580, 410.6830 >, < -90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 590.4431, 5611.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 2471.4430, 5741.7450, 741.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 3267.4880, 5538.7450, 1238.2830 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 550.4431, 5587.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < -119.5569, 5735.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x32_01.rmdl", < 447.0005, 5574, 1370.1000 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_thin_forest_01.rmdl", < 3045.0580, 5763.7450, 720.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < -232.5569, 5756.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < 620.4431, 5759.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 2916.4430, 5578.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/vending_machine_03.rmdl", < -680, 5508.1000, 367.8999 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 2497.4430, 5695.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/props/death_box/death_box_01.rmdl", < -1199.1880, 5596.5230, -432.2169 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1940.3290, 5807, 739.5507 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < -739.5569, 5581.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/indust_struct_gondola_platform_support_01.rmdl", < -1358.8880, 5502.2560, -470.7169 >, < 0, -89.9399, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 2.4431, 5646.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 2916.4430, 5745.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x128_02.rmdl", < -135.2451, 5461.7010, 508.2831 >, < -90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -1253.3290, 5536, 826.5765 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/traffic_cone_01.rmdl", < -1580.1140, 5670, 1735.6430 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_fir_large_04.rmdl", < -2074.5570, 5758.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/weapons_r5/misc_bangalore_rockets/bangalore_rockets_projectile.rmdl", < 161.4431, 5670.7450, 739.2831 >, < 78.0470, 2.7158, -105.2155 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 550.4431, 5768.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_16.rmdl", < 849.5001, 3446.3000, 982 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 590.4431, 5736.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 1822.9850, 5627.9810, 1344.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_sand_256x128_01.rmdl", < -2610.5570, 5671.7450, 719.2831 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < -683, 3638.2000, 982 >, < 0, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 2472.4430, 5593.7450, 741.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 539.4431, 5656.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 711.4431, 5530, 729.2831 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 3157.4430, 5765.7450, 792.2831 >, < -90, 0.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -2499.9530, 5663.1570, -194.4169 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 297.4431, 5646.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < 364.4431, 5582.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -973.3291, 5807, 739.5507 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/vehicles_r5/land/msc_truck_mod_lrg/veh_land_msc_truck_mod_police_lrg_01_closed_static.rmdl", < 1451.4430, 5610.7450, 686.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 2237, 5545, 1912.3000 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_small_orange_01.rmdl", < 2268.4430, 5605.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 763.4431, 5704.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -2611.5570, 5532.7450, 1481.4170 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < -107, 3006.5000, 982 >, < 0, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_thin_forest_01.rmdl", < 2480.0580, 5557.7450, 720.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/vending_machine_03.rmdl", < 1325.6980, 5515.9720, -271.3169 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -1970.3290, 5768, 735.5765 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 356.4431, 5735.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/vending_machine_03.rmdl", < 617.5000, 5548.6370, 758.4000 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_fir_large_04.rmdl", < 1786.4430, 5568.7450, 725.2336 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_sand_256x128_01.rmdl", < 3266.4880, 5543.7450, 1232.2830 >, < 0, -179.9399, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 398.4431, 5646.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_512x128_01.rmdl", < -1891, 5416, 439.3751 >, < -90, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_512x128_01.rmdl", < -829.9995, 5345.3750, 1371 >, < -90, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x128_05.rmdl", < 2358, 5647.2210, 1410 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -2100, 5544, 1725.9850 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 2845.4430, 5639.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 763.4431, 5647.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 611.4431, 5704.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < 530.4431, 5759.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1083.3290, 5807, 779.5507 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 2927.4430, 5772.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_fir_large_07_burnt.rmdl", < 1740.4430, 5565.7450, 721.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_small_orange_01.rmdl", < 2046.4430, 5605.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_green_forest_01.rmdl", < -2015.5570, 5701.7450, 727.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_fir_large_04.rmdl", < 1666.4430, 5568.7450, 725.2336 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_frame_256_01.rmdl", < -985.6565, 5566.5470, -287.0169 >, < 90, -89.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 398.4431, 5586.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 3156.4430, 5575.7450, 792.2831 >, < -90, 0.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 3084.4430, 5578.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 1981, 5545, 1912.3000 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 656.4431, 5704.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/props/death_box/death_box_01.rmdl", < -1527.4880, 5596.1790, -432.2169 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x32_01.rmdl", < -2301.7270, 5540.6650, 340.5507 >, < 0, -179.9399, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/barriers/concrete/concrete_barrier_01.rmdl", < 2235.4430, 5558.7450, 728.2831 >, < 0, 90.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/eden_tree_dry_03.rmdl", < -2006.5570, 5774.7450, 763.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 2829.4430, 5741.7450, 741.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 656.4431, 5646.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 3157.4430, 5672.7450, 887.2831 >, < 0, -89.9399, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 2758.4430, 5639.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < -147.5569, 5758.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x256_01.rmdl", < -1087.1580, 5481.4600, 278.5851 >, < 0, -90, 92.2115 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_small_orange_01.rmdl", < 1649.4430, 5604.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/props/death_box/death_box_01.rmdl", < -1499.7870, 5596.2070, -432.2169 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 3157.4430, 5672.7450, 951.2831 >, < 0, -89.9399, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 504.4431, 5586.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < -413.6000, 3762, 982 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 114.4431, 5735.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -2499.5570, 5662.7450, 1951.2730 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_fir_large_04.rmdl", < 2049.4430, 5568.7450, 725.2336 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_fir_large_04.rmdl", < 2049.4430, 5771.7450, 725.2336 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 849.5081, 3514.3000, 982 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 1953.9850, 5700.9810, 1398.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < 787.4431, 5582.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_swampland_branch_large_03.rmdl", < -743.5569, 5574.7450, 766.2831 >, < 0, -77.3676, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/barriers/concrete/concrete_barrier_fence_tarp_128.rmdl", < 2501.6510, 5561.0720, -413.7169 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 538.4431, 5736.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < 531.4431, 5582.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -2499.5570, 5662.7450, 879.2831 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 763.4431, 5587.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 410.4431, 5735.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 398.4431, 5768.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2476.4430, 5627.9810, 1398.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/vending_machine_03.rmdl", < 2135.6630, 5551.3220, 280.8831 >, < 0, 90.0602, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/containers/box_shrinkwrapped.rmdl", < 133.6000, 2290.4000, 1000 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 539.4431, 5611.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -1039.3290, 5536, 758.5765 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 2624.4430, 5593.7450, 741.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 205.7000, 3762, 982 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/props/death_box/death_box_01.rmdl", < -1380.3870, 5596.3320, -432.2169 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1663.6300, 5807, 828.4502 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/levels_terrain/mp_rr_desertlands/desertlands_z12_mid_platform_01.rmdl", < 85.2000, 2100.2000, 1000 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 773.4431, 5693.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_swampland_branch_large_03.rmdl", < -506.5569, 5568.7450, 766.2831 >, < 0, -155.6404, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 2674.4430, 5638.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_16.rmdl", < 662.1000, 3378.3000, 982 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_small_orange_01.rmdl", < 2195.4430, 5667.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 709.4431, 5646.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 2983.4430, 5741.7450, 741.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 2583.4430, 5577.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < -147.5569, 5581.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 2613.4430, 5566.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 2457.4430, 5772.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 63.4431, 5693.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_thin_forest_01.rmdl", < 202.4431, 5557.7450, 720.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 453.7000, 3762, 982 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/indust_struct_gondola_platform_support_01.rmdl", < -1476.2390, 5835.2320, -470.7169 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < -107, 2510.6000, 982 >, < 0, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/vending_machine_03.rmdl", < -680, 5508.1000, 314.7999 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 2577.4430, 5772.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < -648.5569, 5755.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 3038.4430, 5741.7450, 741.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 3165.3400, 5672.0010, 340.4831 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 3115.4430, 5772.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1296.6290, 5807, 828.4502 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < -406.5569, 5581.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/eden_tree_dry_03.rmdl", < 328.4431, 5563.7450, 761.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_thin_forest_01.rmdl", < 723.4431, 5557.7450, 720.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2214.4430, 5627.9810, 1398.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2998.9850, 5627.9810, 1344.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < 702.4431, 5582.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_16.rmdl", < -493.1000, 3762, 982 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 251.4431, 5646.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 3083.4430, 5567.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2500.8860, 5623.4040, -242.5169 >, < 90, 90.0602, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/weapons_r5/misc_bangalore_rockets/bangalore_rockets_projectile.rmdl", < 699.4431, 5626.7450, 740.2831 >, < 70.2865, 47.4022, -102.8282 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -2611.1940, 5532.6410, 1224.7270 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2999.9850, 5700.9810, 1289.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 3140.4880, 5671.7450, 1482.2830 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < -739.5569, 5666.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < -897.5569, 5755.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 1952.9850, 5627.9810, 1398.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 709.4431, 5704.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_tropical_small_orange_01.rmdl", < 1881.4430, 5734.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -2499.5570, 5759.7450, 914.2831 >, < -90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2476.4430, 5700.9810, 1344.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -2499.9530, 5663.1570, 375.2831 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_fir_large_04.rmdl", < 2177.4430, 5569.7450, 725.2336 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -1334, 5544, 1725.9850 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2083.4430, 5627.9810, 1289.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < 275.4431, 5582.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 3084.4430, 5593.7450, 741.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_16.rmdl", < -683.0002, 3446.3000, 982 >, < 0, -180, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_sand_256x128_01.rmdl", < 3291.3760, 5543.3320, 89.9831 >, < 0, -179.9399, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1762.3290, 5807, 807.5507 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/traffic_cone_01.rmdl", < -1074.1140, 5670, 1735.6430 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1837.3290, 5807, 779.5507 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_03.rmdl", < -1039.3290, 5768, 758.5765 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -2499.9530, 5663.1570, 1383.7270 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 3387.4880, 5671.7450, 1238.2830 >, < 0, 90.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_512x128_01.rmdl", < 801.1663, 5552.9220, 421.4640 >, < -87.5166, 0.0602, 89.9999 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 114.4431, 5693.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < -648.5569, 5666.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_fern.rmdl", < 2583.4430, 5638.7450, 736.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2868.4430, 5627.9810, 1289.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 612.4431, 5587.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x256_01.rmdl", < -1858.5820, 6078.4600, 217.6718 >, < 0, -90, -87.6085 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 2671.4430, 5741.7450, 741.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/vehicles_r5/land/msc_forklift_imc_v2/veh_land_msc_forklift_imc_v2_static.rmdl", < 1223.4430, 5588.7450, 708.2831 >, < 0, -89.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < -2611.5570, 5532.7450, 727.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_frame_256_01.rmdl", < -896.8923, 5791.7400, -285.6169 >, < -90, -89.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 2847.4430, 5567.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 2811.4430, 5567.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 411.4431, 5656.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 612.4431, 5646.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_03.rmdl", < 2811.4430, 5772.7450, 729.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < 108.4431, 5758.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < -427, 3378.3000, 982 >, < 0, -90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_frame_256_01.rmdl", < -374.7585, 5569.8880, -285.6169 >, < -90, 90.0602, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/floating_village/lagoon_building_post_01.rmdl", < -1415.1300, 5536.7000, 987.5507 >, < 0, -90, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/ola/sewer_railing_01_128.rmdl", < 276.6000, 3254.5000, 982 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_02.rmdl", < 2728.4430, 5741.7450, 741.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < 3182.1650, 5765.9920, -350.1169 >, < -90, 0.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/vending_machine_03.rmdl", < 1982.0630, 5551.1600, 281.4831 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/plant_leafy_01.rmdl", < 114.4431, 5656.7450, 733.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 3267.4430, 5808.7450, 1238.2830 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl", < -2500.0540, 5760.0570, 1291.3270 >, < -90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2476.4430, 5700.9810, 1398.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/zipline_arm.rmdl", < 3429.6680, 5770.9900, 329.6831 >, < 0, 90, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < -739.5569, 5755.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x32_01.rmdl", < 2373, 5574, 2051 >, < 0, 0, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 3387.4880, 5671.7450, 728.2831 >, < 0, 90.0601, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/traffic_tube_01.rmdl", < -2081, 5663, 1243 >, < 0, 0, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2345.4430, 5700.9810, 1398.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/bush_desert_01.rmdl", < -490.5569, 5666.7450, 732.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < -103.5569, 5646.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/beacon/construction_scaff_segment_128_64.rmdl", < 2214.4430, 5627.9810, 1289.2830 >, < 90, -179.9399, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 353.4431, 5768.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_fir_large_04.rmdl", < 2307.4430, 5569.7450, 725.2336 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/icelandic_ground_plant_01.rmdl", < 297.4431, 5586.7450, 722.2831 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_ceiling_512x128_01.rmdl", < 1321.6760, 5553.4680, 398.8882 >, < -87.5166, 0.0602, 89.9999 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/construction_bldg_platform_05_corner.rmdl", < 1855.1760, 6014.4700, -163.8169 >, < -45, 90.0601, -90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/desertlands/construction_bldg_platform_03.rmdl", < 1375.7250, 5491.5250, -357.7169 >, < 0, -179.9398, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", < 2199.5360, 5531.9420, 199.1831 >, < 0, -180, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_stands_girder_32x256_01.rmdl", < -1315.0260, 5443, 239.6631 >, < -87.7888, -180, 123.2676 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/industrial/vending_machine_03.rmdl", < 2296, 5548.6370, 758.4000 >, < 0, 90.0602, 90 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/foliage/tree_swampland_branch_large_03.rmdl", < -617.5569, 5565.7450, 766.2831 >, < 0, 97.6372, 0 >, true, 50000, -1, 1 ) + MapEditor_CreateProp( $"mdl/thunderdome/thunderdome_cage_wall_256x128_02.rmdl", < 1651.7540, 5463.5760, 376.2831 >, < -90, -179.9399, 0 >, true, 50000, -1, 1 ) +} + +#endif \ No newline at end of file diff --git a/vscripts/gamemodes/fs_prophunt/_gamemode_prophunt.nut b/vscripts/gamemodes/fs_prophunt/_gamemode_prophunt.nut new file mode 100644 index 000000000..080e46bcf --- /dev/null +++ b/vscripts/gamemodes/fs_prophunt/_gamemode_prophunt.nut @@ -0,0 +1,2221 @@ +//FLOWSTATE PROPHUNT +//Made by @CafeFPS (Retículo Endoplasmático#5955) + +// AyeZee#6969 -- Ctf voting phase to work off +// _RitzKing#1715 -- Gamemode Icon +// everyone else -- advice + +global function _GamemodeProphunt_Init +global function _RegisterLocationPROPHUNT +global function _OnPlayerConnectedPROPHUNT +global function _OnPlayerDiedPROPHUNT +global function PROPHUNT_StartGameThread +global function returnPropBool +global function SetRealms +global function PROPHUNT_GiveAndManageProp + +struct{ + float endTime = 0 + array playerSpawnedProps + array locationSettings + array locationsShuffled + LocationSettings& selectedLocation + bool cantUseChangeProp = false + bool InProgress = false + float roundstarttime + entity ringBoundary + entity ringBoundary_PreGame + + // Voting + array votedPlayers + bool votingtime = false + bool votestied = false + array mapVotes + array mapIds + int mappicked = 0 + int currentRound = 1 + + int maxvotesallowedforTeamIMC = -1 + int maxvotesallowedforTeamMILITIA = -1 + + int requestsforIMC = -1 + int requestsforMILITIA = -1 + float allowedRadius + vector allowedRingCenter + vector lobbyLocation + vector lobbyAngles + bool allowRingDamageForProps = false +} FS_PROPHUNT + +void function _GamemodeProphunt_Init() +{ + switch(GetMapName()) + { + case "mp_rr_desertlands_64k_x_64k": + case "mp_rr_desertlands_64k_x_64k_nx": + FS_PROPHUNT.lobbyLocation = <-19459, 2127, 6404> + FS_PROPHUNT.lobbyAngles = <0, RandomIntRangeInclusive(-180,180), 0> + break + + case "mp_rr_canyonlands_mu1": + FS_PROPHUNT.lobbyLocation = <3599.2793, 24244.5723, 7255.3667> + FS_PROPHUNT.lobbyAngles = <0, -103.838669, 0> + break + + default: + entity startEnt = GetEnt( "info_player_start" ) + + FS_PROPHUNT.lobbyLocation = startEnt.GetOrigin() + FS_PROPHUNT.lobbyAngles = startEnt.GetAngles() + break + } + + SetConVarInt("sv_quota_stringCmdsPerSecond", 100) + + if(GetCurrentPlaylistVarBool("enable_global_chat", true)) + SetConVarBool("sv_forceChatToTeamOnly", false) + else + SetConVarBool("sv_forceChatToTeamOnly", true) + + SurvivalFreefall_Init() //Enables freefall/skydive + + RegisterSignal("DestroyProp") + RegisterSignal("EndLobbyDistanceThread") + + AddCallback_OnClientConnected( void function(entity player) { + thread _OnPlayerConnectedPROPHUNT(player) + }) + + AddCallback_OnPlayerKilled( void function(entity victim, entity attacker, var damageInfo) { + thread _OnPlayerDiedPROPHUNT(victim, attacker, damageInfo) + }) + + AddCallback_EntitiesDidLoad( _OnEntitiesDidLoadPROPHUNT ) + + AddClientCommandCallback("next_round", ClientCommand_NextRoundPROPHUNT) + AddClientCommandCallback("latency", ClientCommand_ShowLatency) + AddClientCommandCallback("commands", ClientCommand_Help) + AddClientCommandCallback("VoteForMap", ClientCommand_VoteForMap_PROPHUNT) + AddClientCommandCallback("EmitWhistle", ClientCommand_PROPHUNT_EmitWhistle) + AddClientCommandCallback("AskForTeam", ClientCommand_PROPHUNT_AskForTeam) + //AddClientCommandCallback("debugProphuntModels", ClientCommand_PROPHUNT_debugProphuntModels) + PrecacheCustomMapsProps() + + foreach(prop in prophuntAssets) + PrecacheModel(prop) + + PrecacheParticleSystem($"P_impact_exp_xo_shield_med_CP") + PrecacheParticleSystem($"P_plasma_exp_SM") + PrecacheModel($"mdl/fx/ar_edge_sphere_512.rmdl") + PrecacheParticleSystem($"P_smokescreen_FD") + + thread PROPHUNT_StartGameThread() +} + +void function _OnEntitiesDidLoadPROPHUNT() +{ + if(GetMapName() == "mp_rr_desertlands_64k_x_64k") + SpawnFlowstateLobbyProps() + + AddSpawnCallback("prop_dynamic", _OnPropDynamicSpawnedPROPHUNT) //it should be after spawn lobby props so they won't be deleted +} + +void function _RegisterLocationPROPHUNT(LocationSettings locationSettings) +{ + FS_PROPHUNT.locationSettings.append(locationSettings) +} + +void function _OnPropDynamicSpawnedPROPHUNT(entity prop) +{ + FS_PROPHUNT.playerSpawnedProps.append(prop) +} + +void function PROPHUNT_StartGameThread() +{ + WaitForGameState(eGameState.Playing) + + while(true) + { + PROPHUNT_Lobby() + PROPHUNT_GameLoop() + WaitFrame() + } +} + +void function PROPHUNT_CharSelect( entity player) +//By Retículo Endoplasmático#5955 (CaféDeColombiaFPS)// +{ + if(FlowState_ForceCharacter()) + { + ItemFlavor PersonajeEscogido = GetAllCharacters()[FlowState_ChosenCharacter()] + CharacterSelect_AssignCharacter( ToEHI( player ), PersonajeEscogido ) + } + else + { + ItemFlavor PersonajeEscogido = GetAllCharacters()[RandomInt(9)] + CharacterSelect_AssignCharacter( ToEHI( player ), PersonajeEscogido ) + } + TakeAllWeapons(player) +} + +void function _OnPlayerConnectedPROPHUNT(entity player) +{ + while(IsDisconnected( player )) WaitFrame() + + if(!IsValid(player)) return + + CreatePanelText( player, "Flowstate", "", <-19766, 2111, 6541>, <0, 180, 0>, false, 2 ) + + PROPHUNT_CharSelect(player) + + GivePassive(player, ePassives.PAS_PILOT_BLOOD) + UpdatePlayerCounts() + array IMCplayers = GetPlayerArrayOfTeam(TEAM_IMC) + array MILITIAplayers = GetPlayerArrayOfTeam(TEAM_MILITIA) + + ItemFlavor playerCharacter = LoadoutSlot_GetItemFlavor( ToEHI( player ), Loadout_CharacterClass() ) + asset characterSetFile = CharacterClass_GetSetFile( playerCharacter ) + player.SetPlayerSettingsWithMods( characterSetFile, [] ) + DoRespawnPlayer( player, null ) + Survival_SetInventoryEnabled( player, false ) + player.SetPlayerNetBool( "pingEnabled", true ) + player.SetHealth( 100 ) + Inventory_SetPlayerEquipment(player, "armor_pickup_lv2", "armor") + player.SetShieldHealth( 75 ) + player.AllowMantle() + + switch(GetGameState()) + { + case eGameState.WaitingForPlayers: + case eGameState.MapVoting: + if(!IsValid(player)) return + + GiveTeamToProphuntPlayer(player) + + player.SetOrigin(FS_PROPHUNT.lobbyLocation) + player.SetAngles(FS_PROPHUNT.lobbyAngles) + //PutEntityInSafeSpot( player, null, null, player.GetOrigin() + <0,0,256>, player.GetOrigin() ) + + player.SetThirdPersonShoulderModeOn() + player.UnforceStand() + player.UnfreezeControlsOnServer() + break + case eGameState.Playing: //wait round ends, set new player to spectate random player + if(!IsValid(player)) return + + player.p.isSpectating = true + + array playersON = GetPlayerArray_Alive() + playersON.fastremovebyvalue( player ) + + array prophuntSpawns = FS_PROPHUNT.selectedLocation.spawns + player.SetOrigin(prophuntSpawns[RandomIntRangeInclusive(0,prophuntSpawns.len()-1)].origin) + player.MakeInvisible() + player.p.PROPHUNT_isSpectatorDiedMidRound = false + player.MovementDisable() + SetTeam(player, 15 ) + + foreach(availablePlayers in playersON) + { + if(!IsValid(availablePlayers) || IsValid(availablePlayers) && !IsAlive(availablePlayers) || IsValid(availablePlayers) && availablePlayers.p.isSpectating) + playersON.fastremovebyvalue( availablePlayers ) + } + + if(playersON.len() == 0) + { + thread SetSpectatorAnotherTry(player) + return + } + entity specTarget = playersON.getrandom() + if( IsValid( specTarget ) && ShouldSetObserverTarget( specTarget )) + { + try{ + player.SetPlayerNetInt( "spectatorTargetCount", GetPlayerArray_Alive().len() ) + player.SetObserverTarget( specTarget ) + player.SetSpecReplayDelay( 2 ) + player.StartObserverMode( OBS_MODE_IN_EYE ) + Remote_CallFunction_NonReplay(player, "ServerCallback_KillReplayHud_Activate") + }catch(e420){} + } else + { + thread SetSpectatorAnotherTry(player) + } + break + default: + break + } +} + +void function SetSpectatorAnotherTry(entity player) +{ + wait 3 + if(!FS_PROPHUNT.InProgress || !IsValid(player) || GetPlayerArray_Alive().len() == 0) + { + Message(player, "FS PROPHUNT", "You will spawn next round") + return + } + array playersON = GetPlayerArray_Alive() + + foreach(availablePlayers in playersON) + { + if(!IsValid(availablePlayers) || IsValid(availablePlayers) && !IsAlive(availablePlayers) || IsValid(availablePlayers) && availablePlayers.p.isSpectating) + playersON.fastremovebyvalue( availablePlayers ) + } + + if(playersON.len() == 0) + { + Message(player, "FS PROPHUNT", "You will spawn next round") + return + } + + entity specTarget = playersON.getrandom() + try{ + if( IsValid( specTarget ) && IsValid(player) && ShouldSetObserverTarget( specTarget ) && specTarget != player) + { + player.SetPlayerNetInt( "spectatorTargetCount", GetPlayerArray_Alive().len() ) + player.SetObserverTarget( specTarget ) + player.SetSpecReplayDelay( 2 ) + player.StartObserverMode( OBS_MODE_IN_EYE ) + Remote_CallFunction_NonReplay(player, "ServerCallback_KillReplayHud_Activate") + } else { + Message(player, "FS PROPHUNT", "You will spawn next round") + } + }catch(e420){} +} + +void function _OnPlayerDiedPROPHUNT(entity victim, entity attacker, var damageInfo) +{ + if(GetGameState() != eGameState.Playing) //FIXME! + { + array playersON = GetPlayerArray_Alive() + playersON.fastremovebyvalue( victim ) + if(playersON.len() == 0) return + + victim.SetObserverTarget( playersON[0] ) + victim.SetSpecReplayDelay( 2 + DEATHCAM_TIME_SHORT) + victim.StartObserverMode( OBS_MODE_IN_EYE ) + victim.p.isSpectating = true + Remote_CallFunction_NonReplay(victim, "ServerCallback_KillReplayHud_Activate") + victim.p.PROPHUNT_isSpectatorDiedMidRound = true + return + } + + switch(GetGameState()) + { + case eGameState.Playing: + // Víctima + void functionref() victimHandleFunc = void function() : (victim, attacker, damageInfo) + { + if(!IsValid(victim) || !IsValid(attacker)) return + + victim.Hide() + entity effect = StartParticleEffectInWorld_ReturnEntity( GetParticleSystemIndex($"P_ball_tick_exp_CP"), victim.GetOrigin(), <0, 0, 0> ) + EntFireByHandle( effect, "Kill", "", 2, null, null ) + + wait DEATHCAM_TIME_SHORT + + if(!IsValid(victim) || !IsValid(attacker)) return + + array playersON = GetPlayerArray_Alive() + playersON.fastremovebyvalue( victim ) + + try{ + if(victim != attacker && ShouldSetObserverTarget( attacker )) + { + victim.SetObserverTarget( attacker ) + victim.SetSpecReplayDelay( 2 + DEATHCAM_TIME_SHORT) + victim.StartObserverMode( OBS_MODE_IN_EYE ) + victim.p.isSpectating = true + Remote_CallFunction_NonReplay(victim, "ServerCallback_KillReplayHud_Activate") + } else if (GetPlayerArray_Alive().len() > 0) + { + victim.SetObserverTarget( playersON[0] ) + victim.SetSpecReplayDelay( 2 + DEATHCAM_TIME_SHORT) + victim.StartObserverMode( OBS_MODE_IN_EYE ) + victim.p.isSpectating = true + Remote_CallFunction_NonReplay(victim, "ServerCallback_KillReplayHud_Activate") + } + }catch(e420){} + int invscore = victim.GetPlayerGameStat( PGS_DEATHS ) + invscore++ + victim.SetPlayerGameStat( PGS_DEATHS, invscore) + //Add a death to the victim + int invscore2 = victim.GetPlayerNetInt( "assists" ) + invscore2++ + victim.SetPlayerNetInt( "assists", invscore2 ) + + victim.p.PROPHUNT_isSpectatorDiedMidRound = true + + RemoveButtonPressedPlayerInputCallback( victim, IN_ATTACK, ClientCommand_ChangeProp ) + RemoveButtonPressedPlayerInputCallback( victim, IN_ZOOM, ClientCommand_LockAngles ) + RemoveButtonPressedPlayerInputCallback( victim, IN_ZOOM_TOGGLE, ClientCommand_LockAngles ) //fix for the weirdos using ads toggle + RemoveButtonPressedPlayerInputCallback( victim, IN_MELEE, ClientCommand_CreatePropDecoy ) + RemoveButtonPressedPlayerInputCallback( victim, IN_OFFHAND4, ClientCommand_EmitFlashBangToNearbyPlayers ) + RemoveButtonPressedPlayerInputCallback( victim, IN_RELOAD, ClientCommand_MatchSlope ) + Remote_CallFunction_NonReplay(victim, "Minimap_DisableDraw_Internal") + Remote_CallFunction_NonReplay(victim, "PROPHUNT_RemoveControlsUI") + } + + // Atacante + void functionref() attackerHandleFunc = void function() : (victim, attacker, damageInfo) + { + if(!IsValid(victim) || !IsValid(attacker)) return + + if(IsValid(attacker) && attacker.IsPlayer() && IsAlive(attacker) && attacker != victim) + { + //DamageInfo_AddCustomDamageType( damageInfo, DF_KILLSHOT ) + thread EmitSoundOnEntityOnlyToPlayer( attacker, attacker, "flesh_bulletimpact_downedshot_1p_vs_3p" ) + + WpnAutoReloadOnKill(attacker) + + GameRules_SetTeamScore(TEAM_IMC, GameRules_GetTeamScore(attacker.GetTeam()) + 1) + } + array teamMILITIAplayersalive = GetPlayerArrayOfTeam_Alive( TEAM_MILITIA ) + if ( teamMILITIAplayersalive.len() == 0 ) + { + SetTdmStateToNextRound() + } + } + + thread victimHandleFunc() + thread attackerHandleFunc() + break + default: + break + } + + UpdatePlayerCounts() + //printt("Flowstate DEBUG - Prophunt player killed.", victim, " -by- ", attacker) + +} + +void function _HandleRespawnPROPHUNT(entity player) +{ + if(!IsValid(player)) return + + //printt("Flowstate DEBUG - Tping prophunt player to Lobby.", player) + + if(!IsAlive(player)) + { + DecideRespawnPlayer(player, false) + } + + player.SetOrigin(FS_PROPHUNT.lobbyLocation) + player.SetAngles(FS_PROPHUNT.lobbyAngles) + + ItemFlavor playerCharacter = LoadoutSlot_GetItemFlavor( ToEHI( player ), Loadout_CharacterClass() ) + asset characterSetFile = CharacterClass_GetSetFile( playerCharacter ) + player.SetPlayerSettingsWithMods( characterSetFile, [] ) + + if(IsValid(player.p.PROPHUNT_LastPropEntity)) + player.p.PROPHUNT_LastPropEntity.Destroy() + + player.SetThirdPersonShoulderModeOn() + Survival_SetInventoryEnabled( player, false ) + player.SetPlayerNetBool( "pingEnabled", true ) + Inventory_SetPlayerEquipment(player, "armor_pickup_lv2", "armor") + player.SetShieldHealth( 75 ) + player.SetHealth( 100 ) + player.AllowMantle() + player.SetMoveSpeedScale(1) + TakeAllWeapons(player) +} + +bool function returnPropBool() +{ + return FS_PROPHUNT.cantUseChangeProp +} + +void function GiveTeamToProphuntPlayer(entity player) +{ + array IMCplayers = GetPlayerArrayOfTeam(TEAM_IMC) + array MILITIAplayers = GetPlayerArrayOfTeam(TEAM_MILITIA) + + if(player.p.teamasked != -1) + { + switch(player.p.teamasked) + { + case 0: + SetTeam(player, TEAM_IMC ) + break + case 1: + SetTeam(player, TEAM_MILITIA ) + break + default: + break + } + + return + } + + if(IMCplayers.len() > MILITIAplayers.len()) + { + SetTeam(player, TEAM_MILITIA ) + } else if (MILITIAplayers.len() > IMCplayers.len()) + { + SetTeam(player, TEAM_IMC ) + } else { + switch(RandomIntRangeInclusive(0,1)) + { + case 0: + SetTeam(player, TEAM_IMC ) + break + case 1: + SetTeam(player, TEAM_MILITIA ) + break + } + } + //printt("Flowstate DEBUG - Giving team to player.", player, player.GetTeam()) +} + +void function StartHuntersAbilityTimer() +{ + float endTime = Time() + PROPHUNT_ATTACKERS_ABILITY_COOLDOWN + + OnThreadEnd( + function() : () + { + if(GetGameState() == eGameState.Playing) + { + array IMCplayers = GetPlayerArrayOfTeam_Alive(TEAM_IMC) + foreach(player in IMCplayers) + { + if(!IsValid(player)) continue + AddButtonPressedPlayerInputCallback( player, IN_OFFHAND4, ClientCommand_hunters_ForceChangeProp ) + if(IsValid(player.GetOffhandWeapon( OFFHAND_ULTIMATE ))) + player.TakeOffhandWeapon( OFFHAND_ULTIMATE ) + player.GiveOffhandWeapon("mp_weapon_changeprops_fakeultimate", OFFHAND_ULTIMATE) + Remote_CallFunction_NonReplay( player, "EnableHuntersAbility") + } + } + }) + + while( Time() <= endTime && GetGameState() == eGameState.Playing) + { + if( Time() == (endTime-5) ) + { + foreach(player in GetPlayerArrayOfTeam_Alive(TEAM_MILITIA)) + { + if(!IsValid(player)) continue + + Remote_CallFunction_NonReplay( player, "PROPHUNT_CustomHint", 12, 0) + } + } + + WaitFrame() + } +} + +void function SetRealms(entity ent,int realmIndex) +{ + if(!IsValid(ent)) return + if(realmIndex>63) + { + ent.AddToAllRealms() + return + }//add to all realms for players in resting mode + + array realms = ent.GetRealms() + ent.AddToRealm(realmIndex) + realms.removebyvalue(realmIndex) + if(realms.len()>0) + { + foreach (eachRealm in realms ) + { + ent.RemoveFromRealm(eachRealm) + } + } +} + +void function EmitSoundOnSprintingProp() +{ + while(FS_PROPHUNT.InProgress) + { + array MILITIAplayers = GetPlayerArrayOfTeam(TEAM_MILITIA) + foreach(player in MILITIAplayers) + { + if(!IsValid(player)) continue + + if(player.IsSprinting()) + { + EmitSoundOnEntity( player, "husaria_sprint_default_3p" ) + } + } + wait 0.2 + } +} + +void function CountAliveTimeOnProp(entity prop) +{ + while(FS_PROPHUNT.InProgress && IsValid(prop) && IsAlive(prop)) + { + prop.p.PROPHUNT_SurvivalTime++ + wait 1 + } +} + +void function CheckForPlayersPlaying() +{ + while(FS_PROPHUNT.InProgress) + { + if(GetPlayerArray().len() == 1) + { + SetTdmStateToNextRound() + foreach(player in GetPlayerArray()) + { + if(!IsValid(player)) continue + + Message(player, "ATTENTION", "Not enough players. Round is ending.", 5) + } + } + + WaitFrame() + } + + //printt("Flowstate DEBUG - Ending round cuz not enough players midround") +} + +void function PropWatcher(entity prop, entity player) +{ + EndSignal(player, "OnDeath") + EndSignal(player, "DestroyProp") + + OnThreadEnd( + function() : ( prop) + { + if(IsValid(prop)) + prop.Destroy() + }) + + while(IsValid(player) && FS_PROPHUNT.InProgress ) + WaitFrame() +} + +void function DestroyPlayerPropsPROPHUNT() +{ + foreach(prop in FS_PROPHUNT.playerSpawnedProps) + { + if(!IsValid(prop)) continue + + prop.Destroy() + } + FS_PROPHUNT.playerSpawnedProps.clear() +} + +void function PROPHUNT_GiveAndManageProp(entity player, bool giveOldProp = false, bool forcelockedangles = false) +{ + if(!IsValid(player)) return + + if(!forcelockedangles) + Signal(player, "DestroyProp") + + asset selectedModel + if(giveOldProp) + selectedModel = player.p.PROPHUNT_LastModel + else + { + int modelindex = RandomIntRangeInclusive(0,(prophuntAssets.len()-1)) + while(modelindex == player.p.PROPHUNT_LastModelIndex) //remove me + { + modelindex = RandomIntRangeInclusive(0,(prophuntAssets.len()-1)) + WaitFrame() + } + player.p.PROPHUNT_LastModelIndex = modelindex + selectedModel = prophuntAssets[modelindex] + player.p.PROPHUNT_LastModel = selectedModel + } + + if(forcelockedangles) + { + player.SetBodyModelOverride( selectedModel ) + player.SetArmsModelOverride( selectedModel ) + + if(IsValid(player.p.PROPHUNT_LastPropEntity)) + player.p.PROPHUNT_LastPropEntity.SetModel( selectedModel ) + player.p.PROPHUNT_LastModel = selectedModel + + player.p.PROPHUNT_AreAnglesLocked = true + + player.SetMoveSpeedScale(1.25) + return + } + + entity prop = CreatePropDynamic(selectedModel, player.GetOrigin(), player.GetAngles(), 6, -1) + player.p.PROPHUNT_LastPropEntity = prop + prop.kv.CollisionGroup = TRACE_COLLISION_GROUP_PLAYER + prop.kv.solid = 6 + prop.kv.fadedist = 999999 + + prop.SetTakeDamageType( DAMAGE_YES ) + prop.AllowMantle() + prop.SetCanBeMeleed( true ) + prop.SetMaxHealth( 100 ) + prop.SetHealth( player.GetHealth() ) + prop.SetParent(player) + prop.SetPassDamageToParent(true) + thread PropWatcher(prop, player) + + float height = prop.GetBoundingMaxs().z - prop.GetBoundingMins().z + Remote_CallFunction_NonReplay( player, "PROPHUNT_UpdateThirdPersonCameraPosition", height) + + player.SetMoveSpeedScale(1.25) +} + +void function PROPHUNT_Lobby() +{ + //DestroyPlayerPropsPROPHUNT() + SetGameState(eGameState.MapVoting) //!FIXME + + if(FS_PROPHUNT.currentRound == 1) + FS_PROPHUNT.selectedLocation = FS_PROPHUNT.locationSettings.getrandom() + + if(FS_PROPHUNT.selectedLocation.name == "Skill trainer By CafeFPS") + SkillTrainerLoad() + + foreach(player in GetPlayerArray()) + { + if(!IsValid(player)) continue + + player.p.PROPHUNT_isSpectatorDiedMidRound = false + player.UnforceStand() + player.UnfreezeControlsOnServer() + + ItemFlavor PersonajeEscogido = GetAllCharacters()[RandomInt(9)] + CharacterSelect_AssignCharacter( ToEHI( player ), PersonajeEscogido ) + player.SetBodyModelOverride( $"" ) + player.SetArmsModelOverride( $"" ) + TakeAllWeapons(player) + + Survival_SetInventoryEnabled( player, false ) + player.SetPlayerNetBool( "pingEnabled", true ) + + thread CheckDistanceWhileInLobby(player) + SetRealms(player, 64) + } + wait 2 + + if(!GetCurrentPlaylistVarBool("flowstatePROPHUNTDebug", false )) + { + while(true) + { + array playersON = GetPlayerArray_Alive() + if(playersON.len() > 1 ) + { + foreach(player in GetPlayerArray()) + { + if(!IsValid(player)) continue + + // Remote_CallFunction_NonReplay( player, "PROPHUNT_CustomHint", 8, 0) + } + wait 5 + // break + + } else { + + foreach(player in GetPlayerArray()) + { + if(!IsValid(player)) continue + + Remote_CallFunction_NonReplay( player, "PROPHUNT_CustomHint", 9, 0) + } + wait 5 + } + WaitFrame() + } + } + + array IMCplayers = GetPlayerArrayOfTeam(TEAM_IMC) + array MILITIAplayers = GetPlayerArrayOfTeam(TEAM_MILITIA) + + foreach(player in MILITIAplayers) + { + if(!IsValid(player)) continue + + Remote_CallFunction_NonReplay( player, "PROPHUNT_CustomHint", 10, 0) + } + wait 5 +} + +void function CheckDistanceWhileInLobby(entity player) +{ + EndSignal(player, "EndLobbyDistanceThread") + + while(IsValid(player)) + { + if(Distance(player.GetOrigin(),FS_PROPHUNT.lobbyLocation)>3000) + { + player.SetOrigin(FS_PROPHUNT.lobbyLocation) + } + WaitFrame() + } +} + + +void function PROPHUNT_GameLoop() +{ + SetTdmStateToInProgress() + + SurvivalCommentary_ResetAllData() + + array IMCplayers = GetPlayerArrayOfTeam(TEAM_IMC) + array MILITIAplayers = GetPlayerArrayOfTeam(TEAM_MILITIA) + + FS_PROPHUNT.cantUseChangeProp = false + FS_PROPHUNT.InProgress = true + //thread EmitSoundOnSprintingProp() + + FS_PROPHUNT.ringBoundary_PreGame = CreateRing_PreGame(FS_PROPHUNT.selectedLocation) + array prophuntSpawns = FS_PROPHUNT.selectedLocation.spawns + SetGameState( eGameState.Playing ) + + FS_PROPHUNT.roundstarttime = Time() + 4 + PROPHUNT_TELEPORT_ATTACKERS_DELAY - 3 + + //printt("Flowstate DEBUG - Tping props team.") + FS_PROPHUNT.allowRingDamageForProps = true + foreach(player in GetPlayerArray()) + { + if(!IsValid(player)) continue + + //try{TakePassive(player, ePassives.PAS_PILOT_BLOOD)}catch(e420){} + ClearInvincible( player ) + + player.p.playerDamageDealt = 0.0 + if(player.GetTeam() == TEAM_MILITIA) + { + Signal(player, "EndLobbyDistanceThread") + SetRealms(player, 1) + + Remote_CallFunction_NonReplay(player, "PROPHUNT_EnableControlsUI", false, FS_PROPHUNT.roundstarttime) + + AddButtonPressedPlayerInputCallback( player, IN_ATTACK, ClientCommand_ChangeProp ) + AddButtonPressedPlayerInputCallback( player, IN_ZOOM, ClientCommand_LockAngles ) + AddButtonPressedPlayerInputCallback( player, IN_ZOOM_TOGGLE, ClientCommand_LockAngles ) //fix for the weirdos using ads toggle + AddButtonPressedPlayerInputCallback( player, IN_MELEE, ClientCommand_CreatePropDecoy ) + AddButtonPressedPlayerInputCallback( player, IN_OFFHAND4, ClientCommand_EmitFlashBangToNearbyPlayers ) + AddButtonPressedPlayerInputCallback( player, IN_RELOAD, ClientCommand_MatchSlope ) + + vector lastPosForCoolParticles = player.GetOrigin() + vector lastAngForCoolParticles = player.GetAngles() + StartParticleEffectInWorld( GetParticleSystemIndex( $"P_impact_shieldbreaker_sparks" ), lastPosForCoolParticles, lastAngForCoolParticles ) + StartParticleEffectInWorld( GetParticleSystemIndex( $"P_impact_shieldbreaker_sparks" ), lastPosForCoolParticles, lastAngForCoolParticles ) + EmitSoundOnEntityOnlyToPlayer( player, player, "PhaseGate_Enter_1p" ) + EmitSoundOnEntityExceptToPlayer( player, player, "PhaseGate_Enter_3p" ) + player.SetOrigin(prophuntSpawns[RandomIntRangeInclusive(0,prophuntSpawns.len()-1)].origin) + //PutEntityInSafeSpot( player, null, null, player.GetOrigin() + player.GetForwardVector()*256 + <0,0,256>, player.GetOrigin() ) + int modelindex = RandomIntRangeInclusive(0,(prophuntAssets.len()-1)) + player.p.PROPHUNT_LastModelIndex = modelindex + asset selectedModel = prophuntAssets[modelindex] + player.p.PROPHUNT_LastModel = selectedModel + player.SetModelScale(0.01) + player.kv.fadedist = 999999 + player.AllowMantle() + player.Hide() + + entity prop = CreatePropDynamic(selectedModel, player.GetOrigin(), player.GetAngles(), 6, -1) + prop.SetParent(player) + prop.kv.solid = 6 + + player.p.PROPHUNT_LastPropEntity = prop + prop.kv.CollisionGroup = TRACE_COLLISION_GROUP_PLAYER + prop.kv.fadedist = 999999 + prop.AllowMantle() + prop.SetDamageNotifications( true ) + prop.SetTakeDamageType( DAMAGE_YES ) + prop.SetMaxHealth( 100 ) + prop.SetHealth( player.GetHealth() ) + + prop.SetPassDamageToParent(true) + Survival_SetInventoryEnabled( player, false ) + thread PropWatcher(prop, player) //destroys prop on end round and restores player model. + + float height = prop.GetBoundingMaxs().z - prop.GetBoundingMins().z + Remote_CallFunction_NonReplay( player, "PROPHUNT_UpdateThirdPersonCameraPosition", height) + + player.SetThirdPersonShoulderModeOn() + player.TakeOffhandWeapon(OFFHAND_TACTICAL) + player.TakeOffhandWeapon(OFFHAND_ULTIMATE) + player.GiveOffhandWeapon("mp_ability_heal", OFFHAND_TACTICAL) + player.GiveOffhandWeapon("mp_weapon_flashbang_fakeultimate", OFFHAND_ULTIMATE) + player.TakeOffhandWeapon( OFFHAND_EQUIPMENT ) + // player.GiveOffhandWeapon( "mp_ability_emote_projector", OFFHAND_EQUIPMENT ) + DeployAndEnableWeapons(player) + + Remote_CallFunction_NonReplay(player, "Minimap_DisableDraw_Internal") + Remote_CallFunction_NonReplay(player, "PROPHUNT_StartMiscTimer", true) + player.SetMoveSpeedScale(1.25) + } else if(player.GetTeam() == TEAM_IMC) + { + Remote_CallFunction_NonReplay(player, "PROPHUNT_StartMiscTimer", false) //props are hiding, seekers arriving + } + } + + wait PROPHUNT_TELEPORT_ATTACKERS_DELAY-3 + FS_PROPHUNT.allowRingDamageForProps = false + foreach(player in GetPlayerArray()) + { + if(!IsValid(player)) continue + + if(player.GetTeam() == TEAM_IMC) + ScreenFade( player, 0, 0, 0, 255, 4.0, 1, FFADE_OUT | FFADE_PURGE ) + } + wait 2 + foreach(player in GetPlayerArray()) + { + if(!IsValid(player)) continue + + SetRealms(player, 64) + } + + wait 2 + + FS_PROPHUNT.endTime = Time() + GetCurrentPlaylistVarFloat("flowstatePROPHUNTLimitTime", 300 ) + + UpdatePlayerCounts() + + FS_PROPHUNT.cantUseChangeProp = true + //printt("Flowstate DEBUG - Tping attackers team.") + + thread GiveDelayedAbilityToHuntersOnRoundStart() + + foreach(player in IMCplayers) + { + if(!IsValid(player)) continue + + Remote_CallFunction_NonReplay(player, "PROPHUNT_EnableControlsUI", true, FS_PROPHUNT.roundstarttime) + Signal(player, "EndLobbyDistanceThread") + + EmitSoundOnEntityOnlyToPlayer( player, player, "PhaseGate_Enter_1p" ) + EmitSoundOnEntityExceptToPlayer( player, player, "PhaseGate_Enter_3p" ) + player.SetOrigin(prophuntSpawns[RandomIntRangeInclusive(0,prophuntSpawns.len()-1)].origin) + //PutEntityInSafeSpot( player, null, null, player.GetOrigin() + player.GetForwardVector()*256 + <0,0,256>, player.GetOrigin() ) + player.kv.fadedist = 999999 + player.AllowMantle() + player.SetThirdPersonShoulderModeOff() + + player.TakeNormalWeaponByIndexNow( WEAPON_INVENTORY_SLOT_PRIMARY_0 ) + PROPHUNT_GiveRandomPrimaryWeapon(player) + + // string pri = GetCurrentPlaylistVarString("flowstatePROPHUNTweapon1", "~~none~~") + string sec = GetCurrentPlaylistVarString("flowstatePROPHUNTweapon2", "~~none~~") + // if(pri != "") + // { + // player.TakeNormalWeaponByIndexNow( WEAPON_INVENTORY_SLOT_PRIMARY_0 ) + // entity weapon = player.GiveWeapon( pri, WEAPON_INVENTORY_SLOT_PRIMARY_0, [] ) + // array mods = weapon.GetMods() + // mods.append( "prophunt" ) + // try{weapon.SetMods( mods )} catch(e42069){printt("failed to put prophunt mod.")} + + // } + if(sec != "") + { + player.TakeNormalWeaponByIndexNow( WEAPON_INVENTORY_SLOT_PRIMARY_1 ) + entity weapon = player.GiveWeapon( sec, WEAPON_INVENTORY_SLOT_PRIMARY_1, [] ) + array mods = weapon.GetMods() + mods.append( "prophunt" ) + try{weapon.SetMods( mods )} catch(e42069){printt("failed to put prophunt mod.")} + } + + player.TakeOffhandWeapon(OFFHAND_TACTICAL) + player.TakeOffhandWeapon(OFFHAND_ULTIMATE) + player.GiveOffhandWeapon("mp_ability_heal", OFFHAND_TACTICAL) + player.GiveWeapon( "mp_weapon_bolo_sword_primary", WEAPON_INVENTORY_SLOT_PRIMARY_2, [] ) + player.GiveOffhandWeapon( "melee_bolo_sword", OFFHAND_MELEE, [] ) + player.TakeOffhandWeapon( OFFHAND_EQUIPMENT ) + // player.GiveOffhandWeapon( "mp_ability_emote_projector", OFFHAND_EQUIPMENT ) + DeployAndEnableWeapons(player) + Survival_SetInventoryEnabled( player, false ) + Highlight_SetFriendlyHighlight( player, "prophunt_teammate" ) + Highlight_SetEnemyHighlight( player, "survival_enemy_skydiving" ) + Remote_CallFunction_NonReplay(player, "Minimap_EnableDraw_Internal") + player.SetMoveSpeedScale(1) + } + + FS_PROPHUNT.ringBoundary_PreGame.Destroy() + FS_PROPHUNT.ringBoundary = CreateRingBoundary_PropHunt(FS_PROPHUNT.selectedLocation) + + foreach(player in GetPlayerArrayOfTeam(TEAM_MILITIA)) + { + if(!IsValid(player)) continue + + Remote_CallFunction_NonReplay( player, "PROPHUNT_CustomHint", 5, 0) + thread CountAliveTimeOnProp(player) + } + + // SetGlobalNetInt( "currentDeathFieldStage", 0 ) + // SetGlobalNetTime( "nextCircleStartTime", FS_PROPHUNT.endTime ) + // SetGlobalNetTime( "circleCloseTime", FS_PROPHUNT.endTime + 8 ) + + // if(!GetCurrentPlaylistVarBool("flowstatePROPHUNTDebug", false )) + // thread CheckForPlayersPlaying() + + int TeamWon + while( Time() <= FS_PROPHUNT.endTime ) + { + if(Time() == FS_PROPHUNT.endTime-GetCurrentPlaylistVarFloat("flowstatePROPHUNTLimitTime", 300 )/2) + { + foreach(player in GetPlayerArray()) + { + if(!IsValid(player)) continue + + Remote_CallFunction_NonReplay(player, "PROPHUNT_QuickText", 0, 3) + } + } + + if(Time() == FS_PROPHUNT.endTime-30) + { + foreach(player in GetPlayerArray()) + { + if(!IsValid(player)) continue + + //Message(player,"30 SECONDS REMAINING", "", 5, "diag_ap_aiNotify_circleMoves30sec") + Remote_CallFunction_NonReplay(player, "PROPHUNT_QuickText", 1, 4) + } + } + if(GetTDMState() == 1) + { + //printt("Flowstate DEBUG - tdmState is eTDMState.NEXT_ROUND_NOW Loop ended.") + break + } + WaitFrame() + } + + array MILITIAplayersAlive = GetPlayerArrayOfTeam_Alive(TEAM_MILITIA) + array IMCplayersAlive = GetPlayerArrayOfTeam_Alive(TEAM_IMC) + entity champion + if(MILITIAplayersAlive.len() > 0){ + TeamWon = TEAM_MILITIA + + foreach(player in GetPlayerArray()) + { + if(!IsValid(player)) continue + + RemoveButtonPressedPlayerInputCallback( player, IN_ATTACK, ClientCommand_ChangeProp ) + RemoveButtonPressedPlayerInputCallback( player, IN_ZOOM, ClientCommand_LockAngles ) + RemoveButtonPressedPlayerInputCallback( player, IN_ZOOM_TOGGLE, ClientCommand_LockAngles ) //fix for the weirdos using ads toggle + RemoveButtonPressedPlayerInputCallback( player, IN_MELEE, ClientCommand_CreatePropDecoy ) + RemoveButtonPressedPlayerInputCallback( player, IN_OFFHAND4, ClientCommand_EmitFlashBangToNearbyPlayers ) + + bool clearOnClient = false + + int i = 0 + foreach( Winnerplayer in MILITIAplayersAlive ) + { + if(!IsValid(Winnerplayer)) continue + + if(i == 0) + Remote_CallFunction_NonReplay(player, "PROPHUNT_AddWinningSquadData_PropTeamAddModelIndex", true, Winnerplayer.GetEncodedEHandle(), Winnerplayer.p.PROPHUNT_LastModelIndex) + else + Remote_CallFunction_NonReplay(player, "PROPHUNT_AddWinningSquadData_PropTeamAddModelIndex", false, Winnerplayer.GetEncodedEHandle(), Winnerplayer.p.PROPHUNT_LastModelIndex) + + Remote_CallFunction_NonReplay(Winnerplayer, "PROPHUNT_QuickText", 3, 4) //PROPS TEAM WIN + i++ + } + + player.SetThirdPersonShoulderModeOn() + HolsterAndDisableWeapons(player) + player.FreezeControlsOnServer() + MakeInvincible( player ) + } + + champion = MILITIAplayersAlive[0] + + foreach( Winnerplayer in MILITIAplayersAlive ) + { + if(!IsValid(Winnerplayer)) continue + Winnerplayer.p.PROPHUNT_TimesSurvivedAsProp++ + } + + foreach(player in GetPlayerArrayOfTeam_Alive(TEAM_IMC)) + { + if(!IsValid(player)) continue + + RemoveButtonPressedPlayerInputCallback( player, IN_OFFHAND4, ClientCommand_hunters_ForceChangeProp ) + if(IsValid(player.GetOffhandWeapon( OFFHAND_ULTIMATE ))) + player.TakeOffhandWeapon( OFFHAND_ULTIMATE ) + Remote_CallFunction_NonReplay(player, "CreateAndMoveCameraToWinnerProp", MILITIAplayersAlive[0]) + Remote_CallFunction_NonReplay(player, "PROPHUNT_QuickText", 2, 4) + } + } else if(IMCplayersAlive.len() > 0){ + TeamWon = TEAM_IMC + + foreach(player in GetPlayerArray()) + { + if(!IsValid(player)) continue + + RemoveButtonPressedPlayerInputCallback( player, IN_OFFHAND4, ClientCommand_hunters_ForceChangeProp ) + if(IsValid(player.GetOffhandWeapon( OFFHAND_ULTIMATE ))) + player.TakeOffhandWeapon( OFFHAND_ULTIMATE ) + Remote_CallFunction_NonReplay(player, "PROPHUNT_QuickText", 4, 4) //HUNTERS TEAM WIN + player.SetThirdPersonShoulderModeOn() + HolsterAndDisableWeapons(player) + } + + champion = IMCplayersAlive[0] + } + + if(IsValid(champion)) + SetChampion( champion ) + + foreach(player in GetPlayerArray()) + { + if(!IsValid(player)) continue + + AddCinematicFlag( player, CE_FLAG_HIDE_MAIN_HUD ) + //AddCinematicFlag( player, CE_FLAG_EXECUTION ) + + Remote_CallFunction_NonReplay(player, "Minimap_DisableDraw_Internal") + Highlight_ClearEnemyHighlight( player ) + Highlight_ClearFriendlyHighlight( player ) + Remote_CallFunction_NonReplay(player, "PROPHUNT_RemoveControlsUI") + } + SetGameState(eGameState.MapVoting) + + thread SendProphuntScoreboardToClient() + + wait 5 + foreach(player in GetPlayerArray()) + { + if(!IsValid(player)) continue + try{ + if(player.p.isSpectating) + { + player.p.isSpectating = false + player.SetPlayerNetInt( "spectatorTargetCount", 0 ) + player.SetSpecReplayDelay( 0 ) + player.SetObserverTarget( null ) + player.StopObserverMode() + Remote_CallFunction_NonReplay(player, "ServerCallback_KillReplayHud_Deactivate") + } + }catch(e420){} + } + + UpdatePlayerCounts() + FS_PROPHUNT.InProgress = false + FS_PROPHUNT.ringBoundary.Destroy() + SetDeathFieldParams( <0,0,0>, 100000, 0, 90000, 99999 ) + //printt("Flowstate DEBUG - Prophunt round finished Swapping teams.") + foreach( player in GetPlayerArray() ) + { + if( !IsValid( player ) ) continue + RemoveCinematicFlag( player, CE_FLAG_HIDE_MAIN_HUD | CE_FLAG_EXECUTION ) + player.SetThirdPersonShoulderModeOff() + player.FreezeControlsOnServer() + + if(!IsAlive(player)) + { + DecideRespawnPlayer(player, false) + } + } + + // Only do voting for maps with multi locations + // if ( FS_PROPHUNT.locationSettings.len() >= NUMBER_OF_MAP_SLOTS_FSDM ) + // { + // for each player, open the vote menu and set it to the winning team screen + + ResetMapVotes() + + foreach( player in GetPlayerArray() ) + { + if( !IsValid( player ) ) + continue + + //reset props abilities + player.p.PROPHUNT_AreAnglesLocked = false + player.p.PROPHUNT_ChangePropUsageLimit = 0 + player.p.PROPHUNT_DecoysPropUsageLimit = 0 + player.p.PROPHUNT_FlashbangPropUsageLimit = 0 + player.p.teamasked = -1 + + //reset votes + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_UpdateMapVotesClient", FS_PROPHUNT.mapVotes[0], FS_PROPHUNT.mapVotes[1], FS_PROPHUNT.mapVotes[2], FS_PROPHUNT.mapVotes[3]) + + //launch champion screen + voting phase + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_OpenVotingPhase", true) + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_ChampionScreenHandle", true, TeamWon, 0) + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.WinnerScreen, TeamWon, eFSDMScreen.NotUsed, eFSDMScreen.NotUsed) + } + + thread function() : () + { + for( int i = 0; i < NUMBER_OF_MAP_SLOTS_FSDM; ++i ) + { + while( true ) + { + // Get a random location id from the available locations + int randomId = RandomIntRange(0, FS_PROPHUNT.locationSettings.len()) + + // If the map already isnt picked for voting then append it to the array, otherwise keep looping till it finds one that isnt picked yet + if( !FS_PROPHUNT.mapIds.contains( randomId ) ) + { + FS_PROPHUNT.mapIds.append( randomId ) + break + } + } + } + }() + + wait 7 + + foreach( player in GetPlayerArray() ) + { + if( !IsValid( player ) ) + continue + + Remote_CallFunction_NonReplay(player, "ServerCallback_FSDM_CoolCamera") + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.ScoreboardUI, TeamWon, eFSDMScreen.NotUsed, eFSDMScreen.NotUsed) + EmitSoundOnEntityOnlyToPlayer(player, player, "UI_Menu_RoundSummary_Results") + } + + wait 7 + + FS_PROPHUNT.maxvotesallowedforTeamIMC = int(min(ceil(float(GetPlayerArray().len()) / float(3)), 5.0)) + FS_PROPHUNT.maxvotesallowedforTeamMILITIA = GetPlayerArray().len() - FS_PROPHUNT.maxvotesallowedforTeamIMC + FS_PROPHUNT.requestsforIMC = 0 + FS_PROPHUNT.requestsforMILITIA = 0 + //printt("DEBUG MAX VOTES: " + FS_PROPHUNT.maxvotesallowedforTeamIMC + " " + FS_PROPHUNT.maxvotesallowedforTeamMILITIA) + // Set voting to be allowed + FS_PROPHUNT.votingtime = true + + // For each player, set voting screen and update maps that are picked for voting + foreach( player in GetPlayerArray() ) + { + if( !IsValid( player ) ) + continue + + Remote_CallFunction_NonReplay(player, "ServerCallback_FSDM_CoolCamera") + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_UpdateVotingMaps", FS_PROPHUNT.mapIds[0], FS_PROPHUNT.mapIds[1], FS_PROPHUNT.mapIds[2], FS_PROPHUNT.mapIds[3]) + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.VoteScreen, eFSDMScreen.NotUsed, eFSDMScreen.NotUsed, eFSDMScreen.NotUsed) + } + + wait 16 + + FS_PROPHUNT.votestied = false + bool anyVotes = false + + // Make voting not allowed + FS_PROPHUNT.votingtime = false + + // See if there was any votes in the first place + foreach( int votes in FS_PROPHUNT.mapVotes ) + { + if( votes > 0 ) + { + anyVotes = true + break + } + } + + if ( anyVotes ) + { + // store the highest vote count for any of the maps + int highestVoteCount = -1 + + // store the last map id of the map that has the highest vote count + int highestVoteId = -1 + + // store map ids of all the maps with the highest vote count + array mapsWithHighestVoteCount + + + for(int i = 0; i < NUMBER_OF_MAP_SLOTS_FSDM; ++i) + { + int votes = FS_PROPHUNT.mapVotes[i] + if( votes > highestVoteCount ) + { + highestVoteCount = votes + highestVoteId = FS_PROPHUNT.mapIds[i] + + // we have a new highest, so clear the array + mapsWithHighestVoteCount.clear() + mapsWithHighestVoteCount.append(FS_PROPHUNT.mapIds[i]) + } + else if( votes == highestVoteCount ) // if this map also has the highest vote count, add it to the array + { + mapsWithHighestVoteCount.append(FS_PROPHUNT.mapIds[i]) + } + } + + // if there are multiple maps with the highest vote count then it's a tie + if( mapsWithHighestVoteCount.len() > 1 ) + { + FS_PROPHUNT.votestied = true + } + else // else pick the map with the highest vote count + { + // Set the vote screen for each player to show the chosen location + foreach( player in GetPlayerArray() ) + { + if( !IsValid( player ) ) + continue + + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.SelectedScreen, eFSDMScreen.NotUsed, highestVoteId, eFSDMScreen.NotUsed) + } + + // Set the location to the location that won + FS_PROPHUNT.mappicked = highestVoteId + } + + if ( FS_PROPHUNT.votestied ) + { + foreach( player in GetPlayerArray() ) + { + if( !IsValid( player ) ) + continue + + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.TiedScreen, eFSDMScreen.NotUsed, 42069, eFSDMScreen.NotUsed) + } + + mapsWithHighestVoteCount.randomize() + waitthread RandomizeTiedLocations(mapsWithHighestVoteCount) + } + } + else // No one voted so pick random map + { + // Pick a random location id from the aviable locations + FS_PROPHUNT.mappicked = RandomIntRange(0, FS_PROPHUNT.locationSettings.len() - 1) + + // Set the vote screen for each player to show the chosen location + foreach( player in GetPlayerArray() ) + { + if( !IsValid( player ) ) + continue + + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.SelectedScreen, eFSDMScreen.NotUsed, FS_PROPHUNT.mappicked, eFSDMScreen.NotUsed) + } + } + + //wait for timing + wait 7 + + // Close the votemenu for each player + foreach( player in GetPlayerArray() ) + { + if( !IsValid( player ) ) + continue + + ScreenCoverTransition_Player(player, Time() + 1) + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_OpenVotingPhase", false) + } + + FS_PROPHUNT.selectedLocation = FS_PROPHUNT.locationSettings[ FS_PROPHUNT.mappicked ] + + wait 2 + // } + + // Clear players the voted for next voting + FS_PROPHUNT.votedPlayers.clear() + + // Clear mapids for next voting + FS_PROPHUNT.mapIds.clear() + + // if( FS_PROPHUNT.currentRound == Flowstate_AutoChangeLevelRounds() && Flowstate_EnableAutoChangeLevel() ) + // { + // // foreach( player in GetPlayerArray() ) + // // Message( player, "We have reached the round to change levels.", "Total Round: " + FS_PROPHUNT.currentRound, 6.0 ) + + // foreach( player in GetPlayerArray() ) + // Message( player, "Server clean up incoming", "Don't leave. Server is going to reload to avoid lag.", 6.0 ) + + // wait 6.0 + + // GameRules_ChangeMap( GetMapName(), GameRules_GetGameMode() ) + // } + + FS_PROPHUNT.currentRound++ + + foreach(player in GetPlayerArray()) + { + if(!IsValid(player)) continue + + HandlePlayerTeam(player) + } +} + +void function GiveDelayedAbilityToHuntersOnRoundStart() +{ + wait (PROPHUNT_ATTACKERS_ABILITY_COOLDOWN/2 - 5) + + foreach(player in GetPlayerArrayOfTeam_Alive(TEAM_MILITIA)) + { + if(!IsValid(player)) continue + + Remote_CallFunction_NonReplay( player, "PROPHUNT_CustomHint", 12, 0) + } + + wait 5 + + foreach(player in GetPlayerArrayOfTeam_Alive(TEAM_IMC)) + { + if(!IsValid(player)) continue + + AddButtonPressedPlayerInputCallback( player, IN_OFFHAND4, ClientCommand_hunters_ForceChangeProp ) + if(IsValid(player.GetOffhandWeapon( OFFHAND_ULTIMATE ))) + player.TakeOffhandWeapon( OFFHAND_ULTIMATE ) + player.GiveOffhandWeapon("mp_weapon_changeprops_fakeultimate", OFFHAND_ULTIMATE) + + Remote_CallFunction_NonReplay( player, "EnableHuntersAbility") + } +} + +void function SendProphuntScoreboardToClient() +{ + foreach(entity sPlayer in GetPlayerArray()) + { + if(!IsValid(sPlayer)) continue + + Remote_CallFunction_NonReplay(sPlayer, "ServerCallback_ClearScoreboardOnClient") + + thread function() : (sPlayer) + { + if(!IsValid(sPlayer)) return + + foreach(entity player in GetPlayerArray()) + { + if(!IsValid(player)) continue + + Remote_CallFunction_NonReplay(sPlayer, "ServerCallback_SendProphuntHuntersScoreboardToClient", player.GetEncodedEHandle(), player.GetPlayerGameStat( PGS_KILLS )) + Remote_CallFunction_NonReplay(sPlayer, "ServerCallback_SendProphuntPropsScoreboardToClient", player.GetEncodedEHandle(), player.p.PROPHUNT_TimesSurvivedAsProp, player.p.PROPHUNT_SurvivalTime) + } + }() + } +} +// purpose: display the UI for randomization of tied maps at the end of voting +void function RandomizeTiedLocations(array maps) +{ + bool donerandomizing = false + int randomizeammount = RandomIntRange(50, 75) + int i = 0 + int mapslength = maps.len() + int currentmapindex = 0 + int selectedamp = 0 + + while (!donerandomizing) + { + // If currentmapindex is out of range set to 0 + if (currentmapindex >= mapslength) + currentmapindex = 0 + + // Update Randomizer ui for each player + foreach( player in GetPlayerArray() ) + { + if( !IsValid( player ) ) + continue + + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.TiedScreen, 69, maps[currentmapindex], 0) + } + + // stop randomizing once the randomize ammount is done + if (i >= randomizeammount) + { + donerandomizing = true + selectedamp = currentmapindex + } + + i++ + currentmapindex++ + + if (i >= randomizeammount - 15 && i < randomizeammount - 5) // slow down voting randomizer speed + { + wait 0.15 + } + else if (i >= randomizeammount - 5) // slow down voting randomizer speed + { + wait 0.25 + } + else // default voting randomizer speed + { + wait 0.05 + } + } + + // Show final selected map + foreach( player in GetPlayerArray() ) + { + if( !IsValid( player ) ) + continue + + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.TiedScreen, 69, maps[selectedamp], 1) + } + + // Pause on selected map for a sec for visuals + wait 0.5 + + // Procede to final location picked screen + foreach( player in GetPlayerArray() ) + { + if( !IsValid( player ) ) + continue + + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.SelectedScreen, 69, maps[selectedamp], eFSDMScreen.NotUsed) + } + + // Set selected location on server + FS_PROPHUNT.mappicked = maps[selectedamp] +} + +void function ResetMapVotes() +{ + FS_PROPHUNT.mapVotes.clear() + FS_PROPHUNT.mapVotes.resize( NUMBER_OF_MAP_SLOTS_FSDM ) +} + +void function HandlePlayerTeam(entity player) +{ + if(!IsValid(player)) return + + player.Show() + player.MakeVisible() + PROPHUNT_CharSelect(player) + + //printt(player, player.GetTeam()) + //for connected players midround + if( player.GetTeam() == 15 && !player.p.PROPHUNT_isSpectatorDiedMidRound) + { + player.p.isSpectating = false + player.SetPlayerNetInt( "spectatorTargetCount", 0 ) + player.SetSpecReplayDelay( 0 ) + player.SetObserverTarget( null ) + player.StopObserverMode() + Remote_CallFunction_NonReplay(player, "ServerCallback_KillReplayHud_Deactivate") + TakeAllWeapons(player) + player.SetThirdPersonShoulderModeOn() + player.MakeVisible() + player.MovementEnable() + GiveTeamToProphuntPlayer(player) + WaitFrame() + if(!IsValid(player)) return + + _HandleRespawnPROPHUNT(player) + player.UnforceStand() + player.UnfreezeControlsOnServer() + + return + } + + //for ded players midround + if ( player.p.PROPHUNT_isSpectatorDiedMidRound ) + { + player.p.isSpectating = false + player.SetPlayerNetInt( "spectatorTargetCount", 0 ) + player.SetSpecReplayDelay( 0 ) + player.SetObserverTarget( null ) + player.StopObserverMode() + Remote_CallFunction_NonReplay(player, "ServerCallback_KillReplayHud_Deactivate") + + if(player.p.teamasked != -1) + { + TakeAllWeapons(player) + player.SetThirdPersonShoulderModeOn() + + switch(player.p.teamasked) + { + case 0: + SetTeam(player, TEAM_IMC ) + break + case 1: + SetTeam(player, TEAM_MILITIA ) + break + default: + break + } + + WaitFrame() + if(!IsValid(player)) return + + _HandleRespawnPROPHUNT(player) + player.MakeVisible() + player.UnforceStand() + player.UnfreezeControlsOnServer() + + return + } + + if(player.GetTeam() == TEAM_IMC){ + TakeAllWeapons(player) + player.SetThirdPersonShoulderModeOn() + SetTeam(player, TEAM_MILITIA ) + WaitFrame() + if(!IsValid(player)) return + + _HandleRespawnPROPHUNT(player) + player.MakeVisible() + player.UnforceStand() + player.UnfreezeControlsOnServer() + } else if(player.GetTeam() == TEAM_MILITIA){ + TakeAllWeapons(player) + player.SetThirdPersonShoulderModeOn() + SetTeam(player, TEAM_IMC ) + WaitFrame() + if(!IsValid(player)) return + + _HandleRespawnPROPHUNT(player) + player.MakeVisible() + player.UnforceStand() + player.UnfreezeControlsOnServer() + } + } else + { + //for alive players swap teams + + if(player.p.teamasked != -1) + { + TakeAllWeapons(player) + player.SetThirdPersonShoulderModeOn() + + switch(player.p.teamasked) + { + case 0: + SetTeam(player, TEAM_IMC ) + break + case 1: + SetTeam(player, TEAM_MILITIA ) + break + default: + break + } + + WaitFrame() + if(!IsValid(player)) return + + _HandleRespawnPROPHUNT(player) + player.MakeVisible() + player.UnforceStand() + player.UnfreezeControlsOnServer() + + return + } + + if(player.GetTeam() == TEAM_IMC){ + TakeAllWeapons(player) + player.SetThirdPersonShoulderModeOn() + SetTeam(player, TEAM_MILITIA ) + WaitFrame() + if(!IsValid(player)) return + + _HandleRespawnPROPHUNT(player) + player.MakeVisible() + player.UnforceStand() + player.UnfreezeControlsOnServer() + + } else if(player.GetTeam() == TEAM_MILITIA){ + TakeAllWeapons(player) + player.SetThirdPersonShoulderModeOn() + SetTeam(player, TEAM_IMC ) + WaitFrame() + if(!IsValid(player)) return + + _HandleRespawnPROPHUNT(player) + player.MakeVisible() + player.UnforceStand() + player.UnfreezeControlsOnServer() + } + } +} + +entity function CreateRing_PreGame(LocationSettings location) +{ + array spawns = location.spawns + + vector ringCenter = GetCenterOfCircle(spawns) + + float ringRadius = float(minint(2500 + 110*GetPlayerArray().len(), 4500)) + FS_PROPHUNT.allowedRadius = ringRadius + + array prophuntSpawns + + //get spawn points inside allowed radius + foreach(spawn in spawns) + { + if( Distance( spawn.origin, ringCenter ) <= FS_PROPHUNT.allowedRadius ) + prophuntSpawns.append(spawn) + } + + if(prophuntSpawns.len() == 0) //just in case it doesn't found spawn points inside allowed radius + { + //get initial seed for ring, the nearest spawn point to the center + array prophuntSpawnsDistances + foreach(spawn in spawns) + { + prophuntSpawnsDistances.append(Distance( spawn.origin, ringCenter )) + } + float compare = 99999 + int j = 0 + for(int i = 0; i < spawns.len(); i++) + { + if(prophuntSpawnsDistances[i] < compare) + { + compare = prophuntSpawnsDistances[i] + j = i + } + } + ringCenter = spawns[j].origin + + //get spawn points inside allowed radius + foreach(spawn in spawns) + { + if( Distance( spawn.origin, ringCenter ) <= FS_PROPHUNT.allowedRadius ) + prophuntSpawns.append(spawn) + } + } + + FS_PROPHUNT.allowedRingCenter = ringCenter + FS_PROPHUNT.selectedLocation.spawns = prophuntSpawns + + //We watch the ring fx with this entity in the threads + entity circle = CreateEntity( "prop_script" ) + circle.SetValueForModelKey( $"mdl/fx/ar_survival_radius_1x100.rmdl" ) + circle.kv.fadedist = -1 + circle.kv.modelscale = ringRadius + circle.kv.renderamt = 255 + circle.kv.rendercolor = FlowState_RingColor() + circle.kv.solid = 0 + circle.kv.VisibilityFlags = ENTITY_VISIBLE_TO_EVERYONE + circle.SetOrigin( ringCenter ) + circle.SetAngles( <0, 0, 0> ) + circle.NotSolid() + DispatchSpawn(circle) + + //Damage thread for ring, only does damage to props + thread RingDamage2(circle, ringRadius) + + return circle +} + +void function RingDamage2( entity circle, float currentRadius) +{ + while(!FS_PROPHUNT.allowRingDamageForProps) + WaitFrame() + + const float DAMAGE_CHECK_STEP_TIME = 1.5 + + while ( IsValid(circle) && FS_PROPHUNT.allowRingDamageForProps) + { + foreach ( player in GetPlayerArrayOfTeam_Alive(TEAM_MILITIA) ) + { + if(!IsValid(player)) continue + + float playerDist = Distance2D( player.GetOrigin(), circle.GetOrigin() ) + if ( playerDist > currentRadius ) + { + Remote_CallFunction_Replay( player, "ServerCallback_PlayerTookDamage", 0, 0, 0, 0, DF_BYPASS_SHIELD | DF_DOOMED_HEALTH_LOSS, eDamageSourceId.deathField, null ) + player.TakeDamage( int( Deathmatch_GetOOBDamagePercent() / 100 * float( player.GetMaxHealth() ) ), null, null, { scriptType = DF_BYPASS_SHIELD | DF_DOOMED_HEALTH_LOSS, damageSourceId = eDamageSourceId.deathField } ) + } + } + wait DAMAGE_CHECK_STEP_TIME + } +} + +entity function CreateRingBoundary_PropHunt(LocationSettings location) +{ + vector ringCenter = FS_PROPHUNT.allowedRingCenter + float ringRadius = FS_PROPHUNT.allowedRadius + + entity circle = CreateEntity( "prop_script" ) + circle.SetValueForModelKey( $"mdl/fx/ar_survival_radius_1x100.rmdl" ) + circle.kv.fadedist = -1 + circle.kv.modelscale = ringRadius + circle.kv.renderamt = 255 + circle.kv.rendercolor = FlowState_RingColor() + circle.kv.solid = 0 + circle.kv.VisibilityFlags = ENTITY_VISIBLE_TO_EVERYONE + circle.SetOrigin( ringCenter ) + circle.SetAngles( <0, 0, 0> ) + circle.NotSolid() + circle.DisableHibernation() + circle.Minimap_SetObjectScale( min(ringRadius / SURVIVAL_MINIMAP_RING_SCALE, 1) ) + circle.Minimap_SetAlignUpright( true ) + circle.Minimap_SetZOrder( 2 ) + circle.Minimap_SetClampToEdge( true ) + circle.Minimap_SetCustomState( eMinimapObject_prop_script.OBJECTIVE_AREA ) + SetTargetName( circle, "hotZone" ) + DispatchSpawn(circle) + + foreach ( player in GetPlayerArray() ) + { + circle.Minimap_AlwaysShow( 0, player ) + } + + SetDeathFieldParams( ringCenter, ringRadius, ringRadius, 90000, 99999 ) // This function from the API allows client to read ringRadius from server so we can use visual effects in shared function. Colombia + + //Audio thread for ring + foreach(sPlayer in GetPlayerArray()) + thread AudioThread(circle, sPlayer, ringRadius) + + //Damage thread for ring + thread RingDamage(circle, ringRadius) + + return circle +} + +void function AudioThread(entity circle, entity player, float radius) +{ + EndSignal(player, "OnDestroy") + entity audio + string soundToPlay = "Survival_Circle_Edge_Small" + OnThreadEnd( + function() : ( soundToPlay, audio) + { + + if(IsValid(audio)) audio.Destroy() + } + ) + audio = CreateScriptMover() + audio.SetOrigin( circle.GetOrigin() ) + audio.SetAngles( <0, 0, 0> ) + EmitSoundOnEntity( audio, soundToPlay ) + + while(IsValid(circle) && IsValid(player)){ + vector fwdToPlayer = Normalize( - ) + vector circleEdgePos = circle.GetOrigin() + (fwdToPlayer * radius) + circleEdgePos.z = player.EyePosition().z + if ( fabs( circleEdgePos.x ) < 61000 && fabs( circleEdgePos.y ) < 61000 && fabs( circleEdgePos.z ) < 61000 ) + { + audio.SetOrigin( circleEdgePos ) + } + WaitFrame() + } + + StopSoundOnEntity(audio, soundToPlay) +} + +void function RingDamage( entity circle, float currentRadius) +{ + WaitFrame() + const float DAMAGE_CHECK_STEP_TIME = 1.5 + + while ( IsValid(circle) ) + { + foreach ( player in GetPlayerArray_Alive() ) + { + if(!IsValid(player)) continue + + if ( player.IsPhaseShifted() ) + continue + + float playerDist = Distance2D( player.GetOrigin(), circle.GetOrigin() ) + if ( playerDist > currentRadius ) + { + Remote_CallFunction_Replay( player, "ServerCallback_PlayerTookDamage", 0, 0, 0, 0, DF_BYPASS_SHIELD | DF_DOOMED_HEALTH_LOSS, eDamageSourceId.deathField, null ) + player.TakeDamage( int( Deathmatch_GetOOBDamagePercent() / 100 * float( player.GetMaxHealth() ) ), null, null, { scriptType = DF_BYPASS_SHIELD | DF_DOOMED_HEALTH_LOSS, damageSourceId = eDamageSourceId.deathField } ) + } + } + wait DAMAGE_CHECK_STEP_TIME + } +} + +bool function ClientCommand_NextRoundPROPHUNT(entity player, array args) +{ + if(player.GetPlayerName() == FlowState_Hoster() || player.GetPlayerName() == FlowState_Admin1() || player.GetPlayerName() == FlowState_Admin2() || player.GetPlayerName() == FlowState_Admin3() || player.GetPlayerName() == FlowState_Admin4()) + { + if (args.len()) { + string now = args[0] + if (now == "now") + { + SetTdmStateToNextRound() + } + + if(args.len() > 1){ + now = args[1] + if (now == "now") + { + SetTdmStateToNextRound() + } + } + } + } + else { + return false + } + + return true +} + +bool function ClientCommand_VoteForMap_PROPHUNT(entity player, array args) +{ + // don't allow multiple votes + if ( FS_PROPHUNT.votedPlayers.contains( player ) ) + return false + + // dont allow votes if its not voting time + if ( !FS_PROPHUNT.votingtime ) + return false + + // get map id from args + int mapid = args[0].tointeger() + + // reject map ids that are outside of the range + if ( mapid >= NUMBER_OF_MAP_SLOTS_FSDM || mapid < 0 ) + return false + + // add a vote for selected maps + FS_PROPHUNT.mapVotes[mapid]++ + + // update current amount of votes for each map + foreach( p in GetPlayerArray() ) + { + if( !IsValid( p ) ) + continue + + Remote_CallFunction_Replay(p, "ServerCallback_FSDM_UpdateMapVotesClient", FS_PROPHUNT.mapVotes[0], FS_PROPHUNT.mapVotes[1], FS_PROPHUNT.mapVotes[2], FS_PROPHUNT.mapVotes[3]) + } + + // append player to the list of players the voted so they cant vote again + FS_PROPHUNT.votedPlayers.append(player) + + return true +} +void function ClientCommand_hunters_ForceChangeProp(entity hunterPlayer) +{ + if(!IsValid(hunterPlayer) || IsValid(hunterPlayer) && hunterPlayer.GetTeam() != TEAM_IMC || GetGameState() != eGameState.Playing) return + + foreach(player in GetPlayerArrayOfTeam_Alive(TEAM_MILITIA)) + { + if(!IsValid(player) || IsValid(player) && player.GetTeam() != TEAM_MILITIA || IsValid(player) && player == hunterPlayer) continue + + if(player.p.PROPHUNT_AreAnglesLocked) + { + player.SetBodyModelOverride( $"" ) + player.SetArmsModelOverride( $"" ) + player.SetModelScale(0.01) + player.AllowMantle() + player.Hide() + thread PROPHUNT_GiveAndManageProp(player, false, true) + Remote_CallFunction_NonReplay( player, "PROPHUNT_CustomHint", 11, hunterPlayer.GetEncodedEHandle()) + + } else if(!player.p.PROPHUNT_AreAnglesLocked) + { + thread PROPHUNT_GiveAndManageProp(player) + Remote_CallFunction_NonReplay( player, "PROPHUNT_CustomHint", 11, hunterPlayer.GetEncodedEHandle()) + } + } + + foreach(player in GetPlayerArrayOfTeam_Alive(TEAM_IMC)) + { + if(!IsValid(player)) continue + + Remote_CallFunction_NonReplay( player, "PROPHUNT_CustomHint", 11, hunterPlayer.GetEncodedEHandle()) + RemoveButtonPressedPlayerInputCallback( player, IN_OFFHAND4, ClientCommand_hunters_ForceChangeProp ) + + if(IsValid(player.GetOffhandWeapon( OFFHAND_ULTIMATE ))) + player.TakeOffhandWeapon( OFFHAND_ULTIMATE ) + + Remote_CallFunction_NonReplay( player, "ForceDisableHuntersAbilityHint") + } + + thread StartHuntersAbilityTimer() +} + +void function ClientCommand_ChangeProp(entity player) +{ + if(!IsValid(player) || IsValid(player) && player.GetTeam() != TEAM_MILITIA || GetGameState() != eGameState.Playing) return + + if(player.p.PROPHUNT_AreAnglesLocked) + { + int newscore = player.p.PROPHUNT_ChangePropUsageLimit + 1 + player.p.PROPHUNT_ChangePropUsageLimit = newscore + if (player.p.PROPHUNT_ChangePropUsageLimit <= PROPHUNT_CHANGE_PROP_USAGE_LIMIT) + { + player.SetBodyModelOverride( $"" ) + player.SetArmsModelOverride( $"" ) + player.SetModelScale(0.01) + player.AllowMantle() + player.Hide() + thread PROPHUNT_GiveAndManageProp(player, false, true) + Remote_CallFunction_NonReplay( player, "PROPHUNT_AddUsageToHint", 0) + Remote_CallFunction_NonReplay( player, "PROPHUNT_CustomHint", 7, 0) + } else + { + Remote_CallFunction_NonReplay( player, "PROPHUNT_CustomHint", 2, 0) + } + } else if(!player.p.PROPHUNT_AreAnglesLocked) + { + int newscore = player.p.PROPHUNT_ChangePropUsageLimit + 1 + player.p.PROPHUNT_ChangePropUsageLimit = newscore + if (player.p.PROPHUNT_ChangePropUsageLimit <= PROPHUNT_CHANGE_PROP_USAGE_LIMIT) + { + thread PROPHUNT_GiveAndManageProp(player) + Remote_CallFunction_NonReplay( player, "PROPHUNT_AddUsageToHint", 0) + Remote_CallFunction_NonReplay( player, "PROPHUNT_CustomHint", 7, 0) + } else + { + Remote_CallFunction_NonReplay( player, "PROPHUNT_CustomHint", 2, 0) + } + } +} + +void function ClientCommand_MatchSlope(entity player) +{ + if(!IsValid(player) || IsValid(player) && player.GetTeam() != TEAM_MILITIA || GetGameState() != eGameState.Playing) return + + vector testOrg = player.GetOrigin() + vector mins = player.GetPlayerMins() + vector maxs = player.GetPlayerMaxs() + TraceResults result = TraceHull( testOrg, testOrg + < 0, 0, -150 >, mins, maxs, [ player ], TRACE_MASK_SOLID, TRACE_COLLISION_GROUP_NONE ) + + vector GoodAngles = AnglesOnSurface(result.surfaceNormal, AnglesToForward(player.EyeAngles())) + player.p.PROPHUNT_LastPropEntity.SetAbsAngles( GoodAngles ) //SetAbsAngles allows to set angles regardless of parent orientation + + Remote_CallFunction_NonReplay( player, "PROPHUNT_CustomHint", 3, 0) +} + +void function ClientCommand_LockAngles(entity player) +{ + if(!IsValid(player) || IsValid(player) && player.GetTeam() != TEAM_MILITIA || GetGameState() != eGameState.Playing) return + + if(!player.p.PROPHUNT_AreAnglesLocked) + { + player.SetBodyModelOverride( player.p.PROPHUNT_LastModel ) + player.SetArmsModelOverride( player.p.PROPHUNT_LastModel ) + + player.p.PROPHUNT_AreAnglesLocked = true + Remote_CallFunction_NonReplay( player, "PROPHUNT_CustomHint", 0, 0) + Remote_CallFunction_NonReplay( player, "PROPHUNT_AddUsageToHint", 3) + //Angles are locked!! + } else if(player.p.PROPHUNT_AreAnglesLocked) + { + Signal(player, "DestroyProp") + + player.SetBodyModelOverride( $"" ) + player.SetArmsModelOverride( $"" ) + + thread PROPHUNT_GiveAndManageProp(player, true) + player.p.PROPHUNT_AreAnglesLocked = false + Remote_CallFunction_NonReplay( player, "PROPHUNT_CustomHint", 1, 0) + Remote_CallFunction_NonReplay( player, "PROPHUNT_AddUsageToHint", 3) + //Angles are unlocked!! + } +} + +void function ClientCommand_CreatePropDecoy(entity player) +{ + if(!IsValid(player) || IsValid(player) && player.GetTeam() != TEAM_MILITIA || GetGameState() != eGameState.Playing) return + + player.p.PROPHUNT_DecoysPropUsageLimit = player.p.PROPHUNT_DecoysPropUsageLimit + 1 + if (player.p.PROPHUNT_DecoysPropUsageLimit <= PROPHUNT_DECOYS_USAGE_LIMIT) + { + entity decoy = player.CreateTargetedPlayerDecoy( player.GetOrigin(), $"", player.p.PROPHUNT_LastModel, 0, 0 ) + decoy.SetMaxHealth( 100 ) + decoy.SetHealth( 100 ) + decoy.EnableAttackableByAI( 50, 0, AI_AP_FLAG_NONE ) + SetObjectCanBeMeleed( decoy, true ) + decoy.SetTimeout( 90 ) + decoy.SetPlayerOneHits( true ) + + vector testOrg = player.GetOrigin() + vector mins = player.GetPlayerMins() + vector maxs = player.GetPlayerMaxs() + int collisionGroup = TRACE_COLLISION_GROUP_PLAYER + TraceResults result = TraceHull( testOrg, testOrg + < 0, 0, -150 >, mins, maxs, [ player ], TRACE_MASK_PLAYERSOLID | TRACE_MASK_SOLID | TRACE_MASK_SHOT, TRACE_COLLISION_GROUP_PLAYER ) + vector GoodAngles = AnglesOnSurface(result.surfaceNormal, AnglesToForward(player.EyeAngles())) + + decoy.SetAngles( Vector(GoodAngles.x, player.GetAngles().y, GoodAngles.z) ) + + Remote_CallFunction_NonReplay( player, "PROPHUNT_AddUsageToHint", 1) + Remote_CallFunction_NonReplay( player, "PROPHUNT_CustomHint", 4, 0) + } else + { + Remote_CallFunction_NonReplay( player, "PROPHUNT_CustomHint", 2, 0) + } +} + +void function ClientCommand_EmitFlashBangToNearbyPlayers(entity player) +{ + if(!IsValid(player) || IsValid(player) && player.GetTeam() != TEAM_MILITIA || GetGameState() != eGameState.Playing) return + + player.p.PROPHUNT_FlashbangPropUsageLimit = player.p.PROPHUNT_FlashbangPropUsageLimit + 1 + if (player.p.PROPHUNT_FlashbangPropUsageLimit <= PROPHUNT_FLASH_BANG_USAGE_LIMIT) + { + + foreach(sPlayer in GetPlayerArray_Alive()) + { + if(!IsValid(sPlayer)) continue + + if(sPlayer == player || player.GetTeam() == sPlayer.GetTeam() ) continue + + float playerDist = Distance2D( player.GetOrigin(), sPlayer.GetOrigin() ) + if ( playerDist <= PROPHUNT_FLASH_BANG_RADIUS ) + { + Remote_CallFunction_NonReplay( sPlayer, "PROPHUNT_DoScreenFlashFX", sPlayer, player) + + StatusEffect_AddTimed( sPlayer, eStatusEffect.turn_slow, 0.35, 3.0, 0.5 ) + StatusEffect_AddTimed( sPlayer, eStatusEffect.move_slow, 0.50, 3.0, 0.5 ) + } + } + EmitSoundOnEntityExceptToPlayer(player, player, "explo_proximityemp_impact_3p") + Remote_CallFunction_NonReplay( player, "PROPHUNT_DoScreenFlashFX", player, player) + Remote_CallFunction_NonReplay( player, "PROPHUNT_AddUsageToHint", 2) + Remote_CallFunction_NonReplay( player, "PROPHUNT_CustomHint", 6, 0) + entity trailFXHandle = StartParticleEffectInWorld_ReturnEntity(GetParticleSystemIndex( $"P_plasma_exp_SM" ), player.GetOrigin(), ) + entity trailFXHandle2 = StartParticleEffectInWorld_ReturnEntity(GetParticleSystemIndex( $"P_impact_exp_xo_shield_med_CP" ), player.GetOrigin(), ) + + entity smokes = StartParticleEffectInWorld_ReturnEntity( GetParticleSystemIndex( $"P_smokescreen_FD" ), player.GetOrigin(), <0,0,0> ) + EmitSoundOnEntity( smokes, "bangalore_smoke_grenade_explosion_3p" ) + + entity circle = CreateEntity( "prop_dynamic" ) + circle.SetValueForModelKey( $"mdl/fx/ar_edge_sphere_512.rmdl" ) + circle.kv.modelscale = 1.2 + circle.SetOrigin( player.GetOrigin() + <0.0, 0.0, -25>) + circle.SetAngles( <0, 0, 0> ) + DispatchSpawn(circle) + circle.SetParent(player) + + thread HandleCircleEntity(player, circle) + thread HandleSmokesEntity(player, smokes) + + if(player.p.PROPHUNT_FlashbangPropUsageLimit == PROPHUNT_FLASH_BANG_USAGE_LIMIT && IsValid(player.GetOffhandWeapon( OFFHAND_ULTIMATE ))) + player.TakeOffhandWeapon( OFFHAND_ULTIMATE ) + } else + { + Remote_CallFunction_NonReplay( player, "PROPHUNT_CustomHint", 2, 0) + } +} + +void function HandleCircleEntity(entity player, entity circle) +{ + EndSignal(player, "OnDeath") + float endTime = Time() + 1 + + OnThreadEnd( + function() : ( circle ) + { + if(IsValid(circle)) + circle.Destroy() + }) + + while( Time() <= endTime && IsValid(player) && FS_PROPHUNT.InProgress) + WaitFrame() +} + +void function HandleSmokesEntity(entity player, entity smokes) +{ + EndSignal(player, "OnDeath") + float endTime = Time() + 5 + + OnThreadEnd( + function() : ( smokes ) + { + if(IsValid(smokes)) + smokes.Destroy() + }) + + while( Time() <= endTime && IsValid(player) && FS_PROPHUNT.InProgress) + WaitFrame() +} + +bool function ClientCommand_PROPHUNT_EmitWhistle(entity player, array < string > args) +{ + if(!IsValid(player) || IsValid(player) && player.GetTeam() != TEAM_MILITIA || GetGameState() != eGameState.Playing) return false + + EmitSoundAtPosition( TEAM_UNASSIGNED, player.GetOrigin(), "explo_mgl_impact_3p" ) + return true +} + +bool function ClientCommand_PROPHUNT_AskForTeam(entity player, array < string > args) +{ + if( !IsValid(player) || args.len() != 1 || !FS_PROPHUNT.votingtime || player.p.teamasked != -1 ) return false + + switch(args[0]) + { + case "0": + if(FS_PROPHUNT.requestsforIMC <= FS_PROPHUNT.maxvotesallowedforTeamIMC) + { + player.p.teamasked = 0 + FS_PROPHUNT.requestsforIMC++ + } + + if(FS_PROPHUNT.requestsforIMC == FS_PROPHUNT.maxvotesallowedforTeamIMC) + { + foreach(sPlayer in GetPlayerArray()) //no more votes allowed for imc, disable this button for all players that have not voted yet and select the other team for them + { + if(!IsValid(sPlayer) || IsValid(sPlayer) && sPlayer == player ) continue + + if(sPlayer.p.teamasked == -1) + { + sPlayer.p.teamasked = 1 + Remote_CallFunction_NonReplay(sPlayer, "PROPHUNT_Disable_IMCButton") + } + } + } + break + + case "1": + if(FS_PROPHUNT.requestsforMILITIA <= FS_PROPHUNT.maxvotesallowedforTeamMILITIA) + { + player.p.teamasked = 1 + FS_PROPHUNT.requestsforMILITIA++ + } + + if(FS_PROPHUNT.requestsforMILITIA == FS_PROPHUNT.maxvotesallowedforTeamMILITIA) + { + foreach(sPlayer in GetPlayerArray()) //no more votes allowed for militia, disable this button for all players that have not voted yet and select the other team for them + { + if(!IsValid(sPlayer) || IsValid(sPlayer) && sPlayer == player ) continue + + if(sPlayer.p.teamasked == -1) + { + sPlayer.p.teamasked = 0 + Remote_CallFunction_NonReplay(sPlayer, "PROPHUNT_Disable_MILITIAButton") + } + } + } + break + + default: + player.p.teamasked = -1 + break + } + + return true +} + +bool function ClientCommand_PROPHUNT_debugProphuntModels(entity player, array < string > args) +{ + player.SetBodyModelOverride( prophuntAssets[int(args[0])] ) + player.SetArmsModelOverride( prophuntAssets[int(args[0])] ) + player.p.PROPHUNT_LastPropEntity.SetModel( prophuntAssets[int(args[0])] ) + + return true +} + +void function PROPHUNT_GiveRandomPrimaryWeapon(entity player) +{ + if(!IsValid(player)) return + + int slot = WEAPON_INVENTORY_SLOT_PRIMARY_0 + + array Weapons = [ + "mp_weapon_wingman optic_cq_hcog_classic highcal_mag_l2", + "mp_weapon_r97 optic_cq_hcog_classic bullets_mag_l2 stock_tactical_l2 barrel_stabilizer_l1", + "mp_weapon_pdw optic_cq_hcog_classic highcal_mag_l3 stock_tactical_l3", + "mp_weapon_wingman optic_cq_hcog_classic highcal_mag_l3", + "mp_weapon_vinson stock_tactical_l2 highcal_mag_l3", + "mp_weapon_hemlok optic_cq_hcog_classic stock_tactical_l2 highcal_mag_l2 barrel_stabilizer_l2", + "mp_weapon_lmg barrel_stabilizer_l1 stock_tactical_l3", + "mp_weapon_energy_ar energy_mag_l2 stock_tactical_l3", + "mp_weapon_alternator_smg bullets_mag_l3 stock_tactical_l3 barrel_stabilizer_l3", + "mp_weapon_rspn101 stock_tactical_l2 bullets_mag_l2 barrel_stabilizer_l1", + "mp_weapon_r97 optic_cq_holosight bullets_mag_l2 stock_tactical_l3 barrel_stabilizer_l4_flash_hider", + "mp_weapon_energy_shotgun shotgun_bolt_l2", + "mp_weapon_pdw highcal_mag_l3 stock_tactical_l2", + "mp_weapon_autopistol bullets_mag_l2", + "mp_weapon_alternator_smg optic_cq_holosight bullets_mag_l3 stock_tactical_l3 barrel_stabilizer_l3", + "mp_weapon_energy_ar energy_mag_l1 stock_tactical_l3 hopup_turbocharger", + "mp_weapon_vinson stock_tactical_l3 highcal_mag_l3", + "mp_weapon_rspn101 stock_tactical_l1 bullets_mag_l3 barrel_stabilizer_l2" + ] + + array Data = split(Weapons[RandomIntRange( 0, Weapons.len())], " ") + string weaponclass = Data[0] + + array Mods + foreach(string mod in Data) + { + if(strip(mod) != "" && strip(mod) != weaponclass) + Mods.append( strip(mod) ) + } + + entity weapon = player.GiveWeapon( weaponclass, slot, Mods ) + // try{ + // weapon.SetSkin(RandomInt(20)) + // weapon.SetCamo(RandomInt(5))}catch(e420){} +} \ No newline at end of file diff --git a/vscripts/gamemodes/fs_prophunt/cl_gamemode_prophunt.nut b/vscripts/gamemodes/fs_prophunt/cl_gamemode_prophunt.nut new file mode 100644 index 000000000..ba4feead7 --- /dev/null +++ b/vscripts/gamemodes/fs_prophunt/cl_gamemode_prophunt.nut @@ -0,0 +1,886 @@ +//FLOWSTATE PROPHUNT +//Made by @CafeFPS (Retículo Endoplasmático#5955) + +// AyeZee#6969 -- Ctf voting phase to work off +// _RitzKing#1715 -- Gamemode Icon +// everyone else -- advice +untyped + +global function ClGamemodeProphunt_Init +global function PROPHUNT_DoScreenFlashFX +global function PROPHUNT_EnableControlsUI +global function PROPHUNT_RemoveControlsUI +global function PROPHUNT_CustomHint +global function PROPHUNT_AddUsageToHint +global function PROPHUNT_StartMiscTimer +global function PROPHUNT_QuickText +global function PROPHUNT_UpdateThirdPersonCameraPosition + +global function CreateAndMoveCameraToWinnerProp +global function GetWinnerPropCameraEntities +global function ClientAskedForTeam +global function PROPHUNT_Disable_MILITIAButton +global function PROPHUNT_Disable_IMCButton +global function ForceDisableHuntersAbilityHint +global function EnableHuntersAbility + +struct { + LocationSettings &selectedLocation + array locationSettings + int teamwon + vector victorySequencePosition = < 0, 0, 10000 > + vector victorySequenceAngles = < 0, 0, 0 > + SquadSummaryData winnerSquadSummaryData + bool forceShowSelectedLocation = false + array inputHintRuis + var activeQuickHint = null +} file + +struct { + int gamestarttime + int endingtime + int seconds +} clientgametimer + +struct { + entity e + entity m +} winnerpropcam + +void function ClGamemodeProphunt_Init() +{ + SetConVarInt("cl_quota_stringCmdsPerSecond", 100) + //I don't want these things in user screen even if they launch in debug + SetConVarBool( "cl_showpos", false ) + SetConVarBool( "cl_showfps", false ) + SetConVarBool( "cl_showgpustats", false ) + SetConVarBool( "cl_showsimstats", false ) + SetConVarBool( "host_speeds", false ) + SetConVarBool( "con_drawnotify", false ) + SetConVarBool( "enable_debug_overlays", false ) + + RegisterSignal("ChallengeStartRemoveCameras") + RegisterSignal("ChangeCameraToSelectedLocation") + RegisterSignal("PROPHUNT_ShutdownWhistleAndRoundTimer") + RegisterSignal("PROPHUNT_ShutdownPropsHidingTimer") + RegisterSignal("PROPHUNT_ShutdownHuntersAbilityTimer") + PrecacheParticleSystem($"P_shell_shock_FP") + PrecacheParticleSystem($"P_screen_smoke_bangalore_FP") + AddClientCallback_OnResolutionChanged( ReloadMenuRUI ) + //AddCallback_EntitiesDidLoad( NotifyRingTimer ) +} + +void function PROPHUNT_EnableControlsUI(bool isAttacker, float starttime) +{ + entity player = GetLocalClientPlayer() + SetDpadMenuHidden() + Minimap_DisableDraw_Internal() + player.p.PROPHUNT_ChangePropUsageLimit = 0 + player.p.PROPHUNT_DecoysPropUsageLimit = 0 + player.p.PROPHUNT_FlashbangPropUsageLimit = 0 + player.p.PROPHUNT_AreAnglesLocked = false + + SetConVarFloat("c_thirdpersonshoulderaimdist", 135) + SetConVarFloat("c_thirdpersonshoulderheight", 55) + SetConVarFloat("c_thirdpersonshoulderoffset", 0) + + ScorebarInitTracking( player, ClGameState_GetRui() ) + + clientgametimer.gamestarttime = starttime.tointeger() + clientgametimer.endingtime = clientgametimer.gamestarttime + int(GetCurrentPlaylistVarFloat("flowstatePROPHUNTLimitTime", 300 )) + + if(!isAttacker) + { + Hud_SetEnabled(HudElement( "ScreenBlur1" ), true) + Hud_SetVisible(HudElement( "ScreenBlur1" ), true) + + Hud_SetEnabled(HudElement( "ScreenBlur3" ), true) + Hud_SetVisible(HudElement( "ScreenBlur3" ), true) + + Hud_SetEnabled(HudElement( "PropControlsTitle" ), true) + Hud_SetVisible(HudElement( "PropControlsTitle" ), true) + + Hud_SetEnabled(HudElement( "RoundTimer" ), true) + Hud_SetVisible(HudElement( "RoundTimer" ), true) + + Hud_SetEnabled(HudElement( "WhistleTimer" ), true) + Hud_SetVisible(HudElement( "WhistleTimer" ), true) + thread UpdateWhistleTimer() + Hud_SetEnabled(HudElement( "ScreenBlur2" ), true) + Hud_SetVisible(HudElement( "ScreenBlur2" ), true) + + Hud_SetEnabled(HudElement( "ProphuntHint0" ), true) + Hud_SetVisible(HudElement( "ProphuntHint0" ), true) + + Hud_SetEnabled(HudElement( "ProphuntHint1" ), true) + Hud_SetVisible(HudElement( "ProphuntHint1" ), true) + + Hud_SetEnabled(HudElement( "ProphuntHint2" ), true) + Hud_SetVisible(HudElement( "ProphuntHint2" ), true) + + Hud_SetEnabled(HudElement( "ProphuntHint3" ), true) + Hud_SetVisible(HudElement( "ProphuntHint3" ), true) + + Hud_SetEnabled(HudElement( "ProphuntHint4" ), true) + Hud_SetVisible(HudElement( "ProphuntHint4" ), true) + + Hud_SetEnabled(HudElement( "ProphuntHint5" ), true) + Hud_SetVisible(HudElement( "ProphuntHint5" ), true) + + Hud_SetText( HudElement( "ProphuntHint0"), "%attack% Change Prop x" + ( PROPHUNT_CHANGE_PROP_USAGE_LIMIT - player.p.PROPHUNT_ChangePropUsageLimit ).tostring() ) + Hud_SetText( HudElement( "ProphuntHint1"), "%zoom% Lock Angles") + Hud_SetText( HudElement( "ProphuntHint2"), "%reload% Match Surface") + Hud_SetText( HudElement( "ProphuntHint3"), "%offhand1% Stim Tactical") + Hud_SetText( HudElement( "ProphuntHint4"), "%melee% Place Decoy x" + ( PROPHUNT_DECOYS_USAGE_LIMIT - player.p.PROPHUNT_DecoysPropUsageLimit ).tostring() ) + Hud_SetText( HudElement( "ProphuntHint5"), "%offhand4% Flash Grenade x" + PROPHUNT_FLASH_BANG_USAGE_LIMIT.tostring()) + + player.p.isAttackerProphunt = false + var screenSize = Hud.GetScreenSize() + + HudElement( "ScreenBlur2" ).SetSize( 238*screenSize[0]/1760, 275*screenSize[1]/990 ) + HudElement( "ScreenBlur1" ).SetPos( -35, -35 ) + Hud_SetText( HudElement( "RoundTimer"), "WAITING FOR HUNTERS") + Hud_SetText( HudElement( "PropControlsTitle"), "PROP CONTROLS") + GetLocalClientPlayer().p.isRoundTimerEnabled = false + } else + { + Hud_SetEnabled(HudElement( "ScreenBlur1" ), true) + Hud_SetVisible(HudElement( "ScreenBlur1" ), true) + + Hud_SetEnabled(HudElement( "ScreenBlur2" ), true) + Hud_SetVisible(HudElement( "ScreenBlur2" ), true) + + Hud_SetEnabled(HudElement( "PropControlsTitle" ), true) + Hud_SetVisible(HudElement( "PropControlsTitle" ), true) + + Hud_SetEnabled(HudElement( "RoundTimer" ), true) + Hud_SetVisible(HudElement( "RoundTimer" ), true) + + Hud_SetEnabled(HudElement( "ProphuntHint0" ), true) + Hud_SetVisible(HudElement( "ProphuntHint0" ), true) + + UIPos pos = REPLACEHud_GetPos( HudElement( "ScreenBlur2" ) ) + UISize size = REPLACEHud_GetSize( HudElement( "ScreenBlur2" ) ) + + var position = HudElement( "ScreenBlur2" ).GetPos() + var screenSize = Hud.GetScreenSize() + + HudElement( "ScreenBlur2" ).SetSize( 238*screenSize[0]/1760, 65*screenSize[1]/990 ) + HudElement( "ScreenBlur1" ).SetPos( -39, -301 ) + + player.p.isAttackerProphunt = true + + Hud_SetText( HudElement( "PropControlsTitle"), "HUNTER CONTROLS") + Signal(player, "PROPHUNT_ShutdownPropsHidingTimer") + Signal(player, "PROPHUNT_ShutdownWhistleAndRoundTimer") + thread Thread_PROPHUNT_HuntersAbilityTimer(true) + + GetLocalClientPlayer().p.isAttackersAbilityEnabled = false + GetLocalClientPlayer().p.isRoundTimerEnabled = true + thread Thread_PROPHUNT_Timer() + } + + RuiSetImage( Hud_GetRui( HudElement( "ProphuntMessagesBox" ) ), "basicImage", $"rui/flowstatecustom/prophunt_quicktext") +} + +void function Thread_PROPHUNT_Timer() +{ + entity player = GetLocalClientPlayer() + EndSignal(player, "PROPHUNT_ShutdownWhistleAndRoundTimer") + + while (true) + { + int elapsedtime = clientgametimer.endingtime - Time().tointeger() + + DisplayTime dt = SecondsToDHMS( elapsedtime ) + Hud_SetText( HudElement( "RoundTimer"), "ROUND ENDS IN " + format( "%.2d:%.2d", dt.minutes, dt.seconds )) + + wait 1 + } +} + +void function Thread_PROPHUNT_HuntersAbilityTimer(bool isroundstart = false, bool wasresolutionchanged = false) +{ + entity player = GetLocalClientPlayer() + EndSignal(player, "PROPHUNT_ShutdownHuntersAbilityTimer") + + OnThreadEnd( + function() : ( player ) + { + Hud_SetText( HudElement( "ProphuntHint0"), "%offhand4% Change All Props" ) + } + ) + + if(!wasresolutionchanged) + { + if(isroundstart) + player.p.savedAbilityTimer = PROPHUNT_ATTACKERS_ABILITY_COOLDOWN/2 + else + player.p.savedAbilityTimer = PROPHUNT_ATTACKERS_ABILITY_COOLDOWN + } + + while (true) + { + if(player.p.savedAbilityTimer == 0) + break + Hud_SetText( HudElement( "ProphuntHint0"), " %offhand4% Available In " + player.p.savedAbilityTimer + "s" ) + wait 1 + player.p.savedAbilityTimer -- + } +} + +void function ForceDisableHuntersAbilityHint() +{ + thread Thread_PROPHUNT_HuntersAbilityTimer(false) + GetLocalClientPlayer().p.isAttackersAbilityEnabled = false +} + +void function EnableHuntersAbility() +{ + Signal(GetLocalClientPlayer(), "PROPHUNT_ShutdownHuntersAbilityTimer") + Hud_SetText( HudElement( "ProphuntHint0"), "%offhand4% Change All Props" ) + GetLocalClientPlayer().p.savedAbilityTimer = 0 + GetLocalClientPlayer().p.isAttackersAbilityEnabled = true +} + +void function PROPHUNT_StartMiscTimer(bool isPropTeam) +{ + thread function() : (isPropTeam) + { + Hud_SetEnabled(HudElement( "ProphuntMessagesBox" ), true) + Hud_SetVisible(HudElement( "ProphuntMessagesBox" ), true) + + Hud_SetEnabled(HudElement( "MiscTimer" ), true) + Hud_SetVisible(HudElement( "MiscTimer" ), true) + + RuiSetImage( Hud_GetRui( HudElement( "ProphuntMessagesBox" ) ), "basicImage", $"rui/flowstatecustom/prophunt_quicktext") + + entity player = GetLocalClientPlayer() + + EndSignal(player, "PROPHUNT_ShutdownPropsHidingTimer") + + OnThreadEnd( + function() : ( player ) + { + Hud_SetEnabled(HudElement( "ProphuntMessagesBox" ), false) + Hud_SetVisible(HudElement( "ProphuntMessagesBox" ), false) + + Hud_SetEnabled(HudElement( "MiscTimer" ), false) + Hud_SetVisible(HudElement( "MiscTimer" ), false) + } + ) + + int time = PROPHUNT_TELEPORT_ATTACKERS_DELAY + string text + + while(true) + { + if(time == 0) + { + text = "TELEPORTING NOW" + Hud_SetText( HudElement( "MiscTimer"), text) + wait 1 + break + }else if(time == -1) + { + time = PROPHUNT_WHISTLE_TIMER + if(isPropTeam) + text = "HUNTERS ARRIVING " + time.tostring() + else + text = "PROPS ARE HIDING " + time.tostring() + } else + { + if(isPropTeam) + text = "HUNTERS ARRIVING " + time.tostring() + else + text = "PROPS ARE HIDING " + time.tostring() + } + + Hud_SetText( HudElement( "MiscTimer"), text) + time-- + wait 1 + } + }() +} + +void function PROPHUNT_QuickText(int index, int duration) +{ + thread function() : (index, duration) + { + entity player = GetLocalClientPlayer() + + EndSignal(player, "OnDeath") + + Hud_SetEnabled(HudElement( "ProphuntMessagesBox" ), true) + Hud_SetVisible(HudElement( "ProphuntMessagesBox" ), true) + + Hud_SetEnabled(HudElement( "MiscTimer" ), true) + Hud_SetVisible(HudElement( "MiscTimer" ), true) + + RuiSetImage( Hud_GetRui( HudElement( "ProphuntMessagesBox" ) ), "basicImage", $"rui/flowstatecustom/prophunt_quicktext") + + OnThreadEnd( + function() : ( player, index ) + { + if(!IsValid(player)) return + + Hud_SetEnabled(HudElement( "ProphuntMessagesBox" ), false) + Hud_SetVisible(HudElement( "ProphuntMessagesBox" ), false) + + Hud_SetEnabled(HudElement( "MiscTimer" ), false) + Hud_SetVisible(HudElement( "MiscTimer" ), false) + + switch(index) + { + case 0: + EmitSoundOnEntity(player, "UI_InGame_HalftimeText_Exit") + break + case 1: + //EmitSoundOnEntity(player, "diag_ap_aiNotify_circleMoves30sec") + break + case 2: + //EmitSoundOnEntity(player, "diag_ap_aiNotify_circleMoves30sec") + break + } + } + ) + string msg = "" + switch(index) + { + case 0: + msg = "HALF TIME" + EmitSoundOnEntity(player, "UI_InGame_HalftimeText_Enter") + break + case 1: + msg = "30 SECONDS REMAINING" + EmitSoundOnEntity(player, "diag_ap_aiNotify_circleMoves30sec") + break + case 2: + msg = "PROP REVEAL" + //EmitSoundOnEntity(player, "ui_ingame_transitiontokillreplay") + break + case 3: + msg = "PROPS VICTORY" + //EmitSoundOnEntity(player, "diag_ap_aiNotify_winnerFound") + break + case 4: + msg = "HUNTERS VICTORY" + EmitSoundOnEntity(player, "diag_ap_aiNotify_winnerFound") + break + } + Hud_SetText( HudElement( "MiscTimer"), msg) + + wait duration + }() +} + +void function UpdateWhistleTimer(bool fromChangedResolution = false) +{ + entity player = GetLocalClientPlayer() + + EndSignal(player, "PROPHUNT_ShutdownWhistleAndRoundTimer") + int time + + if(fromChangedResolution) + time = player.p.lastWhistleTimer + else + time = PROPHUNT_WHISTLE_TIMER + + string text + while(IsValid(player) && IsAlive(player)) + { + if(time == 0) + { + player.ClientCommand("EmitWhistle") + text = "MAKING NOISE" + + }else if(time == -1) + { + time = PROPHUNT_WHISTLE_TIMER + text = "NOISE IN " + time.tostring() + } else + { + text = "NOISE IN " + time.tostring() + } + + Hud_SetText( HudElement( "WhistleTimer"), text) + time-- + player.p.lastWhistleTimer = time + wait 1 + } +} + +void function PROPHUNT_RemoveControlsUI() +{ + RemoveAllHints() +} + +void function PROPHUNT_DoScreenFlashFX(entity player, entity propAttacker) +{ + entity viewPlayer = GetLocalClientPlayer() + + int fxHandle = StartParticleEffectOnEntityWithPos( viewPlayer, PrecacheParticleSystem( $"P_shell_shock_FP" ), FX_PATTACH_ABSORIGIN_FOLLOW, -1, viewPlayer.EyePosition(), <0,0,0> ) + EffectSetIsWithCockpit( fxHandle, true ) + + // int fxHandle2 = StartParticleEffectOnEntityWithPos( viewPlayer, PrecacheParticleSystem( $"P_shell_shock_FP" ), FX_PATTACH_ABSORIGIN_FOLLOW, -1, viewPlayer.EyePosition(), <0,0,0> ) + // EffectSetIsWithCockpit( fxHandle2, true ) + + int smokes = StartParticleEffectOnEntityWithPos( viewPlayer, PrecacheParticleSystem( $"P_screen_smoke_bangalore_FP"), FX_PATTACH_ABSORIGIN_FOLLOW, -1, viewPlayer.EyePosition(), <0,0,0> ) + EffectSetIsWithCockpit( smokes, true ) + + thread ShellShock_ScreenFXThink(player, fxHandle, smokes) + + if(player == propAttacker) return + + Obituary_Print_Localized( "Enemy prop " + propAttacker.GetPlayerName() + " used flashbang!", GetChatTitleColorForPlayer( player ), BURN_COLOR ) +} + +void function ShellShock_ScreenFXThink( entity player, int fxHandle, int smokes) // , int fxHandle2 +{ + player.EndSignal( "OnDeath" ) + + OnThreadEnd( + function() : ( fxHandle, smokes )//fxHandle2, + { + if ( !EffectDoesExist( fxHandle ) ) + return + + EffectStop( fxHandle, false, true ) + + // if ( !EffectDoesExist( fxHandle2 ) ) + // return + + // EffectStop( fxHandle2, false, true ) + + if ( !EffectDoesExist( smokes ) ) + return + + EffectStop( smokes, false, true ) + } + ) + if(!player.p.isAttackerProphunt) + wait 1 + else + wait 3 +} + +void function ReloadMenuRUI() +{ + RemoveAllHints(true) + entity player = GetLocalClientPlayer() + + if(!player.p.isAttackerProphunt) + { + player.p.isAttackerProphunt = false + + Hud_SetEnabled(HudElement( "ScreenBlur1" ), true) + Hud_SetVisible(HudElement( "ScreenBlur1" ), true) + + Hud_SetEnabled(HudElement( "ScreenBlur3" ), true) + Hud_SetVisible(HudElement( "ScreenBlur3" ), true) + + Hud_SetEnabled(HudElement( "PropControlsTitle" ), true) + Hud_SetVisible(HudElement( "PropControlsTitle" ), true) + + Hud_SetEnabled(HudElement( "RoundTimer" ), true) + Hud_SetVisible(HudElement( "RoundTimer" ), true) + + Hud_SetEnabled(HudElement( "WhistleTimer" ), true) + Hud_SetVisible(HudElement( "WhistleTimer" ), true) + + Hud_SetEnabled(HudElement( "ScreenBlur2" ), true) + Hud_SetVisible(HudElement( "ScreenBlur2" ), true) + + Hud_SetEnabled(HudElement( "ProphuntHint0" ), true) + Hud_SetVisible(HudElement( "ProphuntHint0" ), true) + + Hud_SetEnabled(HudElement( "ProphuntHint1" ), true) + Hud_SetVisible(HudElement( "ProphuntHint1" ), true) + + Hud_SetEnabled(HudElement( "ProphuntHint2" ), true) + Hud_SetVisible(HudElement( "ProphuntHint2" ), true) + + Hud_SetEnabled(HudElement( "ProphuntHint3" ), true) + Hud_SetVisible(HudElement( "ProphuntHint3" ), true) + + Hud_SetEnabled(HudElement( "ProphuntHint4" ), true) + Hud_SetVisible(HudElement( "ProphuntHint4" ), true) + + Hud_SetEnabled(HudElement( "ProphuntHint5" ), true) + Hud_SetVisible(HudElement( "ProphuntHint5" ), true) + + Hud_SetText( HudElement( "ProphuntHint0"), "%attack% Change Prop x" + ( PROPHUNT_CHANGE_PROP_USAGE_LIMIT - player.p.PROPHUNT_ChangePropUsageLimit ).tostring() ) + + if(player.p.PROPHUNT_AreAnglesLocked) + Hud_SetText( HudElement( "ProphuntHint1"), "%zoom% Unlock Angles") + else + Hud_SetText( HudElement( "ProphuntHint1"), "%zoom% Lock Angles") + + Hud_SetText( HudElement( "ProphuntHint2" ), "%reload% Match Surface") + Hud_SetText( HudElement( "ProphuntHint3" ), "%offhand1% Stim Tactical") + Hud_SetText( HudElement( "ProphuntHint4" ), "%melee% Place Decoy x" + ( PROPHUNT_DECOYS_USAGE_LIMIT - player.p.PROPHUNT_DecoysPropUsageLimit ).tostring() ) + Hud_SetText( HudElement( "ProphuntHint5" ), "%offhand4% Flash Grenade x" + PROPHUNT_FLASH_BANG_USAGE_LIMIT.tostring()) + + thread UpdateWhistleTimer(true) + } else + { + player.p.isAttackerProphunt = true + + Hud_SetEnabled(HudElement( "ScreenBlur1" ), true) + Hud_SetVisible(HudElement( "ScreenBlur1" ), true) + + Hud_SetEnabled(HudElement( "ScreenBlur2" ), true) + Hud_SetVisible(HudElement( "ScreenBlur2" ), true) + + Hud_SetEnabled(HudElement( "PropControlsTitle" ), true) + Hud_SetVisible(HudElement( "PropControlsTitle" ), true) + + Hud_SetEnabled(HudElement( "RoundTimer" ), true) + Hud_SetVisible(HudElement( "RoundTimer" ), true) + + Hud_SetEnabled(HudElement( "ProphuntHint0" ), true) + Hud_SetVisible(HudElement( "ProphuntHint0" ), true) + + UIPos pos = REPLACEHud_GetPos( HudElement( "ScreenBlur2" ) ) + UISize size = REPLACEHud_GetSize( HudElement( "ScreenBlur2" ) ) + + var position = HudElement( "ScreenBlur2" ).GetPos() + var screenSize = Hud.GetScreenSize() + + HudElement( "ScreenBlur2" ).SetSize( 238*screenSize[0]/1760, 65*screenSize[1]/990 ) + HudElement( "ScreenBlur1" ).SetPos( -39, -301 ) + Signal(player, "PROPHUNT_ShutdownPropsHidingTimer") + thread Thread_PROPHUNT_HuntersAbilityTimer(true, true) + Hud_SetText( HudElement( "PropControlsTitle"), "HUNTER CONTROLS") + + thread Thread_PROPHUNT_Timer() + } + + if(GetLocalClientPlayer().p.isRoundTimerEnabled) + thread Thread_PROPHUNT_Timer() +} + +void function AddInputHint( string buttonText, string hintText) +{ + UISize screenSize = GetScreenSize() + int offset = file.inputHintRuis.len() + + var topo = RuiTopology_CreatePlane( <( screenSize.width * 0.20),( screenSize.height * 0.15) + offset*45, 0>, , <0, float( screenSize.height )*1.1, 0>, false ) + var hintRui = RuiCreate( $"ui/announcement_quick_right.rpak", topo, RUI_DRAW_HUD, 0 ) + + RuiSetGameTime( hintRui, "startTime", Time() ) + RuiSetString( hintRui, "messageText", buttonText + " " + hintText ) + RuiSetFloat( hintRui, "duration", 9999999 ) + RuiSetFloat3( hintRui, "eventColor", SrgbToLinear( <255, 0, 119> / 255.0 ) ) + + file.inputHintRuis.append( hintRui ) +} + +void function PROPHUNT_AddUsageToHint( int index ) +{ + entity player = GetLocalClientPlayer() + + switch(index) + { + case 0: + player.p.PROPHUNT_ChangePropUsageLimit = player.p.PROPHUNT_ChangePropUsageLimit + 1 + ChangeInputHintString(0) + break + case 1: + player.p.PROPHUNT_DecoysPropUsageLimit = player.p.PROPHUNT_DecoysPropUsageLimit + 1 + ChangeInputHintString(3) + break + case 2: + player.p.PROPHUNT_FlashbangPropUsageLimit = player.p.PROPHUNT_FlashbangPropUsageLimit + 1 + ChangeInputHintString(4) + break + case 3: + ChangeInputHintString(1) + break + } + +} + +void function ChangeInputHintString( int index ) +{ + entity player = GetLocalClientPlayer() + + // var hintRui = file.inputHintRuis[index] + + string messageText + string hintButton + switch(index) + { + case 0: + messageText = "Change Prop x" + ( PROPHUNT_CHANGE_PROP_USAGE_LIMIT - player.p.PROPHUNT_ChangePropUsageLimit ).tostring() + hintButton = "%attack%" + Hud_SetText( HudElement( "ProphuntHint0"), hintButton + " " + messageText) + break + case 3: + messageText = "Place Decoy x" + ( PROPHUNT_DECOYS_USAGE_LIMIT - player.p.PROPHUNT_DecoysPropUsageLimit ).tostring() + hintButton = "%melee%" + Hud_SetText( HudElement( "ProphuntHint4"), hintButton + " " + messageText) + break + case 4: + messageText = "Flash Grenade x" + ( PROPHUNT_FLASH_BANG_USAGE_LIMIT - player.p.PROPHUNT_FlashbangPropUsageLimit ).tostring() + hintButton = "%offhand4%" + Hud_SetText( HudElement( "ProphuntHint5"), hintButton + " " + messageText) + break + case 1: + if(player.p.PROPHUNT_AreAnglesLocked) + { + messageText = "Lock Angles" + player.p.PROPHUNT_AreAnglesLocked = false + } + else + { + messageText = "Unlock Angles" + player.p.PROPHUNT_AreAnglesLocked = true + } + hintButton = "%zoom%" + Hud_SetText( HudElement( "ProphuntHint1"), hintButton + " " + messageText) + break + + } +} + +void function PROPHUNT_CustomHint(int index, int eHandle) +{ + if(!IsValid(GetLocalViewPlayer())) return + + switch(index) + { + case 0: + QuickHint("", "Angles locked") + EmitSoundOnEntity(GetLocalViewPlayer(), "UI_Menu_SelectMode_Close") + break + case 1: + QuickHint("", "Angles unlocked", true) + EmitSoundOnEntity(GetLocalViewPlayer(), "UI_InGame_FD_SliderExit" ) + break + case 2: + QuickHint("", "Limit reached!") + EmitSoundOnEntity(GetLocalViewPlayer(), "Survival_UI_Ability_NotReady") + break + case 3: + QuickHint("", "Prop angles matched with surface") + EmitSoundOnEntity(GetLocalViewPlayer(), "vdu_on") + break + case 4: + QuickHint("", "Decoy placed!", true) + EmitSoundOnEntity(GetLocalViewPlayer(), "ui_ingame_switchingsides" ) + break + case 5: + QuickHint("", "Hunters arrived!") + EmitSoundOnEntity(GetLocalViewPlayer(), "UI_PostGame_TitanSlideIn") + + GetLocalClientPlayer().p.isRoundTimerEnabled = true + thread Thread_PROPHUNT_Timer() + break + case 6: + QuickHint("", "Flashbang used!", true) + EmitSoundOnEntity(GetLocalViewPlayer(), "explo_proximityemp_impact_1p" ) + break + case 7: + //QuickHint("", "Prop changed!") + EmitSoundOnEntity(GetLocalViewPlayer(), "vdu_on") + break + case 8: + QuickHint("", "We have enough players. Starting now.", true, 4) + EmitSoundOnEntity(GetLocalViewPlayer(), "vdu_on") + break + case 9: + QuickHint("", "Waiting another player to start. Please wait.", false, 3) + EmitSoundOnEntity(GetLocalViewPlayer(), "vdu_on") + break + case 10: + QuickHint("", "You're a prop. Teleporting in 5 seconds.", true, 4) + EmitSoundOnEntity(GetLocalViewPlayer(), "vdu_on") + break + case 11: + Obituary_Print_Localized( "Hunter " + EHI_GetName(eHandle) + " changed all props form!", GetChatTitleColorForPlayer( GetLocalViewPlayer() ), BURN_COLOR ) + EmitSoundOnEntity(GetLocalViewPlayer(), "vdu_on") + break + case 12: + QuickHint("", "Hunters will be able to change your prop in 5 seconds.", true, 4) + EmitSoundOnEntity(GetLocalViewPlayer(), "vdu_on") + break + } +} + +void function QuickHint( string buttonText, string hintText, bool blueText = false, int duration = 2) +{ + if(file.activeQuickHint != null) + { + RuiDestroyIfAlive( file.activeQuickHint ) + file.activeQuickHint = null + } + file.activeQuickHint = CreateFullscreenRui( $"ui/announcement_quick_right.rpak" ) + + RuiSetGameTime( file.activeQuickHint, "startTime", Time() ) + RuiSetString( file.activeQuickHint, "messageText", buttonText + " " + hintText ) + RuiSetFloat( file.activeQuickHint, "duration", duration.tofloat() ) + + if(blueText) + RuiSetFloat3( file.activeQuickHint, "eventColor", SrgbToLinear( <48, 107, 255> / 255.0 ) ) + else + RuiSetFloat3( file.activeQuickHint, "eventColor", SrgbToLinear( <255, 0, 119> / 255.0 ) ) +} + +void function RemoveAllHints(bool wasResolutionChanged = false) +{ + foreach( rui in file.inputHintRuis ) + { + RuiDestroy( rui ) + } + file.inputHintRuis.clear() + Hud_SetEnabled(HudElement( "ScreenBlur1" ), false) + Hud_SetVisible(HudElement( "ScreenBlur1" ), false) + + Hud_SetEnabled(HudElement( "ScreenBlur3" ), false) + Hud_SetVisible(HudElement( "ScreenBlur3" ), false) + + Hud_SetEnabled(HudElement( "PropControlsTitle" ), false) + Hud_SetVisible(HudElement( "PropControlsTitle" ), false) + + Hud_SetEnabled(HudElement( "RoundTimer" ), false) + Hud_SetVisible(HudElement( "RoundTimer" ), false) + + Hud_SetEnabled(HudElement( "WhistleTimer" ), false) + Hud_SetVisible(HudElement( "WhistleTimer" ), false) + + Hud_SetEnabled(HudElement( "ScreenBlur2" ), false) + Hud_SetVisible(HudElement( "ScreenBlur2" ), false) + + Hud_SetEnabled(HudElement( "ProphuntHint0" ), false) + Hud_SetVisible(HudElement( "ProphuntHint0" ), false) + + Hud_SetEnabled(HudElement( "ProphuntHint1" ), false) + Hud_SetVisible(HudElement( "ProphuntHint1" ), false) + + Hud_SetEnabled(HudElement( "ProphuntHint2" ), false) + Hud_SetVisible(HudElement( "ProphuntHint2" ), false) + + Hud_SetEnabled(HudElement( "ProphuntHint3" ), false) + Hud_SetVisible(HudElement( "ProphuntHint3" ), false) + + Hud_SetEnabled(HudElement( "ProphuntHint4" ), false) + Hud_SetVisible(HudElement( "ProphuntHint4" ), false) + + Hud_SetEnabled(HudElement( "ProphuntHint5" ), false) + Hud_SetVisible(HudElement( "ProphuntHint5" ), false) + entity player = GetLocalClientPlayer() + Signal(player, "PROPHUNT_ShutdownWhistleAndRoundTimer") + + + if(!GetLocalClientPlayer().p.isRoundTimerEnabled) + Hud_SetText( HudElement( "RoundTimer"), "WAITING FOR HUNTERS") + else + Hud_SetText( HudElement( "RoundTimer"), "ROUND ENDS IN 00:00") + + SetConVarFloat("c_thirdpersonshoulderaimdist", 100) + SetConVarFloat("c_thirdpersonshoulderheight", 30) + SetConVarFloat("c_thirdpersonshoulderoffset", 20) + + if(!wasResolutionChanged) + { + player.p.PROPHUNT_AreAnglesLocked = false + player.p.PROPHUNT_ChangePropUsageLimit = 0 + player.p.PROPHUNT_DecoysPropUsageLimit = 0 + player.p.PROPHUNT_FlashbangPropUsageLimit = 0 + } +} + +void function ResetAbilitiesCounterOnClient() +{ + if(!IsValid(GetLocalClientPlayer())) return + + GetLocalClientPlayer().p.PROPHUNT_AreAnglesLocked = false + GetLocalClientPlayer().p.PROPHUNT_ChangePropUsageLimit = 0 + GetLocalClientPlayer().p.PROPHUNT_DecoysPropUsageLimit = 0 + GetLocalClientPlayer().p.PROPHUNT_FlashbangPropUsageLimit = 0 +} +void function CreateAndMoveCameraToWinnerProp(entity winnerProp) +{ + thread function() : (winnerProp) + { + entity localplayer = GetLocalClientPlayer() + + if(!IsValid(winnerProp) || localplayer != GetLocalViewPlayer() ) return + + winnerpropcam.m = CreateClientsideScriptMover( $"mdl/dev/empty_model.rmdl", localplayer.EyePosition(), localplayer.CameraAngles() ) + winnerpropcam.e = CreateClientSidePointCamera( localplayer.GetOrigin(), localplayer.CameraAngles(), 100 ) + winnerpropcam.e.SetParent( winnerpropcam.m, "", false ) + localplayer.SetMenuCameraEntityWithAudio( winnerpropcam.e ) + winnerpropcam.e.SetTargetFOV( 100, true, EASING_CUBIC_INOUT, 0.50 ) + + //last movement + vector finalorg = winnerProp.GetOrigin() + AnglesToForward( winnerProp.EyeAngles() ) * 130 + finalorg.z+= 100 + + vector finalang = VectorToAngles( winnerProp.GetWorldSpaceCenter() - finalorg ) + + winnerpropcam.m.NonPhysicsMoveTo( finalorg, 2, 0, 0.3 ) + winnerpropcam.m.NonPhysicsRotateTo( finalang, 2, 0, 0.3 ) + + wait 1 + if(IsValid(localplayer)) + EmitSoundOnEntity(localplayer, "ui_ingame_transitiontokillreplay") + }() +} + +array function GetWinnerPropCameraEntities() +{ + array cameras + cameras.append(winnerpropcam.e) + cameras.append(winnerpropcam.m) + + return cameras +} + +void function ClientAskedForTeam(int index) +{ + entity player = GetLocalClientPlayer() + + switch(index) + { + case 0: + player.ClientCommand("AskForTeam 0") + break + + case 1: + player.ClientCommand("AskForTeam 1") + break + + default: + break + } +} + +void function PROPHUNT_Disable_MILITIAButton() +{ + entity player = GetLocalClientPlayer() + + if(!IsValid(player)) return + + RunUIScript("Disable_MILITIAButton") + +} + +void function PROPHUNT_Disable_IMCButton() +{ + entity player = GetLocalClientPlayer() + + if(!IsValid(player)) return + + RunUIScript("Disable_IMCButton") +} + +void function PROPHUNT_UpdateThirdPersonCameraPosition(float height) +{ + entity player = GetLocalClientPlayer() + + SetConVarFloat("c_thirdpersonshoulderaimdist", 100+min(80, height*1)) + SetConVarFloat("c_thirdpersonshoulderheight", 10+min(80, height*0.5)) + SetConVarFloat("c_thirdpersonshoulderoffset", 0) +} \ No newline at end of file diff --git a/vscripts/gamemodes/fs_prophunt/sh_gamemode_prophunt.nut b/vscripts/gamemodes/fs_prophunt/sh_gamemode_prophunt.nut new file mode 100644 index 000000000..68c041fb0 --- /dev/null +++ b/vscripts/gamemodes/fs_prophunt/sh_gamemode_prophunt.nut @@ -0,0 +1,736 @@ +//FLOWSTATE PROPHUNT +//Made by @CafeFPS (Retículo Endoplasmático#5955) + +// AyeZee#6969 -- Ctf voting phase to work off +// _RitzKing#1715 -- Gamemode Icon +// everyone else -- advice + +global function GamemodeProphuntShared_Init +global function RegisterLocationPROPHUNT +global function GetCenterOfCircle + +global const int PROPHUNT_CHANGE_PROP_USAGE_LIMIT = 5 +global const int PROPHUNT_FLASH_BANG_RADIUS = 600 +global const int PROPHUNT_DECOYS_USAGE_LIMIT = 5 +global const int PROPHUNT_FLASH_BANG_USAGE_LIMIT = 5 +global const int PROPHUNT_WHISTLE_RADIUS = 2000 +global const int PROPHUNT_WHISTLE_TIMER = 25 +global const int PROPHUNT_TELEPORT_ATTACKERS_DELAY = 60 //hiding props time too +global const int PROPHUNT_ATTACKERS_ABILITY_COOLDOWN = 60 + +global int PROPHUNT_HUNTERS_AMOUNT_ALLOWED +global int PROPHUNT_PROPS_AMOUNT_ALLOWED + +global struct ProphuntPlayerInfo_PROPS +{ + string name + int timessurvived + int survivaltime +} + +global struct ProphuntPlayerInfo_HUNTERS +{ + string name + int propskilled +} + +global array prophuntAssets = [] + +void function GamemodeProphuntShared_Init() +{ + SurvivalFreefall_Init() //Enables freefall/skydive + + switch(GetMapName()) + { + case "mp_rr_canyonlands_mu1": + + prophuntAssets = [ + $"mdl/barriers/concrete/concrete_barrier_01.rmdl", + $"mdl/vehicles_r5/land/msc_truck_samson_v2/veh_land_msc_truck_samson_v2.rmdl", + $"mdl/angel_city/vending_machine.rmdl", + $"mdl/utilities/power_gen1.rmdl", + $"mdl/angel_city/box_small_02.rmdl", + $"mdl/colony/antenna_05_colony.rmdl", + $"mdl/angel_city/box_small_01.rmdl", + $"mdl/containers/slumcity_oxygen_tank_red.rmdl", + $"mdl/containers/box_shrinkwrapped.rmdl", + $"mdl/colony/farmland_fridge_01.rmdl", + $"mdl/colony/farmland_crate_plastic_01_red.rmdl", + $"mdl/IMC_base/generator_IMC_01.rmdl", + $"mdl/garbage/trash_can_metal_02_b.rmdl", + $"mdl/garbage/trash_bin_single_wtrash.rmdl" + $"mdl/containers/slumcity_oxygen_tank_blue.rmdl", + $"mdl/containers/barrel.rmdl", + $"mdl/containers/container_medium_tanks_blue.rmdl", + $"mdl/containers/underbelly_cargo_container_128_red_02.rmdl", + $"mdl/containers/underbelly_cargo_container_128_blue_02.rmdl", + $"mdl/containers/pelican_case_large.rmdl", + $"mdl/colony/farmland_crate_md_80x64x72_01.rmdl", + $"mdl/angel_city/vending_machine.rmdl", + //nuevos kc + $"mdl/rocks/thunderdome_quarry_block_02_orange.rmdl", + $"mdl/colony/farmland_crate_plastic_01.rmdl", + $"mdl/colony/water_heater_red.rmdl", + $"mdl/colony/antenna_01_colony_pole.rmdl", + $"mdl/containers/gas_tank.rmdl", + $"mdl/containers/crate_orange_plastic.rmdl", + $"mdl/containers/lagoon_roof_tanks_01.rmdl", + $"mdl/thunderdome/thunderdome_cut_rock_large_01.rmdl", + $"mdl/eden/eden_electrical_transformer_01.rmdl", + $"mdl/barriers/sandbags_curved_01.rmdl", + $"mdl/barriers/guard_rail_01_64.rmdl", + $"mdl/barriers/concrete/concrete_barrier_fence.rmdl", + $"mdl/barriers/guard_rail_01_256.rmdl", + $"mdl/vehicles_r5/land/msc_forklift_imc_v2/veh_land_msc_forklift_imc_v2_static.rmdl", + $"mdl/beacon/beacon_server_stand_01.rmdl", + $"mdl/nexus/hay_bale_01_round.rmdl", + $"mdl/nexus/fir_log_pile_01.rmdl", + $"mdl/nexus/hay_bale_01_straps.rmdl" + + + ] + + RegisterLocationPROPHUNT( + NewLocationSettings( + "Hillside Outspot", + [ + NewLocPair(<-19300, 4678, 3230>, <0, -100, 0>), + NewLocPair(<-16763, 4465, 3020>, <1, 18, 0>), + NewLocPair(<-20153, 1127, 3060>, <11, 170, 0>), + NewLocPair(<-16787, 3540, 3075>, <0, 86, 0>), + NewLocPair(<-19026, 3749, 4460>, <0, 2, 0>), + NewLocPair(<-17030.5059, 2388.69922, 2839.93335>,<0, 75.5948486, 0>), + NewLocPair(<-17177.373, 3861.9397, 2903.16895>,<0, -178.642105, 0>), + NewLocPair(<-18008.9551, 4168.15088, 3001.29395>,<0, -21.2121582, 0>), + NewLocPair(<-18366.0156, 2325.30273, 3626.2981>,<0, -177.12085, 0>), + NewLocPair(<-18810.4629, 3258.021, 3635.05151>,<0, -64.3844833, 0>) + ], + <0, 0, 3000>,$"rui/flowstatelocations/hillside" + ) + ) + + RegisterLocationPROPHUNT( + NewLocationSettings( + "Skull Town", + [ + NewLocPair(<-9320, -13528, 3167>, <0, -100, 0>), + NewLocPair(<-7544, -13240, 3161>, <0, -115, 0>), + NewLocPair(<-10250, -18320, 3323>, <0, 100, 0>), + NewLocPair(<-13261, -18100, 3337>, <0, 20, 0>), + NewLocPair(<-10814.5586, -16410.5391, 3856.77319>,<0, -38.5158501, 0>), + NewLocPair(<-10473.9404, -16024.3477, 3901.43262>,<0, -34.6810913, 0>), + NewLocPair(<-8734.7041, -16469.7344, 3208.71533>,<0, -108.860077, 0>), + NewLocPair(<-10615.4395, -17777.127, 3159.24707>,<0, 43.0446396, 0>), + NewLocPair(<-11566.0879, -17012.9453, 3154.54297>,<0, 95.893692, 0>), + NewLocPair(<-12583.5811, -15106.4648, 3259.06519>,<0, 25.4997368, 0>), + NewLocPair(<-9621.58008, -17746.0156, 3179.7666>,<0, 89.6492081, 0>), + NewLocPair(<-8039.30566, -17382.6992, 3174.5835>,<0, 112.115288, 0>) + ], + <0, 0, 3000>,$"rui/flowstatelocations/skulltown" + ) + ) + RegisterLocationPROPHUNT( + NewLocationSettings( + "Containment", + [ + NewLocPair(<-7291, 19547, 2978>, <0, -65, 0>), + NewLocPair(<-3906, 19557, 2733>, <0, -123, 0>), + NewLocPair(<-3084, 16315, 2566>, <0, 144, 0>), + NewLocPair(<-6517, 15833, 2911>, <0, 51, 0>), + NewLocPair(<-6325.41797, 17395.4219, 3058.27148>,<0, -50.0188675, 0>), + NewLocPair(<-5990.51318, 16260.3838, 3282.94336>,<0, 85.6426392, 0>), + NewLocPair(<-4402.61523, 16541.2891, 2888.02124>,<0, 90.3426895, 0>), + NewLocPair(<-4830.92334, 17571.6328, 3891.23779>,<0, 129.336548, 0>), + NewLocPair(<-6240.06494, 19593.8496, 2796.3291>,<0, -67.6390762, 0>) + ], + <0, 0, 3000>,$"rui/flowstatelocations/containment" + ) + ) + + // RegisterLocationPROPHUNT( + // NewLocationSettings( + // "Gaunlet", + // [ + // NewLocPair(<-21271, -15275, 2781>, <0, 90, 0>), + // NewLocPair(<-22952, -13304, 2718>, <0, 5, 0>), + // NewLocPair(<-22467, -9567, 2949>, <0, -85, 0>), + // NewLocPair(<-18494, -10427, 2825>, <0, -155, 0>), + // NewLocPair(<-22590, -7534, 3103>, <0, 0, 0>), + // NewLocPair(<-19144.0469, -13831.9307, 2885.34009>,<0, 114.135735, 0>), + // NewLocPair(<-21118.3496, -13426.8838, 3267.69751>,<0, 92.8888092, 0>), + // NewLocPair(<-20688.4414, -13218.4688, 2590.52026>,<0, 119.666588, 0>), + // NewLocPair(<-20970.3105, -12526.0381, 2604.68213>,<0, 84.2326584, 0>), + // NewLocPair(<-21092.6875, -14138.5742, 2901.44849>,<0, 140.832993, 0>) + // ], + // <0, 0, 4000>,$"rui/flowstatelocations/gaunlet" + // ) + // ) + + RegisterLocationPROPHUNT( + NewLocationSettings( + "Market", + [ + NewLocPair(<-110, -9977, 2987>, <0, 0, 0>), + NewLocPair(<-1605, -10300, 3053>, <0, -100, 0>), + NewLocPair(<4600, -11450, 2950>, <0, 180, 0>), + NewLocPair(<3150, -11153, 3053>, <0, 100, 0>), + NewLocPair(<1526.54724, -9814.23926, 3382.51367>,<0, -96.077919, 0>), + NewLocPair(<2527.8833, -10010.7725, 3347.18506>,<0, -82.0662231, 0>), + NewLocPair(<3474.97314, -10081.4277, 3329.40747>,<0, -111.653938, 0>), + NewLocPair(<3384.8772, -10686.1895, 2976.70996>,<0, -179.954941, 0>), + NewLocPair(<1665.42896, -10973.292, 3325.89233>,<0, 87.6322632, 0>) + ], + <0, 0, 3000>,$"rui/flowstatelocations/market" + ) + ) + RegisterLocationPROPHUNT( + NewLocationSettings( + "Labs", + [ + NewLocPair(<27576, 8062, 2910>, <0, -115, 0>), + NewLocPair(<24545, 2387, 4100>, <0, -7, 0>), + NewLocPair(<25924, 2161, 3848>, <0, -9, 0>), + NewLocPair(<28818, 2590, 3798>, <0, 117, 0>), + NewLocPair(<26160.0293, 3163.60229, 3240.58228>,<0, 17.6068058, 0>), + NewLocPair(<28126.6699, 2991.92944, 3438.99878>,<0, 112.35788, 0>), + NewLocPair(<27356.709, 4449.24316, 3697.13477>,<0, -94.8291779, 0>) + ], + <0, 0, 3000>,$"rui/flowstatelocations/labs" + ) + ) + RegisterLocationPROPHUNT( + NewLocationSettings( + "Repulsor", + [ + NewLocPair(<28095, -16983, 4786>, <0, 140, 0>), + NewLocPair(<29475, -12237, 5769>, <0, -157, 0>), + NewLocPair(<20567, -13551, 4821>, <0, -39, 0>), + NewLocPair(<22026, -17661, 5789>, <0, 21, 0>), + NewLocPair(<26036, -17590, 5694>, <0, 90, 0>), + NewLocPair(<26670, -16729, 4926>, <0, -180, 0>), + NewLocPair(<27784, -16166, 5046>, <0, -180, 0>), + NewLocPair(<27133, -16074, 5630>, <0, -90, 0>), + NewLocPair(<27051, -14200, 5582>, <0, -90, 0>) + ], + <0, 0, 3000>,$"rui/flowstatelocations/repulsor" + ) + ) + + RegisterLocationPROPHUNT( + NewLocationSettings( + "Cage", + [ + NewLocPair(<15604, -1068, 5833>, <0, -126, 0>), + NewLocPair(<18826, -4314, 5032>, <0, 173, 0>), + NewLocPair(<19946, 32, 4960>, <0, -168, 0>), + NewLocPair(<12335, -1446, 3984>, <0, 2, 0>), + NewLocPair(<13906.8184, -2018.16125, 3934.21411>,<0, 57.8257103, 0>), + NewLocPair(<15384.8828, -1184.42346, 4603.6748>,<0, -14.5582685, 0>), + NewLocPair(<15625.2549, -1304.52209, 5709.05469>,<0, 151.716797, 0>), + NewLocPair(<15533.6895, 378.72757, 4613.93506>,<0, -86.3438873, 0>) + ], + <0, 0, 3000>,$"rui/flowstatelocations/cage" + ) + ) + + RegisterLocationPROPHUNT( + NewLocationSettings( + "Swamps", + [ + NewLocPair(<37886, -4012, 3300>, <0, 167, 0>), + NewLocPair(<34392, -5974, 3017>, <0, 51, 0>), + NewLocPair(<29457, -2989, 2895>, <0, -17, 0>), + NewLocPair(<34582, 2300, 2998>, <0, -92, 0>), + NewLocPair(<35757, 3256, 3290>, <0, -90, 0>), + NewLocPair(<36422, 3109, 3500>, <0, -165, 0>), + NewLocPair(<34965, 1718, 3529>, <0, 45, 0>), + NewLocPair(<32654, -1552, 3500>, <0, -90, 0>) + + ], + <0, 0, 3000>,$"rui/flowstatelocations/swamps" + ) + ) + + RegisterLocationPROPHUNT( + NewLocationSettings( + "Relay", + [ + NewLocPair(<26420, 31700, 4790>, <0, -90, 0>), + NewLocPair(<29260, 26245, 4210>, <0, 45, 0>), + NewLocPair(<29255, 24360, 4210>, <0, 0, 0>), + NewLocPair(<24445, 28970, 4340>, <0, -90, 0>), + NewLocPair(<27735, 27880, 4370>, <0, 180, 0>), + NewLocPair(<25325, 25725, 4270>, <0, 0, 0>), + NewLocPair(<27675, 25745, 4370>, <0, 0, 0>), + NewLocPair(<24375, 27050, 4325>, <0, 180, 0>), + NewLocPair(<24000, 23650, 4050>, <0, 135, 0>), + NewLocPair(<23935, 22080, 4200>, <0, 15, 0>) + ], + <0, 0, 3000>,$"rui/flowstatelocations/relay" + ) + ) + + RegisterLocationPROPHUNT( + NewLocationSettings( + "Slum Lakes", + [ + NewLocPair(<-20060, 23800, 2655>, <0, 110, 0>), + NewLocPair(<-20245, 24475, 2810>, <0, -160, 0>), + NewLocPair(<-25650, 22025, 2270>, <0, 20, 0>), + NewLocPair(<-25550, 21635, 2590>, <0, 20, 0>), + NewLocPair(<-25030, 24670, 2410>, <0, -75, 0>), + NewLocPair(<-23125, 25320, 2410>, <0, -20, 0>), + NewLocPair(<-21925, 21120, 2390>, <0, 180, 0>) + ], + <0, 0, 3000>,$"rui/flowstatelocations/slumlakes" + ) + ) + + RegisterLocationPROPHUNT( + NewLocationSettings( + "Little Town", + [ + NewLocPair(<-30190, 12473, 3186>, <0, -90, 0>), + NewLocPair(<-28773, 11228, 3210>, <0, 180, 0>), + NewLocPair(<-29802, 9886, 3217>, <0, 90, 0>), + NewLocPair(<-30895, 10733, 3202>, <0, 0, 0>) + ], + <0, 0, 3000>,$"rui/flowstatelocations/kclittletown" + ) + ) + + RegisterLocationPROPHUNT( + NewLocationSettings( + "Runoff", + [ + NewLocPair(<-23380, 9634, 3371>, <0, 90, 0>), + NewLocPair(<-24917, 11273, 3085>, <0, 0, 0>), + NewLocPair(<-23614, 13605, 3347>, <0, -90, 0>), + NewLocPair(<-24697, 12631, 3085>, <0, 0, 0>) + ], + <0, 0, 3000>,$"rui/flowstatelocations/runoff" + ) + ) + + RegisterLocationPROPHUNT( + NewLocationSettings( + "Aeonopolis", + [ + NewLocPair(<11242, 8591, 4830>, <0, 0, 0>), + NewLocPair(<6657, 12189, 5066>, <0, -90, 0>), + NewLocPair(<7540, 8620, 5374>, <0, 89, 0>) + NewLocPair(<2326.99902, 9479.35547, 3285.5686>,<0, -0.576593876, 0>), + NewLocPair(<3378.27563, 11322.5547, 3076.6665>,<0, -36.3084145, 0>), + NewLocPair(<5299.32813, 10557.082, 3673.81982>,<0, 164.837448, 0>), + NewLocPair(<4780.20654, 8356.84863, 4089.06177>,<0, 107.167992, 0>) + ], + <0, 0, 3000>,$"rui/flowstatelocations/thefarm" + ) + ) + + RegisterLocationPROPHUNT( + NewLocationSettings( + "Thunderdome", + [ + NewLocPair(<-20216, -21612, 3191>, <0, -67, 0>), + NewLocPair(<-16035, -20591, 3232>, <0, -133, 0>), + NewLocPair(<-16584, -24859, 2642>, <0, 165, 0>), + NewLocPair(<-19019, -26209, 2640>, <0, 65, 0>), + NewLocPair(<-18597.3945, -20683.5313, 2925.68896>,<0, -92.47892, 0>), + NewLocPair(<-15106.6631, -22193.6934, 3043.68042>,<0, -122.203957, 0>), + NewLocPair(<-16093.2119, -24896.3496, 3154.95996>,<0, 158.63353, 0>), + NewLocPair(<-19700.002, -21213.0313, 3521.97876>,<0, -51.6356506, 0>), + NewLocPair(<-18551.9102, -23733.8301, 4746.57031>,<0, 40.1287155, 0>), + NewLocPair(<-15827.498, -21485.2305, 3216.41382>,<0, -96.8535309, 0>), + NewLocPair(<-18183.5996, -25747.2891, 2756.88452>,<0, 99.2026978, 0>), + NewLocPair(<-20057.3164, -23134.1191, 2596.95361>,<0, -8.30639935, 0>) + ], + <0, 0, 2000>,$"rui/flowstatelocations/thunderdome" + ) + ) + RegisterLocationPROPHUNT( + NewLocationSettings( + "Water Treatment", + [ + NewLocPair(<5583, -30000, 3070>, <0, 0, 0>), + NewLocPair(<7544, -29035, 3061>, <0, 130, 0>), + NewLocPair(<10091, -30000, 3070>, <0, 180, 0>), + NewLocPair(<8487, -28838, 3061>, <0, -45, 0>), + NewLocPair(<6544.66455, -29117, 3200.05591>,<0, -44.7344246, 0>), + NewLocPair(<9038.57422, -31199.7852, 3102.63599>,<0, 48.6750031, 0>), + NewLocPair(<9157.78809, -29951.9668, 3873.7229>,<0, -2.8198905, 0>), + ], + <0, 0, 3000>,$"rui/flowstatelocations/watert" + ) + ) + + // RegisterLocationPROPHUNT( + // NewLocationSettings( + // "The Pit", + // [ + // NewLocPair(<-18558, 13823, 3605>, <0, 20, 0>), + // NewLocPair(<-16514, 16184, 3772>, <0, -77, 0>), + // NewLocPair(<-13826, 15325, 3749>, <0, 160, 0>), + // NewLocPair(<-16160, 14273, 3770>, <0, 101, 0>) + // ], + // <0, 0, 7000>,$"rui/flowstatelocations/pit" + // ) + // ) + + RegisterLocationPROPHUNT( + NewLocationSettings( + "Airbase", + [ + NewLocPair(<-24140, -4510, 2583>, <0, 90, 0>), + NewLocPair(<-28675, 612, 2600>, <0, 18, 0>), + NewLocPair(<-24688, 1316, 2583>, <0, 180, 0>), + NewLocPair(<-26492, -5197, 2574>, <0, 50, 0>), + NewLocPair(<-26304.3945, -4347.16602, 2554.1416>,<0, -21.3504105, 0>), + NewLocPair(<-25275.1406, -5934.34912, 2620.34619>,<0, 69.685997, 0>), + NewLocPair(<-24313.0508, -1477.07495, 3559.13696>,<0, 163.994537, 0>), + NewLocPair(<-25072.6992, -3499.8147, 2565.59424>,<0, -97.5897827, 0>) + ], + <0, 0, 3000>,$"rui/flowstatelocations/airbase" + ) + ) + break + + case "mp_rr_desertlands_64k_x_64k_nx": + case "mp_rr_desertlands_64k_x_64k": + + prophuntAssets = [ + $"mdl/barriers/concrete/concrete_barrier_01.rmdl", + $"mdl/vehicles_r5/land/msc_truck_samson_v2/veh_land_msc_truck_samson_v2.rmdl", + $"mdl/angel_city/vending_machine.rmdl", + $"mdl/utilities/power_gen1.rmdl", + $"mdl/angel_city/box_small_02.rmdl", + $"mdl/colony/antenna_05_colony.rmdl", + $"mdl/garbage/trash_bin_single_wtrash_Blue.rmdl", + $"mdl/angel_city/box_small_01.rmdl", + $"mdl/garbage/dumpster_dirty_open_a_02.rmdl", + $"mdl/containers/slumcity_oxygen_tank_red.rmdl", + $"mdl/containers/box_shrinkwrapped.rmdl", + $"mdl/colony/farmland_fridge_01.rmdl", + $"mdl/furniture/chair_beanbag_01.rmdl", + $"mdl/colony/farmland_crate_plastic_01_red.rmdl", + $"mdl/IMC_base/generator_IMC_01.rmdl", + $"mdl/garbage/trash_can_metal_02_b.rmdl", + $"mdl/garbage/trash_bin_single_wtrash.rmdl" + //nuevos + $"mdl/containers/slumcity_oxygen_bag_large_01_b.rmdl", + $"mdl/containers/slumcity_oxygen_tank_blue.rmdl", + $"mdl/containers/barrel.rmdl", + $"mdl/containers/container_medium_tanks_blue.rmdl", + $"mdl/containers/underbelly_cargo_container_128_red_02.rmdl", + $"mdl/containers/underbelly_cargo_container_128_blue_02.rmdl", + $"mdl/containers/pelican_case_large.rmdl", + $"mdl/containers/box_med_cardboard_03.rmdl", + $"mdl/furniture/couch_suede_brown_01.rmdl", + $"mdl/colony/farmland_crate_md_80x64x72_01.rmdl", + $"mdl/colony/farmland_crate_md_80x64x72_03.rmdl", + $"mdl/industrial/vending_machine_02.rmdl", + $"mdl/angel_city/jersey_barrier_large_02.rmdl", + $"mdl/angel_city/vending_machine.rmdl" + + ] + + RegisterLocationPROPHUNT( + NewLocationSettings( + "TTV Building", + [ + NewLocPair(<11407, 6778, -4295>, <0, 88, 0>), + NewLocPair(<11973, 4158, -4220>, <0, 82, 0>), + NewLocPair(<9956, 3435, -4239>, <0, 0, 0>), + NewLocPair(<9038, 3800, -4120>, <0, -88, 0>), + NewLocPair(<7933, 6692, -4250>, <0, 76, 0>), + NewLocPair(<8990, 5380, -4250>, <0, 145, 0>), + NewLocPair(<8200, 5463, -3815>, <0, 0, 0>), + NewLocPair(<9789, 5363, -3480>, <0, 174, 0>), + NewLocPair(<9448, 5804, -4000>, <0, 0, 0>), + NewLocPair(<8135, 4087, -4233>, <0, 90, 0>), + NewLocPair(<9761, 5980, -4250>, <0, 135, 0>), + NewLocPair(<11393, 5477, -4289>, <0, 90, 0>), + NewLocPair(<12027, 7121, -4290>, <0, -120, 0>), + NewLocPair(<8105, 6156, -4300>, <0, -45, 0>), + NewLocPair(<9420, 5528, -4236>, <0, 90, 0>), + NewLocPair(<8277, 6304, -3940>, <0, 0, 0>), + NewLocPair(<8186, 5513, -3828>, <0, 0, 0>), + NewLocPair(<8243, 4537, -4235>, <-13, 32, 0>), + NewLocPair(<11700, 6207, -4435>, <-10, 90, 0>), + NewLocPair(<11181, 5862, -3900>, <0, -180, 0>), + NewLocPair(<9043, 5866, -4171>, <0, 90, 0>), + NewLocPair(<11210, 4164, -4235>, <0, 90, 0>), + NewLocPair(<12775, 4446, -4235>, <0, 150, 0>), + NewLocPair(<9012, 5386, -4242>, <0, 90, 0>) + ], + <0, 0, 3000>,$"rui/flowstatelocations/ttvbuilding" + ) + ) + RegisterLocationPROPHUNT( + NewLocationSettings( + "Lava Fissure", + [ + NewLocPair(<-26550, 13746, -3048>, <0, -134, 0>), + NewLocPair(<-28877, 12943, -3109>, <0, -88.70, 0>), + NewLocPair(<-29881, 9168, -2905>, <-1.87, -2.11, 0>), + NewLocPair(<-27590, 9279, -3109>, <0, 90, 0>), + NewLocPair(<-27585, 9191, -3080>, <0, 89, 0>), + NewLocPair(<-26469, 9825, -2810>, <0, 87, 0>), + NewLocPair(<-27623, 10210, -3290>, <0, 87, 0>), + NewLocPair(<-25717, 13034, -3047>, <0, -176, 0>), + NewLocPair(<-26433, 13360, -3000>, <0, 68, 0>), + NewLocPair(<-26463, 13766, -3080>, <0, -95, 0>), + NewLocPair(<-28781, 13266, -3080>, <0, 80, 0>), + NewLocPair(<-27535, 10922, -3000>, <0, -94, 0>), + NewLocPair(<-29879, 9151, -2860>, <0, 0, 0>) + ], + <0, 0, 2500>,$"rui/flowstatelocations/lavafissure" + ) + ) + + RegisterLocationPROPHUNT( + NewLocationSettings( + "Space Elevator", + [ + NewLocPair(<-12286, 26037, -4012>, <0, -116, 0>), + NewLocPair(<-12318, 28447, -3975>, <0, -122, 0>), + NewLocPair(<-14373, 27785, -3961>, <0, -25, 0>), + NewLocPair(<-11638, 26123, -3983>, <0, 137, 0>), + NewLocPair(<-13348, 27630, -3535>, <3.01, 57.17, 0>), + NewLocPair(<-13772, 26473, -4000>, <0, 169, 0>), + NewLocPair(<-12366, 26209, -4000>, <0, -90, 0>), + NewLocPair(<-12063, 27640, -4000>, <0, -3, 0>), + NewLocPair(<-13732, 27577, -3500>, <0, -83, 0>), + NewLocPair(<-13732, 27577, -3500>, <0, -83, 0>), + NewLocPair(<-12350, 26227, -3500>, <0, 148, 0>), + NewLocPair(<-13765, 27654, -2850>, <0, -65, 0>), + NewLocPair(<-12121, 26517, -2850>, <0, 124, 0>) + ], + <0, 0, 2000>,$"rui/flowstatelocations/spaceelevator" + ) + ) + + RegisterLocationPROPHUNT( + NewLocationSettings( + "Hammies Hideout", + [ + NewLocPair(<22857, 3449, -4050>, <0, -157, 0>), + NewLocPair(<19559, 232, -4035>, <0, 33, 0>), + NewLocPair(<19400, 4384, -4027>, <0, -35, 0>) + ], + <0, 0, 2000>,$"rui/flowstatelocations/littletown" + ) + ) + + RegisterLocationPROPHUNT( + NewLocationSettings( + "TTV Building 2", + [ + NewLocPair(<1313, 4450, -2990>, <0, 50, 0>), + NewLocPair(<2300, 6571, -4490>, <0, -96, 0>), + NewLocPair(<2617, 4668, -4250>, <0, 85, 0>), + NewLocPair(<1200, 4471, -4150>, <0, 50, 0>) + ], + <0, 0, 2000>,$"rui/flowstatelocations/ttvbuilding2" + ) + ) + + RegisterLocationPROPHUNT( + NewLocationSettings( + "Armag Town", + [ + NewLocPair(<-27219, -24393, -4497>, <0, 87, 0>), + NewLocPair(<-26483, -28042, -4209>, <0, 122, 0>), + NewLocPair(<-25174, -26091, -4550>, <0, 177, 0>), + NewLocPair(<-29512, -25863, -4462>, <0, 3, 0>), + NewLocPair(<-28380, -28984, -4102>, <0, 54, 0>) + ], + <0, 0, 2000>,$"rui/flowstatelocations/littletown2" + ) + ) + + RegisterLocationPROPHUNT( + NewLocationSettings( + "Dome", + [ + NewLocPair(<19351, -41456, -2192>, <0, 96, 0>), + NewLocPair(<22925, -37060, -2169>, <0, -156, 0>), + NewLocPair(<19772, -34549, -2232>, <0, -137, 0>), + NewLocPair(<17010, -37125, -2129>, <0, 81, 0>), + NewLocPair(<15223, -40222, -1998>, <0, 86, 0>) + ], + <0, 0, 2000>,$"rui/flowstatelocations/dome" + ) + ) + + // RegisterLocationPROPHUNT( + // NewLocationSettings( + // "Refinery", + // [ + // NewLocPair(<22970, 27159, -4612>, <0, 135, 0>), + // NewLocPair(<20430, 26481, -4200>, <0, 135, 0>), + // NewLocPair(<19142, 30982, -4612>, <0, -45, 0>), + // NewLocPair(<18285, 28602, -4200>, <0, -45, 0>), + // NewLocPair(<19228, 25592, -4821>, <0, 135, 0>), + // NewLocPair(<19495, 29283, -4821>, <0, -45, 0>), + // NewLocPair(<18470, 28330, -4370>, <0, 135, 0>), + // NewLocPair(<18461, 28405, -4199>, <0, 45, 0>), + // NewLocPair(<18284, 28492, -3992>, <0, -45, 0>), + // NewLocPair(<19428, 27190, -4140>, <0, -45, 0>), + // NewLocPair(<20435, 26254, -3950>, <0, -175, 0>), + // NewLocPair(<20222, 26549, -4316>, <0, 135, 0>), + // NewLocPair(<19444, 25605, -4602>, <0, 45, 0>), + // NewLocPair(<21751, 29980, -4226>, <0, -135, 0>), + // NewLocPair(<17570, 26915, -4637>, <0, -90, 0>), + // NewLocPair(<16715, 28017, -4650>, <0, -45, 0>) + // ], + // <0, 0, 6500>,$"rui/flowstatelocations/refinery" + // ) + // ) + + RegisterLocationPROPHUNT( + NewLocationSettings( + "Factory", + [ + NewLocPair(<495.42, -26649.92, -3038.36>, <10.60, 44.95, -0>), + NewLocPair(<648.07, -26450.72, -3547.97>, <10.20, 57.48, -0>), + NewLocPair(<1653.03, -22939.29, -3571.97>, <12.00, -1.80, -0>), + NewLocPair(<1722.22, -20823.69, -3719.31>, <7.45, -0.78, -0>), + NewLocPair(<2193.69, -25349.72, -3443.97>, <3.69, 15.20, -0>), + NewLocPair(<2557.95, -25035.46, -2971.97>, <2.00, 31.20, -0>), + NewLocPair(<2608.53, -21670.90, -3707.97>, <11.75, 89.78, -0>), + NewLocPair(<2240.71, -23184.89, -3187.97>, <-5.40, -87.58, -0>), + NewLocPair(<3507.99, -24980.33, -3571.97>, <-6.62, -36.62, -0>), + NewLocPair(<3954.13, -18102.04, -3582.36>, <-8.11, -29.47, 0>), + NewLocPair(<4450.69, -20891.45, -3507.85>, <11.16, -44.58, -0.00>), + NewLocPair(<6090.35, -25075.12, -3563.97>, <2.47, -0.46, -0>), + NewLocPair(<7415.33, -20497.42, -3631.94>, <8.72, 84.13, -0>), + NewLocPair(<7422.97, -17985.25, -3507.97>, <8.41, -45.65, -0>), + NewLocPair(<8240.16, -24245.68, -3547.97>, <8.23, 50.62, -0>), + NewLocPair(<9259.17, -22461.68, -3283.97>, <9.92, -28.07, -0>), + NewLocPair(<9534.27, -19869.87, -3331.97>, <3.73, -91.33, -0>), + NewLocPair(<10111.38, -20003.82, -2752.97>, <18.04, 84.92, -0>), + NewLocPair(<11252.87, -16981.14, -2752.97>, <17.64, -104.16, 0>), + NewLocPair(<11720.60, -19655.80, -3331.97>, <1.44, -116.68, -0>), + NewLocPair(<12233.26, -18075.12, -2581.72>, <4.60, -134.70, 0>), + ], + <0, 0, 3000>,$"rui/flowstatelocations/factory" + ) + ) + + RegisterLocationPROPHUNT( + NewLocationSettings( + "Lava City", + [ + NewLocPair(<22663, -28134, -2706>, <0, 40, 0>), + NewLocPair(<22844, -28222, -3030>, <0, 90, 0>), + NewLocPair(<22687, -27605, -3434>, <0, -90, 0>), + NewLocPair(<22610, -26999, -2949>, <0, 90, 0>), + NewLocPair(<22607, -26018, -2749>, <0, -90, 0>), + NewLocPair(<22925, -25792, -3500>, <0, -120, 0>), + NewLocPair(<24235, -27378, -3305>, <0, -100, 0>), + NewLocPair(<24345, -28872, -3433>, <0, -144, 0>), + NewLocPair(<24446, -28628, -3252>, <13, 0, 0>), + NewLocPair(<23931, -28043, -3265>, <0, 0, 0>), + NewLocPair(<27399, -28588, -3721>, <0, 130, 0>), + NewLocPair(<26610, -25784, -3400>, <0, -90, 0>), + NewLocPair(<26757, -26639, -3673>, <-10, 90, 0>), + NewLocPair(<26750, -26202, -3929>, <-10, -90, 0>) + ], + <0, 0, 3000>,$"rui/flowstatelocations/lavacity" + ) + ) + + RegisterLocationPROPHUNT( + NewLocationSettings( + "Thermal Station", + [ + NewLocPair(<-20091, -17683, -3984>, <0, -90, 0>), + NewLocPair(<-22919, -20528, -4010>, <0, 0, 0>), + NewLocPair(<-17140, -20710, -3973>, <0, -180, 0>), + NewLocPair(<-21054, -23399, -3850>, <0, 90, 0>), + NewLocPair(<-20938, -23039, -4252>, <0, 90, 0>), + NewLocPair(<-19361, -23083, -4252>, <0, 100, 0>), + NewLocPair(<-19264, -23395, -3850>, <0, 100, 0>), + NewLocPair(<-16756, -20711, -3982>, <0, 180, 0>), + NewLocPair(<-17066, -20746, -4233>, <0, 180, 0>), + NewLocPair(<-17113, -19622, -4200>, <10, -170, 0>), + NewLocPair(<-20092, -17684, -4252>, <0, -90, 0>), + NewLocPair(<-23069, -20567, -4214>, <-11, 146, 0>), + NewLocPair(<-20109, -20675, -4252>, <0, -90, 0>) + ], + <0, 0, 11000>,$"rui/flowstatelocations/thermalstation" + ) + ) + + RegisterLocationPROPHUNT( + NewLocationSettings( + "Epicenter", + [ + NewLocPair(<8712, 23164, -3944>, <0, -49, 0>), + NewLocPair(<14000, 21690, -3969>, <0, -130, 0>), + NewLocPair(<10377, 17994, -4236>, <0, -120, 0>), + NewLocPair(<13100, 18138, -4856>, <0, 120, 0>) + + ], + <0, 0, 2000>,$"rui/flowstatelocations/epicenter" + ) + ) + + RegisterLocationPROPHUNT( + NewLocationSettings( + "Overlook", + [ + NewLocPair(<32774, 6031, -3239>, <0, 117, 0>), + NewLocPair(<28381, 8963, -3224>, <0, 48, 0>), + NewLocPair(<26327, 11857, -2477>, <0, -43, 0>), + NewLocPair(<27303, 14528, -3047>, <0, -42, 0>) + ], + <0, 0, 2000>,$"rui/flowstatelocations/overlook" + ) + ) + + RegisterLocationPROPHUNT( + NewLocationSettings( + "Train yard", + [ + NewLocPair(<-11956,3021,-2988>, <0, 87, 0>), + NewLocPair(<-13829,2836,-3037>, <0, 122, 0>), + NewLocPair(<-12883,4502,-3340>, <0, 177, 0>), + NewLocPair(<-11412,3692,-3405>, <0, 3, 0>), + NewLocPair(<-14930,2065,-3140>, <0, 3, 0>) + ], + <0, 0, 2000>,$"rui/flowstatelocations/trainyard" + ) + ) + break + } +} + +void function RegisterLocationPROPHUNT(LocationSettings locationSettings) +{ + #if SERVER + _RegisterLocationPROPHUNT(locationSettings) + #endif + + #if CLIENT + Cl_RegisterLocation(locationSettings) + #endif + +} + +vector function GetCenterOfCircle( array spawns ) +{ + vector total + + foreach ( spawnLocation in spawns ) + { + total += spawnLocation.origin + } + + total.x /= float( spawns.len() ) + total.y /= float( spawns.len() ) + total.z /= float( spawns.len() ) + + return total +} diff --git a/vscripts/gamemodes/custom_surf/_gamemode_surf.nut b/vscripts/gamemodes/fs_surf/_gamemode_surf.nut similarity index 100% rename from vscripts/gamemodes/custom_surf/_gamemode_surf.nut rename to vscripts/gamemodes/fs_surf/_gamemode_surf.nut diff --git a/vscripts/gamemodes/custom_surf/_gamemode_surf2.nut b/vscripts/gamemodes/fs_surf/_gamemode_surf2.nut similarity index 100% rename from vscripts/gamemodes/custom_surf/_gamemode_surf2.nut rename to vscripts/gamemodes/fs_surf/_gamemode_surf2.nut diff --git a/vscripts/gamemodes/custom_tdm/_gamemode_flowstate.nut b/vscripts/gamemodes/fs_tdm/_gamemode_fsdm.nut similarity index 99% rename from vscripts/gamemodes/custom_tdm/_gamemode_flowstate.nut rename to vscripts/gamemodes/fs_tdm/_gamemode_fsdm.nut index 3e90b3750..3d4f853e8 100644 --- a/vscripts/gamemodes/custom_tdm/_gamemode_flowstate.nut +++ b/vscripts/gamemodes/fs_tdm/_gamemode_fsdm.nut @@ -596,7 +596,7 @@ void function __HighPingCheck(entity player) Warning("[Flowstate] -> Kicking " + player.GetPlayerName() + " -> [High Ping!]") ClientCommand( player, "disconnect" ) UpdatePlayerCounts() - } else if(GameRules_GetGameMode() == "custom_tdm"){ + } else if(GameRules_GetGameMode() == "flowstate_dm"){ Message(player, "FLOWSTATE", "Your latency: " + (int(player.GetLatency()* 1000) - 40) + " ms." , 5) } diff --git a/vscripts/gamemodes/custom_tdm/cl_gamemode_custom_tdm.nut b/vscripts/gamemodes/fs_tdm/cl_gamemode_fsdm.nut similarity index 100% rename from vscripts/gamemodes/custom_tdm/cl_gamemode_custom_tdm.nut rename to vscripts/gamemodes/fs_tdm/cl_gamemode_fsdm.nut diff --git a/vscripts/gamemodes/custom_tdm/custom_tdm_settings.nut b/vscripts/gamemodes/fs_tdm/fsdm_settings.nut similarity index 100% rename from vscripts/gamemodes/custom_tdm/custom_tdm_settings.nut rename to vscripts/gamemodes/fs_tdm/fsdm_settings.nut diff --git a/vscripts/gamemodes/custom_tdm/sh_gamemode_custom_tdm.nut b/vscripts/gamemodes/fs_tdm/sh_gamemode_fsdm.nut similarity index 100% rename from vscripts/gamemodes/custom_tdm/sh_gamemode_custom_tdm.nut rename to vscripts/gamemodes/fs_tdm/sh_gamemode_fsdm.nut diff --git a/vscripts/gamemodes/sh_gamemodes.gnut b/vscripts/gamemodes/sh_gamemodes.gnut index 501b61bb9..f1fd84237 100644 --- a/vscripts/gamemodes/sh_gamemodes.gnut +++ b/vscripts/gamemodes/sh_gamemodes.gnut @@ -167,7 +167,7 @@ void function GameModes_Init() gameMode = CUSTOM_TDM GameMode_Create( gameMode ) - GameMode_SetName( gameMode, "custom_tdm" ) + GameMode_SetName( gameMode, "flowstate_dm" ) GameMode_SetGameModeAnnouncement( gameMode, "phunt_modeDesc" ) GameMode_SetDesc( gameMode, "#PL_pilot_hunter_hint" ) GameMode_SetIcon( gameMode, $"ui/menu/playlist/tdm" ) diff --git a/vscripts/gamemodes/_gamemode_survival.nut b/vscripts/gamemodes/survival/_gamemode_survival.nut similarity index 100% rename from vscripts/gamemodes/_gamemode_survival.nut rename to vscripts/gamemodes/survival/_gamemode_survival.nut diff --git a/vscripts/gamemodes/cl_gamemode_survival.nut b/vscripts/gamemodes/survival/cl_gamemode_survival.nut similarity index 99% rename from vscripts/gamemodes/cl_gamemode_survival.nut rename to vscripts/gamemodes/survival/cl_gamemode_survival.nut index 040e4835e..90031de5f 100644 --- a/vscripts/gamemodes/cl_gamemode_survival.nut +++ b/vscripts/gamemodes/survival/cl_gamemode_survival.nut @@ -718,7 +718,7 @@ void function SURVIVAL_PopulatePlayerInfoRui( entity player, var rui ) if(RGB_HUD) thread RGBRui(rui) - if( GameRules_GetGameMode() != "custom_tdm" ) return + if( GameRules_GetGameMode() != "flowstate_dm" ) return if ( IsControllerModeActive() ) player.ClientCommand( "controllerstate true") diff --git a/vscripts/gamemodes/sh_gamemode_survival.nut b/vscripts/gamemodes/survival/sh_gamemode_survival.nut similarity index 100% rename from vscripts/gamemodes/sh_gamemode_survival.nut rename to vscripts/gamemodes/survival/sh_gamemode_survival.nut diff --git a/vscripts/lobby/lobbyvm/_lobbyvm.nut b/vscripts/lobby/lobbyvm/_lobbyvm.nut index dc8cde3da..502549a17 100644 --- a/vscripts/lobby/lobbyvm/_lobbyvm.nut +++ b/vscripts/lobby/lobbyvm/_lobbyvm.nut @@ -2,7 +2,7 @@ global function _LobbyVM_Init array playerarray -array PrivateMatchSettings = ["A R5Reloaded Server", "mp_rr_canyonlands_mu1", "custom_tdm", "2"] +array PrivateMatchSettings = ["A R5Reloaded Server", "mp_rr_canyonlands_mu1", "flowstate_dm", "2"] void function _LobbyVM_Init() { diff --git a/vscripts/mp/_codecallbacks.gnut b/vscripts/mp/_codecallbacks.gnut index a325e926b..89c88d2ee 100644 --- a/vscripts/mp/_codecallbacks.gnut +++ b/vscripts/mp/_codecallbacks.gnut @@ -61,7 +61,7 @@ void function OnClientConnected( entity player ) thread RecordPositions(player) //Afk autokick thread. Colombia - if(GameRules_GetGameMode() == "custom_tdm" || GameRules_GetGameMode() == "custom_ctf") + if(GameRules_GetGameMode() == "flowstate_dm" || GameRules_GetGameMode() == "custom_ctf") thread Flowstate_CheckPlayerIsAFK(player) // AccumulatedDamageData damageData diff --git a/vscripts/mp/levels/mp_rr_canyonlands_common.nut b/vscripts/mp/levels/mp_rr_canyonlands_common.nut index c526a16b1..2f9278558 100644 --- a/vscripts/mp/levels/mp_rr_canyonlands_common.nut +++ b/vscripts/mp/levels/mp_rr_canyonlands_common.nut @@ -87,7 +87,7 @@ void function Canyonlands_MapInit_Common() AddCallback_EntitiesDidLoad( EntitiesDidLoad ) #endif - if(GameRules_GetGameMode() == "custom_tdm" ) + if(GameRules_GetGameMode() == "flowstate_dm" ) return //printt( "Canyonlands_MapInit_Common" ) @@ -216,7 +216,7 @@ void function InitWaterLeviathans() void function EntitiesDidLoad() { - if(GetMapName() != "mp_rr_canyonlands_staging" && GameRules_GetGameMode() != "custom_tdm" && GameRules_GetGameMode() != "custom_aimtrainer") + if(GetMapName() != "mp_rr_canyonlands_staging" && GameRules_GetGameMode() != "flowstate_dm" && GameRules_GetGameMode() != "custom_aimtrainer") { InitLootDrones() //flyers InitLootRollers() //flyers @@ -231,7 +231,7 @@ void function __EntitiesDidLoad() SpawnEditorProps() } - if( GameRules_GetGameMode() != FREELANCE || GameRules_GetGameMode() != "custom_tdm") + if( GameRules_GetGameMode() != FREELANCE || GameRules_GetGameMode() != "flowstate_dm") { waitthread FindHoverTankEndNodes() SpawnHoverTanks() diff --git a/vscripts/mp/levels/mp_rr_desertlands_common.nut b/vscripts/mp/levels/mp_rr_desertlands_common.nut index 57a28caee..b9e761ea9 100644 --- a/vscripts/mp/levels/mp_rr_desertlands_common.nut +++ b/vscripts/mp/levels/mp_rr_desertlands_common.nut @@ -106,7 +106,7 @@ void function EntitiesDidLoad() FillLootTable() - if(GameRules_GetGameMode() != "custom_tdm" && GetMapName() != "mp_rr_desertlands_64k_x_64k_tt") + if(GameRules_GetGameMode() != "flowstate_dm" && GetMapName() != "mp_rr_desertlands_64k_x_64k_tt") { //InitLootDrones() //InitLootRollers() @@ -552,7 +552,7 @@ void function SetButtonSettings( entity panel ) StopSoundOnEntity( panel, "Desertlands_Mirage_TT_Firework_Streamer" ) StopSoundOnEntity( panel, "Desertlands_Mirage_TT_Firework_SkyBurst" ) - if ( GameRules_GetGameMode() == "custom_tdm" ) + if ( GameRules_GetGameMode() == "flowstate_dm" ) WaitForever() else wait 2 diff --git a/vscripts/scripts.rson b/vscripts/scripts.rson index 503d0df5c..8edd71d00 100644 --- a/vscripts/scripts.rson +++ b/vscripts/scripts.rson @@ -343,7 +343,7 @@ Scripts: melee/sh_melee.gnut melee/sh_melee_synced.gnut - gamemodes/sh_gamemode_survival.nut + gamemodes/survival/sh_gamemode_survival.nut sh_ping.gnut ] @@ -499,7 +499,7 @@ Scripts: conversation/_survival_commentary.gnut gamemodes/_gamemode_tdm.nut - gamemodes/_gamemode_survival.nut + gamemodes/survival/_gamemode_survival.nut mp/_base_gametype_mp.gnut mp/_playlist.gnut mp/_bombardment_utility.gnut @@ -587,7 +587,7 @@ Scripts: //cinematic_mp/_ai_skits_clientdebugging.nut //cinematic_mp/_cinematic_mp_client.nut - gamemodes/cl_gamemode_survival.nut + gamemodes/survival/cl_gamemode_survival.nut cl_survival_loot.nut cl_survival_inventory.nut @@ -829,6 +829,9 @@ Scripts: ui/R5RMenus/panel_map.nut ui/R5RMenus/panel_visibility.nut ui/CTFMenus/menu_ctf_vote.nut + //Statistics + ui/FlowstateDM/flowstate_statistics.nut + ui/FlowstateDM/flowstate_menu_vote.nut ] When: "SERVER || UI " @@ -919,25 +922,28 @@ Scripts: When: "SERVER || CLIENT" Scripts: [ - gamemodes/custom_tdm/sh_gamemode_custom_tdm.nut - gamemodes/custom_tdm/custom_tdm_settings.nut + gamemodes/fs_tdm/sh_gamemode_fsdm.nut + gamemodes/fs_tdm/fsdm_settings.nut gamemodes/custom_ctf/sh_gamemode_custom_ctf.nut gamemodes/custom_ctf/custom_ctf_settings.nut - gamemodes/custom_aimtrainer/sh_aimtrainer.nut + gamemodes/fs_aimtrainer/sh_gamemode_aimtrainer.nut + gamemodes/fs_prophunt/sh_gamemode_prophunt.nut + gamemodes/fs_duckhunt/sh_gamemode_duckhunt.nut lobby/lobbyvm/sh_lobbyvm.nut ] When: "SERVER" Scripts: [ - //gamemodes - gamemodes/custom_tdm/_gamemode_flowstate.nut - gamemodes/custom_tdm/_gamemode_1v1.nut + gamemodes/fs_tdm/_gamemode_fsdm.nut + gamemodes/fs_1v1/_gamemode_1v1.nut gamemodes/custom_ctf/_gamemode_custom_ctf.nut - gamemodes/custom_prophunt/_gamemode_prophunt.nut - gamemodes/custom_surf/_gamemode_surf.nut - gamemodes/custom_surf/_gamemode_surf2.nut - gamemodes/custom_aimtrainer/_aimtrainer.nut + gamemodes/fs_duckhunt/_gamemode_duckhunt.nut + gamemodes/fs_prophunt/_gamemode_prophunt.nut + gamemodes/fs_surf/_gamemode_surf.nut + gamemodes/fs_surf/_gamemode_surf2.nut + + gamemodes/fs_aimtrainer/_gamemode_aimtrainer.nut lobby/lobbyvm/_lobbyvm.nut //maps custom_maps/_custom_maps_1.nut @@ -959,9 +965,11 @@ Scripts: When: "CLIENT" Scripts: [ - gamemodes/custom_tdm/cl_gamemode_custom_tdm.nut + gamemodes/fs_tdm/cl_gamemode_fsdm.nut gamemodes/custom_ctf/cl_gamemode_custom_ctf.nut - gamemodes/custom_aimtrainer/cl_aimtrainer.nut + gamemodes/fs_aimtrainer/cl_gamemode_aimtrainer.nut + gamemodes/fs_duckhunt/cl_gamemode_duckhunt.nut + gamemodes/fs_prophunt/cl_gamemode_prophunt.nut lobby/lobbyvm/cl_lobbyvm.nut ] diff --git a/vscripts/sh_consts.gnut b/vscripts/sh_consts.gnut index b152704e0..d6ee137ba 100644 --- a/vscripts/sh_consts.gnut +++ b/vscripts/sh_consts.gnut @@ -96,7 +96,7 @@ global const MENUFALL = "menufall" global const TEAM_DEATHMATCH = "tdm" global const SURVIVAL = "survival" global const FREELANCE = "freelance" -global const CUSTOM_TDM = "custom_tdm" +global const CUSTOM_TDM = "flowstate_dm" global const CUSTOM_CTF = "custom_ctf" global const CUSTOM_AIMTRAINER = "custom_aimtrainer" global const MAP_EDITOR = "map_editor" diff --git a/vscripts/sh_dev_utility.nut b/vscripts/sh_dev_utility.nut index fbd4e68ad..d136aa05c 100644 --- a/vscripts/sh_dev_utility.nut +++ b/vscripts/sh_dev_utility.nut @@ -462,7 +462,7 @@ void function DevRespawnPlayer( entity player, bool shouldForce, void functionre { player.Die( null, null, { damageSourceId = eDamageSourceId.damagedef_suicide } ) - if( IsFiringRangeGameMode() || GameRules_GetGameMode() == "custom_tdm" ) + if( IsFiringRangeGameMode() || GameRules_GetGameMode() == "flowstate_dm" ) return wait 1.0 diff --git a/vscripts/sh_onboarding.gnut b/vscripts/sh_onboarding.gnut index a880922d7..326b3b6f4 100644 --- a/vscripts/sh_onboarding.gnut +++ b/vscripts/sh_onboarding.gnut @@ -144,7 +144,7 @@ void function Sequence_WaitingForPlayers() wait PreGame_GetWaitingForPlayersCountdown() + (introCountdownEnabled ? 0.0 : CharSelect_GetIntroMusicStartTime()) - if(GameRules_GetGameMode() == "custom_tdm") + if(GameRules_GetGameMode() == "flowstate_dm") { SetGameState( eGameState.Playing ) return @@ -618,7 +618,7 @@ void function OnClientConnected( entity player ) { case eGameState.WaitingForPlayers: case eGameState.PickLoadout: - if(GameRules_GetGameMode() == "custom_tdm") break + if(GameRules_GetGameMode() == "flowstate_dm") break entity startEnt = GetEnt( "info_player_start" ) @@ -677,7 +677,7 @@ void function UpdatePlayerCounts() { string currGameMode = GameRules_GetGameMode() - if(currGameMode == "custom_tdm"){ + if(currGameMode == "flowstate_dm"){ array connectedPlayers = GetPlayerArray_ConnectedNotSpectatorTeam() if(!GetCurrentPlaylistVarBool("flowstatePROPHUNT", false )){ diff --git a/vscripts/ui/R5RMenus/menu_lobby.nut b/vscripts/ui/R5RMenus/menu_lobby.nut index 27e192997..f5244a597 100644 --- a/vscripts/ui/R5RMenus/menu_lobby.nut +++ b/vscripts/ui/R5RMenus/menu_lobby.nut @@ -69,7 +69,7 @@ global table playlisttoname = { [ "survival" ] = "Battle Royale (Beta)", [ "FallLTM" ] = "ShadowFall", [ "duos" ] = "Duos (Beta)", - [ "custom_tdm" ] = "Flowstate TDM/FFA", + [ "flowstate_dm" ] = "Flowstate TDM/FFA", [ "movement_gym"] = "Movement Gym", [ "custom_ctf" ] = "Capture The Flag", [ "survival_dev" ] = "Survival Dev", diff --git a/vscripts/ui/R5RMenus/panel_createserver.nut b/vscripts/ui/R5RMenus/panel_createserver.nut index da78bf6c3..eff1403a9 100644 --- a/vscripts/ui/R5RMenus/panel_createserver.nut +++ b/vscripts/ui/R5RMenus/panel_createserver.nut @@ -72,7 +72,7 @@ void function InitR5RCreateServerPanel( var panel ) ServerSettings.svServerName = "My custom server" ServerSettings.svServerDesc = "A R5Reloaded server" ServerSettings.svMapName = "mp_rr_aqueduct" - ServerSettings.svPlaylist = "custom_tdm" + ServerSettings.svPlaylist = "flowstate_dm" ServerSettings.svVisibility = eServerVisibility.OFFLINE file.tempservername = ServerSettings.svServerName diff --git a/vscripts/ui/menu_dev.nut b/vscripts/ui/menu_dev.nut index 49541ed7c..f7970eaa4 100644 --- a/vscripts/ui/menu_dev.nut +++ b/vscripts/ui/menu_dev.nut @@ -276,16 +276,16 @@ void function SetupDefaultDevCommandsMP() if(GetCurrentPlaylistName() == "map_editor") SetupDevMenu( "Editor", SetDevMenu_Editor ) - if(GetCurrentPlaylistName() == "custom_tdm") + if(GetCurrentPlaylistName() == "flowstate_dm") SetupDevMenu( "TDM: Change Primary weapon", SetDevMenu_TDMPrimaryWeapons ) - if(GetCurrentPlaylistName() == "custom_tdm") + if(GetCurrentPlaylistName() == "flowstate_dm") SetupDevMenu( "TDM: Change Secondary weapon", SetDevMenu_TDMSecondaryWeapons ) - if(GetCurrentPlaylistName() == "custom_tdm") + if(GetCurrentPlaylistName() == "flowstate_dm") SetupDevCommand( "TDM: Save Current Weapons", "saveguns" ) - if(GetCurrentPlaylistName() == "custom_tdm") + if(GetCurrentPlaylistName() == "flowstate_dm") SetupDevCommand( "TDM: Reset Saved Weapons", "resetguns" ) if(GetCheatsState()){ diff --git a/vscripts/ui/menu_system.nut b/vscripts/ui/menu_system.nut index 4aab6574d..1540e2690 100644 --- a/vscripts/ui/menu_system.nut +++ b/vscripts/ui/menu_system.nut @@ -227,7 +227,7 @@ void function UpdateSystemPanel( var panel ) if ( (GetTeamSize( GetTeam() ) > 1) && FiringRangeHasFriendlyFire() ) SetButtonData( panel, buttonIndex++, file.friendlyFireButtonData[ panel ] ) } - if( GetCurrentPlaylistName() == "custom_tdm" && IsConnected() && !GetCurrentPlaylistVarBool("flowstate_1v1mode", false) ) + if( GetCurrentPlaylistName() == "flowstate_dm" && IsConnected() && !GetCurrentPlaylistVarBool("flowstate_1v1mode", false) ) { SetButtonData( panel, buttonIndex++, file.spectateButtonData[ panel ] ) SetButtonData( panel, buttonIndex++, file.respawnButtonData[ panel ] ) diff --git a/vscripts/weapons/mp_weapon_jump_pad.nut b/vscripts/weapons/mp_weapon_jump_pad.nut index 306267f9a..6fb8130aa 100644 --- a/vscripts/weapons/mp_weapon_jump_pad.nut +++ b/vscripts/weapons/mp_weapon_jump_pad.nut @@ -100,7 +100,7 @@ void function OnJumpPadPlanted( entity projectile ) newProjectile.kv.solid = 6 - if(gameMode != "custom_tdm") + if(gameMode != "flowstate_dm") { newProjectile.SetTakeDamageType( DAMAGE_YES ) newProjectile.SetMaxHealth( 100 ) @@ -118,7 +118,7 @@ void function OnJumpPadPlanted( entity projectile ) newProjectile.EndSignal( "OnDestroy" ) newProjectile.SetScriptName("jump_pad") - if(gameMode != "custom_tdm") + if(gameMode != "flowstate_dm") thread TrapDestroyOnRoundEnd( owner, newProjectile ) if ( IsValid( traceResult.hitEnt ) ) @@ -151,7 +151,7 @@ void function OnJumpPadPlanted( entity projectile ) JumpPad_CreatedCallback( newProjectile ) - if(gameMode == "custom_tdm"){ + if(gameMode == "flowstate_dm"){ thread JumpPadWatcher(newProjectile) } diff --git a/weapons/_base_assault_rifle.txt b/weapons/_base_assault_rifle.txt index 4f7fae2ce..c883ba92c 100644 --- a/weapons/_base_assault_rifle.txt +++ b/weapons/_base_assault_rifle.txt @@ -300,5 +300,10 @@ WeaponData "viewdrift_hipfire_air_scale_pitch" "0.0" "viewdrift_hipfire_air_scale_yaw" "0.0" } + + prophunt + { + "red_crosshair_range" "1" + } } } diff --git a/weapons/_base_handgun.txt b/weapons/_base_handgun.txt index 40ba8527b..5ceb2697a 100644 --- a/weapons/_base_handgun.txt +++ b/weapons/_base_handgun.txt @@ -311,5 +311,20 @@ WeaponData "viewdrift_hipfire_air_scale_pitch" "0.0" "viewdrift_hipfire_air_scale_yaw" "0.0" } + + prophunt + { + "red_crosshair_range" "1" + } + + infectionPerkQuickReload + { + "reload_time" "1.0" + "reload_time_late1" "0.50" + "reload_time_late2" "0.50" + "reloadempty_time" "1.0" + "reloadempty_time_late1" "0.50" + "reloadempty_time_late2" "0.50" + } } } diff --git a/weapons/_base_lmg.txt b/weapons/_base_lmg.txt index 9a54b959e..9fd6c45dc 100644 --- a/weapons/_base_lmg.txt +++ b/weapons/_base_lmg.txt @@ -92,6 +92,14 @@ WeaponData "viewdrift_hipfire_air_scale_yaw" "0.0" } - + infectionPerkQuickReload + { + "reload_time" "1.0" + "reload_time_late1" "0.50" + "reload_time_late2" "0.50" + "reloadempty_time" "1.0" + "reloadempty_time_late1" "0.50" + "reloadempty_time_late2" "0.50" + } } } diff --git a/weapons/_base_optics_cq.txt b/weapons/_base_optics_cq.txt index fdcbed1c5..f7dd4496b 100644 --- a/weapons/_base_optics_cq.txt +++ b/weapons/_base_optics_cq.txt @@ -142,7 +142,7 @@ WeaponData "viewmodel_ads_centerpoint_attachment" "ADS_CENTER_SIGHT_HCOG_OG" "viewmodel_offset_ads_by_centerpoint" "1" - "viewmodel_offset_ads" "0 13 -0.15" + "viewmodel_offset_ads" "0 13 0" "dof_zoom_nearDepthStart" "1.0" "dof_zoom_nearDepthEnd" "8.5" diff --git a/weapons/_base_shotgun.txt b/weapons/_base_shotgun.txt index 63c90b63f..a4816922a 100644 --- a/weapons/_base_shotgun.txt +++ b/weapons/_base_shotgun.txt @@ -275,5 +275,15 @@ WeaponData "viewdrift_hipfire_air_scale_pitch" "0.0" "viewdrift_hipfire_air_scale_yaw" "0.0" } + + infectionPerkQuickReload + { + "reload_time" "1.25" + "reload_time_late1" "0.50" + "reload_time_late2" "0.50" + "reloadempty_time" "1.25" + "reloadempty_time_late1" "0.50" + "reloadempty_time_late2" "0.50" + } } } diff --git a/weapons/_base_smg.txt b/weapons/_base_smg.txt index 69359a9b3..ac5bfa92f 100644 --- a/weapons/_base_smg.txt +++ b/weapons/_base_smg.txt @@ -306,5 +306,20 @@ Mods "viewdrift_hipfire_air_scale_pitch" "0.0" "viewdrift_hipfire_air_scale_yaw" "0.0" } + + prophunt + { + "red_crosshair_range" "1" + } + + infectionPerkQuickReload + { + "reload_time" "1.0" + "reload_time_late1" "0.50" + "reload_time_late2" "0.50" + "reloadempty_time" "1.0" + "reloadempty_time_late1" "0.50" + "reloadempty_time_late2" "0.50" + } } } diff --git a/weapons/_base_sniper.txt b/weapons/_base_sniper.txt index 452732893..38befdf80 100644 --- a/weapons/_base_sniper.txt +++ b/weapons/_base_sniper.txt @@ -302,5 +302,20 @@ WeaponData "viewdrift_hipfire_air_scale_pitch" "0.0" "viewdrift_hipfire_air_scale_yaw" "0.0" } + + prophunt + { + "red_crosshair_range" "1" + } + + infectionPerkQuickReload + { + "reload_time" "1.0" + "reload_time_late1" "0.50" + "reload_time_late2" "0.50" + "reloadempty_time" "1.0" + "reloadempty_time_late1" "0.50" + "reloadempty_time_late2" "0.50" + } } } diff --git a/weapons/constant_types/ammo_pool_types.txt b/weapons/constant_types/ammo_pool_types.txt index 530123d9f..c6de57427 100644 --- a/weapons/constant_types/ammo_pool_types.txt +++ b/weapons/constant_types/ammo_pool_types.txt @@ -8,6 +8,8 @@ special highcal shotgun + sniper + explosive //_count ///////////////////////////// diff --git a/weapons/mp_ability_area_sonar_scan.txt b/weapons/mp_ability_area_sonar_scan.txt index 9b19c9722..90f6d128e 100644 --- a/weapons/mp_ability_area_sonar_scan.txt +++ b/weapons/mp_ability_area_sonar_scan.txt @@ -156,6 +156,19 @@ WeaponData { } + + infinite_ammo + { + "fire_rate" "1.5" + "holster_time" "0.2" + "deploy_time" "0.2" + + //Infinite Ammo + "uses_ammo_pool" "0" + "ammo_min_to_fire" "1" + "ammo_per_shot" "1" + "ammo_no_remove_from_stockpile" "1" + } } active_crosshair_count "2" diff --git a/weapons/mp_ability_consumable.txt b/weapons/mp_ability_consumable.txt index b452e7c6f..8c6672cab 100644 --- a/weapons/mp_ability_consumable.txt +++ b/weapons/mp_ability_consumable.txt @@ -182,7 +182,31 @@ WeaponData "fx_muzzle_flash_world" "P_shield_battery_flash" "fx_muzzle_flash_attach" "muzzle_flash" } - + + snd_bomb + { + "viewmodel" "mdl/Weapons/bomb/ptpov_bomb.rmdl" + "playermodel" "mdl/Weapons/bomb/w_bomb.rmdl" + "printname" "Planting Bomb" + "charge_time" "4.0" + "raise_time" "1.8" + "hud_icon" "rui/hud/loot/loot_stim_shield_large" + "activitymodifier" "snd_bomb" + "viewmodel_offset_hip" "0 3 2" + + // "charge_effect_1p" "P_shield_battery_LRG_FP" + // "charge_effect_3p" "" + // "charge_effect_attachment" "FX_CENTER" + + // "charge_effect2_1p" "P_shield_battery_glow_FP" + // "charge_effect2_3p" "P_shield_battery_glow" + // "charge_effect2_attachment" "muzzle_flash" + + // "fx_muzzle_flash_view" "P_shield_battery_flash_FP" + // "fx_muzzle_flash_world" "P_shield_battery_flash" + // "fx_muzzle_flash_attach" "muzzle_flash" + } + phoenix_kit { "viewmodel" "mdl/weapons/shield_battery/ptpov_shield_battery_held.rmdl" From 850535cf07fd55fa955c473daa759df1230b567f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caf=C3=A9DeColombiaFPS?= <92343247+ColombianGuy@users.noreply.github.com> Date: Wed, 3 May 2023 10:09:35 -0500 Subject: [PATCH 02/17] add required code for new content --- vscripts/_entitystructs.gnut | 146 +++- vscripts/_mapspawn.gnut | 4 +- vscripts/_sh_init.gnut | 2 +- vscripts/_utility.gnut | 40 +- vscripts/_utility_shared.nut | 2 +- vscripts/_vscript.gnut | 2 +- vscripts/cl_entitystructs.gnut | 36 + vscripts/client/cl_death_screen.gnut | 9 + vscripts/client/cl_minimap.gnut | 218 ++++- vscripts/custom_maps/_custom_maps_3.nut | 538 +++++++++++- vscripts/gamemodes/fs_tdm/_gamemode_fsdm.nut | 813 ++++++++++++++++-- .../gamemodes/fs_tdm/sh_gamemode_fsdm.nut | 735 +++++++--------- vscripts/gamemodes/sh_gamemodes.gnut | 2 +- .../gamemodes/survival/_gamemode_survival.nut | 8 +- .../survival/cl_gamemode_survival.nut | 83 +- .../survival/sh_gamemode_survival.nut | 13 +- vscripts/mp/_base_cmds.gnut | 2 +- vscripts/mp/_base_gametype.gnut | 8 +- .../mp/levels/mp_rr_canyonlands_common.nut | 232 +---- .../mp/levels/mp_rr_canyonlands_mu1_night.nut | 2 +- .../levels/mp_rr_desertlands_64k_x_64k_nx.nut | 2 +- .../mp/levels/mp_rr_desertlands_common.nut | 338 +------- vscripts/sh_consts.gnut | 2 +- vscripts/sh_menu_models.gnut | 34 +- vscripts/sh_onboarding.gnut | 6 +- vscripts/ui/R5RMenus/menu_lobby.nut | 2 +- vscripts/ui/menu_dev.nut | 2 +- vscripts/weapons/mp_ability_phase_walk.nut | 23 - 28 files changed, 2072 insertions(+), 1232 deletions(-) diff --git a/vscripts/_entitystructs.gnut b/vscripts/_entitystructs.gnut index 317238c44..2a3a161c5 100644 --- a/vscripts/_entitystructs.gnut +++ b/vscripts/_entitystructs.gnut @@ -409,6 +409,37 @@ global struct ServerEntityStruct //Arthur's revenge array birdsFromThisCluster + + //portal gun + bool isplayercomingfromportal1 = false + bool isplayercomingfromportal2 = false + + bool alreadyPingedUltraDecoy = false + bool isBeingAttackedByDroneMedic = false + + //HoloSprays mp + array holoSpraysFX + + //Tridents + string LastTridentAnim + entity driver = null + entity driverDummy = null + entity physicsCar = null + bool isBoosting = false + bool isInAirborne = false + bool canBoost = true + bool canReset = true + + TraceResults& hoverTrace + vector forwardSpeed + + //Ring Flare + int currentRadius + + //Bomb + + //Idk + bool testOpen = false } global struct MeritData @@ -716,10 +747,16 @@ global struct ServerPlayerStruct bool isParentedToFlyer = false entity ParentedFlyer //Prophunt by Colombia - int PROPHUNT_Max3changes + int PROPHUNT_ChangePropUsageLimit + int PROPHUNT_DecoysPropUsageLimit + int PROPHUNT_FlashbangPropUsageLimit + entity PROPHUNT_LastPropEntity bool PROPHUNT_isSpectatorDiedMidRound = false - bool PROPHUNT_DestroyProp = false + bool PROPHUNT_AreAnglesLocked = false asset PROPHUNT_LastModel + int PROPHUNT_LastModelIndex + int PROPHUNT_TimesSurvivedAsProp = 0 + int PROPHUNT_SurvivalTime = 0 //By Endergreen // This is for Octane's ability chatter @@ -759,7 +796,7 @@ global struct ServerPlayerStruct EditorMode& selectedEditorMode EditorMode ornull lastEditorMode - //Rocketpod Weapon + //Rocketpod Weapon and Guided Missiles vector guidedLaserPoint //Holospray @@ -767,6 +804,77 @@ global struct ServerPlayerStruct //Data request float lastTimeDataRequestUsed = 0 + + //Needler + int needles = 0 + bool ongoingneedlesexplode = false + array proplist + entity particleonbody + //Super decys (mirage buff) + entity lastDecoy + + //Super doc (lifeline buff) + entity lastdocdrone + + //Asked for team, prophunt + int teamasked = -1 + + //HoloSprays mp + array holoSpraysBase + + float lastRightInput = 0 + float lastForwardInput = 0 + + //Duckhunt + bool wasTeleported = false + bool lastFloorCheckPoint = false + bool askedForHunter = false + + //knockbacks + int roundPlayerPoints = 0 + int ampedDamageBonus = 0 + float lastTimeGrabberBoostZonePoints = 0 + float currentPlayerSpeed = 1.0 + int ampedFireRateBonus = 0 + int totalpoints = 0 + + //infection + array shadowAttachedEntities + float allowedTimeForNextKill + bool isLastManStanding + bool amIAlphaZombie + bool hasInfectedNear + + //infection perks + int infectionRoundKills + int gainedPerks + + bool hasSecondaryWeaponPerk + bool hasQuickReloadPerk + bool hasBetterMagsPerk + bool hasHardenedPerk + + //SND + bool isSNDAttackerPlayer + bool playerHasBomb + bool playerIsPlantingBomb + bool didPlayerBuyAWeapon + bool survivedShouldSaveWeapons = false + + int grenadesBought = 0 + int availableMoney + string weapon1ref = "" + string weapon2ref = "" + int weapon1lvl = -1 + int weapon2lvl = -1 + + //Hackers vs pros + bool enableAimbot = false + + //mokey + bool insideBubbleMokey = false + + string snd_knifecolor = "255, 255, 255" } global struct ChallengeScore @@ -870,6 +978,13 @@ global struct ServerAIStruct // r5 stuff array burnDamageStacks bool isBurning + + int needles = 0 + bool ongoingneedlesexplode = false + array proplist + entity particleonbody + + entity decoyOwner string lastSchedule string lastAnim } @@ -908,6 +1023,24 @@ global struct ServerWeaponStruct entity ziplineStartModel var ziplineStartPos bool translocate_isADSForced + + //portal gun + entity portal1root = null + entity portal2root = null + entity trigger1 = null + entity trigger2 = null + vector startpos + vector endpos + bool issecondportalshot = false + vector portal1savedNormalAngle + vector portal2savedNormalAngle + vector portal1savedNormal + vector portal2savedNormal + vector portal1savedSurfaceAngle + vector portal2savedSurfaceAngle + + vector portal1RefAngles + vector portal2RefAngles } @@ -967,7 +1100,8 @@ global struct ServerProjectileStruct vector ownerLocationDebug vector savedSurfaceNormal float lastTeleportTime - + bool dontbouncethistime = false + entity weapon array healWeaponEffects } @@ -999,6 +1133,10 @@ global struct ServerPlayerDecoyStruct { array< entity > fxHandles array< string > loopingSounds + asset characterSetFile + asset modelName + bool F_or_B_CoinFlip + entity owner } // hooked up to entity.sp in code diff --git a/vscripts/_mapspawn.gnut b/vscripts/_mapspawn.gnut index e0d37aa67..f8d7e1e56 100644 --- a/vscripts/_mapspawn.gnut +++ b/vscripts/_mapspawn.gnut @@ -314,7 +314,7 @@ void function CodeCallback_MapSpawn() // original script entry point PrecacheWeapon( $"mp_weapon_clickweapon") PrecacheWeapon( $"mp_weapon_clickweaponauto") break - case "map_editor": + case "map_editor_deprecated": PrecacheWeapon( $"mp_weapon_editor" ) if ( GetCurrentPlaylistVarBool( "movement_map_enable", false ) ) _CheckPoints_Init() @@ -328,7 +328,7 @@ void function CodeCallback_MapSpawn() // original script entry point break } - if(GameRules_GetGameMode() == "map_editor" ) + if(GameRules_GetGameMode() == "map_editor_deprecated" ) PutLoadedPropsIntoSaveArray() //needs to be called after the props were loaded PrecacheWeapon( $"mp_ability_cloak" ) diff --git a/vscripts/_sh_init.gnut b/vscripts/_sh_init.gnut index 9f2940bf4..a67035b2e 100644 --- a/vscripts/_sh_init.gnut +++ b/vscripts/_sh_init.gnut @@ -87,7 +87,7 @@ void function SV_CL_Init() ClientSidePickups_Init() GrappleWeaponInit() ShInfoCords_Init() - if(GameRules_GetGameMode() == "map_editor") + if(GameRules_GetGameMode() == "map_editor_deprecated") ShAssets_Init() //#if DEVELOPER diff --git a/vscripts/_utility.gnut b/vscripts/_utility.gnut index f639f5373..98c30c544 100644 --- a/vscripts/_utility.gnut +++ b/vscripts/_utility.gnut @@ -2375,14 +2375,14 @@ void function ScreenFadeToBlack( entity player, float fadeTime, float holdTime ) { Assert( IsValid( player ) ) - ScreenFade( player, 0, 0, 1, 255, fadeTime, holdTime, FFADE_OUT | FFADE_PURGE ) + ScreenFade( player, 0, 0, 0, 255, fadeTime, holdTime, FFADE_OUT | FFADE_PURGE ) } void function ScreenFadeFromBlack( entity player, float fadeTime = 2.0, float holdTime = 2.0 ) { Assert( IsValid( player ) ) - ScreenFade( player, 0, 1, 0, 255, fadeTime, holdTime, FFADE_IN | FFADE_PURGE ) + ScreenFade( player, 0, 0, 0, 255, fadeTime, holdTime, FFADE_IN | FFADE_PURGE ) } void function ScreenFadeToBlackForever( entity player, float fadeTime = 1.7 ) @@ -3768,7 +3768,11 @@ void function SetPlayerAnimViewEntity( entity player, entity model ) void function RandomizeHead( entity model ) //Randomize head across all available heads { - var headIndex = model.FindBodyGroup( "head" ) + var headIndex + if ( model.GetModelName() == "mdl/robots/spectre/imc_spectre.rmdl" ) + return//headIndex = model.FindBodyGroup( "removableHead" ) + else + headIndex = model.FindBodyGroup( "head" ) if ( headIndex == -1 ) { //printt( "HeadIndex == -1, returning" ) @@ -4828,33 +4832,3 @@ array function ArrayEntSphere(vector origin, float radius) { } return entities } - -// array function GetAllEntitiesByClassDistance(string className, vector origin, float radius ) { -// array entities -// entity ent -// Entities_FindByClassnameWithin( null, className, origin, radius) -// for ( ;; ) -// { -// if ( ent == null ) -// break -// entities.append( ent ) -// printt(ent.GetTargetName()) -// ent = Entities_FindByClassnameWithin( ent, className, origin, radius) -// } -// return entities -// } - -// array function GetAllEntitiesByNameDistance(string name, vector origin, float radius ) { -// array entities -// entity ent -// Entities_FindByNameWithin( null, name, origin, radius) -// for ( ;; ) -// { -// if ( ent == null ) -// break -// entities.append( ent ) -// printt(ent.GetTargetName()) -// ent = Entities_FindByNameWithin( ent, name, origin, radius) -// } -// return entities -// } \ No newline at end of file diff --git a/vscripts/_utility_shared.nut b/vscripts/_utility_shared.nut index 1e9644c5c..8e5497727 100644 --- a/vscripts/_utility_shared.nut +++ b/vscripts/_utility_shared.nut @@ -178,7 +178,7 @@ void function InitWeaponScripts() MpWeaponTrophy_Init() MpWeaponBasicBolt_Init() - if(GameRules_GetGameMode() == "map_editor") + if(GameRules_GetGameMode() == "map_editor_deprecated") MpWeaponEditor_Init() #if SERVER diff --git a/vscripts/_vscript.gnut b/vscripts/_vscript.gnut index a3ce0e003..54e40cca1 100644 --- a/vscripts/_vscript.gnut +++ b/vscripts/_vscript.gnut @@ -95,7 +95,7 @@ void function __DumpScope( int depth, var Table ) } } -// mmmm i am going to dump several functions here because i do not know where they should go +// grx stub functions GRXUserInfo function GRX_GetUserInfo( entity player ) { diff --git a/vscripts/cl_entitystructs.gnut b/vscripts/cl_entitystructs.gnut index e097dc415..777fd4d0d 100644 --- a/vscripts/cl_entitystructs.gnut +++ b/vscripts/cl_entitystructs.gnut @@ -165,6 +165,35 @@ global struct ClientPlayerStruct EditorMode& selectedEditorMode EditorMode ornull lastEditorMode + int ziplineUsages = 0 + float delayeddamage + int needles = 0 + bool ongoingneedlesexplode = false + + bool onetimetimer = false + float lasttime + //prophunt + asset PROPHUNT_LastModel + bool isAttackerProphunt = false + bool PROPHUNT_AreAnglesLocked = false + int PROPHUNT_ChangePropUsageLimit + int PROPHUNT_DecoysPropUsageLimit + int PROPHUNT_FlashbangPropUsageLimit + int lastWhistleTimer = 0 + bool isAttackersAbilityEnabled = false + bool isRoundTimerEnabled = false + int savedAbilityTimer = 0 + array shadowFxHandles + int roundPlayerPoints + + //SND + bool playerIsPlantingBomb + int currentCoins + + //mokeys bubble + bool insideBubbleMokey = false + + string snd_knifecolor = "255, 255, 255" } @@ -173,6 +202,8 @@ global struct ClientPlayerStruct global struct ClientAIStruct { int gruntVoiceIndex = 0 + int needles = 0 + bool ongoingneedlesexplode = false bool firsttime = true int shieldTier } @@ -198,6 +229,11 @@ global struct ClientWeaponStruct vector PROTO_lastForwardAngle bool useRapidHitbeep = false + + entity translocate_predictedInitialProjectile = null + entity translocate_predictedRedirectedProjectile = null + table ornull translocate_impactRumbleObj = null + bool translocate_isADSForced = false } diff --git a/vscripts/client/cl_death_screen.gnut b/vscripts/client/cl_death_screen.gnut index fb487a1b2..bb641a112 100644 --- a/vscripts/client/cl_death_screen.gnut +++ b/vscripts/client/cl_death_screen.gnut @@ -13,6 +13,7 @@ global function DeathScreenCreateNonMenuBlackBars global function DeathScreen_RespawnStatusChanged global function PopulatePlayerStatsRui global function ClearPlayerStatsRui +global function ForceDestroyBlackBarRui global function UICallback_ShowSquadSummary global function UICallback_HideSquadSummary @@ -1351,6 +1352,14 @@ void function DeathScreenCreateNonMenuBlackBars() UpdateBlackBarRui() } +void function ForceDestroyBlackBarRui() +{ + if(file.blackBarRui != null) + { + RuiDestroyIfAlive( file.blackBarRui ) + file.blackBarRui = null + } +} void function UpdateBlackBarRui() { diff --git a/vscripts/client/cl_minimap.gnut b/vscripts/client/cl_minimap.gnut index fc8e2bdea..9dd92c546 100644 --- a/vscripts/client/cl_minimap.gnut +++ b/vscripts/client/cl_minimap.gnut @@ -40,6 +40,10 @@ global function GetMinimapBackgroundTileImage global function SetMapFeatureItem global function RemoveMapFeatureItemByName +global function Minimap_EnableDraw_Internal +global function Minimap_DisableDraw_Internal +global function UpdateImageAndScaleOnMinimapRUI + #if DEVELOPER global function DumpMinimapHandles #endif @@ -71,6 +75,7 @@ struct { #endif array minimapOtherRuis + table minimapPlayers array fullmapRuis float threatMaxDist @@ -90,6 +95,8 @@ struct { array fullmap_unitframesRui var fullmap_gamestateRui + array< void functionref( var ) > updateFullmapTracking_Callbacks + array< void functionref( var ) > onFullmapCreated_Callbacks var fullmap_challengeBoxRui array mapFeatureList @@ -309,17 +316,23 @@ void function ClMinimap_Init() InitHUDRui( file.fullmap_legendRui, false ) Fullmap_AddRui( file.fullmap_legendRui ) - file.fullmap_challengeBoxRui = RuiCreate( $"ui/minimap_challenge_box.rpak", clGlobal.topoFullscreenFullMap, FULLMAP_RUI_DRAW_LAYER, RUI_SORT_SCREENFADE - 1 ) + // file.fullmap_challengeBoxRui = RuiCreate( $"ui/minimap_challenge_box.rpak", clGlobal.topoFullscreenFullMap, FULLMAP_RUI_DRAW_LAYER, RUI_SORT_SCREENFADE - 1 ) // - InitHUDRui( file.fullmap_challengeBoxRui, false ) - Fullmap_AddRui( file.fullmap_challengeBoxRui ) + // InitHUDRui( file.fullmap_challengeBoxRui, false ) + // Fullmap_AddRui( file.fullmap_challengeBoxRui ) // create unitframe ruis for the fullmap screen // Taking off one of these to save memory. If we ever need to go above a 3 person team, add it back. //file.fullmap_unitframesRui.append( RuiCreate( $"ui/unitframe_survival_v3.rpak", clGlobal.topoFullscreenFullMap, FULLMAP_RUI_DRAW_LAYER, 20 ) ) + if(GameRules_GetGameMode() == "flowstate_snd") + { + file.fullmap_unitframesRui.append( RuiCreate( $"ui/unitframe_survival_v3.rpak", clGlobal.topoFullscreenFullMap, FULLMAP_RUI_DRAW_LAYER, 20 ) ) + file.fullmap_unitframesRui.append( RuiCreate( $"ui/unitframe_survival_v3.rpak", clGlobal.topoFullscreenFullMap, FULLMAP_RUI_DRAW_LAYER, 20 ) ) + } file.fullmap_unitframesRui.append( RuiCreate( $"ui/unitframe_survival_v3.rpak", clGlobal.topoFullscreenFullMap, FULLMAP_RUI_DRAW_LAYER, 20 ) ) file.fullmap_unitframesRui.append( RuiCreate( $"ui/unitframe_survival_v3.rpak", clGlobal.topoFullscreenFullMap, FULLMAP_RUI_DRAW_LAYER, 20 ) ) file.fullmap_unitframesRui.append( RuiCreate( $"ui/unitframe_survival_v3.rpak", clGlobal.topoFullscreenFullMap, FULLMAP_RUI_DRAW_LAYER, 20 ) ) + foreach( rui in file.fullmap_unitframesRui ) { InitHUDRui( rui, false ) @@ -330,6 +343,8 @@ void function ClMinimap_Init() file.fullmap_gamestateRui = RuiCreate( fullmap_gamestateRuiAsset, clGlobal.topoFullscreenFullMap, FULLMAP_RUI_DRAW_LAYER, 20 ) InitHUDRui( file.fullmap_gamestateRui, false ) Fullmap_AddRui( file.fullmap_gamestateRui ) + foreach( func in file.onFullmapCreated_Callbacks ) + func( file.fullmap_gamestateRui ) } @@ -417,6 +432,9 @@ asset function GetFullmapAsset( string className, int customState ) asset function GetMinimapBackgroundTileImage() { + if(GetMapName() == "mp_rr_party_crasher_new") + return $"overviews/mp_rr_canyonlands_bg" + //return $"overviews/mp_rr_canyonlands_64k_x_64k_bg_tile" return file.minimapBackgroundTileImage } @@ -480,13 +498,14 @@ void function AddMinimapObject( entity ent ) table e OnThreadEnd( - function() : ( e ) + function() : ( e, minimapAsset ) { if ( "rui" in e ) { var rui = e["rui"] if ( rui != null ) { + RemovePlayerMinimapRui( rui ) file.minimapOtherRuis.removebyvalue( rui ) RuiDestroy( rui ) } @@ -730,7 +749,7 @@ var function Minimap_AddCustomLayer( asset ruiAsset, int sortKey = MINIMAP_Z_LAY void function OnPlayerCreate( entity player ) { entity viewPlayer = GetLocalViewPlayer() - if ( IsValid( viewPlayer ) && viewPlayer.GetTeam() == player.GetTeam() ) + if ( IsValid( viewPlayer ) && viewPlayer.GetTeam() == player.GetTeam() && GameRules_GetGameMode() == SURVIVAL) UpdateFullmapRuiTracks() if ( player != GetLocalClientPlayer() ) @@ -824,7 +843,7 @@ void function OnPlayerCreate( entity player ) RuiSetFloat3( file.minimap_base, "mapCorner", ) RuiSetFloat( file.minimap_base, "displayDist", file.threatMaxDist ) - RuiSetFloat( file.minimap_base, "mapScale", mapScale ) + RuiSetBool( file.minimap_base, "isNorthFacing", !GetConVarBool( "hud_setting_minimapRotate" ) ) RuiSetFloat( file.minimap_base, "minimapSizeScale", file.minimapSizeScale ) RuiSetFloat( file.minimap_frame, "minimapSizeScale", file.minimapSizeScale ) @@ -833,6 +852,24 @@ void function OnPlayerCreate( entity player ) UpdatePlayerRuiTracking( player ) } +void function UpdateImageAndScaleOnMinimapRUI(asset image, float scale) +{ + try{ + if(file.minimap_base != null) + { + RuiSetImage( file.minimap_base, "mapImage", image ) + RuiSetFloat( file.minimap_base, "mapScale", scale ) + + //RuiSetFloat( file.minimap_base, "displayDist", file.threatMaxDist ) + + // if( file.minimap_base != null) + // RuiSetBool( file.minimap_base, "isNorthFacing", true ) + + // if( file.minimap_you != null) + // RuiSetBool( file.minimap_you, "isNorthFacing", true ) + } + }catch(e420){} +} void function Minimap_OnPlayerTeamChanged( entity player, int oldTeam, int newTeam ) { @@ -845,9 +882,14 @@ void function UpdatePlayerRuiTracking( entity player ) Assert( player == GetLocalClientPlayer() ) entity viewPlayer = GetLocalViewPlayer() + + //if(GameRules_GetGameMode() != "flowstate_snd") + //{ + RuiTrackFloat3( file.minimap_base, "playerPos", viewPlayer, RUI_TRACK_ABSORIGIN_FOLLOW ) + RuiTrackFloat3( file.minimap_base, "playerAngles", viewPlayer, RUI_TRACK_CAMANGLES_FOLLOW ) + //} else + // thread HACK_TrackPlayerPositionOnScript( file.minimap_base, viewPlayer, false ) - RuiTrackFloat3( file.minimap_base, "playerPos", viewPlayer, RUI_TRACK_ABSORIGIN_FOLLOW ) - RuiTrackFloat3( file.minimap_base, "playerAngles", viewPlayer, RUI_TRACK_CAMANGLES_FOLLOW ) RuiTrackFloat( file.minimap_base, "minimapZoomScale", player, RUI_TRACK_MINIMAP_ZOOM_SCALE ) RuiSetFloat( file.minimap_base, "minimapSizeScale", file.minimapSizeScale ) RuiSetFloat( file.minimap_frame, "minimapSizeScale", file.minimapSizeScale ) @@ -859,7 +901,7 @@ void function UpdatePlayerRuiTracking( entity player ) RuiTrackFloat3( file.minimap_you, "playerAngles", viewPlayer, RUI_TRACK_CAMANGLES_FOLLOW ) //#if MP_PVEMODE // In r5r, MP_PVEMODE part is not compiled and must be commented out RuiTrackInt( file.minimap_you, "teamMemberIndex", viewPlayer, RUI_TRACK_PLAYER_TEAM_MEMBER_INDEX ) - //#endif //MP_PVEMODE + //#endif foreach ( var rui in file.minimapOtherRuis ) { @@ -867,6 +909,20 @@ void function UpdatePlayerRuiTracking( entity player ) } } +void function Minimap_SetPlayerColorOverride( entity player, vector color ) +{ + var rui = null + if( player == GetLocalClientPlayer() ) + rui = file.minimap_you + else if( player in file.minimapPlayers ) + rui = file.minimapPlayers[player] + + if( rui == null ) + return + + RuiSetFloat3( rui, "iconColorOverride", color ) +} + void function MinimapPackage_DummyInit( entity ent, var rui ) { @@ -884,6 +940,36 @@ void function MinimapPackage_PlayerInit( entity ent, var rui ) //#if MP_PVEMODE // In r5r, MP_PVEMODE part is not compiled and must be commented out RuiTrackInt( rui, "teamMemberIndex", ent, RUI_TRACK_PLAYER_TEAM_MEMBER_INDEX ) //#endif + + RuiSetInt( rui, "squadIDLocalPlayer", GetLocalViewPlayer().GetSquadID() ) + RuiTrackInt( rui, "squadID", ent, RUI_TRACK_SQUADID ) + + if ( IsFriendlyTeam( ent.GetTeam(), GetLocalViewPlayer().GetTeam() ) && ent.GetTeam() != GetLocalViewPlayer().GetTeam() ) + { + RuiSetFloat3( rui, "iconColorOverride", (GetKeyColor( COLORID_FRIENDLY ) / 255.0) ) + RuiSetBool( rui, "shouldOverrideClampedIcon", true ) + RuiSetFloat2( rui, "iconScaleOverride", <0.65, 0.65, 0.0> ) + + } + + if( !(ent in file.minimapPlayers ) ) + file.minimapPlayers[ent] <- rui +} + +void function RemovePlayerMinimapRui( var ruiToRemove ) +{ + entity keyToRemove = null + foreach( player, rui in file.minimapPlayers ) + { + if( rui == ruiToRemove ) + { + keyToRemove = player + break + } + } + + if( keyToRemove != null ) + delete file.minimapPlayers[ keyToRemove ] } @@ -1289,15 +1375,17 @@ void function Minimap_SetSizeScale( float scale ) RuiSetFloat( file.minimap_you, "minimapSizeScale", scale ) if ( file.minimap_coords != null ) RuiSetFloat( file.minimap_coords, "minimapSizeScale", scale ) + + try{ + foreach ( var rui in file.minimapOtherRuis ) + { + RuiSetFloat( rui, "minimapSizeScale", scale ) + } - foreach ( var rui in file.minimapOtherRuis ) - { - RuiSetFloat( rui, "minimapSizeScale", scale ) - } - - var gameStateRui = ClGameState_GetRui() - if ( gameStateRui ) - RuiSetFloat( gameStateRui, "minimapSizeScale", scale ) + var gameStateRui = ClGameState_GetRui() + if ( gameStateRui ) + RuiSetFloat( gameStateRui, "minimapSizeScale", scale ) + }catch(e420){} } @@ -1322,14 +1410,31 @@ void function CinematicEventFlagChanged( entity player ) } +bool function MiniMapIsDisabled() +{ + if ( GetCurrentPlaylistVarBool( "disable_minimap", false ) ) + return true + return false +} + + void function Minimap_UpdateMinimapVisibility( entity player ) { + if ( !IsValid( player ) ) + { + Minimap_DisableDraw_Internal() + return + } + bool isVisible = true int ceFlags = player.GetCinematicEventFlags() if ( ceFlags & CE_FLAG_INTRO ) isVisible = false - if ( Riff_MinimapState() == eMinimapState.Hidden ) + + + + if ( MiniMapIsDisabled() ) isVisible = false if ( GetGameState() == eGameState.WaitingForPlayers || GetGameState() == eGameState.PickLoadout ) @@ -1371,7 +1476,13 @@ void function Minimap_DisableDraw_Internal() foreach ( var rui in file.minimapOtherRuis ) { - RuiSetVisible( rui, false ) + try + { + RuiSetVisible( rui, false ) + }catch(e420) + { + file.minimapOtherRuis.removebyvalue(rui) + } } } @@ -1437,17 +1548,25 @@ void function Fullmap_RemoveRui( var rui ) void function Fullmap_SetVisible( bool state ) { FullMap_UpdateTopologies() - UpdateSurveyBeaconHint() // TODO: meh + UpdateSurveyBeaconHint() + UpdateMapFeatures() UpdateCameraVisibility() + Fullmap_SetVisible_MapOnly( state ) + + FullMap_UpdateAimPos() + +} + +void function Fullmap_SetVisible_MapOnly( bool state ) +{ foreach ( rui in file.fullmapRuis ) { RuiSetVisible( rui, state ) } - - FullMap_UpdateAimPos() file.fullmapVisible = state + } @@ -1457,20 +1576,51 @@ bool function Fullmap_IsVisible() } + + + void function UpdateFullmapRuiTracks() { + if ( IsLobby() ) + return + entity viewPlayer = GetLocalViewPlayer() + entity clientPlayer = GetLocalClientPlayer() if ( !IsValid( viewPlayer ) ) return - // Update the rui tracks for fullmap unitframes + if ( file.fullmap_unitframesRui.len() == 0 ) + { + Warning( FUNC_NAME() + " - fullmap_unitframesRui is empty." ) + return + } + + + var viewPlayerRui = file.fullmap_unitframesRui[0] thread SetUnitFrameDataFromOwner( viewPlayerRui, viewPlayer, true ) UpdateEquipmentSlot( viewPlayer, viewPlayerRui ) RuiSetInt( viewPlayerRui, "frameSlot", -1 ) - RuiSetBool( viewPlayerRui, "isVisible", !IsFallLTM() ) + + + + + if ( IsValid( clientPlayer ) ) + { + int observerMode = clientPlayer.GetObserverMode() + if ( clientPlayer.GetTeam() == TEAM_SPECTATOR && ( observerMode == OBS_MODE_ROAMING || observerMode == OBS_MODE_CHASE ) ) + { + RuiSetBool( viewPlayerRui, "isVisible", false ) + } + + else + { + RuiSetBool( viewPlayerRui, "isVisible", !IsFallLTM() ) + } + + } for ( int i = 1; i < file.fullmap_unitframesRui.len(); i++ ) { @@ -1513,7 +1663,7 @@ void function UpdateFullmapRuiTracks() UISize screenSize = GetScreenSize() float clampedAspectRatio = GetNearestAspectRatio( screenSize.width, screenSize.height ) bool isAspectRatio16x10 = clampedAspectRatio == 1.6 - RuiSetBool( file.fullmap_challengeBoxRui, "isAspectRatio16x10", isAspectRatio16x10 ) + // RuiSetBool( file.fullmap_challengeBoxRui, "isAspectRatio16x10", isAspectRatio16x10 ) // if ( IsLocalClientEHIValid() ) // TODO: // UpdateChallengeBoxRows( 5, file.fullmap_challengeBoxRui ) @@ -1555,6 +1705,9 @@ void function UpdateFullmapRuiTracks() //#if MP_PVEMODE // In r5r, MP_PVEMODE part is not compiled and must be commented out RuiTrackInt( file.fullmap_gamestateRui, "teamMemberIndex", viewPlayer, RUI_TRACK_PLAYER_TEAM_MEMBER_INDEX ) //#endif + + foreach( func in file.updateFullmapTracking_Callbacks ) + func( file.fullmap_gamestateRui ) } @@ -1584,6 +1737,18 @@ var function GetFullmapGamestateRui() } +void function Fullmap_AddCallback_UpdateTracking( void functionref( var ) func ) +{ + file.updateFullmapTracking_Callbacks.append( func ) +} + + +void function Fullmap_AddCallback_OnFullmapCreated( void functionref( var ) func ) +{ + file.onFullmapCreated_Callbacks.append( func ) +} + + void function RemoveMapFeatureItemByName( string titleText ) { foreach ( mapFeature in file.mapFeatureList ) @@ -1629,6 +1794,9 @@ MapFeature function SetMapFeatureItem( int priority, string titleText, string de const int MAX_MAP_FEATURES = 5 void function UpdateMapFeatures() { + if ( GameRules_GetGameMode() != SURVIVAL ) + return + if ( file.fullmap_legendRui == null ) return diff --git a/vscripts/custom_maps/_custom_maps_3.nut b/vscripts/custom_maps/_custom_maps_3.nut index 9ce63f141..b66a4d4c3 100644 --- a/vscripts/custom_maps/_custom_maps_3.nut +++ b/vscripts/custom_maps/_custom_maps_3.nut @@ -35,7 +35,7 @@ array function GetNewFFADropShipLocations(string locationname, string ma dropshiplocations.append(< 10496,7680,-4224 > ) dropshiplocations.append(< 11584,4864,-3968 > ) break; - case "Skill trainer By Colombia": + case "Skill trainer By CafeFPS": dropshiplocations.append(< 15008, 30040, -680 > ) dropshiplocations.append(< 19265, 30022, -680 > ) dropshiplocations.append(< 19267, 33522, -680 > ) @@ -3744,7 +3744,543 @@ void function SpawnWhiteForestProps() } +entity function CreateEditorPropKCLobby(asset a, vector pos, vector ang, bool mantle = false, float fade = 2000, int realm = -1) +{ + vector newpos = pos + <0,0,12000> + entity e = CreatePropDynamic(a,newpos,ang,SOLID_VPHYSICS,fade) + e.kv.fadedist = fade + if(mantle) e.AllowMantle() + + if (realm > -1) { + e.RemoveFromAllRealms() + e.AddToRealm(realm) + } + + string positionSerialized = newpos.x.tostring() + "," + newpos.y.tostring() + "," + newpos.z.tostring() + string anglesSerialized = ang.x.tostring() + "," + ang.y.tostring() + "," + ang.z.tostring() + + e.SetScriptName("editor_placed_prop") + e.e.gameModeId = realm + //printl("[editor]" + string(a) + ";" + positionSerialized + ";" + anglesSerialized + ";" + realm) + + return e +} + +void function SpawnEditorProps() +{ + // Written by mostly fireproof. Let me know if there are any issues! + printl("---- NEW EDITOR DATA ----") + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,1472,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,1728,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1472,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1728,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19392.2,1343.06,6207.72>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19136.1,1343.04,6207.72>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,1472,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,1728,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1728,6208>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1472,6208>, <0,90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1984,6208>, <0,90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2240,6208>, <0,90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,2240,6208>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,2240,6208>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1984,6208>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,1984,6208>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,1984,6208>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2496,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2752,6208>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,2752,6208>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,2496,6208>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,2496,6208>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2496,6208>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,2752,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2752,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-20160,2240,6208>, <0,90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-20160,1984,6208>, <0,90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-20416,1984,6208>, <0,90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-20416,2240,6208>, <0,90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20031.1,1727.99,6207.54>, <0,90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20031.1,1471.99,6207.57>, <0,90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19904,1344.94,6207.67>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19648,1344.95,6207.68>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20033,2496.07,6207.78>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20033,2752.03,6207.79>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19904.4,2880.72,6207.42>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19648,2880.8,6207.4>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19392,2880.8,6207.39>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19136,2880.8,6207.4>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20031,1727.86,6463.97>, <0,90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20031,1983.95,6464>, <0,90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20031,2239.98,6464>, <0,90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20031,2495.98,6464>, <0,90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20031,2751.98,6464>, <0,90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20031,1471.98,6464>, <0,90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19904,1345,6464>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19648,1345,6464.01>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19392,1345,6464.01>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19136,1345,6464>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19008.7,1472,6207.33>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19008.7,1728,6207.33>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19008.7,2496.01,6207.33>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19008.7,2752.05,6207.34>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19009,2752.23,6464.06>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19009,2496.03,6464.07>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19009,2240.03,6464.07>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19009,1984.03,6464.07>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19009,1728.03,6464.04>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19009,1472.03,6464.04>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19136,2879,6464.02>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19392,2879,6464.02>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19648,2879,6464.02>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19904,2879,6464.02>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1472,6464>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,1472,6464>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,1472,6464>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1472,6464>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1728,6464>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1984,6464>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2240,6464>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2496,6464>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2752,6464>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,2752,6464>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,2752,6464>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2752,6464>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1728,6464>, <0,90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1984,6464>, <0,90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2240,6464>, <0,90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2496,6464>, <0,90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_corner_out.rmdl", <-20544.1,1855.03,6207.75>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-20415.3,1855.38,6207.75>, <0,90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-20287.1,1855.6,6207.72>, <0,90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-20159.1,1855.73,6207.78>, <0,90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-20160.8,2368.17,6207.37>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-20288.8,2368.2,6207.5>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-20416.9,2368.12,6207.61>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_corner_in.rmdl", <-20544.1,2368.33,6207.06>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_corner_in.rmdl", <-19263.3,2624.63,6463.58>, <0,90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_corner_in.rmdl", <-19263.5,1599.32,6463.49>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_corner_in.rmdl", <-19776.9,1599.7,6463.76>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_corner_in.rmdl", <-19776.4,2624.9,6463.91>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19647.2,2624.61,6463.81>, <0,90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19519.2,2624.59,6463.86>, <0,90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19391.2,2624.65,6463.95>, <0,90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19263.3,2495.27,6464.01>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19263.4,2367.18,6464.01>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19263.4,2239.21,6464.03>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19263.3,2111.24,6464.04>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19263.3,1983.26,6464.03>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19263.3,1855.28,6464.03>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19263.3,1727.28,6464.03>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19392.7,1599.34,6464>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19520.7,1599.31,6464.01>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19648.8,1599.35,6464.01>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19776.7,1728.73,6463.91>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19776.5,1856.84,6463.96>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19776.6,1984.8,6463.98>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19776.7,2112.71,6464>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19776.7,2240.71,6464>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19776.7,2368.75,6464.01>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19776.7,2496.72,6464.03>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18880,2240,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18880,1984,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18880,1728,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18624,1728,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18624,1984,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18624,2240,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18624,2496,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18880,2496,6208>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18368,2496,6208>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18368,2240,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18368,1984,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18368,1728,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/containers/box_shrinkwrapped.rmdl", <-19071.2,1411.41,6223.84>, <0,90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/containers/box_shrinkwrapped.rmdl", <-19159.4,1399.24,6223.82>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/containers/box_shrinkwrapped.rmdl", <-19064.1,1515.01,6223.9>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/containers/box_shrinkwrapped.rmdl", <-19135.8,1387.19,6299.45>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/containers/box_shrinkwrapped.rmdl", <-19063.2,1479.79,6299.39>, <0,90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/containers/box_shrinkwrapped.rmdl", <-19163.4,1487.26,6223.69>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/signs/signage_plates_metal/sign_plate_a.rmdl", <-20024.7,2391.26,6332.05>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/signs/signage_plates_metal/sign_plate_a.rmdl", <-20024.6,1831.21,6331.85>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/utilities/power_gen1.rmdl", <-18940.5,2568.71,6223.51>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/utilities/wire_ground_coils_03.rmdl", <-18964.8,2472.43,6223.58>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/utilities/wires_ground_coils_01.rmdl", <-18912.6,2416.07,6223.21>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/utilities/wires_ground_coils_01.rmdl", <-18852,2528.88,6223.53>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/utilities/wire_ground_coils_03.rmdl", <-18908.5,2472.55,6223.35>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/utilities/wall_Waterpipe.rmdl", <-19000.6,2399.29,6259.72>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/IMC_base/generator_IMC_01.rmdl", <-18952.5,1656.7,6223.5>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/vehicle/goblin_dropship/goblin_dropship.rmdl", <-18604,2115.18,6223.43>, <0,0,0>, true, 8000, -1 ) + + CreateEditorPropKCLobby( $"mdl/vehicles_r5/land/msc_forklift_imc_v2/veh_land_msc_forklift_imc_v2_static.rmdl", <-18668,2536.64,6223.23>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1472,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1728,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1984,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2240,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2496,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2752,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,2752,6720>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,2752,6720>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2752,6720>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2496,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2240,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1984,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1728,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1472,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,1472,6720>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,1472,6720>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,1728,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,1984,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,2240,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,2496,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,2240,6720>, <0,0,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,2496,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,1984,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,1728,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2240,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/beacon/construction_scaff_128_64_64.rmdl", <-18435.6,2552.81,6223.55>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/beacon/construction_plastic_mat_white_01.rmdl", <-19376.8,1947.43,6227.73>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/beacon/construction_plastic_mat_black_01.rmdl", <-19685,2271.89,6223.86>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/beacon/construction_plastic_mat_black_01.rmdl", <-18560.2,2556.98,6224.04>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/beacon/construction_plastic_mat_black_01.rmdl", <-18644.1,2525,6223.97>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/canyonlands/canyonlands_zone_sign_03b.rmdl", <-20032.2,2240.89,6719.59>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/industrial/security_fence_post.rmdl", <-19967.9,1408.71,6719.31>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/industrial/security_fence_post.rmdl", <-19027.8,1360.8,6735.44>, <0,180,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/industrial/UTG_spire.rmdl", <-19040.6,2851.51,6735.38>, <0,-90,0>, true, 8000, -1 ) + CreateEditorPropKCLobby( $"mdl/industrial/UTG_spire.rmdl", <-19984.6,2843.49,6735.42>, <0,-90,0>, true, 8000, -1 ) +} + + +void function SpawnFlowstateLobbyProps() +{ + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,1472,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,1728,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1472,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1728,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19392.2,1343.06,6207.72>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19136.1,1343.04,6207.72>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,1472,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,1728,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1728,6208>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1472,6208>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1984,6208>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2240,6208>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,2240,6208>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,2240,6208>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1984,6208>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,1984,6208>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,1984,6208>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2496,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2752,6208>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,2752,6208>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,2496,6208>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,2496,6208>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2496,6208>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,2752,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2752,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-20160,2240,6208>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-20160,1984,6208>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-20416,1984,6208>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-20416,2240,6208>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20031.1,1727.99,6207.54>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20031.1,1471.99,6207.57>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19904,1344.94,6207.67>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19648,1344.95,6207.68>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20033,2496.07,6207.78>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20033,2752.03,6207.79>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19904.4,2880.72,6207.42>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19648,2880.8,6207.4>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19392,2880.8,6207.39>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19136,2880.8,6207.4>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20031,1727.86,6463.97>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20031,1983.95,6464>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20031,2239.98,6464>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20031,2495.98,6464>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20031,2751.98,6464>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20031,1471.98,6464>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19904,1345,6464>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19648,1345,6464.01>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19392,1345,6464.01>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19136,1345,6464>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19008.7,1472,6207.33>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19008.7,1728,6207.33>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19008.7,2496.01,6207.33>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19008.7,2752.05,6207.34>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19009,2752.23,6464.06>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19009,2496.03,6464.07>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19009,2240.03,6464.07>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19009,1984.03,6464.07>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19009,1728.03,6464.04>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19009,1472.03,6464.04>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19136,2879,6464.02>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19392,2879,6464.02>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19648,2879,6464.02>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19904,2879,6464.02>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1472,6464>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,1472,6464>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,1472,6464>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1472,6464>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1728,6464>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1984,6464>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2240,6464>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2496,6464>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2752,6464>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,2752,6464>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,2752,6464>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2752,6464>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1728,6464>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1984,6464>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2240,6464>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2496,6464>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/ola/sewer_railing_01_corner_out.rmdl", <-20544.1,1855.03,6207.75>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-20415.3,1855.38,6207.75>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-20287.1,1855.6,6207.72>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-20159.1,1855.73,6207.78>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-20160.8,2368.17,6207.37>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-20288.8,2368.2,6207.5>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-20416.9,2368.12,6207.61>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/ola/sewer_railing_01_corner_in.rmdl", <-20544.1,2368.33,6207.06>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/ola/sewer_railing_01_corner_in.rmdl", <-19263.3,2624.63,6463.58>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/ola/sewer_railing_01_corner_in.rmdl", <-19263.5,1599.32,6463.49>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/ola/sewer_railing_01_corner_in.rmdl", <-19776.9,1599.7,6463.76>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/ola/sewer_railing_01_corner_in.rmdl", <-19776.4,2624.9,6463.91>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19647.2,2624.61,6463.81>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19519.2,2624.59,6463.86>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19391.2,2624.65,6463.95>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19263.3,2495.27,6464.01>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19263.4,2367.18,6464.01>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19263.4,2239.21,6464.03>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19263.3,2111.24,6464.04>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19263.3,1983.26,6464.03>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19263.3,1855.28,6464.03>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19263.3,1727.28,6464.03>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19392.7,1599.34,6464>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19520.7,1599.31,6464.01>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19648.8,1599.35,6464.01>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19776.7,1728.73,6463.91>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19776.5,1856.84,6463.96>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19776.6,1984.8,6463.98>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19776.7,2112.71,6464>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19776.7,2240.71,6464>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19776.7,2368.75,6464.01>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19776.7,2496.72,6464.03>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18880,2240,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18880,1984,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18880,1728,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18624,1728,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18624,1984,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18624,2240,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18624,2496,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18880,2496,6208>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18368,2496,6208>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18368,2240,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18368,1984,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18368,1728,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/containers/slumcity_oxygen_tank_red.rmdl", <-20004.9,1831.88,6223.61>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/containers/slumcity_oxygen_tank_red.rmdl", <-20016.9,1804.14,6223.72>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/containers/slumcity_oxygen_tank_red.rmdl", <-19988.9,1812.22,6223.58>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/containers/slumcity_oxygen_tank_red.rmdl", <-19139.4,2860.82,6224.02>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/containers/slumcity_oxygen_tank_red.rmdl", <-19167.6,2872.9,6224.03>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/containers/slumcity_oxygen_tank_red.rmdl", <-19159.5,2848.86,6223.99>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/containers/box_shrinkwrapped.rmdl", <-19071.2,1411.41,6223.84>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/containers/box_shrinkwrapped.rmdl", <-19159.4,1399.24,6223.82>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/containers/box_shrinkwrapped.rmdl", <-19064.1,1515.01,6223.9>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/containers/box_shrinkwrapped.rmdl", <-19135.8,1387.19,6299.45>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/containers/box_shrinkwrapped.rmdl", <-19063.2,1479.79,6299.39>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/containers/box_shrinkwrapped.rmdl", <-19163.4,1487.26,6223.69>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/hazmat_suit_hanging.rmdl", <-19375.2,1355.44,6280.31>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/hazmat_suit_hanging.rmdl", <-19411.3,1351.34,6280.3>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/hazmat_suit_hanging.rmdl", <-19451.3,1351.34,6280.32>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/cafe_coffe_machine_dirty.rmdl", <-20025,1720.02,6256.04>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/tool_chest.rmdl", <-19027.7,2423.08,6223.79>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/tool_chest_double.rmdl", <-19027.4,2463.23,6223.81>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/signs/signage_plates_metal/sign_plate_a.rmdl", <-20024.7,2391.26,6332.05>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/signs/signage_plates_metal/sign_plate_a.rmdl", <-20024.6,1831.21,6331.85>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/utilities/power_gen1.rmdl", <-18940.5,2568.71,6223.51>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/utilities/wire_ground_coils_03.rmdl", <-18964.8,2472.43,6223.58>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/utilities/wires_ground_coils_01.rmdl", <-18912.6,2416.07,6223.21>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/utilities/wires_ground_coils_01.rmdl", <-18852,2528.88,6223.53>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/utilities/wire_ground_coils_03.rmdl", <-18908.5,2472.55,6223.35>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/utilities/wall_Waterpipe.rmdl", <-19000.6,2399.29,6259.72>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/vehicles_r5/land_med/msc_freight_tortus_mod/veh_land_msc_freight_tortus_mod_wheeled_v1_static.rmdl", <-19619,2756.16,6223.96>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/angel_city/vending_machine.rmdl", <-19755.2,1367.54,6223.6>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/angel_city/recyclebin_large_01.rmdl", <-19799.3,1367.43,6223.5>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/angel_city/ground_pile_trash_02.rmdl", <-19879.7,1395.47,6223.19>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/angel_city/ground_pile_trash_02.rmdl", <-19819.3,1439.82,6223.28>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/angel_city/ground_pile_trash_02.rmdl", <-19875.7,1447.87,6223.06>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/angel_city/ground_pile_trash_02.rmdl", <-19908,1468.01,6223>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/angel_city/ground_pile_trash_02.rmdl", <-19831.4,1488.17,6223.23>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/angel_city/ground_pile_trash_02.rmdl", <-19867.6,1480.12,6223.08>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/angel_city/ground_pile_trash_02.rmdl", <-19831.4,1423.69,6223.26>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/angel_city/ground_pile_trash_03.rmdl", <-19831.4,1443.84,6223.22>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/angel_city/ground_pile_trash_03.rmdl", <-19875.7,1403.53,6223.17>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/angel_city/ground_pile_trash_03.rmdl", <-19783.2,1476.06,6223.42>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/angel_city/ground_pile_trash_03.rmdl", <-19847.5,1516.39,6223.22>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/angel_city/ground_pile_trash_03.rmdl", <-19883.8,1496.23,6223.06>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/angel_city/box_small_02.rmdl", <-19912,1379.36,6223.23>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/angel_city/box_small_02.rmdl", <-19980.5,1379.42,6223.33>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/angel_city/box_small_02.rmdl", <-19996.6,1439.8,6223.24>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/angel_city/box_small_02.rmdl", <-19992.6,1512.35,6223.26>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/angel_city/box_small_02.rmdl", <-19952.3,1439.79,6223.07>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/angel_city/box_small_02.rmdl", <-19899.9,1427.68,6223.06>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/angel_city/box_small_02.rmdl", <-19928.3,1395.04,6235.92>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/angel_city/box_small_02.rmdl", <-19968.6,1439.18,6239.89>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/angel_city/box_small_02.rmdl", <-19940.6,1503.33,6223.52>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/angel_city/box_small_02.rmdl", <-19972.7,1499.37,6239.76>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/angel_city/box_small_02.rmdl", <-19980.4,1387.17,6239.57>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/angel_city/box_small_02.rmdl", <-19944,1399.1,6251.56>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/angel_city/box_small_02.rmdl", <-19888.7,1484.15,6223.3>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/angel_city/box_small_02.rmdl", <-19908.9,1455.86,6239.55>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/angel_city/box_small_01.rmdl", <-19860.4,1367.19,6223.62>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/angel_city/box_small_01.rmdl", <-20012.8,1563.51,6223.67>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/angel_city/box_small_01.rmdl", <-19996.5,1379.13,6255.84>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/angel_city/box_small_01.rmdl", <-19899.9,1379.04,6251.75>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/angel_city/box_small_01.rmdl", <-19988.6,1431.24,6255.66>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/angel_city/box_small_01.rmdl", <-19940.2,1475.53,6223.14>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/furniture/couch_suede_brown_01.rmdl", <-19868.8,2848.57,6223.73>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/furniture/chair_beanbag_01.rmdl", <-19980,2795.41,6223.2>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/furniture/office_desk_shelved.rmdl", <-20000.3,2619.07,6223.75>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/furniture/office_chair_leather.rmdl", <-19976.2,2608.97,6223.87>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/furniture/books_shelved.rmdl", <-19997,2579.81,6259.93>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/furniture/office_laptop.rmdl", <-19992.8,2608.14,6259.43>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/furniture/office_desk_accessories_papers.rmdl", <-19996.9,2627.88,6259.52>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/furniture/office_desk_accessories_papers.rmdl", <-19992.9,2631.94,6259.48>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/furniture/office_desk_accessories_pen_holder.rmdl", <-19996.9,2644.04,6259.52>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/furniture/office_desk_accessories_mug.rmdl", <-19988.8,2648.09,6259.47>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/furniture/office_keyboard_plastic.rmdl", <-20012.2,2603.08,6267.66>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/furniture/chair_beanbag_01.rmdl", <-19984.4,2715.18,6223.61>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/playback/playback_fish_net_01.rmdl", <-19596.8,2856.61,6364.02>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/IMC_base/generator_IMC_01.rmdl", <-18952.5,1656.7,6223.5>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/IMC_base/imc_antenna_large.rmdl", <-18259.8,2588.48,6223.15>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/IMC_base/monitor_imc_02.rmdl", <-19012.4,2140.75,6448.53>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/IMC_base/cargo_container_imc_01_blue.rmdl", <-18957,1772.2,6223.8>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/colony/farmland_crate_plastic_01_red.rmdl", <-19588,1363.08,6223.61>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/colony/farmland_crate_plastic_01_red.rmdl", <-19536,1367.08,6223.6>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/colony/farmland_crate_plastic_01_red.rmdl", <-19564.2,1367.05,6247.74>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/colony/farmland_crate_plastic_yellow_01.rmdl", <-19564.2,1399.18,6223.47>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/colony/farmland_domicile_hanging_net_01.rmdl", <-19544.9,2772.16,6464.43>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/colony/farmland_domicile_hanging_net_01.rmdl", <-19580.8,2708.53,6464.4>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/colony/farmland_domicile_hanging_net_01.rmdl", <-19420.7,2736.59,6456.39>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/colony/antenna_05_colony.rmdl", <-18347.3,1663.48,6223.57>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/colony/farmland_fridge_01.rmdl", <-19223.1,1355.7,6223.89>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/lamps/light_florescenet_modern_off.rmdl", <-19860.7,1748.03,6464.67>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/lamps/light_florescenet_modern_off.rmdl", <-19864.8,2208.01,6464.55>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/lamps/light_florescenet_modern_off.rmdl", <-19876.8,2492.03,6464.53>, <0,-90,0>, true, 8000, -1 ) + //CreateEditorProp( $"mdl/lamps/light_parking_post.rmdl", <-20504.2,1895.05,6223.78>, <0,0,0>, true, 8000, -1 ) + //CreateEditorProp( $"mdl/lamps/light_parking_post.rmdl", <-20507.9,2324.99,6223.9>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/barriers/concrete/concrete_barrier_01.rmdl", <-20036.2,2320.91,6223.64>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/barriers/concrete/concrete_barrier_01.rmdl", <-20032,1895.31,6223.28>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/barriers/concrete/concrete_barrier_01.rmdl", <-20032.3,2115.13,6223.6>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/barriers/concrete/concrete_barrier_fence_tarp_128.rmdl", <-18935.5,1608.38,6223.2>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/barriers/concrete/concrete_barrier_fence_tarp_128.rmdl", <-18803.3,1604.54,6223.56>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/barriers/concrete/concrete_barrier_fence_tarp_128.rmdl", <-18667.2,1604.59,6223.75>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/barriers/concrete/concrete_barrier_fence_tarp_128.rmdl", <-18531.3,1604.69,6223.83>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/barriers/concrete/concrete_barrier_fence_tarp_128.rmdl", <-18395.3,1604.65,6223.8>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/barriers/concrete/concrete_barrier_fence_tarp_128.rmdl", <-18920.6,2615.54,6223.37>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/barriers/concrete/concrete_barrier_fence_tarp_128.rmdl", <-18784.5,2615.62,6223.21>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/barriers/concrete/concrete_barrier_fence_tarp_128.rmdl", <-18640.8,2615.57,6223.57>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/barriers/concrete/concrete_barrier_fence_tarp_128.rmdl", <-18504.8,2615.74,6223.42>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/barriers/concrete/concrete_barrier_fence_tarp_128.rmdl", <-18372.6,2615.79,6223.24>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/barriers/concrete/concrete_barrier_01.rmdl", <-18251.8,2544.8,6223.42>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/barriers/concrete/concrete_barrier_01.rmdl", <-18251.9,2456.79,6223.41>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/barriers/concrete/concrete_barrier_01.rmdl", <-18251.8,1723.11,6223.61>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/barriers/concrete/concrete_barrier_01.rmdl", <-18251.7,1815.41,6223.27>, <0,0,0>, true, 8000, -1 ) + + CreateEditorProp( $"mdl/vehicle/goblin_dropship/goblin_dropship.rmdl", <-18604,2115.18,6223.43>, <0,0,0>, true, 8000, -1 ) + + //CreateEditorProp( $"mdl/vehicles_r5/land_med/msc_freight_tortus_mod/veh_land_msc_freight_tortus_mod_cargo_holder_v1_static.rmdl", <-20600.9,2115.91,6223.55>, <0,-90,0>, true, 8000, -1 ) + + CreateEditorProp( $"mdl/vehicles_r5/land/msc_forklift_imc_v2/veh_land_msc_forklift_imc_v2_static.rmdl", <-18668,2536.64,6223.23>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1472,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1728,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1984,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2240,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2496,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2752,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,2752,6720>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,2752,6720>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2752,6720>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2496,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2240,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1984,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1728,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1472,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,1472,6720>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,1472,6720>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,1728,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,1984,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,2240,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,2496,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,2240,6720>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,2496,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,1984,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,1728,6720>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/lamps/industrial_wall_light_on_blue.rmdl", <-20039,1867.84,6472.22>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/lamps/industrial_wall_light_on_blue.rmdl", <-20039,1975.98,6472.22>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/lamps/industrial_wall_light_on_blue.rmdl", <-20039,2084.16,6472.24>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/lamps/industrial_wall_light_on_blue.rmdl", <-20039,2127.94,6472.22>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/lamps/industrial_wall_light_on_blue.rmdl", <-20039,2232.06,6472.22>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/lamps/industrial_wall_light_on_blue.rmdl", <-20039,2340.1,6472.22>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/lamps/industrial_wall_light_on_blue.rmdl", <-19000.9,1883.83,6472.44>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/lamps/industrial_wall_light_on_blue.rmdl", <-19000.9,1991.9,6472.45>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/lamps/industrial_wall_light_on_blue.rmdl", <-19000.9,2096.05,6472.46>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/lamps/industrial_wall_light_on_blue.rmdl", <-19000.8,2144.3,6472.45>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/lamps/industrial_wall_light_on_blue.rmdl", <-19000.8,2247.89,6471.43>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/lamps/industrial_wall_light_on_blue.rmdl", <-19000.8,2351.88,6471.43>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2240,6208>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/signs/market_sign_yellow_milk.rmdl", <-20024.6,2431.25,6404.36>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/signs/scrolling_sign_scan.rmdl", <-20024.5,1795.14,6408.19>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/signs/building_sign_lit_standing_02.rmdl", <-19015.1,2424.05,6304.39>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/beacon/construction_scaff_128_64_64.rmdl", <-18435.6,2552.81,6223.55>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/beacon/construction_plastic_mat_white_01.rmdl", <-19376.8,1947.43,6227.73>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/beacon/beacon_server_wall_mount_01.rmdl", <-19019.1,2592.44,6223.77>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/beacon/beacon_server_stand_01.rmdl", <-19027,2695.97,6231.9>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/beacon/construction_plastic_mat_black_01.rmdl", <-19685,2271.89,6223.86>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/beacon/construction_plastic_mat_black_01.rmdl", <-18560.2,2556.98,6224.04>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/beacon/construction_plastic_mat_black_01.rmdl", <-18644.1,2525,6223.97>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/mendoko/mendoko_handscanner_01_dmg.rmdl", <-19015.1,1839.94,6307.67>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/canyonlands/canyonlands_zone_sign_03b.rmdl", <-20032.2,2240.89,6719.59>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/security_fence_post.rmdl", <-19967.9,1408.71,6719.31>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/security_fence_post.rmdl", <-19027.8,1360.8,6735.44>, <0,180,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/UTG_spire.rmdl", <-19040.6,2851.51,6735.38>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/UTG_spire.rmdl", <-19984.6,2843.49,6735.42>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/traffic_barrel_02.rmdl", <-19996.6,1891.46,6223.4>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/traffic_barrel_02.rmdl", <-19992.5,2112.09,6223.17>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/traffic_barrel_02.rmdl", <-19996.7,2323.91,6223.32>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/traffic_tube_01.rmdl", <-19992.7,2224.1,6223.33>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/traffic_tube_01.rmdl", <-19989,1992.01,6223.73>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/traffic_cone_01.rmdl", <-19969,2091.8,6223.81>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/traffic_cone_01.rmdl", <-19969,2136.07,6223.8>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/traffic_cone_01.rmdl", <-19948.3,2115.11,6223.68>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/traffic_cone_01.rmdl", <-18255.3,2392.42,6223.47>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/traffic_cone_01.rmdl", <-18255.2,2343.94,6223.4>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/traffic_cone_01.rmdl", <-18255.2,2304.13,6223.44>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/traffic_cone_01.rmdl", <-18251.2,1883.99,6223.41>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/traffic_cone_01.rmdl", <-18251.2,1923.77,6223.44>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/traffic_cone_01.rmdl", <-18247.2,1972.06,6223.43>, <0,90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/vending_machine_02.rmdl", <-19464.8,2872.55,6223.8>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/vending_machine_04.rmdl", <-19408.7,2872.61,6223.65>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/vending_machine_01.rmdl", <-19352.7,2872.63,6223.73>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/vending_machine_03.rmdl", <-19292.7,2872.62,6223.7>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/glass_white_board_wall.rmdl", <-20024.7,2499.31,6347.71>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/welding_push_unit.rmdl", <-18648.1,1655.13,6223.5>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/electrical_box_green.rmdl", <-18720.7,1647.64,6223.4>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/traffic_barrel_02.rmdl", <-18876.8,1655.51,6223.79>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/traffic_barrel_02.rmdl", <-18840.8,1655.42,6223.69>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/traffic_barrel_02.rmdl", <-18864.9,1687.66,6223.72>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/traffic_tube_01.rmdl", <-18804.6,1643.28,6223.61>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/traffic_tube_01.rmdl", <-18808.7,1671.43,6223.51>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/traffic_tube_01.rmdl", <-18784.4,1639.19,6223.58>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/traffic_tube_01.rmdl", <-18792.5,1659.31,6223.52>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/traffic_tube_01.rmdl", <-18772.4,1655.24,6223.46>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/traffic_tube_01.rmdl", <-18764.3,1635.14,6223.56>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/traffic_tube_01.rmdl", <-18788.5,1675.4,6223.4>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/traffic_cone_01.rmdl", <-18752.2,1659.23,6223.4>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/traffic_cone_01.rmdl", <-18768.4,1683.41,6223.29>, <0,0,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/traffic_cone_01.rmdl", <-18792.6,1695.59,6223.34>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/traffic_cone_01.rmdl", <-18816.8,1695.61,6223.48>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/traffic_cone_01.rmdl", <-18832.8,1683.57,6223.59>, <0,-90,0>, true, 8000, -1 ) + CreateEditorProp( $"mdl/industrial/exit_sign_03.rmdl", <-20028.2,2140.85,6448.46>, <0,180,0>, true, 8000, -1 ) +} diff --git a/vscripts/gamemodes/fs_tdm/_gamemode_fsdm.nut b/vscripts/gamemodes/fs_tdm/_gamemode_fsdm.nut index 3d4f853e8..d0c12198d 100644 --- a/vscripts/gamemodes/fs_tdm/_gamemode_fsdm.nut +++ b/vscripts/gamemodes/fs_tdm/_gamemode_fsdm.nut @@ -1,17 +1,13 @@ -/////////////////////////////////////////////////////// -// ███████ ██ ██████ ██ ██ ███████ ████████ █████ ████████ ███████ -// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ -// █████ ██ ██ ██ ██ █ ██ ███████ ██ ███████ ██ █████ -// ██ ██ ██ ██ ██ ███ ██ ██ ██ ██ ██ ██ ██ -// ██ ███████ ██████ ███ ███ ███████ ██ ██ ██ ██ ███████ -/////////////////////////////////////////////////////// +// Flowstate DM +// Fork of the custom_tdm gamemode made by sal#3261 + // Credits: // CaféDeColombiaFPS (Retículo Endoplasmático#5955) -- owner/main dev -// michae\l/#1125 -- initial help -// AyeZee#6969 -- tdm/ffa dropships and droppods -// Zer0Bytes#4428 -- rewrite +// AyeZee#6969 -- Ctf voting phase to work off & droppods +// Zer0Bytes#4428 -- Weapons randomizer rewrite +// makimakima#5561 -- TDM Saved Weapon List, 1v1 gamemode +// michae\l/#1125 -- flowstate admin // everyone else -- advice -// Makimaki -- TDM Saved Weapon List, 1v1 gamemode global function _CustomTDM_Init global function _RegisterLocation @@ -38,9 +34,12 @@ global function getkd global function ClientCommand_RebalanceTeams global function ClientCommand_FlowstateKick global function ClientCommand_ShowLatency +global function ClientCommand_Help global function WpnPulloutOnRespawn global function WpnAutoReload global function ReCheckGodMode +global function GetBestPlayer +global function SendScoreboardToClient const string WHITE_SHIELD = "armor_pickup_lv1" const string BLUE_SHIELD = "armor_pickup_lv2" @@ -101,16 +100,16 @@ struct { string authkey = "" } file -struct PlayerInfo +struct { - string name - int team - int score - int deaths - float kd - int damage - int lastLatency -} + // Voting + array votedPlayers // array of players that have already voted (bad var name idc) + bool votingtime = false + bool votestied = false + array mapVotes + array mapIds + int mappicked = 0 +} FS_DM // ██████ █████ ███████ ███████ ███████ ██ ██ ███ ██ ██████ ████████ ██ ██████ ███ ██ ███████ // ██ ██ ██ ██ ██ ██ ██ ██ ██ ████ ██ ██ ██ ██ ██ ██ ████ ██ ██ @@ -142,9 +141,7 @@ void function _CustomTDM_Init() AddCallback_EntitiesDidLoad( __OnEntitiesDidLoad ) AddCallback_OnClientConnected( void function(entity player) { - if(FlowState_PROPHUNT()) - _OnPlayerConnectedPROPHUNT(player) - else if (FlowState_SURF()) + if (FlowState_SURF()) _OnPlayerConnectedSURF(player) else thread _OnPlayerConnected(player) @@ -155,17 +152,12 @@ void function _CustomTDM_Init() AddSpawnCallback( "prop_survival", DissolveItem ) AddCallback_OnPlayerKilled(void function(entity victim, entity attacker, var damageInfo) { - if(FlowState_PROPHUNT()) - thread _OnPlayerDiedPROPHUNT(victim, attacker, damageInfo) - else if (FlowState_SURF()) + if (FlowState_SURF()) thread _OnPlayerDiedSURF(victim, attacker, damageInfo) else thread _OnPlayerDied(victim, attacker, damageInfo) }) - if(FlowState_PROPHUNT()){ - AddClientCommandCallback("next_round", ClientCommand_NextRoundPROPHUNT) - AddClientCommandCallback("scoreboard", ClientCommand_ScoreboardPROPHUNT) - } else if (FlowState_SURF()){ + if (FlowState_SURF()){ AddClientCommandCallback("next_round", ClientCommand_NextRoundSURF) } else{ AddClientCommandCallback("scoreboard", ClientCommand_Scoreboard) @@ -193,7 +185,9 @@ void function _CustomTDM_Init() AddClientCommandCallback("commands", ClientCommand_Help) AddClientCommandCallback("say", ClientCommand_Say) AddClientCommandCallback("adminlogin", ClientCommand_adminlogin) - + // Used for sending votes from client to server + AddClientCommandCallback("VoteForMap", ClientCommand_VoteForMap) + if(!FlowState_AdminTgive()) { AddClientCommandCallback("saveguns", ClientCommand_SaveCurrentWeapons) @@ -202,6 +196,12 @@ void function _CustomTDM_Init() AddClientCommandCallback("resetskills", ClientCommand_Maki_ResetSkills) } + if( GetCurrentPlaylistVarBool( "flowstate_hackersVsPros", false ) ) + { + AddClientCommandCallback("startcameraman", ClientCommand_setspecplayer ) + AddClientCommandCallback("becomepro", ClientCommand_BecomePro ) + } + AddClientCommandCallback("controllerstate", ClientCommand_ControllerReport) AddClientCommandCallback("controllersummary", ClientCommand_ControllerSummary) @@ -221,9 +221,7 @@ void function _CustomTDM_Init() file.blacklistedAbilities.append(GetCurrentPlaylistVarString("blacklisted_ability_" + i.tostring(), "~~none~~")) } - if(FlowState_PROPHUNT()){ - thread RunPROPHUNT() - } else if(FlowState_SURF()){ + if(FlowState_SURF()){ thread RunSURF() }else { thread RunTDM()} @@ -414,7 +412,7 @@ void function _OnPlayerConnected(entity player) if(!IsValid(player)) return - if(FlowState_ForceCharacter()){ + if(FlowState_ForceCharacter() && !(GetCurrentPlaylistVarBool( "flowstate_hackersVsPros", false ))){ player.SetPlayerNetBool( "hasLockedInCharacter", true) if(GetCurrentPlaylistVarBool("flowstateRandomCharacterOnSpawn", false)) @@ -423,7 +421,12 @@ void function _OnPlayerConnected(entity player) if(GetCurrentPlaylistVarBool("flowstateForceCharacter", false)) CharSelect(player) } - + + if(GetCurrentPlaylistVarBool( "flowstate_hackersVsPros", false )) + { + AssignCharacter(player, characterslist.getrandom()) + } + if(GetMapName() == "mp_rr_aqueduct") if(IsValid(player)) { CreatePanelText( player, "Flowstate", "", <3705.10547, -4487.96484, 470.03302>, <0, 190, 0>, false, 2 ) @@ -483,7 +486,7 @@ void function _OnPlayerConnected(entity player) array InValidMaps = [ "mp_rr_canyonlands_staging", - "Skill trainer By Colombia", + "Skill trainer By CafeFPS", "Custom map by Biscutz", "White Forest By Zer0Bytes", "Brightwater By Zer0bytes", @@ -514,14 +517,27 @@ void function _OnPlayerConnected(entity player) // if(FlowState_Gungame()) // KillStreakAnnouncer(player, true) + if(GetCurrentPlaylistVarBool( "flowstate_hackersVsPros", false )) + { + SetTeam(player, TEAM_IMC) + BecomeHacker(player) + + thread function() : (player) + { + wait 12 + if(!IsValid(player) || player.GetTeam() != TEAM_IMC) return + Message(player, "HACKERS VS PROS", "You're a Hacker") + }() + } } break default: break } } - - thread __HighPingCheck( player ) + + if(!GetCurrentPlaylistVarBool( "flowstate_hackersVsPros", false )) + thread __HighPingCheck( player ) if( is1v1EnabledAndAllowed() ) { @@ -1037,7 +1053,29 @@ void function _HandleRespawn(entity player, bool isDroppodSpawn = false) if(FlowState_Gungame() && IsValid( player )) GiveGungameWeapon(player) - + if(GetCurrentPlaylistVarBool( "flowstate_hackersVsPros", false )) + { + TakeAllWeapons(player) + GiveRandomPrimaryWeaponMetagame(player) + GiveRandomSecondaryWeaponMetagame(player) + // player.GiveWeapon( "mp_weapon_bolo_sword_primary", WEAPON_INVENTORY_SLOT_PRIMARY_2, [] ) + // player.GiveOffhandWeapon( "melee_bolo_sword", OFFHAND_MELEE, [] ) + player.GiveWeapon( "mp_weapon_melee_survival", WEAPON_INVENTORY_SLOT_PRIMARY_2, [] ) + player.GiveOffhandWeapon( "melee_pilot_emptyhanded", OFFHAND_MELEE, [] ) + + entity tactical = player.GetOffhandWeapon( OFFHAND_TACTICAL ) + + if( IsValid( tactical ) ) + player.TakeOffhandWeapon( OFFHAND_TACTICAL ) + + entity ultimate = player.GetOffhandWeapon( OFFHAND_ULTIMATE ) + + if( IsValid( ultimate ) ) + player.TakeOffhandWeapon( OFFHAND_ULTIMATE ) + + player.GiveOffhandWeapon("mp_ability_grapple", OFFHAND_TACTICAL, []) + + } player.SetActiveWeaponBySlot(eActiveInventorySlot.mainHand, WEAPON_INVENTORY_SLOT_PRIMARY_2) thread Flowstate_GrantSpawnImmunity(player, 2.5) @@ -1055,7 +1093,8 @@ void function ReCheckGodMode(entity player) player.MakeVisible() player.ClearInvulnerable() player.SetTakeDamageType( DAMAGE_YES ) - Highlight_ClearEnemyHighlight( player ) + if(!GetCurrentPlaylistVarBool( "flowstate_hackersVsPros", false )) + Highlight_ClearEnemyHighlight( player ) } void function TpPlayerToSpawnPoint(entity player) @@ -1082,7 +1121,8 @@ void function Flowstate_GrantSpawnImmunity(entity player, float duration) StatusEffect_AddTimed( player, eStatusEffect.stim_visual_effect, 1.0, duration, duration ) player.SetTakeDamageType( DAMAGE_NO ) - Highlight_SetEnemyHighlight( player, "survival_enemy_skydiving" ) + if(!GetCurrentPlaylistVarBool( "flowstate_hackersVsPros", false )) + Highlight_SetEnemyHighlight( player, "survival_enemy_skydiving" ) player.SetInvulnerable() float endTime = Time() + duration @@ -1095,7 +1135,8 @@ void function Flowstate_GrantSpawnImmunity(entity player, float duration) player.MakeVisible() player.ClearInvulnerable() player.SetTakeDamageType( DAMAGE_YES ) - Highlight_ClearEnemyHighlight( player ) + if(!GetCurrentPlaylistVarBool( "flowstate_hackersVsPros", false )) + Highlight_ClearEnemyHighlight( player ) StatusEffect_StopAllOfType( player, eStatusEffect.adrenaline_visuals ) StatusEffect_StopAllOfType( player, eStatusEffect.speed_boost ) @@ -2005,7 +2046,7 @@ void function SimpleChampionUI() int choice = file.nextMapIndex file.mapIndexChanged = false - file.selectedLocation = file.locationSettings[ choice ] + file.selectedLocation = file.locationSettings[ FS_DM.mappicked ] file.thisroundDroppodSpawns = GetNewFFADropShipLocations( file.selectedLocation.name, GetMapName() ) //printt("Flowstate DEBUG - Next round location is: " + file.selectedLocation.name) @@ -2031,12 +2072,12 @@ void function SimpleChampionUI() { DestroyPlayerProps() CreateFlowStateGroundMedKit( <10725, 5913,-4225>, ZERO_VECTOR , 3 , FlowState_ExtrashieldsSpawntime() ) - } else if( file.selectedLocation.name == "Skill trainer By Colombia" && FlowState_ExtrashieldsEnabled() ) + } else if( file.selectedLocation.name == "Skill trainer By CafeFPS" && FlowState_ExtrashieldsEnabled() ) { DestroyPlayerProps() CreateFlowStateGroundMedKit( <17247,31823,-310>, ZERO_VECTOR , 3 , FlowState_ExtrashieldsSpawntime() ) thread SkillTrainerLoad() - } else if(file.selectedLocation.name == "Skill trainer By Colombia" ) + } else if(file.selectedLocation.name == "Skill trainer By CafeFPS" ) { //printt("Flowstate DEBUG - creating props for Skill Trainer.") DestroyPlayerProps() @@ -2196,6 +2237,7 @@ void function SimpleChampionUI() } } ResetAllPlayerStats() + ResetMapVotes() file.ringBoundary = CreateRingBoundary( file.selectedLocation ) //printt("Flowstate DEBUG - Bubble created, executing SimpleChampionUI.") @@ -2206,7 +2248,50 @@ void function SimpleChampionUI() { thread Flowstate_GrantSpawnImmunity(player, 2.5) } - + + if(GetCurrentPlaylistVarBool( "flowstate_hackersVsPros", false )) + { + ResetAllPlayerStats() + int i + int maxHackers = 3 + + array allplayers = GetPlayerArray() + allplayers.randomize() + + foreach (entity p in allplayers) + { + if (!IsValid(p)) continue + + Remote_CallFunction_NonReplay(p, "Minimap_EnableDraw_Internal") + + // if(i >= maxHackers) + // { + // SetTeam(p, TEAM_MILITIA) + // ClearHackerOrBecomePro(p) + + // thread function() : (p) + // { + // wait 12 + // if(!IsValid(p)) return + // Message(p, "HACKERS VS PROS", "You're a Pro") + // }() + // } + // else + // { + SetTeam(p, TEAM_IMC) + BecomeHacker(p) + + thread function() : (p) + { + wait 12 + if(!IsValid(p)) return + Message(p, "HACKERS VS PROS", "You're a Hacker") + }() + // } + // i++ + } + } + if( GetCurrentPlaylistVarBool("flowstateEndlessFFAorTDM", false ) ) { WaitForever() @@ -2240,6 +2325,21 @@ void function SimpleChampionUI() while( Time() <= endTime ) { + //printt("test") + if(GetCurrentPlaylistVarBool( "flowstate_hackersVsPros", false )) + { + foreach(player in GetPlayerArray()) + { + if(!IsValid(player)) continue + + if(player.GetPlayerGameStat( PGS_KILLS ) >= HACKERS_VS_PRO_MAX_KILLS ) + { + SetTdmStateToNextRound() + break + } + } + } + if( Time() == endTime - 900 ) { foreach( player in GetPlayerArray() ) @@ -2345,11 +2445,14 @@ void function SimpleChampionUI() PlayerRestoreHPFIESTA(player, 100) } else PlayerRestoreHP(player, 100, Equipment_GetDefaultShieldHP()) - + + Remote_CallFunction_NonReplay(player, "Minimap_DisableDraw_Internal") player.SetThirdPersonShoulderModeOn() HolsterAndDisableWeapons( player ) } - + + thread SendScoreboardToClient() + wait 1 if(GetCurrentPlaylistVarBool("flowstateBattleLogEnable", false )) @@ -2367,48 +2470,313 @@ void function SimpleChampionUI() foreach( player in GetPlayerArray() ) { if( !IsValid( player ) ) continue - - AddCinematicFlag( player, CE_FLAG_HIDE_MAIN_HUD | CE_FLAG_EXECUTION ) - if( GetCurrentPlaylistName() == "movement_gym" ) { - Message( player,"Movement Gym", "\n\n Made by twitter.com/DEAFPS_ \n\n With help from AyeZee#6969 & Julefox#0050 \n\n Custom_tdm by sal#3261.\n\n Flowstate DM " + file.scriptversion + " \n by @CafeFPS & 暇人のEndergreen#7138", 7, "UI_Menu_RoundSummary_Results" ) - } else { - Message( player,"Round Scoreboard", "\n Name: K | D | KD | Damage dealt \n \n" + ScoreboardFinal() + "\n \n"+ "Your data:\n" + player.GetPlayerName() + ": " + player.GetPlayerGameStat( PGS_KILLS ) + " | " + player.GetPlayerGameStat( PGS_DEATHS ) + " | " + getkd(player.GetPlayerGameStat( PGS_KILLS ),player.GetPlayerGameStat( PGS_DEATHS )) + " | " + player.p.playerDamageDealt + "\n\n Custom_tdm by sal#3261.\n\n Flowstate DM " + file.scriptversion + " \n by @CafeFPS & 暇人のEndergreen#7138", 7, "UI_Menu_RoundSummary_Results" ) - } + RemoveCinematicFlag( player, CE_FLAG_HIDE_MAIN_HUD | CE_FLAG_EXECUTION ) + player.SetThirdPersonShoulderModeOff() + player.FreezeControlsOnServer() } + + int TeamWon = 69 + + if(GetPlayerArray().len() == 1) + TeamWon = gp()[0].GetTeam() //DEBUG VALUE + + if(IsValid(GetBestPlayer())) + TeamWon = GetBestPlayer().GetTeam() + - wait 7 + // Only do voting for maps with multi locations + // if ( file.locationSettings.len() >= NUMBER_OF_MAP_SLOTS_FSDM ) + // { - if( file.currentRound == Flowstate_AutoChangeLevelRounds() && Flowstate_EnableAutoChangeLevel() ) - { + // for each player, open the vote menu and set it to the winning team screen // foreach( player in GetPlayerArray() ) - // Message( player, "We have reached the round to change levels.", "Total Round: " + file.currentRound, 6.0 ) - + // { + // if( !IsValid( player ) ) + // continue + + // Remote_CallFunction_Replay(player, "ServerCallback_FSDM_OpenVotingPhase", true) + // Remote_CallFunction_Replay(player, "ServerCallback_FSDM_ChampionScreenHandle", true, TeamWon, skinIndexForChampion) + // Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.WinnerScreen, TeamWon, eFSDMScreen.NotUsed, eFSDMScreen.NotUsed) + // } foreach( player in GetPlayerArray() ) - Message( player, "Server clean up incoming", "Don't leave. Server is going to reload to avoid lag.", 6.0 ) + { + if( !IsValid( player ) ) + continue + + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_OpenVotingPhase", true) + Remote_CallFunction_NonReplay(player, "ServerCallback_FSDM_CoolCamera") + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.ScoreboardUI, TeamWon, eFSDMScreen.NotUsed, eFSDMScreen.NotUsed) + EmitSoundOnEntityOnlyToPlayer(player, player, "UI_Menu_RoundSummary_Results") + } + + thread function() : () + { + for( int i = 0; i < NUMBER_OF_MAP_SLOTS_FSDM; ++i ) + { + while( true ) + { + // Get a random location id from the available locations + int randomId = RandomIntRange(0, file.locationSettings.len()) - wait 6.0 + // If the map already isnt picked for voting then append it to the array, otherwise keep looping till it finds one that isnt picked yet + if( !FS_DM.mapIds.contains( randomId ) ) + { + FS_DM.mapIds.append( randomId ) + break + } + } + } + }() + + wait 7 - if(FlowState_EnableMovementGymLogs() && FlowState_EnableMovementGym()) - MovementGymSaveTimesToFile() + // foreach( player in GetPlayerArray() ) + // { + // if( !IsValid( player ) ) + // continue + + // Remote_CallFunction_NonReplay(player, "ServerCallback_FSDM_CoolCamera") + // Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.ScoreboardUI, TeamWon, eFSDMScreen.NotUsed, eFSDMScreen.NotUsed) + // EmitSoundOnEntityOnlyToPlayer(player, player, "UI_Menu_RoundSummary_Results") + // } - GameRules_ChangeMap( GetMapName(), GameRules_GetGameMode() ) + wait 7 - } + // Set voting to be allowed + FS_DM.votingtime = true + + // For each player, set voting screen and update maps that are picked for voting + foreach( player in GetPlayerArray() ) + { + if( !IsValid( player ) ) + continue + + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_UpdateVotingMaps", FS_DM.mapIds[0], FS_DM.mapIds[1], FS_DM.mapIds[2], FS_DM.mapIds[3]) + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.VoteScreen, eFSDMScreen.NotUsed, eFSDMScreen.NotUsed, eFSDMScreen.NotUsed) + } + + wait 16 + + FS_DM.votestied = false + bool anyVotes = false + + // Make voting not allowed + FS_DM.votingtime = false + + // See if there was any votes in the first place + foreach( int votes in FS_DM.mapVotes ) + { + if( votes > 0 ) + { + anyVotes = true + break + } + } + + if ( anyVotes ) + { + // store the highest vote count for any of the maps + int highestVoteCount = -1 + + // store the last map id of the map that has the highest vote count + int highestVoteId = -1 + + // store map ids of all the maps with the highest vote count + array mapsWithHighestVoteCount + + + for(int i = 0; i < NUMBER_OF_MAP_SLOTS_FSDM; ++i) + { + int votes = FS_DM.mapVotes[i] + if( votes > highestVoteCount ) + { + highestVoteCount = votes + highestVoteId = FS_DM.mapIds[i] + + // we have a new highest, so clear the array + mapsWithHighestVoteCount.clear() + mapsWithHighestVoteCount.append(FS_DM.mapIds[i]) + } + else if( votes == highestVoteCount ) // if this map also has the highest vote count, add it to the array + { + mapsWithHighestVoteCount.append(FS_DM.mapIds[i]) + } + } + + // if there are multiple maps with the highest vote count then it's a tie + if( mapsWithHighestVoteCount.len() > 1 ) + { + FS_DM.votestied = true + } + else // else pick the map with the highest vote count + { + // Set the vote screen for each player to show the chosen location + foreach( player in GetPlayerArray() ) + { + if( !IsValid( player ) ) + continue + + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.SelectedScreen, eFSDMScreen.NotUsed, highestVoteId, eFSDMScreen.NotUsed) + } + + // Set the location to the location that won + FS_DM.mappicked = highestVoteId + } + + if ( FS_DM.votestied ) + { + foreach( player in GetPlayerArray() ) + { + if( !IsValid( player ) ) + continue + + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.TiedScreen, eFSDMScreen.NotUsed, 42069, eFSDMScreen.NotUsed) + } + + mapsWithHighestVoteCount.randomize() + waitthread RandomizeTiedLocations(mapsWithHighestVoteCount) + } + } + else // No one voted so pick random map + { + // Pick a random location id from the aviable locations + FS_DM.mappicked = RandomIntRange(0, file.locationSettings.len() - 1) + + // Set the vote screen for each player to show the chosen location + foreach( player in GetPlayerArray() ) + { + if( !IsValid( player ) ) + continue + + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.SelectedScreen, eFSDMScreen.NotUsed, FS_DM.mappicked, eFSDMScreen.NotUsed) + } + } + + //wait for timing + wait 5 + + // Close the votemenu for each player + foreach( player in GetPlayerArray() ) + { + if( !IsValid( player ) ) + continue + + ScreenCoverTransition_Player(player, Time() + 1) + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_OpenVotingPhase", false) + } + wait 2 + // } + + // Clear players the voted for next voting + FS_DM.votedPlayers.clear() + + // Clear mapids for next voting + FS_DM.mapIds.clear() + + // if( file.currentRound == Flowstate_AutoChangeLevelRounds() && Flowstate_EnableAutoChangeLevel() ) + // { + // // foreach( player in GetPlayerArray() ) + // // Message( player, "We have reached the round to change levels.", "Total Round: " + file.currentRound, 6.0 ) + + // foreach( player in GetPlayerArray() ) + // Message( player, "Server clean up incoming", "Don't leave. Server is going to reload to avoid lag.", 6.0 ) + + // wait 6.0 + + // GameRules_ChangeMap( GetMapName(), GameRules_GetGameMode() ) + // } foreach( player in GetPlayerArray() ) { if( !IsValid( player ) ) continue ClearInvincible( player ) - RemoveCinematicFlag( player, CE_FLAG_HIDE_MAIN_HUD | CE_FLAG_EXECUTION ) - player.SetThirdPersonShoulderModeOff() + player.UnfreezeControlsOnServer() } - file.ringBoundary.Destroy() - file.currentRound++ } +// purpose: display the UI for randomization of tied maps at the end of voting +void function RandomizeTiedLocations(array maps) +{ + bool donerandomizing = false + int randomizeammount = RandomIntRange(50, 75) + int i = 0 + int mapslength = maps.len() + int currentmapindex = 0 + int selectedamp = 0 + + while (!donerandomizing) + { + // If currentmapindex is out of range set to 0 + if (currentmapindex >= mapslength) + currentmapindex = 0 + + // Update Randomizer ui for each player + foreach( player in GetPlayerArray() ) + { + if( !IsValid( player ) ) + continue + + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.TiedScreen, 69, maps[currentmapindex], 0) + } + + // stop randomizing once the randomize ammount is done + if (i >= randomizeammount) + { + donerandomizing = true + selectedamp = currentmapindex + } + + i++ + currentmapindex++ + + if (i >= randomizeammount - 15 && i < randomizeammount - 5) // slow down voting randomizer speed + { + wait 0.15 + } + else if (i >= randomizeammount - 5) // slow down voting randomizer speed + { + wait 0.25 + } + else // default voting randomizer speed + { + wait 0.05 + } + } + + // Show final selected map + foreach( player in GetPlayerArray() ) + { + if( !IsValid( player ) ) + continue + + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.TiedScreen, 69, maps[selectedamp], 1) + } + + // Pause on selected map for a sec for visuals + wait 0.5 + + // Procede to final location picked screen + foreach( player in GetPlayerArray() ) + { + if( !IsValid( player ) ) + continue + + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.SelectedScreen, 69, maps[selectedamp], eFSDMScreen.NotUsed) + } + + // Set selected location on server + FS_DM.mappicked = maps[selectedamp] +} + +void function ResetMapVotes() +{ + FS_DM.mapVotes.clear() + FS_DM.mapVotes.resize( NUMBER_OF_MAP_SLOTS_FSDM ) +} + // ██ ██████ ██ ███ ██ ██████ ██ // ██ ██ ██ ██ ████ ██ ██ ██ // ██ ██████ ██ ██ ██ ██ ██ ███ ██ @@ -2640,6 +3008,17 @@ void function CharSelect( entity player) } } +void function AssignCharacter( entity player, int index ) +{ + ItemFlavor PersonajeEscogido = GetAllCharacters()[index] + CharacterSelect_AssignCharacter( ToEHI( player ), PersonajeEscogido ) + + ItemFlavor playerCharacter = LoadoutSlot_GetItemFlavor( ToEHI( player ), Loadout_CharacterClass() ) + asset characterSetFile = CharacterClass_GetSetFile( playerCharacter ) + player.SetPlayerSettingsWithMods( characterSetFile, [] ) + + TakeAllWeapons(player) +} // ███████ ██████ ██████ ██████ ███████ ██████ ██████ █████ ██████ ██████ // ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ // ███████ ██ ██ ██ ██████ █████ ██████ ██ ██ ███████ ██████ ██ ██ @@ -2752,6 +3131,35 @@ kd = (float(floorkd))/100 return kd } +void function SendScoreboardToClient() +{ + foreach(entity sPlayer in GetPlayerArray()) + { + if(!IsValid(sPlayer)) continue + + Remote_CallFunction_NonReplay(sPlayer, "ServerCallback_ClearScoreboardOnClient") + + thread function() : (sPlayer) + { + foreach(entity player in GetPlayerArray()) + { + if(!IsValid(player)) continue + + PlayerInfo p + p.eHandle = player.GetEncodedEHandle() + p.score = player.GetPlayerGameStat( PGS_KILLS ) + p.deaths = player.GetPlayerGameStat( PGS_DEATHS ) + p.kd = getkd(p.score,p.deaths) + p.damage = int(player.p.playerDamageDealt) + p.lastLatency = int(player.GetLatency()* 1000) + + Remote_CallFunction_NonReplay(sPlayer, "ServerCallback_SendScoreboardToClient", p.eHandle, p.score, p.deaths, p.kd, p.damage, p.lastLatency) + } + }() + } + +} + string function ScoreboardFinal(bool fromConsole = false) //Este muestra el scoreboard completo //Thanks marumaru(vesslanG)#3285 @@ -2899,13 +3307,6 @@ array playersInfo = [] return msg } -int function ComparePlayerInfo(PlayerInfo a, PlayerInfo b) -{ - if(a.score < b.score) return 1; - else if(a.score > b.score) return -1; - return 0; -} - void function ResetAllPlayerStats() { foreach(player in GetPlayerArray()) { @@ -2980,6 +3381,44 @@ bool function IsAdmin( entity player ) return player.p.isAdmin } +bool function ClientCommand_VoteForMap(entity player, array args) +{ + if(!IsValid(player)) + return false + + // don't allow multiple votes + if ( FS_DM.votedPlayers.contains( player ) ) + return false + + // dont allow votes if its not voting time + if ( !FS_DM.votingtime ) + return false + + // get map id from args + int mapid = args[0].tointeger() + + // reject map ids that are outside of the range + if ( mapid >= NUMBER_OF_MAP_SLOTS_FSDM || mapid < 0 ) + return false + + // add a vote for selected maps + FS_DM.mapVotes[mapid]++ + + // update current amount of votes for each map + foreach( p in GetPlayerArray() ) + { + if( !IsValid( p ) ) + continue + + Remote_CallFunction_Replay(p, "ServerCallback_FSDM_UpdateMapVotesClient", FS_DM.mapVotes[0], FS_DM.mapVotes[1], FS_DM.mapVotes[2], FS_DM.mapVotes[3]) + } + + // append player to the list of players the voted so they cant vote again + FS_DM.votedPlayers.append(player) + + return true +} + bool function CC_TDM_Weapon_Selector_Open( entity player, array args ) { //green highlight? @@ -3185,9 +3624,6 @@ bool function ClientCommand_Help(entity player, array args) { Message(player, "WELCOME TO FLOWSTATE: GUNGAME", helpMessage(), 10) - } else if (FlowState_PROPHUNT()) - { - Message(player, "WELCOME TO FLOWSTATE: PROPHUNT", helpMessagePROPHUNT(), 10) } else if (FlowState_SURF()) { Message(player, "Apex SURF", "", 5) @@ -3467,7 +3903,21 @@ bool function ClientCommand_RebalanceTeams(entity player, array args) return true } - +bool function ClientCommand_BecomePro(entity p, array args) +{ + if(!IsValid(p)) return false + + SetTeam(p, TEAM_MILITIA) + ClearHackerOrBecomePro(p) + + thread function() : (p) + { + wait 1 + if(!IsValid(p)) return + Message(p, "HACKERS VS PROS", "You're a Pro") + }() + return true +} void function CreateAnimatedLegend(asset a, vector pos, vector ang , int solidtype = 0, float size = 1.0) { @@ -3714,3 +4164,202 @@ void function highlightKdMoreThan2(entity player) Highlight_ClearEnemyHighlight( player ) } } + + +//Hackers vs pros + +void function BecomeHacker(entity player) +{ + if( player.GetTeam() != TEAM_IMC ) return + + // AddButtonPressedPlayerInputCallback( player, IN_USE, CheckForHoldInput_Thread ) + + // Remote_CallFunction_NonReplay( player, "DM_HintCatalog", 0, 0) + + // entity tactical = player.GetOffhandWeapon( OFFHAND_TACTICAL ) + + // if( IsValid( tactical ) ) + // player.TakeOffhandWeapon( OFFHAND_TACTICAL ) + + // entity ultimate = player.GetOffhandWeapon( OFFHAND_ULTIMATE ) + + // if( IsValid( ultimate ) ) + // player.TakeOffhandWeapon( OFFHAND_ULTIMATE ) + + // player.GiveOffhandWeapon("mp_ability_grapple", OFFHAND_TACTICAL, []) + + Highlight_SetFriendlyHighlight( player, "infection_survivor_teammate" ) + Highlight_ClearEnemyHighlight( player ) + + player.ClearFirstDeployForAllWeapons() +} + +void function ClearHackerOrBecomePro(entity player) +{ + // if( player.GetTeam() != TEAM_MILITIA ) return + + // RemoveButtonPressedPlayerInputCallback( player, IN_USE, CheckForHoldInput_Thread ) + + // entity tactical = player.GetOffhandWeapon( OFFHAND_TACTICAL ) + + // if( IsValid( tactical ) ) + // player.TakeOffhandWeapon( OFFHAND_TACTICAL ) + + // entity ultimate = player.GetOffhandWeapon( OFFHAND_ULTIMATE ) + + // if( IsValid( ultimate ) ) + // player.TakeOffhandWeapon( OFFHAND_ULTIMATE ) + + // player.GiveOffhandWeapon("mp_ability_grapple", OFFHAND_TACTICAL, []) + + player.ClearFirstDeployForAllWeapons() + + thread function() : (player) + { + wait 1 + if(!IsValid(player)) return + Highlight_SetFriendlyHighlight( player, "infection_survivor_teammate" ) + Highlight_ClearFriendlyHighlight( player ) + Highlight_SetEnemyHighlight( player, "hackers_wallhack" ) + }() + + Remote_CallFunction_NonReplay( player, "UpdateRUITest") +} + +void function CheckForHoldInput_Thread( entity player ) //, entity weapon ) +{ + thread function () : (player)//, weapon) + { + player.EndSignal( "OnDeath" ) + player.EndSignal( "OnDestroy" ) + + OnThreadEnd( + function() : ( player )//, weapon ) + { + player.p.enableAimbot = false + + Remote_CallFunction_NonReplay( player, "DM_HintCatalog", 0, 0) + + } + ) + + while ( player.IsInputCommandHeld( IN_USE ) ) + { + if(!player.p.enableAimbot) + Remote_CallFunction_NonReplay( player, "DM_HintCatalog", 1, 0) + + player.p.enableAimbot = true + + WaitFrame() + } + }() +} + +entity function GetNearestPlayer(entity player) +{ + entity returnEntity + float dist = 2000 + float tempdist + + array enemies + + enemies.extend(GetPlayerArrayOfTeam_Alive(TEAM_MILITIA)) + enemies.extend(GetNPCArray()) + enemies.removebyvalue(player) + + foreach(target in enemies) + { + tempdist = Distance(target.GetOrigin(), player.GetOrigin()) + if(tempdist < dist) + { + returnEntity = target + dist = tempdist + } + } + + return returnEntity +} + +void function AimBot(entity player) +//Made by my Chinese friend Makimakima +{ + while(IsValid(player)) + { + //printt("aimbot") + try + { + entity target = GetNearestPlayer(player) + if(!player.p.enableAimbot || !IsValid(target)) + { + WaitFrame() + continue + } + vector targetOrigin = target.GetOrigin() + vector playerOrigin = player.GetOrigin() + + float tempAngleY = atan((playerOrigin.y-targetOrigin.y)/(playerOrigin.x-targetOrigin.x))*180/PI // -90 0 && (targetOrigin.y - playerOrigin.y) > 0 ) + { + // print("0 0 ) + { + // print("90 0 && (targetOrigin.y - playerOrigin.y) < 0 ) + { + // print("-90) + } + catch (error) + {} + WaitFrame() + } +} + +bool function ClientCommand_setspecplayer( entity player, array args ) +{ + // array allowedPlayers = split(GetCurrentPlaylistVarString("allowedCameraPlayers", ""), " ") + + // if( !(allowedPlayers.contains(player.GetPlayerName())) ) + // return false + + SetConVarFloat( "sv_noclipspeed", 3 ) + SetConVarFloat( "sv_noclipspeed_fast", 20 ) + SetConVarFloat( "sv_noclipspeed_slow", 1 ) + + TakeAllWeapons( player ) + player.MakeInvisible() + player.SetPhysics( MOVETYPE_NOCLIP ) + SetTeam( player, TEAM_SPECTATOR ) + + UpdatePlayerCounts() + Remote_CallFunction_NonReplay( player, "UpdateRUITest") + return true +} \ No newline at end of file diff --git a/vscripts/gamemodes/fs_tdm/sh_gamemode_fsdm.nut b/vscripts/gamemodes/fs_tdm/sh_gamemode_fsdm.nut index 83471bdec..c5b44f3e8 100644 --- a/vscripts/gamemodes/fs_tdm/sh_gamemode_fsdm.nut +++ b/vscripts/gamemodes/fs_tdm/sh_gamemode_fsdm.nut @@ -4,7 +4,8 @@ globalize_all_functions globalize_all_functions global const NO_CHOICES = 2 -global const SCORE_GOAL_TO_WIN = 100 +global const HACKERS_VS_PRO_MAX_KILLS = 15 +global const int NUMBER_OF_MAP_SLOTS_FSDM = 4 global enum eTDMAnnounce { @@ -27,6 +28,32 @@ global struct LocationSettings string name array spawns vector cinematicCameraOffset + LocPair &victorypos + asset locationAsset +} + +// Screen IDS +global enum eFSDMScreen +{ + WinnerScreen = 0 + VoteScreen = 1 + TiedScreen = 2 + SelectedScreen = 3 + NextRoundScreen = 4 + ScoreboardUI = 5 + NotUsed = 230 +} + +global struct PlayerInfo +{ + string name + int eHandle + int team + int score + int deaths + float kd + int damage + int lastLatency } struct { @@ -34,7 +61,14 @@ struct { array choices array locationSettings var scoreRui -} file; +} file + +int function ComparePlayerInfo(PlayerInfo a, PlayerInfo b) +{ + if(a.score < b.score) return 1; + else if(a.score > b.score) return -1; + return 0; +} void function Sh_CustomTDM_Init() { @@ -383,7 +417,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<-16787, 3540, 3075>, <0, 86, 0>), NewLocPair(<-19026, 3749, 4460>, <0, 2, 0>) ], - <0, 0, 3000> + <0, 0, 3000>,$"rui/flowstatelocations/hillside" ) ) Shared_RegisterLocation( @@ -395,7 +429,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<-10250, -18320, 3323>, <0, 100, 0>), NewLocPair(<-13261, -18100, 3337>, <0, 20, 0>) ], - <0, 0, 3000> + <0, 0, 3000>,$"rui/flowstatelocations/skulltown" ) ) Shared_RegisterLocation( @@ -407,7 +441,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<-3084, 16315, 2566>, <0, 144, 0>), NewLocPair(<-6517, 15833, 2911>, <0, 51, 0>) ], - <0, 0, 3000> + <0, 0, 3000>,$"rui/flowstatelocations/containment" ) ) Shared_RegisterLocation( @@ -420,7 +454,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<-18494, -10427, 2825>, <0, -155, 0>), NewLocPair(<-22590, -7534, 3103>, <0, 0, 0>) ], - <0, 0, 4000> + <0, 0, 4000>,$"rui/flowstatelocations/gaunlet" ) ) Shared_RegisterLocation( @@ -432,7 +466,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<4600, -11450, 2950>, <0, 180, 0>), NewLocPair(<3150, -11153, 3053>, <0, 100, 0>) ], - <0, 0, 3000> + <0, 0, 3000>,$"rui/flowstatelocations/market" ) ) Shared_RegisterLocation( @@ -444,7 +478,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<25924, 2161, 3848>, <0, -9, 0>), NewLocPair(<28818, 2590, 3798>, <0, 117, 0>) ], - <0, 0, 3000> + <0, 0, 3000>,$"rui/flowstatelocations/labs" ) ) Shared_RegisterLocation( @@ -461,7 +495,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<27133, -16074, 5414>, <0, -90, 0>), NewLocPair(<27051, -14200, 5582>, <0, -90, 0>) ], - <0, 0, 3000> + <0, 0, 3000>,$"rui/flowstatelocations/repulsor" ) ) @@ -474,7 +508,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<19946, 32, 4960>, <0, -168, 0>), NewLocPair(<12335, -1446, 3984>, <0, 2, 0>) ], - <0, 0, 3000> + <0, 0, 3000>,$"rui/flowstatelocations/cage" ) ) @@ -492,7 +526,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<32654, -1552, 3228>, <0, -90, 0>) ], - <0, 0, 3000> + <0, 0, 3000>,$"rui/flowstatelocations/swamps" ) ) @@ -511,7 +545,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<24000, 23650, 4050>, <0, 135, 0>), NewLocPair(<23935, 22080, 4200>, <0, 15, 0>) ], - <0, 0, 3000> + <0, 0, 3000>,$"rui/flowstatelocations/relay" ) ) @@ -527,7 +561,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<-23125, 25320, 2410>, <0, -20, 0>), NewLocPair(<-21925, 21120, 2390>, <0, 180, 0>) ], - <0, 0, 3000> + <0, 0, 3000>,$"rui/flowstatelocations/slumlakes" ) ) @@ -540,7 +574,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<-29802, 9886, 3217>, <0, 90, 0>), NewLocPair(<-30895, 10733, 3202>, <0, 0, 0>) ], - <0, 0, 3000> + <0, 0, 3000>,$"rui/flowstatelocations/kclittletown" ) ) @@ -553,20 +587,20 @@ void function Sh_CustomTDM_Init() NewLocPair(<-23614, 13605, 3347>, <0, -90, 0>), NewLocPair(<-24697, 12631, 3085>, <0, 0, 0>) ], - <0, 0, 3000> + <0, 0, 3000>,$"rui/flowstatelocations/runoff" ) ) Shared_RegisterLocation( NewLocationSettings( - "Big fights happened here", + "The Farm", [ NewLocPair(<11242, 8591, 4630>, <0, 0, 0>), NewLocPair(<6657, 12189, 5066>, <0, -90, 0>), NewLocPair(<7540, 8620, 5374>, <0, 89, 0>), NewLocPair(<13599, 7838, 4944>, <0, 150, 0>) ], - <0, 0, 3000> + <0, 0, 3000>,$"rui/flowstatelocations/thefarm" ) ) @@ -579,7 +613,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<-16584, -24859, 2642>, <0, 165, 0>), NewLocPair(<-19019, -26209, 2640>, <0, 65, 0>) ], - <0, 0, 2000> + <0, 0, 2000>,$"rui/flowstatelocations/thunderdome" ) ) Shared_RegisterLocation( @@ -591,7 +625,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<10091, -30000, 3070>, <0, 180, 0>), NewLocPair(<8487, -28838, 3061>, <0, -45, 0>) ], - <0, 0, 3000> + <0, 0, 3000>,$"rui/flowstatelocations/watert" ) ) @@ -604,7 +638,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<-13826, 15325, 3749>, <0, 160, 0>), NewLocPair(<-16160, 14273, 3770>, <0, 101, 0>) ], - <0, 0, 7000> + <0, 0, 7000>,$"rui/flowstatelocations/pit" ) ) @@ -617,83 +651,16 @@ void function Sh_CustomTDM_Init() NewLocPair(<-24688, 1316, 2583>, <0, 180, 0>), NewLocPair(<-26492, -5197, 2574>, <0, 50, 0>) ], - <0, 0, 3000> + <0, 0, 3000>,$"rui/flowstatelocations/airbase" ) ) - /////////////////////////////////// - //PROPHUNT LOCATIONS/////////////// - RegisterLocationPROPHUNT( - NewLocationSettings( - "Hillside Outspot", - [ - NewLocPair(<-19300, 4678, 3230>, <0, -100, 0>), - NewLocPair(<-16763, 4465, 3020>, <1, 18, 0>), - NewLocPair(<-20153, 1127, 3060>, <11, 170, 0>), - NewLocPair(<-16787, 3540, 3075>, <0, 86, 0>), - NewLocPair(<-19026, 3749, 4460>, <0, 2, 0>) - ], - <0, 0, 3000> - ) - ) - - RegisterLocationPROPHUNT( - NewLocationSettings( - "Skull Town", - [ - NewLocPair(<-9320, -13528, 3167>, <0, -100, 0>), - NewLocPair(<-7544, -13240, 3161>, <0, -115, 0>), - NewLocPair(<-10250, -18320, 3323>, <0, 100, 0>), - NewLocPair(<-13261, -18100, 3337>, <0, 20, 0>) - ], - <0, 0, 3000> - ) - ) - - RegisterLocationPROPHUNT( - NewLocationSettings( - "Containment", - [ - NewLocPair(<-7291, 19547, 2978>, <0, -65, 0>), - NewLocPair(<-3906, 19557, 2733>, <0, -123, 0>), - NewLocPair(<-3084, 16315, 2566>, <0, 144, 0>), - NewLocPair(<-6517, 15833, 2911>, <0, 51, 0>) - ], - <0, 0, 3000> - ) - ) - - RegisterLocationPROPHUNT( - NewLocationSettings( - "Gaunlet", - [ - NewLocPair(<-21271, -15275, 2781>, <0, 90, 0>), - NewLocPair(<-22952, -13304, 2718>, <0, 5, 0>), - NewLocPair(<-22467, -9567, 2949>, <0, -85, 0>), - NewLocPair(<-18494, -10427, 2825>, <0, -155, 0>) - ], - <0, 0, 4000> - ) - ) - - RegisterLocationPROPHUNT( - NewLocationSettings( - "Market", - [ - NewLocPair(<-110, -9977, 2987>, <0, 0, 0>), - NewLocPair(<-1605, -10300, 3053>, <0, -100, 0>), - NewLocPair(<4600, -11450, 2950>, <0, 180, 0>), - NewLocPair(<3150, -11153, 3053>, <0, 100, 0>) - ], - <0, 0, 3000> - ) - ) break case "mp_rr_canyonlands_64k_x_64k": Shared_RegisterLocation( NewLocationSettings( - "Interstellar Relay", + "Relay", [ NewLocPair(<26420, 31700, 4790>, <0, -90, 0>), NewLocPair(<29260, 26245, 4210>, <0, 45, 0>), @@ -706,7 +673,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<24000, 23650, 4050>, <0, 135, 0>), NewLocPair(<23935, 22080, 4200>, <0, 15, 0>) ], - <0, 0, 3000> + <0, 0, 3000>,$"rui/flowstatelocations/relay" ) ) Shared_RegisterLocation( @@ -721,7 +688,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<-23125, 25320, 2410>, <0, -20, 0>), NewLocPair(<-21925, 21120, 2390>, <0, 180, 0>) ], - <0, 0, 3000> + <0, 0, 3000>,$"rui/flowstatelocations/slumlakes" ) ) Shared_RegisterLocation( @@ -733,7 +700,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<-29802, 9886, 3217>, <0, 90, 0>), NewLocPair(<-30895, 10733, 3202>, <0, 0, 0>) ], - <0, 0, 3000> + <0, 0, 3000>,$"rui/flowstatelocations/kclittletown" ) ) Shared_RegisterLocation( @@ -745,7 +712,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<-23614, 13605, 3347>, <0, -90, 0>), NewLocPair(<-24697, 12631, 3085>, <0, 0, 0>) ], - <0, 0, 3000> + <0, 0, 3000>,$"rui/flowstatelocations/runoff" ) ) Shared_RegisterLocation( @@ -757,7 +724,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<-16584, -24859, 2642>, <0, 165, 0>), NewLocPair(<-19019, -26209, 2640>, <0, 65, 0>) ], - <0, 0, 2000> + <0, 0, 2000>,$"rui/flowstatelocations/thunderdome" ) ) Shared_RegisterLocation( @@ -769,7 +736,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<10091, -30000, 3070>, <0, 180, 0>), NewLocPair(<8487, -28838, 3061>, <0, -45, 0>) ], - <0, 0, 3000> + <0, 0, 3000>,$"rui/flowstatelocations/watert" ) ) Shared_RegisterLocation( @@ -781,7 +748,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<-13826, 15325, 3749>, <0, 160, 0>), NewLocPair(<-16160, 14273, 3770>, <0, 101, 0>) ], - <0, 0, 7000> + <0, 0, 7000>,$"rui/flowstatelocations/pit" ) ) Shared_RegisterLocation( @@ -793,7 +760,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<-24688, 1316, 2583>, <0, 180, 0>), NewLocPair(<-26492, -5197, 2574>, <0, 50, 0>) ], - <0, 0, 3000> + <0, 0, 3000>,$"rui/flowstatelocations/airbase" ) ) @@ -810,7 +777,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<27784, -16166, 5046>, <0, -180, 0>), NewLocPair(<27133, -16074, 5414>, <0, -90, 0>) ], - <0, 0, 3000> + <0, 0, 3000>,$"rui/flowstatelocations/repulsor" ) ) @@ -825,9 +792,9 @@ void function Sh_CustomTDM_Init() NewLocPair(<35757, 3256, 3290>, <0, -90, 0>), NewLocPair(<36422, 3109, 3500>, <0, -165, 0>), NewLocPair(<34965, 1718, 3529>, <0, 45, 0>), - NewLocPair(<32654, -1552, 3228>, <0, -90, 0>) + NewLocPair(<32654, -1552, 3500>, <0, -90, 0>) ], - <0, 0, 3000> + <0, 0, 3000>,$"rui/flowstatelocations/swamps" ) ) Shared_RegisterLocation( @@ -839,7 +806,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<-10250, -18320, 3323>, <0, 100, 0>), NewLocPair(<-13261, -18100, 3337>, <0, 20, 0>) ], - <0, 0, 3000> + <0, 0, 3000>,$"rui/flowstatelocations/skulltown" ) ) Shared_RegisterLocation( @@ -851,204 +818,97 @@ void function Sh_CustomTDM_Init() NewLocPair(<4600, -11450, 2950>, <0, 180, 0>), NewLocPair(<3150, -11153, 3053>, <0, 100, 0>) ], - <0, 0, 3000> - ) - ) - if(FlowState_EnableCustomMapByBiscutz()){ - Shared_RegisterLocation( - NewLocationSettings( - "Custom map by Biscutz", - [ - NewLocPair(<-2768,15163,6469>, <0, -180, 0>), - NewLocPair(<-5800,16008,6706>, <0, -48, 0>), - NewLocPair(<-5297,13404,6040>, <0, 0, 0>), - NewLocPair(<-2348,11823,6194>, <0, 0, 0>), - NewLocPair(<-5256,14392,5800>, <0, 0, 0>), - NewLocPair(<-3659,13700,6600>, <0, 0, 0>), - NewLocPair(<-1514,11165,7730>, <0, 0, 0>) - ], - <0, 0, 3000> + <0, 0, 3000>,$"rui/flowstatelocations/market" ) ) - } - if(FlowState_EnableWhiteForestByZero()){ - Shared_RegisterLocation( - NewLocationSettings( - "White Forest By Zer0Bytes", - [ - //Side A - NewLocPair( <-33024,17408,3328>, <0,90,0>), - NewLocPair( <-33024,16960,3328>, <0,90,0>), - NewLocPair( <-33280,16128,3264>, <0,90,0>), - NewLocPair( <-32448,16256,3328>, <0,90,0>), - NewLocPair( <-32192,16960,3328>, <0,90,0>), - NewLocPair( <-32256,16256,3328>, <0,90,0>), - NewLocPair( <-32128,17536,3328>, <0,90,0>), - NewLocPair( <-32512,17536,3328>, <0,90,0>), - NewLocPair( <-32960,17600,3328>, <0,90,0>), - NewLocPair( <-33536,17600,3328>, <0,90,0>), - NewLocPair( <-33728,17088,3328>, <0,90,0>), - NewLocPair( <-33856,16896,3200>, <0,90,0>), - NewLocPair( <-33920,17600,3200>, <0,90,0>), - NewLocPair( <-34368,18048,3072>, <0,0,0>), - NewLocPair( <-34352,18038,3151>, <0,0,0>), - NewLocPair( <-36696,19010,3021>, <0,0,0>), - NewLocPair( <-37079,19432,3120>, <0,90,0>), - NewLocPair( <-37335,19812,3053>, <0,0,0>), - NewLocPair( <-37371,19308,3033>, <0,0,0>), - NewLocPair( <-37106,19616,3152>, <0,0,0>), - - - // side B - NewLocPair( <-35442,24433,4112>, <0,-90,0>), - NewLocPair( <-35467,24668,4112>, <0,-90,0>), - NewLocPair( <-35454,24954,4135>, <0,-90,0>), - NewLocPair( <-34738,24934,4145>, <0,-90,0>), - NewLocPair( <-33453,24955,4152>, <0,-90,0>), - NewLocPair( <-33380,24704,4173>, <0,-90,0>), - NewLocPair( <-33498,24455,4148>, <0,-90,0>), - NewLocPair( <-34195,24456,4128>, <0,-90,0>), - NewLocPair( <-33745,24188,4093>, <0,-90,0>), - NewLocPair( <-33319,24002,3955>, <0,-90,0>), - NewLocPair( <-32764,23897,3382>, <0,-90,0>), - NewLocPair( <-32317,23278,2779>, <0,-90,0>), - NewLocPair( <-32100,22750,2647>, <0,180,0>), - NewLocPair( <-35148,24427,4147>, <0,-90,0>), - - //forest - NewLocPair( <-33511,22657,2239>, <0,-90,0>), - NewLocPair( <-33813,21797,2178>, <0,-90,0>), - NewLocPair( <-34937,22312,2195>, <0,-90,0>), - NewLocPair( <-35843,23339,2172>, <0,0,0> ), - NewLocPair( <-36700,23252,2237>, <0,0,0> ), - NewLocPair( <-36374,21910,2204>, <0,0,0> ), - NewLocPair( <-35239,22024,2154>, <0,180,0>), - NewLocPair( <-34463,20783,2182>, <0,90,0>), - NewLocPair( <-32753,20853,2085>, <0,90,0>), - NewLocPair( <-31809,21230,2015>, <0,-90,0>), - NewLocPair( <-33549,18878,2129>, <0,90,0>), - NewLocPair( <-34726,19371,2106>, <0,90,0>), - NewLocPair( <-34295,20018,2134>, <0,90,0>), - NewLocPair( <-31263,21107,2019>, <0,180,0>), - NewLocPair( <-36806,22295,2261>, <0,0,0> ), - NewLocPair( <-36226,20102,2105>, <0,0,0>), - NewLocPair( <-32764,19415,2048>, <0,180,0>), - NewLocPair( <-32402,22605,2328>, <0,-90,0>), - NewLocPair( <-33082,23773,2363>, <0,-90,0>) - - ], - <0, 0, 3000> - ) - ) - } - /////////////////////////////////// - //PROPHUNT LOCATIONS/////////////// + // Shared_RegisterLocation( + // NewLocationSettings( + // "Custom map by Biscutz", + // [ + // NewLocPair(<-2768,15163,6469>, <0, -180, 0>), + // NewLocPair(<-5800,16008,6706>, <0, -48, 0>), + // NewLocPair(<-5297,13404,6040>, <0, 0, 0>), + // NewLocPair(<-2348,11823,6194>, <0, 0, 0>), + // NewLocPair(<-5256,14392,5800>, <0, 0, 0>), + // NewLocPair(<-3659,13700,6600>, <0, 0, 0>), + // NewLocPair(<-1514,11165,7730>, <0, 0, 0>) + // ], + // <0, 0, 3000> + // ) + // ) - RegisterLocationPROPHUNT( - NewLocationSettings( - "Interstellar Relay", - [ - NewLocPair(<26420, 31700, 4790>, <0, -90, 0>), - NewLocPair(<29260, 26245, 4210>, <0, 45, 0>), - NewLocPair(<29255, 24360, 4210>, <0, 0, 0>), - NewLocPair(<24445, 28970, 4340>, <0, -90, 0>) - ], - <0, 0, 3000> - ) - ) - RegisterLocationPROPHUNT( - NewLocationSettings( - "Slum Lakes", - [ - NewLocPair(<-20060, 23800, 2655>, <0, 110, 0>), - NewLocPair(<-20245, 24475, 2810>, <0, -160, 0>), - NewLocPair(<-25650, 22025, 2270>, <0, 20, 0>), - NewLocPair(<-25550, 21635, 2590>, <0, 20, 0>) - ], - <0, 0, 3000> - ) - ) - RegisterLocationPROPHUNT( - NewLocationSettings( - "Little Town", - [ - NewLocPair(<-30190, 12473, 3186>, <0, -90, 0>), - NewLocPair(<-28773, 11228, 3210>, <0, 180, 0>), - NewLocPair(<-29802, 9886, 3217>, <0, 90, 0>), - NewLocPair(<-30895, 10733, 3202>, <0, 0, 0>) - ], - <0, 0, 3000> - ) - ) - - RegisterLocationPROPHUNT( - NewLocationSettings( - "Water Treatment", - [ - NewLocPair(<5583, -30000, 3070>, <0, 0, 0>), - NewLocPair(<7544, -29035, 3061>, <0, 130, 0>), - NewLocPair(<10091, -30000, 3070>, <0, 180, 0>), - NewLocPair(<8487, -28838, 3061>, <0, -45, 0>) - ], - <0, 0, 3000> - ) - ) - - RegisterLocationPROPHUNT( - NewLocationSettings( - "Airbase", - [ - NewLocPair(<-24140, -4510, 2583>, <0, 90, 0>), - NewLocPair(<-28675, 612, 2600>, <0, 18, 0>), - NewLocPair(<-24688, 1316, 2583>, <0, 180, 0>), - NewLocPair(<-26492, -5197, 2574>, <0, 50, 0>) - ], - <0, 0, 3000> - ) - ) + // Shared_RegisterLocation( + // NewLocationSettings( + // "White Forest By Zer0Bytes", + // [ + // //Side A + // NewLocPair( <-33024,17408,3328>, <0,90,0>), + // NewLocPair( <-33024,16960,3328>, <0,90,0>), + // NewLocPair( <-33280,16128,3264>, <0,90,0>), + // NewLocPair( <-32448,16256,3328>, <0,90,0>), + // NewLocPair( <-32192,16960,3328>, <0,90,0>), + // NewLocPair( <-32256,16256,3328>, <0,90,0>), + // NewLocPair( <-32128,17536,3328>, <0,90,0>), + // NewLocPair( <-32512,17536,3328>, <0,90,0>), + // NewLocPair( <-32960,17600,3328>, <0,90,0>), + // NewLocPair( <-33536,17600,3328>, <0,90,0>), + // NewLocPair( <-33728,17088,3328>, <0,90,0>), + // NewLocPair( <-33856,16896,3200>, <0,90,0>), + // NewLocPair( <-33920,17600,3200>, <0,90,0>), + // NewLocPair( <-34368,18048,3072>, <0,0,0>), + // NewLocPair( <-34352,18038,3151>, <0,0,0>), + // NewLocPair( <-36696,19010,3021>, <0,0,0>), + // NewLocPair( <-37079,19432,3120>, <0,90,0>), + // NewLocPair( <-37335,19812,3053>, <0,0,0>), + // NewLocPair( <-37371,19308,3033>, <0,0,0>), + // NewLocPair( <-37106,19616,3152>, <0,0,0>), + + + // // side B + // NewLocPair( <-35442,24433,4112>, <0,-90,0>), + // NewLocPair( <-35467,24668,4112>, <0,-90,0>), + // NewLocPair( <-35454,24954,4135>, <0,-90,0>), + // NewLocPair( <-34738,24934,4145>, <0,-90,0>), + // NewLocPair( <-33453,24955,4152>, <0,-90,0>), + // NewLocPair( <-33380,24704,4173>, <0,-90,0>), + // NewLocPair( <-33498,24455,4148>, <0,-90,0>), + // NewLocPair( <-34195,24456,4128>, <0,-90,0>), + // NewLocPair( <-33745,24188,4093>, <0,-90,0>), + // NewLocPair( <-33319,24002,3955>, <0,-90,0>), + // NewLocPair( <-32764,23897,3382>, <0,-90,0>), + // NewLocPair( <-32317,23278,2779>, <0,-90,0>), + // NewLocPair( <-32100,22750,2647>, <0,180,0>), + // NewLocPair( <-35148,24427,4147>, <0,-90,0>), + + // //forest + // NewLocPair( <-33511,22657,2239>, <0,-90,0>), + // NewLocPair( <-33813,21797,2178>, <0,-90,0>), + // NewLocPair( <-34937,22312,2195>, <0,-90,0>), + // NewLocPair( <-35843,23339,2172>, <0,0,0> ), + // NewLocPair( <-36700,23252,2237>, <0,0,0> ), + // NewLocPair( <-36374,21910,2204>, <0,0,0> ), + // NewLocPair( <-35239,22024,2154>, <0,180,0>), + // NewLocPair( <-34463,20783,2182>, <0,90,0>), + // NewLocPair( <-32753,20853,2085>, <0,90,0>), + // NewLocPair( <-31809,21230,2015>, <0,-90,0>), + // NewLocPair( <-33549,18878,2129>, <0,90,0>), + // NewLocPair( <-34726,19371,2106>, <0,90,0>), + // NewLocPair( <-34295,20018,2134>, <0,90,0>), + // NewLocPair( <-31263,21107,2019>, <0,180,0>), + // NewLocPair( <-36806,22295,2261>, <0,0,0> ), + // NewLocPair( <-36226,20102,2105>, <0,0,0>), + // NewLocPair( <-32764,19415,2048>, <0,180,0>), + // NewLocPair( <-32402,22605,2328>, <0,-90,0>), + // NewLocPair( <-33082,23773,2363>, <0,-90,0>) - RegisterLocationPROPHUNT( - NewLocationSettings( - "Swamps", - [ - NewLocPair(<32704,-8576,3520>, <0, 167, 0>), - NewLocPair(<34496,-5888,3008>, <0, 51, 0>), - NewLocPair(<33280,-4544,3072>, <0, -17, 0>), - NewLocPair(<30720,-6080,2944>, <0, -92, 0>) - ], - <0, 0, 3000> - ) - ) - RegisterLocationPROPHUNT( - NewLocationSettings( - "Skull Town", - [ - NewLocPair(<-9320, -13528, 3167>, <0, -100, 0>), - NewLocPair(<-7544, -13240, 3161>, <0, -115, 0>), - NewLocPair(<-10250, -18320, 3323>, <0, 100, 0>), - NewLocPair(<-13261, -18100, 3337>, <0, 20, 0>) - ], - <0, 0, 3000> - ) - ) - RegisterLocationPROPHUNT( - NewLocationSettings( - "Market", - [ - NewLocPair(<-110, -9977, 2987>, <0, 0, 0>), - NewLocPair(<-1605, -10300, 3053>, <0, -100, 0>), - NewLocPair(<4600, -11450, 2950>, <0, 180, 0>), - NewLocPair(<3150, -11153, 3053>, <0, 100, 0>) - ], - <0, 0, 3000> - ) - ) - break - /////////////////////////////////// - //END PROPHUNT LOCATIONS/////////////// - + // ], + // <0, 0, 3000> + // ) + // ) + break + case "mp_rr_desertlands_64k_x_64k_tt": Shared_RegisterLocation( NewLocationSettings( @@ -1065,7 +925,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<-26716, -8446, -2733>, <0, 87, 0>), NewLocPair(<-22701, -7660, -2898>, <0, 105, 0>) ], - <0, 0, 3000> + <0, 0, 3000>,$"rui/flowstatelocations/miragevoyage" ) ) //break @@ -1160,7 +1020,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<11210, 4164, -4235>, <0, 90, 0>), NewLocPair(<11700, 6207, -4435>, <-10, 90, 0>) ], - <0, 0, 3000> + <0, 0, 3000>,$"rui/flowstatelocations/capitolcity" ) ) } @@ -1183,7 +1043,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<-27535, 10922, -3280>, <0, -94, 0>), NewLocPair(<-29879, 9151, -2860>, <0, 0, 0>) ], - <0, 0, 2500> + <0, 0, 2500>,$"rui/flowstatelocations/lavafissure" ) ) @@ -1205,7 +1065,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<-13765, 27654, -2850>, <0, -65, 0>), NewLocPair(<-12121, 26517, -2850>, <0, 124, 0>) ], - <0, 0, 2000> + <0, 0, 2000>,$"rui/flowstatelocations/spaceelevator" ) ) @@ -1217,7 +1077,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<19559, 232, -4035>, <0, 33, 0>), NewLocPair(<19400, 4384, -4027>, <0, -35, 0>) ], - <0, 0, 2000> + <0, 0, 2000>,$"rui/flowstatelocations/littletown" ) ) @@ -1230,7 +1090,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<2617, 4668, -4250>, <0, 85, 0>), NewLocPair(<1200, 4471, -4150>, <0, 50, 0>) ], - <0, 0, 2000> + <0, 0, 2000>,$"rui/flowstatelocations/ttvbuilding2" ) ) @@ -1244,7 +1104,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<-29512, -25863, -4462>, <0, 3, 0>), NewLocPair(<-28380, -28984, -4102>, <0, 54, 0>) ], - <0, 0, 2000> + <0, 0, 2000>,$"rui/flowstatelocations/littletown2" ) ) @@ -1258,20 +1118,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<17010, -37125, -2129>, <0, 81, 0>), NewLocPair(<15223, -40222, -1998>, <0, 86, 0>) ], - <0, 0, 2000> - ) - ) - - Shared_RegisterLocation( - NewLocationSettings( - "Overlook", - [ - NewLocPair(<32774, 6031, -3239>, <0, 117, 0>), - NewLocPair(<28381, 8963, -3224>, <0, 48, 0>), - NewLocPair(<26327, 11857, -2477>, <0, -43, 0>), - NewLocPair(<27303, 14528, -3047>, <0, -42, 0>) - ], - <0, 0, 2000> + <0, 0, 2000>,$"rui/flowstatelocations/dome" ) ) @@ -1294,10 +1141,9 @@ void function Sh_CustomTDM_Init() NewLocPair(<19444, 25605, -4602>, <0, 45, 0>), NewLocPair(<21751, 29980, -4226>, <0, -135, 0>), NewLocPair(<17570, 26915, -4637>, <0, -90, 0>), - NewLocPair(<16382, 28296, -4588>, <0, -45, 0>), - NewLocPair(<16618, 28848, -4451>, <0, 40, 0>) + NewLocPair(<16715, 28017, -4650>, <0, -45, 0>) ], - <0, 0, 6500> + <0, 0, 6500>,$"rui/flowstatelocations/refinery" ) ) @@ -1327,7 +1173,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<11720.60, -19655.80, -3331.97>, <1.44, -116.68, -0>), NewLocPair(<12233.26, -18075.12, -2581.72>, <4.60, -134.70, 0>), ], - <0, 0, 3000> + <0, 0, 3000>,$"rui/flowstatelocations/factory" ) ) @@ -1350,7 +1196,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<26757, -26639, -3673>, <-10, 90, 0>), NewLocPair(<26750, -26202, -3929>, <-10, -90, 0>) ], - <0, 0, 3000> + <0, 0, 3000>,$"rui/flowstatelocations/lavacity" ) ) @@ -1372,7 +1218,7 @@ void function Sh_CustomTDM_Init() NewLocPair(<-23069, -20567, -4214>, <-11, 146, 0>), NewLocPair(<-20109, -20675, -4252>, <0, -90, 0>) ], - <0, 0, 11000> + <0, 0, 11000>,$"rui/flowstatelocations/thermalstation" ) ) @@ -1386,125 +1232,148 @@ void function Sh_CustomTDM_Init() NewLocPair(<13100, 18138, -4856>, <0, 120, 0>) ], - <0, 0, 2000> + <0, 0, 2000>,$"rui/flowstatelocations/epicenter" ) ) - - if(FlowState_EnableSkillTrainerByColombia()){ + Shared_RegisterLocation( NewLocationSettings( - "Skill trainer By Colombia", + "Overlook", [ - NewLocPair(<15008, 30040, -680>, <20, 50, 0>), - NewLocPair(<19265, 30022, -680>, <11, 132, 0>), - NewLocPair(<19267, 33522, -680>, <10, -138, 0>), - NewLocPair(<14995, 33566, -680>, <16, -45, 0>) + NewLocPair(<32774, 6031, -3239>, <0, 117, 0>), + NewLocPair(<28381, 8963, -3224>, <0, 48, 0>), + NewLocPair(<26327, 11857, -2477>, <0, -43, 0>), + NewLocPair(<27303, 14528, -3047>, <0, -42, 0>) ], - <0, 0, 3000> + <0, 0, 2000>,$"rui/flowstatelocations/overlook" ) - ) - } - - if(FlowState_EnableCaveByBlessedSeal() ){ - Shared_RegisterLocation( + ) + + Shared_RegisterLocation( NewLocationSettings( - "Cave By BlessedSeal", + "Train yard", [ - NewLocPair(<-8742, -11843, -3185>, <0, 40, 0>), - NewLocPair(<-1897, -9707, -3841>, <0, 40, 0>), - NewLocPair(<-5005, -11170, -213>, <0, -40, 0>), - NewLocPair(<-1086, -9685, -3790>, <5, -120, 0>) + NewLocPair(<-11956,3021,-2988>, <0, 87, 0>), + NewLocPair(<-13829,2836,-3037>, <0, 122, 0>), + NewLocPair(<-12883,4502,-3340>, <0, 177, 0>), + NewLocPair(<-11412,3692,-3405>, <0, 3, 0>), + NewLocPair(<-14930,2065,-3140>, <0, 3, 0>) ], - <0, 0, 2000> + <0, 0, 2000>,$"rui/flowstatelocations/trainyard" ) ) - } + + + // Shared_RegisterLocation( + // NewLocationSettings( + // "Skill trainer By CafeFPS", + // [ + // NewLocPair(<15008, 30040, -680>, <20, 50, 0>), + // NewLocPair(<19265, 30022, -680>, <11, 132, 0>), + // NewLocPair(<19267, 33522, -680>, <10, -138, 0>), + // NewLocPair(<14995, 33566, -680>, <16, -45, 0>) + // ], + // <0, 0, 3000>,$"rui/flowstatelocations/skilltrainer" + // ) + // ) - if(FlowState_EnableBrightWaterByZero()){ - Shared_RegisterLocation( - NewLocationSettings( - "Brightwater By Zer0bytes", - [ - // SIde A - NewLocPair(<-34368,35904,-3776>, <0,0,0>), - NewLocPair(<-34496,35648,-3776>, <0,0,0>), - NewLocPair(<-35392,35136,-3776>, <0,90,0>), - NewLocPair(<-35456,35776,-3712>, <0,0,0>), - NewLocPair(<-35456,36160,-3712>, <0,0,0>), - NewLocPair(<-33088,37888,-3776>, <0,0,0>), - NewLocPair(<-32960,37440,-3776>, <0,0,0>), - NewLocPair(<-32576,35136,-3648>, <0,0,0>), - NewLocPair(<-32576,34880,-3648>, <0,0,0>), - NewLocPair(<-31488,34432,-3648>, <0,90,0>), - NewLocPair(<-31296,34496,-3712>, <0,0,0>), - NewLocPair(<-31232,34496,-3648>, <0,0,0>), - NewLocPair(<-30976,34432,-3648>, <0,0,0>), - NewLocPair(<-31232,35200,-3648>, <0,0,0>), - NewLocPair(<-31424,35776,-3648>, <0,0,0>), - NewLocPair(<-32384,37056,-3776>, <0,0,0>), - NewLocPair(<-32000,36672,-3776>, <0,0,0>), - NewLocPair(<-31680,38016,-3776>, <0,0,0>), - NewLocPair(<-31104,37824,-3776>, <0,0,0>), - NewLocPair(<-31680,39296,-3648>, <0,0,0>), - NewLocPair(<-31680,39616,-3648>, <0,0,0>) - - //Side A - NewLocPair(<-24640,40000,-3648>, <0,180,0>), - NewLocPair(<-24640,39744,-3648>, <0,180,0>), - NewLocPair(<-24941,39665,-3470>, <0,180,0>), - NewLocPair(<-23936,37888,-3712>, <0,180,0>), - NewLocPair(<-25088,37376,-3712>, <0,180,0>), - NewLocPair(<-25600,40832,-3712>, <0,180,0>), - NewLocPair(<-26752,39296,-3712>, <0,180,0>), - NewLocPair(<-26880,37248,-3584>, <0,180,0>), - NewLocPair(<-26880,37888,-3584>, <0,180,0>), - NewLocPair(<-26880,38528,-3584>, <0,180,0>), - NewLocPair(<-26368,35968,-3712>, <0,180,0>), - NewLocPair(<-26496,35584,-3712>, <0,180,0>), - NewLocPair(<-26368,36224,-3712>, <0,180,0>), - NewLocPair(<-26752,35968,-3200>, <0,180,0>), - NewLocPair(<-25728,40448,-3712>, <0,180,0>), - NewLocPair(<-26496,40704,-3712>, <0,-90,0>), - NewLocPair(<-27520,39808,-3840>, <0,180,0>), - NewLocPair(<-24832,36480,-3712>, <0,180,0>), - NewLocPair(<-23808,37504,-3712>, <0,180,0>), - NewLocPair(<-23680,36992,-3584>, <0,180,0>), - NewLocPair(<-25344,40704,-3584>, <0,180,0>), - NewLocPair(<-25344,41344,-3584>, <0,180,0>), - - //others - NewLocPair(<-27136,41920,1036>, <0,180,0>), - NewLocPair(<-29364,42940,1040>, <0,180,0>), - NewLocPair(<-31304,42044,1036>, <0,0,0>), - NewLocPair(<-33520,42044,1204>, <0,0,0>), - NewLocPair(<-33800,41756,1252>, <0,0,0>), - NewLocPair(<-29268,41712,1084>, <0,0,0>), - NewLocPair(<-25776,42168,1216>, <0,180,0>), - NewLocPair(<-25724,41724,1204>, <0,180,0>), - NewLocPair(<-28196,38564,-676>, <0,-90,0>), - NewLocPair(<-26324,40476,-2756>, <0,180,0>), - NewLocPair(<-31000,39452,-2752>, <0,0,0>), - NewLocPair(<-27192,35676,-3284>, <0,90,0>), - NewLocPair(<-28108,35740,-3284>, <0,180,0>), - NewLocPair(<-27376,35880,-2732>, <0,90,0>), - NewLocPair(<-27204,35764,-3628>, <0,90,0>), - NewLocPair(<-27908,36328,-3644>, <0,-90,0>), - NewLocPair(<-28332,37500,-3676>, <0,0,0>), - NewLocPair(<-27828,37996,-3676>, <0,180,0>), - NewLocPair(<-27960,37448,-3400>, <0,90,0>), - NewLocPair(<-28396,38072,-3344>, <0,0,0>), - NewLocPair(<-27976,37960,2608>, <0,180,0>), - NewLocPair(<-29348,39856,2668>, <0,-90,0>), - NewLocPair(<-28936,39308,1916>, <0,0,0>), - NewLocPair(<-27420,38688,2112>, <0,0,0>), - NewLocPair(<-23648,35384,-3564>, <0,180,0>), - NewLocPair(<-23972,35136,-3748>, <0,90,0>), - NewLocPair(<-26220,35644,-3692>, <0,90,0>), - NewLocPair(<-26320,36392,-3748>, <0,90,0>), - ], - <0, 0, 7450> - ) - )} + // Shared_RegisterLocation( + // NewLocationSettings( + // "Cave By BlessedSeal", + // [ + // NewLocPair(<-8742, -11843, -3185>, <0, 40, 0>), + // NewLocPair(<-1897, -9707, -3841>, <0, 40, 0>), + // NewLocPair(<-5005, -11170, -213>, <0, -40, 0>), + // NewLocPair(<-1086, -9685, -3790>, <5, -120, 0>) + // ], + // <0, 0, 2000>,$"rui/flowstatelocations/cave" + // ) + // ) + + // Shared_RegisterLocation( + // NewLocationSettings( + // "Brightwater By Zer0bytes", + // [ + // // SIde A + // NewLocPair(<-34368,35904,-3776>, <0,0,0>), + // NewLocPair(<-34496,35648,-3776>, <0,0,0>), + // NewLocPair(<-35392,35136,-3776>, <0,90,0>), + // NewLocPair(<-35456,35776,-3712>, <0,0,0>), + // NewLocPair(<-35456,36160,-3712>, <0,0,0>), + // NewLocPair(<-33088,37888,-3776>, <0,0,0>), + // NewLocPair(<-32960,37440,-3776>, <0,0,0>), + // NewLocPair(<-32576,35136,-3648>, <0,0,0>), + // NewLocPair(<-32576,34880,-3648>, <0,0,0>), + // NewLocPair(<-31488,34432,-3648>, <0,90,0>), + // NewLocPair(<-31296,34496,-3712>, <0,0,0>), + // NewLocPair(<-31232,34496,-3648>, <0,0,0>), + // NewLocPair(<-30976,34432,-3648>, <0,0,0>), + // NewLocPair(<-31232,35200,-3648>, <0,0,0>), + // NewLocPair(<-31424,35776,-3648>, <0,0,0>), + // NewLocPair(<-32384,37056,-3776>, <0,0,0>), + // NewLocPair(<-32000,36672,-3776>, <0,0,0>), + // NewLocPair(<-31680,38016,-3776>, <0,0,0>), + // NewLocPair(<-31104,37824,-3776>, <0,0,0>), + // NewLocPair(<-31680,39296,-3648>, <0,0,0>), + // NewLocPair(<-31680,39616,-3648>, <0,0,0>) + + // //Side A + // NewLocPair(<-24640,40000,-3648>, <0,180,0>), + // NewLocPair(<-24640,39744,-3648>, <0,180,0>), + // NewLocPair(<-24941,39665,-3470>, <0,180,0>), + // NewLocPair(<-23936,37888,-3712>, <0,180,0>), + // NewLocPair(<-25088,37376,-3712>, <0,180,0>), + // NewLocPair(<-25600,40832,-3712>, <0,180,0>), + // NewLocPair(<-26752,39296,-3712>, <0,180,0>), + // NewLocPair(<-26880,37248,-3584>, <0,180,0>), + // NewLocPair(<-26880,37888,-3584>, <0,180,0>), + // NewLocPair(<-26880,38528,-3584>, <0,180,0>), + // NewLocPair(<-26368,35968,-3712>, <0,180,0>), + // NewLocPair(<-26496,35584,-3712>, <0,180,0>), + // NewLocPair(<-26368,36224,-3712>, <0,180,0>), + // NewLocPair(<-26752,35968,-3200>, <0,180,0>), + // NewLocPair(<-25728,40448,-3712>, <0,180,0>), + // NewLocPair(<-26496,40704,-3712>, <0,-90,0>), + // NewLocPair(<-27520,39808,-3840>, <0,180,0>), + // NewLocPair(<-24832,36480,-3712>, <0,180,0>), + // NewLocPair(<-23808,37504,-3712>, <0,180,0>), + // NewLocPair(<-23680,36992,-3584>, <0,180,0>), + // NewLocPair(<-25344,40704,-3584>, <0,180,0>), + // NewLocPair(<-25344,41344,-3584>, <0,180,0>), + + // //others + // NewLocPair(<-27136,41920,1036>, <0,180,0>), + // NewLocPair(<-29364,42940,1040>, <0,180,0>), + // NewLocPair(<-31304,42044,1036>, <0,0,0>), + // NewLocPair(<-33520,42044,1204>, <0,0,0>), + // NewLocPair(<-33800,41756,1252>, <0,0,0>), + // NewLocPair(<-29268,41712,1084>, <0,0,0>), + // NewLocPair(<-25776,42168,1216>, <0,180,0>), + // NewLocPair(<-25724,41724,1204>, <0,180,0>), + // NewLocPair(<-28196,38564,-676>, <0,-90,0>), + // NewLocPair(<-26324,40476,-2756>, <0,180,0>), + // NewLocPair(<-31000,39452,-2752>, <0,0,0>), + // NewLocPair(<-27192,35676,-3284>, <0,90,0>), + // NewLocPair(<-28108,35740,-3284>, <0,180,0>), + // NewLocPair(<-27376,35880,-2732>, <0,90,0>), + // NewLocPair(<-27204,35764,-3628>, <0,90,0>), + // NewLocPair(<-27908,36328,-3644>, <0,-90,0>), + // NewLocPair(<-28332,37500,-3676>, <0,0,0>), + // NewLocPair(<-27828,37996,-3676>, <0,180,0>), + // NewLocPair(<-27960,37448,-3400>, <0,90,0>), + // NewLocPair(<-28396,38072,-3344>, <0,0,0>), + // NewLocPair(<-27976,37960,2608>, <0,180,0>), + // NewLocPair(<-29348,39856,2668>, <0,-90,0>), + // NewLocPair(<-28936,39308,1916>, <0,0,0>), + // NewLocPair(<-27420,38688,2112>, <0,0,0>), + // NewLocPair(<-23648,35384,-3564>, <0,180,0>), + // NewLocPair(<-23972,35136,-3748>, <0,90,0>), + // NewLocPair(<-26220,35644,-3692>, <0,90,0>), + // NewLocPair(<-26320,36392,-3748>, <0,90,0>), + // ], + // <0, 0, 7450>,$"rui/flowstatelocations/brightwater" + // ) + // ) if(FlowState_EnableShipmentByAyeZee()){ vector shipmentstartingorg = <6779,9016,11687> @@ -1587,7 +1456,7 @@ void function Sh_CustomTDM_Init() ) RegisterLocationPROPHUNT( NewLocationSettings( - "Skill trainer By Colombia", + "Skill trainer By CafeFPS", [ NewLocPair(<15008, 30040, -680>, <20, 50, 0>), NewLocPair(<19265, 30022, -680>, <11, 132, 0>), @@ -1700,13 +1569,14 @@ LocPair function NewLocPair(vector origin, vector angles) return locPair } -LocationSettings function NewLocationSettings(string name, array spawns, vector cinematicCameraOffset) +LocationSettings function NewLocationSettings(string name, array spawns, vector cinematicCameraOffset, asset Asset = $"rui/menu/maps/map_not_found") { LocationSettings locationSettings locationSettings.name = name locationSettings.spawns = spawns locationSettings.cinematicCameraOffset = cinematicCameraOffset - + locationSettings.locationAsset = Asset + return locationSettings } @@ -1722,13 +1592,6 @@ void function Shared_RegisterLocation(LocationSettings locationSettings) #endif } -void function RegisterLocationPROPHUNT(LocationSettings locationSettings) -{ - #if SERVER - _RegisterLocationPROPHUNT(locationSettings) - #endif - -} void function RegisterLocationSURF(LocationSettings locationSettings) { diff --git a/vscripts/gamemodes/sh_gamemodes.gnut b/vscripts/gamemodes/sh_gamemodes.gnut index f1fd84237..5292d3dcd 100644 --- a/vscripts/gamemodes/sh_gamemodes.gnut +++ b/vscripts/gamemodes/sh_gamemodes.gnut @@ -193,7 +193,7 @@ void function GameModes_Init() gameMode = MAP_EDITOR GameMode_Create( gameMode ) - GameMode_SetName( gameMode, "map_editor" ) + GameMode_SetName( gameMode, "map_editor_deprecated" ) GameMode_SetGameModeAnnouncement( gameMode, "phunt_modeDesc" ) GameMode_SetDesc( gameMode, "#PL_pilot_hunter_hint" ) GameMode_SetIcon( gameMode, $"ui/menu/playlist/tdm" ) diff --git a/vscripts/gamemodes/survival/_gamemode_survival.nut b/vscripts/gamemodes/survival/_gamemode_survival.nut index 3e7f1bcb7..0e5e0cca8 100644 --- a/vscripts/gamemodes/survival/_gamemode_survival.nut +++ b/vscripts/gamemodes/survival/_gamemode_survival.nut @@ -23,6 +23,9 @@ global function Survival_SetCallback_Leviathan_ConsiderLookAtEnt global function Survival_Leviathan_ConsiderLookAtEnt global function CreateSurvivalDeathBoxForPlayer global function UpdateMatchSummaryPersistentVars +global function EnemyDownedDialogue +global function TakingFireDialogue +global function GetAllDroppableItems int MAXBLOCKTIME = 2 float SERVER_SHUTDOWN_TIME_AFTER_FINISH = 70 // 1 or more to wait the specified number of seconds before executing, 0 to execute immediately, -1 or less to not execute @@ -40,7 +43,10 @@ void function GamemodeSurvival_Init() FlagInit( "SpawnInDropship", false ) FlagInit( "PlaneDrop_Respawn_SetUseCallback", false ) - + + SetConVarFloat( "sv_usercmd_max_queued", 750 ) + SetConVarFloat( "sv_maxUserCmdsPerPlayerPerFrame", 24 ) + AddCallback_OnPlayerKilled( OnPlayerKilled ) AddCallback_OnClientConnected( OnClientConnected ) AddClientCommandCallback("latency", ClientCommand_ShowLatency) diff --git a/vscripts/gamemodes/survival/cl_gamemode_survival.nut b/vscripts/gamemodes/survival/cl_gamemode_survival.nut index 90031de5f..82c53c153 100644 --- a/vscripts/gamemodes/survival/cl_gamemode_survival.nut +++ b/vscripts/gamemodes/survival/cl_gamemode_survival.nut @@ -11,6 +11,7 @@ global function ServerCallback_SurvivalHint global function ServerCallback_PlayerBootsOnGround global function ServerCallback_ClearHints global function ServerCallback_MatchEndAnnouncement +global function ServerCallback_DestroyEndAnnouncement global function ServerCallback_ShowWinningSquadSequence global function ServerCallback_AddWinningSquadData global function ServerCallback_PromptSayThanks @@ -86,8 +87,12 @@ global function OverwriteWithCustomPlayerInfoTreatment global function SetCustomPlayerInfoCharacterIcon global function SetCustomPlayerInfoTreatment global function SetCustomPlayerInfoColor -global function GetPlayerInfoColor + global function ClearCustomPlayerInfoColor +global function ClearCustomPlayerInfoTreatment +global function ClearCustomPlayerInfoCharacterIcon + +global function GetPlayerInfoColor global function SetNextCircleDisplayCustomStarting global function SetNextCircleDisplayCustomClosing @@ -102,6 +107,7 @@ global function Dev_AdjustVictorySequence global function GetCompassRui global function CircleAnnouncementsEnable +global function SetDpadMenuHidden global struct NextCircleDisplayCustomData { @@ -178,6 +184,7 @@ global struct SquadSummaryPlayerData int survivalTime int revivesGiven int respawnsGiven + int prophuntModelIndex } global struct SquadSummaryData @@ -662,7 +669,7 @@ void function Cl_Survival_AddClient( entity player ) void function InitSurvivalHealthBar() { - entity player = GetLocalViewPlayer() + entity player = GetLocalClientPlayer() //Changed to local client instead of local view to avoid bad player username? idk Colombia OnThreadEnd( function() : ( player ) @@ -672,7 +679,7 @@ void function InitSurvivalHealthBar() } ) - while(IsValid(player) && !LoadoutSlot_IsReady( ToEHI( player ), Loadout_CharacterClass() )) + while(IsValid(player) && !LoadoutSlot_IsReady( ToEHI( player ), Loadout_CharacterClass() ) ) WaitFrame() @@ -709,9 +716,9 @@ void function SURVIVAL_PopulatePlayerInfoRui( entity player, var rui ) OverwriteWithCustomPlayerInfoTreatment( player, rui ) - if(GameRules_GetGameMode() == "custom_aimtrainer" ) + if(GameRules_GetGameMode() != SURVIVAL ) { - RuiSetColorAlpha( rui, "customCharacterColor", SrgbToLinear( <53, 222, 47> / 255.0 ), 1.0 ) + RuiSetColorAlpha( rui, "customCharacterColor", SrgbToLinear( <255, 0, 119> / 255.0 ), 1.0 ) RuiSetBool( rui, "useCustomCharacterColor", true ) } @@ -768,6 +775,17 @@ void function SetCustomPlayerInfoCharacterIcon( entity player, asset customIcon RuiSetImage( file.pilotRui, "playerIcon", file.customCharacterIcon[player] ) } +void function ClearCustomPlayerInfoCharacterIcon(entity player) +{ + if ( player in file.customCharacterIcon ) + { + delete file.customCharacterIcon[player] + ItemFlavor character = LoadoutSlot_WaitForItemFlavor( ToEHI( player ), Loadout_CharacterClass() ) + asset classIcon = CharacterClass_GetGalleryPortrait( character ) + RuiSetImage( file.pilotRui, "playerIcon", classIcon ) + } +} + void function SetCustomPlayerInfoTreatment( entity player, asset treatmentImage ) { if ( !(player in file.customPlayerInfoTreatment) ) @@ -777,6 +795,15 @@ void function SetCustomPlayerInfoTreatment( entity player, asset treatmentImage RuiSetImage( file.pilotRui, "customTreatment", file.customPlayerInfoTreatment[player] ) } +void function ClearCustomPlayerInfoTreatment(entity player) +{ + if ( player in file.customPlayerInfoTreatment ) + { + delete file.customPlayerInfoTreatment[player] + RuiSetImage( file.pilotRui, "customTreatment", $"" ) + } +} + void function SetCustomPlayerInfoColor( entity player, vector characterColor ) { if ( !(player in file.customCharacterColor ) ) @@ -1359,25 +1386,10 @@ void function EquipmentChanged( entity player, string equipSlot, int new ) } } - #if(false) - - - - - - -#endif - if ( player == GetLocalViewPlayer() ) { RuiSetInt( file.pilotRui, es.unitFrameTierVar, tier ) RuiSetImage( file.pilotRui, es.unitFrameImageVar, hudIcon ) - - #if(false) - - -#endif - UpdateActiveLootPings() } @@ -3621,13 +3633,30 @@ void function ServerCallback_MatchEndAnnouncement( bool victory, int winningTeam DeathScreenCreateNonMenuBlackBars() DeathScreenUpdate() entity clientPlayer = GetLocalClientPlayer() - Assert( IsValid( clientPlayer ) ) - // - if ( clientPlayer.GetTeam() == winningTeam ) - ShowChampionVictoryScreen( winningTeam ) + if(!IsValid(clientPlayer)) return + + ShowChampionVictoryScreen( winningTeam ) } +void function ServerCallback_DestroyEndAnnouncement() +{ + entity clientPlayer = GetLocalClientPlayer() + + if(!IsValid(clientPlayer)) return + + ForceDestroyBlackBarRui() + ForceDestroyChampionScreenRui() +} + +void function ForceDestroyChampionScreenRui() +{ + if(file.victoryRui != null) + { + RuiDestroyIfAlive( file.victoryRui ) + file.victoryRui = null + } +} void function ShowChampionVictoryScreen( int winningTeam ) { @@ -3636,7 +3665,6 @@ void function ShowChampionVictoryScreen( int winningTeam ) entity clientPlayer = GetLocalClientPlayer() - // HideGladiatorCardSidePane( true ) UpdateRespawnStatus( eRespawnStatus.NONE ) @@ -3649,7 +3677,6 @@ void function ShowChampionVictoryScreen( int winningTeam ) Chroma_VictoryScreen() } - asset function GetChampionScreenRuiAsset() { if ( file.customChampionScreenRuiAsset != $"" ) @@ -3658,21 +3685,17 @@ asset function GetChampionScreenRuiAsset() return $"ui/champion_screen.rpak" } - void function SetChampionScreenRuiAsset( asset ruiAsset ) { file.customChampionScreenRuiAsset = ruiAsset } - - void function ShowSquadSummary() { entity player = GetLocalClientPlayer() EndSignal( player, "OnDestroy" ) } - void function ServerCallback_AddWinningSquadData( int index, int eHandle, int kills, int damageDealt, int survivalTime, int revivesGiven, int respawnsGiven ) { if ( index == -1 ) diff --git a/vscripts/gamemodes/survival/sh_gamemode_survival.nut b/vscripts/gamemodes/survival/sh_gamemode_survival.nut index c6156ed0f..8f993a27f 100644 --- a/vscripts/gamemodes/survival/sh_gamemode_survival.nut +++ b/vscripts/gamemodes/survival/sh_gamemode_survival.nut @@ -148,8 +148,13 @@ void function GamemodeSurvivalShared_Init() RegisterSignal("GameStateChanged") #if SERVER || CLIENT - BleedoutShared_Init() ShApexScreens_Init() + AddCallback_PlayerCanUseZipline( Sur_CanUseZipline ) + AddCallback_CanStartCustomWeaponActivity( ACT_VM_WEAPON_INSPECT, CanWeaponInspect ) + + if( GameRules_GetGameMode() == "fs_prophunt" || GameRules_GetGameMode() == "flowstate_snd" ) return + + BleedoutShared_Init() Sh_RespawnBeacon_Init() Sh_Airdrops_Init() @@ -157,15 +162,9 @@ void function GamemodeSurvivalShared_Init() PrecacheModel( SURVIVAL_PLANE_MODEL ) PrecacheModel( SURVIVAL_SQUAD_SUMMARY_MODEL ) - AddCallback_PlayerCanUseZipline( Sur_CanUseZipline ) MapZones_SharedInit() ClientMusic_SharedInit() - - - - AddCallback_CanStartCustomWeaponActivity( ACT_VM_WEAPON_INSPECT, CanWeaponInspect ) #endif - #if SERVER //printt("Setting Game State") //SetGameState(eGameState.PickLoadout) diff --git a/vscripts/mp/_base_cmds.gnut b/vscripts/mp/_base_cmds.gnut index 0dc837a83..b3d81f9d0 100644 --- a/vscripts/mp/_base_cmds.gnut +++ b/vscripts/mp/_base_cmds.gnut @@ -13,7 +13,7 @@ void function Base_Cmds_Init() bool function ClientCommand_KillSelf(entity player, array args) { - if( GetCurrentPlaylistVarBool("flowstate_1v1mode", false) ) return false + if( GetCurrentPlaylistVarBool("flowstate_1v1mode", false) || GameRules_GetGameMode() == "fs_prophunt" || GameRules_GetGameMode() == "fs_duckhunt" || GameRules_GetGameMode() == "flowstate_snd") return false if( !IsValid( player ) ) return false if( !IsAlive( player ) ) return false if( Time() - player.p.lastDeathTime < CMD_GetKillSelfCooldown() ) diff --git a/vscripts/mp/_base_gametype.gnut b/vscripts/mp/_base_gametype.gnut index fda59e747..f0c9d9a28 100644 --- a/vscripts/mp/_base_gametype.gnut +++ b/vscripts/mp/_base_gametype.gnut @@ -82,8 +82,11 @@ function BaseGametype_Init() void function BaseGametypeEntitiesDidLoad() { - OutOfBoundsSetup() TriggerHurtSetup() + + if(GameRules_GetGameMode() == "fs_prophunt" || GameRules_GetGameMode() == "fs_duckhunt" ) return + + OutOfBoundsSetup() } function CreateTeamColorControlPoints() @@ -1764,6 +1767,9 @@ void function EntityCheckOutOfBoundsThread( entity trigger, entity ent ) void function EntityOutOfBounds( entity trigger, entity ent, entity caller, var value ) { + if(GetGameState() != eGameState.Playing) + return + //printt( "ENTITY", ent, "IS OUT OF BOUNDS ON TRIGGER", trigger ) if ( ent.e.destroyOutOfBounds ) diff --git a/vscripts/mp/levels/mp_rr_canyonlands_common.nut b/vscripts/mp/levels/mp_rr_canyonlands_common.nut index 2f9278558..fe6c3e121 100644 --- a/vscripts/mp/levels/mp_rr_canyonlands_common.nut +++ b/vscripts/mp/levels/mp_rr_canyonlands_common.nut @@ -78,8 +78,10 @@ struct void function Canyonlands_MapInit_Common() { - if(GameRules_GetGameMode() == "custom_aimtrainer" || GameRules_GetGameMode() == "map_editor") - return + SetVictorySequencePlatformModel( $"mdl/rocks/victory_platform.rmdl", < 0, 0, -10 >, < 0, 0, 0 > ) + + if(GameRules_GetGameMode() != SURVIVAL) + return #if SERVER RegisterSignal( "NessyDamaged" ) @@ -87,16 +89,10 @@ void function Canyonlands_MapInit_Common() AddCallback_EntitiesDidLoad( EntitiesDidLoad ) #endif - if(GameRules_GetGameMode() == "flowstate_dm" ) - return - //printt( "Canyonlands_MapInit_Common" ) - PrecacheModel( LEVIATHAN_MODEL ) //PrecacheModel( FLYER_SWARM_MODEL ) - SetVictorySequencePlatformModel( $"mdl/rocks/victory_platform.rmdl", < 0, 0, -10 >, < 0, 0, 0 > ) - file.numHoverTanksIntro = GetCurrentPlaylistVarInt( "hovertanks_count_intro", HOVER_TANKS_DEFAULT_COUNT_INTRO ) #if SERVER printt( "HOVER TANKS INTRO MAX:", file.numHoverTanksIntro ) @@ -216,22 +212,18 @@ void function InitWaterLeviathans() void function EntitiesDidLoad() { - if(GetMapName() != "mp_rr_canyonlands_staging" && GameRules_GetGameMode() != "flowstate_dm" && GameRules_GetGameMode() != "custom_aimtrainer") + if(GetMapName() != "mp_rr_canyonlands_staging" && GameRules_GetGameMode() != "flowstate_dm" && GameRules_GetGameMode() != "flowstate_aimtrainer") { - InitLootDrones() //flyers - InitLootRollers() //flyers - InitLootDronePaths() //flyers + //InitLootDrones() //flyers + //InitLootRollers() //flyers + //InitLootDronePaths() //flyers } thread __EntitiesDidLoad() } void function __EntitiesDidLoad() { - if(GetMapName() != "mp_rr_canyonlands_staging" && GameRules_GetGameMode() != SURVIVAL){ - SpawnEditorProps() - } - - if( GameRules_GetGameMode() != FREELANCE || GameRules_GetGameMode() != "flowstate_dm") + if( GameRules_GetGameMode() != FREELANCE || GameRules_GetGameMode() == SURVIVAL ) { waitthread FindHoverTankEndNodes() SpawnHoverTanks() @@ -1259,209 +1251,3 @@ void function MinimapPackage_HoverTankDestination( entity ent, var rui ) } #endif -#if SERVER -entity function CreateEditorPropKCLobby(asset a, vector pos, vector ang, bool mantle = false, float fade = 2000, int realm = -1) -{ - vector newpos = pos + <0,0,12000> - entity e = CreatePropDynamic(a,newpos,ang,SOLID_VPHYSICS,fade) - e.kv.fadedist = fade - if(mantle) e.AllowMantle() - - if (realm > -1) { - e.RemoveFromAllRealms() - e.AddToRealm(realm) - } - - string positionSerialized = newpos.x.tostring() + "," + newpos.y.tostring() + "," + newpos.z.tostring() - string anglesSerialized = ang.x.tostring() + "," + ang.y.tostring() + "," + ang.z.tostring() - - e.SetScriptName("editor_placed_prop") - e.e.gameModeId = realm - //printl("[editor]" + string(a) + ";" + positionSerialized + ";" + anglesSerialized + ";" + realm) - - return e -} - -void function SpawnEditorProps() -{ - // Written by mostly fireproof. Let me know if there are any issues! - printl("---- NEW EDITOR DATA ----") - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,1472,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,1728,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1472,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1728,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19392.2,1343.06,6207.72>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19136.1,1343.04,6207.72>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,1472,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,1728,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1728,6208>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1472,6208>, <0,90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1984,6208>, <0,90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2240,6208>, <0,90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,2240,6208>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,2240,6208>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1984,6208>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,1984,6208>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,1984,6208>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2496,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2752,6208>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,2752,6208>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,2496,6208>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,2496,6208>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2496,6208>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,2752,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2752,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-20160,2240,6208>, <0,90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-20160,1984,6208>, <0,90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-20416,1984,6208>, <0,90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-20416,2240,6208>, <0,90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20031.1,1727.99,6207.54>, <0,90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20031.1,1471.99,6207.57>, <0,90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19904,1344.94,6207.67>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19648,1344.95,6207.68>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20033,2496.07,6207.78>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20033,2752.03,6207.79>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19904.4,2880.72,6207.42>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19648,2880.8,6207.4>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19392,2880.8,6207.39>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19136,2880.8,6207.4>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20031,1727.86,6463.97>, <0,90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20031,1983.95,6464>, <0,90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20031,2239.98,6464>, <0,90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20031,2495.98,6464>, <0,90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20031,2751.98,6464>, <0,90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20031,1471.98,6464>, <0,90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19904,1345,6464>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19648,1345,6464.01>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19392,1345,6464.01>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19136,1345,6464>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19008.7,1472,6207.33>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19008.7,1728,6207.33>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19008.7,2496.01,6207.33>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19008.7,2752.05,6207.34>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19009,2752.23,6464.06>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19009,2496.03,6464.07>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19009,2240.03,6464.07>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19009,1984.03,6464.07>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19009,1728.03,6464.04>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19009,1472.03,6464.04>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19136,2879,6464.02>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19392,2879,6464.02>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19648,2879,6464.02>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19904,2879,6464.02>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1472,6464>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,1472,6464>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,1472,6464>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1472,6464>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1728,6464>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1984,6464>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2240,6464>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2496,6464>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2752,6464>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,2752,6464>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,2752,6464>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2752,6464>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1728,6464>, <0,90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1984,6464>, <0,90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2240,6464>, <0,90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2496,6464>, <0,90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_corner_out.rmdl", <-20544.1,1855.03,6207.75>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-20415.3,1855.38,6207.75>, <0,90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-20287.1,1855.6,6207.72>, <0,90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-20159.1,1855.73,6207.78>, <0,90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-20160.8,2368.17,6207.37>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-20288.8,2368.2,6207.5>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-20416.9,2368.12,6207.61>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_corner_in.rmdl", <-20544.1,2368.33,6207.06>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_corner_in.rmdl", <-19263.3,2624.63,6463.58>, <0,90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_corner_in.rmdl", <-19263.5,1599.32,6463.49>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_corner_in.rmdl", <-19776.9,1599.7,6463.76>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_corner_in.rmdl", <-19776.4,2624.9,6463.91>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19647.2,2624.61,6463.81>, <0,90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19519.2,2624.59,6463.86>, <0,90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19391.2,2624.65,6463.95>, <0,90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19263.3,2495.27,6464.01>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19263.4,2367.18,6464.01>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19263.4,2239.21,6464.03>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19263.3,2111.24,6464.04>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19263.3,1983.26,6464.03>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19263.3,1855.28,6464.03>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19263.3,1727.28,6464.03>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19392.7,1599.34,6464>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19520.7,1599.31,6464.01>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19648.8,1599.35,6464.01>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19776.7,1728.73,6463.91>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19776.5,1856.84,6463.96>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19776.6,1984.8,6463.98>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19776.7,2112.71,6464>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19776.7,2240.71,6464>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19776.7,2368.75,6464.01>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/ola/sewer_railing_01_128.rmdl", <-19776.7,2496.72,6464.03>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18880,2240,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18880,1984,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18880,1728,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18624,1728,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18624,1984,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18624,2240,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18624,2496,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18880,2496,6208>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18368,2496,6208>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18368,2240,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18368,1984,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18368,1728,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/containers/box_shrinkwrapped.rmdl", <-19071.2,1411.41,6223.84>, <0,90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/containers/box_shrinkwrapped.rmdl", <-19159.4,1399.24,6223.82>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/containers/box_shrinkwrapped.rmdl", <-19064.1,1515.01,6223.9>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/containers/box_shrinkwrapped.rmdl", <-19135.8,1387.19,6299.45>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/containers/box_shrinkwrapped.rmdl", <-19063.2,1479.79,6299.39>, <0,90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/containers/box_shrinkwrapped.rmdl", <-19163.4,1487.26,6223.69>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/signs/signage_plates_metal/sign_plate_a.rmdl", <-20024.7,2391.26,6332.05>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/signs/signage_plates_metal/sign_plate_a.rmdl", <-20024.6,1831.21,6331.85>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/utilities/power_gen1.rmdl", <-18940.5,2568.71,6223.51>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/utilities/wire_ground_coils_03.rmdl", <-18964.8,2472.43,6223.58>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/utilities/wires_ground_coils_01.rmdl", <-18912.6,2416.07,6223.21>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/utilities/wires_ground_coils_01.rmdl", <-18852,2528.88,6223.53>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/utilities/wire_ground_coils_03.rmdl", <-18908.5,2472.55,6223.35>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/utilities/wall_Waterpipe.rmdl", <-19000.6,2399.29,6259.72>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/IMC_base/generator_IMC_01.rmdl", <-18952.5,1656.7,6223.5>, <0,180,0>, true, 8000, -1 ) - - CreateEditorPropKCLobby( $"mdl/vehicle/goblin_dropship/goblin_dropship.rmdl", <-18604,2115.18,6223.43>, <0,0,0>, true, 8000, -1 ) - - CreateEditorPropKCLobby( $"mdl/vehicles_r5/land/msc_forklift_imc_v2/veh_land_msc_forklift_imc_v2_static.rmdl", <-18668,2536.64,6223.23>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1472,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1728,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1984,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2240,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2496,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2752,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,2752,6720>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,2752,6720>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2752,6720>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2496,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2240,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1984,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1728,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1472,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,1472,6720>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,1472,6720>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,1728,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,1984,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,2240,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,2496,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,2240,6720>, <0,0,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,2496,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,1984,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,1728,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2240,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/beacon/construction_scaff_128_64_64.rmdl", <-18435.6,2552.81,6223.55>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/beacon/construction_plastic_mat_white_01.rmdl", <-19376.8,1947.43,6227.73>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/beacon/construction_plastic_mat_black_01.rmdl", <-19685,2271.89,6223.86>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/beacon/construction_plastic_mat_black_01.rmdl", <-18560.2,2556.98,6224.04>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/beacon/construction_plastic_mat_black_01.rmdl", <-18644.1,2525,6223.97>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/canyonlands/canyonlands_zone_sign_03b.rmdl", <-20032.2,2240.89,6719.59>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/industrial/security_fence_post.rmdl", <-19967.9,1408.71,6719.31>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/industrial/security_fence_post.rmdl", <-19027.8,1360.8,6735.44>, <0,180,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/industrial/UTG_spire.rmdl", <-19040.6,2851.51,6735.38>, <0,-90,0>, true, 8000, -1 ) - CreateEditorPropKCLobby( $"mdl/industrial/UTG_spire.rmdl", <-19984.6,2843.49,6735.42>, <0,-90,0>, true, 8000, -1 ) -} -#endif diff --git a/vscripts/mp/levels/mp_rr_canyonlands_mu1_night.nut b/vscripts/mp/levels/mp_rr_canyonlands_mu1_night.nut index d3829274e..b6ccfde8c 100644 --- a/vscripts/mp/levels/mp_rr_canyonlands_mu1_night.nut +++ b/vscripts/mp/levels/mp_rr_canyonlands_mu1_night.nut @@ -70,7 +70,7 @@ void function SharedInit() { ShPrecacheShadowSquadAssets() ShPrecacheEvacShipAssets() - ShLootCreeps_Init() + //ShLootCreeps_Init() } diff --git a/vscripts/mp/levels/mp_rr_desertlands_64k_x_64k_nx.nut b/vscripts/mp/levels/mp_rr_desertlands_64k_x_64k_nx.nut index 55053294e..a36d8c939 100644 --- a/vscripts/mp/levels/mp_rr_desertlands_64k_x_64k_nx.nut +++ b/vscripts/mp/levels/mp_rr_desertlands_64k_x_64k_nx.nut @@ -26,7 +26,7 @@ void function SharedInit() { ShPrecacheShadowSquadAssets() ShPrecacheEvacShipAssets() - ShLootCreeps_Init() + //ShLootCreeps_Init() } #if SERVER diff --git a/vscripts/mp/levels/mp_rr_desertlands_common.nut b/vscripts/mp/levels/mp_rr_desertlands_common.nut index b9e761ea9..5266a51d0 100644 --- a/vscripts/mp/levels/mp_rr_desertlands_common.nut +++ b/vscripts/mp/levels/mp_rr_desertlands_common.nut @@ -55,6 +55,9 @@ void function Desertlands_PreMapInit_Common() void function Desertlands_MapInit_Common() { + if ( GetMapName() == "mp_rr_desertlands_mu3" ) + return + printt( "Desertlands_MapInit_Common" ) MapZones_RegisterDataTable( $"datatable/map_zones/zones_mp_rr_desertlands_64k_x_64k.rpak" ) @@ -115,7 +118,7 @@ void function EntitiesDidLoad() } else{ SpawnFlowstateLobbyProps() - if(!GetCurrentPlaylistVarBool("flowstatePROPHUNT", false ) && !GetCurrentPlaylistVarBool("flowstateGrenadesDisabled", false )) + if(GameRules_GetGameMode() != "fs_prophunt" && !GetCurrentPlaylistVarBool("flowstateGrenadesDisabled", false )) { //Granadas-Grenades SpawnGrenades(<19010,33300,-810>, <0, 0, 0>, 6, ["thermite", "frag", "arc"], 3) @@ -680,337 +683,4 @@ entity function CreateEditorPropLobby(asset a, vector pos, vector ang, bool mant return e } -void function SpawnFlowstateLobbyProps() -{ - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,1472,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,1728,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1472,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1728,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19392.2,1343.06,6207.72>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19136.1,1343.04,6207.72>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,1472,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,1728,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1728,6208>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1472,6208>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1984,6208>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2240,6208>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,2240,6208>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,2240,6208>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1984,6208>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,1984,6208>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,1984,6208>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2496,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2752,6208>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,2752,6208>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,2496,6208>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,2496,6208>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2496,6208>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,2752,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2752,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-20160,2240,6208>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-20160,1984,6208>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-20416,1984,6208>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-20416,2240,6208>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20031.1,1727.99,6207.54>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20031.1,1471.99,6207.57>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19904,1344.94,6207.67>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19648,1344.95,6207.68>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20033,2496.07,6207.78>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20033,2752.03,6207.79>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19904.4,2880.72,6207.42>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19648,2880.8,6207.4>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19392,2880.8,6207.39>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19136,2880.8,6207.4>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20031,1727.86,6463.97>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20031,1983.95,6464>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20031,2239.98,6464>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20031,2495.98,6464>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20031,2751.98,6464>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-20031,1471.98,6464>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19904,1345,6464>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19648,1345,6464.01>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19392,1345,6464.01>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19136,1345,6464>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19008.7,1472,6207.33>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19008.7,1728,6207.33>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19008.7,2496.01,6207.33>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19008.7,2752.05,6207.34>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19009,2752.23,6464.06>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19009,2496.03,6464.07>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19009,2240.03,6464.07>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19009,1984.03,6464.07>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19009,1728.03,6464.04>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19009,1472.03,6464.04>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19136,2879,6464.02>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19392,2879,6464.02>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19648,2879,6464.02>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", <-19904,2879,6464.02>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1472,6464>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,1472,6464>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,1472,6464>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1472,6464>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1728,6464>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1984,6464>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2240,6464>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2496,6464>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2752,6464>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,2752,6464>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,2752,6464>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2752,6464>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1728,6464>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1984,6464>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2240,6464>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2496,6464>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/ola/sewer_railing_01_corner_out.rmdl", <-20544.1,1855.03,6207.75>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-20415.3,1855.38,6207.75>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-20287.1,1855.6,6207.72>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-20159.1,1855.73,6207.78>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-20160.8,2368.17,6207.37>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-20288.8,2368.2,6207.5>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-20416.9,2368.12,6207.61>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/ola/sewer_railing_01_corner_in.rmdl", <-20544.1,2368.33,6207.06>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/ola/sewer_railing_01_corner_in.rmdl", <-19263.3,2624.63,6463.58>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/ola/sewer_railing_01_corner_in.rmdl", <-19263.5,1599.32,6463.49>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/ola/sewer_railing_01_corner_in.rmdl", <-19776.9,1599.7,6463.76>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/ola/sewer_railing_01_corner_in.rmdl", <-19776.4,2624.9,6463.91>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19647.2,2624.61,6463.81>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19519.2,2624.59,6463.86>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19391.2,2624.65,6463.95>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19263.3,2495.27,6464.01>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19263.4,2367.18,6464.01>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19263.4,2239.21,6464.03>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19263.3,2111.24,6464.04>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19263.3,1983.26,6464.03>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19263.3,1855.28,6464.03>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19263.3,1727.28,6464.03>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19392.7,1599.34,6464>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19520.7,1599.31,6464.01>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19648.8,1599.35,6464.01>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19776.7,1728.73,6463.91>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19776.5,1856.84,6463.96>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19776.6,1984.8,6463.98>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19776.7,2112.71,6464>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19776.7,2240.71,6464>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19776.7,2368.75,6464.01>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/ola/sewer_railing_01_128.rmdl", <-19776.7,2496.72,6464.03>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18880,2240,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18880,1984,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18880,1728,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18624,1728,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18624,1984,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18624,2240,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18624,2496,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18880,2496,6208>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18368,2496,6208>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18368,2240,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18368,1984,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-18368,1728,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/containers/slumcity_oxygen_tank_red.rmdl", <-20004.9,1831.88,6223.61>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/containers/slumcity_oxygen_tank_red.rmdl", <-20016.9,1804.14,6223.72>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/containers/slumcity_oxygen_tank_red.rmdl", <-19988.9,1812.22,6223.58>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/containers/slumcity_oxygen_tank_red.rmdl", <-19139.4,2860.82,6224.02>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/containers/slumcity_oxygen_tank_red.rmdl", <-19167.6,2872.9,6224.03>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/containers/slumcity_oxygen_tank_red.rmdl", <-19159.5,2848.86,6223.99>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/containers/box_shrinkwrapped.rmdl", <-19071.2,1411.41,6223.84>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/containers/box_shrinkwrapped.rmdl", <-19159.4,1399.24,6223.82>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/containers/box_shrinkwrapped.rmdl", <-19064.1,1515.01,6223.9>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/containers/box_shrinkwrapped.rmdl", <-19135.8,1387.19,6299.45>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/containers/box_shrinkwrapped.rmdl", <-19063.2,1479.79,6299.39>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/containers/box_shrinkwrapped.rmdl", <-19163.4,1487.26,6223.69>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/hazmat_suit_hanging.rmdl", <-19375.2,1355.44,6280.31>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/hazmat_suit_hanging.rmdl", <-19411.3,1351.34,6280.3>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/hazmat_suit_hanging.rmdl", <-19451.3,1351.34,6280.32>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/cafe_coffe_machine_dirty.rmdl", <-20025,1720.02,6256.04>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/tool_chest.rmdl", <-19027.7,2423.08,6223.79>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/tool_chest_double.rmdl", <-19027.4,2463.23,6223.81>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/signs/signage_plates_metal/sign_plate_a.rmdl", <-20024.7,2391.26,6332.05>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/signs/signage_plates_metal/sign_plate_a.rmdl", <-20024.6,1831.21,6331.85>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/utilities/power_gen1.rmdl", <-18940.5,2568.71,6223.51>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/utilities/wire_ground_coils_03.rmdl", <-18964.8,2472.43,6223.58>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/utilities/wires_ground_coils_01.rmdl", <-18912.6,2416.07,6223.21>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/utilities/wires_ground_coils_01.rmdl", <-18852,2528.88,6223.53>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/utilities/wire_ground_coils_03.rmdl", <-18908.5,2472.55,6223.35>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/utilities/wall_Waterpipe.rmdl", <-19000.6,2399.29,6259.72>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/vehicles_r5/land_med/msc_freight_tortus_mod/veh_land_msc_freight_tortus_mod_wheeled_v1_static.rmdl", <-19619,2756.16,6223.96>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/angel_city/vending_machine.rmdl", <-19755.2,1367.54,6223.6>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/angel_city/recyclebin_large_01.rmdl", <-19799.3,1367.43,6223.5>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/angel_city/ground_pile_trash_02.rmdl", <-19879.7,1395.47,6223.19>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/angel_city/ground_pile_trash_02.rmdl", <-19819.3,1439.82,6223.28>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/angel_city/ground_pile_trash_02.rmdl", <-19875.7,1447.87,6223.06>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/angel_city/ground_pile_trash_02.rmdl", <-19908,1468.01,6223>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/angel_city/ground_pile_trash_02.rmdl", <-19831.4,1488.17,6223.23>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/angel_city/ground_pile_trash_02.rmdl", <-19867.6,1480.12,6223.08>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/angel_city/ground_pile_trash_02.rmdl", <-19831.4,1423.69,6223.26>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/angel_city/ground_pile_trash_03.rmdl", <-19831.4,1443.84,6223.22>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/angel_city/ground_pile_trash_03.rmdl", <-19875.7,1403.53,6223.17>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/angel_city/ground_pile_trash_03.rmdl", <-19783.2,1476.06,6223.42>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/angel_city/ground_pile_trash_03.rmdl", <-19847.5,1516.39,6223.22>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/angel_city/ground_pile_trash_03.rmdl", <-19883.8,1496.23,6223.06>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/angel_city/box_small_02.rmdl", <-19912,1379.36,6223.23>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/angel_city/box_small_02.rmdl", <-19980.5,1379.42,6223.33>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/angel_city/box_small_02.rmdl", <-19996.6,1439.8,6223.24>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/angel_city/box_small_02.rmdl", <-19992.6,1512.35,6223.26>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/angel_city/box_small_02.rmdl", <-19952.3,1439.79,6223.07>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/angel_city/box_small_02.rmdl", <-19899.9,1427.68,6223.06>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/angel_city/box_small_02.rmdl", <-19928.3,1395.04,6235.92>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/angel_city/box_small_02.rmdl", <-19968.6,1439.18,6239.89>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/angel_city/box_small_02.rmdl", <-19940.6,1503.33,6223.52>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/angel_city/box_small_02.rmdl", <-19972.7,1499.37,6239.76>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/angel_city/box_small_02.rmdl", <-19980.4,1387.17,6239.57>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/angel_city/box_small_02.rmdl", <-19944,1399.1,6251.56>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/angel_city/box_small_02.rmdl", <-19888.7,1484.15,6223.3>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/angel_city/box_small_02.rmdl", <-19908.9,1455.86,6239.55>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/angel_city/box_small_01.rmdl", <-19860.4,1367.19,6223.62>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/angel_city/box_small_01.rmdl", <-20012.8,1563.51,6223.67>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/angel_city/box_small_01.rmdl", <-19996.5,1379.13,6255.84>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/angel_city/box_small_01.rmdl", <-19899.9,1379.04,6251.75>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/angel_city/box_small_01.rmdl", <-19988.6,1431.24,6255.66>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/angel_city/box_small_01.rmdl", <-19940.2,1475.53,6223.14>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/furniture/couch_suede_brown_01.rmdl", <-19868.8,2848.57,6223.73>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/furniture/chair_beanbag_01.rmdl", <-19980,2795.41,6223.2>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/furniture/office_desk_shelved.rmdl", <-20000.3,2619.07,6223.75>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/furniture/office_chair_leather.rmdl", <-19976.2,2608.97,6223.87>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/furniture/books_shelved.rmdl", <-19997,2579.81,6259.93>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/furniture/office_laptop.rmdl", <-19992.8,2608.14,6259.43>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/furniture/office_desk_accessories_papers.rmdl", <-19996.9,2627.88,6259.52>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/furniture/office_desk_accessories_papers.rmdl", <-19992.9,2631.94,6259.48>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/furniture/office_desk_accessories_pen_holder.rmdl", <-19996.9,2644.04,6259.52>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/furniture/office_desk_accessories_mug.rmdl", <-19988.8,2648.09,6259.47>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/furniture/office_keyboard_plastic.rmdl", <-20012.2,2603.08,6267.66>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/furniture/chair_beanbag_01.rmdl", <-19984.4,2715.18,6223.61>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/playback/playback_fish_net_01.rmdl", <-19596.8,2856.61,6364.02>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/IMC_base/generator_IMC_01.rmdl", <-18952.5,1656.7,6223.5>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/IMC_base/imc_antenna_large.rmdl", <-18259.8,2588.48,6223.15>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/IMC_base/monitor_imc_02.rmdl", <-19012.4,2140.75,6448.53>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/IMC_base/cargo_container_imc_01_blue.rmdl", <-18957,1772.2,6223.8>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/colony/farmland_crate_plastic_01_red.rmdl", <-19588,1363.08,6223.61>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/colony/farmland_crate_plastic_01_red.rmdl", <-19536,1367.08,6223.6>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/colony/farmland_crate_plastic_01_red.rmdl", <-19564.2,1367.05,6247.74>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/colony/farmland_crate_plastic_yellow_01.rmdl", <-19564.2,1399.18,6223.47>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/colony/farmland_domicile_hanging_net_01.rmdl", <-19544.9,2772.16,6464.43>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/colony/farmland_domicile_hanging_net_01.rmdl", <-19580.8,2708.53,6464.4>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/colony/farmland_domicile_hanging_net_01.rmdl", <-19420.7,2736.59,6456.39>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/colony/antenna_05_colony.rmdl", <-18347.3,1663.48,6223.57>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/colony/farmland_fridge_01.rmdl", <-19223.1,1355.7,6223.89>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/lamps/light_florescenet_modern_off.rmdl", <-19860.7,1748.03,6464.67>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/lamps/light_florescenet_modern_off.rmdl", <-19864.8,2208.01,6464.55>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/lamps/light_florescenet_modern_off.rmdl", <-19876.8,2492.03,6464.53>, <0,-90,0>, true, 8000, -1 ) - //CreateEditorProp( $"mdl/lamps/light_parking_post.rmdl", <-20504.2,1895.05,6223.78>, <0,0,0>, true, 8000, -1 ) - //CreateEditorProp( $"mdl/lamps/light_parking_post.rmdl", <-20507.9,2324.99,6223.9>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/barriers/concrete/concrete_barrier_01.rmdl", <-20036.2,2320.91,6223.64>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/barriers/concrete/concrete_barrier_01.rmdl", <-20032,1895.31,6223.28>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/barriers/concrete/concrete_barrier_01.rmdl", <-20032.3,2115.13,6223.6>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/barriers/concrete/concrete_barrier_fence_tarp_128.rmdl", <-18935.5,1608.38,6223.2>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/barriers/concrete/concrete_barrier_fence_tarp_128.rmdl", <-18803.3,1604.54,6223.56>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/barriers/concrete/concrete_barrier_fence_tarp_128.rmdl", <-18667.2,1604.59,6223.75>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/barriers/concrete/concrete_barrier_fence_tarp_128.rmdl", <-18531.3,1604.69,6223.83>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/barriers/concrete/concrete_barrier_fence_tarp_128.rmdl", <-18395.3,1604.65,6223.8>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/barriers/concrete/concrete_barrier_fence_tarp_128.rmdl", <-18920.6,2615.54,6223.37>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/barriers/concrete/concrete_barrier_fence_tarp_128.rmdl", <-18784.5,2615.62,6223.21>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/barriers/concrete/concrete_barrier_fence_tarp_128.rmdl", <-18640.8,2615.57,6223.57>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/barriers/concrete/concrete_barrier_fence_tarp_128.rmdl", <-18504.8,2615.74,6223.42>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/barriers/concrete/concrete_barrier_fence_tarp_128.rmdl", <-18372.6,2615.79,6223.24>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/barriers/concrete/concrete_barrier_01.rmdl", <-18251.8,2544.8,6223.42>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/barriers/concrete/concrete_barrier_01.rmdl", <-18251.9,2456.79,6223.41>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/barriers/concrete/concrete_barrier_01.rmdl", <-18251.8,1723.11,6223.61>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/barriers/concrete/concrete_barrier_01.rmdl", <-18251.7,1815.41,6223.27>, <0,0,0>, true, 8000, -1 ) - - CreateEditorProp( $"mdl/vehicle/goblin_dropship/goblin_dropship.rmdl", <-18604,2115.18,6223.43>, <0,0,0>, true, 8000, -1 ) - - //CreateEditorProp( $"mdl/vehicles_r5/land_med/msc_freight_tortus_mod/veh_land_msc_freight_tortus_mod_cargo_holder_v1_static.rmdl", <-20600.9,2115.91,6223.55>, <0,-90,0>, true, 8000, -1 ) - - CreateEditorProp( $"mdl/vehicles_r5/land/msc_forklift_imc_v2/veh_land_msc_forklift_imc_v2_static.rmdl", <-18668,2536.64,6223.23>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1472,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1728,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,1984,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2240,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2496,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2752,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,2752,6720>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,2752,6720>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2752,6720>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2496,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,2240,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1984,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1728,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19904,1472,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,1472,6720>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,1472,6720>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,1728,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,1984,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,2240,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19648,2496,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,2240,6720>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,2496,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,1984,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19392,1728,6720>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/lamps/industrial_wall_light_on_blue.rmdl", <-20039,1867.84,6472.22>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/lamps/industrial_wall_light_on_blue.rmdl", <-20039,1975.98,6472.22>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/lamps/industrial_wall_light_on_blue.rmdl", <-20039,2084.16,6472.24>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/lamps/industrial_wall_light_on_blue.rmdl", <-20039,2127.94,6472.22>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/lamps/industrial_wall_light_on_blue.rmdl", <-20039,2232.06,6472.22>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/lamps/industrial_wall_light_on_blue.rmdl", <-20039,2340.1,6472.22>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/lamps/industrial_wall_light_on_blue.rmdl", <-19000.9,1883.83,6472.44>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/lamps/industrial_wall_light_on_blue.rmdl", <-19000.9,1991.9,6472.45>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/lamps/industrial_wall_light_on_blue.rmdl", <-19000.9,2096.05,6472.46>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/lamps/industrial_wall_light_on_blue.rmdl", <-19000.8,2144.3,6472.45>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/lamps/industrial_wall_light_on_blue.rmdl", <-19000.8,2247.89,6471.43>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/lamps/industrial_wall_light_on_blue.rmdl", <-19000.8,2351.88,6471.43>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", <-19136,2240,6208>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/signs/market_sign_yellow_milk.rmdl", <-20024.6,2431.25,6404.36>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/signs/scrolling_sign_scan.rmdl", <-20024.5,1795.14,6408.19>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/signs/building_sign_lit_standing_02.rmdl", <-19015.1,2424.05,6304.39>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/beacon/construction_scaff_128_64_64.rmdl", <-18435.6,2552.81,6223.55>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/beacon/construction_plastic_mat_white_01.rmdl", <-19376.8,1947.43,6227.73>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/beacon/beacon_server_wall_mount_01.rmdl", <-19019.1,2592.44,6223.77>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/beacon/beacon_server_stand_01.rmdl", <-19027,2695.97,6231.9>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/beacon/construction_plastic_mat_black_01.rmdl", <-19685,2271.89,6223.86>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/beacon/construction_plastic_mat_black_01.rmdl", <-18560.2,2556.98,6224.04>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/beacon/construction_plastic_mat_black_01.rmdl", <-18644.1,2525,6223.97>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/mendoko/mendoko_handscanner_01_dmg.rmdl", <-19015.1,1839.94,6307.67>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/canyonlands/canyonlands_zone_sign_03b.rmdl", <-20032.2,2240.89,6719.59>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/security_fence_post.rmdl", <-19967.9,1408.71,6719.31>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/security_fence_post.rmdl", <-19027.8,1360.8,6735.44>, <0,180,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/UTG_spire.rmdl", <-19040.6,2851.51,6735.38>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/UTG_spire.rmdl", <-19984.6,2843.49,6735.42>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/traffic_barrel_02.rmdl", <-19996.6,1891.46,6223.4>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/traffic_barrel_02.rmdl", <-19992.5,2112.09,6223.17>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/traffic_barrel_02.rmdl", <-19996.7,2323.91,6223.32>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/traffic_tube_01.rmdl", <-19992.7,2224.1,6223.33>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/traffic_tube_01.rmdl", <-19989,1992.01,6223.73>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/traffic_cone_01.rmdl", <-19969,2091.8,6223.81>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/traffic_cone_01.rmdl", <-19969,2136.07,6223.8>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/traffic_cone_01.rmdl", <-19948.3,2115.11,6223.68>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/traffic_cone_01.rmdl", <-18255.3,2392.42,6223.47>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/traffic_cone_01.rmdl", <-18255.2,2343.94,6223.4>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/traffic_cone_01.rmdl", <-18255.2,2304.13,6223.44>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/traffic_cone_01.rmdl", <-18251.2,1883.99,6223.41>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/traffic_cone_01.rmdl", <-18251.2,1923.77,6223.44>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/traffic_cone_01.rmdl", <-18247.2,1972.06,6223.43>, <0,90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/vending_machine_02.rmdl", <-19464.8,2872.55,6223.8>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/vending_machine_04.rmdl", <-19408.7,2872.61,6223.65>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/vending_machine_01.rmdl", <-19352.7,2872.63,6223.73>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/vending_machine_03.rmdl", <-19292.7,2872.62,6223.7>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/glass_white_board_wall.rmdl", <-20024.7,2499.31,6347.71>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/welding_push_unit.rmdl", <-18648.1,1655.13,6223.5>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/electrical_box_green.rmdl", <-18720.7,1647.64,6223.4>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/traffic_barrel_02.rmdl", <-18876.8,1655.51,6223.79>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/traffic_barrel_02.rmdl", <-18840.8,1655.42,6223.69>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/traffic_barrel_02.rmdl", <-18864.9,1687.66,6223.72>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/traffic_tube_01.rmdl", <-18804.6,1643.28,6223.61>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/traffic_tube_01.rmdl", <-18808.7,1671.43,6223.51>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/traffic_tube_01.rmdl", <-18784.4,1639.19,6223.58>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/traffic_tube_01.rmdl", <-18792.5,1659.31,6223.52>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/traffic_tube_01.rmdl", <-18772.4,1655.24,6223.46>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/traffic_tube_01.rmdl", <-18764.3,1635.14,6223.56>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/traffic_tube_01.rmdl", <-18788.5,1675.4,6223.4>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/traffic_cone_01.rmdl", <-18752.2,1659.23,6223.4>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/traffic_cone_01.rmdl", <-18768.4,1683.41,6223.29>, <0,0,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/traffic_cone_01.rmdl", <-18792.6,1695.59,6223.34>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/traffic_cone_01.rmdl", <-18816.8,1695.61,6223.48>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/traffic_cone_01.rmdl", <-18832.8,1683.57,6223.59>, <0,-90,0>, true, 8000, -1 ) - CreateEditorProp( $"mdl/industrial/exit_sign_03.rmdl", <-20028.2,2140.85,6448.46>, <0,180,0>, true, 8000, -1 ) -} - - #endif diff --git a/vscripts/sh_consts.gnut b/vscripts/sh_consts.gnut index d6ee137ba..138fb69ac 100644 --- a/vscripts/sh_consts.gnut +++ b/vscripts/sh_consts.gnut @@ -99,7 +99,7 @@ global const FREELANCE = "freelance" global const CUSTOM_TDM = "flowstate_dm" global const CUSTOM_CTF = "custom_ctf" global const CUSTOM_AIMTRAINER = "custom_aimtrainer" -global const MAP_EDITOR = "map_editor" +global const MAP_EDITOR = "map_editor_deprecated" global const FREELANCE_ENABLED = false diff --git a/vscripts/sh_menu_models.gnut b/vscripts/sh_menu_models.gnut index 00bc37c23..849204c61 100644 --- a/vscripts/sh_menu_models.gnut +++ b/vscripts/sh_menu_models.gnut @@ -339,7 +339,7 @@ void function ClMenuModels_Init() AddCallback_OnClientScriptInit( OnClientScriptInit ) AddCallback_FullUpdate( OnFullUpdate ) - if(GameRules_GetGameMode() == "map_editor") + if(GameRules_GetGameMode() == "map_editor_deprecated") { file.scriptEntitiesOrigins["customize_weapon_camera_target"] = GetMapPosition() file.scriptEntitiesAngles["customize_weapon_camera_target"] = GetMapAngles() @@ -351,7 +351,7 @@ void function OnClientScriptInit( entity player ) { thread InitMenuEntities() thread ModelRotationThread() - if(GameRules_GetGameMode() == "map_editor") + if(GameRules_GetGameMode() == "map_editor_deprecated") thread ModelListRotationThread() } @@ -362,7 +362,7 @@ void function OnFullUpdate() bool function MenuMapEntitiesExist() { - if(GameRules_GetGameMode() == "map_editor") + if(GameRules_GetGameMode() == "map_editor_deprecated") return true array entNames = @@ -405,7 +405,7 @@ void function ClearModelMenu() { void function ApplyEventPositioning() { - if(GameRules_GetGameMode() != "map_editor") + if(GameRules_GetGameMode() != "map_editor_deprecated") { array ents ents.append( GetEntByScriptName( "play_camera_target" ) ) @@ -1130,7 +1130,7 @@ void function InitMenuEntities() return #endif - if(GameRules_GetGameMode() != "map_editor") + if(GameRules_GetGameMode() != "map_editor_deprecated") { Assert( MenuMapEntitiesExist() ) @@ -1143,7 +1143,7 @@ void function InitMenuEntities() InitPresentationData() - if( GameRules_GetGameMode() != "map_editor" ) + if( GameRules_GetGameMode() != "map_editor_deprecated" ) { InitTeammatePosition( "play_teammate1_ref", "ACT_MP_MENU_LOBBY_LEFT_IDLE" ) InitTeammatePosition( "play_teammate2_ref", "ACT_MP_MENU_LOBBY_RIGHT_IDLE" ) @@ -1153,7 +1153,7 @@ void function InitMenuEntities() file.cameraTargets.clear() file.cameraStartOriginsAngles.clear() - if(GameRules_GetGameMode() != "map_editor") + if(GameRules_GetGameMode() != "map_editor_deprecated") { foreach ( string scriptName, int eNumIdx in eCameraTargetNames ) { @@ -1172,7 +1172,7 @@ void function InitMenuEntities() } } - if(GameRules_GetGameMode() == "map_editor") + if(GameRules_GetGameMode() == "map_editor_deprecated") { clGlobal.menuCamera = CreateClientSidePointCamera( GetMapPosition(), GetMapAngles(), DEFAULT_FOV ) } @@ -1185,7 +1185,7 @@ void function InitMenuEntities() return // - if(GameRules_GetGameMode() != "map_editor") + if(GameRules_GetGameMode() != "map_editor_deprecated") { entity localPlayer = GetLocalClientPlayer() localPlayer.SetMenuCameraEntityWithAudio( clGlobal.menuCamera ) // @@ -1195,7 +1195,7 @@ void function InitMenuEntities() entity model float[2] baseRotationDelta - if(GameRules_GetGameMode() != "map_editor") + if(GameRules_GetGameMode() != "map_editor_deprecated") { refEnt = GetEntByScriptName( "play_character_ref" ) ModelData_SetBaseOrigin( file.playCharacter, refEnt.GetOrigin() ) @@ -1213,7 +1213,7 @@ void function InitMenuEntities() CharacterSkin_Apply( model, characterSkin ) model.SetAlive( true ) - if(GameRules_GetGameMode() != "map_editor") + if(GameRules_GetGameMode() != "map_editor_deprecated") { refEnt = GetEntByScriptName( "customize_character_ref" ) ModelData_SetBaseOrigin( file.customizeCharacter, refEnt.GetOrigin() ) @@ -1258,7 +1258,7 @@ void function InitMenuEntities() //thread DrawOrg( ModelData_GetMover( file.playCharacter ) ) //thread DrawOrg( ModelData_GetMover( file.customizeWeapon ) ) - if(GameRules_GetGameMode() != "map_editor") + if(GameRules_GetGameMode() != "map_editor_deprecated") InitBattlePassLights() InitLightingConfigs() @@ -1285,7 +1285,7 @@ entity function CreateMenuModel( MenuModelData modelData, asset modelAsset ) entity model = CreateClientSidePropDynamic( origin, angles, modelAsset ) model.SetVisibleForLocalPlayer( 0 ) model.MakeSafeForUIScriptHack() - if(GameRules_GetGameMode() == "map_editor") + if(GameRules_GetGameMode() == "map_editor_deprecated") model.SetModelScale(1 + file.scale) ModelData_SetModel( modelData, model ) @@ -2339,7 +2339,7 @@ void function SetMenuCamera( entity player, int presentationType, bool interpola return } - if (GameRules_GetGameMode() == "map_editor") { + if (GameRules_GetGameMode() == "map_editor_deprecated") { clGlobal.menuCamera = CreateClientSidePointCamera( GetMapPosition(), GetMapAngles(), DEFAULT_FOV ) } @@ -2350,7 +2350,7 @@ void function SetMenuCamera( entity player, int presentationType, bool interpola int cameraTargetName = file.presentationData[ presentationType ].cameraTargetName entity cameraTarget = file.cameraTargets[ cameraTargetName ] - if(GameRules_GetGameMode() == "map_editor") + if(GameRules_GetGameMode() == "map_editor_deprecated") { cameraTarget.SetOrigin(GetMapPosition()) cameraTarget.SetAngles(GetMapAngles()) @@ -2529,7 +2529,7 @@ void function UpdateMenuMouseWheelUp() return file.mouseWheelNewValue += MOUSE_WHEEL_VALUE_INCREMENT - if(GameRules_GetGameMode() == "map_editor") + if(GameRules_GetGameMode() == "map_editor_deprecated") { file.scale += SCALE_OFFSET ModelData_GetModel(file.customizeModel).SetModelScale(file.scale) @@ -2542,7 +2542,7 @@ void function UpdateMenuMouseWheelDown() return file.mouseWheelNewValue -= MOUSE_WHEEL_VALUE_INCREMENT - if(GameRules_GetGameMode() == "map_editor") + if(GameRules_GetGameMode() == "map_editor_deprecated") { file.scale -= SCALE_OFFSET ModelData_GetModel(file.customizeModel).SetModelScale(file.scale) diff --git a/vscripts/sh_onboarding.gnut b/vscripts/sh_onboarding.gnut index 326b3b6f4..f1525eafb 100644 --- a/vscripts/sh_onboarding.gnut +++ b/vscripts/sh_onboarding.gnut @@ -424,7 +424,7 @@ void function DecideRespawnPlayer( entity player, bool giveLoadoutWeapons = true // ItemFlavor playerCharacterSkin = LoadoutSlot_GetItemFlavor( ToEHI( player ), Loadout_CharacterSkin( playerCharacter ) ) // CharacterSkin_Apply( player, playerCharacterSkin ) - if ( giveLoadoutWeapons || GameRules_GetGameMode() == "map_editor") + if ( giveLoadoutWeapons || GameRules_GetGameMode() == "map_editor_deprecated") GiveLoadoutRelatedWeapons( player ) Survival_SetInventoryEnabled( player, giveLoadoutWeapons ) @@ -436,7 +436,7 @@ void function DecideRespawnPlayer( entity player, bool giveLoadoutWeapons = true UpdatePlayerCounts() - if(GameRules_GetGameMode() == "map_editor") + if(GameRules_GetGameMode() == "map_editor_deprecated") thread (void function() : ( player ) { if(IsValid(player.GetOffhandWeapon( OFFHAND_TACTICAL ))) @@ -627,7 +627,7 @@ void function OnClientConnected( entity player ) player.FreezeControlsOnServer() - if( GameRules_GetGameMode() == "map_editor") + if( GameRules_GetGameMode() == "map_editor_deprecated") DecideRespawnPlayer( player ) if ( PreGame_GetWaitingForPlayersSpawningEnabled() diff --git a/vscripts/ui/R5RMenus/menu_lobby.nut b/vscripts/ui/R5RMenus/menu_lobby.nut index f5244a597..5fb8f836f 100644 --- a/vscripts/ui/R5RMenus/menu_lobby.nut +++ b/vscripts/ui/R5RMenus/menu_lobby.nut @@ -77,7 +77,7 @@ global table playlisttoname = { [ "custom_tdm_gungame" ] = "Flowstate Gungame (Beta)", [ "custom_prophunt" ] = "Flowstate Prophunt (Beta)", [ "custom_surf" ] = "Flowstate SURF", - [ "map_editor" ] = "Map Editor", + [ "map_editor_deprecated" ] = "Map Editor", [ "dev_default" ] = "Dev Default" } diff --git a/vscripts/ui/menu_dev.nut b/vscripts/ui/menu_dev.nut index f7970eaa4..1dd7e08be 100644 --- a/vscripts/ui/menu_dev.nut +++ b/vscripts/ui/menu_dev.nut @@ -273,7 +273,7 @@ void function SetupDefaultDevCommandsMP() //Player is fully connected at this point, a check was made before RunClientScript("DEV_SendCheatsStateToUI") - if(GetCurrentPlaylistName() == "map_editor") + if(GetCurrentPlaylistName() == "map_editor_deprecated") SetupDevMenu( "Editor", SetDevMenu_Editor ) if(GetCurrentPlaylistName() == "flowstate_dm") diff --git a/vscripts/weapons/mp_ability_phase_walk.nut b/vscripts/weapons/mp_ability_phase_walk.nut index 2399c2bff..ccb0654ba 100644 --- a/vscripts/weapons/mp_ability_phase_walk.nut +++ b/vscripts/weapons/mp_ability_phase_walk.nut @@ -1,7 +1,6 @@ global function MpAbilityPhaseWalk_Init global function OnWeaponActivate_ability_phase_walk -global function OnWeaponDeactivate_ability_phase_walk global function OnWeaponPrimaryAttack_ability_phase_walk global function OnWeaponChargeBegin_ability_phase_walk global function OnWeaponChargeEnd_ability_phase_walk @@ -14,7 +13,6 @@ void function MpAbilityPhaseWalk_Init() PrecacheParticleSystem( PHASE_WALK_APPEAR_PRE_FX ) } - void function OnWeaponActivate_ability_phase_walk( entity weapon ) { #if SERVER @@ -34,27 +32,6 @@ void function OnWeaponActivate_ability_phase_walk( entity weapon ) #endif } -void function OnWeaponDeactivate_ability_phase_walk( entity weapon ) -{ - #if SERVER - entity player = weapon.GetWeaponOwner() - if(returnPropBool() || player.GetTeam() == TEAM_IMC){ - printt("Flowstate DEBUG - Angles locked for prop team player.", player, player.GetAngles()) - thread PROPHUNT_GiveAndManageRandomProp(player, true) - - } else { - int newscore = player.p.PROPHUNT_Max3changes + 1 //using int as a boolean - player.p.PROPHUNT_Max3changes = newscore - if (player.p.PROPHUNT_Max3changes <= 3){ - thread PROPHUNT_GiveAndManageRandomProp(player) - } else { - printt("Flowstate DEBUG - Max amount of changes reached: ", player) - Message(player, "prophunt", "Max amount of changes reached.", 1) - } - } - #endif -} - var function OnWeaponPrimaryAttack_ability_phase_walk( entity weapon, WeaponPrimaryAttackParams attackParams ) { entity player = weapon.GetWeaponOwner() From 1dd469ecb5839c1c8fa704caa444c4b6c086987c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caf=C3=A9DeColombiaFPS?= <92343247+ColombianGuy@users.noreply.github.com> Date: Wed, 3 May 2023 10:42:52 -0500 Subject: [PATCH 03/17] more merging :) --- README.md | 2 +- vscripts/_mapspawn.gnut | 4 +- vscripts/_remote_functions_mp.gnut | 675 ++++++----- vscripts/client/cl_gamestate.gnut | 4 +- vscripts/client/cl_scoreboard_mp.nut | 2 +- vscripts/client/cl_utility.gnut | 2 +- .../conversation/_survival_commentary.gnut | 2 +- .../fs_aimtrainer/_gamemode_aimtrainer.nut | 6 +- vscripts/gamemodes/fs_tdm/_gamemode_fsdm.nut | 2 +- .../gamemodes/fs_tdm/cl_gamemode_fsdm.nut | 1029 ++++++++++++++--- vscripts/gamemodes/sh_gamemodes.gnut | 36 +- vscripts/gamemodes/sh_gamemodes_mp.gnut | 127 +- .../survival/cl_gamemode_survival.nut | 2 +- vscripts/lobby/lobbyvm/_lobbyvm.nut | 2 +- vscripts/melee/sh_melee.gnut | 27 +- vscripts/mp/_codecallbacks.gnut | 2 +- vscripts/mp/_jump_pads.gnut | 27 +- .../mp/levels/mp_rr_canyonlands_common.nut | 2 +- .../mp/levels/mp_rr_desertlands_common.nut | 4 +- vscripts/mp/sh_desertlands_train.nut | 4 +- vscripts/mp/sh_respawn_beacon.gnut | 7 +- vscripts/sh_consts.gnut | 25 +- vscripts/sh_dev_utility.nut | 2 +- vscripts/sh_onboarding.gnut | 6 +- .../ui/FlowstateDM/flowstate_menu_vote.nut | 560 +++++++++ .../ui/FlowstateDM/flowstate_scoreboard.nut | 305 +++++ .../ui/FlowstateDM/flowstate_statistics.nut | 309 +++++ vscripts/ui/R5RMenus/menu_lobby.nut | 4 +- vscripts/ui/R5RMenus/panel_createserver.nut | 2 +- vscripts/ui/menu_dev.nut | 8 +- vscripts/ui/menu_system.nut | 2 +- vscripts/weapons/mp_weapon_jump_pad.nut | 6 +- 32 files changed, 2634 insertions(+), 563 deletions(-) create mode 100644 vscripts/ui/FlowstateDM/flowstate_menu_vote.nut create mode 100644 vscripts/ui/FlowstateDM/flowstate_scoreboard.nut create mode 100644 vscripts/ui/FlowstateDM/flowstate_statistics.nut diff --git a/README.md b/README.md index 48947af16..86c0cdbef 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Download depot.zip and replace all the content into your Apex S3 main folder. # How to run You can use Lobby Create Server menu or F10 menu to start a Flowstate Aim Trainer session. -1. Choose playlist. "custom_aimtrainer" (F10 menu) or "Flowstate Aim Trainer" (Lobby menu). +1. Choose playlist. fs_aimtrainer (F10 menu) or "Flowstate Aim Trainer" (Lobby menu). 2. Select a map. It works with all Kings Canyon and World's Edge maps, Firing Range map is NOT recommended. 3. Start the server! 4. Change character, weapon, attachments (use right click to change attachments) and a lot more! Start to challenge yourself! diff --git a/vscripts/_mapspawn.gnut b/vscripts/_mapspawn.gnut index f8d7e1e56..b08fbedc2 100644 --- a/vscripts/_mapspawn.gnut +++ b/vscripts/_mapspawn.gnut @@ -308,9 +308,9 @@ void function CodeCallback_MapSpawn() // original script entry point switch(GameRules_GetGameMode()) { - case "flowstate_dm": + case "fs_dm": break - case "custom_aimtrainer": + case fs_aimtrainer: PrecacheWeapon( $"mp_weapon_clickweapon") PrecacheWeapon( $"mp_weapon_clickweaponauto") break diff --git a/vscripts/_remote_functions_mp.gnut b/vscripts/_remote_functions_mp.gnut index 1e139e194..64d41ecfe 100644 --- a/vscripts/_remote_functions_mp.gnut +++ b/vscripts/_remote_functions_mp.gnut @@ -5,37 +5,223 @@ global function AddCallback_OnNetworkRegistration global function GetNV_PreGameStartTime global function GetNV_FreefallIsFromPlane -#if(false) - - -#endif // - - void function RemoteFunctions_Init_Begin() { Remote_BeginRegisteringFunctions() _RegisteringFunctions = true - - // Custom - Remote_RegisterClientFunction("ServerCallback_TDM_DoAnnouncement", "float", 0.0, 256.0, 32, "int", 0, 255) - Remote_RegisterClientFunction("ServerCallback_TDM_SetSelectedLocation","int", 0, 255) - Remote_RegisterClientFunction("ServerCallback_TDM_DoLocationIntroCutscene") - Remote_RegisterClientFunction("ServerCallback_TDM_PlayerKilled") + + //Minimap Toggle + Remote_RegisterClientFunction("Minimap_EnableDraw_Internal") + Remote_RegisterClientFunction("Minimap_DisableDraw_Internal") + + //Custom KillReplay Remote_RegisterClientFunction("ServerCallback_KillReplayHud_Activate") Remote_RegisterClientFunction("ServerCallback_KillReplayHud_Deactivate") - + //Custom gamemodes + switch ( GameRules_GetGameMode() ) + { + case fs_dm: + Remote_RegisterClientFunction("ServerCallback_ToggleDotForHitscanWeapons", "bool") + Remote_RegisterClientFunction("ServerCallback_SetLaserSightsOnSMGWeapon", "entity") + Remote_RegisterClientFunction("ServerCallback_StopLaserSightsOnSMGWeapon", "entity") + Remote_RegisterClientFunction("ServerCallback_OpenStatisticsUI") //REVISIT + Remote_RegisterClientFunction("ServerCallback_FSDM_SetScreen", "int", 0, 255, "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "int", 0, 255) + Remote_RegisterClientFunction("ServerCallback_FSDM_OpenVotingPhase", "bool") + Remote_RegisterClientFunction("ServerCallback_FSDM_ChampionScreenHandle", "bool", "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX ) + Remote_RegisterClientFunction("ServerCallback_FSDM_UpdateVotingMaps", "int", 0, 255, "int", 0, 255, "int", 0, 255, "int", 0, 255) + Remote_RegisterClientFunction("ServerCallback_FSDM_UpdateMapVotesClient", "int", 0, 255, "int", 0, 255, "int", 0, 255, "int", 0, 255) + Remote_RegisterClientFunction("ServerCallback_CoolCameraOnMenu") + Remote_RegisterClientFunction("ServerCallback_SendScoreboardToClient", "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "float", 0.0, 10.0, 32, "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX) + Remote_RegisterClientFunction("ServerCallback_ClearScoreboardOnClient") + Remote_RegisterClientFunction("ServerCallback_FSDM_CoolCamera") + Remote_RegisterClientFunction("DM_HintCatalog", "int", 0, 10, "int", INT_MIN, INT_MAX) + break + case fs_aimtrainer: + Remote_RegisterUIFunction( "OpenFRChallengesMenu" ) + Remote_RegisterUIFunction( "CloseFRChallengesMenu" ) + Remote_RegisterUIFunction( "OpenFRChallengesMainMenu", "int", 0, 999999 ) + Remote_RegisterUIFunction( "CloseFRChallengesMainMenu") + Remote_RegisterUIFunction( "OpenFRChallengesSettings" ) + Remote_RegisterUIFunction( "CloseFRChallengesSettings" ) + Remote_RegisterUIFunction( "OpenFRChallengesSettingsWpnSelector" ) + Remote_RegisterUIFunction( "CloseFRChallengesSettingsWpnSelector" ) + Remote_RegisterClientFunction("ServerCallback_OpenFRChallengesMenu","int", 0, 999999, "int", 0, 999999, "int", 0, 999999, "float", 0.0, 1.0, 32, "int", 0, 999999, "int", 0, 999999, "int", 0, 999999, "bool") + Remote_RegisterClientFunction("ServerCallback_CloseFRChallengesResults") + Remote_RegisterClientFunction("ServerCallback_RestartChallenge", "int", 0, 30) + Remote_RegisterClientFunction("ServerCallback_HistoryUIAddNewChallenge", "int", 0, 999999, "int", 0, 999999, "entity", "float", 0.0, 1.0, 32, "int", 0, 999999, "int", 0, 999999, "int", 0, 999999,"int", 0, 999999) + Remote_RegisterClientFunction("ServerCallback_OpenFRChallengesMainMenu", "int", 0, 999999 ) + Remote_RegisterClientFunction("ServerCallback_OpenFRChallengesHistory", "int", 0, 999999 ) + Remote_RegisterClientFunction("ServerCallback_OpenFRChallengesSettings") + Remote_RegisterClientFunction("ServerCallback_CoolCameraOnMenu") + Remote_RegisterClientFunction("ServerCallback_SetChallengeActivated", "bool") + Remote_RegisterClientFunction("ServerCallback_LiveStatsUIDummiesKilled", "int", 0, 999999) + Remote_RegisterClientFunction("ServerCallback_LiveStatsUIAccuracyViaTotalShots", "int", 0, 999999) + Remote_RegisterClientFunction("ServerCallback_LiveStatsUIAccuracyViaShotsHits") + Remote_RegisterClientFunction("ServerCallback_LiveStatsUIDamageViaWeaponAttack", "int", 0, 999999, "float", 0.0, 999999.0, 32) + Remote_RegisterClientFunction("ServerCallback_LiveStatsUIDamageViaDummieDamaged", "int", 0, 999999) + Remote_RegisterClientFunction("ServerCallback_LiveStatsUIHeadshot", "int", 0, 999999) + Remote_RegisterClientFunction("ServerCallback_ResetLiveStatsUI") + Remote_RegisterClientFunction("ServerCallback_SetDefaultMenuSettings") + Remote_RegisterClientFunction("ServerCallback_CreateDistanceMarkerForGrenadesChallengeDummies", "entity", "entity") + Remote_RegisterClientFunction("ServerCallback_ToggleDotForHitscanWeapons", "bool") + Remote_RegisterClientFunction("ServerCallback_SetLaserSightsOnSMGWeapon", "entity") + Remote_RegisterClientFunction("ServerCallback_StopLaserSightsOnSMGWeapon", "entity") + break + // case flowstate_snd: + // Remote_RegisterClientFunction("Sh_SetAttackingLocations", "int", 0, 10) + // Remote_RegisterClientFunction("Sh_SetAttackerTeam", "int", 0, 10, "int", INT_MIN, INT_MAX) + // Remote_RegisterClientFunction("SND_HintCatalog", "int", 0, 20, "int", INT_MIN, INT_MAX) + // Remote_RegisterClientFunction("SND_HintCatalog_WithEntity", "int", 0, 10, "entity") + // Remote_RegisterClientFunction("ClearMatchPoints") + // Remote_RegisterClientFunction("Thread_SNDTimer", "float", 0.0, 999999.0, 32) + // Remote_RegisterClientFunction("Thread_SNDBuyMenuTimer", "float", 0.0, 999999.0, 32) + // Remote_RegisterClientFunction("RefreshImageAndScaleOnMinimapAndFullmap") + // Remote_RegisterClientFunction("ServerCallback_UpdateSpectatorTargetCount", "int", INT_MIN, INT_MAX, "bool") + // Remote_RegisterClientFunction("ServerCallback_ResetMoney") + // Remote_RegisterClientFunction("AddRoundPointToWinner_IMC") + // Remote_RegisterClientFunction("AddRoundPointToWinner_Militia") + // Remote_RegisterClientFunction("AddRoundPointTied") + // Remote_RegisterClientFunction("SND_ToggleScoreboardVisibility", "bool") + // Remote_RegisterClientFunction("SND_UpdateUIScore") + // Remote_RegisterClientFunction("SND_UpdateUIScoreOnPlayerConnected", "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX) + // Remote_RegisterClientFunction("ServerCallback_ForceDestroyPlantingRUI") + // Remote_RegisterClientFunction("INFECTION_QuickHint", "int", -25, 255, "bool", "int", INT_MIN, INT_MAX) //For kill streak + // Remote_RegisterClientFunction("FlowstateSND_CustomBuyMenu_Start", "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "bool") + // Remote_RegisterClientFunction("FlowstateSND_CustomBuyMenu_Stop") + // Remote_RegisterClientFunction("FlowstateSND_CustomWinnerScreen_Start", "int", INT_MIN, INT_MAX, "int", 0, 10) + // Remote_RegisterClientFunction("ServerCallback_SetBombState", "int", INT_MIN, INT_MAX) + // Remote_RegisterClientFunction("ServerCallback_ToggleBombUIVisibility", "bool") + // Remote_RegisterClientFunction("ServerCallback_FlowstateSND_CustomBuyMenu_UpdateValues", "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX) + // Remote_RegisterClientFunction("ServerCallback_BuySuccessful", "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX ) + // Remote_RegisterClientFunction("ServerCallback_BuyRejected") + // Remote_RegisterClientFunction("ServerCallback_SellSuccessful", "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX ) + // Remote_RegisterClientFunction("ServerCallback_OnMoneyAdded", "int", INT_MIN, INT_MAX) + // Remote_RegisterClientFunction("ServerCallback_AddPlantZoneInGameHintA", "entity", "bool") + // Remote_RegisterClientFunction("ServerCallback_AddPlantZoneInGameHintB", "entity", "bool") + // Remote_RegisterClientFunction("ServerCallback_OnBombPlantedInGameHint", "entity", "float", 0.0, 999999.0, 32) + // Remote_RegisterClientFunction("ServerCallback_ForceZoneHintDestroy", "bool") + // Remote_RegisterClientFunction("ServerCallback_FSDM_OpenVotingPhase", "bool") + // Remote_RegisterClientFunction("ServerCallback_FSDM_CoolCamera") + // Remote_RegisterClientFunction("ServerCallback_FSDM_SetScreen", "int", 0, 255, "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "int", 0, 255) + // Remote_RegisterClientFunction("ServerCallback_ClearScoreboardOnClient") + // Remote_RegisterClientFunction("ServerCallback_SendScoreboardToClient", "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "float", 0.0, 10.0, 32, "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX) + // Remote_RegisterClientFunction("SetSNDKnifeColor", "int", INT_MIN, INT_MAX) + // Remote_RegisterClientFunction("SetCustomLightning", "int", -1, 10) + // Remote_RegisterClientFunction("ClientCodeCallback_OnPlayerConsumableInventoryChanged", "entity") + // Remote_RegisterClientFunction("SND_ToggleMoneyUI", "bool") + // Remote_RegisterClientFunction("SND_ForceUpdatePlayerCount") + // Remote_RegisterUIFunction("Open_FSSND_BuyMenu", "int", INT_MIN, INT_MAX) + // Remote_RegisterUIFunction("SND_UpdateVotesForTeam", "int", 0, 2, "int", INT_MIN, INT_MAX) + // Remote_RegisterUIFunction("Close_FSSND_BuyMenu") + // Remote_RegisterUIFunction("SND_Disable_IMCButton") + // Remote_RegisterUIFunction("SND_Disable_MILITIAButton") + // break + // case flowstate_infection: + // Remote_RegisterClientFunction("ApplyInfectedHUD") + // Remote_RegisterClientFunction("CleanUpInfectedClientEffects") + // Remote_RegisterClientFunction("ServerCallback_FSDM_SetScreen", "int", 0, 255, "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "int", 0, 255) + // Remote_RegisterClientFunction("ServerCallback_FSDM_OpenVotingPhase", "bool") + // Remote_RegisterClientFunction("ServerCallback_FSDM_ChampionScreenHandle", "bool", "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX ) + // Remote_RegisterClientFunction("ServerCallback_FSDM_UpdateVotingMaps", "int", 0, 255, "int", 0, 255, "int", 0, 255, "int", 0, 255) + // Remote_RegisterClientFunction("ServerCallback_FSDM_UpdateMapVotesClient", "int", 0, 255, "int", 0, 255, "int", 0, 255, "int", 0, 255) + // Remote_RegisterClientFunction("ServerCallback_CoolCameraOnMenu") + // Remote_RegisterClientFunction("ServerCallback_FSDM_CoolCamera") + // Remote_RegisterClientFunction("INFECTION_QuickHint", "int", -25, 255, "bool", "int", INT_MIN, INT_MAX) + // Remote_RegisterClientFunction("ShowInfectedNearUI", "bool") + // break + case fs_duckhunt: + Remote_RegisterClientFunction("DUCKHUNT_CustomHint", "int", 0, 255, "int", INT_MIN, INT_MAX) + Remote_RegisterClientFunction("DUCKHUNT_Timer", "bool", "float", 0.0, 1000000.0, 32) + Remote_RegisterClientFunction("ToggleSetHunterClient", "bool") + break + // case flowstate_pkknockback: + // Remote_RegisterClientFunction("UpdateRingSizeFromServer", "float", 0.0, 99999.0, 32) + // Remote_RegisterClientFunction("ServerCallback_FSDM_SetScreen", "int", 0, 255, "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "int", 0, 255) + // Remote_RegisterClientFunction("ServerCallback_FSDM_OpenVotingPhase", "bool") + // Remote_RegisterClientFunction("ServerCallback_FSDM_ChampionScreenHandle", "bool", "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX ) + // Remote_RegisterClientFunction("ServerCallback_FSDM_UpdateVotingMaps", "int", 0, 255, "int", 0, 255, "int", 0, 255, "int", 0, 255) + // Remote_RegisterClientFunction("ServerCallback_FSDM_UpdateMapVotesClient", "int", 0, 255, "int", 0, 255, "int", 0, 255, "int", 0, 255) + // Remote_RegisterClientFunction("ServerCallback_CoolCameraOnMenu") + // Remote_RegisterClientFunction("ServerCallback_FSDM_CoolCamera") + // Remote_RegisterClientFunction("MakeKnockbacksRUI", "int", 0, 255, "int", INT_MIN, INT_MAX) + // Remote_RegisterClientFunction("DestroyKnockbacsRUI") + // Remote_RegisterClientFunction("PKKNOCKBACK_CustomHint", "int", 0, 255, "int", INT_MIN, INT_MAX) + + // Remote_RegisterClientFunction( "PKKNOCKBACK_PlayerKilled", "int", INT_MIN, INT_MAX, "int", 0, 255, "entity", "int", INT_MIN, INT_MAX, "int", 0, 255, "entity") + // Remote_RegisterClientFunction( "PKKNOCKBACK_Timer", "bool", "float", 0.0, 1000000.0, 32) + // Remote_RegisterClientFunction( "PKKNOCKBACK_SetUIVisibility", "bool" ) + + // break + case fs_prophunt: + Remote_RegisterClientFunction("ServerCallback_FSDM_SetScreen", "int", 0, 255, "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "int", 0, 255) + Remote_RegisterClientFunction("ServerCallback_FSDM_OpenVotingPhase", "bool") + Remote_RegisterClientFunction("ServerCallback_FSDM_ChampionScreenHandle", "bool", "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX ) + Remote_RegisterClientFunction("ServerCallback_FSDM_UpdateVotingMaps", "int", 0, 255, "int", 0, 255, "int", 0, 255, "int", 0, 255) + Remote_RegisterClientFunction("ServerCallback_FSDM_UpdateMapVotesClient", "int", 0, 255, "int", 0, 255, "int", 0, 255, "int", 0, 255) + Remote_RegisterClientFunction("ServerCallback_CoolCameraOnMenu") + Remote_RegisterClientFunction("ServerCallback_SendScoreboardToClient", "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "float", 0.0, 10.0, 32, "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX) + Remote_RegisterClientFunction("ServerCallback_SendProphuntPropsScoreboardToClient", "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX) + Remote_RegisterClientFunction("ServerCallback_SendProphuntHuntersScoreboardToClient", "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX) + Remote_RegisterClientFunction("ServerCallback_ClearScoreboardOnClient") + Remote_RegisterClientFunction("ServerCallback_FSDM_CoolCamera") + Remote_RegisterClientFunction("PROPHUNT_DoScreenFlashFX", "entity", "entity") + Remote_RegisterClientFunction("PROPHUNT_EnableControlsUI", "bool", "float", 0.0, 1000000.0, 32) + Remote_RegisterClientFunction("PROPHUNT_RemoveControlsUI") + Remote_RegisterClientFunction("PROPHUNT_CustomHint", "int", 0, 255, "int", INT_MIN, INT_MAX) + Remote_RegisterClientFunction("PROPHUNT_AddUsageToHint", "int", 0, 255) + Remote_RegisterClientFunction("PROPHUNT_AddWinningSquadData_PropTeamAddModelIndex", "bool", "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX) + Remote_RegisterClientFunction("PROPHUNT_StartMiscTimer", "bool") + Remote_RegisterClientFunction("PROPHUNT_QuickText", "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX) + Remote_RegisterClientFunction("CreateAndMoveCameraToWinnerProp", "entity") + Remote_RegisterClientFunction("PROPHUNT_Disable_MILITIAButton") + Remote_RegisterClientFunction("PROPHUNT_Disable_IMCButton") + Remote_RegisterClientFunction("ForceDisableHuntersAbilityHint") + Remote_RegisterClientFunction("EnableHuntersAbility") + Remote_RegisterClientFunction("PROPHUNT_UpdateThirdPersonCameraPosition", "float", 0.0, 9999.0, 32) + break + case map_editor_deprecated: + Remote_RegisterClientFunction("ServerCallback_NextProp", "entity") + Remote_RegisterClientFunction("ServerCallback_OpenModelMenu", "entity") + Remote_RegisterClientFunction("ServerCallback_SetCurrentEditorMode", "int", 0, 255) + break + case CUSTOM_CTF: + // CTF: Server to Client + Remote_RegisterClientFunction( "ServerCallback_CTF_AddPointIcon", "entity", "entity", "int", 0, 255) + Remote_RegisterClientFunction( "ServerCallback_CTF_RecaptureFlag", "int", 0, 999, "float", 0.0, 999.0, 32, "float", 0.0, 999.0, 32, "bool") + Remote_RegisterClientFunction("ServerCallback_CTF_FlagCaptured", "entity", "int", 0, 255) + Remote_RegisterClientFunction( "ServerCallback_CTF_CustomMessages", "entity", "int", 0, 255 ) + Remote_RegisterClientFunction( "ServerCallback_CTF_PickedUpFlag", "entity", "bool" ) + Remote_RegisterClientFunction( "ServerCallback_CTF_SetSelectedLocation", "int", 0, 255) + Remote_RegisterClientFunction( "ServerCallback_CTF_SetPointIconHint", "int", 0, 255, "int", 0, 255 ) + Remote_RegisterClientFunction("ServerCallback_CTF_DoAnnouncement", "float", 0.0, 256.0, 32, "int", 0, 255, "float", 0.0, 1000000.0, 32) + Remote_RegisterClientFunction( "ServerCallback_CTF_OpenCTFRespawnMenu", "vector", -32000.0, 32000.0, 32, "int", 0, 255, "int", 0, 255, "entity", "int", 0, 255) + Remote_RegisterClientFunction( "ServerCallback_CTF_SetObjectiveText", "int", 0, 255) + Remote_RegisterUntypedFunction_deprecated( "ServerCallback_CTF_ResetFlagIcons" ) + Remote_RegisterUntypedFunction_deprecated( "ServerCallback_CTF_PointCaptured" ) + Remote_RegisterUntypedFunction_deprecated( "ServerCallback_CTF_TeamText" ) + Remote_RegisterClientFunction( "ServerCallback_CTF_SetCorrectTime", "int", 0, 255) + Remote_RegisterClientFunction( "ServerCallback_CTF_UpdatePlayerStats", "int", 0, 255) + Remote_RegisterClientFunction( "ServerCallback_CTF_CheckUpdatePlayerLegend") + Remote_RegisterClientFunction( "ServerCallback_CTF_HideCustomUI" ) + Remote_RegisterUntypedFunction_deprecated( "ServerCallback_CTF_PrintClientMessage" ) + Remote_RegisterUntypedFunction_deprecated( "ServerCallback_CTF_BuildClientMessage" ) + Remote_RegisterClientFunction("ServerCallback_CTF_SetScreen", "int", 0, 255, "int", 0, 255, "int", 0, 255, "int", 0, 255) + Remote_RegisterClientFunction("ServerCallback_CTF_SetVoteMenuOpen", "bool", "int", 0, 255) + Remote_RegisterClientFunction("ServerCallback_CTF_UpdateVotingMaps", "int", 0, 255, "int", 0, 255, "int", 0, 255, "int", 0, 255) + Remote_RegisterClientFunction("ServerCallback_CTF_UpdateMapVotesClient", "int", 0, 255, "int", 0, 255, "int", 0, 255, "int", 0, 255) + Remote_RegisterUIFunction( "CloseCTFRespawnMenu" ) + break + } + + //TF2 leftovers + Survival base gamemode + RegisterSignal("OnChangedPlayerClass") RegisterSignal("BleedOut_OnStartDying") - Remote_RegisterClientFunction( "ServerCallback_SkydiveTrailStart", "entity" ) Remote_RegisterClientFunction( "ServerCallback_SkydiveTrailEnd", "entity" ) - RegisterNetworkedVariable( "skyDiveTrailOverrideIndex", SNDC_PLAYER_GLOBAL, SNVT_INT, -1 ) - - Remote_RegisterUntypedFunction_deprecated( "ServerCallback_EventNotification" ) - Remote_RegisterClientFunction( "ServerCallback_UpdateHudWeaponData", "entity" ) Remote_RegisterUntypedFunction_deprecated( "ServerCallback_BLEEDOUT_ShowWoundedMarker" ) Remote_RegisterUntypedFunction_deprecated( "ServerCallback_BLEEDOUT_HideWoundedMarker" ) @@ -43,32 +229,23 @@ void function RemoteFunctions_Init_Begin() Remote_RegisterUntypedFunction_deprecated( "ServerCallback_BLEEDOUT_StopFirstAidProgressBar" ) Remote_RegisterUntypedFunction_deprecated( "ServerCallback_ModelViewerDisableConflicts" ) Remote_RegisterUntypedFunction_deprecated( "SCB_AddGrenadeIndicatorForEntity" ) - Remote_RegisterUntypedFunction_deprecated( "ScriptCallback_UnlockAchievement" ) Remote_RegisterClientFunction( "ServerCallback_UpdateHeroStats" ) - Remote_RegisterUntypedFunction_deprecated( "ServerCallback_SonarPulseFromPosition" ) Remote_RegisterClientFunction( "ServerCallback_SonarPulseConeFromPosition", "vector", -32000.0, 32000.0, 32, "float", 0.0, 32000.0, 8, "vector", -1.0, 1.0, 32, "float", -360.0, 360.0, 8, "int", 0, 128, "float", 0.0, 32000.0, 32, "bool", "bool" ) - Remote_RegisterClientFunction( "ServerCallback_SonarAreaScanTarget", "entity", "entity" ) RegisterNetworkedVariable( "playerAllowedToLeech", SNDC_PLAYER_EXCLUSIVE, SNVT_BOOL, true ) - // we want to keep these as nv's because we want them to ignore kill replay - // ------------- RegisterEntityVar( "player", "nextRespawnTime", 0 ) RegisterEntityVar( "player", "musicPackAssigned", 0 ) - // ------------- - // end Remote_RegisterUntypedFunction_deprecated( "ServerCallback_UpdateMarker" ) Remote_RegisterUntypedFunction_deprecated( "DisablePrecacheErrors" ) Remote_RegisterUntypedFunction_deprecated( "RestorePrecacheErrors" ) Remote_RegisterClientFunction( "SCB_WeaponInspectHint" ) - Remote_RegisterClientFunction( "SCB_UpdatePlayerWeaponReactiveEffects", "entity", "int", 0, eReactiveEffectUpdateType.len() ) - Remote_RegisterClientFunction( "ServerCallback_PlayMatchEndMusic" ) @@ -90,25 +267,22 @@ void function RemoteFunctions_Init_Begin() RegisterServerVar( "roundWinningKillReplayEnabled", false ) RegisterServerVar( "roundWinningKillReplayPlaying", false ) RegisterServerVar( "roundScoreLimitComplete", false ) - RegisterServerVar( "roundWinningKillReplayEntHealthFrac", 0.0 ) // + RegisterServerVar( "roundWinningKillReplayEntHealthFrac", 0.0 ) RegisterServerVar( "badRepPresent", false ) - RegisterServerVar( "roundBased", false ) RegisterServerVar( "roundStartTime", null ) RegisterServerVar( "roundEndTime", 0.0 ) RegisterServerVar( "roundsPlayed", 0 ) RegisterNetworkedVariable( "PreGameStartTime", SNDC_GLOBAL, SNVT_TIME, 0.0 ) - RegisterServerVar( "winningTeam", null ) - - // + + // Attack/Defend based game modes RegisterNetworkedVariable( "attackingTeam", SNDC_GLOBAL, SNVT_INT, TEAM_UNASSIGNED ) - - // + + // Riffs RegisterServerVar( "minimapState", -1 ) - RegisterNetworkedVariable( "indicatorId", SNDC_PLAYER_EXCLUSIVE, SNVT_INT, 0 ) // DEATHBOX: gcard character vars @@ -125,257 +299,175 @@ void function RemoteFunctions_Init_Begin() RegisterNetworkedVariable( "secondBadgeDataInt", SNDC_DEATH_BOX, SNVT_INT, -1 ) RegisterNetworkedVariable( "thirdBadgeIndex", SNDC_DEATH_BOX, SNVT_INT, -1 ) RegisterNetworkedVariable( "thirdBadgeDataInt", SNDC_DEATH_BOX, SNVT_INT, -1 ) - + RegisterNetworkedVariable( "lootRarity", SNDC_DEATH_BOX, SNVT_INT, -1 ) - Remote_RegisterClientFunction( "ServerCallback_PlayLootRarityFXOnDeathboxDrop", "entity" ) - RegisterNetworkedVariable( "ownerEHI", SNDC_DEATH_BOX, SNVT_BIG_INT, -1 ) - switch ( GameRules_GetGameMode() ) - { - case CUSTOM_AIMTRAINER: - //FR Challenges - Remote_RegisterClientFunction("ServerCallback_OpenFRChallengesMenu","int", 0, 999999, "int", 0, 999999, "int", 0, 999999, "float", 0.0, 1.0, 32, "int", 0, 999999, "int", 0, 999999, "int", 0, 999999, "bool") - Remote_RegisterClientFunction("ServerCallback_CloseFRChallengesResults") - Remote_RegisterUIFunction( "OpenFRChallengesMenu" ) - Remote_RegisterUIFunction( "CloseFRChallengesMenu" ) - Remote_RegisterClientFunction("ServerCallback_RestartChallenge", "int", 0, 30) - Remote_RegisterClientFunction("ServerCallback_HistoryUIAddNewChallenge", "int", 0, 999999, "int", 0, 999999, "entity", "float", 0.0, 1.0, 32, "int", 0, 999999, "int", 0, 999999, "int", 0, 999999,"int", 0, 999999) - Remote_RegisterClientFunction("ServerCallback_OpenFRChallengesMainMenu", "int", 0, 999999 ) - Remote_RegisterClientFunction("ServerCallback_OpenFRChallengesHistory", "int", 0, 999999 ) - Remote_RegisterUIFunction( "OpenFRChallengesMainMenu", "int", 0, 999999 ) - Remote_RegisterUIFunction( "CloseFRChallengesMainMenu") - - Remote_RegisterClientFunction("ServerCallback_OpenFRChallengesSettings") - Remote_RegisterUIFunction( "OpenFRChallengesSettings" ) - Remote_RegisterUIFunction( "CloseFRChallengesSettings" ) - - Remote_RegisterUIFunction( "OpenFRChallengesSettingsWpnSelector" ) - Remote_RegisterUIFunction( "CloseFRChallengesSettingsWpnSelector" ) - Remote_RegisterClientFunction("ServerCallback_ToggleDotForHitscanWeapons", "bool") - Remote_RegisterClientFunction("ServerCallback_CoolCameraOnMenu") - Remote_RegisterClientFunction("ServerCallback_SetChallengeActivated", "bool") - Remote_RegisterClientFunction("ServerCallback_LiveStatsUIDummiesKilled", "int", 0, 999999) - Remote_RegisterClientFunction("ServerCallback_LiveStatsUIAccuracyViaTotalShots", "int", 0, 999999) - Remote_RegisterClientFunction("ServerCallback_LiveStatsUIAccuracyViaShotsHits") - Remote_RegisterClientFunction("ServerCallback_LiveStatsUIDamageViaWeaponAttack", "int", 0, 999999, "float", 0.0, 999999.0, 32) - Remote_RegisterClientFunction("ServerCallback_LiveStatsUIDamageViaDummieDamaged", "int", 0, 999999) - Remote_RegisterClientFunction("ServerCallback_LiveStatsUIHeadshot", "int", 0, 999999) - Remote_RegisterClientFunction("ServerCallback_ResetLiveStatsUI") - Remote_RegisterClientFunction("ServerCallback_SetDefaultMenuSettings") - Remote_RegisterClientFunction("ServerCallback_SetLaserSightsOnSMGWeapon", "entity") - Remote_RegisterClientFunction("ServerCallback_StopLaserSightsOnSMGWeapon", "entity") - Remote_RegisterClientFunction("ServerCallback_CreateDistanceMarkerForGrenadesChallengeDummies", "entity", "entity") - //End Challenges by Colombia - case MAP_EDITOR: - Remote_RegisterClientFunction("ServerCallback_NextProp", "entity") - Remote_RegisterClientFunction("ServerCallback_OpenModelMenu", "entity") - Remote_RegisterClientFunction("ServerCallback_SetCurrentEditorMode", "int", 0, 255) - case CUSTOM_CTF: - // CTF: Server to Client - Remote_RegisterClientFunction( "ServerCallback_CTF_AddPointIcon", "entity", "entity", "int", 0, 255) - Remote_RegisterClientFunction( "ServerCallback_CTF_RecaptureFlag", "int", 0, 999, "float", 0.0, 999.0, 32, "float", 0.0, 999.0, 32, "bool") - Remote_RegisterClientFunction("ServerCallback_CTF_FlagCaptured", "entity", "int", 0, 255) - Remote_RegisterClientFunction( "ServerCallback_CTF_CustomMessages", "entity", "int", 0, 255 ) - Remote_RegisterClientFunction( "ServerCallback_CTF_PickedUpFlag", "entity", "bool" ) - Remote_RegisterClientFunction( "ServerCallback_CTF_SetSelectedLocation", "int", 0, 255) - Remote_RegisterClientFunction( "ServerCallback_CTF_SetPointIconHint", "int", 0, 255, "int", 0, 255 ) - Remote_RegisterClientFunction("ServerCallback_CTF_DoAnnouncement", "float", 0.0, 256.0, 32, "int", 0, 255, "float", 0.0, 1000000.0, 32) - Remote_RegisterClientFunction( "ServerCallback_CTF_OpenCTFRespawnMenu", "vector", -32000.0, 32000.0, 32, "int", 0, 255, "int", 0, 255, "entity", "int", 0, 255) - Remote_RegisterClientFunction( "ServerCallback_CTF_SetObjectiveText", "int", 0, 255) - Remote_RegisterUntypedFunction_deprecated( "ServerCallback_CTF_ResetFlagIcons" ) - Remote_RegisterUntypedFunction_deprecated( "ServerCallback_CTF_PointCaptured" ) - Remote_RegisterUntypedFunction_deprecated( "ServerCallback_CTF_TeamText" ) - Remote_RegisterClientFunction( "ServerCallback_CTF_SetCorrectTime", "int", 0, 255) - Remote_RegisterClientFunction( "ServerCallback_CTF_UpdatePlayerStats", "int", 0, 255) - Remote_RegisterClientFunction( "ServerCallback_CTF_CheckUpdatePlayerLegend") - Remote_RegisterClientFunction( "ServerCallback_CTF_HideCustomUI" ) - Remote_RegisterUntypedFunction_deprecated( "ServerCallback_CTF_PrintClientMessage" ) - Remote_RegisterUntypedFunction_deprecated( "ServerCallback_CTF_BuildClientMessage" ) - //CTF: Vote Menu - Remote_RegisterClientFunction("ServerCallback_CTF_SetScreen", "int", 0, 255, "int", 0, 255, "int", 0, 255, "int", 0, 255) - Remote_RegisterClientFunction("ServerCallback_CTF_SetVoteMenuOpen", "bool", "int", 0, 255) - Remote_RegisterClientFunction("ServerCallback_CTF_UpdateVotingMaps", "int", 0, 255, "int", 0, 255, "int", 0, 255, "int", 0, 255) - Remote_RegisterClientFunction("ServerCallback_CTF_UpdateMapVotesClient", "int", 0, 255, "int", 0, 255, "int", 0, 255, "int", 0, 255) + RegisterNetworkedVariable( "isPlayerShadowForm", SNDC_PLAYER_GLOBAL, SNVT_BOOL, false ) + RegisterNetworkedVariable( "hasDeathFieldImmunity", SNDC_PLAYER_EXCLUSIVE, SNVT_BOOL, false ) + RegisterNetworkedVariable( "displayMapzoneText", SNDC_GLOBAL, SNVT_BOOL, true ) + + RegisterNetworkedVariable( "pickLoadoutGamestateStartTime", SNDC_GLOBAL, SNVT_TIME, -1 ) + RegisterNetworkedVariable( "pickLoadoutGamestateEndTime", SNDC_GLOBAL, SNVT_TIME, -1 ) + RegisterNetworkedVariable( "hasLockedInCharacter", SNDC_PLAYER_GLOBAL, SNVT_BOOL, false ) + RegisterNetworkedVariable( "characterSelectLockstepPlayerIndex", SNDC_PLAYER_GLOBAL, SNVT_INT, -1 ) + RegisterNetworkedVariable( "characterSelectFocusIndex", SNDC_PLAYER_GLOBAL, SNVT_BIG_INT, -1 ) + RegisterNetworkedVariable( "characterSelectionReady", SNDC_GLOBAL, SNVT_BOOL, false ) + RegisterNetworkedVariable( "characterSelectLockstepIndex", SNDC_GLOBAL, SNVT_INT, -1 ) + RegisterNetworkedVariable( "characterSelectLockstepStartTime", SNDC_GLOBAL, SNVT_TIME, -1 ) + RegisterNetworkedVariable( "characterSelectLockstepEndTime", SNDC_GLOBAL, SNVT_TIME, -1 ) + RegisterNetworkedVariable( "characterSelectPicksEndTime", SNDC_GLOBAL, SNVT_TIME, -1 ) + RegisterNetworkedVariable( "squadPresentationStartTime", SNDC_GLOBAL, SNVT_TIME, -1 ) + RegisterNetworkedVariable( "championSquadPresentationStartTime", SNDC_GLOBAL, SNVT_TIME, -1 ) + Remote_RegisterClientFunction( "ServerCallback_CharacterLockRejected" ) + + RegisterNetworkedVariable( "championEEH", SNDC_GLOBAL, SNVT_BIG_INT, EncodedEHandle_null ) + RegisterNetworkedVariable( "championSquad1EEH", SNDC_GLOBAL, SNVT_BIG_INT, EncodedEHandle_null ) + RegisterNetworkedVariable( "championSquad2EEH", SNDC_GLOBAL, SNVT_BIG_INT, EncodedEHandle_null ) + + RegisterNetworkedVariable( "ultimateCredits", SNDC_PLAYER_GLOBAL, SNVT_UNSIGNED_INT, 0 ) + Remote_RegisterClientFunction( "ServerCallback_Mirage_DecoysDeployed", "bool" ) + Remote_RegisterClientFunction( "ServerCallback_MatchEndAnnouncement", "bool", "int", INT_MIN, INT_MAX ) + Remote_RegisterClientFunction( "ServerCallback_DestroyEndAnnouncement" ) + + Remote_RegisterClientFunction( "ServerCallback_SquadEliminated", "int", TEAM_INVALID, 126 ) + Remote_RegisterClientFunction( "ServerCallback_ShowDeathScreen" ) + Remote_RegisterClientFunction( "ServerCallback_DeathScreenSwitchTab" ) + + Remote_RegisterClientFunction( "ServerCallback_SendDeathRecapData", "int", -1, INT_MAX, "int", -1, INT_MAX, "int", -1, INT_MAX, "int", INT_MIN, INT_MAX, "int", -1, INT_MAX, "int", 0, INT_MAX, "int", 0, INT_MAX, "float", 0.0, 1.0, 32, "float", 0.0, 1.0, 32, "float", 0.0, 86400.0, 32 ) + Remote_RegisterClientFunction( "ServerCallback_DeathRecapDataUpdated", "bool", "int", -1, INT_MAX ) + + Remote_RegisterClientFunction( "ServerCallback_AddWinningSquadData", "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX ) + Remote_RegisterClientFunction( "ServerCallback_ShowWinningSquadSequence" ) + + RegisterNetworkedVariable( "focalTrap", SNDC_PLAYER_EXCLUSIVE, SNVT_ENTITY ) + + RegisterNetworkedVariable( "gladCardPlayer", SNDC_PLAYER_EXCLUSIVE, SNVT_ENTITY ) + + Remote_RegisterClientFunction( "ServerCallback_DisplayWaitingForRespawn", "entity", "float", 0.0, 5000.0, 32, "float", 0.0, 5000.0, 32 ) + Remote_RegisterClientFunction( "ServerCallback_RespawnPodStarted", "float", 0.0, 5000.0, 32 ) + Remote_RegisterClientFunction( "ServerCallback_RespawnDNAHint" ) + + RegisterNetworkedVariable( "hasDataKnife", SNDC_PLAYER_GLOBAL, SNVT_BOOL, false ) + + RegisterNetworkedVariable( "isJumpmaster", SNDC_PLAYER_GLOBAL, SNVT_BOOL, false ) + RegisterNetworkedVariable( "isJumpingWithSquad", SNDC_PLAYER_GLOBAL, SNVT_BOOL, false ) + RegisterNetworkedVariable( "playerInPlane", SNDC_PLAYER_GLOBAL, SNVT_BOOL, false ) + RegisterNetworkedVariable( "freefallActive", SNDC_PLAYER_EXCLUSIVE, SNVT_BOOL, false ) + RegisterNetworkedVariable( "freefallEmoteAvailable", SNDC_PLAYER_EXCLUSIVE, SNVT_BOOL, false ) + RegisterNetworkedVariable( "freefallIsFromPlane", SNDC_PLAYER_EXCLUSIVE, SNVT_BOOL, false ) + + RegisterNetworkedVariable( "inventoryEnabled", SNDC_PLAYER_EXCLUSIVE, SNVT_BOOL, true ) + + RegisterNetworkedVariable( "pingEnabled", SNDC_PLAYER_EXCLUSIVE, SNVT_BOOL, true ) + + RegisterNetworkedVariable( "kills", SNDC_PLAYER_GLOBAL, SNVT_INT, 0 ) + + RegisterNetworkedVariable( "assists", SNDC_PLAYER_GLOBAL, SNVT_INT, 0 ) + + RegisterNetworkedVariable( "isHealing", SNDC_PLAYER_EXCLUSIVE, SNVT_BOOL, false ) + RegisterNetworkedVariable( "healingKitTypeCurrentlyBeingUsed", SNDC_PLAYER_GLOBAL, SNVT_INT, -1 ) + RegisterNetworkedVariable( "isReceivingFirstAid", SNDC_PLAYER_EXCLUSIVE, SNVT_BOOL, false ) + + int defaultHealOption = GetCurrentPlaylistVarBool( "auto_heal_option", false ) ? -1 : 0 + RegisterNetworkedVariable( "selectedHealthPickupType", SNDC_PLAYER_EXCLUSIVE, SNVT_INT, defaultHealOption ) + RegisterNetworkedVariable( "TrainingEndTime", SNDC_PLAYER_EXCLUSIVE, SNVT_TIME, -1 ) + RegisterNetworkedVariable( "usedSelfRevive", SNDC_PLAYER_EXCLUSIVE, SNVT_BOOL, false ) + + RegisterNetworkedVariable( "playerPrimaryWeapon0", SNDC_PLAYER_GLOBAL, SNVT_INT, -1 ) + RegisterNetworkedVariable( "playerPrimaryWeapon1", SNDC_PLAYER_GLOBAL, SNVT_INT, -1 ) + + Remote_RegisterClientFunction( "ServerCallback_MonitorCommsMenuUsage", "int", 0, 2 ) + Remote_RegisterClientFunction( "ServerCallback_SetCommsDialogueEnabled", "int", 0, 2 ) + + Inventory_RegisterNetworking() + PlayerMatchState_RegisterNetworking() + Waypoints_RegisterNetworking() + RespawnBeacons_RegisterNetworking() + + Gamemode_ShadowSquad_RegisterNetworking() + + MapZones_RegisterNetworking() + Ultimates_RegisterNetworking() + ClientMusic_RegisterNetworking() + + RegisterNetworkedVariable( "currentDeathFieldStage", SNDC_GLOBAL, SNVT_INT, -1 ) + RegisterNetworkedVariable( "nextCircleStartTime", SNDC_GLOBAL, SNVT_TIME, -1 ) + RegisterNetworkedVariable( "circleCloseTime", SNDC_GLOBAL, SNVT_TIME, -1 ) + RegisterNetworkedVariable( "PlaneDoorsOpenTime", SNDC_GLOBAL, SNVT_TIME, -1 ) + RegisterNetworkedVariable( "PlaneDoorsCloseTime", SNDC_GLOBAL, SNVT_TIME, -1 ) + RegisterNetworkedVariable( "connectedPlayerCount", SNDC_GLOBAL, SNVT_INT ) + RegisterNetworkedVariable( "livingPlayerCount", SNDC_GLOBAL, SNVT_INT ) + RegisterNetworkedVariable( "squadsRemainingCount", SNDC_GLOBAL, SNVT_INT ) + RegisterNetworkedVariable( "gameState", SNDC_GLOBAL, SNVT_INT, -1 ) + + RegisterNetworkedVariable( "skydiveFreelookActive", SNDC_PLAYER_EXCLUSIVE, SNVT_BOOL, false ) + RegisterNetworkedVariable( "skydiveFollowPlayer", SNDC_PLAYER_EXCLUSIVE, SNVT_ENTITY ) + + Remote_RegisterClientFunction( "ServerCallback_PlayerBootsOnGround" ) + Remote_RegisterClientFunction( "ServerCallback_RefreshDeathBoxHighlight" ) + Remote_RegisterClientFunction( "ServerCallback_RefreshLootbinHighlight" ) + + Remote_RegisterUIFunction( "ServerCallback_OpenSurvivalExitMenu", "bool" ) + Remote_RegisterUIFunction( "ServerToUI_CharacterLockRejected" ) + + Remote_RegisterUIFunction( "ServerCallback_GotBPFromPremier" ) + + Remote_RegisterClientFunction( "ServerCallback_RespawnBeaconStart", "float", 0.0, 5000.0, 16, "float", 0.0, 5000.0, 16 ) + Remote_RegisterClientFunction( "ServerCallback_RespawnBeaconStop" ) + Remote_RegisterClientFunction( "ServerCallback_RefreshInventory" ) + Remote_RegisterClientFunction( "ServerCallback_RefreshInventoryAndWeaponInfo" ) + Remote_RegisterClientFunction( "ServerCallback_SurvivalHint", "int", 0, 10 ) + Remote_RegisterClientFunction( "ServerCallback_ClearHints" ) + Remote_RegisterClientFunction( "ServerCallback_AnnounceCircleClosing" ) + Remote_RegisterClientFunction( "ServerCallback_SUR_PingMinimap", "vector", -1.0, 1.0, 32, "float", 0.0, 300.0, 8, "float", 1.0, 5000.0, 8, "float", 1.0, 5000.0, 8, "int", 0, 5 ) + Remote_RegisterClientFunction( "ServerCallback_Survival_PlayCrowdEvent", "vector", -32000.0, 32000.0, 32, "int", 0, 128) + Remote_RegisterClientFunction( "ServerCallback_Survival_NewKillLeader", "entity", "int", 0, 999 ) + Remote_RegisterClientFunction( "ServerCallback_Survival_HighlightedPlayerKilled", "entity", "entity", "int", 0, 16) + Remote_RegisterClientFunction( "ServerCallback_Survival_PathfinderSurveyNotifications", "entity", "int", 0, 8 ) + Remote_RegisterClientFunction( "ServerCallback_Survival_CreateBeaconWorldIcon", "entity", "entity" ) - // CTF: Server to UI - Remote_RegisterUIFunction( "CloseCTFRespawnMenu" ) - // END CTF - case CUSTOM_TDM: - case MENUFALL: - case SURVIVAL: - RegisterNetworkedVariable( "isPlayerShadowForm", SNDC_PLAYER_GLOBAL, SNVT_BOOL, false ) - RegisterNetworkedVariable( "hasDeathFieldImmunity", SNDC_PLAYER_EXCLUSIVE, SNVT_BOOL, false ) - RegisterNetworkedVariable( "displayMapzoneText", SNDC_GLOBAL, SNVT_BOOL, true ) - - RegisterNetworkedVariable( "pickLoadoutGamestateStartTime", SNDC_GLOBAL, SNVT_TIME, -1 ) - RegisterNetworkedVariable( "pickLoadoutGamestateEndTime", SNDC_GLOBAL, SNVT_TIME, -1 ) - RegisterNetworkedVariable( "hasLockedInCharacter", SNDC_PLAYER_GLOBAL, SNVT_BOOL, false ) - RegisterNetworkedVariable( "characterSelectLockstepPlayerIndex", SNDC_PLAYER_GLOBAL, SNVT_INT, -1 ) - RegisterNetworkedVariable( "characterSelectFocusIndex", SNDC_PLAYER_GLOBAL, SNVT_BIG_INT, -1 ) - RegisterNetworkedVariable( "characterSelectionReady", SNDC_GLOBAL, SNVT_BOOL, false ) - RegisterNetworkedVariable( "characterSelectLockstepIndex", SNDC_GLOBAL, SNVT_INT, -1 ) - RegisterNetworkedVariable( "characterSelectLockstepStartTime", SNDC_GLOBAL, SNVT_TIME, -1 ) - RegisterNetworkedVariable( "characterSelectLockstepEndTime", SNDC_GLOBAL, SNVT_TIME, -1 ) - RegisterNetworkedVariable( "characterSelectPicksEndTime", SNDC_GLOBAL, SNVT_TIME, -1 ) - RegisterNetworkedVariable( "squadPresentationStartTime", SNDC_GLOBAL, SNVT_TIME, -1 ) - RegisterNetworkedVariable( "championSquadPresentationStartTime", SNDC_GLOBAL, SNVT_TIME, -1 ) - Remote_RegisterClientFunction( "ServerCallback_CharacterLockRejected" ) - - RegisterNetworkedVariable( "championEEH", SNDC_GLOBAL, SNVT_BIG_INT, EncodedEHandle_null ) - RegisterNetworkedVariable( "championSquad1EEH", SNDC_GLOBAL, SNVT_BIG_INT, EncodedEHandle_null ) - RegisterNetworkedVariable( "championSquad2EEH", SNDC_GLOBAL, SNVT_BIG_INT, EncodedEHandle_null ) - - RegisterNetworkedVariable( "ultimateCredits", SNDC_PLAYER_GLOBAL, SNVT_UNSIGNED_INT, 0 ) - Remote_RegisterClientFunction( "ServerCallback_Mirage_DecoysDeployed", "bool" ) - Remote_RegisterClientFunction( "ServerCallback_MatchEndAnnouncement", "bool", "int", INT_MIN, INT_MAX ) - - Remote_RegisterClientFunction( "ServerCallback_SquadEliminated", "int", TEAM_INVALID, 126 ) - Remote_RegisterClientFunction( "ServerCallback_ShowDeathScreen" ) - Remote_RegisterClientFunction( "ServerCallback_DeathScreenSwitchTab" ) - - // - Remote_RegisterClientFunction( "ServerCallback_SendDeathRecapData", "int", -1, INT_MAX, "int", -1, INT_MAX, "int", -1, INT_MAX, "int", INT_MIN, INT_MAX, "int", -1, INT_MAX, "int", 0, INT_MAX, "int", 0, INT_MAX, "float", 0.0, 1.0, 32, "float", 0.0, 1.0, 32, "float", 0.0, 86400.0, 32 ) - Remote_RegisterClientFunction( "ServerCallback_DeathRecapDataUpdated", "bool", "int", -1, INT_MAX ) - - Remote_RegisterClientFunction( "ServerCallback_AddWinningSquadData", "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX ) - Remote_RegisterClientFunction( "ServerCallback_ShowWinningSquadSequence" ) - - RegisterNetworkedVariable( "focalTrap", SNDC_PLAYER_EXCLUSIVE, SNVT_ENTITY ) - - RegisterNetworkedVariable( "gladCardPlayer", SNDC_PLAYER_EXCLUSIVE, SNVT_ENTITY ) - - Remote_RegisterClientFunction( "ServerCallback_DisplayWaitingForRespawn", "entity", "float", 0.0, 5000.0, 32, "float", 0.0, 5000.0, 32 ) - Remote_RegisterClientFunction( "ServerCallback_RespawnPodStarted", "float", 0.0, 5000.0, 32 ) - Remote_RegisterClientFunction( "ServerCallback_RespawnDNAHint" ) - - RegisterNetworkedVariable( "hasDataKnife", SNDC_PLAYER_GLOBAL, SNVT_BOOL, false ) - - RegisterNetworkedVariable( "isJumpmaster", SNDC_PLAYER_GLOBAL, SNVT_BOOL, false ) - RegisterNetworkedVariable( "isJumpingWithSquad", SNDC_PLAYER_GLOBAL, SNVT_BOOL, false ) - RegisterNetworkedVariable( "playerInPlane", SNDC_PLAYER_GLOBAL, SNVT_BOOL, false ) - RegisterNetworkedVariable( "freefallActive", SNDC_PLAYER_EXCLUSIVE, SNVT_BOOL, false ) - RegisterNetworkedVariable( "freefallEmoteAvailable", SNDC_PLAYER_EXCLUSIVE, SNVT_BOOL, false ) - RegisterNetworkedVariable( "freefallIsFromPlane", SNDC_PLAYER_EXCLUSIVE, SNVT_BOOL, false ) - - RegisterNetworkedVariable( "inventoryEnabled", SNDC_PLAYER_EXCLUSIVE, SNVT_BOOL, true ) - - RegisterNetworkedVariable( "pingEnabled", SNDC_PLAYER_EXCLUSIVE, SNVT_BOOL, true ) - - RegisterNetworkedVariable( "kills", SNDC_PLAYER_GLOBAL, SNVT_INT, 0 ) - - RegisterNetworkedVariable( "assists", SNDC_PLAYER_GLOBAL, SNVT_INT, 0 ) - - RegisterNetworkedVariable( "isHealing", SNDC_PLAYER_EXCLUSIVE, SNVT_BOOL, false ) - RegisterNetworkedVariable( "healingKitTypeCurrentlyBeingUsed", SNDC_PLAYER_GLOBAL, SNVT_INT, -1 ) - RegisterNetworkedVariable( "isReceivingFirstAid", SNDC_PLAYER_EXCLUSIVE, SNVT_BOOL, false ) - - int defaultHealOption = GetCurrentPlaylistVarBool( "auto_heal_option", false ) ? -1 : 0 - RegisterNetworkedVariable( "selectedHealthPickupType", SNDC_PLAYER_EXCLUSIVE, SNVT_INT, defaultHealOption ) - RegisterNetworkedVariable( "TrainingEndTime", SNDC_PLAYER_EXCLUSIVE, SNVT_TIME, -1 ) - RegisterNetworkedVariable( "usedSelfRevive", SNDC_PLAYER_EXCLUSIVE, SNVT_BOOL, false ) - - RegisterNetworkedVariable( "playerPrimaryWeapon0", SNDC_PLAYER_GLOBAL, SNVT_INT, -1 ) - RegisterNetworkedVariable( "playerPrimaryWeapon1", SNDC_PLAYER_GLOBAL, SNVT_INT, -1 ) - - Remote_RegisterClientFunction( "ServerCallback_MonitorCommsMenuUsage", "int", 0, 2 ) - Remote_RegisterClientFunction( "ServerCallback_SetCommsDialogueEnabled", "int", 0, 2 ) - - Inventory_RegisterNetworking() - PlayerMatchState_RegisterNetworking() - Waypoints_RegisterNetworking() - RespawnBeacons_RegisterNetworking() - - Gamemode_ShadowSquad_RegisterNetworking() - - MapZones_RegisterNetworking() - Ultimates_RegisterNetworking() - ClientMusic_RegisterNetworking() - - RegisterNetworkedVariable( "currentDeathFieldStage", SNDC_GLOBAL, SNVT_INT, -1 ) - RegisterNetworkedVariable( "nextCircleStartTime", SNDC_GLOBAL, SNVT_TIME, -1 ) - RegisterNetworkedVariable( "circleCloseTime", SNDC_GLOBAL, SNVT_TIME, -1 ) - RegisterNetworkedVariable( "PlaneDoorsOpenTime", SNDC_GLOBAL, SNVT_TIME, -1 ) - RegisterNetworkedVariable( "PlaneDoorsCloseTime", SNDC_GLOBAL, SNVT_TIME, -1 ) - RegisterNetworkedVariable( "connectedPlayerCount", SNDC_GLOBAL, SNVT_INT ) - RegisterNetworkedVariable( "livingPlayerCount", SNDC_GLOBAL, SNVT_INT ) - RegisterNetworkedVariable( "squadsRemainingCount", SNDC_GLOBAL, SNVT_INT ) - RegisterNetworkedVariable( "gameState", SNDC_GLOBAL, SNVT_INT, -1 ) - - RegisterNetworkedVariable( "skydiveFreelookActive", SNDC_PLAYER_EXCLUSIVE, SNVT_BOOL, false ) - RegisterNetworkedVariable( "skydiveFollowPlayer", SNDC_PLAYER_EXCLUSIVE, SNVT_ENTITY ) - - Remote_RegisterClientFunction( "ServerCallback_PlayerBootsOnGround" ) - Remote_RegisterClientFunction( "ServerCallback_RefreshDeathBoxHighlight" ) - Remote_RegisterClientFunction( "ServerCallback_RefreshLootbinHighlight" ) - - Remote_RegisterUIFunction( "ServerCallback_OpenSurvivalExitMenu", "bool" ) - Remote_RegisterUIFunction( "ServerToUI_CharacterLockRejected" ) - - Remote_RegisterUIFunction( "ServerCallback_GotBPFromPremier" ) - - Remote_RegisterClientFunction( "ServerCallback_RespawnBeaconStart", "float", 0.0, 5000.0, 16, "float", 0.0, 5000.0, 16 ) - Remote_RegisterClientFunction( "ServerCallback_RespawnBeaconStop" ) - Remote_RegisterClientFunction( "ServerCallback_RefreshInventory" ) - Remote_RegisterClientFunction( "ServerCallback_RefreshInventoryAndWeaponInfo" ) - Remote_RegisterClientFunction( "ServerCallback_SurvivalHint", "int", 0, 10 ) - Remote_RegisterClientFunction( "ServerCallback_ClearHints" ) - Remote_RegisterClientFunction( "ServerCallback_AnnounceCircleClosing" ) - Remote_RegisterClientFunction( "ServerCallback_SUR_PingMinimap", "vector", -1.0, 1.0, 32, "float", 0.0, 300.0, 8, "float", 1.0, 5000.0, 8, "float", 1.0, 5000.0, 8, "int", 0, 5 ) - Remote_RegisterClientFunction( "ServerCallback_Survival_PlayCrowdEvent", "vector", -32000.0, 32000.0, 32, "int", 0, 128) - Remote_RegisterClientFunction( "ServerCallback_Survival_NewKillLeader", "entity", "int", 0, 999 ) - Remote_RegisterClientFunction( "ServerCallback_Survival_HighlightedPlayerKilled", "entity", "entity", "int", 0, 16) - Remote_RegisterClientFunction( "ServerCallback_Survival_PathfinderSurveyNotifications", "entity", "int", 0, 8 ) - Remote_RegisterClientFunction( "ServerCallback_Survival_CreateBeaconWorldIcon", "entity", "entity" ) - - Remote_RegisterClientFunction( "ServerToClient_OnStartedUsingHealthPack", "int", 0, 127 ) - Remote_RegisterClientFunction( "ServerCallback_PromptSayThanks", "entity" ) - Remote_RegisterClientFunction( "ServerCallback_PromptWelcome" ) + Remote_RegisterClientFunction( "ServerToClient_OnStartedUsingHealthPack", "int", 0, 127 ) + Remote_RegisterClientFunction( "ServerCallback_PromptSayThanks", "entity" ) + Remote_RegisterClientFunction( "ServerCallback_PromptWelcome" ) - Remote_RegisterClientFunction( "PROTO_ServerCallback_Sur_HoldForUltimate" ) + Remote_RegisterClientFunction( "PROTO_ServerCallback_Sur_HoldForUltimate" ) - RegisterNetworkedVariable( "playerObservedCount", SNDC_PLAYER_EXCLUSIVE, SNVT_INT, 0 ) + RegisterNetworkedVariable( "playerObservedCount", SNDC_PLAYER_GLOBAL, SNVT_INT, 0 ) - // RANKED & APEX ELITE - RegisterNetworkedVariable( "currentEliteStreak", SNDC_PLAYER_GLOBAL, SNVT_INT, -1 ) - Remote_RegisterClientFunction( "ServerCallback_UpdateEliteBadge", "int", INT_MIN, INT_MAX, "bool" ) + // RANKED & APEX ELITE + RegisterNetworkedVariable( "currentEliteStreak", SNDC_PLAYER_GLOBAL, SNVT_INT, -1 ) + Remote_RegisterClientFunction( "ServerCallback_UpdateEliteBadge", "int", INT_MIN, INT_MAX, "bool" ) - RegisterNetworkedVariable( "currentRankedScore", SNDC_PLAYER_GLOBAL, SNVT_BIG_INT, -1 ) - RegisterNetworkedVariable( "currentRankedLadderPosition", SNDC_PLAYER_GLOBAL, SNVT_BIG_INT, -1 ) - RegisterNetworkedVariable( "inMatchRankScoreProgress", SNDC_PLAYER_EXCLUSIVE, SNVT_INT, -1 ) - RegisterNetworkedVariable( "rankedKillAssistMultiplier", SNDC_PLAYER_EXCLUSIVE, SNVT_INT, 10 ) + RegisterNetworkedVariable( "currentRankedScore", SNDC_PLAYER_GLOBAL, SNVT_BIG_INT, -1 ) + RegisterNetworkedVariable( "currentRankedLadderPosition", SNDC_PLAYER_GLOBAL, SNVT_BIG_INT, -1 ) + RegisterNetworkedVariable( "inMatchRankScoreProgress", SNDC_PLAYER_EXCLUSIVE, SNVT_INT, -1 ) + RegisterNetworkedVariable( "rankedKillAssistMultiplier", SNDC_PLAYER_EXCLUSIVE, SNVT_INT, 10 ) -#if CLIENT - ShRanked_RegisterNetworkFunctions() -#endif + #if CLIENT + ShRanked_RegisterNetworkFunctions() + #endif -#if CLIENT - CLSurvival_RegisterNetworkFunctions() - - ShEliteStreak_RegisterNetworkFunctions() - - RegisterNetworkedVariableChangeCallback_bool( "playerInPlane", PlayerPlaneStatusChanged ) - RegisterNetworkedVariableChangeCallback_bool( "isJumpmaster", JumpmasterStatusChanged ) - RegisterNetworkedVariableChangeCallback_bool( "isJumpingWithSquad", PlayerPlaneStatusChanged ) - RegisterNetworkedVariableChangeCallback_bool( "freefallActive", PlayerFreefallActiveChanged ) - RegisterNetworkedVariableChangeCallback_bool( "freefallEmoteAvailable", PlayerFreefallEmoteAvailableChanged ) - RegisterNetworkedVariableChangeCallback_bool( "skydiveFreelookActive", SkydiveFreelookActiveChanged ) - RegisterNetworkedVariableChangeCallback_ent( "skydiveFollowPlayer", SkydiveFollowPlayerChanged ) - RegisterNetworkedVariableChangeCallback_int( "healingKitTypeCurrentlyBeingUsed", OnInUseHealingKitTypeChanged ) - RegisterNetworkedVariableChangeCallback_int( "selectedHealthPickupType", OnHealthPickupTypeChanged ) - - RegisterNetworkedVariableChangeCallback_int( "playerPrimaryWeapon0", OnPlayerEquippedWeaponChanged ) - RegisterNetworkedVariableChangeCallback_int( "playerPrimaryWeapon1", OnPlayerEquippedWeaponChanged ) -#endif - break - } + #if CLIENT + CLSurvival_RegisterNetworkFunctions() + ShEliteStreak_RegisterNetworkFunctions() + RegisterNetworkedVariableChangeCallback_bool( "playerInPlane", PlayerPlaneStatusChanged ) + RegisterNetworkedVariableChangeCallback_bool( "isJumpmaster", JumpmasterStatusChanged ) + RegisterNetworkedVariableChangeCallback_bool( "isJumpingWithSquad", PlayerPlaneStatusChanged ) + RegisterNetworkedVariableChangeCallback_bool( "freefallActive", PlayerFreefallActiveChanged ) + RegisterNetworkedVariableChangeCallback_bool( "freefallEmoteAvailable", PlayerFreefallEmoteAvailableChanged ) + RegisterNetworkedVariableChangeCallback_bool( "skydiveFreelookActive", SkydiveFreelookActiveChanged ) + RegisterNetworkedVariableChangeCallback_ent( "skydiveFollowPlayer", SkydiveFollowPlayerChanged ) + RegisterNetworkedVariableChangeCallback_int( "healingKitTypeCurrentlyBeingUsed", OnInUseHealingKitTypeChanged ) + RegisterNetworkedVariableChangeCallback_int( "selectedHealthPickupType", OnHealthPickupTypeChanged ) + RegisterNetworkedVariableChangeCallback_int( "playerPrimaryWeapon0", OnPlayerEquippedWeaponChanged ) + RegisterNetworkedVariableChangeCallback_int( "playerPrimaryWeapon1", OnPlayerEquippedWeaponChanged ) + #endif Remote_RegisterClientFunction( "ServerCallback_NessyMessage", "int", 0, 50 ) - Remote_RegisterClientFunction( "ServerCallback_PlayPassiveVoice", "int", 0, 50 ) - // Remote_RegisterUntypedFunction_deprecated( "ServerCallback_ResetEntSkyScale" ) Remote_RegisterUntypedFunction_deprecated( "ServerCallback_SetEntSkyScale" ) Remote_RegisterClientFunction( "ServerCallback_ResetMapSettings" ) @@ -401,28 +493,22 @@ void function RemoteFunctions_Init_Begin() Remote_RegisterUIFunction( "SCBUI_PlayerConnectedOrDisconnected", "bool" ) Remote_RegisterClientFunction( "ServerCallback_PlayerChangedTeams", "entity", "int", TEAM_INVALID, 126, "int", TEAM_INVALID, 126 ) // - // Remote_RegisterUntypedFunction_deprecated( "ServerCallback_PlayerTookDamage" ) // Remote_RegisterUntypedFunction_deprecated( "ServerCallback_ScreenShake" ) Remote_RegisterUntypedFunction_deprecated( "ServerCallback_UpdateOverheadIconForNPC" ) - // Remote_RegisterClientFunction( "HandleBroadcastCommsAction", "entity", "int", 0, eCommsAction._count, "entity", "vector", -32000.0, 32000.0, 32, "int", 0, (1 << eCommsFlags._flagCount) ) - // Remote_RegisterClientFunction( "PerformQuip", "entity", "int", 0, INT_MAX ) - // Remote_RegisterClientFunction( "Bleedout_DisplayTrainingFirstAidProgressBar", "entity", "float", 0.0, 86400.0, 32, "float", 0.0, 86400.0, 32 ) Remote_RegisterClientFunction( "Bleedout_StopTrainingFirstAidProgressBar" ) - // RegisterNetworkedVariable( "offerRodeoBatteryLastUsedTime", SNDC_PLAYER_EXCLUSIVE, SNVT_TIME ) RegisterNetworkedVariable( "requestRodeoBatteryLastUsedTime", SNDC_PLAYER_EXCLUSIVE, SNVT_TIME ) RegisterEntityVar( "player", "permanentEventNotification", -1 ) - // Remote_RegisterUntypedFunction_deprecated( "ServerCallback_IncomingAirdrop" ) Remote_RegisterClientFunction( "ServerCallback_CreateAirdropBadPlace", "int", INT_MIN, INT_MAX, "vector", -32000.0, 32000.0, 32, "int", INT_MIN, INT_MAX, "entity" ) Remote_RegisterClientFunction( "ServerCallback_DestroyAirdropBadPlace", "int", INT_MIN, INT_MAX ) @@ -457,63 +543,41 @@ void function RemoteFunctions_Init_Begin() Remote_RegisterUntypedFunction_deprecated( "ServerCallback_MVUpdateModelBounds" ) Remote_RegisterClientFunction_Optional( "ServerCallback_MVEnable" ) Remote_RegisterClientFunction_Optional( "ServerCallback_MVDisable" ) - - // Remote_RegisterUntypedFunction_deprecated( "ServerCallback_SetClassicSkyScale" ) Remote_RegisterUntypedFunction_deprecated( "ServerCallback_ResetClassicSkyScale" ) - - // Remote_RegisterClientFunction( "ServerCallback_ClientInitComplete" ) RegisterServerVar( "forcedDialogueOnly", false ) - - // Remote_RegisterUntypedFunction_deprecated( "ServerCallback_SetEntityVar" ) Remote_RegisterUntypedFunction_deprecated( "ServerCallback_SetServerVar" ) - - - // Remote_RegisterUntypedFunction_deprecated( "ServerCallback_PlayMusic" ) - - // Remote_RegisterUntypedFunction_deprecated( "ServerCallback_OpenDevMenu" ) - Remote_RegisterUntypedFunction_deprecated( "ServerCallback_SetUIVar" ) Remote_RegisterUIFunction( "ServerCallback_OpenPilotLoadoutMenu" ) - - // Remote_RegisterUntypedFunction_deprecated( "Dev_PrintClientMessage" ) Remote_RegisterUntypedFunction_deprecated( "Dev_BuildClientMessage" ) - - // Remote_RegisterUntypedFunction_deprecated( "ServerCallback_AddArcConnectorToy" ) Dialog_RegisterNetworking() - // RegisterNetworkedVariable( "PilotAbilitySelectMenu_Enabled", SNDC_GLOBAL, SNVT_INT, 1 ) - Remote_RegisterUntypedFunction_deprecated( "SCB_SetDoubleXPStatus" ) - Remote_RegisterUIFunction( "SurvivalMenu_AckAction" ) - RegisterServerVar( "respawnAvailableBits0", 0 ) // - RegisterServerVar( "respawnAvailableBits1", 0 ) // - RegisterServerVar( "respawnAvailableBits2", 0 ) // - RegisterServerVar( "respawnAvailableBits3", 0 ) // + RegisterServerVar( "respawnAvailableBits0", 0 ) + RegisterServerVar( "respawnAvailableBits1", 0 ) + RegisterServerVar( "respawnAvailableBits2", 0 ) + RegisterServerVar( "respawnAvailableBits3", 0 ) RegisterNetworkedVariable( "bleedoutEndTime", SNDC_PLAYER_GLOBAL, SNVT_TIME, 0.0 ) RegisterNetworkedVariable( "bleedoutType", SNDC_PLAYER_GLOBAL, SNVT_UNSIGNED_INT, 0 ) RegisterNetworkedVariable( "reviveEndTime", SNDC_PLAYER_GLOBAL, SNVT_TIME, 0.0 ) RegisterNetworkedVariable( "reviveType", SNDC_PLAYER_GLOBAL, SNVT_UNSIGNED_INT, 0 ) - RegisterNetworkedVariable( "revivePlayerHealer", SNDC_PLAYER_GLOBAL, SNVT_ENTITY ) - RegisterNetworkedVariable( "xpMultiplier", SNDC_PLAYER_EXCLUSIVE, SNVT_INT, 0 ) RegisterNetworkedVariable( "tutorialContext", SNDC_PLAYER_EXCLUSIVE, SNVT_INT, -1 ) RegisterNetworkedVariable( "spectatorTargetCount", SNDC_PLAYER_GLOBAL, SNVT_INT, 0 ) - + Remote_RegisterClientFunction( "ServerCallback_RingPulseMinimap", "vector", -64000.0, 64000.0, 8, "float", 0.0, 5000.0, 8, "float", 0.0, 500.0, 8, "int", 0, 255, "vector", 0.0, 255.0, 8, "bool" ) - Remote_RegisterClientFunction( "ServerCallback_ActionCountUpdated", "int", INT_MIN, INT_MAX, "int", INT_MIN, INT_MAX ) // Text Info Panels @@ -523,11 +587,8 @@ void function RemoteFunctions_Init_Begin() Remote_RegisterUntypedFunction_deprecated( "Dev_DestroyTextInfoPanelWithID" ) Remote_RegisterClientFunction( "ServerToClient_ScreenCoverTransition", "float", 0.0, 5000.0, 32 ) - - // Remote_RegisterClientFunction( "ServerCallback_WatchForSyncedMeleeCancelPeriod", "float", 0.0, 10.0 ) Remote_RegisterClientFunction( "ServerCallback_SyncedMeleeDone" ) - Remote_RegisterClientFunction( "ServerCallback_SetWeaponPreviewState", "bool" ) if ( IsLobby()) diff --git a/vscripts/client/cl_gamestate.gnut b/vscripts/client/cl_gamestate.gnut index 65963b885..2d5a25299 100644 --- a/vscripts/client/cl_gamestate.gnut +++ b/vscripts/client/cl_gamestate.gnut @@ -158,8 +158,8 @@ void function SetCommonScoreRUIVars( var rui ) if ( IsSoloMode() ) { RuiSetBool( rui, "shouldDisplayLivingPlayerCount", false ) - RuiSetString( rui, "squadsRemainingTextSingular", GameRules_GetGameMode() == "flowstate_dm" ? "PLAYERS ONLINE" : "#SURVIVAL_PLAYERS_REMAIN" ) - RuiSetString( rui, "squadsRemainingTextPlural", GameRules_GetGameMode() == "flowstate_dm" ? "PLAYERS ONLINE" : "#SURVIVAL_PLAYERS_REMAIN" ) + RuiSetString( rui, "squadsRemainingTextSingular", GameRules_GetGameMode() == "fs_dm" ? "PLAYERS ONLINE" : "#SURVIVAL_PLAYERS_REMAIN" ) + RuiSetString( rui, "squadsRemainingTextPlural", GameRules_GetGameMode() == "fs_dm" ? "PLAYERS ONLINE" : "#SURVIVAL_PLAYERS_REMAIN" ) } else if(GetCurrentPlaylistVarBool( "dummies_horde_enabled", false )){ RuiSetBool( rui, "shouldDisplayLivingPlayerCount", false ) diff --git a/vscripts/client/cl_scoreboard_mp.nut b/vscripts/client/cl_scoreboard_mp.nut index e5cbc0f07..e503e6640 100644 --- a/vscripts/client/cl_scoreboard_mp.nut +++ b/vscripts/client/cl_scoreboard_mp.nut @@ -310,7 +310,7 @@ void function ScoreboardFadeOut() void function ShowScoreboardMP() { - if(GameRules_GetGameMode() == SURVIVAL || GameRules_GetGameMode() == "custom_aimtrainer" ) return + if(GameRules_GetGameMode() == SURVIVAL || GameRules_GetGameMode() == fs_aimtrainer ) return printf("[SB] %s - %s\n", FUNC_NAME(), GameRules_GetGameMode()) diff --git a/vscripts/client/cl_utility.gnut b/vscripts/client/cl_utility.gnut index 3218e3cd3..9ae2d59ec 100644 --- a/vscripts/client/cl_utility.gnut +++ b/vscripts/client/cl_utility.gnut @@ -655,7 +655,7 @@ void function Dev_PrintClientMessage( float duration ) Announcement_SetDuration( announcement, duration ) Announcement_SetPurge( announcement, true ) - if( GetCurrentPlaylistName() == "flowstate_dm" || GetCurrentPlaylistName() == "custom_surf" ) + if( GetCurrentPlaylistName() == "fs_dm" || GetCurrentPlaylistName() == "custom_surf" ) { Announcement_SetStyle(announcement, ANNOUNCEMENT_STYLE_CIRCLE_WARNING) Announcement_SetTitleColor( announcement, Vector(0,0,0) ) diff --git a/vscripts/conversation/_survival_commentary.gnut b/vscripts/conversation/_survival_commentary.gnut index 11efa8415..6e03a5a82 100644 --- a/vscripts/conversation/_survival_commentary.gnut +++ b/vscripts/conversation/_survival_commentary.gnut @@ -81,7 +81,7 @@ entity function GetChampion() int function GetMinKillsForKillLeader() { int minKill = GetCurrentPlaylistVarInt( "survival_commentary_kill_leader_min_kills", 0 ) - if( GameRules_GetGameMode() == "flowstate_dm" ) + if( GameRules_GetGameMode() == "fs_dm" ) minKill = 2 else if( minKill < 1 ) minKill = KILL_LEADER_MIN_KILL_REQUIREMENT // From sh_survival_commentary.gnut diff --git a/vscripts/gamemodes/fs_aimtrainer/_gamemode_aimtrainer.nut b/vscripts/gamemodes/fs_aimtrainer/_gamemode_aimtrainer.nut index f09dcf06b..888fb3aa2 100644 --- a/vscripts/gamemodes/fs_aimtrainer/_gamemode_aimtrainer.nut +++ b/vscripts/gamemodes/fs_aimtrainer/_gamemode_aimtrainer.nut @@ -2805,13 +2805,13 @@ bool function CC_MenuGiveAimTrainerWeapon( entity player, array args ) string weapon = args[0] - if(GameRules_GetGameMode() != "custom_aimtrainer" && GetWhiteListedWeapons().len() && GetWhiteListedWeapons().find(weapon) != -1) + if(GameRules_GetGameMode() != fs_aimtrainer && GetWhiteListedWeapons().len() && GetWhiteListedWeapons().find(weapon) != -1) { Message(player, "WEAPON WHITELISTED") return false } - if(GameRules_GetGameMode() != "custom_aimtrainer" && GetWhiteListedAbilities().len() && GetWhiteListedAbilities().find(weapon) != -1 ) + if(GameRules_GetGameMode() != fs_aimtrainer && GetWhiteListedAbilities().len() && GetWhiteListedAbilities().find(weapon) != -1 ) { Message(player, "ABILITY WHITELISTED") return false @@ -2968,7 +2968,7 @@ bool function CC_MenuGiveAimTrainerWeapon( entity player, array args ) weaponlist[ player.GetPlayerName() ] <- weaponname1 + weaponname2 } - if(GameRules_GetGameMode() == "custom_aimtrainer") + if(GameRules_GetGameMode() == fs_aimtrainer) thread PlayAnimsOnGiveWeapon(weaponent, player) int weaponSkin = -1 diff --git a/vscripts/gamemodes/fs_tdm/_gamemode_fsdm.nut b/vscripts/gamemodes/fs_tdm/_gamemode_fsdm.nut index d0c12198d..d66b58fb1 100644 --- a/vscripts/gamemodes/fs_tdm/_gamemode_fsdm.nut +++ b/vscripts/gamemodes/fs_tdm/_gamemode_fsdm.nut @@ -612,7 +612,7 @@ void function __HighPingCheck(entity player) Warning("[Flowstate] -> Kicking " + player.GetPlayerName() + " -> [High Ping!]") ClientCommand( player, "disconnect" ) UpdatePlayerCounts() - } else if(GameRules_GetGameMode() == "flowstate_dm"){ + } else if(GameRules_GetGameMode() == "fs_dm"){ Message(player, "FLOWSTATE", "Your latency: " + (int(player.GetLatency()* 1000) - 40) + " ms." , 5) } diff --git a/vscripts/gamemodes/fs_tdm/cl_gamemode_fsdm.nut b/vscripts/gamemodes/fs_tdm/cl_gamemode_fsdm.nut index 73607808c..52fdf3e73 100644 --- a/vscripts/gamemodes/fs_tdm/cl_gamemode_fsdm.nut +++ b/vscripts/gamemodes/fs_tdm/cl_gamemode_fsdm.nut @@ -1,31 +1,71 @@ global function Cl_CustomTDM_Init - -global function ServerCallback_TDM_DoAnnouncement -global function ServerCallback_TDM_SetSelectedLocation -global function ServerCallback_TDM_DoLocationIntroCutscene -global function ServerCallback_TDM_PlayerKilled -global function TDM_OnPlayerKilled global function Cl_RegisterLocation +global function OpenTDMWeaponSelectorUI +global function ServerCallback_SendScoreboardToClient +global function ServerCallback_SendProphuntPropsScoreboardToClient +global function ServerCallback_SendProphuntHuntersScoreboardToClient +global function ServerCallback_ClearScoreboardOnClient +global function NotifyRingTimer + +//Statistics +global function ServerCallback_OpenStatisticsUI + +// Voting +global function ServerCallback_FSDM_OpenVotingPhase +global function ServerCallback_FSDM_ChampionScreenHandle +global function ServerCallback_FSDM_UpdateVotingMaps +global function ServerCallback_FSDM_UpdateMapVotesClient +global function ServerCallback_FSDM_SetScreen +global function ServerCallback_FSDM_CoolCamera +global function PROPHUNT_AddWinningSquadData_PropTeamAddModelIndex +global function DM_HintCatalog +global function FSDM_CloseVotingPhase + +//Ui callbacks +global function UI_To_Client_VoteForMap_FSDM const string CIRCLE_CLOSING_IN_SOUND = "UI_InGame_RingMoveWarning" //"survival_circle_close_alarm_01" -bool isFuncRegister = false struct { - LocationSettings &selectedLocation - array choices array locationSettings - var scoreRui -} file; + int teamwon + vector victorySequencePosition = < 0, 0, 10000 > + vector victorySequenceAngles = < 0, 0, 0 > + SquadSummaryData winnerSquadSummaryData + bool forceShowSelectedLocation = false + var activeQuickHint +} file +struct VictoryCameraPackage +{ + vector camera_offset_start + vector camera_offset_end + vector camera_focus_offset + float camera_fov +} + +bool hasvoted = false +bool isvoting = false +bool roundover = false +array overHeadRuis +array cleanupEnts void function Cl_CustomTDM_Init() { - AddOnDeathCallback( "player", TDM_OnPlayerKilled ) AddCallback_EntitiesDidLoad( NotifyRingTimer ) RegisterButtonPressedCallback(KEY_ENTER, ClientReportChat) + PrecacheParticleSystem($"P_wpn_lasercannon_aim_short_blue") + + RegisterSignal("ChallengeStartRemoveCameras") + RegisterSignal("ChangeCameraToSelectedLocation") +} + +void function Cl_RegisterLocation(LocationSettings locationSettings) +{ + file.locationSettings.append(locationSettings) } void function ClientReportChat(var button) @@ -36,6 +76,225 @@ void function ClientReportChat(var button) GetLocalClientPlayer().ClientCommand(text) } +void function ServerCallback_FSDM_CoolCamera() +{ + thread CoolCamera() +} + +LocPair function NewCameraPair(vector origin, vector angles) +{ + LocPair locPair + locPair.origin = origin + locPair.angles = angles + + return locPair +} + +void function CoolCamera() +//based on sal's tdm +{ + entity player = GetLocalClientPlayer() + player.EndSignal("ChangeCameraToSelectedLocation") + array cutsceneSpawns + + if(!IsValid(player)) return + + switch(GetMapName()) + { + case "mp_rr_desertlands_64k_x_64k": + case "mp_rr_desertlands_64k_x_64k_nx": + case "mp_rr_desertlands_64k_x_64k_tt": + cutsceneSpawns.append(NewCameraPair(<10915.0039, 6811.3418, -3539.73657>,<0, -100.5355, 0>)) + cutsceneSpawns.append(NewCameraPair(<9586.79199, 24404.5898, -2019.6366>, <0, -52.6216431, 0>)) + cutsceneSpawns.append(NewCameraPair(<-29335.9199, 11470.1729, -2374.77954>,<0, -2.17369795, 0>)) + cutsceneSpawns.append(NewCameraPair(<16346.3076, -34468.9492, -1109.32153>, <0, -44.3879509, 0>)) + cutsceneSpawns.append(NewCameraPair(<1133.25562, -20102.9648, -2488.08252>, <0, -24.9140873, 0>)) + cutsceneSpawns.append(NewCameraPair(<4225.83447, 3396.84448, -3090.29712>,<0, 38.1615944, 0>)) + cutsceneSpawns.append(NewCameraPair(<-9873.3916, 5598.64307, -2453.47461>,<0, -107.887512, 0>)) + cutsceneSpawns.append(NewCameraPair(<-28200.6348, 2603.86792, -3899.62598>,<0, -94.3539505, 0>)) + cutsceneSpawns.append(NewCameraPair(<-13217.0469, 24311.4375, -3157.30908>,<0, 97.8569489, 0>)) + break + + case "mp_rr_canyonlands_staging": + cutsceneSpawns.append(NewCameraPair(<32645.04,-9575.77,-25911.94>, <7.71,91.67,0.00>)) + cutsceneSpawns.append(NewCameraPair(<49180.1055, -6836.14502, -23461.8379>, <0, -55.7723808, 0>)) + cutsceneSpawns.append(NewCameraPair(<43552.3203, -1023.86182, -25270.9766>, <0, 20.9528542, 0>)) + cutsceneSpawns.append(NewCameraPair(<30038.0254, -1036.81982, -23369.6035>, <55, -24.2035522, 0>)) + break + + case "mp_rr_canyonlands_mu1": + case "mp_rr_canyonlands_mu1_night": + case "mp_rr_canyonlands_64k_x_64k": + cutsceneSpawns.append(NewCameraPair(<-7984.68408, -16770.2031, 3972.28271>, <0, -158.605301, 0>)) + cutsceneSpawns.append(NewCameraPair(<-19691.1621, 5229.45264, 4238.53125>, <0, -54.6054993, 0>)) + cutsceneSpawns.append(NewCameraPair(<13270.0576, -20413.9023, 2999.29468>, <0, 98.6180649, 0>)) + cutsceneSpawns.append(NewCameraPair(<-25250.0391, -723.554199, 3427.51831>, <0, -55.5126762, 0>)) + cutsceneSpawns.append(NewCameraPair(<10445.5107, -30267.8691, 3435.0647>,<0, -151.025223, 0>)) + cutsceneSpawns.append(NewCameraPair(<-21710.4395, -12452.8604, 2887.22778>,<0, 29.4609108, 0>)) + cutsceneSpawns.append(NewCameraPair(<-17403.5469, 15699.3867, 4041.38379>,<0, -1.59664249, 0>)) + cutsceneSpawns.append(NewCameraPair(<-3939.00781, 16862.0586, 3525.45728>,<0, 142.246902, 0>)) + cutsceneSpawns.append(NewCameraPair(<26928.9668, 7577.22363, 2926.2876>,<0, 55.0248222, 0>)) + cutsceneSpawns.append(NewCameraPair(<32170.3008, -1944.38562, 3590.89258>,<0, 27.8040161, 0>)) + break + + case "mp_rr_party_crasher_new": + cutsceneSpawns.append(NewCameraPair(<-1363.75867, -2183.58081, 1354.65466>, <0, 72.5054092, 0>)) + cutsceneSpawns.append(NewCameraPair(<2378.75439, 1177.52783, 1309.69019>, <0, 146.118546, 0>)) + break + + } + + + //EmitSoundOnEntity( player, "music_skyway_04_smartpistolrun" ) + + float playerFOV = player.GetFOV() + + cutsceneSpawns.randomize() + vector randomcameraPos = cutsceneSpawns[0].origin + vector randomcameraAng = cutsceneSpawns[0].angles + + entity camera = CreateClientSidePointCamera(randomcameraPos, randomcameraAng, 17) + camera.SetFOV(100) + entity cutsceneMover = CreateClientsideScriptMover($"mdl/dev/empty_model.rmdl", randomcameraPos, randomcameraAng) + camera.SetParent(cutsceneMover) + GetLocalClientPlayer().SetMenuCameraEntity( camera ) + DoF_SetFarDepth( 6000, 10000 ) + + OnThreadEnd( + function() : ( player, cutsceneMover, camera, cutsceneSpawns ) + { + thread function() : (player, cutsceneMover, camera, cutsceneSpawns) + { + if(GameRules_GetGameMode() == "flowstate_snd") + { + GetLocalClientPlayer().ClearMenuCameraEntity() + cutsceneMover.Destroy() + + // if(IsValid(player)) + // { + // FadeOutSoundOnEntity( player, "music_skyway_04_smartpistolrun", 1 ) + // } + if(IsValid(camera)) + { + camera.Destroy() + } + DoF_SetNearDepthToDefault() + DoF_SetFarDepthToDefault() + return + } + + EndSignal(player, "ChallengeStartRemoveCameras") + + OnThreadEnd( + function() : ( player, cutsceneMover, camera ) + { + GetLocalClientPlayer().ClearMenuCameraEntity() + cutsceneMover.Destroy() + + // if(IsValid(player)) + // { + // FadeOutSoundOnEntity( player, "music_skyway_04_smartpistolrun", 1 ) + // } + if(IsValid(camera)) + { + camera.Destroy() + } + DoF_SetNearDepthToDefault() + DoF_SetFarDepthToDefault() + }) + + waitthread CoolCameraMovement(player, cutsceneMover, camera, file.selectedLocation.spawns, true) + }() + } + ) + + waitthread CoolCameraMovement(player, cutsceneMover, camera, cutsceneSpawns) +} + +void function CoolCameraMovement(entity player, entity cutsceneMover, entity camera, array cutsceneSpawns, bool isSelectedZoneCamera = false) +{ + int locationindex = 0 + + vector startpos + vector startangs + + vector finalpos + vector finalangs + + if(isSelectedZoneCamera) + { + LocPair far = file.selectedLocation.spawns.getrandom() + startpos = far.origin + if(file.selectedLocation.name != "Swamps") + startpos.z+= 2000 + else + startpos.z+= 1500 + startangs = far.angles + + finalpos = GetCenterOfCircle(file.selectedLocation.spawns) + //calcular el ms lejano + } + else + { + startpos = cutsceneSpawns[locationindex].origin + startangs = cutsceneSpawns[locationindex].angles + } + + while(true){ + if(locationindex == cutsceneSpawns.len()){ + locationindex = 0 + } + + if(!isSelectedZoneCamera) + { + startpos = cutsceneSpawns[locationindex].origin + startangs = cutsceneSpawns[locationindex].angles + } + locationindex++ + cutsceneMover.SetOrigin(startpos) + cutsceneMover.SetAngles(startangs) + camera.SetOrigin(startpos) + camera.SetAngles(startangs) + + if(isSelectedZoneCamera) + { + camera.SetFOV(90) + cutsceneMover.NonPhysicsMoveTo(finalpos, 30, 0, 0) + cutsceneMover.NonPhysicsRotateTo( VectorToAngles( finalpos - startpos ), 5, 0.0, 6 / 2.0 ) + WaitForever() + } + else + { + cutsceneMover.NonPhysicsMoveTo(startpos + AnglesToRight(startangs) * 700, 15, 0, 0) + cutsceneMover.NonPhysicsRotateTo( startangs, 10, 0.0, 6 / 2.0 ) + wait 5 + } + } +} + +LocPair function GetUbicacionMasLejana(LocPair random) +{ + array allspawnsDistances + + for(int i = 0; i compareDis) + { + compareDis = allspawnsDistances[j] + bestpos = j + } + } + + return file.selectedLocation.spawns[bestpos] +} + void function NotifyRingTimer() { if( GetGlobalNetTime( "nextCircleStartTime" ) < Time() ) @@ -78,195 +337,669 @@ void function NotifyRingTimer() } } - if ( SURVIVAL_IsFinalDeathFieldStage() ) - roundString = "#SURVIVAL_CIRCLE_ROUND_FINAL" - else - roundString = Localize( "#SURVIVAL_CIRCLE_ROUND", SURVIVAL_GetCurrentRoundString() ) + // if ( SURVIVAL_IsFinalDeathFieldStage() ) + // roundString = "#SURVIVAL_CIRCLE_ROUND_FINAL" + // else + // roundString = Localize( "#SURVIVAL_CIRCLE_ROUND", SURVIVAL_GetCurrentRoundString() ) + + // float duration = 7.0 + + // AnnouncementData announcement + // announcement = Announcement_Create( "" ) + // Announcement_SetSubText( announcement, roundString ) + // Announcement_SetHeaderText( announcement, "#SURVIVAL_CIRCLE_WARNING" ) + // Announcement_SetDisplayEndTime( announcement, new ) + // Announcement_SetStyle( announcement, ANNOUNCEMENT_STYLE_CIRCLE_WARNING ) + // Announcement_SetSoundAlias( announcement, CIRCLE_CLOSING_IN_SOUND ) + // Announcement_SetPurge( announcement, true ) + // Announcement_SetPriority( announcement, 200 ) // + // Announcement_SetDuration( announcement, duration ) + + // AnnouncementFromClass( GetLocalViewPlayer(), announcement ) +} - float duration = 7.0 +void function OpenTDMWeaponSelectorUI() +{ + entity player = GetLocalClientPlayer() + player.ClientCommand("CC_TDM_Weapon_Selector_Open") + DoF_SetFarDepth( 1, 300 ) + RunUIScript("OpenFRChallengesSettingsWpnSelector") +} - AnnouncementData announcement - announcement = Announcement_Create( "" ) - Announcement_SetSubText( announcement, roundString ) - Announcement_SetHeaderText( announcement, "#SURVIVAL_CIRCLE_WARNING" ) - Announcement_SetDisplayEndTime( announcement, new ) - Announcement_SetStyle( announcement, ANNOUNCEMENT_STYLE_CIRCLE_WARNING ) - Announcement_SetSoundAlias( announcement, CIRCLE_CLOSING_IN_SOUND ) - Announcement_SetPurge( announcement, true ) - Announcement_SetPriority( announcement, 200 ) // - Announcement_SetDuration( announcement, duration ) +void function ServerCallback_SendScoreboardToClient(int eHandle, int score, int deaths, float kd, int damage, int latency) +{ + // for(int i = 1; i < 21; i++ ) + // {} debug + RunUIScript( "SendScoreboardToUI", EHI_GetName(eHandle), score, deaths, kd, damage, latency) +} - AnnouncementFromClass( GetLocalViewPlayer(), announcement ) +void function ServerCallback_SendProphuntPropsScoreboardToClient(int eHandle, int score, int survivaltime) +{ + RunUIScript( "SendPropsScoreboardToUI", EHI_GetName(eHandle), score, survivaltime) } -void function Cl_RegisterLocation(LocationSettings locationSettings) +void function ServerCallback_SendProphuntHuntersScoreboardToClient(int eHandle, int propskilled) { - file.locationSettings.append(locationSettings) + RunUIScript( "SendHuntersScoreboardToUI", EHI_GetName(eHandle), propskilled) } -void function TDM_OnPlayerKilled( entity player ) +void function ServerCallback_ClearScoreboardOnClient() { - entity viewPlayer = GetLocalViewPlayer() + if(GameRules_GetGameMode() == "fs_prophunt") + RunUIScript( "ClearProphuntScoreboardOnUI") + else + RunUIScript( "ClearScoreboardOnUI") } -void function MakeScoreRUI() +void function ServerCallback_OpenStatisticsUI() { - if ( file.scoreRui != null) - { - RuiSetString( file.scoreRui, "messageText", "Team IMC: 0 || Team MIL: 0" ) - return - } - clGlobal.levelEnt.EndSignal( "CloseScoreRUI" ) + entity player = GetLocalClientPlayer() + RunUIScript( "OpenStatisticsUI" ) +} - UISize screenSize = GetScreenSize() - var screenAlignmentTopo = RuiTopology_CreatePlane( <( screenSize.width * 0.20),( screenSize.height * 0.31 ), 0>, , <0, float( screenSize.height ), 0>, false ) - var rui = RuiCreate( $"ui/announcement_quick_right.rpak", screenAlignmentTopo, RUI_DRAW_HUD, RUI_SORT_SCREENFADE + 1 ) - - RuiSetGameTime( rui, "startTime", Time() ) - RuiSetString( rui, "messageText", "Team IMC: 0 || Team MIL: 0" ) - RuiSetString( rui, "messageSubText", "Text 2") - RuiSetFloat( rui, "duration", 9999999 ) - RuiSetFloat3( rui, "eventColor", SrgbToLinear( <128, 188, 255> ) ) +void function ServerCallback_FSDM_OpenVotingPhase(bool shouldOpen) +{ + if(shouldOpen) + { + //try { GetLocalClientPlayer().ClearMenuCameraEntity(); GetWinnerPropCameraEntities()[0].ClearParent(); GetWinnerPropCameraEntities()[0].Destroy(); GetWinnerPropCameraEntities()[1].Destroy() } catch (exceptio2n){ } + RunUIScript( "Open_FSDM_VotingPhase" ) + } + else + thread FSDM_CloseVotingPhase() - file.scoreRui = rui - - OnThreadEnd( - function() : ( rui ) +} + +void function ServerCallback_FSDM_ChampionScreenHandle(bool shouldOpen, int TeamWon, int skinindex) +{ + file.teamwon = TeamWon + + if( shouldOpen ) + thread CreateChampionUI(skinindex) + else + thread DestroyChampionUI() +} + +void function CreateChampionUI(int skinindex) +{ + hasvoted = false + isvoting = true + roundover = true + + EmitSoundOnEntity( GetLocalClientPlayer(), "Music_CharacterSelect_Wattson" ) + // ScreenFade(GetLocalClientPlayer(), 0, 0, 0, 255, 0.4, 0.5, FFADE_OUT | FFADE_PURGE) + // wait 0.9 + + entity targetBackground = GetEntByScriptName( "target_char_sel_bg_new" ) + entity targetCamera = GetEntByScriptName( "target_char_sel_camera_new" ) + + if(file.teamwon != 3 && GameRules_GetGameMode() == "fs_prophunt" || GameRules_GetGameMode() == "flowstate_pkknockback") + { + //Clear Winning Squad Data + AddWinningSquadData( -1, -1) + + //Set Squad Data For Each Player In Winning Team + foreach( int i, entity player in GetPlayerArrayOfTeam_Alive( file.teamwon ) ) { - RuiDestroy( rui ) - file.scoreRui = null + AddWinningSquadData( i, player.GetEncodedEHandle()) } - ) + } + thread Show_FSDM_VictorySequence(skinindex) + + // ScreenFade(GetLocalClientPlayer(), 0, 0, 0, 255, 0.3, 0.0, FFADE_IN | FFADE_PURGE) +} + +void function DestroyChampionUI() +{ + foreach( rui in overHeadRuis ) + RuiDestroyIfAlive( rui ) + + foreach( entity ent in cleanupEnts ) + ent.Destroy() + + overHeadRuis.clear() + cleanupEnts.clear() +} + +void function FSDM_CloseVotingPhase() +{ + isvoting = false - WaitForever() + FadeOutSoundOnEntity( GetLocalClientPlayer(), "Music_CharacterSelect_Event3_Solo", 0.2 ) + + // wait 1 + + GetLocalClientPlayer().ClearMenuCameraEntity() + + RunUIScript( "Close_FSDM_VoteMenu" ) + GetLocalClientPlayer().Signal("ChallengeStartRemoveCameras") + } -void function ServerCallback_TDM_DoAnnouncement(float duration, int type) +void function UpdateUIVoteTimer(int team) { - string message = "" - string subtext = "" - switch(type) + float time = team - Time() + while(time > -1) { + RunUIScript( "UpdateVoteTimer_FSDM", int(time)) + + if (time <= 5 && time != 0) + EmitSoundOnEntity( GetLocalClientPlayer(), "ui_ingame_markedfordeath_countdowntomarked" ) + + if (time == 0) + EmitSoundOnEntity( GetLocalClientPlayer(), "ui_ingame_markedfordeath_countdowntoyouaremarked" ) - case eTDMAnnounce.ROUND_START: - { - thread MakeScoreRUI(); - message = "Round start" + time-- + + wait 1 + } +} + +void function UI_To_Client_VoteForMap_FSDM(int mapid) +{ + if(hasvoted) + return + + entity player = GetLocalClientPlayer() + player.ClientCommand("VoteForMap " + mapid) + RunUIScript("UpdateVotedFor_FSDM", mapid + 1) + + hasvoted = true +} + +void function ServerCallback_FSDM_UpdateMapVotesClient( int map1votes, int map2votes, int map3votes, int map4votes) +{ + RunUIScript("UpdateVotesUI_FSDM", map1votes, map2votes, map3votes, map4votes) +} + +void function ServerCallback_FSDM_UpdateVotingMaps( int map1, int map2, int map3, int map4) +{ + RunUIScript("UpdateMapsForVoting_FSDM", file.locationSettings[map1].name, file.locationSettings[map1].locationAsset, file.locationSettings[map2].name, file.locationSettings[map2].locationAsset, file.locationSettings[map3].name, file.locationSettings[map3].locationAsset, file.locationSettings[map4].name, file.locationSettings[map4].locationAsset) +} + +void function ServerCallback_FSDM_SetScreen(int screen, int team, int mapid, int done) +{ + switch(screen) + { + case eFSDMScreen.ScoreboardUI: //Sets the screen to the winners screen + DestroyChampionUI() + + if(GameRules_GetGameMode() == "fs_prophunt") + RunUIScript("Set_FSDM_ProphuntScoreboardScreen") + else + RunUIScript("Set_FSDM_ScoreboardScreen") + break - } - case eTDMAnnounce.VOTING_PHASE: - { - clGlobal.levelEnt.Signal( "CloseScoreRUI" ) - message = "Welcome To Team Deathmatch" - subtext = "Made by sal (score UI by shrugtal)" + + case eFSDMScreen.WinnerScreen: //Sets the screen to the winners screen + RunUIScript("Set_FSDM_TeamWonScreen", GetWinningTeamText(team)) break - } - case eTDMAnnounce.MAP_FLYOVER: - { - - if(file.locationSettings.len()) - message = file.selectedLocation.name + + case eFSDMScreen.VoteScreen: //Sets the screen to the vote screen + DestroyChampionUI() + + hasvoted = false + isvoting = true + roundover = true + + EmitSoundOnEntity( GetLocalClientPlayer(), "UI_PostGame_CoinMove" ) + thread UpdateUIVoteTimer(team) + RunUIScript("Set_FSDM_VotingScreen") + break + + case eFSDMScreen.TiedScreen: //Sets the screen to the tied screen + switch(done) + { + case 0: + EmitSoundOnEntity( GetLocalClientPlayer(), "HUD_match_start_timer_tick_1P" ) + break + case 1: + EmitSoundOnEntity( GetLocalClientPlayer(), "UI_PostGame_CoinMove" ) + break + } + + if (mapid == 42069) + RunUIScript( "UpdateVotedLocation_FSDMTied", "") + else + RunUIScript( "UpdateVotedLocation_FSDMTied", file.locationSettings[mapid].name) + break + + case eFSDMScreen.SelectedScreen: //Sets the screen to the selected location screen + EmitSoundOnEntity( GetLocalClientPlayer(), "UI_PostGame_Level_Up_Pilot" ) + RunUIScript( "UpdateVotedLocation_FSDM", file.locationSettings[mapid].name) + file.selectedLocation = file.locationSettings[mapid] + Signal(GetLocalClientPlayer(), "ChangeCameraToSelectedLocation") + break + + case eFSDMScreen.NextRoundScreen: //Sets the screen to the next round screen + EmitSoundOnEntity( GetLocalClientPlayer(), "UI_PostGame_Level_Up_Pilot" ) + FadeOutSoundOnEntity( GetLocalClientPlayer(), "Music_CharacterSelect_Wattson", 0.2 ) + RunUIScript("Set_FSDM_VoteMenuNextRound") break - } } - AnnouncementData announcement = Announcement_Create( message ) - Announcement_SetSubText(announcement, subtext) - Announcement_SetStyle( announcement, ANNOUNCEMENT_STYLE_CIRCLE_WARNING ) - Announcement_SetPurge( announcement, true ) - Announcement_SetOptionalTextArgsArray( announcement, [ "true" ] ) - Announcement_SetPriority( announcement, 200 ) //Be higher priority than Titanfall ready indicator etc - announcement.duration = duration - AnnouncementFromClass( GetLocalViewPlayer(), announcement ) } -void function ServerCallback_TDM_DoLocationIntroCutscene() +string function GetWinningTeamText(int team) { - thread ServerCallback_TDM_DoLocationIntroCutscene_Body() + string teamwon = "" + // switch(team) + // { + // case TEAM_IMC: + // teamwon = "IMC has won" + // break + // case TEAM_MILITIA: + // teamwon = "MILITIA has won" + // break + // case 69: + // teamwon = "Winner couldn't be decided" + // break + // } + // if(IsFFAGame()) + // teamwon = GetPlayerArrayOfTeam( team )[0].GetPlayerName() + " has won." + // else + // teamwon = "Team " + team + " has won." + + return teamwon } -void function ServerCallback_TDM_DoLocationIntroCutscene_Body() +array function GetAllGoodAnimsFromGladcardStancesForCharacter_ChampionScreen(ItemFlavor character) +/////////////////////////////////////////////////////// +//By Retculo Endoplasmtico#5955 (CafDeColombiaFPS)// +/////////////////////////////////////////////////////// +//Don't try this at home { - float desiredSpawnSpeed = Deathmatch_GetIntroSpawnSpeed() - float desiredSpawnDuration = Deathmatch_GetIntroCutsceneSpawnDuration() - float desireNoSpawns = Deathmatch_GetIntroCutsceneNumSpawns() - + array actualGoodAnimsForThisCharacter + switch(ItemFlavor_GetHumanReadableRef( character )){ + case "character_pathfinder": + actualGoodAnimsForThisCharacter.append( GetItemFlavorByGUID( ConvertItemFlavorGUIDStringToGUID( "SAID00543164026" ) ) ) + return actualGoodAnimsForThisCharacter + + case "character_bangalore": + actualGoodAnimsForThisCharacter.append( GetItemFlavorByGUID( ConvertItemFlavorGUIDStringToGUID( "SAID02041779191" ) ) ) + return actualGoodAnimsForThisCharacter + + case "character_bloodhound": + actualGoodAnimsForThisCharacter.append( GetItemFlavorByGUID( ConvertItemFlavorGUIDStringToGUID( "SAID00982377873" ) ) ) + actualGoodAnimsForThisCharacter.append( GetItemFlavorByGUID( ConvertItemFlavorGUIDStringToGUID( "SAID00924111436" ) ) ) + return actualGoodAnimsForThisCharacter + + case "character_caustic": + actualGoodAnimsForThisCharacter.append( GetItemFlavorByGUID( ConvertItemFlavorGUIDStringToGUID( "SAID01037940994" ) ) ) + actualGoodAnimsForThisCharacter.append( GetItemFlavorByGUID( ConvertItemFlavorGUIDStringToGUID( "SAID01924098215" ) ) ) + actualGoodAnimsForThisCharacter.append( GetItemFlavorByGUID( ConvertItemFlavorGUIDStringToGUID( "SAID00844387739" ) ) ) + return actualGoodAnimsForThisCharacter + + case "character_gibraltar": + actualGoodAnimsForThisCharacter.append( GetItemFlavorByGUID( ConvertItemFlavorGUIDStringToGUID( "SAID00335495845" ) ) ) + actualGoodAnimsForThisCharacter.append( GetItemFlavorByGUID( ConvertItemFlavorGUIDStringToGUID( "SAID01763092699" ) ) ) + actualGoodAnimsForThisCharacter.append( GetItemFlavorByGUID( ConvertItemFlavorGUIDStringToGUID( "SAID01066049905" ) ) ) + actualGoodAnimsForThisCharacter.append( GetItemFlavorByGUID( ConvertItemFlavorGUIDStringToGUID( "SAID01139949206" ) ) ) + actualGoodAnimsForThisCharacter.append( GetItemFlavorByGUID( ConvertItemFlavorGUIDStringToGUID( "SAID00558533496" ) ) ) + return actualGoodAnimsForThisCharacter + + case "character_lifeline": + actualGoodAnimsForThisCharacter.append( GetItemFlavorByGUID( ConvertItemFlavorGUIDStringToGUID( "SAID00294421454" ) ) ) + actualGoodAnimsForThisCharacter.append( GetItemFlavorByGUID( ConvertItemFlavorGUIDStringToGUID( "SAID01386679009" ) ) ) + return actualGoodAnimsForThisCharacter + + case "character_mirage": + actualGoodAnimsForThisCharacter.append( GetItemFlavorByGUID( ConvertItemFlavorGUIDStringToGUID( "SAID01262193178" ) ) ) + actualGoodAnimsForThisCharacter.append( GetItemFlavorByGUID( ConvertItemFlavorGUIDStringToGUID( "SAID00986179205" ) ) ) + actualGoodAnimsForThisCharacter.append( GetItemFlavorByGUID( ConvertItemFlavorGUIDStringToGUID( "SAID00002234092" ) ) ) + return actualGoodAnimsForThisCharacter + + case "character_octane": + actualGoodAnimsForThisCharacter.append( GetItemFlavorByGUID( ConvertItemFlavorGUIDStringToGUID( "SAID01698467954" ) ) ) + return actualGoodAnimsForThisCharacter + + case "character_wraith": + actualGoodAnimsForThisCharacter.append( GetItemFlavorByGUID( ConvertItemFlavorGUIDStringToGUID( "SAID01474484292" ) ) ) + actualGoodAnimsForThisCharacter.append( GetItemFlavorByGUID( ConvertItemFlavorGUIDStringToGUID( "SAID01587991597" ) ) ) + actualGoodAnimsForThisCharacter.append( GetItemFlavorByGUID( ConvertItemFlavorGUIDStringToGUID( "SAID02046254916" ) ) ) + actualGoodAnimsForThisCharacter.append( GetItemFlavorByGUID( ConvertItemFlavorGUIDStringToGUID( "SAID01527711638" ) ) ) + return actualGoodAnimsForThisCharacter + + case "character_wattson": + actualGoodAnimsForThisCharacter.append( GetItemFlavorByGUID( ConvertItemFlavorGUIDStringToGUID( "SAID01638491567" ) ) ) + return actualGoodAnimsForThisCharacter + + case "character_crypto": + actualGoodAnimsForThisCharacter.append( GetItemFlavorByGUID( ConvertItemFlavorGUIDStringToGUID( "SAID00269538572" ) ) ) + actualGoodAnimsForThisCharacter.append( GetItemFlavorByGUID( ConvertItemFlavorGUIDStringToGUID( "SAID00814728196" ) ) ) + actualGoodAnimsForThisCharacter.append( GetItemFlavorByGUID( ConvertItemFlavorGUIDStringToGUID( "SAID01574566414" ) ) ) + return actualGoodAnimsForThisCharacter + } + return actualGoodAnimsForThisCharacter +} - entity player = GetLocalClientPlayer() - - if(!IsValid(player)) return - +//Orginal code from cl_gamemode_survival.nut +//Modifed slightly +void function Show_FSDM_VictorySequence(int skinindex) +{ + DoF_SetFarDepth( 500, 1000 ) + entity player = GetLocalClientPlayer() - EmitSoundOnEntity( player, "music_skyway_04_smartpistolrun" ) - - float playerFOV = player.GetFOV() - - entity camera = CreateClientSidePointCamera(file.selectedLocation.spawns[0].origin + file.selectedLocation.cinematicCameraOffset, <90, 90, 0>, 17) - camera.SetFOV(90) + try { GetWinnerPropCameraEntities()[0].ClearParent(); GetWinnerPropCameraEntities()[0].Destroy(); GetWinnerPropCameraEntities()[1].Destroy() } catch (exceptio2n){ } - entity cutsceneMover = CreateClientsideScriptMover($"mdl/dev/empty_model.rmdl", file.selectedLocation.spawns[0].origin + file.selectedLocation.cinematicCameraOffset, <90, 90, 0>) - camera.SetParent(cutsceneMover) - GetLocalClientPlayer().SetMenuCameraEntity( camera ) + if (GetMapName() == "mp_rr_desertlands_64k_x_64k" || GetMapName() == "mp_rr_desertlands_64k_x_64k_nx") + { + file.victorySequencePosition = file.selectedLocation.victorypos.origin - < 0, 0, 52> + file.victorySequenceAngles = file.selectedLocation.victorypos.angles + } + else if(GetMapName() == "mp_rr_canyonlands_mu1") + { + file.victorySequencePosition = <-19443.75, -26319.9316, 9915.63965> + file.victorySequenceAngles = <0, 0, 0> + } + + asset defaultModel = GetGlobalSettingsAsset( DEFAULT_PILOT_SETTINGS, "bodyModel" ) + LoadoutEntry loadoutSlotCharacter = Loadout_CharacterClass() + vector characterAngles = < file.victorySequenceAngles.x / 2.0, Clamp(file.victorySequenceAngles.y-60, -180, 180), file.victorySequenceAngles.z > - //////////////////////////////////////////////////////////////////////////////// - ///////// EFFECTIVE CUTSCENE CODE START + VictoryPlatformModelData victoryPlatformModelData = GetVictorySequencePlatformModel() + entity platformModel + entity characterModel + int maxPlayersToShow = 3 + int maxPropsToShow = 1 + if ( victoryPlatformModelData.isSet ) + { + platformModel = CreateClientSidePropDynamic( file.victorySequencePosition + victoryPlatformModelData.originOffset, victoryPlatformModelData.modelAngles, victoryPlatformModelData.modelAsset ) + + cleanupEnts.append( platformModel ) + int playersOnPodium = 0 - array cutsceneSpawns - for(int i = 0; i < desireNoSpawns; i++) - { - if(!cutsceneSpawns.len()) - cutsceneSpawns = clone file.selectedLocation.spawns + VictorySequenceOrderPlayerFirst( player ) - LocPair spawn = cutsceneSpawns.getrandom() - cutsceneSpawns.fastremovebyvalue(spawn) + foreach( int i, SquadSummaryPlayerData data in file.winnerSquadSummaryData.playerData ) + { + if ( i >= maxPlayersToShow && GameRules_GetGameMode() != "fs_prophunt") + break + + if ( file.teamwon != 3 && i >= maxPlayersToShow && GameRules_GetGameMode() == "fs_prophunt") + break + + if ( file.teamwon == 3 && i >= maxPropsToShow && GameRules_GetGameMode() == "fs_prophunt") + break + + string playerName = "" + if ( EHIHasValidScriptStruct( data.eHandle ) ) + playerName = EHI_GetName( data.eHandle ) + + if(file.teamwon == 3 && GameRules_GetGameMode() == "fs_prophunt") + { + if ( !LoadoutSlot_IsReady( data.eHandle, loadoutSlotCharacter ) ) + continue + + ItemFlavor character = LoadoutSlot_GetItemFlavor( data.eHandle, loadoutSlotCharacter ) + + if ( !LoadoutSlot_IsReady( data.eHandle, Loadout_CharacterSkin( character ) ) ) + continue + + vector pos = GetVictorySquadFormationPosition( file.victorySequencePosition, file.victorySequenceAngles, i ) + entity characterNode = CreateScriptRef( pos, characterAngles ) + characterNode.SetParent( platformModel, "", true ) + + characterModel = CreateClientSidePropDynamic( pos, characterAngles, prophuntAssets[data.prophuntModelIndex] ) + SetForceDrawWhileParented( characterModel, true ) + characterModel.MakeSafeForUIScriptHack() + cleanupEnts.append( characterModel ) + + foreach( func in s_callbacks_OnVictoryCharacterModelSpawned ) + func( characterModel, character, data.eHandle ) + + characterModel.SetParent( characterNode, "", false ) + + entity overheadNameEnt = CreateClientSidePropDynamic( pos + (AnglesToUp( file.victorySequenceAngles ) * 73), <0, 0, 0>, $"mdl/dev/empty_model.rmdl" ) + overheadNameEnt.Hide() + + var overheadRuiName = RuiCreate( $"ui/winning_squad_member_overhead_name.rpak", clGlobal.topoFullScreen, RUI_DRAW_HUD, 0 ) + RuiSetString(overheadRuiName, "playerName", playerName) + RuiTrackFloat3(overheadRuiName, "position", overheadNameEnt, RUI_TRACK_ABSORIGIN_FOLLOW) + + overHeadRuis.append( overheadRuiName ) + + playersOnPodium++ + } + else + { + if ( !LoadoutSlot_IsReady( data.eHandle, loadoutSlotCharacter ) ) + continue + + ItemFlavor character = LoadoutSlot_GetItemFlavor( data.eHandle, loadoutSlotCharacter ) + + if ( !LoadoutSlot_IsReady( data.eHandle, Loadout_CharacterSkin( character ) ) ) + continue + + + ItemFlavor characterSkin + if(skinindex == 0) + characterSkin = GetValidItemFlavorsForLoadoutSlot( data.eHandle, Loadout_CharacterSkin( character ) )[0] + else + characterSkin = GetValidItemFlavorsForLoadoutSlot( data.eHandle, Loadout_CharacterSkin( character ) )[GetValidItemFlavorsForLoadoutSlot( data.eHandle, Loadout_CharacterSkin( character ) ).len()-skinindex] + + vector pos = GetVictorySquadFormationPosition( file.victorySequencePosition, file.victorySequenceAngles, i ) + printt(pos) + entity characterNode = CreateScriptRef( pos, characterAngles ) + characterNode.SetParent( platformModel, "", true ) + + characterModel = CreateClientSidePropDynamic( pos, characterAngles, defaultModel ) + SetForceDrawWhileParented( characterModel, true ) + characterModel.MakeSafeForUIScriptHack() + CharacterSkin_Apply( characterModel, characterSkin ) + + cleanupEnts.append( characterModel ) + + foreach( func in s_callbacks_OnVictoryCharacterModelSpawned ) + func( characterModel, character, data.eHandle ) + + //characterModel.SetParent( characterNode, "", false ) + + ItemFlavor anim = GetAllGoodAnimsFromGladcardStancesForCharacter_ChampionScreen(character).getrandom() + asset animtoplay = GetGlobalSettingsAsset( ItemFlavor_GetAsset( anim ), "movingAnimSeq" ) + thread PlayAnim( characterModel, animtoplay, characterNode ) + characterModel.Anim_SetPlaybackRate(0.8) + + //characterModel.Anim_EnableUseAnimatedRefAttachmentInsteadOfRootMotion() + + entity overheadNameEnt = CreateClientSidePropDynamic( pos + (AnglesToUp( file.victorySequenceAngles ) * 73), <0, 0, 0>, $"mdl/dev/empty_model.rmdl" ) + overheadNameEnt.Hide() + + var overheadRuiName = RuiCreate( $"ui/winning_squad_member_overhead_name.rpak", clGlobal.topoFullScreen, RUI_DRAW_HUD, 0 ) + RuiSetString(overheadRuiName, "playerName", playerName) + RuiTrackFloat3(overheadRuiName, "position", overheadNameEnt, RUI_TRACK_ABSORIGIN_FOLLOW) + + overHeadRuis.append( overheadRuiName ) + + playersOnPodium++ + } + } - cutsceneMover.SetOrigin(spawn.origin) - camera.SetAngles(spawn.angles) + string dialogueApexChampion + // if (file.teamwon == TEAM_IMC || file.teamwon == TEAM_MILITIA) + // { + if (player.GetTeam() == file.teamwon) + { + if ( playersOnPodium > 1 ) + dialogueApexChampion = "diag_ap_aiNotify_winnerFound_07" + else + dialogueApexChampion = "diag_ap_aiNotify_winnerFound_10" + } + else + { + if ( playersOnPodium > 1 ) + dialogueApexChampion = "diag_ap_aiNotify_winnerFound_08" + else + dialogueApexChampion = "diag_ap_ainotify_introchampion_01_02" + } + + EmitSoundOnEntityAfterDelay( platformModel, dialogueApexChampion, 0.5 ) + // } + + vector AnglesToUseCamera + + // if(file.teamwon != 3 && GameRules_GetGameMode() == "fs_prophunt") + // AnglesToUseCamera = characterModel.GetAngles() + // else + AnglesToUseCamera = file.victorySequenceAngles + + VictoryCameraPackage victoryCameraPackage + victoryCameraPackage.camera_offset_start = AnglesToForward( AnglesToUseCamera ) * 300 + AnglesToUp( AnglesToUseCamera ) * 100 + victoryCameraPackage.camera_offset_end = AnglesToForward( AnglesToUseCamera ) * 300 + AnglesToRight( AnglesToUseCamera ) *200 + AnglesToUp( AnglesToUseCamera ) * 100 + //if(CoinFlip()) victoryCameraPackage.camera_offset_end = AnglesToForward( AnglesToUseCamera ) * 300 + AnglesToRight( AnglesToUseCamera ) *-200 + AnglesToUp( AnglesToUseCamera ) * 100 + victoryCameraPackage.camera_focus_offset = <0, 0, 40> + //victoryCameraPackage.camera_fov = 20 + + vector camera_offset_start = victoryCameraPackage.camera_offset_start + vector camera_offset_end = victoryCameraPackage.camera_offset_end + vector camera_focus_offset = victoryCameraPackage.camera_focus_offset + + vector camera_start_pos = OffsetPointRelativeToVector( file.victorySequencePosition, camera_offset_start, AnglesToForward( AnglesToUseCamera ) ) + vector camera_end_pos = OffsetPointRelativeToVector( file.victorySequencePosition, camera_offset_end, AnglesToForward( AnglesToUseCamera ) ) + vector camera_focus_pos = OffsetPointRelativeToVector( file.victorySequencePosition, camera_focus_offset, AnglesToForward( AnglesToUseCamera ) ) + vector camera_start_angles = VectorToAngles( camera_focus_pos - camera_start_pos ) + vector camera_end_angles = VectorToAngles( camera_focus_pos - camera_end_pos ) + + //Create camera and mover + entity cameraMover = CreateClientsideScriptMover( $"mdl/dev/empty_model.rmdl", camera_start_pos, camera_start_angles ) + entity camera = CreateClientSidePointCamera( camera_start_pos, camera_start_angles, 35 ) + player.SetMenuCameraEntity( camera ) + camera.SetParent( cameraMover, "", false ) + cleanupEnts.append( camera ) + + cleanupEnts.append( cameraMover ) + thread CameraMovement(cameraMover, camera_end_pos, camera_end_angles) + } +} +void function CameraMovement(entity cameraMover, vector camera_end_pos, vector camera_end_angles) +{ + vector initialOrigin = cameraMover.GetOrigin() + vector initialAngles = cameraMover.GetAngles() + + //Move camera to end pos + cameraMover.NonPhysicsMoveTo( camera_end_pos, 10, 0.0, 6 / 2.0 ) + cameraMover.NonPhysicsRotateTo( camera_end_angles, 10, 0.0, 6 / 2.0 ) + // wait 3 + // if(!IsValid(cameraMover)) return + // cameraMover.NonPhysicsMoveTo( initialOrigin, 5, 0.0, 5 / 2.0 ) + // cameraMover.NonPhysicsRotateTo( initialAngles, 5, 0.0, 5 / 2.0 ) +} +void function AddWinningSquadData( int index, int eHandle) +{ + if ( index == -1 ) + { + file.winnerSquadSummaryData.playerData.clear() + file.winnerSquadSummaryData.squadPlacement = -1 + return + } - cutsceneMover.NonPhysicsMoveTo(spawn.origin + AnglesToForward(spawn.angles) * desiredSpawnDuration * desiredSpawnSpeed, desiredSpawnDuration, 0, 0) - wait desiredSpawnDuration - } + SquadSummaryPlayerData data + data.eHandle = eHandle + file.winnerSquadSummaryData.playerData.append( data ) + file.winnerSquadSummaryData.squadPlacement = 1 +} - ///////// EFFECTIVE CUTSCENE CODE END - //////////////////////////////////////////////////////////////////////////////// +void function PROPHUNT_AddWinningSquadData_PropTeamAddModelIndex( bool clear, int eHandle, int ModelIndex) +{ + if ( clear ) + { + file.winnerSquadSummaryData.playerData.clear() + file.winnerSquadSummaryData.squadPlacement = -1 + } + + SquadSummaryPlayerData data + data.eHandle = eHandle + data.prophuntModelIndex = ModelIndex + file.winnerSquadSummaryData.playerData.append( data ) + file.winnerSquadSummaryData.squadPlacement = 1 +} - GetLocalClientPlayer().ClearMenuCameraEntity() - cutsceneMover.Destroy() +void function VictorySequenceOrderPlayerFirst( entity player ) +{ + int playerEHandle = player.GetEncodedEHandle() + bool hadLocalPlayer = false + array playerDataArray + SquadSummaryPlayerData localPlayerData - if(IsValid(player)) - { - FadeOutSoundOnEntity( player, "music_skyway_04_smartpistolrun", 1 ) - } - if(IsValid(camera)) - { - camera.Destroy() - } - - + foreach( SquadSummaryPlayerData data in file.winnerSquadSummaryData.playerData ) + { + if ( data.eHandle == playerEHandle ) + { + localPlayerData = data + hadLocalPlayer = true + continue + } + + playerDataArray.append( data ) + } + + file.winnerSquadSummaryData.playerData = playerDataArray + if ( hadLocalPlayer ) + file.winnerSquadSummaryData.playerData.insert( 0, localPlayerData ) } -void function ServerCallback_TDM_SetSelectedLocation(int sel) +vector function GetVictorySquadFormationPosition( vector mainPosition, vector angles, int index ) { - file.selectedLocation = file.locationSettings[sel] + if ( index == 0 ) + return mainPosition - <0, 0, 8> + + float offset_side = 48.0 + float offset_back = -28.0 + + int groupOffsetIndex = index / 3 + int internalGroupOffsetIndex = index % 3 + + float internalGroupOffsetSide = 34.0 + float internalGroupOffsetBack = -38.0 + + float groupOffsetSide = 114.0 + float groupOffsetBack = -64.0 + + float finalOffsetSide = ( groupOffsetSide * ( groupOffsetIndex % 2 == 0 ? 1 : -1 ) * ( groupOffsetIndex == 0 ? 0 : 1 ) ) + ( internalGroupOffsetSide * ( internalGroupOffsetIndex % 2 == 0 ? 1 : -1 ) * ( internalGroupOffsetIndex == 0 ? 0 : 1 ) ) + float finalOffsetBack = ( groupOffsetBack * ( groupOffsetIndex == 0 ? 0 : 1 ) ) + ( internalGroupOffsetBack * ( internalGroupOffsetIndex == 0 ? 0 : 1 ) ) + + vector offset = < finalOffsetSide, finalOffsetBack, -8 > + return OffsetPointRelativeToVector( mainPosition, offset, AnglesToForward( angles ) ) } -void function ServerCallback_TDM_PlayerKilled() +void function DM_HintCatalog(int index, int eHandle) { - if(file.scoreRui) - RuiSetString( file.scoreRui, "messageText", "Team IMC: " + GameRules_GetTeamScore(TEAM_IMC) + " || Team MIL: " + GameRules_GetTeamScore(TEAM_MILITIA) ); + if(!IsValid(GetLocalViewPlayer())) return + + switch(index) + { + case 0: + DM_QuickHint( "Hold %use% to lock nearest enemy", true, 10) + break + + case 1: + if(file.activeQuickHint != null) + { + RuiDestroyIfAlive( file.activeQuickHint ) + file.activeQuickHint = null + } + break + } } -var function CreateTemporarySpawnRUI(entity parentEnt, float duration) +void function DM_QuickHint( string hintText, bool blueText = false, float duration = 2.5) { - var rui = AddOverheadIcon( parentEnt, RESPAWN_BEACON_ICON, false, $"ui/overhead_icon_respawn_beacon.rpak" ) - RuiSetFloat2( rui, "iconSize", <80,80,0> ) - RuiSetFloat( rui, "distanceFade", 50000 ) - RuiSetBool( rui, "adsFade", true ) - RuiSetString( rui, "hint", "SPAWN POINT" ) - - wait duration + if(file.activeQuickHint != null) + { + RuiDestroyIfAlive( file.activeQuickHint ) + file.activeQuickHint = null + } + file.activeQuickHint = CreateFullscreenRui( $"ui/announcement_quick_right.rpak" ) + + RuiSetGameTime( file.activeQuickHint, "startTime", Time() ) + RuiSetString( file.activeQuickHint, "messageText", hintText ) + RuiSetFloat( file.activeQuickHint, "duration", duration.tofloat() ) + + if(blueText) + RuiSetFloat3( file.activeQuickHint, "eventColor", SrgbToLinear( <48, 107, 255> / 255.0 ) ) + else + RuiSetFloat3( file.activeQuickHint, "eventColor", SrgbToLinear( <255, 0, 119> / 255.0 ) ) +} - parentEnt.Destroy() -} \ No newline at end of file +array s_callbacks_OnVictoryCharacterModelSpawned \ No newline at end of file diff --git a/vscripts/gamemodes/sh_gamemodes.gnut b/vscripts/gamemodes/sh_gamemodes.gnut index 5292d3dcd..efdb46beb 100644 --- a/vscripts/gamemodes/sh_gamemodes.gnut +++ b/vscripts/gamemodes/sh_gamemodes.gnut @@ -165,9 +165,9 @@ void function GameModes_Init() #endif - gameMode = CUSTOM_TDM + gameMode = fs_dm GameMode_Create( gameMode ) - GameMode_SetName( gameMode, "flowstate_dm" ) + GameMode_SetName( gameMode, "fs_dm" ) GameMode_SetGameModeAnnouncement( gameMode, "phunt_modeDesc" ) GameMode_SetDesc( gameMode, "#PL_pilot_hunter_hint" ) GameMode_SetIcon( gameMode, $"ui/menu/playlist/tdm" ) @@ -191,7 +191,7 @@ void function GameModes_Init() //GameMode_AddScoreboardColumnData( gameMode, "#SCOREBOARD_ASSISTS", PGS_ASSISTS, 2 ) GameMode_SetColor( gameMode, [212, 83, 152, 255] ) - gameMode = MAP_EDITOR + gameMode = map_editor_deprecated GameMode_Create( gameMode ) GameMode_SetName( gameMode, "map_editor_deprecated" ) GameMode_SetGameModeAnnouncement( gameMode, "phunt_modeDesc" ) @@ -204,9 +204,35 @@ void function GameModes_Init() //GameMode_AddScoreboardColumnData( gameMode, "#SCOREBOARD_ASSISTS", PGS_ASSISTS, 2 ) GameMode_SetColor( gameMode, [212, 83, 152, 255] ) - gameMode = CUSTOM_AIMTRAINER + gameMode = fs_aimtrainer GameMode_Create( gameMode ) - GameMode_SetName( gameMode, "custom_aimtrainer" ) + GameMode_SetName( gameMode, "fs_aimtrainer" ) + GameMode_SetGameModeAnnouncement( gameMode, "phunt_modeDesc" ) + GameMode_SetDesc( gameMode, "#PL_pilot_hunter_hint" ) + GameMode_SetIcon( gameMode, $"ui/menu/playlist/tdm" ) + GameMode_SetDefaultScoreLimits( gameMode, 50, 0 ) + GameMode_SetDefaultTimeLimits( gameMode, 15, 0.0 ) + GameMode_AddScoreboardColumnData( gameMode, "#SCOREBOARD_KILLS", PGS_PILOT_KILLS, 2 ) + GameMode_AddScoreboardColumnData( gameMode, "#SCOREBOARD_DEATHS", PGS_DEATHS, 2 ) + //GameMode_AddScoreboardColumnData( gameMode, "#SCOREBOARD_ASSISTS", PGS_ASSISTS, 2 ) + GameMode_SetColor( gameMode, [212, 83, 152, 255] ) + + gameMode = fs_prophunt + GameMode_Create( gameMode ) + GameMode_SetName( gameMode, "fs_prophunt" ) + GameMode_SetGameModeAnnouncement( gameMode, "phunt_modeDesc" ) + GameMode_SetDesc( gameMode, "#PL_pilot_hunter_hint" ) + GameMode_SetIcon( gameMode, $"ui/menu/playlist/tdm" ) + GameMode_SetDefaultScoreLimits( gameMode, 50, 0 ) + GameMode_SetDefaultTimeLimits( gameMode, 15, 0.0 ) + GameMode_AddScoreboardColumnData( gameMode, "#SCOREBOARD_KILLS", PGS_PILOT_KILLS, 2 ) + GameMode_AddScoreboardColumnData( gameMode, "#SCOREBOARD_DEATHS", PGS_DEATHS, 2 ) + //GameMode_AddScoreboardColumnData( gameMode, "#SCOREBOARD_ASSISTS", PGS_ASSISTS, 2 ) + GameMode_SetColor( gameMode, [212, 83, 152, 255] ) + + gameMode = fs_duckhunt + GameMode_Create( gameMode ) + GameMode_SetName( gameMode, "fs_duckhunt" ) GameMode_SetGameModeAnnouncement( gameMode, "phunt_modeDesc" ) GameMode_SetDesc( gameMode, "#PL_pilot_hunter_hint" ) GameMode_SetIcon( gameMode, $"ui/menu/playlist/tdm" ) diff --git a/vscripts/gamemodes/sh_gamemodes_mp.gnut b/vscripts/gamemodes/sh_gamemodes_mp.gnut index 246853010..04e886a54 100644 --- a/vscripts/gamemodes/sh_gamemodes_mp.gnut +++ b/vscripts/gamemodes/sh_gamemodes_mp.gnut @@ -52,8 +52,8 @@ void function GameModes_Init_SV_CL() { #if SERVER GameMode_AddServerInit( gameMode, GamemodeSurvival_Init ) - GameMode_SetPilotSpawnpointsRatingFunc( gameMode, RateSpawnpoints_Generic ) - GameMode_SetTitanSpawnpointsRatingFunc( gameMode, RateSpawnpoints_Generic ) + //GameMode_SetPilotSpawnpointsRatingFunc( gameMode, RateSpawnpoints_Generic ) + //GameMode_SetTitanSpawnpointsRatingFunc( gameMode, RateSpawnpoints_Generic ) GameMode_SetEvacEnabled( gameMode, false ) #elseif CLIENT //GameMode_AddClientInit( gameMode, ClGamemodeSurvival_Init ) @@ -64,47 +64,6 @@ void function GameModes_Init_SV_CL() #endif } - //////////////////////////// - // // - // Freelance // - // // - //////////////////////////// - - #if FREELANCE_ENABLED - gameMode = FREELANCE - - { - #if SERVER - GameMode_AddServerInit( gameMode, GamemodeFreelance_Init ) - GameMode_SetPilotSpawnpointsRatingFunc( gameMode, RateSpawnpoints_Generic ) - GameMode_SetTitanSpawnpointsRatingFunc( gameMode, RateSpawnpoints_Generic ) - GameMode_SetEvacEnabled( gameMode, false ) - #elseif CLIENT - // GameMode_AddClientInit( gameMode, ClGamemodeFreelance_Init ) - #endif - } - #endif - - //////////////////////////// - // // - // Custom TDM // - // // - //////////////////////////// - - gameMode = CUSTOM_TDM - #if SERVER || CLIENT - GameMode_AddSharedInit(gameMode, Sh_CustomTDM_Init) - GameMode_AddSharedInit( gameMode, GamemodeSurvivalShared_Init ) - #endif - #if SERVER - GameMode_AddServerInit(gameMode, _CustomTDM_Init) - GameMode_SetPilotSpawnpointsRatingFunc( gameMode, RateSpawnpoints_Generic ) - GameMode_SetTitanSpawnpointsRatingFunc( gameMode, RateSpawnpoints_Generic ) - GameMode_SetEvacEnabled( gameMode, false ) - #elseif CLIENT - GameMode_AddClientInit(gameMode, Cl_CustomTDM_Init) - //GameMode_AddClientInit( gameMode, ClGamemodeSurvival_Init ) - #endif //////////////////////////// // // @@ -119,8 +78,8 @@ void function GameModes_Init_SV_CL() #endif #if SERVER GameMode_AddServerInit(gameMode, _CustomCTF_Init) - GameMode_SetPilotSpawnpointsRatingFunc( gameMode, RateSpawnpoints_Generic ) - GameMode_SetTitanSpawnpointsRatingFunc( gameMode, RateSpawnpoints_Generic ) + //GameMode_SetPilotSpawnpointsRatingFunc( gameMode, RateSpawnpoints_Generic ) + //GameMode_SetTitanSpawnpointsRatingFunc( gameMode, RateSpawnpoints_Generic ) GameMode_SetEvacEnabled( gameMode, false ) #elseif CLIENT GameMode_AddClientInit(gameMode, Cl_CustomCTF_Init) @@ -133,42 +92,98 @@ void function GameModes_Init_SV_CL() // // //////////////////////////// - gameMode = MAP_EDITOR + gameMode = map_editor_deprecated #if SERVER || CLIENT GameMode_AddSharedInit(gameMode, Sh_MapEditor_Init) GameMode_AddSharedInit( gameMode, GamemodeSurvivalShared_Init ) #endif #if SERVER GameMode_AddServerInit(gameMode, _MapEditor_Init) - GameMode_SetPilotSpawnpointsRatingFunc( gameMode, RateSpawnpoints_Generic ) - GameMode_SetTitanSpawnpointsRatingFunc( gameMode, RateSpawnpoints_Generic ) + //GameMode_SetPilotSpawnpointsRatingFunc( gameMode, RateSpawnpoints_Generic ) + //GameMode_SetTitanSpawnpointsRatingFunc( gameMode, RateSpawnpoints_Generic ) GameMode_SetEvacEnabled( gameMode, false ) #elseif CLIENT GameMode_AddClientInit(gameMode, Cl_MapEditor_Init) //GameMode_AddClientInit( gameMode, ClGamemodeSurvival_Init ) #endif - ////////////////////////////////////// - // // - // Custom AIMTRAINER // - // // - ////////////////////////////////////// + // + //FLOWSTATE DM + // + + gameMode = fs_dm + #if SERVER || CLIENT + GameMode_AddSharedInit(gameMode, Sh_CustomTDM_Init) + GameMode_AddSharedInit( gameMode, GamemodeSurvivalShared_Init ) + #endif + #if SERVER + GameMode_AddServerInit(gameMode, _CustomTDM_Init) + //GameMode_SetPilotSpawnpointsRatingFunc( gameMode, RateSpawnpoints_Generic ) + //GameMode_SetTitanSpawnpointsRatingFunc( gameMode, RateSpawnpoints_Generic ) + GameMode_SetEvacEnabled( gameMode, false ) + #elseif CLIENT + GameMode_AddClientInit(gameMode, Cl_CustomTDM_Init) + //GameMode_AddClientInit( gameMode, ClGamemodeSurvival_Init ) + #endif - gameMode = CUSTOM_AIMTRAINER + // + //FLOWSTATE AIMTRAINER + // + + gameMode = fs_aimtrainer #if SERVER || CLIENT GameMode_AddSharedInit(gameMode, Sh_ChallengesByColombia_Init) GameMode_AddSharedInit( gameMode, GamemodeSurvivalShared_Init ) #endif #if SERVER GameMode_AddServerInit(gameMode, _ChallengesByColombia_Init) - GameMode_SetPilotSpawnpointsRatingFunc( gameMode, RateSpawnpoints_Generic ) - GameMode_SetTitanSpawnpointsRatingFunc( gameMode, RateSpawnpoints_Generic ) + //GameMode_SetPilotSpawnpointsRatingFunc( gameMode, RateSpawnpoints_Generic ) + //GameMode_SetTitanSpawnpointsRatingFunc( gameMode, RateSpawnpoints_Generic ) GameMode_SetEvacEnabled( gameMode, false ) #elseif CLIENT GameMode_AddClientInit(gameMode, Cl_ChallengesByColombia_Init) //GameMode_AddClientInit( gameMode, ClGamemodeSurvival_Init ) #endif + // + //FLOWSTATE PROPHUNT + // + + gameMode = fs_prophunt + #if SERVER || CLIENT + GameMode_AddSharedInit(gameMode, GamemodeProphuntShared_Init) + GameMode_AddSharedInit( gameMode, GamemodeSurvivalShared_Init ) + #endif + #if SERVER + GameMode_AddServerInit(gameMode, _GamemodeProphunt_Init) + //GameMode_SetPilotSpawnpointsRatingFunc( gameMode, RateSpawnpoints_Generic ) + //GameMode_SetTitanSpawnpointsRatingFunc( gameMode, RateSpawnpoints_Generic ) + GameMode_SetEvacEnabled( gameMode, false ) + #elseif CLIENT + GameMode_AddClientInit(gameMode, ClGamemodeProphunt_Init) + //GameMode_AddClientInit( gameMode, ClGamemodeSurvival_Init ) + #endif + + // + //FLOWSTATE DUCKHUNT + // + + gameMode = fs_duckhunt + #if SERVER || CLIENT + GameMode_AddSharedInit(gameMode, GamemodeDuckhuntShared_Init) + GameMode_AddSharedInit( gameMode, GamemodeSurvivalShared_Init ) + #endif + #if SERVER + GameMode_AddServerInit(gameMode, _GamemodeDuckhunt_Init) + //GameMode_SetPilotSpawnpointsRatingFunc( gameMode, RateSpawnpoints_Generic ) + //GameMode_SetTitanSpawnpointsRatingFunc( gameMode, RateSpawnpoints_Generic ) + GameMode_SetEvacEnabled( gameMode, false ) + #elseif CLIENT + GameMode_AddClientInit(gameMode, Cl_GamemodeDuckhunt_Init) + //GameMode_AddClientInit( gameMode, ClGamemodeSurvival_Init ) + #endif + + #if DEVSCRIPTS Dev_GameModes_Init_SV_CL() #endif diff --git a/vscripts/gamemodes/survival/cl_gamemode_survival.nut b/vscripts/gamemodes/survival/cl_gamemode_survival.nut index 82c53c153..05976e626 100644 --- a/vscripts/gamemodes/survival/cl_gamemode_survival.nut +++ b/vscripts/gamemodes/survival/cl_gamemode_survival.nut @@ -725,7 +725,7 @@ void function SURVIVAL_PopulatePlayerInfoRui( entity player, var rui ) if(RGB_HUD) thread RGBRui(rui) - if( GameRules_GetGameMode() != "flowstate_dm" ) return + if( GameRules_GetGameMode() != "fs_dm" ) return if ( IsControllerModeActive() ) player.ClientCommand( "controllerstate true") diff --git a/vscripts/lobby/lobbyvm/_lobbyvm.nut b/vscripts/lobby/lobbyvm/_lobbyvm.nut index 502549a17..0ccf1e9aa 100644 --- a/vscripts/lobby/lobbyvm/_lobbyvm.nut +++ b/vscripts/lobby/lobbyvm/_lobbyvm.nut @@ -2,7 +2,7 @@ global function _LobbyVM_Init array playerarray -array PrivateMatchSettings = ["A R5Reloaded Server", "mp_rr_canyonlands_mu1", "flowstate_dm", "2"] +array PrivateMatchSettings = ["A R5Reloaded Server", "mp_rr_canyonlands_mu1", "fs_dm", "2"] void function _LobbyVM_Init() { diff --git a/vscripts/melee/sh_melee.gnut b/vscripts/melee/sh_melee.gnut index 752b36f2e..beda907fc 100644 --- a/vscripts/melee/sh_melee.gnut +++ b/vscripts/melee/sh_melee.gnut @@ -278,14 +278,26 @@ entity function GetPlayerMeleeAttackWeapon( entity player ) #if SERVER || CLIENT bool function IsValidMeleeAttackTarget( entity attacker, entity inputWeaponOrNull, entity attackWeapon, entity target ) { + if( GameRules_GetGameMode() == "fs_prophunt" && target.GetNetworkedClassName() == "prop_dynamic" ) + return true + if ( attacker == target ) return false if ( target.IsBreakableGlass() ) - return true // + return true if ( !target.CanBeMeleed() ) return false + + if ( IsFriendlyTeam( attacker.GetTeam(), target.GetTeam() ) && GameRules_GetGameMode() == "flowstate_snd" && target.p.playerIsPlantingBomb) //avoid punching teammates while planting (qol) + return false + + if ( IsFriendlyTeam( attacker.GetTeam(), target.GetTeam() ) && GameRules_GetGameMode() == "flowstate_snd" && target.p.isInExtendedUse) //avoid punching teammates while defusing (qol) + return false + + if ( IsFriendlyTeam( attacker.GetTeam(), target.GetTeam() ) && GameRules_GetGameMode() == "fs_duckhunt" ) + return false if ( IsFriendlyTeam( attacker.GetTeam(), target.GetTeam() ) ) return true @@ -541,7 +553,14 @@ void function CodeCallback_OnMeleeAttackAnimEvent( entity attacker, entity melee // Early out if we didn't hit anything if ( !IsValid( target ) ) return - + + if( GameRules_GetGameMode() == "fs_prophunt" && target.GetNetworkedClassName() == "prop_dynamic" && IsValid(target.GetParent())) + { + target = target.GetParent() + + if ( !IsValid( target ) ) + return + } // Impact effects if ( !attacker.PlayerMelee_IsAttackActive() ) return @@ -595,8 +614,8 @@ void function CodeCallback_OnMeleeAttackAnimEvent( entity attacker, entity melee //if ( IsHumanSized( target ) ) // target.SetContinueAnimatingAfterRagdoll( true ) - int TEMP_targetHealthBefore = target.GetHealth() // todo(dw): remove - bool TEMP_isTargetBleedingOutBefore = Bleedout_IsBleedingOut( target ) // todo(dw): remove + // int TEMP_targetHealthBefore = target.GetHealth() // todo(dw): remove + // bool TEMP_isTargetBleedingOutBefore = Bleedout_IsBleedingOut( target ) // todo(dw): remove table damageTable = { scriptType = meleeAttackWeapon.GetWeaponDamageFlags(), diff --git a/vscripts/mp/_codecallbacks.gnut b/vscripts/mp/_codecallbacks.gnut index 89c88d2ee..2db1fda19 100644 --- a/vscripts/mp/_codecallbacks.gnut +++ b/vscripts/mp/_codecallbacks.gnut @@ -61,7 +61,7 @@ void function OnClientConnected( entity player ) thread RecordPositions(player) //Afk autokick thread. Colombia - if(GameRules_GetGameMode() == "flowstate_dm" || GameRules_GetGameMode() == "custom_ctf") + if(GameRules_GetGameMode() == "fs_dm" || GameRules_GetGameMode() == "custom_ctf") thread Flowstate_CheckPlayerIsAFK(player) // AccumulatedDamageData damageData diff --git a/vscripts/mp/_jump_pads.gnut b/vscripts/mp/_jump_pads.gnut index f78ec6f64..82f801120 100644 --- a/vscripts/mp/_jump_pads.gnut +++ b/vscripts/mp/_jump_pads.gnut @@ -2,6 +2,7 @@ global function JumpPad_Init global function JumpPad_CreatedCallback +global function JumpPadsWeaponJumppad_CreatedCallback // copied from r5-90 mp_rr_desertlands_common const float JUMP_PAD_PUSH_RADIUS = 45.0 @@ -124,6 +125,30 @@ entity mover = CreateScriptMover( jumpPad.GetOrigin(), angles ) AddEntityCallback_OnKilled( jumpPad, JumpPad_OnDeath ) } +void function JumpPadsWeaponJumppad_CreatedCallback( entity jumpPad ) +{ + vector origin = jumpPad.GetOrigin() // should this allow weapon_jump_pad to be OriginToGround + vector angles = jumpPad.GetAngles() + + entity trigger = CreateEntity( "trigger_cylinder_heavy" ) + trigger.SetOwner( jumpPad ) + trigger.SetRadius( JUMP_PAD_PUSH_RADIUS ) + trigger.SetAboveHeight( 32 ) + trigger.SetBelowHeight( 16 ) //need this because the player or jump pad can sink into the ground a tiny bit and we check player feet not half height + trigger.SetOrigin( origin ) + trigger.SetAngles( angles ) + trigger.SetTriggerType( TT_JUMP_PAD ) + trigger.SetLaunchScaleValues( JUMP_PAD_PUSH_VELOCITY, 1.25 ) + trigger.SetViewPunchValues( JUMP_PAD_VIEW_PUNCH_SOFT, JUMP_PAD_VIEW_PUNCH_HARD, JUMP_PAD_VIEW_PUNCH_RAND ) + trigger.UsePointCollision() + trigger.kv.triggerFilterNonCharacter = "0" + DispatchSpawn( trigger ) + trigger.SetEnterCallback( OnJumpPadAreaEnter ) + + //Need to set parent so the jump trigger is destroyed with the pad entity + trigger.SetParent( jumpPad ) +} + void function JumpPad_OnDeath( entity ent, var damageInfo ) { //todo: Explosion and sound @@ -209,7 +234,7 @@ void function JumpPadPushEnt( entity trigger, entity ent, vector origin, vector entity jumpPad = trigger.GetOwner() if ( IsValid( jumpPad ) ) { - if ( !Bleedout_IsBleedingOut( ent ) ) + if ( !Bleedout_IsBleedingOut( ent ) && GameRules_GetGameMode() != "fs_duckhunt") { thread JumpPad_GiveDoubleJump( ent ) } diff --git a/vscripts/mp/levels/mp_rr_canyonlands_common.nut b/vscripts/mp/levels/mp_rr_canyonlands_common.nut index fe6c3e121..5f22c012a 100644 --- a/vscripts/mp/levels/mp_rr_canyonlands_common.nut +++ b/vscripts/mp/levels/mp_rr_canyonlands_common.nut @@ -212,7 +212,7 @@ void function InitWaterLeviathans() void function EntitiesDidLoad() { - if(GetMapName() != "mp_rr_canyonlands_staging" && GameRules_GetGameMode() != "flowstate_dm" && GameRules_GetGameMode() != "flowstate_aimtrainer") + if(GetMapName() != "mp_rr_canyonlands_staging" && GameRules_GetGameMode() != "fs_dm" && GameRules_GetGameMode() != "fs_aimtrainer") { //InitLootDrones() //flyers //InitLootRollers() //flyers diff --git a/vscripts/mp/levels/mp_rr_desertlands_common.nut b/vscripts/mp/levels/mp_rr_desertlands_common.nut index 5266a51d0..a0896792d 100644 --- a/vscripts/mp/levels/mp_rr_desertlands_common.nut +++ b/vscripts/mp/levels/mp_rr_desertlands_common.nut @@ -109,7 +109,7 @@ void function EntitiesDidLoad() FillLootTable() - if(GameRules_GetGameMode() != "flowstate_dm" && GetMapName() != "mp_rr_desertlands_64k_x_64k_tt") + if(GameRules_GetGameMode() != "fs_dm" && GetMapName() != "mp_rr_desertlands_64k_x_64k_tt") { //InitLootDrones() //InitLootRollers() @@ -555,7 +555,7 @@ void function SetButtonSettings( entity panel ) StopSoundOnEntity( panel, "Desertlands_Mirage_TT_Firework_Streamer" ) StopSoundOnEntity( panel, "Desertlands_Mirage_TT_Firework_SkyBurst" ) - if ( GameRules_GetGameMode() == "flowstate_dm" ) + if ( GameRules_GetGameMode() == "fs_dm" ) WaitForever() else wait 2 diff --git a/vscripts/mp/sh_desertlands_train.nut b/vscripts/mp/sh_desertlands_train.nut index 51693a693..eebf5b8b9 100644 --- a/vscripts/mp/sh_desertlands_train.nut +++ b/vscripts/mp/sh_desertlands_train.nut @@ -259,7 +259,7 @@ void function DesertlandsTrain_Init() int j = 0 foreach(entity car in cars) { - printl(">>>> " + car) + //printl(">>>> " + car) foreach(entity bin in lootBins) { if(bin.GetModelName().find("loot_bin_0") <= 0) @@ -269,7 +269,7 @@ void function DesertlandsTrain_Init() if(distance > 300) continue - if( GetCurrentPlaylistVarBool("lootbin_loot_enable", true) == true) + if( GetCurrentPlaylistVarBool("lootbin_loot_enable", true) && GameRules_GetGameMode() == SURVIVAL) { ClearLootBinContents( bin ) AddMultipleLootItemsToLootBin( bin, SURVIVAL_GetMultipleWeightedItemsFromGroup( "POI_Ultra", 4 ) ) diff --git a/vscripts/mp/sh_respawn_beacon.gnut b/vscripts/mp/sh_respawn_beacon.gnut index 6eea81d7a..9bc429c19 100644 --- a/vscripts/mp/sh_respawn_beacon.gnut +++ b/vscripts/mp/sh_respawn_beacon.gnut @@ -355,7 +355,7 @@ void function OnRespawnChamberSpawned( entity ent ) ent.Destroy() - if ( GetRespawnStyle() != eRespawnStyle.RESPAWN_CHAMBERS ) + if ( GetRespawnStyle() != eRespawnStyle.RESPAWN_CHAMBERS || GameRules_GetGameMode() != SURVIVAL ) return // spawn a new one with the correct targetname @@ -977,7 +977,10 @@ void function RespawnBeacons_OnSquadEliminated( int team ) void function OnDeathBoxSpawned( entity deathbox, entity attacker, int damageSourceID ) { entity player = deathbox.GetOwner() - + + if( GameRules_GetGameMode() == "fs_aimtrainer" ) + return + if ( !IsValid( player ) ) return diff --git a/vscripts/sh_consts.gnut b/vscripts/sh_consts.gnut index 138fb69ac..c8a896e76 100644 --- a/vscripts/sh_consts.gnut +++ b/vscripts/sh_consts.gnut @@ -96,10 +96,15 @@ global const MENUFALL = "menufall" global const TEAM_DEATHMATCH = "tdm" global const SURVIVAL = "survival" global const FREELANCE = "freelance" -global const CUSTOM_TDM = "flowstate_dm" global const CUSTOM_CTF = "custom_ctf" -global const CUSTOM_AIMTRAINER = "custom_aimtrainer" -global const MAP_EDITOR = "map_editor_deprecated" + +global const map_editor_deprecated = "map_editor_deprecated" + +//gamemodes by @CafeFPS +global const fs_dm = "fs_dm" +global const fs_aimtrainer = "fs_aimtrainer" +global const fs_prophunt = "fs_prophunt" +global const fs_duckhunt = "fs_duckhunt" global const FREELANCE_ENABLED = false @@ -316,12 +321,16 @@ global const int BURN_R = 246 global const int BURN_G = 134 global const int BURN_B = 40 +global const int AIRDROP_R = 10 +global const int AIRDROP_G = 224 +global const int AIRDROP_B = 233 + global const vector TEAM_COLOR_ENEMY = global const vector TEAM_COLOR_FRIENDLY = global const vector TEAM_COLOR_PARTY = global const vector TEAM_COLOR_YOU = global const vector BURN_COLOR = -global const vector COLOR_AIRDROP = <10,224,233> +global const vector COLOR_AIRDROP = // END OFFICIAL global const TIME_ZOFFSET = 11520 @@ -571,7 +580,7 @@ global const KILL_REPLAY_BEFORE_KILL_TIME_TITAN = 6.8 global const KILL_REPLAY_BEFORE_KILL_TIME_DROPPOD = 2.0 global const KILL_REPLAY_AFTER_KILL_TIME = 2.0 -global const DEATHCAM_TIME_SHORT = 1.5 +global const DEATHCAM_TIME_SHORT = 3.0 global const KILL_REPLAY_BEFORE_KILL_TIME_SHORT = 3.5 global const KILL_REPLAY_AFTER_KILL_TIME_SHORT = 1.0 global const RESPAWN_BUTTON_BUFFER = 0.0 // the amount of time before you're allowed to respawn, after DEATHCAM_TIME @@ -1194,6 +1203,8 @@ NPCMF_WALK_NONCOMBAT global const ZIPLINE_IDLE_ANIM = "pt_zipline_slide_idle" +global const float ZIPLINES_COOLDOWN = 1.5 + global const DEFAULT_CONVERSATION_DEBOUNCE_TIME = 10.0 global const AI_CONVERSATION_RANGE_SQR = 20250000 global const AI_CONVERSATION_RANGE = 4500 // should match above @@ -2255,6 +2266,8 @@ global const vector AMMO_SHOTGUN_COLOR = <155, 51, 15> / 255.0 global const vector AMMO_ENERGY_COLOR = <132, 160, 61> / 255.0 global const vector AMMO_SMALL_COLOR = <180, 123, 68> / 255.0 global const vector AMMO_LARGE_COLOR = <84, 155, 131> / 255.0 +global const vector AMMO_SNIPER_COLOR = <74.0, 73.0, 147.0> / 255.0 +global const vector AMMO_EXPLOSIVE_COLOR = <163.0, 93.0, 72.0> / 255.0 global const vector AMMO_LEGENDARY_COLOR = <255, 215, 30> / 255.0 @@ -2263,6 +2276,8 @@ global const table ammoColors = { special = AMMO_ENERGY_COLOR shotgun = AMMO_SHOTGUN_COLOR highcal = AMMO_LARGE_COLOR + sniper = AMMO_SNIPER_COLOR + explosive = AMMO_EXPLOSIVE_COLOR } global struct BurnDamageSettings diff --git a/vscripts/sh_dev_utility.nut b/vscripts/sh_dev_utility.nut index d136aa05c..e4acb9814 100644 --- a/vscripts/sh_dev_utility.nut +++ b/vscripts/sh_dev_utility.nut @@ -462,7 +462,7 @@ void function DevRespawnPlayer( entity player, bool shouldForce, void functionre { player.Die( null, null, { damageSourceId = eDamageSourceId.damagedef_suicide } ) - if( IsFiringRangeGameMode() || GameRules_GetGameMode() == "flowstate_dm" ) + if( IsFiringRangeGameMode() || GameRules_GetGameMode() == "fs_dm" ) return wait 1.0 diff --git a/vscripts/sh_onboarding.gnut b/vscripts/sh_onboarding.gnut index f1525eafb..94e04c355 100644 --- a/vscripts/sh_onboarding.gnut +++ b/vscripts/sh_onboarding.gnut @@ -144,7 +144,7 @@ void function Sequence_WaitingForPlayers() wait PreGame_GetWaitingForPlayersCountdown() + (introCountdownEnabled ? 0.0 : CharSelect_GetIntroMusicStartTime()) - if(GameRules_GetGameMode() == "flowstate_dm") + if(GameRules_GetGameMode() == "fs_dm") { SetGameState( eGameState.Playing ) return @@ -618,7 +618,7 @@ void function OnClientConnected( entity player ) { case eGameState.WaitingForPlayers: case eGameState.PickLoadout: - if(GameRules_GetGameMode() == "flowstate_dm") break + if(GameRules_GetGameMode() == "fs_dm") break entity startEnt = GetEnt( "info_player_start" ) @@ -677,7 +677,7 @@ void function UpdatePlayerCounts() { string currGameMode = GameRules_GetGameMode() - if(currGameMode == "flowstate_dm"){ + if(currGameMode == "fs_dm"){ array connectedPlayers = GetPlayerArray_ConnectedNotSpectatorTeam() if(!GetCurrentPlaylistVarBool("flowstatePROPHUNT", false )){ diff --git a/vscripts/ui/FlowstateDM/flowstate_menu_vote.nut b/vscripts/ui/FlowstateDM/flowstate_menu_vote.nut new file mode 100644 index 000000000..57fe6a0ce --- /dev/null +++ b/vscripts/ui/FlowstateDM/flowstate_menu_vote.nut @@ -0,0 +1,560 @@ +global function Init_FSDM_VoteMenu +global function Init_FSDM_ProphuntScoreboardMenu +global function Open_FSDM_VotingPhase +global function Close_FSDM_VoteMenu + +global function Set_FSDM_VoteMenuNextRound +global function Set_FSDM_VotingScreen +global function Set_FSDM_TeamWonScreen +global function Set_FSDM_ScoreboardScreen +global function Set_FSDM_ProphuntScoreboardScreen + +global function UpdateVoteTimer_FSDM +global function UpdateVotesUI_FSDM +global function UpdateMapsForVoting_FSDM +global function UpdateVotedFor_FSDM +global function UpdateVotedLocation_FSDM +global function UpdateVotedLocation_FSDMTied +global function SendScoreboardToUI +global function SendPropsScoreboardToUI +global function SendHuntersScoreboardToUI +global function ClearScoreboardOnUI +global function ClearProphuntScoreboardOnUI +global function Disable_MILITIAButton +global function Disable_IMCButton + +global struct PlayerInfo +{ + string name + int team + int score + int deaths + float kd + int damage + int lastLatency +} + +global struct ProphuntPlayerInfo_PROPS +{ + string name + int timessurvived + int survivaltime +} + +global struct ProphuntPlayerInfo_HUNTERS +{ + string name + int propskilled +} + +struct +{ + var menu + var prophuntMenu + array FSDM_Scoreboard + array FSPROPHUNT_PropsScoreboard + array FSPROPHUNT_HuntersScoreboard +} file + +//Opens vote menu +void function Open_FSDM_VotingPhase() +{ + CloseAllMenus() + AdvanceMenu( file.menu ) + + Hud_SetVisible(Hud_GetChild( file.menu, "TextCredits2"), true) + Hud_SetVisible(Hud_GetChild( file.menu, "TextCredits"), true) + + Hud_SetVisible( Hud_GetChild( file.menu, "VotingPhaseChatBox"), false ) + Hud_SetAboveBlur( Hud_GetChild( file.menu, "VotingPhaseChatBox"), false ) + Hud_SetEnabled( Hud_GetChild( Hud_GetChild( file.menu, "VotingPhaseChatBox"), "ChatInputLine" ), false) + + if(IsConnected() ) + { + switch(GetCurrentPlaylistName()) + { + case "fs_prophunt": + Hud_SetText( Hud_GetChild( file.menu, "TextCredits2" ), "FLOWSTATE PROPHUNT" ) + Hud_SetText( Hud_GetChild( file.menu, "TextCredits" ), "Made by @CafeFPS" ) + break + + case "fs_dm": + Hud_SetText( Hud_GetChild( file.menu, "TextCredits2" ), "FLOWSTATE DM" ) + Hud_SetText( Hud_GetChild( file.menu, "TextCredits" ), "Made by @CafeFPS" ) + break + + case "flowstate_snd": + Hud_SetText( Hud_GetChild( file.menu, "TextCredits2" ), "SEARCH AND DESTROY" ) + Hud_SetText( Hud_GetChild( file.menu, "TextCredits" ), "Made by @CafeFPS" ) + break + + case "flowstate_pkknockback": + Hud_SetText( Hud_GetChild( file.menu, "TextCredits2" ), "FLOWSTATE PK PUSHBACK" ) + Hud_SetText( Hud_GetChild( file.menu, "TextCredits" ), "Made by @CafeFPS" ) + break + + case "flowstate_infection": + Hud_SetText( Hud_GetChild( file.menu, "TextCredits2" ), "FLOWSTATE INFECTED" ) + Hud_SetText( Hud_GetChild( file.menu, "TextCredits" ), "Made by @CafeFPS" ) + break + + default: + Hud_SetText( Hud_GetChild( file.menu, "TextCredits2" ), "FLOWSTATE SCRIPTS" ) + Hud_SetText( Hud_GetChild( file.menu, "TextCredits" ), "Made by @CafeFPS" ) + break + } + } +} + +//Sets and updates the team won screen +void function Set_FSDM_TeamWonScreen(string teamwon) +{ + SetVoteHudElems(false, true, false, false, false, false, false, false, false, false, false, false) +} + +void function SendScoreboardToUI(string name, int score, int deaths, float kd, int damage, int latency) +{ + PlayerInfo p + p.name = name + p.score = score + p.deaths = deaths + p.kd = kd + p.damage = damage + p.lastLatency = latency + + file.FSDM_Scoreboard.append(p) +} + +void function SendPropsScoreboardToUI(string name, int timessurvived, int survivaltime) +{ + ProphuntPlayerInfo_PROPS p + p.name = name + p.timessurvived = timessurvived + p.survivaltime = survivaltime + + file.FSPROPHUNT_PropsScoreboard.append(p) +} + +void function SendHuntersScoreboardToUI(string name, int propskilled) +{ + ProphuntPlayerInfo_HUNTERS p + p.name = name + p.propskilled = propskilled + + file.FSPROPHUNT_HuntersScoreboard.append(p) +} + +void function ClearScoreboardOnUI() +{ + file.FSDM_Scoreboard.clear() + + for( int i=0; i < 10; i++ ) + { + Hud_SetText( Hud_GetChild( file.menu, "PlayerName" + i ), "" ) + Hud_SetText( Hud_GetChild( file.menu, "Kills" + i ), "" ) + Hud_SetText( Hud_GetChild( file.menu, "Deaths" + i ), "" ) + Hud_SetText( Hud_GetChild( file.menu, "KD" + i ), "" ) + Hud_SetText( Hud_GetChild( file.menu, "Damage" + i ), "" ) + } +} + +void function ClearProphuntScoreboardOnUI() +{ + file.FSPROPHUNT_PropsScoreboard.clear() + file.FSPROPHUNT_HuntersScoreboard.clear() + + for( int i=0; i < 10; i++ ) + { + Hud_SetText( Hud_GetChild( file.prophuntMenu, "PlayerNameHunters" + i ), "" ) + Hud_SetText( Hud_GetChild( file.prophuntMenu, "PlayerName" + i ), "" ) + Hud_SetText( Hud_GetChild( file.prophuntMenu, "TimesSurvived" + i ), "" ) + Hud_SetText( Hud_GetChild( file.prophuntMenu, "SurvivalTime" + i ), "" ) + Hud_SetText( Hud_GetChild( file.prophuntMenu, "PropsKilled" + i ), "" ) + } +} + +int function ComparePlayerInfo(PlayerInfo a, PlayerInfo b) +{ + if(a.score < b.score) return 1; + else if(a.score > b.score) return -1; + return 0; +} + +int function CompareProphuntPropsInfo(ProphuntPlayerInfo_PROPS a, ProphuntPlayerInfo_PROPS b) +{ + if(a.timessurvived < b.timessurvived) return 1; + else if(a.timessurvived > b.timessurvived) return -1; + return 0; +} + +int function CompareProphuntHuntersInfo(ProphuntPlayerInfo_HUNTERS a, ProphuntPlayerInfo_HUNTERS b) +{ + if(a.propskilled < b.propskilled) return 1; + else if(a.propskilled > b.propskilled) return -1; + return 0; +} +//Sets and updates the team won screen +void function Set_FSDM_ScoreboardScreen() +{ + thread function() : () + { + SetVoteHudElems(false, true, false, false, false, false, false, false, false, false, false, true) + + while(file.FSDM_Scoreboard.len() == 0) //defensive fix + WaitFrame() + + file.FSDM_Scoreboard.sort(ComparePlayerInfo) + + for( int i=0; i < file.FSDM_Scoreboard.len() && i < 10; i++ ) + { + Hud_SetText( Hud_GetChild( file.menu, "PlayerName" + i ), file.FSDM_Scoreboard[i].name ) + Hud_SetText( Hud_GetChild( file.menu, "Kills" + i ), file.FSDM_Scoreboard[i].score.tostring() ) + Hud_SetText( Hud_GetChild( file.menu, "Deaths" + i ), file.FSDM_Scoreboard[i].deaths.tostring() ) + Hud_SetText( Hud_GetChild( file.menu, "KD" + i ), file.FSDM_Scoreboard[i].kd.tostring() ) + Hud_SetText( Hud_GetChild( file.menu, "Damage" + i ), file.FSDM_Scoreboard[i].damage.tostring() ) + // Hud_SetText( Hud_GetChild( file.menu, "Latency" + i ), file.FSDM_Scoreboard[i].lastLatency.tostring() ) + } + }() +} + +void function Set_FSDM_ProphuntScoreboardScreen() +{ + thread function() : () + { + SetVoteHudElems(false, true, false, false, false, false, false, false, false, false, false, true) + + while(file.FSPROPHUNT_HuntersScoreboard.len() == 0 && file.FSPROPHUNT_PropsScoreboard.len() == 0) //defensive fix + WaitFrame() + + if(file.FSPROPHUNT_HuntersScoreboard.len() != 0) + file.FSPROPHUNT_HuntersScoreboard.sort(CompareProphuntHuntersInfo) + + if(file.FSPROPHUNT_PropsScoreboard.len() != 0) + file.FSPROPHUNT_PropsScoreboard.sort(CompareProphuntPropsInfo) + + for( int i=0; i < file.FSPROPHUNT_HuntersScoreboard.len() && i < 10; i++ ) + { + Hud_SetText( Hud_GetChild( file.prophuntMenu, "PlayerNameHunters" + i ), file.FSPROPHUNT_HuntersScoreboard[i].name ) + Hud_SetText( Hud_GetChild( file.prophuntMenu, "PropsKilled" + i ), file.FSPROPHUNT_HuntersScoreboard[i].propskilled.tostring() ) + } + + for( int i=0; i < file.FSPROPHUNT_PropsScoreboard.len() && i < 10; i++ ) + { + Hud_SetText( Hud_GetChild( file.prophuntMenu, "PlayerName" + i ), file.FSPROPHUNT_PropsScoreboard[i].name ) + Hud_SetText( Hud_GetChild( file.prophuntMenu, "TimesSurvived" + i ), file.FSPROPHUNT_PropsScoreboard[i].timessurvived.tostring() ) + + DisplayTime dt = SecondsToDHMS( file.FSPROPHUNT_PropsScoreboard[i].survivaltime ) + + if(file.FSPROPHUNT_PropsScoreboard[i].survivaltime > 3540) + Hud_SetText( Hud_GetChild( file.prophuntMenu, "SurvivalTime" + i ), format( "%d:%.2d:%.2d", dt.hours, dt.minutes, dt.seconds ) ) + else + Hud_SetText( Hud_GetChild( file.prophuntMenu, "SurvivalTime" + i ), format( "%.2d:%.2d", dt.minutes, dt.seconds ) ) + } + }() +} + +//Sets and updates the voting screen +void function Set_FSDM_VotingScreen() +{ + // try{ + // RegisterButtonPressedCallback( KEY_ENTER, FocusChat ) + // }catch(e420){} + SetVoteHudElems(true, true, true, true, true, true, true, false, false, false, false, false) + + for(int i = 1; i < 5; i++ ) { + Hud_SetEnabled( Hud_GetChild( file.menu, "MapVote" + i ), true ) + } + + Hud_SetVisible( Hud_GetChild( file.menu, "VotingPhaseChatBox"), true ) + Hud_SetAboveBlur( Hud_GetChild( file.menu, "VotingPhaseChatBox"), true ) + Hud_StartMessageMode( Hud_GetChild( file.menu, "VotingPhaseChatBox") ) + Hud_SetEnabled( Hud_GetChild( Hud_GetChild( file.menu, "VotingPhaseChatBox"), "ChatInputLine" ), true) +} + +//Sets and updates the next round screen +void function Set_FSDM_VoteMenuNextRound() +{ + SetVoteHudElems(false, false, false, false, false, false, false, true, true, false, false, false) + + Hud_SetText( Hud_GetChild( file.menu, "VotedForLbl" ), "Starting Next Round!") +} + +//Update current maps up for vote +void function UpdateMapsForVoting_FSDM(string map1, asset map1asset, string map2, asset map2asset, string map3, asset map3asset, string map4, asset map4asset) +{ + Hud_SetText(Hud_GetChild( file.menu, "MapVoteLabelName1" ), map1 ) + Hud_SetText(Hud_GetChild( file.menu, "MapVoteLabelName2" ), map2 ) + Hud_SetText(Hud_GetChild( file.menu, "MapVoteLabelName3" ), map3 ) + Hud_SetText(Hud_GetChild( file.menu, "MapVoteLabelName4" ), map4 ) + + RuiSetImage( Hud_GetRui( Hud_GetChild( file.menu, "MapVoteImage1" ) ), "basicImage", map1asset ) + RuiSetImage( Hud_GetRui( Hud_GetChild( file.menu, "MapVoteImage2" ) ), "basicImage", map2asset ) + RuiSetImage( Hud_GetRui( Hud_GetChild( file.menu, "MapVoteImage3" ) ), "basicImage", map3asset ) + RuiSetImage( Hud_GetRui( Hud_GetChild( file.menu, "MapVoteImage4" ) ), "basicImage", map4asset ) +} + +//Closes the vote menu +void function Close_FSDM_VoteMenu() +{ + // try{ + // DeregisterButtonPressedCallback( KEY_ENTER, FocusChat ) + // }catch(e420){} + CloseAllMenus() +} + +//Update vote time left +void function UpdateVoteTimer_FSDM(int timeleft) +{ + Hud_SetText(Hud_GetChild( file.menu, "TimerText" ), timeleft.tostring()) +} + +//Update current votes for each map +void function UpdateVotesUI_FSDM(int map1, int map2, int map3, int map4) +{ + Hud_SetText(Hud_GetChild( file.menu, "MapVoteLabelVotes1" ), "Votes: " + map1 ) + Hud_SetText(Hud_GetChild( file.menu, "MapVoteLabelVotes2" ), "Votes: " + map2 ) + Hud_SetText(Hud_GetChild( file.menu, "MapVoteLabelVotes3" ), "Votes: " + map3 ) + Hud_SetText(Hud_GetChild( file.menu, "MapVoteLabelVotes4" ), "Votes: " + map4 ) +} + +//Lock Buttons and update the map player voted for +void function UpdateVotedFor_FSDM(int id) +{ + for(int i = 1; i < 5; i++ ) { + // RuiSetInt( Hud_GetRui( Hud_GetChild( file.menu, "MapVote" + i )), "status", eFriendStatus.ONLINE_AWAY ) + Hud_SetEnabled( Hud_GetChild( file.menu, "MapVote" + i ), false ) + } + Hud_SetVisible( Hud_GetChild( file.menu, "MapVoteLabelNameFrame" + id ), false ) + Hud_SetVisible( Hud_GetChild( file.menu, "MapVoteLabelNameFrameVoted" + id ), true ) +} + +//Sets and updates selected location +void function UpdateVotedLocation_FSDM(string map) +{ + SetVoteHudElems(false, false, false, false, false, false, false, true, true, false, false, false) + + Hud_SetText( Hud_GetChild( file.menu, "VotedForLbl" ), "Next Location: " + map) +} + +//Sets and updates tied voting screen +void function UpdateVotedLocation_FSDMTied(string map) +{ + SetVoteHudElems(false, true, true, true, false, false, false, true, true, false, false, false) + + Hud_SetText( Hud_GetChild( file.menu, "TimerText" ), "Picking a random location from tied locations") + Hud_SetText( Hud_GetChild( file.menu, "TimerText2" ), "Votes Tied!") + Hud_SetText( Hud_GetChild( file.menu, "VotedForLbl" ), map) +} +//Inits vote menu +void function Init_FSDM_ProphuntScoreboardMenu( var newMenuArg ) +{ + var menu = GetMenu( "FSProphuntScoreboardMenu" ) + file.prophuntMenu = menu + + AddMenuEventHandler( menu, eUIEvent.MENU_NAVIGATE_BACK, On_FSDM__NavigateBack ) + + //Hide all scoreboard buttons + array serverbuttons = GetElementsByClassname( file.prophuntMenu, "ScoreboardPropsUIButton" ) + + foreach ( var elem in serverbuttons ) + { + Hud_SetVisible(elem, false) + } + + array serverbuttons2 = GetElementsByClassname( file.prophuntMenu, "ScoreboardHuntersUIButton" ) + + foreach ( var elem in serverbuttons2 ) + { + Hud_SetVisible(elem, false) + } +} +void function Init_FSDM_VoteMenu( var newMenuArg ) +{ + var menu = GetMenu( "FSDMVoteMenu" ) + file.menu = menu + + AddMenuEventHandler( menu, eUIEvent.MENU_NAVIGATE_BACK, On_FSDM__NavigateBack ) + + AddButtonEventHandler( Hud_GetChild( menu, "MapVote1" ), UIE_CLICK, OnClickMap ) + AddButtonEventHandler( Hud_GetChild( menu, "MapVote2" ), UIE_CLICK, OnClickMap ) + AddButtonEventHandler( Hud_GetChild( menu, "MapVote3" ), UIE_CLICK, OnClickMap ) + AddButtonEventHandler( Hud_GetChild( menu, "MapVote4" ), UIE_CLICK, OnClickMap ) + + AddButtonEventHandler( Hud_GetChild( menu, "TeamSeekersButton"), UIE_CLICK, SetTeam_IMC ) + AddButtonEventHandler( Hud_GetChild( menu, "TeamPropsButton"), UIE_CLICK, SetTeam_MILITIA ) + + RuiSetInt( Hud_GetRui( Hud_GetChild( menu, "TeamSeekersButton")), "status", eFriendStatus.ONLINE_AWAY ) + RuiSetInt( Hud_GetRui( Hud_GetChild( menu, "TeamPropsButton")), "status", eFriendStatus.ONLINE_AWAY ) + + //Hide all dm scoreboard buttons + array serverbuttons = GetElementsByClassname( file.menu, "ScoreboardUIButton" ) + foreach ( var elem in serverbuttons ) + { + Hud_SetVisible(elem, false) + } +} + +void function SetTeam_IMC(var button) +{ + RuiSetInt( Hud_GetRui( Hud_GetChild( file.menu, "TeamSeekersButton")), "status", eFriendStatus.ONLINE ) + RuiSetInt( Hud_GetRui( Hud_GetChild( file.menu, "TeamPropsButton")), "status", eFriendStatus.OFFLINE ) + RunClientScript("ClientAskedForTeam", 0) + Hud_SetEnabled(Hud_GetChild( file.menu, "TeamPropsButton"), false) +} + +void function SetTeam_MILITIA(var button) +{ + RuiSetInt( Hud_GetRui( Hud_GetChild( file.menu, "TeamSeekersButton")), "status", eFriendStatus.OFFLINE ) + RuiSetInt( Hud_GetRui( Hud_GetChild( file.menu, "TeamPropsButton")), "status", eFriendStatus.ONLINE ) + RunClientScript("ClientAskedForTeam", 1) + Hud_SetEnabled(Hud_GetChild( file.menu, "TeamSeekersButton"), false) +} + +void function Disable_MILITIAButton() +{ + RuiSetInt( Hud_GetRui( Hud_GetChild( file.menu, "TeamPropsButton")), "status", eFriendStatus.OFFLINE ) + Hud_SetEnabled(Hud_GetChild( file.menu, "TeamPropsButton"), false) + + RuiSetInt( Hud_GetRui( Hud_GetChild( file.menu, "TeamSeekersButton")), "status", eFriendStatus.ONLINE ) + Hud_SetEnabled(Hud_GetChild( file.menu, "TeamSeekersButton"), false) +} + +void function Disable_IMCButton() +{ + RuiSetInt( Hud_GetRui( Hud_GetChild( file.menu, "TeamSeekersButton")), "status", eFriendStatus.OFFLINE ) + Hud_SetEnabled(Hud_GetChild( file.menu, "TeamSeekersButton"), false) + + RuiSetInt( Hud_GetRui( Hud_GetChild( file.menu, "TeamPropsButton")), "status", eFriendStatus.ONLINE ) + Hud_SetEnabled(Hud_GetChild( file.menu, "TeamPropsButton"), false) +} + +void function SetVoteHudElems(bool MapVote, bool TimerFrame, bool TimerText2, bool TimerText, bool MapVoteFrame, bool _FSDM_BottomFrame, bool ObjectiveText, bool MapVoteFrame2, bool VotedForLbl, bool WinnerLbl, bool WinnerFrame, bool Scoreboard) +{ + for(int i = 1; i < 5; i++ ) { + Hud_SetVisible( Hud_GetChild( file.menu, "MapVote" + i ), MapVote ) + Hud_SetVisible( Hud_GetChild( file.menu, "MapVoteImage" + i ), MapVote ) + Hud_SetVisible( Hud_GetChild( file.menu, "MapVoteLabelVotes" + i ), MapVote ) + Hud_SetVisible( Hud_GetChild( file.menu, "MapVoteLabelVotesFrame" + i ), MapVote ) + Hud_SetVisible( Hud_GetChild( file.menu, "MapVoteLabelName" + i ), MapVote ) + Hud_SetVisible( Hud_GetChild( file.menu, "MapVoteLabelNameFrame" + i ), MapVote ) + } + + if(GetCurrentPlaylistName() != "fs_prophunt") + { + array ScoreboardUI = GetElementsByClassname( file.menu, "ScoreboardUI" ) + foreach ( var elem in ScoreboardUI ) + { + Hud_SetVisible(elem, Scoreboard) + } + Hud_SetVisible(Hud_GetChild( file.menu, "ScoreboardText"), Scoreboard) + } + else + { + array ScoreboardUI0 = GetElementsByClassname( file.menu, "ScoreboardUI" ) + foreach ( var elem in ScoreboardUI0 ) + { + Hud_SetVisible(elem, false) + } + Hud_SetVisible(Hud_GetChild( file.menu, "ScoreboardText"), false) + + if(Scoreboard) + AdvanceMenu( file.prophuntMenu ) + else + { + CloseAllMenus() + AdvanceMenu( file.menu ) + } + + array ScoreboardUI = GetElementsByClassname( file.prophuntMenu, "ScoreboardPropsUI" ) + foreach ( var elem in ScoreboardUI ) + { + Hud_SetVisible(elem, Scoreboard) + } + Hud_SetVisible(Hud_GetChild( file.prophuntMenu, "ScoreboardText"), Scoreboard) + } + + if(!MapVote) + for(int i = 1; i < 5; i++ ) { + Hud_SetVisible( Hud_GetChild( file.menu, "MapVoteLabelNameFrameVoted" + i ), MapVote ) + } + + Hud_SetVisible(Hud_GetChild( file.menu, "TimerFrame"), TimerFrame) + Hud_SetVisible(Hud_GetChild( file.menu, "TimerText2"), TimerText2) + Hud_SetVisible(Hud_GetChild( file.menu, "TimerText" ), TimerText) + + Hud_SetVisible( Hud_GetChild( file.menu, "MapVoteFrame" ), MapVoteFrame ) + Hud_SetVisible( Hud_GetChild( file.menu, "_FSDM_BottomFrame" ), _FSDM_BottomFrame ) + Hud_SetVisible( Hud_GetChild( file.menu, "ObjectiveText" ), ObjectiveText ) + + Hud_SetVisible( Hud_GetChild( file.menu, "MapVoteFrame2" ), MapVoteFrame2 ) + Hud_SetVisible( Hud_GetChild( file.menu, "VotedForLbl" ), VotedForLbl ) + + if(GetCurrentPlaylistName() != "fs_prophunt") + MapVote = false + + Hud_SetVisible( Hud_GetChild( file.menu, "SelectTeamText" ), MapVote ) + Hud_SetEnabled( Hud_GetChild( file.menu, "SelectTeamText" ), MapVote ) + + Hud_SetVisible( Hud_GetChild( file.menu, "SelectTeamFrame" ), MapVote ) + Hud_SetEnabled( Hud_GetChild( file.menu, "SelectTeamFrame" ), MapVote ) + + Hud_SetVisible( Hud_GetChild( file.menu, "TeamPropsButton" ), MapVote ) + Hud_SetEnabled( Hud_GetChild( file.menu, "TeamPropsButton" ), MapVote ) + + Hud_SetVisible( Hud_GetChild( file.menu, "TeamSeekersButton" ), MapVote ) + Hud_SetEnabled( Hud_GetChild( file.menu, "TeamSeekersButton" ), MapVote ) + + if(MapVote) + { + RuiSetInt( Hud_GetRui( Hud_GetChild( file.menu, "TeamSeekersButton")), "status", eFriendStatus.ONLINE_AWAY ) + RuiSetInt( Hud_GetRui( Hud_GetChild( file.menu, "TeamPropsButton")), "status", eFriendStatus.ONLINE_AWAY ) + } + + if(VotedForLbl) + { + Hud_SetVisible(Hud_GetChild( file.menu, "TextCredits2"), false) + Hud_SetVisible(Hud_GetChild( file.menu, "TextCredits"), false) + Hud_SetVisible(Hud_GetChild( file.menu, "VotingPhaseChatBox"), false) + } + + Hud_SetVisible(Hud_GetChild( file.menu, "WinnerLbl"), WinnerLbl) + Hud_SetVisible(Hud_GetChild( file.menu, "WinnerFrame"), WinnerFrame) +} + +//Button event handlers +void function OnClickMap( var button ) +{ + int buttonId = Hud_GetScriptID( button ).tointeger() + + RunClientScript("UI_To_Client_VoteForMap_FSDM", buttonId ) +} + +void function OnGetFocusMap( var button ) +{ + int buttonId = Hud_GetScriptID( button ).tointeger() + + Hud_SetVisible( Hud_GetChild( file.menu, "MapVoteImageFocused" + buttonId ), true ) + RuiSetFloat( Hud_GetRui( Hud_GetChild( file.menu, "MapVoteImageFocused" + buttonId ) ), "basicImageAlpha", 0.5) +} + +void function OnLoseFocusMap( var button ) +{ + int buttonId = Hud_GetScriptID( button ).tointeger() + Hud_SetVisible( Hud_GetChild( file.menu, "MapVoteImageFocused1" ), false ) +} + +void function FocusChat( var panel ) +{ + if(!Hud_IsFocused( Hud_GetChild( Hud_GetChild( file.menu, "VotingPhaseChatBox"), "ChatInputLine" ) )) + { + Hud_StartMessageMode( Hud_GetChild( file.menu, "VotingPhaseChatBox") ) + Hud_SetEnabled( Hud_GetChild( Hud_GetChild( file.menu, "VotingPhaseChatBox"), "ChatInputLine" ), true) + Hud_SetVisible( Hud_GetChild( Hud_GetChild( file.menu, "VotingPhaseChatBox"), "ChatInputLine" ), true ) + Hud_SetFocused( Hud_GetChild( Hud_GetChild( file.menu, "VotingPhaseChatBox"), "ChatInputLine" ) ) + } +} + +void function On_FSDM__NavigateBack() +{ + // gotta have NavigateBack blank so that you cant close the menu +} \ No newline at end of file diff --git a/vscripts/ui/FlowstateDM/flowstate_scoreboard.nut b/vscripts/ui/FlowstateDM/flowstate_scoreboard.nut new file mode 100644 index 000000000..666a9d2f1 --- /dev/null +++ b/vscripts/ui/FlowstateDM/flowstate_scoreboard.nut @@ -0,0 +1,305 @@ +global function Init_FSDM_VoteMenu +global function Open_FSDM_VotingPhase +global function Close_FSDM_VoteMenu + +global function Set_FSDM_VoteMenuNextRound +global function Set_FSDM_VotingScreen +global function Set_FSDM_TeamWonScreen +global function Set_FSDM_ScoreboardScreen + +global function UpdateVoteTimer_FSDM +global function UpdateVotesUI_FSDM +global function UpdateMapsForVoting_FSDM +global function UpdateVotedFor_FSDM +global function UpdateVotedLocation_FSDM +global function UpdateVotedLocation_FSDMTied +global function SendScoreboardToUI +global function ClearScoreboardOnUI + +global struct PlayerInfo +{ + string name + int team + int score + int deaths + float kd + int damage + int lastLatency +} + +struct +{ + var menu + var prophuntMenu + array FSDM_Scoreboard +} file + +//Opens vote menu +void function Open_FSDM_VotingPhase() +{ + CloseAllMenus() + AdvanceMenu( file.menu ) + + Hud_SetVisible(Hud_GetChild( file.menu, "TextCredits2"), true) + Hud_SetVisible(Hud_GetChild( file.menu, "TextCredits"), true) + + Hud_SetVisible( Hud_GetChild( file.menu, "VotingPhaseChatBox"), false ) + Hud_SetAboveBlur( Hud_GetChild( file.menu, "VotingPhaseChatBox"), false ) + Hud_SetEnabled( Hud_GetChild( Hud_GetChild( file.menu, "VotingPhaseChatBox"), "ChatInputLine" ), false) +} + +//Sets and updates the team won screen +void function Set_FSDM_TeamWonScreen(string teamwon) +{ + SetVoteHudElems(false, true, false, false, false, false, false, false, false, false, false, false) + + // Hud_SetText( Hud_GetChild( file.menu, "WinnerLbl" ), teamwon) + +} + +void function SendScoreboardToUI(string name, int score, int deaths, float kd, int damage, int latency) +{ + PlayerInfo p + p.name = name + p.score = score + p.deaths = deaths + p.kd = kd + p.damage = damage + p.lastLatency = latency + + file.FSDM_Scoreboard.append(p) +} + +void function ClearScoreboardOnUI() +{ + file.FSDM_Scoreboard.clear() +} + +int function ComparePlayerInfo(PlayerInfo a, PlayerInfo b) +{ + if(a.score < b.score) return 1; + else if(a.score > b.score) return -1; + return 0; +} + +//Sets and updates the team won screen +void function Set_FSDM_ScoreboardScreen() +{ + thread function() : () + { + SetVoteHudElems(false, true, false, false, false, false, false, false, false, false, false, true) + + if(GetCurrentPlaylistName() == "fs_prophunt") + Hud_SetText( Hud_GetChild( file.menu, "ScoreboardText" ), "PROPHUNT SCOREBOARD") + + while(file.FSDM_Scoreboard.len() == 0) //defensive fix + WaitFrame() + + file.FSDM_Scoreboard.sort(ComparePlayerInfo) + + for( int i=0; i < file.FSDM_Scoreboard.len() && i < 10; i++ ) + { + Hud_SetText( Hud_GetChild( file.menu, "PlayerName" + i ), file.FSDM_Scoreboard[i].name ) + Hud_SetText( Hud_GetChild( file.menu, "Kills" + i ), file.FSDM_Scoreboard[i].score.tostring() ) + Hud_SetText( Hud_GetChild( file.menu, "Deaths" + i ), file.FSDM_Scoreboard[i].deaths.tostring() ) + Hud_SetText( Hud_GetChild( file.menu, "KD" + i ), file.FSDM_Scoreboard[i].kd.tostring() ) + Hud_SetText( Hud_GetChild( file.menu, "Damage" + i ), file.FSDM_Scoreboard[i].damage.tostring() ) + // Hud_SetText( Hud_GetChild( file.menu, "Latency" + i ), file.FSDM_Scoreboard[i].lastLatency.tostring() ) + } + }() +} + +//Sets and updates the voting screen +void function Set_FSDM_VotingScreen() +{ + try{ + RegisterButtonPressedCallback( KEY_ENTER, FocusChat ) + }catch(e420){} + SetVoteHudElems(true, true, true, true, true, true, true, false, false, false, false, false) + + for(int i = 1; i < 5; i++ ) { + Hud_SetEnabled( Hud_GetChild( file.menu, "MapVote" + i ), true ) + } + + Hud_SetVisible( Hud_GetChild( file.menu, "VotingPhaseChatBox"), true ) + Hud_SetAboveBlur( Hud_GetChild( file.menu, "VotingPhaseChatBox"), true ) + Hud_SetEnabled( Hud_GetChild( Hud_GetChild( file.menu, "VotingPhaseChatBox"), "ChatInputLine" ), false) +} + +//Sets and updates the next round screen +void function Set_FSDM_VoteMenuNextRound() +{ + SetVoteHudElems(false, false, false, false, false, false, false, true, true, false, false, false) + + Hud_SetText( Hud_GetChild( file.menu, "VotedForLbl" ), "Starting Next Round!") +} + +//Update current maps up for vote +void function UpdateMapsForVoting_FSDM(string map1, asset map1asset, string map2, asset map2asset, string map3, asset map3asset, string map4, asset map4asset) +{ + Hud_SetText(Hud_GetChild( file.menu, "MapVoteLabelName1" ), map1 ) + Hud_SetText(Hud_GetChild( file.menu, "MapVoteLabelName2" ), map2 ) + Hud_SetText(Hud_GetChild( file.menu, "MapVoteLabelName3" ), map3 ) + Hud_SetText(Hud_GetChild( file.menu, "MapVoteLabelName4" ), map4 ) + + RuiSetImage( Hud_GetRui( Hud_GetChild( file.menu, "MapVoteImage1" ) ), "basicImage", map1asset ) + RuiSetImage( Hud_GetRui( Hud_GetChild( file.menu, "MapVoteImage2" ) ), "basicImage", map2asset ) + RuiSetImage( Hud_GetRui( Hud_GetChild( file.menu, "MapVoteImage3" ) ), "basicImage", map3asset ) + RuiSetImage( Hud_GetRui( Hud_GetChild( file.menu, "MapVoteImage4" ) ), "basicImage", map4asset ) +} + +//Closes the vote menu +void function Close_FSDM_VoteMenu() +{ + try{ + DeregisterButtonPressedCallback( KEY_ENTER, FocusChat ) + }catch(e420){} + CloseAllMenus() +} + +//Update vote time left +void function UpdateVoteTimer_FSDM(int timeleft) +{ + Hud_SetText(Hud_GetChild( file.menu, "TimerText" ), timeleft.tostring()) +} + +//Update current votes for each map +void function UpdateVotesUI_FSDM(int map1, int map2, int map3, int map4) +{ + Hud_SetText(Hud_GetChild( file.menu, "MapVoteLabelVotes1" ), "Votes: " + map1 ) + Hud_SetText(Hud_GetChild( file.menu, "MapVoteLabelVotes2" ), "Votes: " + map2 ) + Hud_SetText(Hud_GetChild( file.menu, "MapVoteLabelVotes3" ), "Votes: " + map3 ) + Hud_SetText(Hud_GetChild( file.menu, "MapVoteLabelVotes4" ), "Votes: " + map4 ) +} + +//Lock Buttons and update the map player voted for +void function UpdateVotedFor_FSDM(int id) +{ + for(int i = 1; i < 5; i++ ) { + // RuiSetInt( Hud_GetRui( Hud_GetChild( file.menu, "MapVote" + i )), "status", eFriendStatus.OFFLINE ) + Hud_SetEnabled( Hud_GetChild( file.menu, "MapVote" + i ), false ) + } + Hud_SetVisible( Hud_GetChild( file.menu, "MapVoteLabelNameFrame" + id ), false ) + Hud_SetVisible( Hud_GetChild( file.menu, "MapVoteLabelNameFrameVoted" + id ), true ) +} + +//Sets and updates selected location +void function UpdateVotedLocation_FSDM(string map) +{ + SetVoteHudElems(false, false, false, false, false, false, false, true, true, false, false, false) + + Hud_SetText( Hud_GetChild( file.menu, "VotedForLbl" ), "Next Location: " + map) +} + +//Sets and updates tied voting screen +void function UpdateVotedLocation_FSDMTied(string map) +{ + SetVoteHudElems(false, true, true, true, false, false, false, true, true, false, false, false) + + Hud_SetText( Hud_GetChild( file.menu, "TimerText" ), "Picking a random location from tied locations") + Hud_SetText( Hud_GetChild( file.menu, "TimerText2" ), "Votes Tied!") + Hud_SetText( Hud_GetChild( file.menu, "VotedForLbl" ), map) +} + +//Inits vote menu +void function Init_FSDM_VoteMenu( var newMenuArg ) +{ + var menu = GetMenu( "FSDMVoteMenu" ) + file.menu = menu + + AddMenuEventHandler( menu, eUIEvent.MENU_NAVIGATE_BACK, On_FSDM__NavigateBack ) + + AddButtonEventHandler( Hud_GetChild( menu, "MapVote1" ), UIE_CLICK, OnClickMap ) + AddButtonEventHandler( Hud_GetChild( menu, "MapVote2" ), UIE_CLICK, OnClickMap ) + AddButtonEventHandler( Hud_GetChild( menu, "MapVote3" ), UIE_CLICK, OnClickMap ) + AddButtonEventHandler( Hud_GetChild( menu, "MapVote4" ), UIE_CLICK, OnClickMap ) + + //Hide all scoreboard buttons + array serverbuttons = GetElementsByClassname( file.menu, "ScoreboardUIButton" ) + foreach ( var elem in serverbuttons ) + { + Hud_SetVisible(elem, false) + } +} + +void function SetVoteHudElems(bool MapVote, bool TimerFrame, bool TimerText2, bool TimerText, bool MapVoteFrame, bool _FSDM_BottomFrame, bool ObjectiveText, bool MapVoteFrame2, bool VotedForLbl, bool WinnerLbl, bool WinnerFrame, bool Scoreboard) +{ + for(int i = 1; i < 5; i++ ) { + Hud_SetVisible( Hud_GetChild( file.menu, "MapVote" + i ), MapVote ) + Hud_SetVisible( Hud_GetChild( file.menu, "MapVoteImage" + i ), MapVote ) + Hud_SetVisible( Hud_GetChild( file.menu, "MapVoteLabelVotes" + i ), MapVote ) + Hud_SetVisible( Hud_GetChild( file.menu, "MapVoteLabelVotesFrame" + i ), MapVote ) + Hud_SetVisible( Hud_GetChild( file.menu, "MapVoteLabelName" + i ), MapVote ) + Hud_SetVisible( Hud_GetChild( file.menu, "MapVoteLabelNameFrame" + i ), MapVote ) + } + + array ScoreboardUI = GetElementsByClassname( file.menu, "ScoreboardUI" ) + foreach ( var elem in ScoreboardUI ) + { + Hud_SetVisible(elem, Scoreboard) + } + Hud_SetVisible(Hud_GetChild( file.menu, "ScoreboardText"), Scoreboard) + + if(!MapVote) + for(int i = 1; i < 5; i++ ) { + Hud_SetVisible( Hud_GetChild( file.menu, "MapVoteLabelNameFrameVoted" + i ), MapVote ) + } + + Hud_SetVisible(Hud_GetChild( file.menu, "TimerFrame"), TimerFrame) + Hud_SetVisible(Hud_GetChild( file.menu, "TimerText2"), TimerText2) + Hud_SetVisible(Hud_GetChild( file.menu, "TimerText" ), TimerText) + + Hud_SetVisible( Hud_GetChild( file.menu, "MapVoteFrame" ), MapVoteFrame ) + Hud_SetVisible( Hud_GetChild( file.menu, "_FSDM_BottomFrame" ), _FSDM_BottomFrame ) + Hud_SetVisible( Hud_GetChild( file.menu, "ObjectiveText" ), ObjectiveText ) + + Hud_SetVisible( Hud_GetChild( file.menu, "MapVoteFrame2" ), MapVoteFrame2 ) + Hud_SetVisible( Hud_GetChild( file.menu, "VotedForLbl" ), VotedForLbl ) + if(VotedForLbl) + { + Hud_SetVisible(Hud_GetChild( file.menu, "TextCredits2"), false) + Hud_SetVisible(Hud_GetChild( file.menu, "TextCredits"), false) + Hud_SetVisible(Hud_GetChild( file.menu, "VotingPhaseChatBox"), false) + } + + Hud_SetVisible(Hud_GetChild( file.menu, "WinnerLbl"), WinnerLbl) + Hud_SetVisible(Hud_GetChild( file.menu, "WinnerFrame"), WinnerFrame) +} + +//Button event handlers +void function OnClickMap( var button ) +{ + int buttonId = Hud_GetScriptID( button ).tointeger() + + RunClientScript("UI_To_Client_VoteForMap_FSDM", buttonId ) +} + +void function OnGetFocusMap( var button ) +{ + int buttonId = Hud_GetScriptID( button ).tointeger() + + Hud_SetVisible( Hud_GetChild( file.menu, "MapVoteImageFocused" + buttonId ), true ) + RuiSetFloat( Hud_GetRui( Hud_GetChild( file.menu, "MapVoteImageFocused" + buttonId ) ), "basicImageAlpha", 0.5) +} + +void function OnLoseFocusMap( var button ) +{ + int buttonId = Hud_GetScriptID( button ).tointeger() + Hud_SetVisible( Hud_GetChild( file.menu, "MapVoteImageFocused1" ), false ) +} + +void function FocusChat( var panel ) +{ + if(!Hud_IsFocused( Hud_GetChild( Hud_GetChild( file.menu, "VotingPhaseChatBox"), "ChatInputLine" ) )) + { + Hud_StartMessageMode( Hud_GetChild( file.menu, "VotingPhaseChatBox") ) + Hud_SetEnabled( Hud_GetChild( Hud_GetChild( file.menu, "VotingPhaseChatBox"), "ChatInputLine" ), true) + Hud_SetVisible( Hud_GetChild( Hud_GetChild( file.menu, "VotingPhaseChatBox"), "ChatInputLine" ), true ) + Hud_SetFocused( Hud_GetChild( Hud_GetChild( file.menu, "VotingPhaseChatBox"), "ChatInputLine" ) ) + } +} + +void function On_FSDM__NavigateBack() +{ + // gotta have NavigateBack blank so that you cant close the menu +} \ No newline at end of file diff --git a/vscripts/ui/FlowstateDM/flowstate_statistics.nut b/vscripts/ui/FlowstateDM/flowstate_statistics.nut new file mode 100644 index 000000000..192c1d0a6 --- /dev/null +++ b/vscripts/ui/FlowstateDM/flowstate_statistics.nut @@ -0,0 +1,309 @@ +global function InitStatisticsUI +global function OpenStatisticsUI +// global function HistoryUI_AddNewChallenge + +// global const AIMTRAINER_HISTORYUI_SERVERS_PER_PAGE = 19 + +struct +{ + var menu + bool wpnselectorToggle = false +} file + +//Struct for page system +struct +{ + int pAmount + int pCurrent + int pOffset + int pStart + int pEnd +} m_vPages + +//Struct for results data +struct ResultsHistory +{ + string ChallengeName + int Kills + int ShotsHit + string ChallengeWeapon + string ChallengeAccuracy + int Damage + int CriticalShots + int TotalShots + int RoundTime +} + +array ChallengesHistory + +void function OpenStatisticsUI() +{ + //use dummies killed + CloseAllMenus() + EmitUISound("UI_Menu_SelectMode_Extend") + AdvanceMenu( file.menu ) + + // if(ChallengesHistory.len() == 0) + // { + // ShowNoChallengesPlayed(true) + // Hud_SetVisible( Hud_GetChild( file.menu, "BtnServerListRightArrow"), false ) + // Hud_SetVisible( Hud_GetChild( file.menu, "BtnServerListLeftArrow"), false ) + // Hud_SetVisible( Hud_GetChild( file.menu, "Pages"), false ) + // Hud_SetVisible( Hud_GetChild( file.menu, "PrintToConsole"), false ) + // m_vPages.pAmount = 0 + // } + // else + // { + // ChallengesHistory.reverse() + // m_vPages.pAmount = ChallengesHistory.len()/AIMTRAINER_HISTORYUI_SERVERS_PER_PAGE + + // ShowNoChallengesPlayed(false) + // Hud_SetVisible( Hud_GetChild( file.menu, "BtnServerListRightArrow"), true ) + // Hud_SetVisible( Hud_GetChild( file.menu, "BtnServerListLeftArrow"), true ) + // Hud_SetVisible( Hud_GetChild( file.menu, "Pages"), true ) + // Hud_SetText (Hud_GetChild( file.menu, "Pages" ), " Page: 1/" + (m_vPages.pAmount + 1) + " ") + // Hud_SetVisible( Hud_GetChild( file.menu, "PrintToConsole"), true ) + + // for( int i=0; i < ChallengesHistory.len() && i < AIMTRAINER_HISTORYUI_SERVERS_PER_PAGE; i++ ) + // { + // Hud_SetText( Hud_GetChild( file.menu, "ChallengeName" + i ), ChallengesHistory[i].ChallengeName ) + // Hud_SetText( Hud_GetChild( file.menu, "Kills" + i ), ChallengesHistory[i].Kills.tostring() ) + // Hud_SetText( Hud_GetChild( file.menu, "Score" + i ), ChallengesHistory[i].ShotsHit.tostring() ) + // Hud_SetText( Hud_GetChild( file.menu, "ChallengeWeapon" + i ), ChallengesHistory[i].ChallengeWeapon ) + // Hud_SetText( Hud_GetChild( file.menu, "ChallengeAccuracy" + i ), ChallengesHistory[i].ChallengeAccuracy.tostring() ) + // } + // } +} + +void function PrevPage(var button) +{ + //If Pages is 0 then return + //or if is one the first page + if(m_vPages.pAmount == 0 || m_vPages.pCurrent == 0) + return + + // Reset Server Labels + ResetChallengesLabels() + + // Set current page to prev page + m_vPages.pCurrent-- + + // If current page is less then first page set to first page + if(m_vPages.pCurrent < 0) + m_vPages.pCurrent = 0 + + //Set Start ID / End ID / and ID Offset + m_vPages.pStart = m_vPages.pCurrent * AIMTRAINER_HISTORYUI_SERVERS_PER_PAGE + m_vPages.pEnd = m_vPages.pStart + AIMTRAINER_HISTORYUI_SERVERS_PER_PAGE + m_vPages.pOffset = m_vPages.pCurrent * AIMTRAINER_HISTORYUI_SERVERS_PER_PAGE + + // Check if m_vPages.pEnd is greater then actual amount of servers + if(m_vPages.pEnd > ChallengesHistory.len()) + m_vPages.pEnd = ChallengesHistory.len() + + // Set current page ui + Hud_SetText(Hud_GetChild( file.menu, "Pages" ), " Page:" + (m_vPages.pCurrent + 1) + "/" + (m_vPages.pAmount + 1) + " ") + + // "id" is diffrent from "i" and is used for setting UI elements + // "i" is used for server id + int id = 0 + for( int i=m_vPages.pStart; i < m_vPages.pEnd; i++ ) { + Hud_SetText( Hud_GetChild( file.menu, "ChallengeName" + id ), ChallengesHistory[i].ChallengeName ) + Hud_SetText( Hud_GetChild( file.menu, "Kills" + id ), ChallengesHistory[i].Kills.tostring() ) + Hud_SetText( Hud_GetChild( file.menu, "Score" + id ), ChallengesHistory[i].ShotsHit.tostring() ) + Hud_SetText( Hud_GetChild( file.menu, "ChallengeWeapon" + id ), ChallengesHistory[i].ChallengeWeapon ) + Hud_SetText( Hud_GetChild( file.menu, "ChallengeAccuracy" + id ), ChallengesHistory[i].ChallengeAccuracy.tostring() ) + id++ + } +} + +void function NextPage(var button) +{ + //If Pages is 0 then return + //or if is on the last page + if(m_vPages.pAmount == 0 || m_vPages.pCurrent == m_vPages.pAmount ) + return + + // Reset Server Labels + ResetChallengesLabels() + + // Set current page to next page + m_vPages.pCurrent++ + + // If current page is greater then last page set to last page + if(m_vPages.pCurrent > m_vPages.pAmount) + m_vPages.pCurrent = m_vPages.pAmount + + //Set Start ID / End ID / and ID Offset + m_vPages.pStart = m_vPages.pCurrent * AIMTRAINER_HISTORYUI_SERVERS_PER_PAGE + m_vPages.pEnd = m_vPages.pStart + AIMTRAINER_HISTORYUI_SERVERS_PER_PAGE + m_vPages.pOffset = m_vPages.pCurrent * AIMTRAINER_HISTORYUI_SERVERS_PER_PAGE + + // Check if m_vPages.pEnd is greater then actual amount of servers + if(m_vPages.pEnd > ChallengesHistory.len()) + m_vPages.pEnd = ChallengesHistory.len() + + // Set current page ui + Hud_SetText(Hud_GetChild( file.menu, "Pages" ), " Page:" + (m_vPages.pCurrent + 1) + "/" + (m_vPages.pAmount + 1) + " ") + + // "id" is diffrent from "i" and is used for setting UI elements + // "i" is used for server id + int id = 0 + for( int i=m_vPages.pStart; i < m_vPages.pEnd; i++ ) { + Hud_SetText( Hud_GetChild( file.menu, "ChallengeName" + id ), ChallengesHistory[i].ChallengeName ) + Hud_SetText( Hud_GetChild( file.menu, "Kills" + id ), ChallengesHistory[i].Kills.tostring() ) + Hud_SetText( Hud_GetChild( file.menu, "Score" + id ), ChallengesHistory[i].ShotsHit.tostring() ) + Hud_SetText( Hud_GetChild( file.menu, "ChallengeWeapon" + id ), ChallengesHistory[i].ChallengeWeapon ) + Hud_SetText( Hud_GetChild( file.menu, "ChallengeAccuracy" + id ), ChallengesHistory[i].ChallengeAccuracy.tostring() ) + id++ + } +} + +void function ResetChallengesLabels() +{ + //Hide all server buttons + array serverbuttons = GetElementsByClassname( file.menu, "ChallengeBtn" ) + foreach ( var elem in serverbuttons ) + { + Hud_SetVisible(elem, false) + } + + //Clear all server labels + array serverlabels = GetElementsByClassname( file.menu, "ServerLabels" ) + foreach ( var elem in serverlabels ) + { + Hud_SetText(elem, "") + } +} + +void function InitStatisticsUI( var newMenuArg ) +{ + var menu = GetMenu( "StatisticsUI" ) + file.menu = menu + + AddMenuEventHandler( menu, eUIEvent.MENU_SHOW, OnR5RSB_Show ) + AddMenuEventHandler( menu, eUIEvent.MENU_OPEN, OnR5RSB_Open ) + AddMenuEventHandler( menu, eUIEvent.MENU_CLOSE, OnR5RSB_Close ) + AddMenuEventHandler( menu, eUIEvent.MENU_NAVIGATE_BACK, OnR5RSB_NavigateBack ) + + AddEventHandlerToButton( menu, "Challenges", UIE_CLICK, ChallengesButtonFunct ) + AddEventHandlerToButton( menu, "Settings", UIE_CLICK, SettingsButtonFunct ) + + //Setup Page Nav Buttons + Hud_AddEventHandler( Hud_GetChild( file.menu, "BtnServerListRightArrow" ), UIE_CLICK, NextPage ) + Hud_AddEventHandler( Hud_GetChild( file.menu, "BtnServerListLeftArrow" ), UIE_CLICK, PrevPage ) + Hud_AddEventHandler( Hud_GetChild( file.menu, "PrintToConsole" ), UIE_CLICK, PrintToConsole ) + + var gameMenuButton = Hud_GetChild( menu, "GameMenuButton" ) + ToolTipData gameMenuToolTip + gameMenuToolTip.descText = "Global Settings" + Hud_SetToolTipData( gameMenuButton, gameMenuToolTip ) + HudElem_SetRuiArg( gameMenuButton, "icon", $"rui/menu/lobby/settings_icon" ) + HudElem_SetRuiArg( gameMenuButton, "shortcutText", "Global Settings" ) + Hud_AddEventHandler( gameMenuButton, UIE_CLICK, OpenGlobalSettings ) + + array challengesRows = GetElementsByClassname( file.menu, "ChallengeBtn" ) + foreach ( var elem in challengesRows ) + { + RuiSetString( Hud_GetRui( elem ), "buttonText", "") + Hud_SetEnabled( elem, false ) + } +} + +// void function HistoryUI_AddNewChallenge(string Name, int ShotsHit, string Weapon, float Accuracy, int dummiesKilled, int Damage, int totalshots, int criticalshots, int roundtime) +// { + // string AccuracyShort = LocalizeAndShortenNumber_Float(Accuracy, 1, 2) + // if(AccuracyShort == "-na,n(i,nd).-n" || AccuracyShort == "-nan(ind)" || AccuracyShort == "-na.n(i.nd),-n") AccuracyShort = "0" + + // ResultsHistory newChallenge + // newChallenge.ChallengeName = Name + // newChallenge.Kills = dummiesKilled + // newChallenge.ShotsHit = ShotsHit + // newChallenge.ChallengeWeapon = GetWeaponNameForUI(Weapon)//.toupper() + // newChallenge.ChallengeAccuracy = AccuracyShort + // newChallenge.Damage = Damage + // newChallenge.CriticalShots = criticalshots + // newChallenge.TotalShots = totalshots + // newChallenge.RoundTime = roundtime + + // ChallengesHistory.push(newChallenge) +// } + +void function ShowNoChallengesPlayed(bool show) +{ + //Set no servers found ui based on bool + Hud_SetVisible(Hud_GetChild( file.menu, "NameLine" ), !show ) + Hud_SetVisible(Hud_GetChild( file.menu, "ScoreLine" ), !show ) + Hud_SetVisible(Hud_GetChild( file.menu, "WeaponLine" ), !show ) + Hud_SetVisible(Hud_GetChild( file.menu, "ShotshitLine" ), !show ) + Hud_SetVisible(Hud_GetChild( file.menu, "AccuracyLine" ), !show ) + Hud_SetVisible(Hud_GetChild( file.menu, "NoChallengesLbl" ), show ) +} + +void function PrintToConsole(var button) +{ + DevTextBufferClear() + DevTextBufferWrite("=== Aim Trainer v1.0 CSV Results Dump - Made by CaféDeColombiaFPS @CafeFPS === \n\n") + DevTextBufferWrite("ChallengeName, ShotsHit, Kills, Weapon, Accuracy, Damage, CriticalShots, TotalShots, Roundtime \n") + + foreach(challenge in ChallengesHistory) + DevTextBufferWrite( challenge.ChallengeName + +", "+challenge.ShotsHit + +", "+challenge.Kills + +", "+challenge.ChallengeWeapon + +", "+challenge.ChallengeAccuracy + +", "+challenge.Damage + +", "+challenge.CriticalShots + +", "+challenge.TotalShots + +", "+challenge.RoundTime + "\n") + + DevP4Checkout( "AimTrainer_Results_" + GetUnixTimestamp() + ".txt" ) + DevTextBufferDumpToFile( "AimTrainer_Results_" + GetUnixTimestamp() + ".txt" ) + + Warning("[!] CSV RESULTS SAVED IN /r5reloaded/r2/ === ") +} + +void function ChallengesButtonFunct(var button) +{ + CloseAllMenus() + ChallengesHistory.reverse() + // RunClientScript("ServerCallback_OpenFRChallengesMainMenu", PlayerKillsForChallengesUI) +} + +void function SettingsButtonFunct(var button) +{ + CloseAllMenus() + ChallengesHistory.reverse() + EmitUISound("UI_Menu_SelectMode_Close") + // RunClientScript("ServerCallback_OpenFRChallengesSettings") +} + +void function OnR5RSB_Show() +{ + // +} + +void function OnR5RSB_Open() +{ + // +} + + +void function OnR5RSB_Close() +{ + // +} + +void function OnR5RSB_NavigateBack() +{ + CloseAllMenus() + ChallengesHistory.reverse() + // RunClientScript("ServerCallback_OpenFRChallengesMainMenu", PlayerKillsForChallengesUI) +} + +void function OpenGlobalSettings(var button) +{ + CloseAllMenus() + ChallengesHistory.reverse() + AdvanceMenu( GetMenu( "SystemMenu" ) ) +} diff --git a/vscripts/ui/R5RMenus/menu_lobby.nut b/vscripts/ui/R5RMenus/menu_lobby.nut index 5fb8f836f..6f858c353 100644 --- a/vscripts/ui/R5RMenus/menu_lobby.nut +++ b/vscripts/ui/R5RMenus/menu_lobby.nut @@ -64,12 +64,12 @@ global table MapNames = { //Playlist to readable name global table playlisttoname = { - [ "custom_aimtrainer" ] = "Flowstate Aim Trainer", + [ fs_aimtrainer ] = "Flowstate Aim Trainer", [ "firingrange" ] = "Firing Range (Beta)", [ "survival" ] = "Battle Royale (Beta)", [ "FallLTM" ] = "ShadowFall", [ "duos" ] = "Duos (Beta)", - [ "flowstate_dm" ] = "Flowstate TDM/FFA", + [ "fs_dm" ] = "Flowstate TDM/FFA", [ "movement_gym"] = "Movement Gym", [ "custom_ctf" ] = "Capture The Flag", [ "survival_dev" ] = "Survival Dev", diff --git a/vscripts/ui/R5RMenus/panel_createserver.nut b/vscripts/ui/R5RMenus/panel_createserver.nut index eff1403a9..53eaa22f7 100644 --- a/vscripts/ui/R5RMenus/panel_createserver.nut +++ b/vscripts/ui/R5RMenus/panel_createserver.nut @@ -72,7 +72,7 @@ void function InitR5RCreateServerPanel( var panel ) ServerSettings.svServerName = "My custom server" ServerSettings.svServerDesc = "A R5Reloaded server" ServerSettings.svMapName = "mp_rr_aqueduct" - ServerSettings.svPlaylist = "flowstate_dm" + ServerSettings.svPlaylist = "fs_dm" ServerSettings.svVisibility = eServerVisibility.OFFLINE file.tempservername = ServerSettings.svServerName diff --git a/vscripts/ui/menu_dev.nut b/vscripts/ui/menu_dev.nut index 1dd7e08be..9fb5b0f18 100644 --- a/vscripts/ui/menu_dev.nut +++ b/vscripts/ui/menu_dev.nut @@ -276,16 +276,16 @@ void function SetupDefaultDevCommandsMP() if(GetCurrentPlaylistName() == "map_editor_deprecated") SetupDevMenu( "Editor", SetDevMenu_Editor ) - if(GetCurrentPlaylistName() == "flowstate_dm") + if(GetCurrentPlaylistName() == "fs_dm") SetupDevMenu( "TDM: Change Primary weapon", SetDevMenu_TDMPrimaryWeapons ) - if(GetCurrentPlaylistName() == "flowstate_dm") + if(GetCurrentPlaylistName() == "fs_dm") SetupDevMenu( "TDM: Change Secondary weapon", SetDevMenu_TDMSecondaryWeapons ) - if(GetCurrentPlaylistName() == "flowstate_dm") + if(GetCurrentPlaylistName() == "fs_dm") SetupDevCommand( "TDM: Save Current Weapons", "saveguns" ) - if(GetCurrentPlaylistName() == "flowstate_dm") + if(GetCurrentPlaylistName() == "fs_dm") SetupDevCommand( "TDM: Reset Saved Weapons", "resetguns" ) if(GetCheatsState()){ diff --git a/vscripts/ui/menu_system.nut b/vscripts/ui/menu_system.nut index 1540e2690..37f030c8f 100644 --- a/vscripts/ui/menu_system.nut +++ b/vscripts/ui/menu_system.nut @@ -227,7 +227,7 @@ void function UpdateSystemPanel( var panel ) if ( (GetTeamSize( GetTeam() ) > 1) && FiringRangeHasFriendlyFire() ) SetButtonData( panel, buttonIndex++, file.friendlyFireButtonData[ panel ] ) } - if( GetCurrentPlaylistName() == "flowstate_dm" && IsConnected() && !GetCurrentPlaylistVarBool("flowstate_1v1mode", false) ) + if( GetCurrentPlaylistName() == "fs_dm" && IsConnected() && !GetCurrentPlaylistVarBool("flowstate_1v1mode", false) ) { SetButtonData( panel, buttonIndex++, file.spectateButtonData[ panel ] ) SetButtonData( panel, buttonIndex++, file.respawnButtonData[ panel ] ) diff --git a/vscripts/weapons/mp_weapon_jump_pad.nut b/vscripts/weapons/mp_weapon_jump_pad.nut index 6fb8130aa..9273d1e48 100644 --- a/vscripts/weapons/mp_weapon_jump_pad.nut +++ b/vscripts/weapons/mp_weapon_jump_pad.nut @@ -100,7 +100,7 @@ void function OnJumpPadPlanted( entity projectile ) newProjectile.kv.solid = 6 - if(gameMode != "flowstate_dm") + if(gameMode != "fs_dm") { newProjectile.SetTakeDamageType( DAMAGE_YES ) newProjectile.SetMaxHealth( 100 ) @@ -118,7 +118,7 @@ void function OnJumpPadPlanted( entity projectile ) newProjectile.EndSignal( "OnDestroy" ) newProjectile.SetScriptName("jump_pad") - if(gameMode != "flowstate_dm") + if(gameMode != "fs_dm") thread TrapDestroyOnRoundEnd( owner, newProjectile ) if ( IsValid( traceResult.hitEnt ) ) @@ -151,7 +151,7 @@ void function OnJumpPadPlanted( entity projectile ) JumpPad_CreatedCallback( newProjectile ) - if(gameMode == "flowstate_dm"){ + if(gameMode == "fs_dm"){ thread JumpPadWatcher(newProjectile) } From 3589092de0bc8ebaa1b9bd814c61493618ebff29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caf=C3=A9DeColombiaFPS?= <92343247+ColombianGuy@users.noreply.github.com> Date: Wed, 3 May 2023 16:48:12 -0500 Subject: [PATCH 04/17] we're getting there --- vscripts/_anim.gnut | 4 +- vscripts/_clientcommands.gnut | 8 +- vscripts/_control_panel.gnut | 28 +++ vscripts/_init.gnut | 6 + vscripts/_mapspawn.gnut | 4 + vscripts/_script_movers.gnut | 44 ++-- vscripts/ai/_droppod.gnut | 13 +- vscripts/cl_mapspawn.gnut | 6 +- vscripts/cl_survival_inventory.nut | 53 ++++- vscripts/cl_survival_loot.nut | 15 +- vscripts/client/cl_gamestate.gnut | 89 ++++++- vscripts/client/cl_kill_replay_hud.gnut | 55 ++++- vscripts/client/cl_main_hud.nut | 45 +--- vscripts/client/cl_player.gnut | 77 +++--- vscripts/client/cl_player_common.gnut | 13 +- vscripts/client/cl_scoreboard_mp.nut | 2 +- vscripts/client/cl_screenfade.gnut | 2 +- vscripts/client/cl_utility.gnut | 2 +- vscripts/client/cl_zipline.gnut | 2 + vscripts/client/objects/cl_control_panel.nut | 4 +- vscripts/client/rui/cl_hud.gnut | 2 +- vscripts/collection_events.nut | 10 +- .../fs_aimtrainer/_gamemode_aimtrainer.nut | 224 +++++++++++++++++- .../fs_aimtrainer/cl_gamemode_aimtrainer.nut | 153 +++++++++++- vscripts/gamemodes/fs_tdm/_gamemode_fsdm.nut | 28 +-- .../gamemodes/fs_tdm/sh_gamemode_fsdm.nut | 1 - .../gamemodes/survival/_gamemode_survival.nut | 17 +- vscripts/pilot/_zipline.gnut | 7 +- vscripts/sh_anim_windows.gnut | 147 +++++++----- vscripts/sh_apex_screens.nut | 3 +- vscripts/sh_codecallbacks.gnut | 41 +++- vscripts/sh_damage_types.nut | 110 ++++++--- vscripts/sh_damage_utility.gnut | 3 + vscripts/sh_death_package.gnut | 32 +-- vscripts/sh_doors.nut | 4 +- vscripts/sh_extended_use.gnut | 4 + vscripts/sh_flightpath_utility.gnut | 5 +- vscripts/sh_highlight.gnut | 99 ++++++-- vscripts/sh_minimap.gnut | 3 + vscripts/sh_onboarding.gnut | 92 +++++-- vscripts/sh_passives.gnut | 31 ++- vscripts/sh_ping.gnut | 2 +- vscripts/sh_playlists.gnut | 30 ++- vscripts/sh_scoreboard.gnut | 10 +- vscripts/sh_survival_equipment_slot.gnut | 38 ++- vscripts/sh_survival_freefall.gnut | 4 +- vscripts/sh_survival_loot.gnut | 1 - vscripts/sh_survival_loot_all.gnut | 120 +++++++++- vscripts/sh_utility_all.gnut | 2 +- vscripts/ui/_menus.nut | 6 + vscripts/ui/menu_survival_ground_list.nut | 16 +- vscripts/ui/menu_system.nut | 74 ++++-- vscripts/ui/panel_models.nut | 8 +- vscripts/unitframes/cl_unitframes.gnut | 17 +- vscripts/weapons/mp_ability_3dash.nut | 1 + .../weapons/mp_weapon_grenade_gravity.nut | 142 +++++------ vscripts/weapons/sh_smart_ammo.gnut | 217 +++++++++++++++++ 57 files changed, 1677 insertions(+), 499 deletions(-) diff --git a/vscripts/_anim.gnut b/vscripts/_anim.gnut index 0b06155b9..98b4d64de 100644 --- a/vscripts/_anim.gnut +++ b/vscripts/_anim.gnut @@ -466,11 +466,13 @@ function __PlayAnim( guy, animation_name, reference = null, optionalTag = null, local origin = reference.GetOrigin() local angles = reference.GetAngles() - + try{ if ( guy.IsNPC() ) guy.Anim_ScriptedPlayWithRefPoint( animation, origin, angles, blendTime ) else guy.Anim_PlayWithRefPoint( animation, origin, angles, blendTime ) + } + catch(e420){} } diff --git a/vscripts/_clientcommands.gnut b/vscripts/_clientcommands.gnut index 46cb51386..c38531681 100644 --- a/vscripts/_clientcommands.gnut +++ b/vscripts/_clientcommands.gnut @@ -24,7 +24,10 @@ bool function ClientCommand_noclip( entity player, array args ) { if ( GetConVarInt( "sv_cheats" ) != 1 ) return true - + + if ( IsValid( player.GetParent() ) ) + return false + if ( player.IsPhaseShifted() ) return false @@ -39,8 +42,7 @@ bool function ClientCommand_noclip( entity player, array args ) bool function ClientCommand_ToggleThirdPerson( entity player, array args ) { if ( GetConVarInt( "sv_cheats" ) != 1 ) - return true - + return false if ( player.IsThirdPersonShoulderModeOn() ) player.SetThirdPersonShoulderModeOff() else diff --git a/vscripts/_control_panel.gnut b/vscripts/_control_panel.gnut index 378f7c47e..204e421ea 100644 --- a/vscripts/_control_panel.gnut +++ b/vscripts/_control_panel.gnut @@ -229,6 +229,30 @@ void function OnPanelSpawn_Internal( entity panel ) #endif } +void function SetPathfinder_HandUSB( entity player, bool showUSB = false ) +{ + entity firstPersonProxy = player.GetFirstPersonProxy() + + if ( showUSB ) + { + wait 1 + + int usbIndex = firstPersonProxy.FindBodygroup( "l_hand_usb" ) + // show the usb + if ( firstPersonProxy.GetBodygroupModelIndex( usbIndex ) == 0 ) + firstPersonProxy.SetBodygroupModelByIndex( usbIndex, 1 ) + } + else + { + wait 1 + + int usbIndex = firstPersonProxy.FindBodygroup( "l_hand_usb" ) + // hide the usb + if ( firstPersonProxy.GetBodygroupModelIndex( usbIndex ) != 0 ) + firstPersonProxy.SetBodygroupModelByIndex( usbIndex, 0 ) + } +} + void function PanelUpdateUsability( entity panel ) { panel.EndSignal( "OnDestroy" ) @@ -355,6 +379,8 @@ void function PlayerProgramsControlPanel( entity panel, entity player, string ha // need to wait here so that the panel script can start waiting for the PanelReprogrammed signal. WaitFrame() + + thread SetPathfinder_HandUSB( player, true ) local action = { @@ -423,6 +449,7 @@ void function PlayerProgramsControlPanel( entity panel, entity player, string ha { player.ClearAnimNearZ() player.ClearParent() + thread SetPathfinder_HandUSB( player ) // stop any running first person sequences player.Anim_Stop() @@ -546,6 +573,7 @@ void function PlayerProgramsControlPanel( entity panel, entity player, string ha { thread DataKnifeSuccessSounds( player ) Pathfinder_SurveySuccess( panel, player ) + thread SetPathfinder_HandUSB( player ) } else { diff --git a/vscripts/_init.gnut b/vscripts/_init.gnut index cf65257e7..c9a5047c3 100644 --- a/vscripts/_init.gnut +++ b/vscripts/_init.gnut @@ -23,6 +23,12 @@ void function CodeCallback_PostEntityInit() FlagSet( "EntitiesDidLoad" ) + #if DEVELOPER + array startPoints = GetEntArrayByClass_Expensive( "info_player_start" ) + foreach ( start in startPoints ) + DebugDrawHemiSphere( start.GetOrigin(), start.GetAngles(), 25.0, 20, 210, 255, false, 100.0 ) + #endif // DEVELOPER + array exfilPanels = GetEntArrayByClass_Expensive( "prop_exfil_panel" ) foreach ( panel in exfilPanels ) panel.Destroy() diff --git a/vscripts/_mapspawn.gnut b/vscripts/_mapspawn.gnut index b08fbedc2..3c807c677 100644 --- a/vscripts/_mapspawn.gnut +++ b/vscripts/_mapspawn.gnut @@ -308,6 +308,10 @@ void function CodeCallback_MapSpawn() // original script entry point switch(GameRules_GetGameMode()) { + case "fs_prophunt": + PrecacheWeapon( $"mp_weapon_flashbang_fakeultimate" ) + PrecacheWeapon( $"mp_weapon_changeprops_fakeultimate" ) + break case "fs_dm": break case fs_aimtrainer: diff --git a/vscripts/_script_movers.gnut b/vscripts/_script_movers.gnut index 6a6545b65..0a3441e70 100644 --- a/vscripts/_script_movers.gnut +++ b/vscripts/_script_movers.gnut @@ -1494,11 +1494,13 @@ function SetSwitchUseFunc( button, func, ent = null ) file.switchCallbacks[ button ].append( Table ) } +float fanradius = 50 +float fanPushDist = 256 void function FanPusherThink( entity fanPusher ) { - float fanPushDist = 3000 - + EndSignal(fanPusher, "OnDestroy") + if ( fanPusher.HasKey( "height" ) ) fanPushDist = float( fanPusher.kv.height ) @@ -1508,18 +1510,15 @@ void function FanPusherThink( entity fanPusher ) } else { - float gravityScale = GetGlobalSettingsFloat( DEFAULT_PILOT_SETTINGS, "gravityscale" ) + float gravityScale = 1.0 fanPushDist *= gravityScale // adjusted for new gravity scale } - float radius = float( fanPusher.kv.script_radius ) + float radius = fanradius vector forward = AnglesToForward( fanPusher.GetAngles() ) vector cylinderBottom = fanPusher.GetOrigin() vector cylinderTop = cylinderBottom + ( forward * fanPushDist ) - if ( FAN_DEBUG ) - DebugDrawCylinder( fanPusher.GetOrigin(), fanPusher.GetAngles(), radius, fanPushDist, 100, 0, 0, true, 120.0 ) - string flag = "" if ( fanPusher.HasKey( "script_flag" ) ) { @@ -1545,8 +1544,16 @@ void function FanPusherThink( entity fanPusher ) FanOnSoundEffects( fanPusher, radius, fanSoundEntity ) - while( true ) + while( IsValid(fanPusher) ) { + //make this update each frame so fan can be moved + forward = AnglesToForward( fanPusher.GetAngles() ) + cylinderBottom = fanPusher.GetOrigin() + cylinderTop = cylinderBottom + ( forward * fanPushDist ) + + if ( FAN_DEBUG ) + DebugDrawCylinder( fanPusher.GetOrigin(), fanPusher.GetAngles(), radius, fanPushDist, 100, 0, 0, true, 0.1 ) + if ( flag != "" && !Flag( flag ) ) { foreach( entity ent, float time in startTimes ) @@ -1563,7 +1570,7 @@ void function FanPusherThink( entity fanPusher ) fanPushables.clear() fanPushables.extend( GetPlayerArray() ) fanPushables.extend( GetNPCArray() ) - fanPushables.extend( GetProjectileArrayEx( "any", TEAM_ANY, TEAM_ANY, cylinderBottom, fanPushDist ) ) + //fanPushables.extend( GetProjectileArrayEx( "any", TEAM_ANY, TEAM_ANY, cylinderBottom, fanPushDist ) ) fanPushables.extend( GetEntArrayByClass_Expensive( "prop_physics" ) ) foreach( entity ent in fanPushables ) @@ -1613,8 +1620,8 @@ void function FanPusherThink( entity fanPusher ) float distanceFromFanAlongTunnel = Distance( pointAlongTunnel, cylinderBottom ) float fanStrength = GetFanStrengthWithGeoBlockage( ent, testPos, cylinderBottom, cylinderTop, forward ) - if ( ent.IsPlayer() ) - ent.SetPlayerNetFloatOverTime( "FanRumbleStrength", fanStrength, 0.0 ) + // if ( ent.IsPlayer() ) + // ent.SetPlayerNetFloatOverTime( "FanRumbleStrength", fanStrength, 0.0 ) if ( lifterFan ) fanStrength = GraphCapped( distanceFromFanAlongTunnel, 0.0, fanPushDist, 1.0, 0.0 ) @@ -1670,8 +1677,8 @@ void function FanPusherThink( entity fanPusher ) delete startHeights[ ent ] } - if ( ent.IsPlayer() ) - ent.SetPlayerNetFloatOverTime( "FanRumbleStrength", 0.0, 1.0 ) + // if ( ent.IsPlayer() ) + // ent.SetPlayerNetFloatOverTime( "FanRumbleStrength", 0.0, 1.0 ) } } WaitFrame() @@ -1690,11 +1697,12 @@ void function PlayerInWindTunnel( entity player ) printt( "OUT!" ) if ( IsValid( player ) ) { + //player.MovementEnable() player.SetOneHandedWeaponUsageOff() FadeOutSoundOnEntity( player, "Beacon_WindBuffet_Player", 1.0 ) - player.kv.airSpeed = player.GetPlayerSettingsField( "airSpeed" ) - player.kv.airAcceleration = player.GetPlayerSettingsField( "airAcceleration" ) + player.kv.airSpeed = player.GetPlayerSettingFloat( "airSpeed" ) + player.kv.airAcceleration = player.GetPlayerSettingFloat( "airAcceleration" ) } } ) @@ -1704,13 +1712,13 @@ void function PlayerInWindTunnel( entity player ) bool playingWindBuffet = false - player.kv.airSpeed = 150 - player.kv.airAcceleration = 650 + player.kv.airSpeed = 80 + player.kv.airAcceleration = 800 while( player.e.inWindTunnel ) { //player.GetViewModelEntity().SetPoseParameter( poseIndex, player.e.windTunnelStrength ) - + //player.MovementDisable() if ( player.e.windTunnelStrength > 0 ) { player.SetOneHandedWeaponUsageOn() diff --git a/vscripts/ai/_droppod.gnut b/vscripts/ai/_droppod.gnut index cbed58f20..8da50e10a 100644 --- a/vscripts/ai/_droppod.gnut +++ b/vscripts/ai/_droppod.gnut @@ -206,7 +206,9 @@ void function DropPodThreatIndicator(entity dropPod) #endif void function DropPodBeamWaitForUse(entity dropPod, vector origin, vector angles) { - dropPod.EndSignal( "OnUse" ) + dropPod.EndSignal( "OnDestroy" ) + dropPod.EndSignal( "OnUse" ) + entity trailFXHandle = StartParticleEffectInWorld_ReturnEntity(GetParticleSystemIndex( FAR_SPAWN_FX ), origin, angles) OnThreadEnd( @@ -454,6 +456,8 @@ function CheckPlayersIntersectingPod( pod, targetOrigin ) foreach ( player in playerList ) { + if(!IsValid(player)) continue + local playerOrigin = player.GetOrigin() if ( DistanceSqr( targetOrigin, playerOrigin ) > safeRadiusSqr ) { @@ -545,9 +549,10 @@ void function PushPlayerAndCreateDropPodCollision( entity pod, vector targetOrig } ) - while ( CheckPlayersIntersectingPod( pod, targetOrigin ) ) - wait( 0.1 ) - + while ( IsValid(pod) && CheckPlayersIntersectingPod( pod, targetOrigin ) ) + WaitFrame() + + if(IsValid(pod)) pod.Solid() } diff --git a/vscripts/cl_mapspawn.gnut b/vscripts/cl_mapspawn.gnut index 7598186d3..4fec7a8a2 100644 --- a/vscripts/cl_mapspawn.gnut +++ b/vscripts/cl_mapspawn.gnut @@ -130,7 +130,7 @@ void function ClientCodeCallback_MapSpawn() SV_CL_Shared_Init() //for custom ui/textures - RequestPakFile( "aimtrainer" ) + //RequestPakFile( "aimtrainer" ) } @@ -329,13 +329,9 @@ void function Init_ClientScripts( entity player ) if ( !IsLobby() ) { Player_AddClient( player ) - - KillReplayHud_AddClient() - clGlobal.initScoreboardFunc() MainHud_AddClient( player ) InitCrosshair() - //player.ClientCommand( "ClientStatus " + (IsPartyMember( player ) ? "1" : "0") ) } // Added via AddCallback_OnClientScriptInit diff --git a/vscripts/cl_survival_inventory.nut b/vscripts/cl_survival_inventory.nut index 592501515..7905a26dd 100644 --- a/vscripts/cl_survival_inventory.nut +++ b/vscripts/cl_survival_inventory.nut @@ -384,6 +384,19 @@ void function GroundAction( int lootAction, string guid, bool isAltAction, bool if ( lootEnt.GetNetworkedClassName() != "prop_survival" ) return + if( GameRules_GetGameMode() == "flowstate_aimtrainer" ) //&& + { + LootData lootData = SURVIVAL_Loot_GetLootDataByIndex( lootEnt.GetSurvivalInt() ) + + if(lootData.ref != "armor_pickup_lv4_all_fast" && lootData.ref != "armor_pickup_lv3" && lootData.ref != "armor_pickup_lv2" ) return + + RunUIScript( "SurvivalMenu_AckAction" ) + GetLocalClientPlayer().ClientCommand( "PickupSurvivalItem " + guid + " " + extraFlags + " " + boxString ) + RunUIScript( "TryCloseSurvivalInventory", null ) + + return + } + switch ( lootAction ) { case eLootAction.PICKUP: @@ -603,6 +616,9 @@ void function SurvivalMenu_Internal( entity player, string uiScript, entity deat if ( IsValid( deathBox ) ) { + if(GameRules_GetGameMode() == "flowstate_aimtrainer") + thread StartUpdatingArmorSwapLastTime() + thread TrackDistanceFromDeathBox( player, deathBox ) } } @@ -632,8 +648,11 @@ void function TrackDistanceFromDeathBox( entity player, entity deathBox ) deathBox.EndSignal( "OnDestroy" ) OnThreadEnd( - function() : () + function() : (player) { + if(GameRules_GetGameMode() == "flowstate_aimtrainer") + Signal(player, "StopArmorSwapStopwatch") + if ( Survival_IsGroundlistOpen() ) { RunUIScript( "TryCloseSurvivalInventory", null ) @@ -641,7 +660,7 @@ void function TrackDistanceFromDeathBox( entity player, entity deathBox ) } ) - wait 0.5 + WaitFrame() while ( Survival_IsGroundlistOpen() ) { @@ -1864,6 +1883,7 @@ void function GroundItemsInit( entity player, array loot ) array upgradeItems array unusableItems array relevantItems + array swapItem table allItems for ( int groundIndex = 0; groundIndex < loot.len(); groundIndex++ ) @@ -1890,9 +1910,26 @@ void function GroundItemsInit( entity player, array loot ) bool sortByType = GetCurrentPlaylistVarBool( "deathbox_sort_by_type", true ) bool showUpgrades = !sortByType && GetCurrentPlaylistVarBool( "deathbox_show_upgrades", true ) bool splitUnusable = !sortByType && GetCurrentPlaylistVarBool( "deathbox_split_unusable", true ) - + + if(GameRules_GetGameMode() == "flowstate_aimtrainer") + { + sortByType = false + showUpgrades = false + splitUnusable = false + } + foreach ( gd in allItems ) { + if(GameRules_GetGameMode() == "flowstate_aimtrainer") + { + if ( gd.lootData.ref == "armor_pickup_lv4_all_fast" || gd.lootData.ref == "armor_pickup_lv3" || gd.lootData.ref == "armor_pickup_lv2" || gd.lootData.ref == "armor_pickup_lv1") + { + gd.isRelevant = true + gd.isUpgrade = false + swapItem.append(gd) + continue + } + } entity ent = GetEntFromGroundLootData( gd ) if ( showUpgrades && SURVIVAL_IsLootAnUpgrade( player, ent, gd.lootData, eLootContext.GROUND ) ) @@ -1942,7 +1979,13 @@ void function GroundItemsInit( entity player, array loot ) file.filteredGroundItems.append( CreateHeaderData( "#HEADER_USEABLE", $"" ) ) } file.filteredGroundItems.extend( relevantItems ) - + + if(GameRules_GetGameMode() == "flowstate_aimtrainer") + { + file.filteredGroundItems.append( CreateHeaderData( "SWAP HERE", $"rui/customemotes/amogusred" ) ) + file.filteredGroundItems.extend( swapItem ) + } + if ( splitUnusable && unusableItems.len() > 0 ) { file.filteredGroundItems.append( CreateHeaderData( "#HEADER_UNUSEABLE", $"rui/menu/common/button_unbuyable" ) ) @@ -2511,7 +2554,7 @@ void function UICallback_UpdatePlayerInfo( var elem ) entity player = GetLocalClientPlayer() if ( GetBugReproNum() == 54268 ) - SURVIVAL_PopulatePlayerInfoRui( player, rui ) + thread SURVIVAL_PopulatePlayerInfoRui( player, rui ) else thread TEMP_UpdatePlayerRui( rui, player ) } diff --git a/vscripts/cl_survival_loot.nut b/vscripts/cl_survival_loot.nut index d17141572..c978cd52b 100644 --- a/vscripts/cl_survival_loot.nut +++ b/vscripts/cl_survival_loot.nut @@ -88,7 +88,6 @@ void function Cl_Survival_LootInit() RegisterConCommandTriggeredCallback( "weaponSelectPrimary1", AttemptCancelHeal ) RegisterConCommandTriggeredCallback( "weaponSelectOrdnance", AttemptCancelHeal ) RegisterConCommandTriggeredCallback( "+scriptCommand4", UseSelectedHealthPickupType ) - RegisterConCommandTriggeredCallback( "scoreboard_toggle_focus", UseSelectedHealthPickupType ) RegisterConCommandTriggeredCallback( "+use_alt", TryHolsterWeapon ) RegisterConCommandTriggeredCallback( "weaponSelectPrimary0", OnPlayerSwitchesToWeapon00 ) @@ -413,9 +412,12 @@ void function CreateDeathBoxRui( entity deathBox ) return expect EHI( ehi ) - - clGlobal.levelEnt.Signal( "CreateDeathBoxRui" ) - clGlobal.levelEnt.EndSignal( "CreateDeathBoxRui" ) + + if( GameRules_GetGameMode() != "flowstate_aimtrainer" ) + { + clGlobal.levelEnt.Signal( "CreateDeathBoxRui" ) + clGlobal.levelEnt.EndSignal( "CreateDeathBoxRui" ) + } deathBox.EndSignal( "OnDestroy" ) @@ -642,7 +644,10 @@ void function Sur_OnUseEntGainFocus( entity ent ) } else if ( ent.GetTargetName() == DEATH_BOX_TARGETNAME ) { - thread CreateDeathBoxRui( ent ) + if( GameRules_GetGameMode() != "flowstate_aimtrainer" ) + { + thread CreateDeathBoxRui( ent ) + } } } diff --git a/vscripts/client/cl_gamestate.gnut b/vscripts/client/cl_gamestate.gnut index 2d5a25299..69ca382b1 100644 --- a/vscripts/client/cl_gamestate.gnut +++ b/vscripts/client/cl_gamestate.gnut @@ -31,8 +31,8 @@ global function GetPilotTitanStatusForPlayer global function GameState_UpdateRuiRoundEndGameTime global function ClGameState_SetSwitchingSidesSubText - global function UpdateIsSonyMP +global function SND_ForceUpdateObservedCount global enum ePlayerStatusType { @@ -100,7 +100,7 @@ void function ClGameState_Init() { RegisterSignal( "GameStateChanged" ) RegisterServerVarChangeCallback( "gameState", ClGameState_Changed ) - RegisterServerVarChangeCallback( "badRepPresent", UpdateScoreboardBadRepPresentMessage ) + //RegisterServerVarChangeCallback( "badRepPresent", UpdateScoreboardBadRepPresentMessage ) AddOnSpectatorTargetChangedCallback( GameState_SpectatorTargetChanged ) AddCallback_OnClientScriptInit( ClGameState_AddClient ) @@ -145,25 +145,80 @@ void function Hud_SetModeEmblem() void function SetCommonScoreRUIVars( var rui ) { + switch( GameRules_GetGameMode() ) + { + case "flowstate_infection": + RuiSetString( rui, "gameModeString", "APEX INFECTION" ) + RuiSetBool( rui, "shouldDisplayLivingPlayerCount", false ) + RuiSetString( rui, "squadsRemainingTextSingular", "#SHADOW_SQUAD_PLAYERS_REMAIN" ) + RuiSetString( rui, "squadsRemainingTextPlural", "#SHADOW_SQUAD_PLAYERS_REMAIN" ) + RuiSetString( rui, "squadsRemaining2TextSingular", "INFECTED" ) + RuiSetString( rui, "squadsRemaining2TextPlural", "INFECTED" ) + return + + case "fs_prophunt": + RuiSetString( rui, "gameModeString", "APEX PROPHUNT" ) + RuiSetBool( rui, "shouldDisplayLivingPlayerCount", false ) + RuiSetString( rui, "squadsRemainingTextSingular", "PROP ALIVE" ) + RuiSetString( rui, "squadsRemainingTextPlural", "PROPS ALIVE" ) + RuiSetVisible(rui, true) + return + + case "fs_duckhunt": + RuiSetString( rui, "gameModeString", "APEX DUCK HUNT" ) + RuiSetBool( rui, "shouldDisplayLivingPlayerCount", false ) + RuiSetString( rui, "squadsRemainingTextSingular", "DUCK ALIVE" ) + RuiSetString( rui, "squadsRemainingTextPlural", "DUCKS ALIVE" ) + RuiSetVisible(rui, true) + return + + case "flowstate_snd": + RuiSetString( rui, "gameModeString", "SEARCH AND DESTROY" ) + RuiSetBool( rui, "shouldDisplayLivingPlayerCount", false ) + RuiSetString( rui, "squadsRemainingTextSingular", "ENEMY ALIVE" ) + RuiSetString( rui, "squadsRemainingTextPlural", "ENEMIES ALIVE" ) + RuiSetVisible(rui, true) + return + } + + //Legacy, clean up this later ? + if ( IsFallLTM() ) { - RuiSetString( rui, "gameModeString", "" ) // + RuiSetString( rui, "gameModeString", "" ) RuiSetBool( rui, "shouldDisplayLivingPlayerCount", false ) RuiSetString( rui, "squadsRemainingTextSingular", "#SHADOW_SQUAD_PLAYERS_REMAIN" ) RuiSetString( rui, "squadsRemainingTextPlural", "#SHADOW_SQUAD_PLAYERS_REMAIN" ) RuiSetString( rui, "squadsRemaining2TextSingular", "#SHADOW_SQUAD_SHADOW_PLAYERS_REMAIN" ) RuiSetString( rui, "squadsRemaining2TextPlural", "#SHADOW_SQUAD_SHADOW_PLAYERS_REMAIN" ) return - } + } + if ( IsSoloMode() ) { RuiSetBool( rui, "shouldDisplayLivingPlayerCount", false ) - RuiSetString( rui, "squadsRemainingTextSingular", GameRules_GetGameMode() == "fs_dm" ? "PLAYERS ONLINE" : "#SURVIVAL_PLAYERS_REMAIN" ) - RuiSetString( rui, "squadsRemainingTextPlural", GameRules_GetGameMode() == "fs_dm" ? "PLAYERS ONLINE" : "#SURVIVAL_PLAYERS_REMAIN" ) + RuiSetString( rui, "squadsRemainingTextSingular", "PLAYER ONLINE" ) + RuiSetString( rui, "squadsRemainingTextPlural", "PLAYERS ONLINE" ) + + // if( GetCurrentPlaylistVarBool("flowstate_1v1mode", false) ) + // RuiSetString( rui, "gameModeString", "APEX 1v1" ) + + if(GameRules_GetGameMode() == "fs_dm" && !GetCurrentPlaylistVarBool( "flowstate_hackersVsPros", false )) + RuiSetString( rui, "gameModeString", "APEX DM" ) + else if(GameRules_GetGameMode() == "fs_dm" && GetCurrentPlaylistVarBool( "flowstate_hackersVsPros", false )) + RuiSetString( rui, "gameModeString", "HACKERS VS PROS" ) + + if(GameRules_GetGameMode() == "flowstate_pkknockback") + { + RuiSetString( rui, "squadsRemainingTextSingular", "PLAYER ALIVE" ) + RuiSetString( rui, "squadsRemainingTextPlural", "PLAYERS ALIVE" ) + RuiSetString( rui, "gameModeString", "PK PUSHBACK" ) + } } else if(GetCurrentPlaylistVarBool( "dummies_horde_enabled", false )){ + RuiSetString( rui, "gameModeString", "DUMMIES HORDE" ) RuiSetBool( rui, "shouldDisplayLivingPlayerCount", false ) - RuiSetString( rui, "squadsRemainingTextSingular", "DUMMIES REMAINING" ) + RuiSetString( rui, "squadsRemainingTextSingular", "DUMMY REMAINING" ) RuiSetString( rui, "squadsRemainingTextPlural", "DUMMIES REMAINING" ) } else @@ -187,6 +242,7 @@ void function UpdateCommonScoreRuiTracking( var rui, entity player ) RuiTrackInt( rui, "killCount", player, RUI_TRACK_SCRIPT_NETWORK_VAR_INT, GetNetworkedVariableIndex( "kills" ) ) RuiSetBool( rui, "shouldDisplayLivingPlayerCount", false ) RuiTrackInt( rui, "playerObservedCount", player, RUI_TRACK_SCRIPT_NETWORK_VAR_INT, GetNetworkedVariableIndex( "playerObservedCount" ) ) + RuiTrackBool( rui, "hasDeathFieldImmunity", player, RUI_TRACK_SCRIPT_NETWORK_VAR_BOOL, GetNetworkedVariableIndex( "hasDeathFieldImmunity" ) ) if ( IsRankedGame() ) @@ -194,6 +250,13 @@ void function UpdateCommonScoreRuiTracking( var rui, entity player ) } +void function SND_ForceUpdateObservedCount(int newObservedCount) +{ + var rui = file.gamestateRui + + RuiSetInt( rui, "playerObservedCount", newObservedCount ) +} + void function GameModeScoreBarUpdateRules_Default( var rui ) { // @@ -254,11 +317,11 @@ void function ClGameState_AddClient( entity player ) player.cv.scoreboardBadRepPresentMessage.SetText( "#ASTERISK_BAD_REPUTATION" ) #endif - player.cv.hudCheaterMessage <- HudElement( "HudCheaterMessage" ) - if ( !Durango_IsDurango() && !IsLobby() && player.HasBadReputation() ) - player.cv.hudCheaterMessage.Show() - else - player.cv.hudCheaterMessage.Hide() + // player.cv.hudCheaterMessage <- HudElement( "HudCheaterMessage" ) + // if ( !Durango_IsDurango() && !IsLobby() && player.HasBadReputation() ) + // player.cv.hudCheaterMessage.Show() + // else + // player.cv.hudCheaterMessage.Hide() } @@ -748,7 +811,7 @@ void function ClGameState_Changed() break } - UpdateIsSonyMP() + //UpdateIsSonyMP() } void function GameState_SpectatorTargetChanged( entity player, entity previousTarget, entity currentTarget ) diff --git a/vscripts/client/cl_kill_replay_hud.gnut b/vscripts/client/cl_kill_replay_hud.gnut index 9a499a159..525cbc5c5 100644 --- a/vscripts/client/cl_kill_replay_hud.gnut +++ b/vscripts/client/cl_kill_replay_hud.gnut @@ -6,11 +6,13 @@ global function KillReplayHud_Deactivate global function ServerCallback_KillReplayHud_Activate global function ServerCallback_KillReplayHud_Deactivate +global function ServerCallback_UpdateSpectatorTargetCount struct { var killReplayOverlayRui bool IsWatchingReplay = false + int allowedSpectatorTargetCount = 0 } file void function ClKillReplayHud_Init() @@ -59,11 +61,11 @@ string function GetRefFromDamageSourceId( int damageSourceId ) } void function ServerCallback_KillReplayHud_Activate() { - Custom_KillReplayHud_Activate() + Custom_KillReplayHud_Activate() } void function ServerCallback_KillReplayHud_Deactivate() { - Custom_KillReplayHud_Deactivate() + Custom_KillReplayHud_Deactivate() } void function KillReplayHud_Activate() @@ -210,6 +212,11 @@ void function RoundWinningKillReplayClientHud_Deactivate() //Not doing screen fa void function Custom_KillReplayHud_Activate() { + entity player = GetLocalClientPlayer() + + if ( !IsValid( player ) ) + return + if ( IsReplayRoundWinning() ) return @@ -250,7 +257,14 @@ void function Custom_KillReplayHud_Activate() } //Open Kill Replay Hud - RunUIScript("OpenKillReplayHud", image, attackerName, armorTier, islocalclient) + RunUIScript("OpenKillReplayHud", image, attackerName, armorTier, islocalclient, GameRules_GetGameMode() == "fs_prophunt" ) +} + +void function ServerCallback_UpdateSpectatorTargetCount(int targetCount, bool reverse) +{ + file.allowedSpectatorTargetCount = targetCount + + RunUIScript("UI_FlowstateCustomSetSpectateTargetCount", file.allowedSpectatorTargetCount, reverse) } void function Custom_KillReplayHud_Deactivate() @@ -260,9 +274,14 @@ void function Custom_KillReplayHud_Deactivate() if ( IsReplayRoundWinning() ) return - + + bool isProphunt = false + + if(GameRules_GetGameMode() == "fs_prophunt") + isProphunt = true + //Close the replay menu - RunUIScript("CloseKillReplayHud") + RunUIScript("CloseKillReplayHud", isProphunt) GetLocalClientPlayer().Signal( "DeactivateKillReplayHud" ) } @@ -271,12 +290,32 @@ void function UpdatePlayerHealthAndSheild(entity attacker) { //Gets armor Tier int armorTier = EquipmentSlot_GetEquipmentTier( attacker, "armor" ) - + + entity observerTarget = attacker + + ItemFlavor character = LoadoutSlot_WaitForItemFlavor( ToEHI( attacker ), Loadout_CharacterClass() ) + asset image = CharacterClass_GetGalleryPortrait( character ) + //Update health and sheild while they are watching the replay while(file.IsWatchingReplay) { - if(IsValid(attacker)) - RunUIScript("ReplayHud_UpdatePlayerHealthAndSheild", GetHealthFrac( attacker ), GetShieldHealthFrac( attacker ), armorTier) + observerTarget = GetLocalClientPlayer().GetObserverTarget() + + if( IsValid(observerTarget) && observerTarget.IsPlayer() && observerTarget != attacker ) + { + attacker = observerTarget // so we can update name too + armorTier = EquipmentSlot_GetEquipmentTier( attacker, "armor" ) //update armor tier for new spectator targets + character = LoadoutSlot_WaitForItemFlavor( ToEHI( attacker ), Loadout_CharacterClass() ) + image = CharacterClass_GetGalleryPortrait( character ) + } + + if(!IsValid(attacker)) { + attacker = GetLocalClientPlayer().GetObserverTarget() + WaitFrame() + continue + } + + RunUIScript("ReplayHud_UpdatePlayerData", GetHealthFrac( attacker ), GetShieldHealthFrac( attacker ), armorTier, attacker.GetPlayerName(), image) WaitFrame() } diff --git a/vscripts/client/cl_main_hud.nut b/vscripts/client/cl_main_hud.nut index 223097d09..41ccb3d2a 100644 --- a/vscripts/client/cl_main_hud.nut +++ b/vscripts/client/cl_main_hud.nut @@ -83,10 +83,12 @@ void function ClMainHud_Init() RegisterSignal( "ClearDoF" ) AddCreateCallback( "titan_cockpit", CockpitHudInit ) - + PrecacheParticleSystem($"P_player_boost_screen") + RegisterServerVarChangeCallback( "gameState", UpdateMainHudFromGameState ) AddCallback_OnPlayerLifeStateChanged( UpdateMainHudFromLifeState ) - RegisterServerVarChangeCallback( "minimapState", UpdateMinimapVisibility ) + if(GameRules_GetGameMode() == SURVIVAL ) + RegisterServerVarChangeCallback( "minimapState", UpdateMinimapVisibility ) AddCinematicEventFlagChangedCallback( CE_FLAG_EMBARK, CinematicEventUpdateDoF ) AddCinematicEventFlagChangedCallback( CE_FLAG_EXECUTION, CinematicEventUpdateDoF ) @@ -113,8 +115,6 @@ void function MainHud_AddClient( entity player ) player.cv.burnCardAnnouncementQueue <- [] clGlobal.empScreenEffect = Hud.HudElement( "EMPScreenFX" ) - - thread ClientHudInit( player ) } void function CockpitHudInit( entity cockpit ) @@ -690,43 +690,6 @@ void function DrawAttentionToTestMap( var elem ) } } - -void function ClientHudInit( entity player ) -{ - // Assert( player == GetLocalClientPlayer() ) - - // #if DEVELOPER - // HudElement( "Dev_Info1" ).Hide() - // HudElement( "Dev_Info2" ).Hide() - // HudElement( "Dev_Info3" ).Hide() - // { - // if ( IsTestMap() ) - // { - // var elem = HudElement( "Dev_Info3" ) - // Hud_SetText( elem, "Test Map" ) - // Hud_Show( elem ) - - // /*switch( GetMapName() ) - // { - // case "sp_danger_room": - // case "sp_script_samples": - // case "sp_enemies": - // case "sp_grunt_battle": - // case "mp_rr_box": - // case "mp_box": - // case "mp_test_engagement_range": - // // blessed calm, like a smooth ocean - // break - // default: - // thread DrawAttentionToTestMap( elem ) - // break - // }*/ - // } - // } - // #endif // DEVELOPER -} - - void function CinematicEventUpdateDoF( entity player ) { if ( player != GetLocalClientPlayer() ) diff --git a/vscripts/client/cl_player.gnut b/vscripts/client/cl_player.gnut index 3e4a51be5..d1ff3771d 100644 --- a/vscripts/client/cl_player.gnut +++ b/vscripts/client/cl_player.gnut @@ -621,7 +621,8 @@ void function ClientCodeCallback_PlayerDidDamage( PlayerDidDamageParams params ) if ( victim.IsTitan() && isKillShot ) ClientScreenShake( 8, 10, 1, <0, 0, 0> ) - BloodSprayDecals( attacker, victim, damagePosition, damageAmount, isHeadShot, isKillShot, isMelee, isExplosion, isBullet, isShotgun ) + if ( GameRules_GetGameMode() != "fs_prophunt" ) + BloodSprayDecals( attacker, victim, damagePosition, damageAmount, isHeadShot, isKillShot, isMelee, isExplosion, isBullet, isShotgun ) if ( isShieldBreak ) PlayShieldBreakEffect( victim ) @@ -1586,21 +1587,19 @@ void function PlayShieldBreakEffect( entity ent ) int armorTier = EquipmentSlot_GetEquipmentTier( ent, "armor" ) shieldColor = GetFXRarityColorForTier( armorTier ) } -#if(false) - - - - -#endif int shieldBreakFX = GetParticleSystemIndex( SHIELD_BREAK_FX ) - int attachID - if ( shieldEnt.IsTitan() ) - attachID = shieldEnt.LookupAttachment( "exp_torso_main" ) - else - attachID = shieldEnt.LookupAttachment( "ref" ) // TEMP - + int attachID = shieldEnt.LookupAttachment( "ref" ) + + if ( GameRules_GetGameMode() == "fs_prophunt" ) + { + int shieldFXHandle = StartParticleEffectInWorldWithHandle( shieldBreakFX, ent.GetOrigin(), ent.GetAngles() ) + EffectSetControlPointVector( shieldFXHandle, 1, shieldColor ) + + return + } + int shieldFXHandle = StartParticleEffectOnEntity( shieldEnt, shieldBreakFX, FX_PATTACH_POINT_FOLLOW, attachID ) EffectSetControlPointVector( shieldFXHandle, 1, shieldColor ) } @@ -1620,12 +1619,15 @@ void function PlayShieldActivateEffect( entity ent ) int shieldBreakFX = GetParticleSystemIndex( SHIELD_MAX_FX ) - int attachID - if ( shieldEnt.IsTitan() ) - attachID = shieldEnt.LookupAttachment( "exp_torso_main" ) - else - attachID = shieldEnt.LookupAttachment( "ref" ) // TEMP - + int attachID = ent.LookupAttachment( "ref" ) + + if ( GameRules_GetGameMode() == "fs_prophunt" ) + { + int shieldFXHandle = StartParticleEffectInWorldWithHandle( shieldBreakFX, ent.GetOrigin(), ent.GetAngles() ) + EffectSetControlPointVector( shieldFXHandle, 1, shieldColor ) + + return + } int shieldFXHandle = StartParticleEffectOnEntity( shieldEnt, shieldBreakFX, FX_PATTACH_POINT_FOLLOW, attachID ) EffectSetControlPointVector( shieldFXHandle, 1, shieldColor ) } @@ -1636,12 +1638,16 @@ void function PlayIt( entity victim ) float shieldHealthFrac = GetShieldHealthFrac( victim ) int shieldbodyFX = GetParticleSystemIndex( SHIELD_BODY_FX ) - int attachID - if ( victim.IsTitan() ) - attachID = victim.LookupAttachment( "exp_torso_main" ) - else - attachID = victim.LookupAttachment( "ref" ) // TEMP - + int attachID = victim.LookupAttachment( "ref" ) + + if ( GameRules_GetGameMode() == "fs_prophunt" ) + { + int shieldFXHandle = StartParticleEffectInWorldWithHandle( shieldbodyFX, victim.GetOrigin(), victim.GetAngles() ) + EffectSetControlPointVector( shieldFXHandle, 1, GetShieldEffectCurrentColor( 1 - shieldHealthFrac ) ) + + return + } + int shieldFXHandle = StartParticleEffectOnEntity( victim, shieldbodyFX, FX_PATTACH_POINT_FOLLOW, attachID ) EffectSetControlPointVector( shieldFXHandle, 1, GetShieldEffectCurrentColor( 1 - shieldHealthFrac ) ) @@ -1667,12 +1673,23 @@ void function PlayShieldHitEffect( PlayerDidDamageParams params, vector shieldCo float shieldHealthFrac = GetShieldHealthFrac( victim ) int shieldbodyFX = GetParticleSystemIndex( SHIELD_BODY_FX ) - int attachID - if ( victim.IsTitan() ) - attachID = victim.LookupAttachment( "exp_torso_main" ) - else - attachID = victim.LookupAttachment( "ref" ) // TEMP + int attachID = victim.LookupAttachment( "ref" ) + + if ( GameRules_GetGameMode() == "fs_prophunt" ) + { + int shieldFXHandle = StartParticleEffectInWorldWithHandle( shieldbodyFX, victim.GetOrigin(), victim.GetAngles() ) + vector color + + if ( shieldColorOverride == < -1, -1, -1 > ) + color = GetShieldEffectCurrentColor( 1 - shieldHealthFrac ) + else + color = shieldColorOverride + EffectSetControlPointVector( shieldFXHandle, 1, color ) + + return + } + int shieldFXHandle = StartParticleEffectOnEntity( victim, shieldbodyFX, FX_PATTACH_POINT_FOLLOW, attachID ) vector color diff --git a/vscripts/client/cl_player_common.gnut b/vscripts/client/cl_player_common.gnut index 1a4fe25cb..97fb37d82 100644 --- a/vscripts/client/cl_player_common.gnut +++ b/vscripts/client/cl_player_common.gnut @@ -44,15 +44,20 @@ void function ClPlayer_Common_Precache() PrecacheParticleSystem( SCREENFX_WARPJUMP ) PrecacheParticleSystem( SCREENFX_WARPJUMPDLIGHT ) - PrecacheParticleSystem( FX_KILLSHOT_BLOODSPRAY ) + PrecacheParticleSystem( FX_KILLSHOT_MECHANICAL ) PrecacheParticleSystem( FX_KILLSHOT_AR ) - PrecacheParticleSystem( FX_BLOODSPRAY_DECAL_SML ) - PrecacheParticleSystem( FX_BLOODSPRAY_DECAL_MED ) - PrecacheParticleSystem( FX_BLOODSPRAY_DECAL_LRG ) PrecacheParticleSystem( SHIELD_BODY_FX ) PrecacheParticleSystem( SHIELD_BREAK_FX ) PrecacheParticleSystem( SHIELD_MAX_FX ) + + if(GameRules_GetGameMode() != "fs_prophunt") + { + PrecacheParticleSystem( FX_KILLSHOT_BLOODSPRAY ) + PrecacheParticleSystem( FX_BLOODSPRAY_DECAL_SML ) + PrecacheParticleSystem( FX_BLOODSPRAY_DECAL_MED ) + PrecacheParticleSystem( FX_BLOODSPRAY_DECAL_LRG ) + } } bool function PlayHeadshotConfirmSound( entity attacker, entity victim, entity weapon, bool isKillShot ) diff --git a/vscripts/client/cl_scoreboard_mp.nut b/vscripts/client/cl_scoreboard_mp.nut index e503e6640..a4d4500cc 100644 --- a/vscripts/client/cl_scoreboard_mp.nut +++ b/vscripts/client/cl_scoreboard_mp.nut @@ -86,7 +86,7 @@ void function ClScoreboardMp_Init() clGlobal.hideScoreboardFunc = HideScoreboardMP clGlobal.scoreboardInputFunc = ScoreboardInputMP - RegisterConCommandTriggeredCallback( "+scriptCommand4", ScoreboardToggleFocus ) + // RegisterConCommandTriggeredCallback( "+scriptCommand4", ScoreboardToggleFocus ) RegisterConCommandTriggeredCallback( "scoreboard_toggle_focus", ScoreboardToggleFocus ) } diff --git a/vscripts/client/cl_screenfade.gnut b/vscripts/client/cl_screenfade.gnut index deb18d80f..a91b517e2 100644 --- a/vscripts/client/cl_screenfade.gnut +++ b/vscripts/client/cl_screenfade.gnut @@ -42,7 +42,7 @@ void function ClScreenfade_Init() RuiSetFloat3( file.screenFade, "fadeColor", <0, 0, 0> ) RuiSetFloat( file.screenFade, "fadeAlpha", 0.0 ) - RuiSetImage( file.screenFade, "emblemImage", GetModeEmblemImage( GetCurrentPlaylistName() ) ) + //RuiSetImage( file.screenFade, "emblemImage", GetModeEmblemImage( GetCurrentPlaylistName() ) ) } diff --git a/vscripts/client/cl_utility.gnut b/vscripts/client/cl_utility.gnut index 9ae2d59ec..caa38908c 100644 --- a/vscripts/client/cl_utility.gnut +++ b/vscripts/client/cl_utility.gnut @@ -655,7 +655,7 @@ void function Dev_PrintClientMessage( float duration ) Announcement_SetDuration( announcement, duration ) Announcement_SetPurge( announcement, true ) - if( GetCurrentPlaylistName() == "fs_dm" || GetCurrentPlaylistName() == "custom_surf" ) + if(GameRules_GetGameMode() == "fs_dm" || GameRules_GetGameMode() == "fs_prophunt" || GameRules_GetGameMode() == "fs_duckhunt" || GameRules_GetGameMode() == "flowstate_snd") { Announcement_SetStyle(announcement, ANNOUNCEMENT_STYLE_CIRCLE_WARNING) Announcement_SetTitleColor( announcement, Vector(0,0,0) ) diff --git a/vscripts/client/cl_zipline.gnut b/vscripts/client/cl_zipline.gnut index 7fd37082b..e7f83289e 100644 --- a/vscripts/client/cl_zipline.gnut +++ b/vscripts/client/cl_zipline.gnut @@ -7,6 +7,8 @@ global function CodeCallback_ZiplineMount void function CodeCallback_ZiplineMount( entity player, entity zipline ) { thread Chroma_ZiplineThread() + player.p.ziplineUsages++ + thread ResetZiplineUsageDelayed( player ) } /* void function CodeCallback_ZiplineStart( entity player, entity zipline ) diff --git a/vscripts/client/objects/cl_control_panel.nut b/vscripts/client/objects/cl_control_panel.nut index 7fecb2f06..a23b149df 100644 --- a/vscripts/client/objects/cl_control_panel.nut +++ b/vscripts/client/objects/cl_control_panel.nut @@ -22,8 +22,8 @@ void function ClControlPanel_Init() PrecacheParticleSystem( $"panel_light_red" ) PrecacheParticleSystem( $"runway_light_orange" ) - AddCreateCallback( "prop_control_panel", CreateCallback_Panel ) - AddDestroyCallback( "prop_control_panel", DestroyCallback_Panel ) + //AddCreateCallback( "prop_control_panel", CreateCallback_Panel ) + //AddDestroyCallback( "prop_control_panel", DestroyCallback_Panel ) } void function AddPanelUpdateCallback( panel, func ) diff --git a/vscripts/client/rui/cl_hud.gnut b/vscripts/client/rui/cl_hud.gnut index 11428717e..9d433c718 100644 --- a/vscripts/client/rui/cl_hud.gnut +++ b/vscripts/client/rui/cl_hud.gnut @@ -399,7 +399,7 @@ void function DamageFlyout( float damageAmount, vector damagePosition, entity vi // are combined, meaning the RUI will never know that the player had a shield in the first place if ( isShieldBreak ) { - printt( "wasShieldBreak" ) + //printt( "wasShieldBreak" ) RuiSetGameTime( stackingRui, "shieldBreakTime", Time() ) RuiSetInt( stackingRui, "shieldBreakTier", shieldLevel ) } diff --git a/vscripts/collection_events.nut b/vscripts/collection_events.nut index dd90aaa12..be7d66865 100644 --- a/vscripts/collection_events.nut +++ b/vscripts/collection_events.nut @@ -162,11 +162,11 @@ struct { -///////////////////////// -///////////////////////// -//// Initialiszation //// -///////////////////////// -///////////////////////// +//////////////////////// +//////////////////////// +//// Initialization //// +//////////////////////// +//////////////////////// #if SERVER || CLIENT || UI void function CollectionEvents_Init() diff --git a/vscripts/gamemodes/fs_aimtrainer/_gamemode_aimtrainer.nut b/vscripts/gamemodes/fs_aimtrainer/_gamemode_aimtrainer.nut index 888fb3aa2..e99b9ccf9 100644 --- a/vscripts/gamemodes/fs_aimtrainer/_gamemode_aimtrainer.nut +++ b/vscripts/gamemodes/fs_aimtrainer/_gamemode_aimtrainer.nut @@ -2086,6 +2086,228 @@ void function DummyRunningTargetsMovement(entity ai, entity player) } } +//CHALLENGE ArmorSwap +void function StartArmorSwapChallenge(entity player) +{ + if(!IsValid(player)) return + player.SetOrigin(onGroundLocationPos) + player.SetAngles(onGroundLocationAngs) + EndSignal(player, "ChallengeTimeOver") + + OnThreadEnd( + function() : ( player) + { + OnChallengeEnd(player) + } + ) + wait AimTrainer_PRE_START_TIME + RemoveCinematicFlag( player, CE_FLAG_HIDE_MAIN_HUD_INSTANT ) + RemoveCinematicFlag( player, CE_FLAG_HIDE_PERMANENT_HUD) + player.UnfreezeControlsOnServer() + + array circleLocations = NavMesh_RandomPositions( player.GetOrigin(), HULL_HUMAN, 10, 20*AimTrainer_SPAWN_DISTANCE, 50*AimTrainer_SPAWN_DISTANCE ) + + float endtime = Time() + AimTrainer_CHALLENGE_DURATION + thread ChallengeWatcherThread(endtime, player) + + WaitFrame() + while(true){ + array NewcircleLocations = NavMesh_RandomPositions( AimTrainerOriginToGround( ), HULL_HUMAN, 10, 20*AimTrainer_SPAWN_DISTANCE, 50*AimTrainer_SPAWN_DISTANCE ) + if(NewcircleLocations.len() > 0 ) + { + circleLocations.clear() + circleLocations = NewcircleLocations + } + if(!AimTrainer_INFINITE_CHALLENGE && Time() > endtime) break + + foreach(deathbox in ChallengesEntities.dummies) + if(!IsValid(deathbox)) + ChallengesEntities.dummies.removebyvalue(deathbox) + + while(ChallengesEntities.dummies.len()<5){ + vector org1 = player.GetOrigin() + + int locationindex = RandomInt(circleLocations.len()) + vector org2 = circleLocations[locationindex] + vector vec2 = org1 - org2 + + int random = 1 + if(CoinFlip()) random = -1 + vector angles2 = AnglesToRight(VectorToAngles(vec2))*90*random + + vector circleoriginfordeathbox = circleLocations[locationindex] + + entity deathbox = CreateAimtrainerDeathbox( player, circleoriginfordeathbox) + ChallengesEntities.dummies.append(deathbox) + + thread CheckDistanceFromDeathboxes(player, deathbox) + thread EnableDeathboxMantleAfterSomeTime(deathbox) + + wait 0.2 + } + WaitFrame() + } +} + +void function CheckDistanceFromDeathboxes(entity player, entity deathbox) +{ + while( IsValid(deathbox) ) + { + if( Distance( player.GetOrigin(), deathbox.GetOrigin() ) > 500) + { + deathbox.Destroy() + break + } + + WaitFrame() + } +} + +void function EnableDeathboxMantleAfterSomeTime(entity deathbox) +{ + wait 1 + if( IsValid(deathbox) ) + deathbox.AllowMantle() +} + +entity function CreateAimtrainerDeathbox( entity player, vector origin) +{ + entity deathBox = FlowState_CreateDeathBox( player, origin) + + foreach ( invItem in AimTrainer_FillDeathbox( player ) ) + { + LootData data = SURVIVAL_Loot_GetLootDataByIndex( invItem.type ) + + entity loot = SpawnGenericLoot( data.ref, deathBox.GetOrigin(), deathBox.GetAngles(), invItem.count ) + AddToDeathBox( loot, deathBox ) + } + + UpdateDeathBoxHighlight( deathBox ) + + foreach ( func in svGlobal.onDeathBoxSpawnedCallbacks ) + func( deathBox, null, 0 ) + + return deathBox +} + +entity function FlowState_CreateDeathBox( entity player, vector origin) +{ + entity box = CreatePropDeathBox_NoDispatchSpawn( DEATH_BOX, origin, <0, 45, 0>, 6 ) + + box.kv.fadedist = 10000 + SetTargetName( box, DEATH_BOX_TARGETNAME ) + DispatchSpawn( box ) + + box.Solid() + box.SetUsable() + box.SetUsableValue( USABLE_BY_ALL | USABLE_CUSTOM_HINTS ) + box.SetOwner( player ) + box.SetNetInt( "ownerEHI", player.GetEncodedEHandle() ) + //box.AllowMantle() + + box.SetNetBool( "overrideRUI", false ) + + array coolDevs = [ + "R5R_CafeFPS", + "R5R_AyeZee", + "R5R_Makimakima", + "R5R_Endergreen12", + "R5R_Zer0Bytes", //not cool + "R5R_Julefox", + "R5R_Amos", + "R5R_Rexx", + "R5R_IcePixelx", + "R5R_KralRindo", + "R5R_sal" + ] + + box.SetCustomOwnerName( coolDevs.getrandom() ) + box.SetNetInt( "characterIndex", ConvertItemFlavorToLoadoutSlotContentsIndex( Loadout_CharacterClass() , LoadoutSlot_GetItemFlavor( ToEHI( player ) , Loadout_CharacterClass() ) ) ) + + Highlight_SetNeutralHighlight( box, "sp_objective_entity" ) + Highlight_ClearNeutralHighlight( box ) + + vector restPos = box.GetOrigin() + vector fallPos = restPos + < 0, 0, 54 > + + thread (void function( entity box , vector restPos , vector fallPos) { + entity mover = CreateScriptMover( restPos, box.GetAngles(), 0 ) + if ( IsValid( box ) ) + { + box.SetParent( mover, "", true ) + mover.NonPhysicsMoveTo( fallPos, 0.5, 0.0, 0.5 ) + } + wait 0.5 + if ( IsValid( box ) ) + mover.NonPhysicsMoveTo( restPos, 0.5, 0.5, 0.0 ) + wait 0.5 + if ( IsValid( box ) ) + box.ClearParent() + if ( IsValid( mover ) ) + mover.Destroy() + + }) ( box , restPos , fallPos) + + return box +} + +array function AimTrainer_FillDeathbox( entity player ) +{ + array final = [] + array newRefs + + bool shouldcontinue = false + for(int i = 0; i < 5; i++) + { + shouldcontinue = false + string newPossibleItem = SURVIVAL_GetWeightedItemFromGroup( "data_knife_vault" ) + + if( newPossibleItem == "armor_pickup_lv4_all_fast" || newPossibleItem == "armor_pickup_lv3" ) + { + i-- + continue + } + + foreach(ref in newRefs) + { + if(ref == newPossibleItem) + { + i-- + shouldcontinue = true + continue + } + } + if(shouldcontinue) + continue + + newRefs.append(newPossibleItem) + } + array swaps = + [ + "armor_pickup_lv4_all_fast", + "armor_pickup_lv3", + "armor_pickup_lv2" + ] + + newRefs.append("mp_weapon_wingman") + newRefs.append("mp_weapon_r97") + newRefs.append( swaps.getrandom() ) + + foreach(ref in newRefs) + { + LootData attachmentData = SURVIVAL_Loot_GetLootDataByRef( ref ) + + ConsumableInventoryItem fsItem + + fsItem.type = attachmentData.index + fsItem.count = 1 + + final.append( fsItem ) + } + + return final +} + //Challenges related end functions void function OnChallengeEnd(entity player) { @@ -2652,7 +2874,7 @@ bool function CC_StartChallenge7NewC( entity player, array args ) bool function CC_StartChallenge8NewC( entity player, array args ) { PreChallengeStart(player, 17) - // thread StartTapyDuckStrafesChallenge(player) + thread StartArmorSwapChallenge(player) return false } diff --git a/vscripts/gamemodes/fs_aimtrainer/cl_gamemode_aimtrainer.nut b/vscripts/gamemodes/fs_aimtrainer/cl_gamemode_aimtrainer.nut index c1e9f87c2..0da85dc9b 100644 --- a/vscripts/gamemodes/fs_aimtrainer/cl_gamemode_aimtrainer.nut +++ b/vscripts/gamemodes/fs_aimtrainer/cl_gamemode_aimtrainer.nut @@ -86,6 +86,9 @@ global function OpenFRChallengesSettingsWpnSelector global function CloseFRChallengesSettingsWpnSelector global function ExitChallengeClient global function WeaponSelectorClose +global function ClientLocalizeAndShortenNumber_Float +global function AimTrainer_QuickHint +global function StartUpdatingArmorSwapLastTime global function SetWeaponSlot string DesiredSlot = "p" @@ -97,6 +100,14 @@ struct{ int damagePossible var dot bool challengeActivatedLastValue = false + + //deathboxes + float lastTime + float bestTime + float averageTime + array armorSwapTimes + + var activeQuickHint } ChallengesClientStruct global struct CameraLocationPair @@ -123,13 +134,32 @@ void function Cl_ChallengesByColombia_Init() //main menu cameras thread end signal RegisterSignal("ChallengeStartRemoveCameras") - + RegisterSignal("StopArmorSwapStopwatch") //laser sight particle PrecacheParticleSystem($"P_wpn_lasercannon_aim_short_blue") AddCallback_EntitiesDidLoad( AimTrainer_OnEntitiesDidLoad ) } +void function AimTrainer_QuickHint( string hintText, bool blueText = false, int duration = 99) +{ + if(ChallengesClientStruct.activeQuickHint != null) + { + RuiDestroyIfAlive( ChallengesClientStruct.activeQuickHint ) + ChallengesClientStruct.activeQuickHint = null + } + ChallengesClientStruct.activeQuickHint = CreateFullscreenRui( $"ui/announcement_quick_right.rpak" ) + + RuiSetGameTime( ChallengesClientStruct.activeQuickHint, "startTime", Time() ) + RuiSetString( ChallengesClientStruct.activeQuickHint, "messageText", hintText ) + RuiSetFloat( ChallengesClientStruct.activeQuickHint, "duration", duration.tofloat() ) + + if(blueText) + RuiSetFloat3( ChallengesClientStruct.activeQuickHint, "eventColor", SrgbToLinear( <48, 107, 255> / 255.0 ) ) + else + RuiSetFloat3( ChallengesClientStruct.activeQuickHint, "eventColor", SrgbToLinear( <255, 0, 119> / 255.0 ) ) +} + void function SetWeaponSlot(int slot) { entity player = GetLocalClientPlayer() @@ -491,6 +521,109 @@ void function DisableLiveStatsUI() Hud_SetVisible(HudElement( "ChallengesDamageValue" ), false) Hud_SetVisible(HudElement( "ChallengesHeadshots" ), false) Hud_SetVisible(HudElement( "ChallengesHeadshotsValue" ), false) + + ToggleArmorSwapUI( false ) +} + +void function ToggleArmorSwapUI(bool toggle) +{ + Hud_SetVisible(HudElement( "ArmorSwapStatsFrame" ), toggle) + Hud_SetVisible(HudElement( "ArmorSwapStatsTitle" ), toggle) + Hud_SetVisible(HudElement( "LastTime" ), toggle) + Hud_SetVisible(HudElement( "LastTimeValue" ), toggle) + Hud_SetVisible(HudElement( "BestTime" ), toggle) + Hud_SetVisible(HudElement( "BestTimeValue" ), toggle) + Hud_SetVisible(HudElement( "AverageTime" ), toggle) + Hud_SetVisible(HudElement( "AverageTimeValue" ), toggle) +} + +void function StartUpdatingArmorSwapLastTime() //create a new struct and function to calculate the elapsed times +{ + entity player = GetLocalClientPlayer() + + float startTime = Time() + + EndSignal(player, "ForceResultsEnd_SkipButton") + EndSignal(player, "ChallengeTimeOver") + EndSignal(player, "StopArmorSwapStopwatch") + + OnThreadEnd( + function() : ( player ) + { + ChallengesClientStruct.armorSwapTimes.append( ChallengesClientStruct.lastTime ) + + ChallengesClientStruct.armorSwapTimes.sort() + + float bestTime = ChallengesClientStruct.armorSwapTimes[0] + + // extract hours + int hourSeconds = int(bestTime) % SECONDS_PER_DAY + int hours = int( floor( hourSeconds / SECONDS_PER_HOUR ) ) + + // extract minutes + int elapsedMinutes = hourSeconds % SECONDS_PER_HOUR + int minutes = int( floor( elapsedMinutes / SECONDS_PER_MINUTE ) ) + + // extract seconds + int elapsedSeconds = elapsedMinutes % SECONDS_PER_MINUTE + int seconds = int( ceil( elapsedSeconds ) ) + + // extract milliseconds + int milliseconds = int( ceil ( (bestTime - int(bestTime)) * 100 ) ) + + Hud_SetText( HudElement( "BestTimeValue" ), format( "%.2d:%.2d:%.2d", minutes, seconds, milliseconds ) ) + + float averageTime + float sum + + foreach(value in ChallengesClientStruct.armorSwapTimes) + sum+=value + + averageTime = sum/ChallengesClientStruct.armorSwapTimes.len() + + // extract hours + hourSeconds = int( averageTime ) % SECONDS_PER_DAY + hours = int( floor( hourSeconds / SECONDS_PER_HOUR ) ) + + // extract minutes + elapsedMinutes = hourSeconds % SECONDS_PER_HOUR + minutes = int( floor( elapsedMinutes / SECONDS_PER_MINUTE ) ) + + // extract seconds + elapsedSeconds = elapsedMinutes % SECONDS_PER_MINUTE + seconds = int( ceil( elapsedSeconds ) ) + + // extract milliseconds + milliseconds = int( ceil ( (averageTime - int(averageTime)) * 100 ) ) + + Hud_SetText( HudElement( "AverageTimeValue" ), format( "%.2d:%.2d:%.2d", minutes, seconds, milliseconds ) ) + + } + ) + + while(true) + { + ChallengesClientStruct.lastTime = Time() - startTime + + // extract hours + int hourSeconds = int(ChallengesClientStruct.lastTime) % SECONDS_PER_DAY + int hours = int( floor( hourSeconds / SECONDS_PER_HOUR ) ) + + // extract minutes + int elapsedMinutes = hourSeconds % SECONDS_PER_HOUR + int minutes = int( floor( elapsedMinutes / SECONDS_PER_MINUTE ) ) + + // extract seconds + int elapsedSeconds = elapsedMinutes % SECONDS_PER_MINUTE + int seconds = int( ceil( elapsedSeconds ) ) + + // extract milliseconds + int milliseconds = int( ceil ( (ChallengesClientStruct.lastTime - int(ChallengesClientStruct.lastTime)) * 100 ) ) + + Hud_SetText( HudElement( "LastTimeValue" ), format( "%.2d:%.2d:%.2d", minutes, seconds, milliseconds ) ) + + WaitFrame() + } } void function ServerCallback_ResetLiveStatsUI() @@ -503,6 +636,15 @@ void function ServerCallback_ResetLiveStatsUI() ChallengesClientStruct.ShotsHits = 0 ChallengesClientStruct.damageDone = 0 ChallengesClientStruct.damagePossible = 0 + + ChallengesClientStruct.lastTime = 0 + ChallengesClientStruct.bestTime = 0 + ChallengesClientStruct.averageTime = 0 + ChallengesClientStruct.armorSwapTimes.clear() + + Hud_SetText( HudElement( "BestTimeValue" ), "00:00:00" ) + Hud_SetText( HudElement( "AverageTimeValue" ), "00:00:00" ) + Hud_SetText( HudElement( "LastTimeValue" ), "00:00:00" ) } void function UpdateUIRespawnTimer() @@ -814,9 +956,14 @@ void function StartChallenge8NewCClient() { entity player = GetLocalClientPlayer() ScreenFade( player, 0, 0, 0, 255, 1, 1, FFADE_IN | FFADE_PURGE ) - thread CreateDescriptionRUI("NOT IMPLEMENTED, RESTART THE LEVEL") - thread CreateTimerRUIandSTATS() + thread CreateDescriptionRUI("Swap armor as fast as you can") + + //thread CreateTimerRUIandSTATS() player.ClientCommand("CC_StartChallenge8NewC") + + DisableLiveStatsUI() + + ToggleArmorSwapUI(true) } void function SkipButtonResultsClient() diff --git a/vscripts/gamemodes/fs_tdm/_gamemode_fsdm.nut b/vscripts/gamemodes/fs_tdm/_gamemode_fsdm.nut index d66b58fb1..dbd4cef96 100644 --- a/vscripts/gamemodes/fs_tdm/_gamemode_fsdm.nut +++ b/vscripts/gamemodes/fs_tdm/_gamemode_fsdm.nut @@ -2971,19 +2971,16 @@ void function PlayerRestoreHP(entity player, float health, float shields) void function CharSelect( entity player) //By Retículo Endoplasmático#5955 (CaféDeColombiaFPS)// { - if(!FlowState_PROPHUNT()) + //Char select. + file.characters = clone GetAllCharacters() + if(FlowState_ForceAdminCharacter() && IsAdmin(player)) { - //Char select. - file.characters = clone GetAllCharacters() - if(FlowState_ForceAdminCharacter() && IsAdmin(player)) - { - ItemFlavor PersonajeEscogido = file.characters[FlowState_ChosenAdminCharacter()] - CharacterSelect_AssignCharacter( ToEHI( player ), PersonajeEscogido ) - } else - { - ItemFlavor PersonajeEscogido = file.characters[FlowState_ChosenCharacter()] - CharacterSelect_AssignCharacter( ToEHI( player ), PersonajeEscogido ) - } + ItemFlavor PersonajeEscogido = file.characters[FlowState_ChosenAdminCharacter()] + CharacterSelect_AssignCharacter( ToEHI( player ), PersonajeEscogido ) + } else + { + ItemFlavor PersonajeEscogido = file.characters[FlowState_ChosenCharacter()] + CharacterSelect_AssignCharacter( ToEHI( player ), PersonajeEscogido ) } //Dummies @@ -2999,13 +2996,6 @@ void function CharSelect( entity player) player.TakeOffhandWeapon( WEAPON_INVENTORY_SLOT_PRIMARY_2 ) player.GiveWeapon( "mp_weapon_bolo_sword_primary", WEAPON_INVENTORY_SLOT_PRIMARY_2, [] ) player.GiveOffhandWeapon( "melee_bolo_sword", OFFHAND_MELEE, [] ) - if(FlowState_PROPHUNT()) - { - file.characters = clone GetAllCharacters() - ItemFlavor PersonajeEscogido = file.characters[RandomInt(9)] - CharacterSelect_AssignCharacter( ToEHI( player ), PersonajeEscogido ) - TakeAllWeapons(player) - } } void function AssignCharacter( entity player, int index ) diff --git a/vscripts/gamemodes/fs_tdm/sh_gamemode_fsdm.nut b/vscripts/gamemodes/fs_tdm/sh_gamemode_fsdm.nut index c5b44f3e8..4db70af2b 100644 --- a/vscripts/gamemodes/fs_tdm/sh_gamemode_fsdm.nut +++ b/vscripts/gamemodes/fs_tdm/sh_gamemode_fsdm.nut @@ -1650,7 +1650,6 @@ bool function FlowState_SURF() { return GetCurrentPlayli int function FlowState_SURFRoundTime() { return GetCurrentPlaylistVarInt("flowstateSURFRoundtime", 800) } bool function FlowState_SURFLockPOI() { return GetCurrentPlaylistVarBool("flowstateSURFLockPOI", false ) } int function FlowState_SURFLockedPOI() { return GetCurrentPlaylistVarInt("flowstateSURFLockeedPOI", 0) } -bool function FlowState_PROPHUNT() { return GetCurrentPlaylistVarBool("flowstatePROPHUNT", false ) } bool function Flowstate_EnableAutoChangeLevel() { return GetCurrentPlaylistVarBool("flowstateAutoChangeLevelEnable", false ) } int function Flowstate_AutoChangeLevelRounds() { return GetCurrentPlaylistVarInt("flowstateRoundsBeforeChangeLevel", 2 ) } bool function FlowState_EnableSkillTrainerByColombia() { return GetCurrentPlaylistVarBool("flowstate_Enable_SKILLTRAINER_By_Colombia", true ) } diff --git a/vscripts/gamemodes/survival/_gamemode_survival.nut b/vscripts/gamemodes/survival/_gamemode_survival.nut index 0e5e0cca8..e050a415a 100644 --- a/vscripts/gamemodes/survival/_gamemode_survival.nut +++ b/vscripts/gamemodes/survival/_gamemode_survival.nut @@ -124,19 +124,19 @@ void function Sequence_Playing() if ( !GetCurrentPlaylistVarBool( "jump_from_plane_enabled", true ) ) { - vector pos = GetEnt( "info_player_start" ).GetOrigin() - pos.z += 5 + // vector pos = GetEnt( "info_player_start" ).GetOrigin() + // pos.z += 5 - int i = 0 + // int i = 0 foreach ( player in GetPlayerArray() ) { - // circle - float r = float(i) / float(GetPlayerArray().len()) * 2 * PI - player.SetOrigin( pos + 500.0 * ) + // // circle + // float r = float(i) / float(GetPlayerArray().len()) * 2 * PI + // player.SetOrigin( pos + 500.0 * ) DecideRespawnPlayer( player ) - i++ + // i++ } // Show the squad and player counter @@ -491,6 +491,7 @@ void function TakingFireDialogue( entity attacker, entity victim, entity weapon bool inTime foreach( player in GetPlayerArrayOfTeam( victim.GetTeam() ) ) { + if(!IsValid(player)) continue if( player.p.attackedTeam.len() < attackerTeam ) player.p.attackedTeam.resize( attackerTeam + 2, -returnTime ) @@ -498,7 +499,7 @@ void function TakingFireDialogue( entity attacker, entity victim, entity weapon inTime = true } - if( weapon != null ) + if( IsValid(weapon) ) { if( Distance( attacker.GetOrigin(), victim.GetOrigin() ) >= 4000 && Time() - victim.p.attackedTeam[ attackerTeam ] >= farTime ) PlayBattleChatterLineToSpeakerAndTeam( attacker, "bc_damageEnemy" ) diff --git a/vscripts/pilot/_zipline.gnut b/vscripts/pilot/_zipline.gnut index 3023f29d0..f4269797d 100644 --- a/vscripts/pilot/_zipline.gnut +++ b/vscripts/pilot/_zipline.gnut @@ -747,9 +747,10 @@ function CreateZiplineJetEffects( entity player ) void function CodeCallback_ZiplineMount( entity player, entity zipline ) { - // printl( "Mounting zipline") + player.p.ziplineUsages++ + thread ResetZiplineUsageDelayed(player) #if SERVER - EmitDifferentSoundsOnEntityForPlayerAndWorld( "player_zipline_attach", "3p_zipline_attach", player, player ) + EmitDifferentSoundsOnEntityForPlayerAndWorld( "player_zipline_attach", "3p_zipline_attach", player, player ) #endif } @@ -758,7 +759,7 @@ void function CodeCallback_ZiplineStart( entity player, entity zipline ) { #if SERVER CreateZiplineJetEffects( player ) - EmitDifferentSoundsOnEntityForPlayerAndWorld( "player_zipline_loop", "3p_zipline_loop", player, player ) + EmitDifferentSoundsOnEntityForPlayerAndWorld( "player_zipline_loop", "3p_zipline_loop", player, player ) foreach ( callback in _ZiplineStartCallbacks ) thread callback( player, zipline ) #endif diff --git a/vscripts/sh_anim_windows.gnut b/vscripts/sh_anim_windows.gnut index 15124e5ea..e059080d9 100644 --- a/vscripts/sh_anim_windows.gnut +++ b/vscripts/sh_anim_windows.gnut @@ -322,24 +322,28 @@ void function AnimWindow_PlaySound_Precache( var settingsBlock ) void function AnimWindow_PlaySound_Start( ScriptAnimWindow window, var settingsBlock ) { - string soundEventName = GetSettingsBlockString( settingsBlock, "soundEventName" ) - - #if SERVER - Assert( 0, "Not Yet Implemented" ) - #elseif CLIENT - entity viewPlayer = GetLocalViewPlayer() - if ( IsValid( viewPlayer ) && !viewPlayer.DoesShareRealms( window.ent ) ) - { - windowSoundHandleMap[window.stringID] <- null - return - } - var soundHandle = EmitSoundOnEntity( window.ent, soundEventName ) + try{ + string soundEventName = GetSettingsBlockString( settingsBlock, "soundEventName" ) + + if( soundEventName == "settings/scriptAnimWIndow/sound_spider_casual_idle.rpak" ) return + + #if SERVER + Assert( 0, "Not Yet Implemented" ) + #elseif CLIENT + entity viewPlayer = GetLocalViewPlayer() + if ( IsValid( viewPlayer ) && !viewPlayer.DoesShareRealms( window.ent ) ) + { + windowSoundHandleMap[window.stringID] <- null + return + } + var soundHandle = EmitSoundOnEntity( window.ent, soundEventName ) - #if DEVELOPER - disableoverwrite( windowSoundHandleMap ) + #if DEVELOPER + disableoverwrite( windowSoundHandleMap ) + #endif + windowSoundHandleMap[window.stringID] <- soundHandle #endif - windowSoundHandleMap[window.stringID] <- soundHandle - #endif + }catch(e420){} } @@ -351,14 +355,16 @@ void function AnimWindow_PlaySound_Transition( ScriptAnimWindow window, var sett void function AnimWindow_PlaySound_Stop( ScriptAnimWindow window, var settingsBlock ) { - #if SERVER - Assert( 0, "NYI" ) - #elseif CLIENT - entity viewPlayer = GetLocalViewPlayer() - if ( windowSoundHandleMap[window.stringID] ) - StopSound( windowSoundHandleMap[window.stringID] ) - delete windowSoundHandleMap[window.stringID] - #endif + try{ + #if SERVER + Assert( 0, "NYI" ) + #elseif CLIENT + entity viewPlayer = GetLocalViewPlayer() + if ( windowSoundHandleMap[window.stringID] ) + StopSound( windowSoundHandleMap[window.stringID] ) + delete windowSoundHandleMap[window.stringID] + #endif + }catch(e420){} } @@ -377,13 +383,16 @@ table windowFXHandleMap = {} void function AnimWindow_PlayFX_Precache( var settingsBlock ) { + try{ asset particleAsset = GetSettingsBlockStringAsAsset( settingsBlock, "particleSystemName" ) PrecacheParticleSystem( particleAsset ) + }catch(e420){} } void function AnimWindow_PlayFX_Start( ScriptAnimWindow window, var settingsBlock ) { + try{ asset particleAsset = GetSettingsBlockStringAsAsset( settingsBlock, "particleSystemName" ) int particleSystemIndex = GetParticleSystemIndex( particleAsset ) @@ -455,6 +464,7 @@ void function AnimWindow_PlayFX_Start( ScriptAnimWindow window, var settingsBloc #endif windowFXHandleMap[window.stringID] <- fxHandleOrNull + }catch(e420){} } @@ -709,38 +719,41 @@ void function RegisterAnimWindowType( bool isForThisVM, string type, } #endif - #if SERVER void function CodeCallback_AnimWindowPrecache( asset windowSettingsAsset ) { - var block = GetSettingsBlockForAsset( windowSettingsAsset ) + try{ + var block = GetSettingsBlockForAsset( windowSettingsAsset ) - string windowType = GetSettingsBlockString( block, "type" ) - Assert( windowType in fileLevel.animWindowTypeNameInfoMap, "Unknown script anim window type on \"" + string(windowSettingsAsset) + "\": " + windowType ) + string windowType = GetSettingsBlockString( block, "type" ) + Assert( windowType in fileLevel.animWindowTypeNameInfoMap, "Unknown script anim window type on \"" + string(windowSettingsAsset) + "\": " + windowType ) - #if SCRIPT_ANIM_WINDOWS_DEBUG - printt ( "><><><><><><>" + FUNC_NAME() + ": asset :" + string(windowSettingsAsset) + "; type: " + windowType ) - #endif + #if SCRIPT_ANIM_WINDOWS_DEBUG + printt ( "><><><><><><>" + FUNC_NAME() + ": asset :" + string(windowSettingsAsset) + "; type: " + windowType ) + #endif - AnimWindowTypeInfo awti = fileLevel.animWindowTypeNameInfoMap[windowType] - if ( awti.precacheFunc != null ) - awti.precacheFunc( block ) + AnimWindowTypeInfo awti = fileLevel.animWindowTypeNameInfoMap[windowType] + if ( awti.precacheFunc != null ) + awti.precacheFunc( block ) + }catch(e420){} } #elseif CLIENT void function ClientCodeCallback_AnimWindowPrecache( asset windowSettingsAsset ) { - var block = GetSettingsBlockForAsset( windowSettingsAsset ) + try{ + var block = GetSettingsBlockForAsset( windowSettingsAsset ) - string windowType = GetSettingsBlockString( block, "type" ) - Assert( windowType in fileLevel.animWindowTypeNameInfoMap, "Unknown script anim window type on \"" + string(windowSettingsAsset) + "\": " + windowType ) + string windowType = GetSettingsBlockString( block, "type" ) + Assert( windowType in fileLevel.animWindowTypeNameInfoMap, "Unknown script anim window type on \"" + string(windowSettingsAsset) + "\": " + windowType ) - #if SCRIPT_ANIM_WINDOWS_DEBUG - printt ( "><><><><><><>" + FUNC_NAME() + ": asset :" + string(windowSettingsAsset) + "; type: " + windowType ) - #endif + #if SCRIPT_ANIM_WINDOWS_DEBUG + printt ( "><><><><><><>" + FUNC_NAME() + ": asset :" + string(windowSettingsAsset) + "; type: " + windowType ) + #endif - AnimWindowTypeInfo awti = fileLevel.animWindowTypeNameInfoMap[windowType] - if ( awti.precacheFunc != null ) - awti.precacheFunc( block ) + AnimWindowTypeInfo awti = fileLevel.animWindowTypeNameInfoMap[windowType] + if ( awti.precacheFunc != null ) + awti.precacheFunc( block ) + }catch(e420){} } #endif @@ -748,20 +761,22 @@ void function ClientCodeCallback_AnimWindowPrecache( asset windowSettingsAsset ) #if CLIENT void function ClientCodeCallback_AnimWindowStart( ScriptAnimWindow window ) { - Assert( IsValid( window.ent ) ) + try{ + Assert( IsValid( window.ent ) ) - var block = GetSettingsBlockForAsset( window.settingsAsset ) + var block = GetSettingsBlockForAsset( window.settingsAsset ) - string windowType = GetSettingsBlockString( block, "type" ) - Assert( windowType in fileLevel.animWindowTypeNameInfoMap, "Unknown script anim window type on animseq \"" + window.ent.GetCurrentSequenceName() + "\": " + windowType ) + string windowType = GetSettingsBlockString( block, "type" ) + Assert( windowType in fileLevel.animWindowTypeNameInfoMap, "Unknown script anim window type on animseq \"" + window.ent.GetCurrentSequenceName() + "\": " + windowType ) - #if SCRIPT_ANIM_WINDOWS_DEBUG - printt ( "><><><><><><>" + FUNC_NAME() + ": id : " + window.stringID + "; type: " + windowType + "; name: " + window.windowName + "; startCycle: " + window.startCycle + "><><><><><><><><><><" ) - #endif + #if SCRIPT_ANIM_WINDOWS_DEBUG + printt ( "><><><><><><>" + FUNC_NAME() + ": id : " + window.stringID + "; type: " + windowType + "; name: " + window.windowName + "; startCycle: " + window.startCycle + "><><><><><><><><><><" ) + #endif - AnimWindowTypeInfo awti = fileLevel.animWindowTypeNameInfoMap[windowType] - Assert( awti.isForThisVM, "Script anim window \"" + window.windowName + "\" on animseq \"" + window.ent.GetCurrentSequenceName() + "\" is marked as " + (SERVER ? "SERVER" : "CLIENT") + " but its type (\"" + windowType + "\") is " + (SERVER ? "CLIENT" : "SERVER") + " only." ) - awti.startFunc( window, block ) + AnimWindowTypeInfo awti = fileLevel.animWindowTypeNameInfoMap[windowType] + Assert( awti.isForThisVM, "Script anim window \"" + window.windowName + "\" on animseq \"" + window.ent.GetCurrentSequenceName() + "\" is marked as " + (SERVER ? "SERVER" : "CLIENT") + " but its type (\"" + windowType + "\") is " + (SERVER ? "CLIENT" : "SERVER") + " only." ) + awti.startFunc( window, block ) + }catch(e420){} } #endif @@ -769,21 +784,23 @@ void function ClientCodeCallback_AnimWindowStart( ScriptAnimWindow window ) #if CLIENT void function ClientCodeCallback_AnimWindowTransition( ScriptAnimWindow window ) { - Assert( IsValid( window.ent ) ) + try{ + Assert( IsValid( window.ent ) ) - var block = GetSettingsBlockForAsset( window.settingsAsset ) + var block = GetSettingsBlockForAsset( window.settingsAsset ) - string windowType = GetSettingsBlockString( block, "type" ) - Assert( windowType in fileLevel.animWindowTypeNameInfoMap, "Unknown script anim window type on animseq \"" + window.ent.GetCurrentSequenceName() + "\": " + windowType ) + string windowType = GetSettingsBlockString( block, "type" ) + Assert( windowType in fileLevel.animWindowTypeNameInfoMap, "Unknown script anim window type on animseq \"" + window.ent.GetCurrentSequenceName() + "\": " + windowType ) - #if SCRIPT_ANIM_WINDOWS_DEBUG - printt ( "><><><><><><>" + FUNC_NAME() + ": id : " + window.stringID + "; type: " + windowType + "; name: " + window.windowName ) - #endif + #if SCRIPT_ANIM_WINDOWS_DEBUG + printt ( "><><><><><><>" + FUNC_NAME() + ": id : " + window.stringID + "; type: " + windowType + "; name: " + window.windowName ) + #endif - AnimWindowTypeInfo awti = fileLevel.animWindowTypeNameInfoMap[windowType] - Assert( awti.isForThisVM, "Script anim window \"" + window.windowName + "\" on animseq \"" + window.ent.GetCurrentSequenceName() + "\" is marked as " + (SERVER ? "SERVER" : "CLIENT") + " but its type (\"" + windowType + "\") is " + (SERVER ? "CLIENT" : "SERVER") + " only." ) - if ( awti.transitionFunc != null ) - awti.transitionFunc( window, block ) + AnimWindowTypeInfo awti = fileLevel.animWindowTypeNameInfoMap[windowType] + Assert( awti.isForThisVM, "Script anim window \"" + window.windowName + "\" on animseq \"" + window.ent.GetCurrentSequenceName() + "\" is marked as " + (SERVER ? "SERVER" : "CLIENT") + " but its type (\"" + windowType + "\") is " + (SERVER ? "CLIENT" : "SERVER") + " only." ) + if ( awti.transitionFunc != null ) + awti.transitionFunc( window, block ) + }catch(e420){} } #endif @@ -791,6 +808,7 @@ void function ClientCodeCallback_AnimWindowTransition( ScriptAnimWindow window ) #if CLIENT void function ClientCodeCallback_AnimWindowStop( ScriptAnimWindow window ) { + try{ Assert( IsValid( window.ent ) ) var block = GetSettingsBlockForAsset( window.settingsAsset ) @@ -805,6 +823,7 @@ void function ClientCodeCallback_AnimWindowStop( ScriptAnimWindow window ) AnimWindowTypeInfo awti = fileLevel.animWindowTypeNameInfoMap[windowType] Assert( awti.isForThisVM, "Script anim window \"" + window.windowName + "\" on animseq \"" + window.ent.GetCurrentSequenceName() + "\" is marked as " + (SERVER ? "SERVER" : "CLIENT") + " but its type (\"" + windowType + "\") is " + (SERVER ? "CLIENT" : "SERVER") + " only." ) awti.stopFunc( window, block ) + }catch(e420){} } #endif diff --git a/vscripts/sh_apex_screens.nut b/vscripts/sh_apex_screens.nut index 2c9263db6..332951e62 100644 --- a/vscripts/sh_apex_screens.nut +++ b/vscripts/sh_apex_screens.nut @@ -1336,7 +1336,8 @@ var function CreateApexScreenRUIElement( ApexScreenState screen ) RuiSetBool( rui, "sharesPropWithEnvironmentalRUI", true ) RuiTrackInt( rui, "cameraNearbyEnemySquads", GetLocalViewPlayer(), RUI_TRACK_SCRIPT_NETWORK_VAR_INT, GetNetworkedVariableIndex( "cameraNearbyEnemySquads" ) ) - + RuiSetFloat3( rui, "logoTint", <1.0, 1.0, 1.0> ) + #if(true) if ( IsFallLTM() ) { diff --git a/vscripts/sh_codecallbacks.gnut b/vscripts/sh_codecallbacks.gnut index d867d8cb2..6728e14b0 100644 --- a/vscripts/sh_codecallbacks.gnut +++ b/vscripts/sh_codecallbacks.gnut @@ -16,6 +16,7 @@ global function AddCallback_OnUseButtonPressed global function RemoveCallback_OnUseButtonPressed global function AddCallback_OnUseButtonReleased global function RemoveCallback_OnUseButtonReleased +global function ResetZiplineUsageDelayed global function CodeCallback_ForceScriptError @@ -84,6 +85,7 @@ struct void function CodeCallbacksShared_Init() { + RegisterSignal( "NewZiplineUse" ) RegisterSignal( "OnAnimationDone" ) RegisterSignal( "OnAnimationInterrupted" ) RegisterSignal( "SettingsChanged" ) @@ -202,10 +204,36 @@ bool function CodeCallback_CanUseEntity( entity player, entity ent ) return true } +void function ResetZiplineUsageDelayed(entity player) +{ + if(!IsValid(player)) return + + if(IsValid(player.Zipline_GetActiveZipline()) && IsValid(player.Zipline_GetLastZipline()) && player.Zipline_GetActiveZipline() != player.Zipline_GetLastZipline()) + { + player.p.ziplineUsages = 0 + return + } + + Signal( player, "NewZiplineUse" ) + EndSignal( player, "NewZiplineUse" ) + + bool clearScore = false + + float maxTime = Time() + ZIPLINES_COOLDOWN + + while( Time() < maxTime ) + WaitFrame() + + if(IsValid(player)) + player.p.ziplineUsages = 0 +} const float ZIPLINE_MAX_USE_ANGLE = 35.0 bool function CodeCallback_CanUseZipline( entity player, entity zipline, vector ziplineClosestPoint ) { + if ( !IsValid( player ) ) + return false + if ( !player.IsHuman() ) return false @@ -221,7 +249,10 @@ bool function CodeCallback_CanUseZipline( entity player, entity zipline, vector if ( GetGameState() >= eGameState.WinnerDetermined ) return false - + + if(player.p.ziplineUsages == 3) + return false + #if SERVER foreach ( func in svGlobal.canUseZiplineCallbacks ) { @@ -438,7 +469,7 @@ void function CheckForAccelerants( entity player ) { if(player != GetLocalClientPlayer()) return - printt("Flowstate DEBUG - Trying to use ultimate.") + //printt("Flowstate DEBUG - Trying to use ultimate.") entity ultimateAbility = player.GetOffhandWeapon( OFFHAND_INVENTORY ) if ( !IsValid( ultimateAbility ) ) return @@ -449,7 +480,7 @@ void function CheckForAccelerants( entity player ) if ( ammoNow < ammoMax ) { //check for accelerants here - printt("Flowstate DEBUG - Check for accelerants here.") + //printt("Flowstate DEBUG - Check for accelerants here.") array playerInventory = SURVIVAL_GetPlayerInventory( player ) foreach ( invItem in playerInventory ) @@ -458,9 +489,9 @@ void function CheckForAccelerants( entity player ) { Consumable_UseItemByType(player, 5) SURVIVAL_RemoveFromPlayerInventory(player, "health_pickup_ultimate", 1) - printt("Flowstate DEBUG - Ultimate accelerant found! Recharging ultimate and removing item from inventory...") + //printt("Flowstate DEBUG - Ultimate accelerant found! Recharging ultimate and removing item from inventory...") } else { - printt("Flowstate DEBUG - Ultimate accelerant not found!") + //printt("Flowstate DEBUG - Ultimate accelerant not found!") } } diff --git a/vscripts/sh_damage_types.nut b/vscripts/sh_damage_types.nut index 4337a56fb..f05d2e1cd 100644 --- a/vscripts/sh_damage_types.nut +++ b/vscripts/sh_damage_types.nut @@ -55,10 +55,16 @@ global enum eDamageSourceId damagedef_sonic_boom damagedef_bangalore_smoke_explosion damagedef_creeping_bombardment_detcord_explosion + damagedef_tank_bombardment_detcord_explosion damagedef_defensive_bombardment - //--------------------------- + //Custom + damagedef_DocDrone + //--------------------------- + mp_weapon_grenade_decoyaudio + mp_weapon_grenade_cryonade + // Pilot Weapons mp_weapon_hemlok mp_weapon_lmg @@ -69,10 +75,12 @@ global enum eDamageSourceId mp_weapon_r97 mp_weapon_dmr mp_weapon_wingman + //mp_weapon_wingman_n mp_weapon_wingmanelite mp_weapon_semipistol mp_weapon_autopistol mp_weapon_sniper + mp_weapon_sentinel mp_weapon_shotgun mp_weapon_mastiff mp_weapon_frag_grenade @@ -80,6 +88,7 @@ global enum eDamageSourceId mp_weapon_arc_blast mp_weapon_thermite_grenade mp_weapon_nuke_satchel + //mp_weapon_satchel mp_extreme_environment mp_weapon_shotgun_pistol mp_weapon_doubletake @@ -88,15 +97,24 @@ global enum eDamageSourceId mp_weapon_wrecking_ball mp_weapon_melee_survival mp_weapon_pdw - mp_weapon_epg mp_weapon_energy_ar mp_weapon_volt_smg mp_weapon_defender - mp_weapon_softball mp_weapon_warmachine mp_weapon_car mp_weapon_3030 mp_weapon_dragon_lmg + //mp_weapon_energysword + //mp_ability_birds + //mp_weapon_throwingknife + //mp_weapon_softball + //mp_weapon_epg + //mp_weapon_smr + //mp_weapon_rocket_launcher + mp_weapon_grenade_electric_smoke + mp_weapon_grenade_gravity + //mp_weapon_rspn101_og + //sp_weapon_arc_tool // melee_pilot_emptyhanded melee_pilot_arena @@ -115,6 +133,12 @@ global enum eDamageSourceId melee_titan_sword melee_titan_sword_aoe + melee_boxing_ring + mp_weapon_melee_boxing_ring + + melee_data_knife + mp_weapon_data_knife_primary + melee_wraith_kunai mp_weapon_wraith_kunai_primary @@ -143,6 +167,8 @@ global enum eDamageSourceId mp_turretweapon_blaster mp_turretweapon_plasma mp_turretweapon_sentry + //mp_weapon_mobile_hmg + mp_weapon_smart_pistol //Character Abilities mp_weapon_defensive_bombardment_weapon @@ -251,7 +277,8 @@ global enum eDamageSourceId mp_titanweapon_drone_titan mp_titanweapon_stealth_sword mp_ability_consumable - + snd_bomb + bombardment bleedout mp_weapon_energy_shotgun @@ -337,6 +364,7 @@ global enum eModSourceId //Attachments intentionally left off. This prevents them from displaying in kill cards. // modNameStrings should be defined when the mods are created, not in a separate table -Mackey global const modNameStrings = { + [ eDamageSourceId.damagedef_DocDrone ] = "DRONE", [ eModSourceId.accelerator ] = "#MOD_ACCELERATOR_NAME", [ eModSourceId.afterburners ] = "#MOD_AFTERBURNERS_NAME", [ eModSourceId.arc_triple_threat ] = "#MOD_ARC_TRIPLE_THREAT_NAME", @@ -429,18 +457,25 @@ void function DamageTypes_Init() file.damageSourceIDToImage = { - // - // - // - // - // } - file.damageSourceIDToImage[eDamageSourceId.melee_shadowsquad_hands] <- $"rui/gamemodes/shadow_squad/shadow_icon_small" - file.damageSourceIDToImage[eDamageSourceId.mp_weapon_volt_smg] <- $"rui/weapon_icons/r5/weapon_volt" + file.damageSourceIDToImage[eDamageSourceId.melee_shadowsquad_hands] <- $"rui/gamemodes/shadow_squad/shadow_icon_small" + file.damageSourceIDToImage[eDamageSourceId.mp_weapon_volt_smg] <- $"rui/weapon_icons/r5/weapon_volt" + file.damageSourceIDToImage[eDamageSourceId.mp_weapon_car] <- $"rui/weapon_icons/r5/weapon_car" + file.damageSourceIDToImage[eDamageSourceId.mp_weapon_sentinel] <- $"rui/weapon_icons/r5/weapon_sentinel" + //file.damageSourceIDToImage[eDamageSourceId.mp_weapon_softball] <- $"r2_ui/menus/loadout_icons/primary_weapon/primary_softball" + //file.damageSourceIDToImage[eDamageSourceId.mp_weapon_epg] <- $"r2_ui/menus/loadout_icons/primary_weapon/primary_epg1" + //file.damageSourceIDToImage[eDamageSourceId.mp_weapon_rocket_launcher] <- $"r2_ui/menus/loadout_icons/anti_titan/at_archer" + //file.damageSourceIDToImage[eDamageSourceId.mp_weapon_smr] <- $"r2_ui/menus/loadout_icons/anti_titan/at_sidewinder" + //file.damageSourceIDToImage[eDamageSourceId.mp_weapon_wingman_n] <- $"r2_ui/menus/loadout_icons/primary_weapon/primary_wingman_elite" + //file.damageSourceIDToImage[eDamageSourceId.mp_weapon_mobile_hmg] <- $"rui/weapon_icons/r5/weapon_rampart_turret" + file.damageSourceIDToImage[eDamageSourceId.mp_weapon_smart_pistol] <- $"rui/weapon_icons/r5/weapon_smart_pistol" + file.damageSourceIDToImage[eDamageSourceId.snd_bomb] <- $"rui/flowstatecustom/bombicon" + //file.damageSourceIDToImage[eDamageSourceId.sp_weapon_arc_tool] <- $"r2_ui/menus/loadout_icons/primary_weapon/primary_arc_tool" file.damageSourceIDToName = { + [ eDamageSourceId.damagedef_DocDrone ] = "DRONE", //mp [ eDamageSourceId.mp_extreme_environment ] = "#DAMAGE_EXTREME_ENVIRONMENT", @@ -528,13 +563,11 @@ void function DamageTypes_Init() [ eDamageSourceId.gamemode_bomb_detonation ] = "Bomb Detonation", [ eDamageSourceId.bleedout ] = "#DEATH_BLEEDOUT", [ eDamageSourceId.mp_weapon_energy_shotgun ] = "Energy Shotgun", - [ eDamageSourceId.damagedef_unknownBugIt ] = "#DEATH_GENERIC_KILLED", [ eDamageSourceId.damagedef_unknown ] = "#DEATH_GENERIC_KILLED", [ eDamageSourceId.weapon_cubemap ] = "#DEATH_GENERIC_KILLED", [ eDamageSourceId.stuck ] = "#DEATH_GENERIC_KILLED", [ eDamageSourceId.rodeo_battery_removal ] = "#DEATH_RODEO_BATTERY_REMOVAL", - [ eDamageSourceId.melee_pilot_emptyhanded ] = "#DEATH_MELEE", [ eDamageSourceId.melee_pilot_arena ] = "#DEATH_MELEE", [ eDamageSourceId.melee_pilot_sword ] = "#DEATH_SWORD", @@ -551,28 +584,47 @@ void function DamageTypes_Init() [ eDamageSourceId.melee_titan_punch_drone ] = "#DEATH_TITAN_MELEE", [ eDamageSourceId.melee_titan_sword ] = "#DEATH_TITAN_SWORD", [ eDamageSourceId.melee_titan_sword_aoe ] = "#DEATH_TITAN_SWORD", + [ eDamageSourceId.mp_weapon_volt_smg ] = "#WPN_VOLT_SMG", + [ eDamageSourceId.mp_ability_octane_stim ] = "#WPN_OCTANE_STIM_SHORT", + [ eDamageSourceId.mp_weapon_tesla_trap ] = "#DEATH_TESLA_TRAP", + [ eDamageSourceId.mp_ability_crypto_drone_emp ] = "#WPN_DRONE_EMP", + [ eDamageSourceId.mp_ability_crypto_drone_emp_trap ] = "#WPN_DRONE_EMP", [ eDamageSourceId.melee_wraith_kunai ] = "#DEATH_MELEE_WRAITH_KUNAI", [ eDamageSourceId.mp_weapon_wraith_kunai_primary ] = "#DEATH_MELEE_WRAITH_KUNAI", + [ eDamageSourceId.melee_bloodhound_axe ] = "#DEATH_MELEE_BLOODHOUND_AXE", + [ eDamageSourceId.mp_weapon_bloodhound_axe_primary ] = "#DEATH_MELEE_BLOODHOUND_AXE", + [ eDamageSourceId.melee_lifeline_baton ] = "#DEATH_MELEE_LIFELINE_BATON", + [ eDamageSourceId.mp_weapon_lifeline_baton_primary ] = "#DEATH_MELEE_LIFELINE_BATON", + [ eDamageSourceId.melee_shadowsquad_hands ] = "#DEATH_MELEE_SHADOWSQUAD_HANDS", + [ eDamageSourceId.mp_weapon_shadow_squad_hands_primary ] = "#DEATH_MELEE_SHADOWSQUAD_HANDS", + + //r5r [ eDamageSourceId.melee_bolo_sword ] = "Bolo Sword Melee", [ eDamageSourceId.mp_weapon_bolo_sword_primary ] = "Bolo Sword Melee", - [ eDamageSourceId.mp_weapon_volt_smg ] = "#WPN_VOLT_SMG", + [ eDamageSourceId.melee_boxing_ring ] = "Boxing Hands", + [ eDamageSourceId.mp_weapon_melee_boxing_ring ] = "Boxing Hands", + //[ eDamageSourceId.melee_data_knife ] = "Dataknife", + //[ eDamageSourceId.mp_weapon_data_knife_primary ] = "Dataknife", + //[ eDamageSourceId.mp_weapon_throwingknife ] = "Throwing Knife", + //[ eDamageSourceId.mp_weapon_satchel ] = "Satchel", + //[ eDamageSourceId.mp_weapon_wingman_n ] = "Wingman Elite", + [ eDamageSourceId.mp_weapon_sentinel ] = "Sentinel", + //[ eDamageSourceId.mp_weapon_mobile_hmg ] = "Sheila", + //[ eDamageSourceId.mp_weapon_softball ] = "Softball", + //[ eDamageSourceId.mp_weapon_epg ] = "EPG", + //[ eDamageSourceId.mp_weapon_smr ] = "Sidewinder SMR", + //[ eDamageSourceId.mp_weapon_rocket_launcher ] = "Softball", [ eDamageSourceId.mp_weapon_car ] = "Car SMG", + //[ eDamageSourceId.mp_ability_birds ] = "Arthur's Revenge", [ eDamageSourceId.mp_weapon_3030 ] = "30-30 Repeater", - [ eDamageSourceId.mp_weapon_dragon_lmg ] = "Rampage LMG", - [ eDamageSourceId.mp_ability_octane_stim ] = "#WPN_OCTANE_STIM_SHORT", - - [ eDamageSourceId.mp_weapon_tesla_trap ] = "#DEATH_TESLA_TRAP" - - ,[ eDamageSourceId.mp_ability_crypto_drone_emp ] = "#WPN_DRONE_EMP" // - ,[ eDamageSourceId.mp_ability_crypto_drone_emp_trap ] = "#WPN_DRONE_EMP" - - ,[ eDamageSourceId.melee_bloodhound_axe ] = "#DEATH_MELEE_BLOODHOUND_AXE" - ,[ eDamageSourceId.mp_weapon_bloodhound_axe_primary ] = "#DEATH_MELEE_BLOODHOUND_AXE" - - ,[ eDamageSourceId.melee_lifeline_baton ] = "#DEATH_MELEE_LIFELINE_BATON" - ,[ eDamageSourceId.mp_weapon_lifeline_baton_primary ] = "#DEATH_MELEE_LIFELINE_BATON" - ,[ eDamageSourceId.melee_shadowsquad_hands ] = "#DEATH_MELEE_SHADOWSQUAD_HANDS" - ,[ eDamageSourceId.mp_weapon_shadow_squad_hands_primary ] = "#DEATH_MELEE_SHADOWSQUAD_HANDS" + //[ eDamageSourceId.mp_weapon_energysword ] = "Energy Sword", + [ eDamageSourceId.mp_weapon_dragon_lmg ] = "Rampage LMG", + [ eDamageSourceId.mp_weapon_smart_pistol ] = "Smart Pistol", + [ eDamageSourceId.mp_weapon_grenade_electric_smoke ] = "Electric Smoke", + [ eDamageSourceId.mp_weapon_grenade_gravity ] = "Gravity Star", + [ eDamageSourceId.snd_bomb ] = "Bomb" + //[ eDamageSourceId.mp_weapon_rspn101_og ] = "R101" + //[ eDamageSourceId.sp_weapon_arc_tool] = "Arc Tool" } #if DEVELOPER diff --git a/vscripts/sh_damage_utility.gnut b/vscripts/sh_damage_utility.gnut index 795c9bb0b..d517a58c0 100644 --- a/vscripts/sh_damage_utility.gnut +++ b/vscripts/sh_damage_utility.gnut @@ -175,6 +175,9 @@ float function GetCriticalScaler( entity ent, var damageInfo ) bool function IsValidHeadShot( var damageInfo = null, entity victim = null, entity attacker = null, entity weapon = null, int hitGroup = -1, float attackDist = -1.0, entity inflictor = null ) { + if(GameRules_GetGameMode() == "fs_prophunt") + return false + // Pass this function damageInfo if you can, otherwise you'll have to fill out all the other params. If using damageInfo you dont need to. if ( damageInfo != null ) { diff --git a/vscripts/sh_death_package.gnut b/vscripts/sh_death_package.gnut index 76d7a2653..7eab22d25 100644 --- a/vscripts/sh_death_package.gnut +++ b/vscripts/sh_death_package.gnut @@ -142,8 +142,8 @@ void function Death_Package_Init() PrecacheEffect( $"P_exp_spectre_death" ) PrecacheEffect( $"xo_exp_death" ) - if ( SentryTurretsExplodeOnDeath() ) - PrecacheEffect( TURRET_DEATH_FX ) + // if ( SentryTurretsExplodeOnDeath() ) + // PrecacheEffect( TURRET_DEATH_FX ) PrecacheModel( $"mdl/gibs/human_gibs.rmdl" ) @@ -276,20 +276,20 @@ void function HandleDeathPackage( entity ent, var damageInfo ) DamageInfo_SetDeathPackage( damageInfo, "knockback" ) } - if ( SentryTurretsExplodeOnDeath() ) - { - if ( IsTurret( ent ) ) - { - if ( ent.GetClassName() == "npc_turret_sentry" ) - { - PlayFX( TURRET_DEATH_FX, ent.GetOrigin(), ent.GetAngles() ) - if ( ent.Dev_GetAISettingByKeyField( "turret_explode_on_death" ) == 1 ) - ent.Destroy() - - return - } - } - } + // if ( SentryTurretsExplodeOnDeath() ) + // { + // if ( IsTurret( ent ) ) + // { + // if ( ent.GetClassName() == "npc_turret_sentry" ) + // { + // PlayFX( TURRET_DEATH_FX, ent.GetOrigin(), ent.GetAngles() ) + // if ( ent.Dev_GetAISettingByKeyField( "turret_explode_on_death" ) == 1 ) + // ent.Destroy() + + // return + // } + // } + // } if ( !( "silentDeath" in ent.s ) ) { diff --git a/vscripts/sh_doors.nut b/vscripts/sh_doors.nut index 85cf6bbbc..05f27962e 100644 --- a/vscripts/sh_doors.nut +++ b/vscripts/sh_doors.nut @@ -229,8 +229,8 @@ void function OnDoorSpawned( entity door ) // Special legacy case for a specific door model // Faster to do these experiments in script than to keep changing models in leveled and recompiling // TODO: Should eventually delete - bool useBlockableDoors = GetCurrentPlaylistVarBool( "survival_force_blockable_doors", true ) - bool useCodeDoors = GetCurrentPlaylistVarBool( "survival_force_code_doors", true ) + bool useBlockableDoors = GetCurrentPlaylistVarBool( "survival_force_blockable_doors", false ) + bool useCodeDoors = GetCurrentPlaylistVarBool( "survival_force_code_doors", false )//TODO: FIX THIS ASAP if ( useCodeDoors ) { bool makeLeftDoor = false, makeRightDoor = false diff --git a/vscripts/sh_extended_use.gnut b/vscripts/sh_extended_use.gnut index cc8d4f995..1a8732bc3 100644 --- a/vscripts/sh_extended_use.gnut +++ b/vscripts/sh_extended_use.gnut @@ -126,6 +126,10 @@ void function ExtendedUse( entity ent, entity player, ExtendedUseSettings settin { player.MovementEnable() } + if(GameRules_GetGameMode() == "flowstate_snd") + { + Highlight_ClearFriendlyHighlight( player ) + } } if ( settings.exclusiveUse ) diff --git a/vscripts/sh_flightpath_utility.gnut b/vscripts/sh_flightpath_utility.gnut index 8a0fb1d1a..c272e80af 100644 --- a/vscripts/sh_flightpath_utility.gnut +++ b/vscripts/sh_flightpath_utility.gnut @@ -5,6 +5,8 @@ untyped globalize_all_functions global const ANALYSIS_PREVIEW_TIME = 5.0 +global const vector AIRDROP_MAXS = <80,80,256> +global const vector AIRDROP_MINS = <-80,-80,0> struct AirdropBadPlace { @@ -909,8 +911,7 @@ bool function FlightPathHasNodeAndMatchesAINData( FlightPath flightPath ) const bool DEBUG_DROP_POINTS = false const bool DEBUG_DROP_POINTS_LINES = false const DEBUG_DRAW_TIME = 0.02 -const vector AIRDROP_MAXS = <80,80,256> -const vector AIRDROP_MINS = <-80,-80,0> + bool function VerifyAirdropPoint( vector baseOrigin, float yaw, bool isCarePackage = false, entity realmEnt = null) { diff --git a/vscripts/sh_highlight.gnut b/vscripts/sh_highlight.gnut index 83f5fabbd..607d82ad4 100644 --- a/vscripts/sh_highlight.gnut +++ b/vscripts/sh_highlight.gnut @@ -383,7 +383,7 @@ void function Highlight_Init() highlight = RegisterHighlight( "survival_item_heirloom" ) HighlightContext_SetOutline( highlight, HIGHLIGHT_OUTLINE_LOOT_DEFAULT ) HighlightContext_SetOutlineFocused( highlight, HIGHLIGHT_OUTLINE_LOOT_FOCUSED ) - HighlightContext_SetParam( highlight, 0, <0.98, 0.78, 0> ) // + HighlightContext_SetParam( highlight, 0, <1, 0.305882365, 0.113725498> ) // HighlightContext_SetParam( highlight, 1, <1.0, 0, 0> ) HighlightContext_SetRadius( highlight, 1 ) HighlightContext_SetFill( highlight, HIGHLIGHT_FILL_LOOT_DEFAULT ) @@ -448,7 +448,7 @@ void function Highlight_Init() highlight = RegisterHighlight( "survival_item_heirloom_cargobot" ) HighlightContext_SetOutline( highlight, HIGHLIGHT_OUTLINE_LOOT_DEFAULT ) HighlightContext_SetOutlineFocused( highlight, HIGHLIGHT_OUTLINE_LOOT_FOCUSED ) - HighlightContext_SetParam( highlight, 0, <0.98, 0.78, 0> ) // + HighlightContext_SetParam( highlight, 0, <1, 0.305882365, 0.113725498> ) // HighlightContext_SetParam( highlight, 1, <0.2, 0, 0> ) HighlightContext_SetRadius( highlight, 1 ) HighlightContext_SetFill( highlight, HIGHLIGHT_FILL_LOOT_DEFAULT ) @@ -513,7 +513,7 @@ void function Highlight_Init() highlight = RegisterHighlight( "survival_item_heirloom_longerHighlightDist" ) HighlightContext_SetOutline( highlight, HIGHLIGHT_OUTLINE_LOOT_DEFAULT ) HighlightContext_SetOutlineFocused( highlight, HIGHLIGHT_OUTLINE_LOOT_FOCUSED ) - HighlightContext_SetParam( highlight, 0, <0.98, 0.78, 0> ) // + HighlightContext_SetParam( highlight, 0, <1, 0.305882365, 0.113725498> ) // HighlightContext_SetParam( highlight, 1, <1.0, 0, 0> ) HighlightContext_SetRadius( highlight, 1 ) HighlightContext_SetFill( highlight, HIGHLIGHT_FILL_LOOT_DEFAULT ) @@ -563,16 +563,66 @@ void function Highlight_Init() HighlightContext_SetFarFadeDistance( highlight, 3000.0 ) highlight = RegisterHighlight( "survival_friendly_skydiving" ) - HighlightContext_SetOutline( highlight, HIGHLIGHT_OUTLINE_OBJECTIVE ) //HIGHLIGHT_OUTLINE_CUSTOM_COLOR_PULSE - HighlightContext_SetFill( highlight, HIGHLIGHT_FILL_OBJECTIVE ) //HIGHLIGHT_FILL_SONAR - HighlightContext_SetParam( highlight, 0, <0, 0.47, 1.96> )//<0.34,0.59,0.86> )//<0,0.47,1.96> )//HIGHLIGHT_COLOR_OBJECTIVE ) - HighlightContext_SetRadius( highlight, 2 ) - HighlightContext_SetDrawFunc( highlight, eHighlightDrawFunc.ALWAYS ) //eHighlightDrawFunc.LOS_LINE + // HighlightContext_SetOutline( highlight, HIGHLIGHT_OUTLINE_OBJECTIVE ) //HIGHLIGHT_OUTLINE_CUSTOM_COLOR_PULSE + // HighlightContext_SetFill( highlight, HIGHLIGHT_FILL_OBJECTIVE ) //HIGHLIGHT_FILL_SONAR + // HighlightContext_SetParam( highlight, 0, <0, 0.47, 1.96> )//<0.34,0.59,0.86> )//<0,0.47,1.96> )//HIGHLIGHT_COLOR_OBJECTIVE ) + // HighlightContext_SetRadius( highlight, 2 ) + // HighlightContext_SetDrawFunc( highlight, eHighlightDrawFunc.ALWAYS ) //eHighlightDrawFunc.LOS_LINE + // HighlightContext_SetADSFade( highlight, false ) + // HighlightContext_SetAfterPostProcess( highlight, true ) + // HighlightContext_SetFarFadeDistance( highlight, 999999.0 ) + // HighlightContext_SetNearFadeDistance( highlight, 2048.0 ) + HighlightContext_SetOutline( highlight, HIGHLIGHT_OUTLINE_OBJECTIVE ) + //HighlightContext_SetFill( highlight, HIGHLIGHT_FILL_OBJECTIVE ) + HighlightContext_SetParam( highlight, 0, <0, 0.47, 1.96> ) + HighlightContext_SetRadius( highlight, 1.0 ) + HighlightContext_SetDrawFunc( highlight, eHighlightDrawFunc.ALWAYS ) HighlightContext_SetADSFade( highlight, false ) - HighlightContext_SetAfterPostProcess( highlight, true ) + HighlightContext_SetAfterPostProcess( highlight, false ) HighlightContext_SetFarFadeDistance( highlight, 999999.0 ) - HighlightContext_SetNearFadeDistance( highlight, 2048.0 ) + HighlightContext_SetNearFadeDistance( highlight, 0.0 ) + + highlight = RegisterHighlight( "prophunt_teammate" ) + HighlightContext_SetOutline( highlight, HIGHLIGHT_OUTLINE_OBJECTIVE ) + HighlightContext_SetParam( highlight, 0, <0, 0.47, 1.96> ) + HighlightContext_SetRadius( highlight, 1.0 ) + HighlightContext_SetDrawFunc( highlight, eHighlightDrawFunc.ALWAYS ) + HighlightContext_SetADSFade( highlight, false ) + HighlightContext_SetAfterPostProcess( highlight, false ) + HighlightContext_SetFarFadeDistance( highlight, 999999.0 ) + HighlightContext_SetNearFadeDistance( highlight, 0.0 ) + + highlight = RegisterHighlight( "infection_survivor_teammate" ) + HighlightContext_SetOutline( highlight, HIGHLIGHT_OUTLINE_OBJECTIVE ) + HighlightContext_SetParam( highlight, 0, <0, 0.47, 1.96> ) + HighlightContext_SetRadius( highlight, 1.0 ) + HighlightContext_SetDrawFunc( highlight, eHighlightDrawFunc.ALWAYS ) + HighlightContext_SetADSFade( highlight, false ) + HighlightContext_SetAfterPostProcess( highlight, false ) + HighlightContext_SetFarFadeDistance( highlight, 999999.0 ) + HighlightContext_SetNearFadeDistance( highlight, 0.0 ) + highlight = RegisterHighlight( "infection_lastmanstanding" ) + HighlightContext_SetOutline( highlight, HIGHLIGHT_OUTLINE_OBJECTIVE ) + HighlightContext_SetParam( highlight, 0, <0.5, 0.2, 0.2> ) + HighlightContext_SetRadius( highlight, 1.0 ) + HighlightContext_SetDrawFunc( highlight, eHighlightDrawFunc.ALWAYS ) + HighlightContext_SetADSFade( highlight, false ) + HighlightContext_SetAfterPostProcess( highlight, false ) + HighlightContext_SetFarFadeDistance( highlight, 999999.0 ) + HighlightContext_SetNearFadeDistance( highlight, 0.0 ) + + highlight = RegisterHighlight( "hackers_wallhack" ) + HighlightContext_SetOutline( highlight, HIGHLIGHT_OUTLINE_CUSTOM_COLOR_NOZ_NOSCANLINES ) + HighlightContext_SetFill( highlight, HIGHLIGHT_FILL_BLOODHOUND ) + HighlightContext_SetParam( highlight, 0, HIGHLIGHT_COLOR_BLOODHOUND ) + HighlightContext_SetRadius( highlight, 1.5 ) + HighlightContext_SetDrawFunc( highlight, eHighlightDrawFunc.ALWAYS ) + HighlightContext_SetADSFade( highlight, false ) + HighlightContext_SetAfterPostProcess( highlight, false ) + HighlightContext_SetFarFadeDistance( highlight, 999999.0 ) + HighlightContext_SetNearFadeDistance( highlight, 0.0 ) + highlight = RegisterHighlight( "survival_enemy_skydiving" ) HighlightContext_SetOutline( highlight, HIGHLIGHT_OUTLINE_OBJECTIVE ) //HighlightContext_SetFill( highlight, HIGHLIGHT_FILL_OBJECTIVE ) @@ -596,17 +646,24 @@ void function Highlight_Init() HighlightContext_SetFarFadeDistance( highlight, 999999.0 ) HighlightContext_SetNearFadeDistance( highlight, 0.0 ) - #if HAS_WEAPON_PICKUP_HIGHLIGHT - highlight = RegisterHighlight( "survival_evac_ship" ) - HighlightContext_SetOutline( highlight, HIGHLIGHT_OUTLINE_CUSTOM_COLOR ) - HighlightContext_SetRadius( highlight, 5 ) - HighlightContext_SetParam( highlight, 0, HIGHLIGHT_COLOR_FRIENDLY ) - HighlightContext_SetDrawFunc( highlight, eHighlightDrawFunc.ALWAYS ) - HighlightContext_SetADSFade( highlight, false ) - HighlightContext_SetFarFadeDistance( highlight, 999999.0 ) - HighlightContext_SetNearFadeDistance( highlight, 256.0 ) - #endif - + highlight = RegisterHighlight( "survival_evac_ship" ) + HighlightContext_SetOutline( highlight, HIGHLIGHT_OUTLINE_CUSTOM_COLOR ) + HighlightContext_SetRadius( highlight, 5 ) + HighlightContext_SetParam( highlight, 0, HIGHLIGHT_COLOR_FRIENDLY ) + HighlightContext_SetDrawFunc( highlight, eHighlightDrawFunc.ALWAYS ) + HighlightContext_SetADSFade( highlight, false ) + HighlightContext_SetFarFadeDistance( highlight, 999999.0 ) + HighlightContext_SetNearFadeDistance( highlight, 256.0 ) + + highlight = RegisterHighlight( "hover_vehicle_highlight" ) + HighlightContext_SetOutline( highlight, HIGHLIGHT_OUTLINE_CUSTOM_COLOR ) + HighlightContext_SetRadius( highlight, 5 ) + HighlightContext_SetParam( highlight, 0, HIGHLIGHT_COLOR_FRIENDLY ) + HighlightContext_SetDrawFunc( highlight, eHighlightDrawFunc.ALWAYS ) + HighlightContext_SetADSFade( highlight, false ) + HighlightContext_SetFarFadeDistance( highlight, 7000.0 ) + HighlightContext_SetNearFadeDistance( highlight, 256.0 ) + highlight = RegisterHighlight( "crypto_camera_friendly" ) HighlightContext_SetOutline( highlight, HIGHLIGHT_OUTLINE_CRYPTO_DRONE ) // HighlightContext_SetFill( highlight, HIGHLIGHT_FILL_CRYPTO_DRONE ) // diff --git a/vscripts/sh_minimap.gnut b/vscripts/sh_minimap.gnut index af9f99953..31b9fa269 100644 --- a/vscripts/sh_minimap.gnut +++ b/vscripts/sh_minimap.gnut @@ -74,6 +74,9 @@ global enum eMinimapObject_prop_script RESPAWN_CHAMBER, RESPAWN_DNA, TRAIN, + SND_A, + SND_B, + BOMB, COUNT } diff --git a/vscripts/sh_onboarding.gnut b/vscripts/sh_onboarding.gnut index 94e04c355..7dfe2d311 100644 --- a/vscripts/sh_onboarding.gnut +++ b/vscripts/sh_onboarding.gnut @@ -144,7 +144,7 @@ void function Sequence_WaitingForPlayers() wait PreGame_GetWaitingForPlayersCountdown() + (introCountdownEnabled ? 0.0 : CharSelect_GetIntroMusicStartTime()) - if(GameRules_GetGameMode() == "fs_dm") + if(GameRules_GetGameMode() != SURVIVAL) { SetGameState( eGameState.Playing ) return @@ -586,6 +586,9 @@ void function OnPlayerKilled( entity victim, entity attacker, var damageInfo ) victim.FreezeControlsOnServer() + if(GameRules_GetGameMode() == "flowstate_snd") + return + victim.SetPredictionEnabled( false ) victim.StartObserverMode( OBS_MODE_DEATHCAM ) @@ -618,18 +621,38 @@ void function OnClientConnected( entity player ) { case eGameState.WaitingForPlayers: case eGameState.PickLoadout: - if(GameRules_GetGameMode() == "fs_dm") break - - entity startEnt = GetEnt( "info_player_start" ) + + if( GameRules_GetGameMode() == "map_editor_deprecated") + DecideRespawnPlayer( player ) + + if( GameRules_GetGameMode() != SURVIVAL ) break - player.SetOrigin( startEnt.GetOrigin() ) - player.SetAngles( startEnt.GetAngles() ) + switch(GetMapName()) + { + case "mp_rr_canyonlands_64k_x_64k": + case "mp_rr_canyonlands_mu1": + case "mp_rr_canyonlands_mu1_night": + player.SetOrigin( <-3557.94165, 9962.51074, 3600> ) + player.SetAngles( <0, 65.3776093, 0> ) + break + + case "mp_rr_desertlands_64k_x_64k": + case "mp_rr_desertlands_64k_x_64k_nx": + case "mp_rr_desertlands_64k_x_64k_tt": + case "mp_rr_desertlands_mu1": + player.SetOrigin( <4838.49658, 13516.8604, -4025.90625> ) + player.SetAngles( <0, -136.298843, 0> ) + break + + default: + entity startEnt = GetEnt( "info_player_start" ) + player.SetOrigin( startEnt.GetOrigin() ) + player.SetAngles( startEnt.GetAngles() ) + break + } player.FreezeControlsOnServer() - if( GameRules_GetGameMode() == "map_editor_deprecated") - DecideRespawnPlayer( player ) - if ( PreGame_GetWaitingForPlayersSpawningEnabled() && GetGameState() == eGameState.WaitingForPlayers ) DecideRespawnPlayer( player, false ) @@ -677,21 +700,50 @@ void function UpdatePlayerCounts() { string currGameMode = GameRules_GetGameMode() - if(currGameMode == "fs_dm"){ - array connectedPlayers = GetPlayerArray_ConnectedNotSpectatorTeam() + + switch(currGameMode) + { + case "flowstate_infection": + SetGlobalNetInt( "livingPlayerCount", GetPlayerArrayOfTeam_Alive(TEAM_IMC).len() ) + SetGlobalNetInt( "livingShadowPlayerCount", GetPlayerArrayOfTeam_Alive(TEAM_MILITIA).len() ) + SetGlobalNetInt( "squadsRemainingCount", 2 ) + break - if(!GetCurrentPlaylistVarBool("flowstatePROPHUNT", false )){ + case "fs_dm": + array connectedPlayers = GetPlayerArray_ConnectedNotSpectatorTeam() SetGlobalNetInt( "livingPlayerCount", connectedPlayers.len() ) - SetGlobalNetInt( "squadsRemainingCount", connectedPlayers.len() )} - else { - SetGlobalNetInt( "livingPlayerCount", GetPlayerArray().len() ) - SetGlobalNetInt( "squadsRemainingCount", GetPlayerArray().len() ) - } - - } else { + SetGlobalNetInt( "squadsRemainingCount", connectedPlayers.len() ) + break + + case "fs_prophunt": + array propsAlive = GetPlayerArrayOfTeam_Alive( TEAM_MILITIA ) + SetGlobalNetInt( "livingPlayerCount", propsAlive.len() ) + SetGlobalNetInt( "squadsRemainingCount", propsAlive.len() ) + break + + case "flowstate_pkknockback": + array playersAlive = GetPlayerArray_Alive() + SetGlobalNetInt( "livingPlayerCount", playersAlive.len() ) + SetGlobalNetInt( "squadsRemainingCount", playersAlive.len() ) + break + + case "fs_duckhunt": + array ducksAlive = GetPlayerArrayOfTeam_Alive( TEAM_MILITIA ) + SetGlobalNetInt( "livingPlayerCount", ducksAlive.len() ) + SetGlobalNetInt( "squadsRemainingCount", ducksAlive.len() ) + break + + case "flowstate_snd": + foreach(player in GetPlayerArray()) + Remote_CallFunction_NonReplay( player, "SND_ForceUpdatePlayerCount") + break + + default: SetGlobalNetInt( "livingPlayerCount", GetPlayerArray_AliveConnected().len() ) - SetGlobalNetInt( "squadsRemainingCount", GetNumTeamsRemaining() ) + SetGlobalNetInt( "squadsRemainingCount", GetNumTeamsRemaining() ) + break } + } #endif diff --git a/vscripts/sh_passives.gnut b/vscripts/sh_passives.gnut index 6da03b21b..50b526154 100644 --- a/vscripts/sh_passives.gnut +++ b/vscripts/sh_passives.gnut @@ -515,28 +515,27 @@ void function PilotBlood_Passive( entity player, int passive, bool didHave, bool void function PilotBlood_Passive_Body(entity player, int passive, bool didHave, bool nowHas) { float healthRegenStartDelay = 5.0 - - while ( IsValid( player ) ) + float healthRegenRate = 1.0 + + while ( IsValid( player ) && PlayerHasPassive( player, ePassives.PAS_PILOT_BLOOD ) ) { - wait( HEALTH_REGEN_TICK_TIME ) - - if ( !IsAlive( player ) ) - continue - - if ( Time() - player.p.lastDamageTime < healthRegenStartDelay ) + if(GameRules_GetGameMode() == "fs_duckhunt" || GameRules_GetGameMode() == "flowstate_infection") + wait( 0.05 ) + else + wait( HEALTH_REGEN_TICK_TIME ) + + if ( !IsAlive( player ) || Bleedout_IsBleedingOut(player) || Time() - player.p.lastDamageTime < healthRegenStartDelay || player.IsPhaseShifted()) { + WaitFrame() continue } - - float healthRegenRate = 1.0 - - + + healthRegenRate = 1.0 + if(GameRules_GetGameMode() == "fs_duckhunt" || GameRules_GetGameMode() == "flowstate_infection") + healthRegenRate = 2.0 + if ( player.GetHealth() != player.GetMaxHealth() ) { - // No regen during phase shift - if ( player.IsPhaseShifted() ) - continue - player.SetHealth( min( player.GetMaxHealth(), player.GetHealth() + healthRegenRate ) ) } diff --git a/vscripts/sh_ping.gnut b/vscripts/sh_ping.gnut index 650e5393f..a3732e2cc 100644 --- a/vscripts/sh_ping.gnut +++ b/vscripts/sh_ping.gnut @@ -3011,7 +3011,7 @@ void function Ping_ClearMapWaypoint( entity player ) void function Ping_SetMapWaypoint( entity player, vector origin ) { - if ( !IsAlive( player ) ) + if ( !IsAlive( player ) || GameRules_GetGameMode() == "flowstate_snd" ) return int ticketID = GetNewTicketID() diff --git a/vscripts/sh_playlists.gnut b/vscripts/sh_playlists.gnut index 771e5c0a1..90db78356 100644 --- a/vscripts/sh_playlists.gnut +++ b/vscripts/sh_playlists.gnut @@ -323,7 +323,35 @@ asset function GetModeEmblemImage( string playlistName ) else Warning( "Playlist '%s' has invalid value for 'emblem': %s", playlistName, emblemKey ) } - + #if CLIENT + switch(GameRules_GetGameMode()) + { + case "fs_prophunt": + emblemImage = $"rui/flowstatecustom/prophunt" + break + + case "fs_duckhunt": + emblemImage = $"rui/flowstatecustom/duckhunt" + break + + // case "fs_dm": + // emblemImage = $"rui/flowstatecustom/dm" + // break + + case "flowstate_pkknockback": + emblemImage = $"rui/flowstatecustom/pkpushback2" + break + + case "flowstate_snd": + emblemImage = $"rui/flowstatecustom/sndgamemode" + break + + // case "flowstate_infection": + // emblemImage = $"rui/flowstatecustom/infection" + // break + } + #endif + return emblemImage } #if UI diff --git a/vscripts/sh_scoreboard.gnut b/vscripts/sh_scoreboard.gnut index 0c340a1ae..977743557 100644 --- a/vscripts/sh_scoreboard.gnut +++ b/vscripts/sh_scoreboard.gnut @@ -46,12 +46,12 @@ bool s_nextShowWantsTPPrompt = false #if CLIENT void function ClScoreboard_Init() { - RegisterConCommandTriggeredCallback( "+showscores", OnScoreboardButtonPressed ) - RegisterMenuButtonPressedCallback( BUTTON_BACK, OnScoreboardButtonPressed ) + //RegisterConCommandTriggeredCallback( "+showscores", OnScoreboardButtonPressed ) + //RegisterMenuButtonPressedCallback( BUTTON_BACK, OnScoreboardButtonPressed ) RegisterSignal( "OnHideScoreboard" ) - AddCallback_GameStateEnter( eGameState.WinnerDetermined, UpdateScoreboardVisibility ) + //AddCallback_GameStateEnter( eGameState.WinnerDetermined, UpdateScoreboardVisibility ) clGlobal.isScoreboardShown = false } @@ -189,11 +189,11 @@ void function UpdateScoreboardVisibility() foreach ( func in file.scoreboardShowCallbacks ) func() - thread clGlobal.showScoreboardFunc() + // thread clGlobal.showScoreboardFunc() //don't show scoreboard in fullmap it looks bad } else { - thread clGlobal.hideScoreboardFunc() + // thread clGlobal.hideScoreboardFunc() RunUIScript( "SetShowingMap", false ) diff --git a/vscripts/sh_survival_equipment_slot.gnut b/vscripts/sh_survival_equipment_slot.gnut index d40cec9e0..a1c743799 100644 --- a/vscripts/sh_survival_equipment_slot.gnut +++ b/vscripts/sh_survival_equipment_slot.gnut @@ -357,6 +357,10 @@ int function EmptyCommsAction_AttachmentForParent( string equipmentSlot, string return eCommsAction.INVENTORY_NEED_ATTACHMENT_MAG_HIGHCAL case "shotgun": return eCommsAction.INVENTORY_NEED_ATTACHMENT_MAG_SHOTGUN + case "sniper": + return eCommsAction.INVENTORY_NEED_ATTACHMENT_MAG_SNIPER + case "explosive": + return eCommsAction.INVENTORY_NEED_ATTACHMENT_MAG_EXPLOSIVE default: Warning( format( "%s() - Unhandled ammo type: '%s'.", FUNC_NAME(), weaponData.ammoType ) ) return eCommsAction.BLANK @@ -460,8 +464,10 @@ int function FilledCommsAction_Weapon( string equipmentSlotRef, string itemRef ) return eCommsAction.INVENTORY_NEED_AMMO_HIGHCAL case "shotgun": return eCommsAction.INVENTORY_NEED_AMMO_SHOTGUN - case "boomjuice": - return eCommsAction.INVENTORY_NEED_AMMO_BOOMJUICE + case "sniper": + return eCommsAction.INVENTORY_NEED_AMMO_SNIPER + case "explosive": + return eCommsAction.INVENTORY_NEED_AMMO_EXPLOSIVE } Warning( "GetCommsActionForEquipmentSlot() - Unhandled ammo type '" + lootData.ammoType + "'" ) @@ -470,6 +476,34 @@ int function FilledCommsAction_Weapon( string equipmentSlotRef, string itemRef ) asset function GetEmptyEquipmentImage( string equipmentSlot ) { + printt(equipmentSlot) + + if(GameRules_GetGameMode() == "flowstate_snd") + { + switch(equipmentSlot) + { + case "main_weapon0_barrel": + case "main_weapon1_barrel": + return $"rui/pilot_loadout/mods/empty_barrel_stabilizer" + + case "main_weapon0_grip": + case "main_weapon1_grip": + return $"rui/pilot_loadout/mods/empty_stock_tactical" + + case "main_weapon0_mag": + case "main_weapon1_mag": + return $"rui/pilot_loadout/mods/empty_mag" + + case "main_weapon0_sight": + case "main_weapon1_sight": + return $"rui/pilot_loadout/mods/empty_sight" + + case "main_weapon0_hopup": + case "main_weapon1_hopup": + return $"rui/pilot_loadout/mods/empty_hopup_em_choke" + } + } + EquipmentSlot es = Survival_GetEquipmentSlotDataByRef( equipmentSlot ) return es.emptyImage } diff --git a/vscripts/sh_survival_freefall.gnut b/vscripts/sh_survival_freefall.gnut index eea4dc763..b7a2b3ed1 100644 --- a/vscripts/sh_survival_freefall.gnut +++ b/vscripts/sh_survival_freefall.gnut @@ -545,7 +545,7 @@ void function PlayerSkyDive( entity player, vector driverViewVector, array, VectorToAngles( <0,0,-1> ) ) EffectSetControlPointVector( smokeTrailFX, 1, smokeColor ) - if(GetCurrentPlaylistVarBool( "rgb_skydive", false )) + if(GetCurrentPlaylistVarBool( "rgb_skydive", true )) thread RGB_Skydive(smokeTrailFX) smokeFX.append( smokeTrailFX ) diff --git a/vscripts/sh_survival_loot.gnut b/vscripts/sh_survival_loot.gnut index 456b7e7c1..083cf25c6 100644 --- a/vscripts/sh_survival_loot.gnut +++ b/vscripts/sh_survival_loot.gnut @@ -1621,7 +1621,6 @@ void function SURVIVAL_Loot_SetHighlightForLoot( entity prop, bool isSelected ) #if CLIENT SetSurvivalPropHighlight( prop, highlight, isSelected ) - SetSurvivalPropHighlight( prop, highlight, isSelected ) ManageHighlightEntity( prop ) #endif } diff --git a/vscripts/sh_survival_loot_all.gnut b/vscripts/sh_survival_loot_all.gnut index 4914c73f6..b309c5269 100644 --- a/vscripts/sh_survival_loot_all.gnut +++ b/vscripts/sh_survival_loot_all.gnut @@ -185,6 +185,21 @@ struct CustomGrenadeData float carePackageChance } +global struct CustomAmmoData +{ + string className, + asset icon = $"rui/hud/gametype_icons/survival/sur_ammo_bullet_large", + asset model = $"mdl/weapons_r5/loot/_master/w_loot_wep_ammo_hc.rmdl", + string sound = "survival_loot_pickup_HeavyAmmo", + string sound3p = "survival_loot_pickup_3p_HeavyAmmo", + string printname = "Custom Ammo", + string pingCommsAction = "PING_AMMO_HIGHCAL", + string desc = "Custom Ammo Desc", + int countPerDrop = 80, + int stackSize = 80, + float chance = 10.0 +} + array attachmentSortOrder = ["barrel", "mag", "sight", "grip", "hopup"] array function GetCustomHopupArray() @@ -229,20 +244,36 @@ float function GetLootTableFloat( string ref, var datatable, int rowIndex, strin void function SURVIVAL_Loot_All_InitShared() { - #if(!UI) - // - #endif - var dt = GetDataTable( $"datatable/survival_loot.rpak" ) file.lootIndexToString.clear() file.lootData.clear() - var attachmentTable = GetDataTable( $"datatable/survival_weapon_mods.rpak" ) - file.disabledRefs.clear() - string disabledRefs = GetCurrentPlaylistVarString( "survival_disabled_loot", " " ) - file.disabledRefs = split( disabledRefs, " " ) + file.disabledRefs = split( GetCurrentPlaylistVarString( "survival_disabled_loot", " " ), " " ) + + SURVIVAL_Loot_RegFromDataTable( GetDataTable( $"datatable/survival_loot.rpak" ) ) + + #if CLIENT || SERVER + if(GameRules_GetGameMode() == "flowstate_snd") + SURVIVAL_Loot_RegFromDataTable( GetDataTable( $"datatable/flowstate_custom_loot.rpak" )) + #endif + + //SURVIVAL_Loot_RegFromDataTable( GetDataTable( $"datatable/survival_loot_sdk.rpak" )) - array icons = [] + //RegisterCustomAmmos() + RegisterCustomWeapons() + + #if(UI) + RegisterSignal( "GatherFriendInfo" ) + RegisterSignal( "GatheredEnoughFriendInfo" ) + SURVIVAL_UIInit_Override_DeathBox_RUI() + #endif + + file.initialized = true +} + +void function SURVIVAL_Loot_RegFromDataTable(var dt) +{ + var attachmentTable = GetDataTable( $"datatable/survival_weapon_mods.rpak" ) int numRows = GetDatatableRowCount( dt ) for ( int i = 0; i < numRows; i++ ) { @@ -432,10 +463,6 @@ void function SURVIVAL_Loot_All_InitShared() #endif } - foreach(string icon in icons) - { - - } RegisterCustomWeapons() #if(UI) @@ -589,6 +616,72 @@ array function GetCustomHopupsForWeapon(string className) return result } +void function RegisterCustomAmmo(CustomAmmoData AmmoData) +{ + LootData data + data.ref = AmmoData.className + data.baseWeapon = AmmoData.className + + data.pickupString = AmmoData.printname + data.desc = AmmoData.desc + data.hudIcon = AmmoData.icon + data.model = AmmoData.model + data.tier = 1 + data.countPerDrop = AmmoData.countPerDrop + data.inventorySlotCount = AmmoData.stackSize + data.lootType = eLootType.AMMO + data.pickupSound_1p = AmmoData.sound + data.pickupSound_3p = AmmoData.sound3p + + #if SERVER || CLIENT + data.pingCommsAction = GetCommsActionForName( AmmoData.pingCommsAction ) + #endif + + data.index = file.lootIndexToString.len() + file.lootIndexToString.append( data.ref ) + file.lootData[ data.ref ] <- data + + #if !UI + AddCustomItemToLootPool( data.ref, "ammo", AmmoData.chance) + #endif +} + +void function RegisterCustomAmmos() +{ + CustomAmmoData SniperAmmo = { + className = "sniper", + printname = "Sniper Ammo", + desc = "", + + icon = $"rui/hud/gametype_icons/survival/sur_ammo_sniper", + model = $"mdl/weapons_r5/loot/_master/w_loot_wep_ammo_sniper.rmdl", + sound = "survival_loot_pickup_HeavyAmmo", + sound3p = "survival_loot_pickup_3p_HeavyAmmo", + pingCommsAction = "BLANK", + countPerDrop = 15, + stackSize = 30, + chance = 10.0 + } + + CustomAmmoData ExplosiveAmmo = { + printname = "Explosive Ammo", + className = "explosive", + + desc = "", + icon = $"rui/hud/gametype_icons/survival/sur_ammo_explosive", + model = $"mdl/weapons_r5/loot/_master/w_loot_wep_ammo_explosive.rmdl", + sound = "survival_loot_pickup_titan_ammo", + sound3p = "survival_loot_pickup_3p_titan_ammo", + pingCommsAction = "BLANK", + countPerDrop = 5, + stackSize = 10, + chance = 10.0 + } + + RegisterCustomAmmo(SniperAmmo) + RegisterCustomAmmo(ExplosiveAmmo) +} + void function RegisterCustomGrenade(CustomGrenadeData grenadeData) { LootData data data.ref = grenadeData.className @@ -884,6 +977,7 @@ int function SURVIVAL_Loot_GetLootTypeFromString( string lootTypeString ) return eLootType.BACKPACK case "custom_pickup": + case "bomb": return eLootType.CUSTOMPICKUP case "helmet": diff --git a/vscripts/sh_utility_all.gnut b/vscripts/sh_utility_all.gnut index 6e3fccfab..ff6edf95b 100644 --- a/vscripts/sh_utility_all.gnut +++ b/vscripts/sh_utility_all.gnut @@ -1627,7 +1627,7 @@ vector function GetRandomCenterBiasedToEdge( vector center , float minDeviation, vector function GetRandomCenter( vector center , float minDeviation, float maxDeviation, float minAngle = 0, float maxAngle = 360 ) { float deviation = RandomFloatRange( minDeviation, maxDeviation ) - vector angles = <0, RandomFloatRange( minAngle, maxAngle ) % 360, 0> + vector angles = <0, RandomFloatRange( minAngle, maxAngle ) , 0> vector newCenter = center + (AnglesToForward( angles )*deviation) return newCenter } diff --git a/vscripts/ui/_menus.nut b/vscripts/ui/_menus.nut index 96df51aac..2b74526a2 100644 --- a/vscripts/ui/_menus.nut +++ b/vscripts/ui/_menus.nut @@ -1570,6 +1570,12 @@ void function InitMenus() var killreplayhud = AddMenu( "KillReplayHud", $"scripts/resource/ui/menus/KillReplay/replayhud.menu", InitKillReplayHud ) /////// + //FLOWSTATE DM + //Statistics + AddMenu( "StatisticsUI", $"scripts/resource/ui/menus/FlowstateDM/flowstate_statistics.menu", InitStatisticsUI ) + AddMenu( "FSDMVoteMenu", $"scripts/resource/ui/menus/FlowstateDM/flowstate_menu_vote.menu", Init_FSDM_VoteMenu ) + AddMenu( "FSProphuntScoreboardMenu", $"scripts/resource/ui/menus/FlowstateDM/fs_prophunt_scoreboard.menu", Init_FSDM_ProphuntScoreboardMenu ) + var lobbyMenu = AddMenu( "LobbyMenu", $"resource/ui/menus/lobby.menu", InitLobbyMenu ) AddPanel( lobbyMenu, "PlayPanel", InitPlayPanel ) AddPanel( lobbyMenu, "CharactersPanel", InitCharactersPanel ) diff --git a/vscripts/ui/menu_survival_ground_list.nut b/vscripts/ui/menu_survival_ground_list.nut index 3f522cd94..93a2c40df 100644 --- a/vscripts/ui/menu_survival_ground_list.nut +++ b/vscripts/ui/menu_survival_ground_list.nut @@ -98,8 +98,8 @@ void function InitGroundListMenu( var newMenuArg ) file.quickSwapGrid = Hud_GetChild( menu, "QuickSwapGrid" ) GridPanel_Init( file.quickSwapGrid, INVENTORY_ROWS, INVENTORY_COLS, OnBindQuickSwapItem, GetInventoryItemCount, Survival_CommonButtonInit ) - GridPanel_SetButtonHandler( file.quickSwapGrid, UIE_CLICK, OnQuickSwapItemClick ) - GridPanel_SetButtonHandler( file.quickSwapGrid, UIE_CLICKRIGHT, OnQuickSwapItemClickRight ) + // GridPanel_SetButtonHandler( file.quickSwapGrid, UIE_CLICK, OnQuickSwapItemClick ) + // GridPanel_SetButtonHandler( file.quickSwapGrid, UIE_CLICKRIGHT, OnQuickSwapItemClickRight ) GridPanel_SetCommandHandler( file.quickSwapGrid, OnQuickSwapMenuCommand ) @@ -114,12 +114,12 @@ void function InitGroundListMenu( var newMenuArg ) AddMenuFooterOption( menu, RIGHT, BUTTON_B, true, "#B_BUTTON_CLOSE", "#CLOSE" ) - var weaponSwapButton = Hud_GetChild( menu, "WeaponSwapButton" ) - var rui = Hud_GetRui( weaponSwapButton ) - RuiSetImage( rui, "iconImage", $"rui/hud/loot/weapon_swap_icon" ) - // - RuiSetInt( rui, "lootTier", 1 ) - Hud_AddEventHandler( weaponSwapButton, UIE_CLICK, OnWeaponSwapButtonClick ) + // var weaponSwapButton = Hud_GetChild( menu, "WeaponSwapButton" ) + // var rui = Hud_GetRui( weaponSwapButton ) + // RuiSetImage( rui, "iconImage", $"rui/hud/loot/weapon_swap_icon" ) + // // + // RuiSetInt( rui, "lootTier", 1 ) + //Hud_AddEventHandler( weaponSwapButton, UIE_CLICK, OnWeaponSwapButtonClick ) } void function OnSurvivalGroundListMenu_Open() diff --git a/vscripts/ui/menu_system.nut b/vscripts/ui/menu_system.nut index 37f030c8f..146aa01f6 100644 --- a/vscripts/ui/menu_system.nut +++ b/vscripts/ui/menu_system.nut @@ -2,7 +2,7 @@ global function InitSystemMenu global function InitSystemPanelMain global function InitSystemPanel global function UpdateSystemPanel - +global function ToggleSetHunter global function OpenSystemMenu global function ShouldDisplayOptInOptions @@ -31,12 +31,14 @@ struct table friendlyFireButtonData table thirdPersonButtonData table ExitChallengeButtonData + table TDM_ChangeWeapons table endmatchButtonData table spectateButtonData table respawnButtonData - table hubButtonData - table invisButtonData + table SetHunterButtonData + table ToggleScoreboardFocus InputDef& qaFooter + bool SETHUNTERALLOWED } file void function InitSystemMenu( var newMenuArg ) // @@ -92,6 +94,16 @@ void function SignalExitChallenge() RunClientScript("ExitChallengeClient") } +void function SetHunterFunct() +{ + ClientCommand( "sethunter" ) +} + +void function OpenWeaponSelector() +{ + RunClientScript("OpenTDMWeaponSelectorUI") +} + void function InitSystemPanel( var panel ) { var menu = Hud_GetParent( panel ) @@ -122,8 +134,9 @@ void function InitSystemPanel( var panel ) file.ExitChallengeButtonData[ panel ] <- clone data file.spectateButtonData[ panel ] <- clone data file.respawnButtonData[ panel ] <- clone data - file.hubButtonData[ panel ] <- clone data - file.invisButtonData[ panel ] <- clone data + file.TDM_ChangeWeapons[ panel ] <- clone data + file.SetHunterButtonData[ panel ] <- clone data + file.ToggleScoreboardFocus[ panel ] <- clone data file.ExitChallengeButtonData[ panel ].label = "FINISH CHALLENGE" file.ExitChallengeButtonData[ panel ].activateFunc = SignalExitChallenge @@ -131,6 +144,12 @@ void function InitSystemPanel( var panel ) file.settingsButtonData[ panel ].label = "#SETTINGS" file.settingsButtonData[ panel ].activateFunc = OpenSettingsMenu + file.SetHunterButtonData[ panel ].label = "SET HUNTER" + file.SetHunterButtonData[ panel ].activateFunc = SetHunterFunct + + file.TDM_ChangeWeapons[ panel ].label = "CHANGE WEAPON" + file.TDM_ChangeWeapons[ panel ].activateFunc = OpenWeaponSelector + file.leaveMatchButtonData[ panel ].label = "#LEAVE_MATCH" file.leaveMatchButtonData[ panel ].activateFunc = LeaveDialog @@ -170,6 +189,9 @@ void function InitSystemPanel( var panel ) file.respawnButtonData[ panel ].label = "#PROMPT_PING_RESPAWN_STATION_SHORT" file.respawnButtonData[ panel ].activateFunc = RunKillSelf + file.ToggleScoreboardFocus[ panel ].label = "TOGGLE SCOREBOARD" + file.ToggleScoreboardFocus[ panel ].activateFunc = ShowScoreboard_System + AddPanelEventHandler( panel, eUIEvent.PANEL_SHOW, SystemPanelShow ) } @@ -190,9 +212,9 @@ void function OnSystemMenu_Open() void function UpdateSystemPanel( var panel ) { //temp workaround, not the best place for this tbh - if(IsConnected() && !GetCurrentPlaylistVarBool( "firingrange_aimtrainerbycolombia", false )) + if( IsConnected() && GetCurrentPlaylistName() != "flowstate_aimtrainer" ) file.lobbyReturnButtonData[ panel ].label = "#RETURN_TO_LOBBY" - else if(IsConnected() && GetCurrentPlaylistVarBool( "firingrange_aimtrainerbycolombia", false )) + else if( IsConnected() && GetCurrentPlaylistName() == "flowstate_aimtrainer" ) file.lobbyReturnButtonData[ panel ].label = "EXIT AIM TRAINER" file.lobbyReturnButtonData[ panel ].activateFunc = LeaveDialog @@ -206,7 +228,12 @@ void function UpdateSystemPanel( var panel ) SetCursorPosition( <1920.0 * 0.5, 1080.0 * 0.5, 0> ) SetButtonData( panel, buttonIndex++, file.settingsButtonData[ panel ] ) - if(!GetCurrentPlaylistVarBool( "firingrange_aimtrainerbycolombia", false )) + if( GetCurrentPlaylistName() == "flowstate_snd" && IsConnected() ) + { + SetButtonData( panel, buttonIndex++, file.ToggleScoreboardFocus[ panel ] ) + } + + if( GetCurrentPlaylistName() != "flowstate_aimtrainer" ) { if ( IsSurvivalTraining() || IsFiringRangeGameMode() ) SetButtonData( panel, buttonIndex++, file.lobbyReturnButtonData[ panel ] ) @@ -237,6 +264,11 @@ void function UpdateSystemPanel( var panel ) SetButtonData( panel, buttonIndex++, file.invisButtonData[ panel ] ) SetButtonData( panel, buttonIndex++, file.hubButtonData[ panel ] ) } + + if( GetCurrentPlaylistName() == "fs_duckhunt" && IsConnected() && file.SETHUNTERALLOWED ) + { + SetButtonData( panel, buttonIndex++, file.SetHunterButtonData[ panel ] ) + } } else { @@ -263,12 +295,17 @@ void function UpdateSystemPanel( var panel ) } var dataCenterElem = Hud_GetChild( panel, "DataCenter" ) - if(GetCurrentPlaylistVarBool( "firingrange_aimtrainerbycolombia", false )) + if(IsConnected() && GetCurrentPlaylistName() == "flowstate_aimtrainer") Hud_SetText( dataCenterElem, "Flowstate Aim Trainer by @CafeFPS") else Hud_SetText( dataCenterElem, "R5Reloaded Server: " + MyPing() + " ms.") } +void function ToggleSetHunter(bool enable) +{ + file.SETHUNTERALLOWED = enable +} + void function SetButtonData( var panel, int buttonIndex, ButtonData buttonData ) { file.buttonDatas[ panel ][buttonIndex] = buttonData @@ -285,7 +322,7 @@ void function SetButtonData( var panel, int buttonIndex, ButtonData buttonData ) void function OnSystemMenu_Close() { - if(ISAIMTRAINER && IsConnected() && GetCurrentPlaylistVarBool( "firingrange_aimtrainerbycolombia", false )){ + if(ISAIMTRAINER && IsConnected() && GetCurrentPlaylistName() == "flowstate_aimtrainer"){ CloseAllMenus() RunClientScript("ServerCallback_OpenFRChallengesMainMenu", PlayerKillsForChallengesUI) } @@ -296,12 +333,13 @@ void function OnSystemMenu_NavigateBack() { Assert( GetActiveMenu() == file.menu ) CloseActiveMenu() - if(ISAIMTRAINER && IsConnected() && GetCurrentPlaylistVarBool( "firingrange_aimtrainerbycolombia", false )){ + if(ISAIMTRAINER && IsConnected() && GetCurrentPlaylistName() == "flowstate_aimtrainer"){ CloseAllMenus() RunClientScript("ServerCallback_OpenFRChallengesMainMenu", PlayerKillsForChallengesUI) } } + void function OnButton_Activate( var button ) { if ( GetActiveMenu() == file.menu ) @@ -334,22 +372,16 @@ void function RunSpectateCommand() ClientCommand( "spectate" ) } -void function RunKillSelf() +void function ShowScoreboard_System() { - ClientCommand( "kill_self" ) -} -void function RunHub() -{ - ClientCommand( "hub" ) + ClientCommand( "scoreboard_toggle_focus" ) } - -void function RunInvis() +void function RunKillSelf() { - ClientCommand( "invis" ) + ClientCommand( "kill_self" ) } - #if CONSOLE_PROG void function ReturnToMain_OnActivate( var button ) { diff --git a/vscripts/ui/panel_models.nut b/vscripts/ui/panel_models.nut index c6dbf8e81..49265d0b5 100644 --- a/vscripts/ui/panel_models.nut +++ b/vscripts/ui/panel_models.nut @@ -85,7 +85,7 @@ void function InitPanelAssets(string map) { array sections = GetMapSections(map) //!FIXME //printl("LEN / 4: " + sections.len() / 4) - printl(sections.len()) + //printl(sections.len()) if (sections.len() / 4 < 1) { // if you cant even fit more than 1 section just put it all in the first one file.indexedPanelAssets[0] <- sections @@ -107,9 +107,9 @@ void function InitPanelAssets(string map) { array panelSections = sections.slice(last, index) file.indexedPanelAssets[i] <- panelSections //printl("PANEL ASSETS: " + i.tostring()) - foreach(sec in panelSections) { - //printl(sec) - } + //foreach(sec in panelSections) { + // printl(sec) + //} if(completed) { break } diff --git a/vscripts/unitframes/cl_unitframes.gnut b/vscripts/unitframes/cl_unitframes.gnut index 346f19875..a8e89c79a 100644 --- a/vscripts/unitframes/cl_unitframes.gnut +++ b/vscripts/unitframes/cl_unitframes.gnut @@ -12,6 +12,7 @@ global function AddCallback_OnTeamUnitFrameCreated global function AddCallback_OnTeamUnitFrameDestroyed global function SetUnitFrameDataFromOwner +global function UpdateRUITest #if DEVELOPER global function PrintUnitFrames @@ -108,6 +109,11 @@ void function OnViewPlayerChanged( entity newViewPlayer ) RefrechUnitframesForPlayer( newViewPlayer ) } +void function UpdateRUITest() +{ + RefrechUnitframesForPlayer(GetLocalClientPlayer()) + thread InitSurvivalHealthBar() +} void function RefrechUnitframesForPlayer( entity player ) { @@ -123,7 +129,7 @@ void function RefrechUnitframesForPlayer( entity player ) foreach ( unitframePlayer, unitFrame in file.teamUnitFrames ) { - if ( !IsValid( unitframePlayer ) || unitframePlayer.GetTeam() != playerTeam ) + if ( !IsValid( unitframePlayer ) || !IsAlive( unitframePlayer ) && GameRules_GetGameMode() == "flowstate_snd" || unitframePlayer.GetTeam() != playerTeam ) playersToRemove.append( unitframePlayer ) } @@ -195,7 +201,7 @@ void function CreateTeamUnitFrame( entity player ) asset function GetUnitFrameAssetForGameMode() { - if ( IsFallLTM() || GetCurrentPlaylistVarBool( "minified_unitframes_enabled", false ) ) + if ( IsFallLTM() || GetCurrentPlaylistVarBool( "minified_unitframes_enabled", false ) || GameRules_GetGameMode() == "fs_prophunt" || GameRules_GetGameMode() == "fs_duckhunt") return $"ui/unitframe_shadow_squad.rpak" return $"ui/unitframe_survival_v3.rpak" @@ -421,9 +427,12 @@ bool function PlayerShouldHaveUnitFrame( entity player ) if ( playerTeam != viewer.GetTeam() ) return false - - if ( GetGameState() < eGameState.Playing && !IsFiringRangeGameMode() ) + + if( GameRules_GetGameMode() == "flowstate_snd" && !IsAlive(player) ) return false + + // if ( GetGameState() < eGameState.Playing && !IsFiringRangeGameMode() ) + // return false return true } diff --git a/vscripts/weapons/mp_ability_3dash.nut b/vscripts/weapons/mp_ability_3dash.nut index c591a1092..3e7e7b246 100644 --- a/vscripts/weapons/mp_ability_3dash.nut +++ b/vscripts/weapons/mp_ability_3dash.nut @@ -48,6 +48,7 @@ bool function OnWeaponChargeBegin_ability_3dash( entity weapon ) void function DashPlayer(entity player, float chargeTime) { + player.Zipline_Stop() if ( GetMapName() == "mp_rr_ashs_redemption" ) return player.Zipline_Stop() vector yes diff --git a/vscripts/weapons/mp_weapon_grenade_gravity.nut b/vscripts/weapons/mp_weapon_grenade_gravity.nut index dc4dedc6b..24b4c70c7 100644 --- a/vscripts/weapons/mp_weapon_grenade_gravity.nut +++ b/vscripts/weapons/mp_weapon_grenade_gravity.nut @@ -1,4 +1,5 @@ global function OnProjectileCollision_weapon_grenade_gravity +global function OnProjectileCollision_grav_star_gun global function MpWeaponGrenadeGravity_Init const float MAX_WAIT_TIME = 6.0 @@ -12,9 +13,10 @@ const float PULL_VERT_VEL = 220 const float PUSH_STRENGTH_MAX = 125.0 const float EXPLOSION_DELAY = 0.1 const float FX_END_CAP_TIME = 1.5 -//const float PULL_VERTICAL_KNOCKUP_MAX = 75.0 -//const float PULL_VERTICAL_KNOCKUP_MIN = 55.0 -//const float PUSH_STRENGTH_MIN = 100.0 +const float PULL_VERTICAL_KNOCKUP_MAX = 75.0 +const float PULL_VERTICAL_KNOCKUP_MIN = 55.0 +const float PUSH_STRENGTH_MIN = 100.0 + struct { int cockpitFxHandle = -1 @@ -51,6 +53,21 @@ void function OnProjectileCollision_weapon_grenade_gravity( entity projectile, v #endif } +void function OnProjectileCollision_grav_star_gun( entity projectile, vector pos, vector normal, entity hitEnt, int hitbox, bool isCritical ) +{ + #if SERVER + // if ( projectile.IsMarkedForDeletion() ) + // return + printt("test") + entity mover = CreateOwnedScriptMover( projectile ) + mover.SetOwner(gp()[0]) + + + thread GravityGrenadeThink( mover, hitEnt, normal, pos ) + #endif +} + + #if SERVER void function TriggerWait( entity trig, float maxtime ) { @@ -92,7 +109,7 @@ bool function GravityGrenadeTriggerThink( entity gravityMine ) void function GravityGrenadeThink( entity projectile, entity hitEnt, vector normal, vector pos ) { - projectile.EndSignal( "OnDestroy" ) + // projectile.EndSignal( "OnDestroy" ) WaitFrame() @@ -112,13 +129,15 @@ void function GravityGrenadeThink( entity projectile, entity hitEnt, vector norm projectile.SetParent( gravTrig ) gravTrig.RoundOriginAndAnglesToNearestNetworkValue() + wait POP_DELAY + entity trig = CreateEntity( "trigger_cylinder" ) trig.SetRadius( PULL_RANGE ) trig.SetAboveHeight( PULL_RANGE ) trig.SetBelowHeight( PULL_RANGE ) trig.SetOrigin( projectile.GetOrigin() ) - SetGravityGrenadeTriggerFilters( projectile, trig ) - trig.kv.triggerFilterPlayer = "none" // player effects + // SetGravityGrenadeTriggerFilters( projectile, trig ) + // trig.kv.triggerFilterPlayer = "none" // player effects trig.SetEnterCallback( OnGravGrenadeTrigEnter ) trig.SetLeaveCallback( OnGravGrenadeTrigLeave ) @@ -126,6 +145,7 @@ void function GravityGrenadeThink( entity projectile, entity hitEnt, vector norm SetTeam( trig, projectile.GetTeam() ) DispatchSpawn( gravTrig ) DispatchSpawn( trig ) + gravTrig.SearchForNewTouchingEntity() trig.SearchForNewTouchingEntity() @@ -148,8 +168,6 @@ void function GravityGrenadeThink( entity projectile, entity hitEnt, vector norm } ) - wait POP_DELAY - entity mover = CreateOwnedScriptMover( projectile ) projectile.SetParent( mover, "ref", true ) EmitSoundOnEntity( projectile, "weapon_gravitystar_preexplo" ) @@ -168,7 +186,7 @@ void function GravityGrenadeThink( entity projectile, entity hitEnt, vector norm wait PULL_DELAY - projectile.SetGrenadeTimer( EXPLOSION_DELAY ) + // projectile.SetGrenadeTimer( EXPLOSION_DELAY ) wait EXPLOSION_DELAY - 0.1 // ensure gravTrig is destroyed before detonation thread DestroyAfterDelay( mover, 0.25 ) } @@ -177,37 +195,17 @@ void function OnGravGrenadeTrigEnter( entity trigger, entity ent ) { if ( ent.GetTeam() == trigger.GetTeam() ) // trigger filters handle this except in FFA return + - if ( ent.IsNPC() && ( IsGrunt( ent ) || IsSpectre( ent ) || IsStalker( ent ) ) && IsAlive( ent ) && !ent.ContextAction_IsActive() && ent.IsInterruptable() ) + if ( IsValid(ent) && ent.IsNPC() && IsAlive( ent )) { - ent.ContextAction_SetBusy() - ent.Anim_ScriptedPlayActivityByName( "ACT_FALL", true, 0.2 ) - - if ( IsGrunt( ent ) ) - EmitSoundOnEntity( ent, "diag_efforts_gravStruggle_gl_grunt_3p" ) - - thread EndNPCGravGrenadeAnim( ent ) + thread PROTO_GravGrenadePull( ent, trigger ) } } void function OnGravGrenadeTrigLeave( entity trigger, entity ent ) { - if ( IsValid( ent ) ) - { - ent.Signal( "LeftGravityMine" ) - } -} - -void function EndNPCGravGrenadeAnim( entity ent ) -{ - ent.EndSignal( "OnDestroy" ) - ent.EndSignal( "OnAnimationInterrupted" ) - ent.EndSignal( "OnAnimationDone" ) - - ent.WaitSignal( "LeftGravityMine", "OnDeath" ) - - ent.ContextAction_ClearBusy() - ent.Anim_Stop() + // } void function Proto_SetEnemyVelocity_Pull( entity enemy, vector projOrigin ) @@ -274,62 +272,52 @@ array function GetNearbyProjectilesForGravGrenade( entity gravGrenade ) return affectedProjectiles } -//point_push version - hard to control motion with this. -/* -void function CreateGravitationalForce( float mag, vector org ) -{ - entity point_push = CreateEntity( "point_push" ) - point_push.kv.spawnflags = 31 - point_push.kv.enabled = 1 - point_push.kv.magnitude = mag - point_push.kv.radius = PULL_RANGE - point_push.SetOrigin( org ) - DispatchSpawn( point_push ) - point_push.Fire( "Enable" ) - point_push.Fire( "Kill", "", 0.2 ) -} -*/ -//Script mover version -/* -array nearbyEnemies = GetNearbyEnemiesForGravGrenade( projectile ) -foreach ( enemy in nearbyEnemies ) -{ - if ( enemy.IsPlayer() ) - EmitSoundOnEntityOnlyToPlayer( enemy, enemy, "explo_softball_impact_3p" ) - - if ( !enemy.IsTitan() ) - thread PROTO_GravGrenadePull( enemy, projectile ) -} -void function PROTO_GravGrenadePull( entity enemy, entity projectile ) +void function PROTO_GravGrenadePull( entity enemy, entity trigger ) { - enemy.EndSignal( "OnDestroy" ) - + if(!enemy.IsNPC()) return + + enemy.EndSignal( "OnDeath" ) + + if(!enemy.ContextAction_IsBusy()) + enemy.ContextAction_SetBusy() + entity mover = CreateOwnedScriptMover( enemy ) enemy.SetParent( mover, "ref", true ) + + enemy.Anim_Stop() + enemy.Anim_ScriptedPlayActivityByName( "ACT_FALL", false, 0.2 ) + + vector mins = enemy.GetBoundingMins() + vector maxs = enemy.GetBoundingMaxs() + vector org1 = enemy.GetOrigin() + vector org2 = trigger.GetOrigin() + vector additonalHeight = < 0, 0, GraphCapped( Distance( org1, org2 ), 0, PULL_RANGE, PULL_VERTICAL_KNOCKUP_MIN, PULL_VERTICAL_KNOCKUP_MAX ) > + vector newPosition = org1 + ( org2 - org1 ) / 2.0 + additonalHeight + TraceResults result = TraceHull( org1, newPosition, mins, maxs, [enemy,mover], TRACE_MASK_SOLID_BRUSHONLY, TRACE_COLLISION_GROUP_NONE ) OnThreadEnd( - function() : ( enemy, mover ) + function() : ( mins, maxs, org2, additonalHeight, enemy, mover ) { + if ( IsValid( enemy ) ) + { enemy.ClearParent() + if(enemy.ContextAction_IsBusy()) + enemy.ContextAction_ClearBusy() + enemy.Anim_Stop() + try{enemy.Anim_PlayOnly("bloodhound_idle_rifle_firingrangedummy")}catch(e420){} + } if ( IsValid( mover ) ) mover.Destroy() } ) - - if ( enemy.IsPlayer() ) - enemy.StunMovementBegin( POP_DELAY ) - - vector mins = enemy.GetBoundingMins() - vector maxs = enemy.GetBoundingMaxs() - vector org1 = enemy.GetOrigin() - vector org2 = projectile.GetOrigin() - vector additonalHeight = < 0, 0, GraphCapped( Distance( org1, org2 ), 0, PULL_RANGE, PULL_VERTICAL_KNOCKUP_MIN, PULL_VERTICAL_KNOCKUP_MAX ) > - vector newPosition = org1 + ( org2 - org1 ) / 2.0 + additonalHeight - TraceResults result = TraceHull( org1, newPosition, mins, maxs, [enemy,mover], TRACE_MASK_SOLID_BRUSHONLY, TRACE_COLLISION_GROUP_NONE ) + mover.NonPhysicsMoveTo( ( newPosition - org1 ) * result.fraction + org1 + result.surfaceNormal, PULL_DELAY, 0, 0 ) - + + WaitFrame() + enemy.Anim_ScriptedPlayActivityByName( "ACT_FALL", false, 0.2 ) + wait PULL_DELAY org1 = mover.GetOrigin() @@ -337,10 +325,10 @@ void function PROTO_GravGrenadePull( entity enemy, entity projectile ) newPosition = org1 + dir * RandomFloatRange( PUSH_STRENGTH_MIN, PUSH_STRENGTH_MAX ) result = TraceHull( org1, newPosition, mins, maxs, [enemy,mover], TRACE_MASK_SOLID_BRUSHONLY, TRACE_COLLISION_GROUP_NONE ) mover.NonPhysicsMoveTo( ( newPosition - org1 ) * result.fraction + org1 + result.surfaceNormal, PUSH_DELAY, 0, 0 ) - + wait PUSH_DELAY } -*/ + #endif #if CLIENT diff --git a/vscripts/weapons/sh_smart_ammo.gnut b/vscripts/weapons/sh_smart_ammo.gnut index 0f82c20d5..2075f5f76 100644 --- a/vscripts/weapons/sh_smart_ammo.gnut +++ b/vscripts/weapons/sh_smart_ammo.gnut @@ -275,7 +275,224 @@ int function SmartAmmo_FireWeapon_Bullet( entity weapon, WeaponPrimaryAttackPara return 1 } +int function SmartAmmo_FireNeedler( entity weapon, WeaponPrimaryAttackParams attackParams, int damageType, int explosionDamageType ) +//By ColombiaFPS +{ + if ( !IsValid( weapon ) ) + return 0 + + if ( !weapon.SmartAmmo_IsEnabled() ) + { + if ( !SmartAmmo_GetAllowUnlockedFiring( weapon ) ) + { + SmartAmmo_SetWeaponFireFailedTime( weapon ) + return 0 + } + } + + #if CLIENT + if ( IsWatchingReplay() ) + return 0 // temp fix for SmartAmmo_GetStoredTargets not returning the same list during kill replay + #endif + + array storedTargets = weapon.SmartAmmo_GetStoredTargets() + + + bool weaponRequiresTrackedMarks = SmartAmmo_WeaponRequiresTrackedMarks( weapon ) + if ( weaponRequiresTrackedMarks ) + RemovePartiallyTrackedEnts( weapon, storedTargets ) + array< SmartAmmoTarget > targets = weapon.SmartAmmo_GetTargets() + //TODO: Update with cleaner tracking count method. + table targetFracs + table targetActiveShots + + + foreach ( target in targets ) + { + //printt("Target detected: " + target) + + if ( target.fraction < 1.0 ) + continue + + targetFracs[target.ent] <- target.fraction + targetActiveShots[target.ent] <- target.activeShot + } + + if ( attackParams.burstIndex == 0 ) + { + // The first time we fire the weapon we store off all targets we are locked onto so we can iterate through them with each burst shot. + // The reason we have to store them off is because if burst bullet 1 kills the first target they will be removed from the smart targets array + // when the second burst bullet is fired, and when we try to shoot target '2' we will actually be shooting target '3' becuase index 0 is removed + // and all targets shift in the array + + weapon.SmartAmmo_StoreTargets() + + //printt( "Storing", weapon.SmartAmmo_GetStoredTargets().len(), "targets" ) + //PrintTable( weapon.SmartAmmo_GetStoredTargets() ) + + storedTargets = weapon.SmartAmmo_GetStoredTargets() + if ( weaponRequiresTrackedMarks ) + RemovePartiallyTrackedEnts( weapon, storedTargets ) + // figure out how many targets to hit with one pull of the trigger + int maxTargetedBurst = SmartAmmo_GetMaxTargetedBurst( weapon ) + + bool alwaysDoBurst = weapon.GetWeaponSettingBool( eWeaponVar.smart_ammo_always_do_burst ) + int burstCount = 0 + if ( weapon.GetWeaponSettingBool( eWeaponVar.smart_ammo_alt_lock_style ) ) + { + float chargeFrac = 1 - weapon.GetWeaponChargeFraction() + float shotFrac = 1 / float( maxTargetedBurst ) + + if ( chargeFrac < shotFrac ) + return 0 + } + + foreach ( target in storedTargets ) + { + Assert( target in targetFracs ) + + burstCount += int( floor( targetFracs[target] ) ) + } + + if ( alwaysDoBurst ) + burstCount = maxTargetedBurst + + burstCount = minint( maxTargetedBurst, burstCount ) + + if ( weapon.GetWeaponInfoFileKeyField( "smart_ammo_doBurstPerTarget" ) == 1 ) + burstCount *= storedTargets.len() + if ( burstCount <= 0 ) + burstCount = 0 + + weapon.SetWeaponBurstFireCount( burstCount ) + } + + array expandedStoredTargets = [] + + foreach ( target in storedTargets ) + { + int burstCount + + if ( target in targetFracs ) + burstCount = int( floor( targetFracs[target] ) ) + else + burstCount = 1 + + for ( int index = 0; index < burstCount; index++ ) + { + expandedStoredTargets.append( target ) + } + } + + // Figure out the target we should be shooting this round + entity target = null + if ( expandedStoredTargets.len() > 0 ) + { + int index = attackParams.burstIndex % expandedStoredTargets.len() + target = expandedStoredTargets[index] + } + + // Tried to shoot at a target but it's no longer valid. Don't do anything + if ( target != null && !IsValid( target ) ) + return 0 + + bool activeShot = false + if ( target in targetActiveShots ) + { + if ( targetActiveShots[target] ) + { + activeShot = true + damageType = damageType | DF_HEADSHOT + explosionDamageType = explosionDamageType | DF_HEADSHOT + } + } + + // Fire the weapon + + if(target){ + return SmartAmmo_FireWeapon_HomingMissile_Fixed( weapon, attackParams, damageType, explosionDamageType, activeShot, target ) + } else { + + bool shouldPredict = weapon.ShouldPredictProjectiles() + + #if CLIENT + if ( !shouldPredict ) + return 1 + #endif + + SmartAmmo_SetWeaponFireFailedTime( weapon ) + + float missileSpeed = 0.5 + + WeaponFireMissileParams fireMissileParams + fireMissileParams.pos = attackParams.pos + fireMissileParams.dir = attackParams.dir + fireMissileParams.speed = missileSpeed/10 + fireMissileParams.scriptTouchDamageType = damageType + fireMissileParams.scriptExplosionDamageType = explosionDamageType + fireMissileParams.doRandomVelocAndThinkVars = true + fireMissileParams.clientPredicted = true + + entity missile2 = weapon.FireWeaponMissile( fireMissileParams ) + #if SERVER + entity trailFXHandle = StartParticleEffectInWorld_ReturnEntity(GetParticleSystemIndex( $"P_skydive_trail_CP" ), missile2.GetOrigin(), <0, 0, 0>) + trailFXHandle.SetParent(missile2, "ref") + // trailFXHandle.SetAngles() + EffectSetControlPointVector( trailFXHandle, 1, <97, 50, 168> ) + missile2.kv.gravity = 1 + #endif + return 1 + } + + return 0 +} + + +int function SmartAmmo_FireWeapon_HomingMissile_Fixed( entity weapon, WeaponPrimaryAttackParams attackParams, int damageType, int explosionDamageType, bool activeShot, entity target ) +{ + bool shouldPredict = weapon.ShouldPredictProjectiles() + + #if CLIENT + if ( !shouldPredict ) + return 1 + #endif + + entity player = weapon.GetWeaponOwner() + vector attackPos = attackParams.pos + vector attackDir = attackParams.dir + + float missileSpeed = 0.4 + + local homingSpeed = 2000 + + //printt("homing speed " + homingSpeed.tostring()) + + local missileSpeedLimit = SmartAmmo_GetMissileSpeedLimit( weapon ) + + WeaponFireMissileParams fireMissileParams + fireMissileParams.pos = attackPos + fireMissileParams.dir = attackDir + fireMissileParams.speed = missileSpeed/10 + fireMissileParams.scriptTouchDamageType = damageType + fireMissileParams.scriptExplosionDamageType = explosionDamageType + fireMissileParams.doRandomVelocAndThinkVars = true + fireMissileParams.clientPredicted = true + + entity missile2 = weapon.FireWeaponMissile( fireMissileParams ) + + SetTeam( missile2, player.GetTeam() ) + missile2.SetHomingSpeeds( homingSpeed, homingSpeed ) + SmartAmmo_SetMissileTarget( missile2, target ) + #if SERVER + entity trailFXHandle = StartParticleEffectInWorld_ReturnEntity(GetParticleSystemIndex( $"P_skydive_trail_CP" ), missile2.GetOrigin(), <0, 0, 0>) + trailFXHandle.SetParent(missile2, "ref") + // trailFXHandle.SetAngles() + EffectSetControlPointVector( trailFXHandle, 1, <97, 50, 168> ) + missile2.kv.gravity = 1 + #endif + return 1 +} int function SmartAmmo_FireWeapon_HomingMissile( entity weapon, WeaponPrimaryAttackParams attackParams, int damageType, int explosionDamageType, bool activeShot, entity target ) { bool shouldPredict = weapon.ShouldPredictProjectiles() From f636647bfdaf0241d5533e80013cd3c98f627121 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caf=C3=A9DeColombiaFPS?= <92343247+ColombianGuy@users.noreply.github.com> Date: Wed, 3 May 2023 17:48:08 -0500 Subject: [PATCH 05/17] more merging --- levels/settings/mp_rr_aqueduct.kv | 3 +- .../FlowstateDM/flowstate_menu_vote.menu | 3735 +++++++++++++++++ .../flowstate_prophunt_scoreboard.menu | 1878 +++++++++ .../FlowstateDM/flowstate_statistics.menu | 2676 ++++++++++++ resource/ui/menus/KillReplay/replayhud.menu | 78 +- vscripts/_utility.gnut | 91 +- vscripts/cl_mapspawn.gnut | 2 +- .../mp/levels/mp_rr_desertlands_common.nut | 2 +- vscripts/mp/sh_desertlands_train.nut | 10 +- vscripts/sh_assets.nut | 6 +- vscripts/sh_assets_party_crasher_tworpaks.nut | 541 --- vscripts/sh_consts.gnut | 1 + vscripts/sh_onboarding.gnut | 18 +- .../ui/FlowstateDM/flowstate_statistics.nut | 46 +- vscripts/ui/menu_main.nut | 2 +- vscripts/ui/menu_system.nut | 14 + .../mp_weapon_changeprops_fakeultimate.txt | 41 + weapons/mp_weapon_flashbang_fakeultimate.txt | 41 + weapons/mp_weapon_sniper.txt | 22 + 19 files changed, 8512 insertions(+), 695 deletions(-) create mode 100644 resource/ui/menus/FlowstateDM/flowstate_menu_vote.menu create mode 100644 resource/ui/menus/FlowstateDM/flowstate_prophunt_scoreboard.menu create mode 100644 resource/ui/menus/FlowstateDM/flowstate_statistics.menu delete mode 100644 vscripts/sh_assets_party_crasher_tworpaks.nut create mode 100644 weapons/mp_weapon_changeprops_fakeultimate.txt create mode 100644 weapons/mp_weapon_flashbang_fakeultimate.txt diff --git a/levels/settings/mp_rr_aqueduct.kv b/levels/settings/mp_rr_aqueduct.kv index 0185feae8..7b4e29e13 100644 --- a/levels/settings/mp_rr_aqueduct.kv +++ b/levels/settings/mp_rr_aqueduct.kv @@ -2,9 +2,8 @@ { "PakList" { - "mp_rr_canyonlands_mu1_night" "1" + "mp_rr_canyonlands_mu1" "1" "mp_rr_desertlands_64k_x_64k" "1" - "ui_flowstate" "1" } "StreamDB" "mp_rr_desertlands_64k_x_64k" diff --git a/resource/ui/menus/FlowstateDM/flowstate_menu_vote.menu b/resource/ui/menus/FlowstateDM/flowstate_menu_vote.menu new file mode 100644 index 000000000..8a8938a5c --- /dev/null +++ b/resource/ui/menus/FlowstateDM/flowstate_menu_vote.menu @@ -0,0 +1,3735 @@ +"scripts/resource/ui/menus/FlowstateDM/flowstate_menu_vote.menu" +{ + "menu" + { + "ControlName" "Frame" + "xpos" "0" + "ypos" "0" + "zpos" "3" + "wide" "f0" + "tall" "f0" + "autoResize" "0" + "pinCorner" "0" + "visible" "1" + "enabled" "1" + "tabPosition" "0" + "PaintBackgroundType" "0" + "infocus_bgcolor_override" "0 0 0 0" + "outoffocus_bgcolor_override" "0 0 0 0" + "modal" "1" + //select team buttons + "SelectTeamText" + { + ControlName Label + xpos 0 + ypos -13 + zpos 20 + auto_wide_tocontents 1 + tall 50 + visible 0 + enabled 0 + fontHeight 27 + labelText "SELECT A TEAM" + font "TitleBoldFont" + allcaps 1 + fgcolor_override "255 255 255 255" + pin_to_sibling "SelectTeamFrame" + pin_corner_to_sibling TOP + pin_to_sibling_corner TOP + } + + // "SelectTeamFrame" + // { + // ControlName RuiPanel + // rui "ui/basic_image.rpak" + // visible 1 + // drawColor "0 0 0 50" + // "wide" "250" + // "tall" "200" + // "xpos" "25" + // "ypos" "70" + // "visible" "0" + // "enabled" "0" + // "scaleImage" "1" + // "pin_to_sibling" TeamPropsButton + // "pin_corner_to_sibling" "TOP_LEFT" + // "pin_to_sibling_corner" "TOP_LEFT" + // } + "SelectTeamFrame" + { + ControlName RuiPanel + rui "ui/basic_border_box.rpak" + drawColor "0 0 0 50" + "wide" "250" + "tall" "200" + "xpos" "25" + "ypos" "70" + "visible" "0" + "enabled" "0" + "scaleImage" "1" + "pin_to_sibling" TeamPropsButton + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "TOP_LEFT" + } + "TeamPropsButton" + { + "ControlName" "RuiButton" + "rui" "ui/generic_friend_button.rpak" + wide 200 + tall 40 + "visible" "0" + "enabled" "0" + sound_focus "UI_Menu_Focus_Small" + sound_accept "ui_rankedsummary_circletick_reached" + cursorPriority "-1" + + ruiArgs + { + isSelected 0 + buttonText "TEAM PROPS" + basicImageColor "255 255 255" + basicImageAlpha 1 + } + + textAlignment center + xpos -260 + ypos %-40 + zpos 15 + + pin_to_sibling DarkenBackground + pin_corner_to_sibling BOTTOM_RIGHT + pin_to_sibling_corner BOTTOM_RIGHT + } + + "TeamSeekersButton" + { + "ControlName" "RuiButton" + "rui" "ui/generic_friend_button.rpak" + wide 200 + tall 40 + "visible" "0" + "enabled" "0" + sound_focus "UI_Menu_Focus_Small" + sound_accept "ui_rankedsummary_circletick_reached" + cursorPriority "-1" + + ruiArgs + { + isSelected 0 + buttonText "TEAM HUNTERS" + basicImageColor "255 255 255" + basicImageAlpha 1 + } + textAlignment center + xpos 0 + ypos -50 + zpos 15 + + pin_to_sibling TeamPropsButton + pin_corner_to_sibling TOP + pin_to_sibling_corner TOP + } + + "DarkenBackground" + { + "ControlName" "Label" + "xpos" "0" + "ypos" "0" + "wide" "%100" + "tall" "%100" + "labelText" "" + "bgcolor_override" "0 0 0 20" + "visible" "1" + "paintbackground" "1" + } + + "ScoreboardText" + { + "ControlName" "Label" + "xpos" "0" + "ypos" "-45" + "zpos" "15" + "auto_wide_tocontents" "1" + "tall" "40" + "visible" "1" + "fontHeight" "50" + "labelText" "Current Scoreboard" + "font" "DefaultBold_41" + "allcaps" "1" + "fgcolor_override" "255 255 255 155" + "pin_to_sibling" "TimerFrame" + "pin_corner_to_sibling" "TOP" + "pin_to_sibling_corner" "TOP" + } + + "TimerFrame" + { + ControlName RuiPanel + rui "ui/tabs_background.rpak" + visible 1 + drawColor "0 0 0 50" + "wide" "f0" + "tall" "125" + "xpos" "0" + "ypos" "0" + "visible" "1" + "scaleImage" "1" + "pin_to_sibling" "DarkenBackground" + "pin_corner_to_sibling" "TOP" + "pin_to_sibling_corner" "TOP" + } + + "TimerText2" + { + "ControlName" "Label" + "xpos" "0" + "ypos" "-15" + "auto_wide_tocontents" "1" + "tall" "40" + "visible" "1" + "fontHeight" "50" + "labelText" "Voting Ends In" + "font" "DefaultBold_41" + "allcaps" "1" + "fgcolor_override" "255 255 255 155" + "pin_to_sibling" "TimerFrame" + "pin_corner_to_sibling" "TOP" + "pin_to_sibling_corner" "TOP" + } + + "TimerText" + { + "ControlName" "Label" + "xpos" "0" + "ypos" "15" + "auto_wide_tocontents" "1" + "tall" "40" + "visible" "1" + "fontHeight" "50" + "labelText" "30 Seconds" + "font" "DefaultBold_41" + "allcaps" "1" + "fgcolor_override" "255 255 255 255" + "pin_to_sibling" "TimerText2" + "pin_corner_to_sibling" "TOP" + "pin_to_sibling_corner" "BOTTOM" + } + + "MapVoteFrame" + { + ControlName RuiPanel + rui "ui/tabs_background.rpak" + "wide" "f0" + "tall" "240" + "xpos" "0" + "ypos" "0" + "visible" "1" + "scaleImage" "1" + "fillColor" "30 30 30 200" + "drawColor" "30 30 30 200" + "pin_to_sibling" "DarkenBackground" + "pin_corner_to_sibling" "BOTTOM_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "MapVoteFrame2" + { + "ControlName" "RuiPanel" + "rui" "ui/lobby_challenge_box.rpak" + + "wide" "500" + "tall" "75" + "xpos" "%-10" + "ypos" "%-10" + "auto_wide_tocontents" "1" + "visible" "1" + "pin_to_sibling" "DarkenBackground" + "pin_corner_to_sibling" "BOTTOM_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "VotedForLbl" + { + "ControlName" "Label" + "xpos" "-50" + "ypos" "0" + "wide" "500" + "tall" "75" + "auto_wide_tocontents" "1" + "visible" "1" + "fontHeight" "50" + "labelText" "Next Location: " + "textAlignment" "center" + "font" "DefaultBold_41" + "allcaps" "1" + "fgcolor_override" "255 255 255 255" + "pin_to_sibling" "MapVoteFrame2" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "WinnerFrame" + { + "ControlName" "ImagePanel" + "wide" "f0" + "tall" "75" + "xpos" "0" + "ypos" "%38" + "visible" "1" + "scaleImage" "1" + "fillColor" "173 3 252 155" + "drawColor" "173 3 252 155" + "pin_to_sibling" "DarkenBackground" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "_FSDM_BottomFrame" + { + ControlName RuiPanel + rui "ui/lobby_challenge_box.rpak" + "wide" "215" + "tall" "40" + "xpos" "-265" + "ypos" "-220" + "visible" "1" + "scaleImage" "1" + "fillColor" "173 3 252 200" + "drawColor" "173 3 252 200" + "pin_to_sibling" "DarkenBackground" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "TOP_LEFT" + } + + "ObjectiveText" + { + "ControlName" "Label" + "xpos" "30" + "ypos" "0" + "auto_wide_tocontents" "1" + "tall" "40" + "visible" "1" + "fontHeight" "30" + "labelText" "Vote For Next Location" + "font" "DefaultBold_41" + "allcaps" "1" + "fgcolor_override" "255 255 255 255" + "pin_to_sibling" "_FSDM_BottomFrame" + "pin_corner_to_sibling" "CENTER" + "pin_to_sibling_corner" "CENTER" + } + + "TextCredits2" + { + "ControlName" "Label" + "xpos" "-30" + "ypos" "-40" + "zpos" "15" + "auto_wide_tocontents" "1" + "tall" "30" + "visible" "1" + "fontHeight" "35" + labelText "FLOWSTATE SCRIPTS" + font "TitleBoldFont" + allcaps 1 + fgcolor_override "255 0 119 255" + "pin_to_sibling" "DarkenBackground" + "pin_corner_to_sibling" "TOP_RIGHT" + "pin_to_sibling_corner" "TOP_RIGHT" + } + + "TextCredits" + { + "ControlName" "Label" + "xpos" "0" + "ypos" "32" + "zpos" "15" + "auto_wide_tocontents" "1" + "tall" "40" + "visible" "1" + "fontHeight" "22" + "labelText" "Made by @CafeFPS - ©Respawn Entertainment" + "font" "DefaultBold_62_DropShadow" + "allcaps" "0" + "fgcolor_override" "255 255 255 255" + "pin_to_sibling" "TextCredits2" + "pin_corner_to_sibling" "BOTTOM_RIGHT" + "pin_to_sibling_corner" "BOTTOM_RIGHT" + } + + "WinnerLbl" + { + "ControlName" "Label" + "xpos" "0" + "ypos" "0" + "zpos" "2" + "auto_wide_tocontents" "1" + "tall" "40" + "visible" "1" + "fontHeight" "53" + "labelText" "Next Location: " + "font" "DefaultBold_41" + "allcaps" "1" + "fgcolor_override" "255 255 255 255" + "pin_to_sibling" "WinnerFrame" + "pin_corner_to_sibling" "CENTER" + "pin_to_sibling_corner" "CENTER" + } + + "MapVote1" + { + "ControlName" "RuiButton" + "InheritProperties" "RuiSmallButton" + //"rui" "ui/invisible.rpak" + //"labelText" "" + "sound_accept" "Titan_Tone_SonarLock_Impact_Pulse_1P" + "sound_focus" "UI_Menu_Focus_Small" + "cursorPriority" "-1" + + "wide" "340" + "tall" "200" + "xpos" "-525" + "ypos" "0" + "zpos" 20 + "rightClickEvents" 1 + "visible" 1 + "pin_to_sibling" "MapVoteFrame" + "pin_corner_to_sibling" "CENTER" + "pin_to_sibling_corner" "CENTER" + "scriptID" "0" + } + + "MapVoteImage1" + { + "ControlName" "RuiPanel" + "wide" "340" + "tall" "200" + "visible" 1 + "rui" "ui/basic_image.rpak" + "xpos" "0" + "ypos" "0" + "zpos" 5 + + "pin_to_sibling" "MapVote1" + "pin_corner_to_sibling" "CENTER" + "pin_to_sibling_corner" "CENTER" + } + + "MapVoteLabelVotes1" + { + ControlName Label + xpos -5 + ypos 0 + zpos 10 + auto_wide_tocontents 1 + tall 25 + visible 1 + fontHeight 25 + labelText "Votes: 0" + font DefaultBold_41 + allcaps 0 + fgcolor_override "255 255 255 255" + pin_to_sibling "MapVote1" + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner BOTTOM_LEFT + } + + "MapVoteLabelVotesFrame1" + { + "ControlName" "ImagePanel" + "wide" "85" + "tall" "30" + "xpos" "0" + "ypos" "0" + "zpos" "8" + "visible" "1" + "scaleImage" "0" + "fillColor" "30 30 30 200" + "drawColor" "30 30 30 200" + "pin_to_sibling" "MapVote1" + "pin_corner_to_sibling" BOTTOM_LEFT + "pin_to_sibling_corner" BOTTOM_LEFT + } + + "MapVoteLabelName1" + { + ControlName Label + xpos 0 + ypos -3 + zpos 10 + auto_wide_tocontents 1 + tall 25 + visible 1 + fontHeight 25 + labelText "MAP NAME" + font DefaultBold_41 + allcaps 1 + fgcolor_override "255 255 255 255" + pin_to_sibling "MapVote1" + pin_corner_to_sibling TOP + pin_to_sibling_corner TOP + } + + "MapVoteLabelNameFrame1" + { + "ControlName" "ImagePanel" + "wide" "340" + "tall" "30" + "xpos" "0" + "ypos" "2" + "zpos" "8" + "visible" "1" + "scaleImage" "0" + "fillColor" "42 128 232 155" + "drawColor" "42 128 232 155" + "pin_to_sibling" "MapVote1" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "TOP_LEFT" + } + + "MapVoteLabelNameFrameVoted1" + { + "ControlName" "ImagePanel" + "wide" "340" + "tall" "30" + "xpos" "0" + "ypos" "0" + "zpos" "8" + "visible" "0" + "scaleImage" "0" + "fillColor" "255 0 119 155" + "drawColor" "255 0 119 155" + "pin_to_sibling" "MapVote1" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "TOP_LEFT" + } + //////////////////////////////////////////////// + //////////////////////////////////////////// + "MapVote2" + { + "ControlName" "RuiButton" + "InheritProperties" "RuiSmallButton" + //"rui" "ui/invisible.rpak" + //"labelText" "" + "sound_accept" "Titan_Tone_SonarLock_Impact_Pulse_1P" + "sound_focus" "UI_Menu_Focus_Small" + "cursorPriority" "-1" + + "wide" "340" + "tall" "200" + "xpos" "20" + "ypos" "0" + "zpos" 20 + "rightClickEvents" 1 + "visible" 1 + "pin_to_sibling" "MapVote1" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "RIGHT" + "scriptID" "1" + } + + "MapVoteImage2" + { + "ControlName" "RuiPanel" + "wide" "340" + "tall" "200" + "visible" 1 + "rui" "ui/basic_image.rpak" + "xpos" "0" + "ypos" "0" + "zpos" 5 + + "pin_to_sibling" "MapVote2" + "pin_corner_to_sibling" "CENTER" + "pin_to_sibling_corner" "CENTER" + } + + "MapVoteLabelVotes2" + { + ControlName Label + xpos -5 + ypos 0 + zpos 10 + auto_wide_tocontents 1 + tall 25 + visible 1 + fontHeight 25 + labelText "Votes: 0" + font DefaultBold_41 + allcaps 0 + fgcolor_override "255 255 255 255" + pin_to_sibling "MapVote2" + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner BOTTOM_LEFT + } + + "MapVoteLabelVotesFrame2" + { + "ControlName" "ImagePanel" + "wide" "85" + "tall" "30" + "xpos" "0" + "ypos" "0" + "zpos" "8" + "visible" "1" + "scaleImage" "0" + "fillColor" "30 30 30 200" + "drawColor" "30 30 30 200" + "pin_to_sibling" "MapVote2" + "pin_corner_to_sibling" BOTTOM_LEFT + "pin_to_sibling_corner" BOTTOM_LEFT + } + + "MapVoteLabelName2" + { + ControlName Label + xpos 0 + ypos -3 + zpos 10 + auto_wide_tocontents 1 + tall 25 + visible 1 + fontHeight 25 + labelText "MAP NAME" + font DefaultBold_41 + allcaps 1 + fgcolor_override "255 255 255 255" + pin_to_sibling "MapVote2" + pin_corner_to_sibling TOP + pin_to_sibling_corner TOP + } + + "MapVoteLabelNameFrame2" + { + "ControlName" "ImagePanel" + "wide" "340" + "tall" "30" + "xpos" "0" + "ypos" "2" + "zpos" "8" + "visible" "1" + "scaleImage" "0" + "fillColor" "42 128 232 155" + "drawColor" "42 128 232 155" + "pin_to_sibling" "MapVote2" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "TOP_LEFT" + } + + "MapVoteLabelNameFrameVoted2" + { + "ControlName" "ImagePanel" + "wide" "340" + "tall" "30" + "xpos" "0" + "ypos" "0" + "zpos" "8" + "visible" "0" + "scaleImage" "0" + "fillColor" "255 0 119 155" + "drawColor" "255 0 119 155" + "pin_to_sibling" "MapVote2" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "TOP_LEFT" + } + //////////////////////////////////////////////// + //////////////////////////////////////////// + "MapVote3" + { + "ControlName" "RuiButton" + "InheritProperties" "RuiSmallButton" + //"rui" "ui/invisible.rpak" + //"labelText" "" + "sound_accept" "Titan_Tone_SonarLock_Impact_Pulse_1P" + "sound_focus" "UI_Menu_Focus_Small" + "cursorPriority" "-1" + + "wide" "340" + "tall" "200" + "xpos" "20" + "ypos" "0" + "zpos" 20 + "rightClickEvents" 1 + "visible" 1 + "pin_to_sibling" "MapVote2" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "RIGHT" + "scriptID" "2" + } + + "MapVoteImage3" + { + "ControlName" "RuiPanel" + "wide" "340" + "tall" "200" + "visible" 1 + "rui" "ui/basic_image.rpak" + "xpos" "0" + "ypos" "0" + "zpos" 5 + + "pin_to_sibling" "MapVote3" + "pin_corner_to_sibling" "CENTER" + "pin_to_sibling_corner" "CENTER" + } + + "MapVoteLabelVotes3" + { + ControlName Label + xpos -5 + ypos 0 + zpos 10 + auto_wide_tocontents 1 + tall 25 + visible 1 + fontHeight 25 + labelText "Votes: 0" + font DefaultBold_41 + allcaps 0 + fgcolor_override "255 255 255 255" + pin_to_sibling "MapVote3" + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner BOTTOM_LEFT + } + + "MapVoteLabelVotesFrame3" + { + "ControlName" "ImagePanel" + "wide" "85" + "tall" "30" + "xpos" "0" + "ypos" "0" + "zpos" "8" + "visible" "1" + "scaleImage" "0" + "fillColor" "30 30 30 200" + "drawColor" "30 30 30 200" + "pin_to_sibling" "MapVote3" + "pin_corner_to_sibling" BOTTOM_LEFT + "pin_to_sibling_corner" BOTTOM_LEFT + } + + "MapVoteLabelName3" + { + ControlName Label + xpos 0 + ypos -3 + zpos 10 + auto_wide_tocontents 1 + tall 25 + visible 1 + fontHeight 25 + labelText "MAP NAME" + font DefaultBold_41 + allcaps 1 + fgcolor_override "255 255 255 255" + pin_to_sibling "MapVote3" + pin_corner_to_sibling TOP + pin_to_sibling_corner TOP + } + + "MapVoteLabelNameFrame3" + { + "ControlName" "ImagePanel" + "wide" "340" + "tall" "30" + "xpos" "0" + "ypos" "2" + "zpos" "8" + "visible" "1" + "scaleImage" "0" + "fillColor" "42 128 232 155" + "drawColor" "42 128 232 155" + "pin_to_sibling" "MapVote3" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "TOP_LEFT" + } + + "MapVoteLabelNameFrameVoted3" + { + "ControlName" "ImagePanel" + "wide" "340" + "tall" "30" + "xpos" "0" + "ypos" "0" + "zpos" "8" + "visible" "0" + "scaleImage" "0" + "fillColor" "255 0 119 155" + "drawColor" "255 0 119 155" + "pin_to_sibling" "MapVote3" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "TOP_LEFT" + } + //////////////////////////////////////////////// + //////////////////////////////////////////// + "MapVote4" + { + "ControlName" "RuiButton" + "InheritProperties" "RuiSmallButton" + //"rui" "ui/invisible.rpak" + //"labelText" "" + "sound_accept" "Titan_Tone_SonarLock_Impact_Pulse_1P" + "sound_focus" "UI_Menu_Focus_Small" + "cursorPriority" "-1" + + "wide" "340" + "tall" "200" + "xpos" "20" + "ypos" "0" + "zpos" 20 + "rightClickEvents" 1 + "visible" 1 + "pin_to_sibling" "MapVote3" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "RIGHT" + "scriptID" "3" + } + + "MapVoteImage4" + { + "ControlName" "RuiPanel" + "wide" "340" + "tall" "200" + "visible" 1 + "rui" "ui/basic_image.rpak" + "xpos" "0" + "ypos" "" + "zpos" 5 + + "pin_to_sibling" "MapVote4" + "pin_corner_to_sibling" "CENTER" + "pin_to_sibling_corner" "CENTER" + } + + "MapVoteLabelVotes4" + { + ControlName Label + xpos -5 + ypos 0 + zpos 10 + auto_wide_tocontents 1 + tall 25 + visible 1 + fontHeight 25 + labelText "Votes: 0" + font DefaultBold_41 + allcaps 0 + fgcolor_override "255 255 255 255" + pin_to_sibling "MapVote4" + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner BOTTOM_LEFT + } + + "MapVoteLabelVotesFrame4" + { + "ControlName" "ImagePanel" + "wide" "85" + "tall" "30" + "xpos" "0" + "ypos" "0" + "zpos" "8" + "visible" "1" + "scaleImage" "0" + "fillColor" "30 30 30 200" + "drawColor" "30 30 30 200" + "pin_to_sibling" "MapVote4" + "pin_corner_to_sibling" BOTTOM_LEFT + "pin_to_sibling_corner" BOTTOM_LEFT + } + + "MapVoteLabelName4" + { + ControlName Label + xpos 0 + ypos -3 + zpos 10 + auto_wide_tocontents 1 + tall 25 + visible 1 + fontHeight 25 + labelText "MAP NAME" + font DefaultBold_41 + allcaps 1 + fgcolor_override "255 255 255 255" + pin_to_sibling "MapVote4" + pin_corner_to_sibling TOP + pin_to_sibling_corner TOP + } + + "MapVoteLabelNameFrame4" + { + "ControlName" "ImagePanel" + "wide" "340" + "tall" "30" + "xpos" "0" + "ypos" "2" + "zpos" "8" + "visible" "1" + "scaleImage" "0" + "fillColor" "42 128 232 155" + "drawColor" "42 128 232 155" + "pin_to_sibling" "MapVote4" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "TOP_LEFT" + } + + "MapVoteLabelNameFrameVoted4" + { + "ControlName" "ImagePanel" + "wide" "340" + "tall" "30" + "xpos" "0" + "ypos" "0" + "zpos" "8" + "visible" "0" + "scaleImage" "0" + "fillColor" "255 0 119 155" + "drawColor" "255 0 119 155" + "pin_to_sibling" "MapVote4" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "TOP_LEFT" + } + //////////////////////////////////////////////// + + VotingPhaseChatBox + { + ControlName CBaseHudChat + InheritProperties ChatBox + + bgcolor_override "0 0 0 80" + chatBorderThickness 1 + chatHistoryBgColor "24 27 30 120" + chatEntryBgColor "24 27 30 120" + chatEntryBgColorFocused "24 27 30 120" + + destination "global" + hideInputBox 0 + visible 1 + teamChat 0 + stopMessageModeOnFocusLoss 0 + menuModeWithFade 0 + messageModeAlwaysOn 1 + + xpos -260 + ypos %-30 + zpos 200 + + tall 200 + wide 650 + + pin_to_sibling "DarkenBackground" + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner BOTTOM_LEFT + } + //////////////////////////////////////////////// + + //TABLE SCOREBOARD + //////////////////////////////////////////////// + "ServerBrowserBG" + { + "classname" "ScoreboardUI" + "ControlName" "ImagePanel" + "xpos" "" + "ypos" "%-70" + "tall" "50" + "wide" "830" + "fillColor" "34 34 34 250" + "drawColor" "30 30 30 250" + "wrap" "1" + "visible" "1" + "zpos" "3" + + pin_to_sibling "DarkenBackground" + pin_corner_to_sibling BOTTOM + pin_to_sibling_corner BOTTOM + } + + "ServersBG" + { + "classname" "ScoreboardUI" + "ControlName" "ImagePanel" + "xpos" "0" + "ypos" "0" + "tall" "400" + "wide" "830" + "fillColor" "30 30 30 245" + "drawColor" "30 30 30 245" + "wrap" "1" + "visible" "1" + "zpos" "0" + + "pin_to_sibling" "ServerBrowserBG" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerNameLbl" + { + "classname" "ScoreboardUI" + "ControlName" "Label" + "labelText" "Player Name" + "xpos" "-50" + "ypos" "0" + "auto_wide_tocontents" "1" + "zpos" "4" + "fontHeight" "30" + + "pin_to_sibling" "ServerBrowserBG" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "KillsLbl" + { + "classname" "ScoreboardUI" + "ControlName" "Label" + "labelText" "Kills" + "xpos" "-250" + "ypos" "0" + "zpos" "6" + "textalignment" "center" + "wide" "150" + "zpos" "4" + "fontHeight" "30" + + "pin_to_sibling" "ServerBrowserBG" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "DeathsLbl" + { + "classname" "ScoreboardUI" + "ControlName" "Label" + "labelText" "Deaths" + "xpos" "-400" + "ypos" "0" + "zpos" "6" + "textalignment" "center" + "wide" "150" + "zpos" "4" + "fontHeight" "30" + + "pin_to_sibling" "ServerBrowserBG" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "KDLbl" + { + "classname" "ScoreboardUI" + "ControlName" "Label" + "labelText" "KD" + "xpos" "-540" + "ypos" "0" + "zpos" "6" + "textalignment" "center" + "wide" "150" + "fontHeight" "30" + + "pin_to_sibling" "ServerBrowserBG" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "DamageLbl" + { + "classname" "ScoreboardUI" + "ControlName" "Label" + "labelText" "Damage" + "xpos" "-685" + "ypos" "0" + "zpos" "6" + "textalignment" "center" + "wide" "150" + "fontHeight" "30" + + "pin_to_sibling" "ServerBrowserBG" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + // "LatencyLbl" + // { + // "classname" "ScoreboardUI" + // "ControlName" "Label" + // "labelText" "Latency" + // "xpos" "-825" + // "ypos" "0" + // "zpos" "6" + // "textalignment" "center" + // "wide" "150" + // "fontHeight" "30" + + // "pin_to_sibling" "ServerBrowserBG" + // "pin_corner_to_sibling" "LEFT" + // "pin_to_sibling_corner" "LEFT" + // } + + "NameLine" + { + "classname" "ScoreboardUI" + "ControlName" "ImagePanel" + "xpos" "0" + "ypos" "0" + "tall" "400" + "wide" "2" + "fillColor" "84 84 84 200" + "drawColor" "84 84 84 200" + "wrap" "1" + "visible" "1" + "zpos" "3" + + "pin_to_sibling" "ServerBrowserBG" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "KillsLine" + { + "classname" "ScoreboardUI" + "ControlName" "ImagePanel" + "xpos" "-250" + "ypos" "0" + "tall" "400" + "wide" "2" + "fillColor" "84 84 84 200" + "drawColor" "84 84 84 200" + "wrap" "1" + "visible" "1" + "zpos" "3" + + "pin_to_sibling" "ServerBrowserBG" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "DeathsLine" + { + "classname" "ScoreboardUI" + "ControlName" "ImagePanel" + "xpos" "-395" + "ypos" "0" + "tall" "400" + "wide" "2" + "fillColor" "84 84 84 200" + "drawColor" "84 84 84 200" + "wrap" "1" + "visible" "1" + "zpos" "3" + + "pin_to_sibling" "ServerBrowserBG" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + "KDLine" + { + "classname" "ScoreboardUI" + "ControlName" "ImagePanel" + "xpos" "-540" + "ypos" "0" + "tall" "400" + "wide" "2" + "fillColor" "84 84 84 200" + "drawColor" "84 84 84 200" + "wrap" "1" + "visible" "1" + "zpos" "3" + + "pin_to_sibling" "ServerBrowserBG" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + "DamageLine" + { + "classname" "ScoreboardUI" + "ControlName" "ImagePanel" + "xpos" "-685" + "ypos" "0" + "tall" "400" + "wide" "2" + "fillColor" "84 84 84 200" + "drawColor" "84 84 84 200" + "wrap" "1" + "visible" "1" + "zpos" "3" + + "pin_to_sibling" "ServerBrowserBG" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + // "LatencyLine" + // { + // "classname" "ScoreboardUI" + // "ControlName" "ImagePanel" + // "xpos" "-825" + // "ypos" "0" + // "tall" "400" + // "wide" "2" + // "fillColor" "84 84 84 200" + // "drawColor" "84 84 84 200" + // "wrap" "1" + // "visible" "1" + // "zpos" "3" + + // "pin_to_sibling" "ServerBrowserBG" + // "pin_corner_to_sibling" "TOP_LEFT" + // "pin_to_sibling_corner" "BOTTOM_LEFT" + // } + "LeftLine" + { + "classname" "ScoreboardUI" + "ControlName" "ImagePanel" + "xpos" "0" + "ypos" "0" + "tall" "400" + "wide" "2" + "fillColor" "84 84 84 200" + "drawColor" "84 84 84 200" + "wrap" "1" + "visible" "1" + "zpos" "3" + + "pin_to_sibling" "ServerBrowserBG" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "RightLine" + { + "classname" "ScoreboardUI" + "ControlName" "ImagePanel" + "xpos" "0" + "ypos" "0" + "tall" "400" + "wide" "2" + "fillColor" "84 84 84 200" + "drawColor" "84 84 84 200" + "wrap" "1" + "visible" "1" + "zpos" "3" + + "pin_to_sibling" "ServerBrowserBG" + "pin_corner_to_sibling" "TOP_RIGHT" + "pin_to_sibling_corner" "BOTTOM_RIGHT" + } + + "BottomLine" + { + "classname" "ScoreboardUI" + "ControlName" "ImagePanel" + "xpos" "0" + "ypos" "0" + "tall" "2" + "wide" "830" + "fillColor" "84 84 84 200" + "drawColor" "84 84 84 200" + "wrap" "1" + "visible" "1" + "zpos" "3" + + "pin_to_sibling" "ServersBG" + "pin_corner_to_sibling" "BOTTOM_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "TopLine" + { + "classname" "ScoreboardUI" + "ControlName" "ImagePanel" + "xpos" "0" + "ypos" "0" + "tall" "2" + "wide" "830" + "fillColor" "84 84 84 200" + "drawColor" "84 84 84 200" + "wrap" "1" + "visible" "1" + "zpos" "3" + + "pin_to_sibling" "ServersBG" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "TOP_LEFT" + } + + "PlayerRow0" + { + "ControlName" "RuiButton" + "classname" "ScoreboardUIButton" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "0" + + + "pin_to_sibling" "ServerBrowserBG" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRow1" + { + "ControlName" "RuiButton" + "classname" "ScoreboardUIButton" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "1" + + "pin_to_sibling" "PlayerRow0" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRow2" + { + "ControlName" "RuiButton" + "classname" "ScoreboardUIButton" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "2" + + "pin_to_sibling" "PlayerRow1" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRow3" + { + "ControlName" "RuiButton" + "classname" "ScoreboardUIButton" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "3" + + "pin_to_sibling" "PlayerRow2" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRow4" + { + "ControlName" "RuiButton" + "classname" "ScoreboardUIButton" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "4" + + "pin_to_sibling" "PlayerRow3" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRow5" + { + "ControlName" "RuiButton" + "classname" "ScoreboardUIButton" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "5" + + "pin_to_sibling" "PlayerRow4" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRow6" + { + "ControlName" "RuiButton" + "classname" "ScoreboardUIButton" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "6" + + "pin_to_sibling" "PlayerRow5" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRow7" + { + "ControlName" "RuiButton" + "classname" "ScoreboardUIButton" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "7" + + "pin_to_sibling" "PlayerRow6" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRow8" + { + "ControlName" "RuiButton" + "classname" "ScoreboardUIButton" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "8" + + "pin_to_sibling" "PlayerRow7" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRow9" + { + "ControlName" "RuiButton" + "classname" "ScoreboardUIButton" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "9" + + "pin_to_sibling" "PlayerRow8" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRow10" + { + "ControlName" "RuiButton" + "classname" "ScoreboardUIButton" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "10" + + "pin_to_sibling" "PlayerRow9" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRow11" + { + "ControlName" "RuiButton" + "classname" "ScoreboardUIButton" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "11" + + "pin_to_sibling" "PlayerRow10" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRow12" + { + "ControlName" "RuiButton" + "classname" "ScoreboardUIButton" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "12" + + "pin_to_sibling" "PlayerRow11" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRow13" + { + "ControlName" "RuiButton" + "classname" "ScoreboardUIButton" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "13" + + "pin_to_sibling" "PlayerRow12" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRow14" + { + "ControlName" "RuiButton" + "classname" "ScoreboardUIButton" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "14" + + "pin_to_sibling" "PlayerRow13" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRow15" + { + "ControlName" "RuiButton" + "classname" "ScoreboardUIButton" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "15" + + "pin_to_sibling" "PlayerRow14" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRow16" + { + "ControlName" "RuiButton" + "classname" "ScoreboardUIButton" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "16" + + "pin_to_sibling" "PlayerRow15" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRow17" + { + "ControlName" "RuiButton" + "classname" "ScoreboardUIButton" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "17" + + "pin_to_sibling" "PlayerRow16" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRow18" + { + "ControlName" "RuiButton" + "classname" "ScoreboardUIButton" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "18" + + "pin_to_sibling" "PlayerRow17" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerName0" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow0" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerName1" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow1" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerName2" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow2" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerName3" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow3" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerName4" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow4" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerName5" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow5" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerName6" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow6" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerName7" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow7" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerName8" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow8" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerName9" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow9" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerName10" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow10" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerName11" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow11" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerName12" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow12" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerName13" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow13" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerName14" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow14" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerName15" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow15" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerName16" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow16" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerName17" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow17" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerName18" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow18" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills0" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-210" + "ypos" "0" + "zpos" "0" + "textAlignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow0" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills1" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow1" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills2" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow2" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills3" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow3" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills4" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow4" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills5" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow5" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills6" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow6" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills7" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow7" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills8" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow8" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills9" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow9" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills10" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow10" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills11" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow11" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills12" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow12" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills13" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow13" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills14" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow14" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills15" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow15" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills16" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow16" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills17" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow17" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills18" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow18" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Deaths0" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textAlignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow0" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Deaths1" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow1" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Deaths2" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow2" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Deaths3" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow3" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Deaths4" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow4" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Deaths5" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow5" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Deaths6" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow6" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Deaths7" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow7" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Deaths8" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow8" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Deaths9" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow9" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Deaths10" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow10" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Deaths11" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow11" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Deaths12" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow12" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Deaths13" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow13" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Deaths14" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow14" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Deaths15" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow15" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Deaths16" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow16" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Deaths17" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow17" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Deaths18" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow18" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "KD0" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textAlignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow0" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "KD1" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow1" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "KD2" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow2" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "KD3" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow3" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "KD4" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow4" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "KD5" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow5" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "KD6" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow6" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "KD7" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow7" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "KD8" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow8" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "KD9" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow9" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "KD10" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow10" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "KD11" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow11" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "KD12" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow12" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "KD13" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow13" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "KD14" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow14" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "KD15" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow15" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "KD16" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow16" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "KD17" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow17" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "KD18" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow18" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Damage0" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textAlignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow0" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Damage1" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow1" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Damage2" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow2" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Damage3" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow3" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Damage4" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow4" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Damage5" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow5" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Damage6" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow6" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Damage7" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow7" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Damage8" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow8" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Damage9" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow9" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Damage10" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow10" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Damage11" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow11" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Damage12" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow12" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Damage13" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow13" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Damage14" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow14" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Damage15" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow15" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Damage16" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow16" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Damage17" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow17" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Damage18" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardUI" + + "pin_to_sibling" "PlayerRow18" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + // "Latency0" + // { + // "ControlName" "Label" + // "labelText" "" + // "xpos" "-840" + // "ypos" "0" + // "zpos" "0" + // "textAlignment" "center" + // "wide" "110" + // "zpos" "4" + // "fontHeight" "30" + // "classname" "ScoreboardUI" + + // "pin_to_sibling" "PlayerRow0" + // "pin_corner_to_sibling" "LEFT" + // "pin_to_sibling_corner" "LEFT" + // } + + // "Latency1" + // { + // "ControlName" "Label" + // "labelText" "" + // "xpos" "-840" + // "ypos" "0" + // "zpos" "0" + // "textalignment" "center" + // "wide" "110" + // "zpos" "4" + // "fontHeight" "30" + // "classname" "ScoreboardUI" + + // "pin_to_sibling" "PlayerRow1" + // "pin_corner_to_sibling" "LEFT" + // "pin_to_sibling_corner" "LEFT" + // } + + // "Latency2" + // { + // "ControlName" "Label" + // "labelText" "" + // "xpos" "-840" + // "ypos" "0" + // "zpos" "0" + // "textalignment" "center" + // "wide" "110" + // "zpos" "4" + // "fontHeight" "30" + // "classname" "ScoreboardUI" + + // "pin_to_sibling" "PlayerRow2" + // "pin_corner_to_sibling" "LEFT" + // "pin_to_sibling_corner" "LEFT" + // } + + // "Latency3" + // { + // "ControlName" "Label" + // "labelText" "" + // "xpos" "-840" + // "ypos" "0" + // "zpos" "0" + // "textalignment" "center" + // "wide" "110" + // "zpos" "4" + // "fontHeight" "30" + // "classname" "ScoreboardUI" + + // "pin_to_sibling" "PlayerRow3" + // "pin_corner_to_sibling" "LEFT" + // "pin_to_sibling_corner" "LEFT" + // } + + // "Latency4" + // { + // "ControlName" "Label" + // "labelText" "" + // "xpos" "-840" + // "ypos" "0" + // "zpos" "0" + // "textalignment" "center" + // "wide" "110" + // "zpos" "4" + // "fontHeight" "30" + // "classname" "ScoreboardUI" + + // "pin_to_sibling" "PlayerRow4" + // "pin_corner_to_sibling" "LEFT" + // "pin_to_sibling_corner" "LEFT" + // } + + // "Latency5" + // { + // "ControlName" "Label" + // "labelText" "" + // "xpos" "-840" + // "ypos" "0" + // "zpos" "0" + // "textalignment" "center" + // "wide" "110" + // "zpos" "4" + // "fontHeight" "30" + // "classname" "ScoreboardUI" + + // "pin_to_sibling" "PlayerRow5" + // "pin_corner_to_sibling" "LEFT" + // "pin_to_sibling_corner" "LEFT" + // } + + // "Latency6" + // { + // "ControlName" "Label" + // "labelText" "" + // "xpos" "-840" + // "ypos" "0" + // "zpos" "0" + // "textalignment" "center" + // "wide" "110" + // "zpos" "4" + // "fontHeight" "30" + // "classname" "ScoreboardUI" + + // "pin_to_sibling" "PlayerRow6" + // "pin_corner_to_sibling" "LEFT" + // "pin_to_sibling_corner" "LEFT" + // } + + // "Latency7" + // { + // "ControlName" "Label" + // "labelText" "" + // "xpos" "-840" + // "ypos" "0" + // "zpos" "0" + // "textalignment" "center" + // "wide" "110" + // "zpos" "4" + // "fontHeight" "30" + // "classname" "ScoreboardUI" + + // "pin_to_sibling" "PlayerRow7" + // "pin_corner_to_sibling" "LEFT" + // "pin_to_sibling_corner" "LEFT" + // } + + // "Latency8" + // { + // "ControlName" "Label" + // "labelText" "" + // "xpos" "-840" + // "ypos" "0" + // "zpos" "0" + // "textalignment" "center" + // "wide" "110" + // "zpos" "4" + // "fontHeight" "30" + // "classname" "ScoreboardUI" + + // "pin_to_sibling" "PlayerRow8" + // "pin_corner_to_sibling" "LEFT" + // "pin_to_sibling_corner" "LEFT" + // } + + // "Latency9" + // { + // "ControlName" "Label" + // "labelText" "" + // "xpos" "-840" + // "ypos" "0" + // "zpos" "0" + // "textalignment" "center" + // "wide" "110" + // "zpos" "4" + // "fontHeight" "30" + // "classname" "ScoreboardUI" + + // "pin_to_sibling" "PlayerRow9" + // "pin_corner_to_sibling" "LEFT" + // "pin_to_sibling_corner" "LEFT" + // } + + // "Latency10" + // { + // "ControlName" "Label" + // "labelText" "" + // "xpos" "-840" + // "ypos" "0" + // "zpos" "0" + // "textalignment" "center" + // "wide" "110" + // "zpos" "4" + // "fontHeight" "30" + // "classname" "ScoreboardUI" + + // "pin_to_sibling" "PlayerRow10" + // "pin_corner_to_sibling" "LEFT" + // "pin_to_sibling_corner" "LEFT" + // } + + // "Latency11" + // { + // "ControlName" "Label" + // "labelText" "" + // "xpos" "-840" + // "ypos" "0" + // "zpos" "0" + // "textalignment" "center" + // "wide" "110" + // "zpos" "4" + // "fontHeight" "30" + // "classname" "ScoreboardUI" + + // "pin_to_sibling" "PlayerRow11" + // "pin_corner_to_sibling" "LEFT" + // "pin_to_sibling_corner" "LEFT" + // } + + // "Latency12" + // { + // "ControlName" "Label" + // "labelText" "" + // "xpos" "-840" + // "ypos" "0" + // "zpos" "0" + // "textalignment" "center" + // "wide" "110" + // "zpos" "4" + // "fontHeight" "30" + // "classname" "ScoreboardUI" + + // "pin_to_sibling" "PlayerRow12" + // "pin_corner_to_sibling" "LEFT" + // "pin_to_sibling_corner" "LEFT" + // } + + // "Latency13" + // { + // "ControlName" "Label" + // "labelText" "" + // "xpos" "-840" + // "ypos" "0" + // "zpos" "0" + // "textalignment" "center" + // "wide" "110" + // "zpos" "4" + // "fontHeight" "30" + // "classname" "ScoreboardUI" + + // "pin_to_sibling" "PlayerRow13" + // "pin_corner_to_sibling" "LEFT" + // "pin_to_sibling_corner" "LEFT" + // } + + // "Latency14" + // { + // "ControlName" "Label" + // "labelText" "" + // "xpos" "-840" + // "ypos" "0" + // "zpos" "0" + // "textalignment" "center" + // "wide" "110" + // "zpos" "4" + // "fontHeight" "30" + // "classname" "ScoreboardUI" + + // "pin_to_sibling" "PlayerRow14" + // "pin_corner_to_sibling" "LEFT" + // "pin_to_sibling_corner" "LEFT" + // } + + // "Latency15" + // { + // "ControlName" "Label" + // "labelText" "" + // "xpos" "-840" + // "ypos" "0" + // "zpos" "0" + // "textalignment" "center" + // "wide" "110" + // "zpos" "4" + // "fontHeight" "30" + // "classname" "ScoreboardUI" + + // "pin_to_sibling" "PlayerRow15" + // "pin_corner_to_sibling" "LEFT" + // "pin_to_sibling_corner" "LEFT" + // } + + // "Latency16" + // { + // "ControlName" "Label" + // "labelText" "" + // "xpos" "-840" + // "ypos" "0" + // "zpos" "0" + // "textalignment" "center" + // "wide" "110" + // "zpos" "4" + // "fontHeight" "30" + // "classname" "ScoreboardUI" + + // "pin_to_sibling" "PlayerRow16" + // "pin_corner_to_sibling" "LEFT" + // "pin_to_sibling_corner" "LEFT" + // } + + // "Latency17" + // { + // "ControlName" "Label" + // "labelText" "" + // "xpos" "-840" + // "ypos" "0" + // "zpos" "0" + // "textalignment" "center" + // "wide" "110" + // "zpos" "4" + // "fontHeight" "30" + // "classname" "ScoreboardUI" + + // "pin_to_sibling" "PlayerRow17" + // "pin_corner_to_sibling" "LEFT" + // "pin_to_sibling_corner" "LEFT" + // } + + // "Latency18" + // { + // "ControlName" "Label" + // "labelText" "" + // "xpos" "-840" + // "ypos" "0" + // "zpos" "0" + // "textalignment" "center" + // "wide" "110" + // "zpos" "4" + // "fontHeight" "30" + // "classname" "ScoreboardUI" + + // "pin_to_sibling" "PlayerRow18" + // "pin_corner_to_sibling" "LEFT" + // "pin_to_sibling_corner" "LEFT" + // } + //Selected map/location red lines + + // Bar1 + // { + // ControlName ImagePanel + // wide 320 + // tall 2 + // visible 1 + // scaleImage 1 + // proportionalToParent 0 + // fillColor "255 0 0 200" + // drawColor "255 0 0 200" + + // pin_to_sibling MapVoteFrame + // pin_corner_to_sibling BOTTOM_LEFT + // pin_to_sibling_corner BOTTOM_LEFT + // } + + // Bar2 + // { + // ControlName ImagePanel + // wide 320 + // tall 2 + // visible 1 + // scaleImage 1 + // proportionalToParent 0 + // fillColor "255 0 0 200" + // drawColor "255 0 0 200" + + // pin_to_sibling MapVoteFrame + // pin_corner_to_sibling TOP_LEFT + // pin_to_sibling_corner TOP_LEFT + // } + + // Bar3 + // { + // ControlName ImagePanel + // wide 2 + // tall 180 + // visible 1 + // scaleImage 1 + // proportionalToParent 0 + // fillColor "255 0 0 200" + // drawColor "255 0 0 200" + + // pin_to_sibling MapVoteFrame + // pin_corner_to_sibling TOP_LEFT + // pin_to_sibling_corner TOP_LEFT + // } + + // Bar4 + // { + // ControlName ImagePanel + // wide 2 + // tall 180 + // visible 1 + // scaleImage 1 + // proportionalToParent 0 + // fillColor "255 0 0 200" + // drawColor "255 0 0 200" + + // pin_to_sibling MapVoteFrame + // pin_corner_to_sibling TOP_RIGHT + // pin_to_sibling_corner TOP_RIGHT + // } + } +} diff --git a/resource/ui/menus/FlowstateDM/flowstate_prophunt_scoreboard.menu b/resource/ui/menus/FlowstateDM/flowstate_prophunt_scoreboard.menu new file mode 100644 index 000000000..9c3d9dbe4 --- /dev/null +++ b/resource/ui/menus/FlowstateDM/flowstate_prophunt_scoreboard.menu @@ -0,0 +1,1878 @@ +"scripts/resource/ui/menus/FlowstateDM/flowstate_prophunt_scoreboard.menu" +{ + "menu" + { + "ControlName" "Frame" + "xpos" "0" + "ypos" "0" + "zpos" "3" + "wide" "f0" + "tall" "f0" + "autoResize" "0" + "pinCorner" "0" + "visible" "1" + "enabled" "1" + "tabPosition" "0" + "PaintBackgroundType" "0" + "infocus_bgcolor_override" "0 0 0 0" + "outoffocus_bgcolor_override" "0 0 0 0" + "modal" "1" + + "DarkenBackground" + { + "ControlName" "Label" + "xpos" "0" + "ypos" "0" + "wide" "%100" + "tall" "%100" + "labelText" "" + "bgcolor_override" "0 0 0 20" + "visible" "1" + "paintbackground" "1" + } + + "TextCredits2" + { + "ControlName" "Label" + "xpos" "-30" + "ypos" "-40" + "zpos" "15" + "auto_wide_tocontents" "1" + "tall" "30" + "visible" "1" + "fontHeight" "35" + "labelText" "APEX PROPHUNT" + "font" "TitleBoldFont" + "allcaps" 1 + "fgcolor_override" "255 0 119 255" + "pin_to_sibling" "DarkenBackground" + "pin_corner_to_sibling" "TOP_RIGHT" + "pin_to_sibling_corner" "TOP_RIGHT" + } + + "TextCredits" + { + "ControlName" "Label" + "xpos" "0" + "ypos" "32" + "zpos" "15" + "auto_wide_tocontents" "1" + "tall" "40" + "visible" "1" + "fontHeight" "22" + "labelText" "Made by @CafeFPS - ©Respawn Entertainment" + "font" "DefaultBold_62_DropShadow" + "allcaps" "0" + "fgcolor_override" "255 255 255 255" + "pin_to_sibling" "TextCredits2" + "pin_corner_to_sibling" "BOTTOM_RIGHT" + "pin_to_sibling_corner" "BOTTOM_RIGHT" + } + + "ScoreboardText" + { + "ControlName" "Label" + "xpos" "0" + "ypos" "-40" + "zpos" "15" + "auto_wide_tocontents" "1" + "tall" "40" + "visible" "1" + "fontHeight" "50" + "labelText" "Scoreboard" + "font" "DefaultBold_41" + "allcaps" "1" + "fgcolor_override" "255 255 255 155" + "pin_to_sibling" "TimerFrame" + "pin_corner_to_sibling" "TOP" + "pin_to_sibling_corner" "TOP" + } + + "TimerFrame" + { + "ControlName" RuiPanel + "rui" "ui/tabs_background.rpak" + "visible" 1 + "drawColor" "0 0 0 50" + "wide" "f0" + "tall" "125" + "xpos" "0" + "ypos" "0" + "visible" "1" + "scaleImage" "1" + "pin_to_sibling" "DarkenBackground" + "pin_corner_to_sibling" "TOP" + "pin_to_sibling_corner" "TOP" + } + + ////////////////// + //PROPS SCOREBOARD + ////////////////// + + "PropsScoreboardBG" + { + "classname" "ScoreboardPropsUI" + "ControlName" "ImagePanel" + "xpos" "%-20" + "ypos" "%-70" + "tall" "50" + "wide" "530" + "fillColor" "34 34 34 100" + "drawColor" "30 30 30 100" + "wrap" "1" + "visible" "1" + "zpos" "3" + + "pin_to_sibling" "DarkenBackground" + "pin_corner_to_sibling" "BOTTOM" + "pin_to_sibling_corner" "BOTTOM" + } + + "PropsScoreboardTitleBox" + { + ControlName RuiPanel + rui "ui/lobby_challenge_box.rpak" + "wide" "215" + "tall" "40" + "xpos" "-25" + "ypos" "50" + "visible" "1" + "scaleImage" "1" + "fillColor" "173 3 252 200" + "drawColor" "173 3 252 200" + "pin_to_sibling" "PropsScoreboardBG" + "pin_corner_to_sibling" "TOP" + "pin_to_sibling_corner" "TOP" + } + + "PropsScoreboardTitle" + { + "ControlName" "Label" + "xpos" "30" + "ypos" "0" + "auto_wide_tocontents" "1" + "tall" "40" + "visible" "1" + "fontHeight" "30" + "labelText" "PROPS SCOREBOARD" + "font" "DefaultBold_41" + "allcaps" "1" + "fgcolor_override" "255 255 255 255" + "pin_to_sibling" "PropsScoreboardTitleBox" + "pin_corner_to_sibling" "CENTER" + "pin_to_sibling_corner" "CENTER" + } + + "PropsBG" + { + "classname" "ScoreboardPropsUI" + "ControlName" "ImagePanel" + "xpos" "0" + "ypos" "0" + "tall" "400" + "wide" "530" + "fillColor" "30 30 30 180" + "drawColor" "30 30 30 180" + "wrap" "1" + "visible" "1" + "zpos" "0" + + "pin_to_sibling" "PropsScoreboardBG" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerNameLbl" + { + "classname" "ScoreboardPropsUI" + "ControlName" "Label" + "labelText" "Player Name" + "xpos" "-50" + "ypos" "0" + "auto_wide_tocontents" "1" + "zpos" "4" + "fontHeight" "30" + + "pin_to_sibling" "PropsScoreboardBG" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "TimesSurvivedLbl" + { + "classname" "ScoreboardPropsUI" + "ControlName" "Label" + "labelText" "Survived" + "xpos" "-250" + "ypos" "0" + "zpos" "6" + "textalignment" "center" + "wide" "150" + "zpos" "4" + "fontHeight" "30" + + "pin_to_sibling" "PropsScoreboardBG" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "SurvivalTimeLbl" + { + "classname" "ScoreboardPropsUI" + "ControlName" "Label" + "labelText" "Time Alive" + "xpos" "-400" + "ypos" "0" + "zpos" "6" + "textalignment" "center" + "wide" "150" + "zpos" "4" + "fontHeight" "30" + + "pin_to_sibling" "PropsScoreboardBG" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "NameLine" + { + "classname" "ScoreboardPropsUI" + "ControlName" "ImagePanel" + "xpos" "0" + "ypos" "0" + "tall" "400" + "wide" "2" + "fillColor" "84 84 84 200" + "drawColor" "84 84 84 200" + "wrap" "1" + "visible" "1" + "zpos" "3" + + "pin_to_sibling" "PropsScoreboardBG" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "TimesSurvivedLine" + { + "classname" "ScoreboardPropsUI" + "ControlName" "ImagePanel" + "xpos" "-250" + "ypos" "0" + "tall" "400" + "wide" "2" + "fillColor" "84 84 84 200" + "drawColor" "84 84 84 200" + "wrap" "1" + "visible" "1" + "zpos" "3" + + "pin_to_sibling" "PropsScoreboardBG" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "SurvivalTimeLine" + { + "classname" "ScoreboardPropsUI" + "ControlName" "ImagePanel" + "xpos" "-395" + "ypos" "0" + "tall" "400" + "wide" "2" + "fillColor" "84 84 84 200" + "drawColor" "84 84 84 200" + "wrap" "1" + "visible" "1" + "zpos" "3" + + "pin_to_sibling" "PropsScoreboardBG" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "LeftLine" + { + "classname" "ScoreboardPropsUI" + "ControlName" "ImagePanel" + "xpos" "0" + "ypos" "0" + "tall" "400" + "wide" "2" + "fillColor" "84 84 84 200" + "drawColor" "84 84 84 200" + "wrap" "1" + "visible" "1" + "zpos" "3" + + "pin_to_sibling" "PropsScoreboardBG" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "RightLine" + { + "classname" "ScoreboardPropsUI" + "ControlName" "ImagePanel" + "xpos" "0" + "ypos" "0" + "tall" "400" + "wide" "2" + "fillColor" "84 84 84 200" + "drawColor" "84 84 84 200" + "wrap" "1" + "visible" "1" + "zpos" "3" + + "pin_to_sibling" "PropsScoreboardBG" + "pin_corner_to_sibling" "TOP_RIGHT" + "pin_to_sibling_corner" "BOTTOM_RIGHT" + } + + "BottomLine" + { + "classname" "ScoreboardPropsUI" + "ControlName" "ImagePanel" + "xpos" "0" + "ypos" "0" + "tall" "2" + "wide" "530" + "fillColor" "84 84 84 200" + "drawColor" "84 84 84 200" + "wrap" "1" + "visible" "1" + "zpos" "3" + + "pin_to_sibling" "PropsBG" + "pin_corner_to_sibling" "BOTTOM_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "TopLine" + { + "classname" "ScoreboardPropsUI" + "ControlName" "ImagePanel" + "xpos" "0" + "ypos" "0" + "tall" "2" + "wide" "530" + "fillColor" "84 84 84 200" + "drawColor" "84 84 84 200" + "wrap" "1" + "visible" "1" + "zpos" "3" + + "pin_to_sibling" "PropsBG" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "TOP_LEFT" + } + + "PlayerRow0" + { + "ControlName" "RuiButton" + "classname" "ScoreboardPropsUIButton" + "wide" "530" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "0" + + + "pin_to_sibling" "PropsScoreboardBG" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRow1" + { + "ControlName" "RuiButton" + "classname" "ScoreboardPropsUIButton" + "wide" "530" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "1" + + "pin_to_sibling" "PlayerRow0" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRow2" + { + "ControlName" "RuiButton" + "classname" "ScoreboardPropsUIButton" + "wide" "530" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "2" + + "pin_to_sibling" "PlayerRow1" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRow3" + { + "ControlName" "RuiButton" + "classname" "ScoreboardPropsUIButton" + "wide" "530" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "3" + + "pin_to_sibling" "PlayerRow2" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRow4" + { + "ControlName" "RuiButton" + "classname" "ScoreboardPropsUIButton" + "wide" "530" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "4" + + "pin_to_sibling" "PlayerRow3" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRow5" + { + "ControlName" "RuiButton" + "classname" "ScoreboardPropsUIButton" + "wide" "530" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "5" + + "pin_to_sibling" "PlayerRow4" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRow6" + { + "ControlName" "RuiButton" + "classname" "ScoreboardPropsUIButton" + "wide" "530" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "6" + + "pin_to_sibling" "PlayerRow5" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRow7" + { + "ControlName" "RuiButton" + "classname" "ScoreboardPropsUIButton" + "wide" "530" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "7" + + "pin_to_sibling" "PlayerRow6" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRow8" + { + "ControlName" "RuiButton" + "classname" "ScoreboardPropsUIButton" + "wide" "530" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "8" + + "pin_to_sibling" "PlayerRow7" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRow9" + { + "ControlName" "RuiButton" + "classname" "ScoreboardPropsUIButton" + "wide" "530" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "9" + + "pin_to_sibling" "PlayerRow8" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerName0" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardPropsUI" + + "pin_to_sibling" "PlayerRow0" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerName1" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardPropsUI" + + "pin_to_sibling" "PlayerRow1" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerName2" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardPropsUI" + + "pin_to_sibling" "PlayerRow2" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerName3" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardPropsUI" + + "pin_to_sibling" "PlayerRow3" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerName4" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardPropsUI" + + "pin_to_sibling" "PlayerRow4" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerName5" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardPropsUI" + + "pin_to_sibling" "PlayerRow5" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerName6" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardPropsUI" + + "pin_to_sibling" "PlayerRow6" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerName7" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardPropsUI" + + "pin_to_sibling" "PlayerRow7" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerName8" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardPropsUI" + + "pin_to_sibling" "PlayerRow8" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerName9" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardPropsUI" + + "pin_to_sibling" "PlayerRow9" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "TimesSurvived0" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-210" + "ypos" "0" + "zpos" "0" + "textAlignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardPropsUI" + + "pin_to_sibling" "PlayerRow0" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "TimesSurvived1" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardPropsUI" + + "pin_to_sibling" "PlayerRow1" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "TimesSurvived2" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardPropsUI" + + "pin_to_sibling" "PlayerRow2" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "TimesSurvived3" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardPropsUI" + + "pin_to_sibling" "PlayerRow3" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "TimesSurvived4" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardPropsUI" + + "pin_to_sibling" "PlayerRow4" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "TimesSurvived5" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardPropsUI" + + "pin_to_sibling" "PlayerRow5" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "TimesSurvived6" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardPropsUI" + + "pin_to_sibling" "PlayerRow6" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "TimesSurvived7" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardPropsUI" + + "pin_to_sibling" "PlayerRow7" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "TimesSurvived8" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardPropsUI" + + "pin_to_sibling" "PlayerRow8" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "TimesSurvived9" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardPropsUI" + + "pin_to_sibling" "PlayerRow9" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "SurvivalTime0" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textAlignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardPropsUI" + + "pin_to_sibling" "PlayerRow0" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "SurvivalTime1" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardPropsUI" + + "pin_to_sibling" "PlayerRow1" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "SurvivalTime2" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardPropsUI" + + "pin_to_sibling" "PlayerRow2" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "SurvivalTime3" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardPropsUI" + + "pin_to_sibling" "PlayerRow3" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "SurvivalTime4" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardPropsUI" + + "pin_to_sibling" "PlayerRow4" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "SurvivalTime5" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardPropsUI" + + "pin_to_sibling" "PlayerRow5" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "SurvivalTime6" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardPropsUI" + + "pin_to_sibling" "PlayerRow6" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "SurvivalTime7" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardPropsUI" + + "pin_to_sibling" "PlayerRow7" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "SurvivalTime8" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardPropsUI" + + "pin_to_sibling" "PlayerRow8" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "SurvivalTime9" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardPropsUI" + + "pin_to_sibling" "PlayerRow9" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + //////////////////// + //HUNTERS SCOREBOARD + //////////////////// + + "HuntersScoreboardBG" + { + "classname" "ScoreboardHuntersUI" + "ControlName" "ImagePanel" + "xpos" "%20" + "ypos" "%-70" + "tall" "50" + "wide" "380" + "fillColor" "34 34 34 230" + "drawColor" "30 30 30 230" + "wrap" "1" + "visible" "1" + "zpos" "3" + + "pin_to_sibling" "DarkenBackground" + "pin_corner_to_sibling" "BOTTOM" + "pin_to_sibling_corner" "BOTTOM" + } + + "HuntersScoreboardTitleBox" + { + ControlName RuiPanel + rui "ui/lobby_challenge_box.rpak" + "wide" "215" + "tall" "40" + "xpos" "-25" + "ypos" "50" + "visible" "1" + "scaleImage" "1" + "fillColor" "173 3 252 200" + "drawColor" "173 3 252 200" + "pin_to_sibling" "HuntersScoreboardBG" + "pin_corner_to_sibling" "TOP" + "pin_to_sibling_corner" "TOP" + } + + "HuntersScoreboardTitle" + { + "ControlName" "Label" + "xpos" "30" + "ypos" "0" + "auto_wide_tocontents" "1" + "tall" "40" + "visible" "1" + "fontHeight" "30" + "labelText" "HUNTERS SCOREBOARD" + "font" "DefaultBold_41" + "allcaps" "1" + "fgcolor_override" "255 255 255 255" + "pin_to_sibling" "HuntersScoreboardTitleBox" + "pin_corner_to_sibling" "CENTER" + "pin_to_sibling_corner" "CENTER" + } + "HuntersBG" + { + "classname" "ScoreboardHuntersUI" + "ControlName" "ImagePanel" + "xpos" "0" + "ypos" "0" + "tall" "400" + "wide" "380" + "fillColor" "30 30 30 180" + "drawColor" "30 30 30 180" + "wrap" "1" + "visible" "1" + "zpos" "0" + + "pin_to_sibling" "HuntersScoreboardBG" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerNameHuntersLbl" + { + "classname" "ScoreboardHuntersUI" + "ControlName" "Label" + "labelText" "Player Name" + "xpos" "-50" + "ypos" "0" + "auto_wide_tocontents" "1" + "zpos" "4" + "fontHeight" "30" + + "pin_to_sibling" "HuntersScoreboardBG" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PropsKilledLbl" + { + "classname" "ScoreboardHuntersUI" + "ControlName" "Label" + "labelText" "Kills" + "xpos" "-250" + "ypos" "0" + "zpos" "6" + "textalignment" "center" + "wide" "150" + "zpos" "4" + "fontHeight" "30" + + "pin_to_sibling" "HuntersScoreboardBG" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "NameLine2" + { + "classname" "ScoreboardHuntersUI" + "ControlName" "ImagePanel" + "xpos" "0" + "ypos" "0" + "tall" "400" + "wide" "2" + "fillColor" "84 84 84 200" + "drawColor" "84 84 84 200" + "wrap" "1" + "visible" "1" + "zpos" "3" + + "pin_to_sibling" "HuntersScoreboardBG" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PropsKilledLine" + { + "classname" "ScoreboardHuntersUI" + "ControlName" "ImagePanel" + "xpos" "-250" + "ypos" "0" + "tall" "400" + "wide" "2" + "fillColor" "84 84 84 200" + "drawColor" "84 84 84 200" + "wrap" "1" + "visible" "1" + "zpos" "3" + + "pin_to_sibling" "HuntersScoreboardBG" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "LeftLine2" + { + "classname" "ScoreboardHuntersUI" + "ControlName" "ImagePanel" + "xpos" "0" + "ypos" "0" + "tall" "400" + "wide" "2" + "fillColor" "84 84 84 200" + "drawColor" "84 84 84 200" + "wrap" "1" + "visible" "1" + "zpos" "3" + + "pin_to_sibling" "HuntersScoreboardBG" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "RightLine2" + { + "classname" "ScoreboardHuntersUI" + "ControlName" "ImagePanel" + "xpos" "0" + "ypos" "0" + "tall" "400" + "wide" "2" + "fillColor" "84 84 84 200" + "drawColor" "84 84 84 200" + "wrap" "1" + "visible" "1" + "zpos" "3" + + "pin_to_sibling" "HuntersScoreboardBG" + "pin_corner_to_sibling" "TOP_RIGHT" + "pin_to_sibling_corner" "BOTTOM_RIGHT" + } + + "BottomLine2" + { + "classname" "ScoreboardHuntersUI" + "ControlName" "ImagePanel" + "xpos" "0" + "ypos" "0" + "tall" "2" + "wide" "380" + "fillColor" "84 84 84 200" + "drawColor" "84 84 84 200" + "wrap" "1" + "visible" "1" + "zpos" "3" + + "pin_to_sibling" "HuntersBG" + "pin_corner_to_sibling" "BOTTOM_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "TopLine2" + { + "classname" "ScoreboardHuntersUI" + "ControlName" "ImagePanel" + "xpos" "0" + "ypos" "0" + "tall" "2" + "wide" "380" + "fillColor" "84 84 84 200" + "drawColor" "84 84 84 200" + "wrap" "1" + "visible" "1" + "zpos" "3" + + "pin_to_sibling" "HuntersBG" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "TOP_LEFT" + } + + "PlayerRowHunters0" + { + "ControlName" "RuiButton" + "classname" "ScoreboardHuntersUIButton" + "wide" "530" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "0" + + + "pin_to_sibling" "HuntersScoreboardBG" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRowHunters1" + { + "ControlName" "RuiButton" + "classname" "ScoreboardHuntersUIButton" + "wide" "530" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "1" + + "pin_to_sibling" "PlayerRowHunters0" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRowHunters2" + { + "ControlName" "RuiButton" + "classname" "ScoreboardHuntersUIButton" + "wide" "530" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "2" + + "pin_to_sibling" "PlayerRowHunters1" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRowHunters3" + { + "ControlName" "RuiButton" + "classname" "ScoreboardHuntersUIButton" + "wide" "530" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "3" + + "pin_to_sibling" "PlayerRowHunters2" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRowHunters4" + { + "ControlName" "RuiButton" + "classname" "ScoreboardHuntersUIButton" + "wide" "530" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "4" + + "pin_to_sibling" "PlayerRowHunters3" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRowHunters5" + { + "ControlName" "RuiButton" + "classname" "ScoreboardHuntersUIButton" + "wide" "530" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "5" + + "pin_to_sibling" "PlayerRowHunters4" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRowHunters6" + { + "ControlName" "RuiButton" + "classname" "ScoreboardHuntersUIButton" + "wide" "530" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "6" + + "pin_to_sibling" "PlayerRowHunters5" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRowHunters7" + { + "ControlName" "RuiButton" + "classname" "ScoreboardHuntersUIButton" + "wide" "530" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "7" + + "pin_to_sibling" "PlayerRowHunters6" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRowHunters8" + { + "ControlName" "RuiButton" + "classname" "ScoreboardHuntersUIButton" + "wide" "530" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "8" + + "pin_to_sibling" "PlayerRowHunters7" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerRowHunters9" + { + "ControlName" "RuiButton" + "classname" "ScoreboardHuntersUIButton" + "wide" "530" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "9" + + "pin_to_sibling" "PlayerRowHunters8" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "PlayerNameHunters0" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardHuntersUI" + + "pin_to_sibling" "PlayerRowHunters0" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerNameHunters1" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardHuntersUI" + + "pin_to_sibling" "PlayerRowHunters1" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerNameHunters2" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardHuntersUI" + + "pin_to_sibling" "PlayerRowHunters2" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerNameHunters3" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardHuntersUI" + + "pin_to_sibling" "PlayerRowHunters3" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerNameHunters4" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardHuntersUI" + + "pin_to_sibling" "PlayerRowHunters4" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerNameHunters5" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardHuntersUI" + + "pin_to_sibling" "PlayerRowHunters5" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerNameHunters6" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardHuntersUI" + + "pin_to_sibling" "PlayerRowHunters6" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerNameHunters7" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardHuntersUI" + + "pin_to_sibling" "PlayerRowHunters7" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerNameHunters8" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardHuntersUI" + + "pin_to_sibling" "PlayerRowHunters8" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PlayerNameHunters9" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardHuntersUI" + + "pin_to_sibling" "PlayerRowHunters9" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PropsKilled0" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-210" + "ypos" "0" + "zpos" "0" + "textAlignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardHuntersUI" + + "pin_to_sibling" "PlayerRowHunters0" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PropsKilled1" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardHuntersUI" + + "pin_to_sibling" "PlayerRowHunters1" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PropsKilled2" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardHuntersUI" + + "pin_to_sibling" "PlayerRowHunters2" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PropsKilled3" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardHuntersUI" + + "pin_to_sibling" "PlayerRowHunters3" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PropsKilled4" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardHuntersUI" + + "pin_to_sibling" "PlayerRowHunters4" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PropsKilled5" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardHuntersUI" + + "pin_to_sibling" "PlayerRowHunters5" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PropsKilled6" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardHuntersUI" + + "pin_to_sibling" "PlayerRowHunters6" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PropsKilled7" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardHuntersUI" + + "pin_to_sibling" "PlayerRowHunters7" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PropsKilled8" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardHuntersUI" + + "pin_to_sibling" "PlayerRowHunters8" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "PropsKilled9" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ScoreboardHuntersUI" + + "pin_to_sibling" "PlayerRowHunters9" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + + } +} diff --git a/resource/ui/menus/FlowstateDM/flowstate_statistics.menu b/resource/ui/menus/FlowstateDM/flowstate_statistics.menu new file mode 100644 index 000000000..459fae857 --- /dev/null +++ b/resource/ui/menus/FlowstateDM/flowstate_statistics.menu @@ -0,0 +1,2676 @@ +scripts/resource/ui/menus/FlowstateDM/flowstate_statistics.menu +{ + menu + { + ControlName Frame + xpos 0 + ypos 0 + zpos 3 + wide f0 + tall f0 + autoResize 0 + pinCorner 0 + visible 1 + enabled 1 + tabPosition 0 + PaintBackgroundType 0 + infocus_bgcolor_override "0 0 0 0" + outoffocus_bgcolor_override "0 0 0 0" + modal 1 + + ScreenBlur + { + ControlName RuiPanel + wide %100 + tall %100 + rui "ui/invisible.rpak" + visible 1 + drawColor "0 0 0 50" + } + + DarkenBackground + { + ControlName RuiPanel + wide %50//%70 + xpos 0//%15 + tall %100 + visible 1 + rui "ui/basic_image.rpak" + + ruiArgs + { + basicImageColor "0 0 0" + basicImageAlpha 0.9 + } + } + + Title + { + ControlName Label + xpos -30 + ypos -30 + auto_wide_tocontents 1 + tall 50 + visible 1 + fontHeight 60 + labelText "FLOWSTATE AIM TRAINER" + font "TitleBoldFont" + allcaps 1 + fgcolor_override "191 13 13 255" + pin_to_sibling ScreenBlur + pin_corner_to_sibling TOP_RIGHT + pin_to_sibling_corner TOP_RIGHT + } + + Line + { + ControlName ImagePanel + wide 660 + tall 2 + fillColor "52 255 41 200" + drawColor "52 255 41 200" + visible 0 + ypos 0 + pin_to_sibling DarkenBackground + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Background + { + ControlName RuiPanel + wide %50 + tall 85 + xpos 0 + visible 1 + enabled 1 + proportionalToParent 1 + rui "ui/tabs_background.rpak" + + pin_to_sibling Line + } + + Challenges + { + "ControlName" "RuiButton" + "InheritProperties" "TabButtonSettings" + "classname" "TopButtons" + "zpos" "0" + "xpos" "%-1.5" + "ypos" "0" + "scriptID" "0" + "ypos" "-1" + ruiArgs + { + isSelected 0 + buttonText "CHALLENGES" + } + + "pin_to_sibling" "Line" + "pin_corner_to_sibling" "TOP" + "pin_to_sibling_corner" "TOP" + } + + History + { + "ControlName" "RuiButton" + "InheritProperties" "TabButtonSettings" + "classname" "TopButtons" + "zpos" "0" + "xpos" "205" + "scriptID" "0" + "ypos" "0" + ruiArgs + { + isSelected 1 + buttonText "HISTORY" + } + + "pin_to_sibling" "Challenges" + "pin_corner_to_sibling" "TOP" + "pin_to_sibling_corner" "TOP" + } + + Settings + { + "ControlName" "RuiButton" + "InheritProperties" "TabButtonSettings" + "classname" "TopButtons" + "zpos" "0" + "xpos" "205" + "scriptID" "0" + "ypos" "0" + ruiArgs + { + isSelected 0 + buttonText "SETTINGS" + } + + "pin_to_sibling" "History" + "pin_corner_to_sibling" "TOP" + "pin_to_sibling_corner" "TOP" + } + + Logo + { + ControlName RuiPanel + InheritProperties Logo + ypos -1 + xpos -50 + wide 110 + tall 132 + pin_to_sibling Line + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner TOP_LEFT + } + + MadeBy + { + ControlName Label + xpos -40 + ypos -60 + auto_wide_tocontents 1 + tall 25 + visible 1 + fontHeight 25 + labelText "v1.25 | Made by @CafeFPS" + font DefaultBold_41 + allcaps 0 + fgcolor_override "255 255 255 255" + pin_to_sibling ScreenBlur + pin_corner_to_sibling BOTTOM_RIGHT + pin_to_sibling_corner BOTTOM_RIGHT + } + + GameMenuButton + { + ControlName RuiButton + InheritProperties CornerButton + zpos 5 + ypos 70 + pin_to_sibling MadeBy + pin_corner_to_sibling TOP_RIGHT + pin_to_sibling_corner TOP_RIGHT + } + + MadeBy2 + { + ControlName Label + xpos 0 + ypos 20 + auto_wide_tocontents 1 + tall 25 + visible 1 + fontHeight 25 + labelText "Powered by R5Reloaded - ©Respawn Entertainment" + font DefaultBold_41 + allcaps 0 + fgcolor_override "255 255 255 255" + pin_to_sibling MadeBy + pin_corner_to_sibling BOTTOM_RIGHT + pin_to_sibling_corner BOTTOM_RIGHT + } + + "ServerBrowserBG" + { + "ControlName" "ImagePanel" + "xpos" "-60" + "ypos" "120" + "tall" "50" + "wide" "830" + "fillColor" "34 34 34 200" + "drawColor" "30 30 30 200" + "wrap" "1" + "visible" "1" + "zpos" "3" + + "pin_to_sibling" "Background" + "pin_corner_to_sibling" "BOTTOM_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "ServersBG" + { + "ControlName" "ImagePanel" + "xpos" "0" + "ypos" "0" + "tall" "760" + "wide" "830" + "fillColor" "30 30 30 120" + "drawColor" "30 30 30 120" + "wrap" "1" + "visible" "1" + "zpos" "0" + + "pin_to_sibling" "ServerBrowserBG" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "ServerBrowserBGBottom" + { + "ControlName" "ImagePanel" + "xpos" "0" + "ypos" "750" + "tall" "70" + "wide" "830" + "fillColor" "30 30 30 200" + "drawColor" "30 30 30 200" + "wrap" "1" + "visible" "0" + "zpos" "3" + + "pin_to_sibling" "ServerBrowserBG" + "pin_corner_to_sibling" "TOP" + "pin_to_sibling_corner" "BOTTOM" + } + + "BtnServerListRightArrow" + { + "ControlName" "RuiButton" + "rui" "ui/footer_button.rpak" + "wide" "100" + "tall" "35" + "xpos" "0" + "ypos" "0" + "zpos" "6" + + ruiArgs + { + buttonText ">>>" + } + + "pin_to_sibling" "Pages" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "RIGHT" + } + + "Pages" + { + "ControlName" "Label" + "labelText" " Page: 1/1 " + "font" "DefaultBold_41" + "allcaps" "1" + "wide" "120" + "zpos" "7" + "fontHeight" "25" + "xpos" "25" + "ypos" "0" + "fgcolor_override" "255 255 255 255" + "textalignment" "center" + "auto_wide_tocontents" "1" + + "pin_to_sibling" "ServerBrowserBGBottom" + "pin_corner_to_sibling" "CENTER" + "pin_to_sibling_corner" "CENTER" + } + + "BtnServerListLeftArrow" + { + "ControlName" "RuiButton" + "rui" "ui/footer_button.rpak" + "wide" "100" + "tall" "35" + "xpos" "0" + "ypos" "0" + "zpos" "6" + + ruiArgs + { + buttonText "<<<" + } + + "pin_to_sibling" "Pages" + "pin_corner_to_sibling" "RIGHT" + "pin_to_sibling_corner" "LEFT" + } + + "PrintToConsole" + { + "ControlName" "RuiButton" + "rui" "ui/footer_button.rpak" + "wide" "180" + "tall" "35" + "xpos" "0" + "ypos" "0" + "zpos" "6" + + ruiArgs + { + buttonText "Export to .txt" + } + + "pin_to_sibling" "ServerBrowserBGBottom" + "pin_corner_to_sibling" "RIGHT" + "pin_to_sibling_corner" "RIGHT" + } + + "NoChallengesLbl" + { + "ControlName" "Label" + "labelText" "No Challenges Played" + "xpos" "0" + "ypos" "-15" + "auto_wide_tocontents" "1" + "zpos" "10" + "fontHeight" "40" + + "pin_to_sibling" "ServersBG" + "pin_corner_to_sibling" "CENTER" + "pin_to_sibling_corner" "CENTER" + } + + "ChallengeNameLbl" + { + "ControlName" "Label" + "labelText" "Challenge Name" + "xpos" "-50" + "ypos" "0" + "auto_wide_tocontents" "1" + "zpos" "4" + "fontHeight" "30" + + "pin_to_sibling" "ServerBrowserBG" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "DummiesKilledLbl" + { + "ControlName" "Label" + "labelText" "Kills" + "xpos" "-250" + "ypos" "0" + "zpos" "6" + "textalignment" "center" + "wide" "150" + "zpos" "4" + "fontHeight" "30" + + "pin_to_sibling" "ServerBrowserBG" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeScoreLbl" + { + "ControlName" "Label" + "labelText" "Shots Hit" + "xpos" "-400" + "ypos" "0" + "zpos" "6" + "textalignment" "center" + "wide" "150" + "zpos" "4" + "fontHeight" "30" + + "pin_to_sibling" "ServerBrowserBG" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeWeaponLbl" + { + "ControlName" "Label" + "labelText" "Weapon" + "xpos" "-540" + "ypos" "0" + "zpos" "6" + "textalignment" "center" + "wide" "150" + "fontHeight" "30" + + "pin_to_sibling" "ServerBrowserBG" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeAccuracyLbl" + { + "ControlName" "Label" + "labelText" "Accuracy" + "xpos" "-685" + "ypos" "0" + "zpos" "6" + "textalignment" "center" + "wide" "150" + "fontHeight" "30" + + "pin_to_sibling" "ServerBrowserBG" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "NameLine" + { + "ControlName" "ImagePanel" + "xpos" "0" + "ypos" "0" + "tall" "760" + "wide" "2" + "fillColor" "84 84 84 200" + "drawColor" "84 84 84 200" + "wrap" "1" + "visible" "1" + "zpos" "3" + + "pin_to_sibling" "ServerBrowserBG" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "ScoreLine" + { + "ControlName" "ImagePanel" + "xpos" "-250" + "ypos" "0" + "tall" "760" + "wide" "2" + "fillColor" "84 84 84 200" + "drawColor" "84 84 84 200" + "wrap" "1" + "visible" "1" + "zpos" "3" + + "pin_to_sibling" "ServerBrowserBG" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "ShotshitLine" + { + "ControlName" "ImagePanel" + "xpos" "-395" + "ypos" "0" + "tall" "760" + "wide" "2" + "fillColor" "84 84 84 200" + "drawColor" "84 84 84 200" + "wrap" "1" + "visible" "1" + "zpos" "3" + + "pin_to_sibling" "ServerBrowserBG" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + "WeaponLine" + { + "ControlName" "ImagePanel" + "xpos" "-540" + "ypos" "0" + "tall" "760" + "wide" "2" + "fillColor" "84 84 84 200" + "drawColor" "84 84 84 200" + "wrap" "1" + "visible" "1" + "zpos" "3" + + "pin_to_sibling" "ServerBrowserBG" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + "AccuracyLine" + { + "ControlName" "ImagePanel" + "xpos" "-685" + "ypos" "0" + "tall" "760" + "wide" "2" + "fillColor" "84 84 84 200" + "drawColor" "84 84 84 200" + "wrap" "1" + "visible" "1" + "zpos" "3" + + "pin_to_sibling" "ServerBrowserBG" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "LeftLine" + { + "ControlName" "ImagePanel" + "xpos" "0" + "ypos" "0" + "tall" "760" + "wide" "2" + "fillColor" "84 84 84 200" + "drawColor" "84 84 84 200" + "wrap" "1" + "visible" "1" + "zpos" "3" + + "pin_to_sibling" "ServerBrowserBG" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "RightLine" + { + "ControlName" "ImagePanel" + "xpos" "0" + "ypos" "0" + "tall" "760" + "wide" "2" + "fillColor" "84 84 84 200" + "drawColor" "84 84 84 200" + "wrap" "1" + "visible" "1" + "zpos" "3" + + "pin_to_sibling" "ServerBrowserBG" + "pin_corner_to_sibling" "TOP_RIGHT" + "pin_to_sibling_corner" "BOTTOM_RIGHT" + } + + "BottomLine" + { + "ControlName" "ImagePanel" + "xpos" "0" + "ypos" "0" + "tall" "2" + "wide" "830" + "fillColor" "84 84 84 200" + "drawColor" "84 84 84 200" + "wrap" "1" + "visible" "1" + "zpos" "3" + + "pin_to_sibling" "ServersBG" + "pin_corner_to_sibling" "BOTTOM_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "TopLine" + { + "ControlName" "ImagePanel" + "xpos" "0" + "ypos" "0" + "tall" "2" + "wide" "830" + "fillColor" "84 84 84 200" + "drawColor" "84 84 84 200" + "wrap" "1" + "visible" "1" + "zpos" "3" + + "pin_to_sibling" "ServersBG" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "TOP_LEFT" + } + + "ServerButton0" + { + "ControlName" "RuiButton" + "classname" "ChallengeBtn" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "0" + + + "pin_to_sibling" "ServerBrowserBG" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "ServerButton1" + { + "ControlName" "RuiButton" + "classname" "ChallengeBtn" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "1" + + "pin_to_sibling" "ServerButton0" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "ServerButton2" + { + "ControlName" "RuiButton" + "classname" "ChallengeBtn" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "2" + + "pin_to_sibling" "ServerButton1" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "ServerButton3" + { + "ControlName" "RuiButton" + "classname" "ChallengeBtn" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "3" + + "pin_to_sibling" "ServerButton2" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "ServerButton4" + { + "ControlName" "RuiButton" + "classname" "ChallengeBtn" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "4" + + "pin_to_sibling" "ServerButton3" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "ServerButton5" + { + "ControlName" "RuiButton" + "classname" "ChallengeBtn" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "5" + + "pin_to_sibling" "ServerButton4" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "ServerButton6" + { + "ControlName" "RuiButton" + "classname" "ChallengeBtn" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "6" + + "pin_to_sibling" "ServerButton5" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "ServerButton7" + { + "ControlName" "RuiButton" + "classname" "ChallengeBtn" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "7" + + "pin_to_sibling" "ServerButton6" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "ServerButton8" + { + "ControlName" "RuiButton" + "classname" "ChallengeBtn" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "8" + + "pin_to_sibling" "ServerButton7" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "ServerButton9" + { + "ControlName" "RuiButton" + "classname" "ChallengeBtn" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "9" + + "pin_to_sibling" "ServerButton8" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "ServerButton10" + { + "ControlName" "RuiButton" + "classname" "ChallengeBtn" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "10" + + "pin_to_sibling" "ServerButton9" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "ServerButton11" + { + "ControlName" "RuiButton" + "classname" "ChallengeBtn" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "11" + + "pin_to_sibling" "ServerButton10" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "ServerButton12" + { + "ControlName" "RuiButton" + "classname" "ChallengeBtn" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "12" + + "pin_to_sibling" "ServerButton11" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "ServerButton13" + { + "ControlName" "RuiButton" + "classname" "ChallengeBtn" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "13" + + "pin_to_sibling" "ServerButton12" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "ServerButton14" + { + "ControlName" "RuiButton" + "classname" "ChallengeBtn" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "14" + + "pin_to_sibling" "ServerButton13" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "ServerButton15" + { + "ControlName" "RuiButton" + "classname" "ChallengeBtn" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "15" + + "pin_to_sibling" "ServerButton14" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "ServerButton16" + { + "ControlName" "RuiButton" + "classname" "ChallengeBtn" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "16" + + "pin_to_sibling" "ServerButton15" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "ServerButton17" + { + "ControlName" "RuiButton" + "classname" "ChallengeBtn" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "17" + + "pin_to_sibling" "ServerButton16" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "ServerButton18" + { + "ControlName" "RuiButton" + "classname" "ChallengeBtn" + "wide" "700" + "tall" "40" + "visible" "1" + "enabled" "1" + "style" "RuiButton" + "rui" "ui/tab_button.rpak" + "labelText" "" + "cursorVelocityModifier" "0.7" + "zpos" "1" + "scriptID" "18" + + "pin_to_sibling" "ServerButton17" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "ChallengeName0" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton0" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeName1" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton1" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeName2" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton2" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeName3" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton3" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeName4" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton4" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeName5" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton5" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeName6" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton6" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeName7" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton7" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeName8" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton8" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeName9" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton9" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeName10" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton10" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeName11" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton11" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeName12" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton12" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeName13" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton13" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeName14" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton14" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeName15" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton15" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeName16" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton16" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeName17" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton17" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeName18" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-15" + "ypos" "0" + "zpos" "0" + "wide" "630" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton18" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills0" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-210" + "ypos" "0" + "zpos" "0" + "textAlignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton0" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills1" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton1" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills2" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton2" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills3" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton3" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills4" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton4" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills5" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton5" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills6" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton6" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills7" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton7" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills8" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton8" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills9" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton9" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills10" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton10" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills11" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton11" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills12" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton12" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills13" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton13" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills14" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton14" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills15" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton15" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills16" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton16" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills17" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton17" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Kills18" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-215" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton18" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Score0" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textAlignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton0" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Score1" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton1" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Score2" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton2" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Score3" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton3" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Score4" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton4" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Score5" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton5" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Score6" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton6" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Score7" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton7" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Score8" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton8" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Score9" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton9" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Score10" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton10" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Score11" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton11" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Score12" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton12" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Score13" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton13" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Score14" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton14" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Score15" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton15" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Score16" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton16" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Score17" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton17" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "Score18" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-355" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "230" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton18" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeWeapon0" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textAlignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton0" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeWeapon1" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton1" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeWeapon2" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton2" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeWeapon3" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton3" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeWeapon4" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton4" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeWeapon5" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton5" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeWeapon6" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton6" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeWeapon7" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton7" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeWeapon8" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton8" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeWeapon9" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton9" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeWeapon10" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton10" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeWeapon11" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton11" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeWeapon12" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton12" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeWeapon13" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton13" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeWeapon14" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton14" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeWeapon15" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton15" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeWeapon16" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton16" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeWeapon17" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton17" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeWeapon18" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-560" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "27" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton18" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeAccuracy0" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textAlignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton0" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeAccuracy1" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton1" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeAccuracy2" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton2" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeAccuracy3" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton3" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeAccuracy4" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton4" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeAccuracy5" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton5" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeAccuracy6" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton6" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeAccuracy7" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton7" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeAccuracy8" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton8" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeAccuracy9" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton9" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeAccuracy10" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton10" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeAccuracy11" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton11" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeAccuracy12" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton12" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeAccuracy13" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton13" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeAccuracy14" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton14" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeAccuracy15" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton15" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeAccuracy16" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton16" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeAccuracy17" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton17" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + + "ChallengeAccuracy18" + { + "ControlName" "Label" + "labelText" "" + "xpos" "-700" + "ypos" "0" + "zpos" "0" + "textalignment" "center" + "wide" "110" + "zpos" "4" + "fontHeight" "30" + "classname" "ServerLabels" + + "pin_to_sibling" "ServerButton18" + "pin_corner_to_sibling" "LEFT" + "pin_to_sibling_corner" "LEFT" + } + } +} \ No newline at end of file diff --git a/resource/ui/menus/KillReplay/replayhud.menu b/resource/ui/menus/KillReplay/replayhud.menu index 103dd6e04..5cf6da2f6 100644 --- a/resource/ui/menus/KillReplay/replayhud.menu +++ b/resource/ui/menus/KillReplay/replayhud.menu @@ -42,7 +42,7 @@ "ControlName" "Label" "xpos" "-96" "ypos" "-100" - "wide" "25" + "wide" "60" "tall" "10" "labelText" "" "bgcolor_override" "200 200 200 220" @@ -59,7 +59,7 @@ "ControlName" "Label" "xpos" "5" "ypos" "0" - "wide" "60" + "wide" "130" "tall" "10" "labelText" "" "bgcolor_override" "200 200 200 220" @@ -76,7 +76,7 @@ "ControlName" "Label" "xpos" "5" "ypos" "0" - "wide" "100" + "wide" "205" "tall" "10" "labelText" "" "bgcolor_override" "200 200 200 220" @@ -88,22 +88,22 @@ "pin_to_sibling_corner" "TOP_RIGHT" } - "TopBar4" - { - "ControlName" "Label" - "xpos" "5" - "ypos" "0" - "wide" "1528" - "tall" "10" - "labelText" "" - "bgcolor_override" "200 200 200 220" - "visible" "1" - "paintbackground" "1" - - "pin_to_sibling" "TopBar3" - "pin_corner_to_sibling" "TOP_LEFT" - "pin_to_sibling_corner" "TOP_RIGHT" - } + // "TopBar4" + // { + // "ControlName" "Label" + // "xpos" "5" + // "ypos" "0" + // "wide" "1528" + // "tall" "10" + // "labelText" "" + // "bgcolor_override" "200 200 200 220" + // "visible" "1" + // "paintbackground" "1" + + // "pin_to_sibling" "TopBar3" + // "pin_corner_to_sibling" "TOP_LEFT" + // "pin_to_sibling_corner" "TOP_RIGHT" + // } "KillReplayDot" { @@ -129,7 +129,7 @@ "ControlName" "Label" "labelText" "Kill Replay" "font" "DefaultBold_41" - "allcaps" "1" + "allcaps" "1" "auto_wide_tocontents" "1" "tall" "60" "zpos" "10" @@ -143,6 +143,44 @@ "pin_to_sibling_corner" "TOP_LEFT" } + "ControlsText" + { + "ControlName" "Label" + "labelText" "Kill Replay" + "font" "DefaultBold_41" + "allcaps" "0" + "auto_wide_tocontents" "1" + "tall" "45" + "zpos" "10" + "fontHeight" "36" + "xpos" "-25" + "ypos" "-70" + "fgcolor_override" "255 255 255 255" + + "pin_to_sibling" "TopBar1" + "pin_corner_to_sibling" "BOTTOM_LEFT" + "pin_to_sibling_corner" "TOP_LEFT" + } + + "ControlsText2" + { + "ControlName" "Label" + "labelText" "Kill Replay" + "font" "DefaultBold_41" + "allcaps" "0" + "auto_wide_tocontents" "1" + "tall" "45" + "zpos" "10" + "fontHeight" "36" + "xpos" "-25" + "ypos" "-115" + "fgcolor_override" "255 255 255 255" + + "pin_to_sibling" "TopBar1" + "pin_corner_to_sibling" "BOTTOM_LEFT" + "pin_to_sibling_corner" "TOP_LEFT" + } + "PlayerCard" { "ControlName" "Label" diff --git a/vscripts/_utility.gnut b/vscripts/_utility.gnut index 98c30c544..07de5e5e5 100644 --- a/vscripts/_utility.gnut +++ b/vscripts/_utility.gnut @@ -1060,93 +1060,14 @@ enum eAttach void function LoadDiamond() { - printl( " " ) printl( "----------------------------" ) printl( " " ) - - // Draw a diamond of a random size and phase (of the moon) so it is easy to separate sections of logs. - int random_spread = RandomIntRange( 4, 7 ) - float random_fullness = RandomFloat( 2.0 ) - bool functionref( int, int ) compare_func - string msg - - if ( RandomFloat( 1.0 ) > 0.5 ) - { - compare_func = bool function( int a, int b ) - { - return a <= b - } - } - else - { - compare_func = bool function( int a, int b ) - { - return a >= b - } - } - - for ( int i = 0; i <= random_spread - 2; i++ ) - { - msg = "" - - for ( int p = 0; p <= random_spread - i; p++ ) - { - msg = msg + " " - } - - for ( int p = 0; p <= i * 2; p++ ) - { - if ( p == i * 2 || p == 0 ) - { - msg = msg + "*" - } - else - { - int an_int = int( i * random_fullness ) - - if ( compare_func( p, an_int ) ) - msg = msg + "*" - else - msg = msg + " " - } - } - - printl( msg ) - } - - for ( int i = random_spread - 1; i >= 0; i-- ) - { - msg = "" - - for ( int p = 0; p <= random_spread - i; p++ ) - { - msg = msg + " " - } - - - for ( int p = 0; p <= i * 2; p++ ) - { - if ( p == i * 2 || p == 0 ) - { - msg = msg + "*" - } - else - { - if ( compare_func( p, int( i * random_fullness ) ) ) - { - msg = msg + "*" - } - else - { - msg = msg + " " - } - } - } - - printl( msg ) - } - - printl( " " ) + printl( "____ _ ____ _ _ _ ____ ___ ____ ___ ____") + printl( "|___ | | | | | | [__ | |__| | |___") + printl( "| |___ |__| |_|_| ___] | | | | |___") + printl( " " ) + printl( FLOWSTATE_VERSION + " - Mantained by @CafeFPS and collaborators" ) + printl( " " ) printl( "----------------------------" ) printl( " " ) } diff --git a/vscripts/cl_mapspawn.gnut b/vscripts/cl_mapspawn.gnut index 4fec7a8a2..9c6d3290a 100644 --- a/vscripts/cl_mapspawn.gnut +++ b/vscripts/cl_mapspawn.gnut @@ -130,7 +130,7 @@ void function ClientCodeCallback_MapSpawn() SV_CL_Shared_Init() //for custom ui/textures - //RequestPakFile( "aimtrainer" ) + RequestPakFile( "ui_flowstate" ) } diff --git a/vscripts/mp/levels/mp_rr_desertlands_common.nut b/vscripts/mp/levels/mp_rr_desertlands_common.nut index a0896792d..ae24f6845 100644 --- a/vscripts/mp/levels/mp_rr_desertlands_common.nut +++ b/vscripts/mp/levels/mp_rr_desertlands_common.nut @@ -58,7 +58,7 @@ void function Desertlands_MapInit_Common() if ( GetMapName() == "mp_rr_desertlands_mu3" ) return - printt( "Desertlands_MapInit_Common" ) + //printt( "Desertlands_MapInit_Common" ) MapZones_RegisterDataTable( $"datatable/map_zones/zones_mp_rr_desertlands_64k_x_64k.rpak" ) diff --git a/vscripts/mp/sh_desertlands_train.nut b/vscripts/mp/sh_desertlands_train.nut index eebf5b8b9..ed8b28f39 100644 --- a/vscripts/mp/sh_desertlands_train.nut +++ b/vscripts/mp/sh_desertlands_train.nut @@ -229,15 +229,7 @@ void function DesertlandsTrain_Init() { entity station = GetEntArrayByScriptName( "train_track_node_station" ).getrandom() - printl(" |////////| |/////////| |//////L") - printl(" _____ |////////| _____ TRAIN INIT _____ |////////>") - printl("------------------------------------------------------") - printl(" ") - printl(" - - - TRAIN SPAWNING AT: "+station.kv.script_noteworthy + " - - -") - printl(" ") - printl(" |////////| |/////////| |//////L") - printl(" _____ |////////| _____ TRAIN INIT _____ |////////>") - printl("------------------------------------------------------") + printl("TRAIN SPAWNING AT: " + station.kv.script_noteworthy + ".") // Get all cars array cars = []; diff --git a/vscripts/sh_assets.nut b/vscripts/sh_assets.nut index 39fcf77dc..0911c4aa6 100644 --- a/vscripts/sh_assets.nut +++ b/vscripts/sh_assets.nut @@ -226,17 +226,17 @@ file.range_assets ["mdl/extras_1"] <- [$"mdl/error.rmdl",$"mdl/dev/empty_model.r file.range_assets ["mdl/extras_2"] <- [$"mdl/vehicles_r2/spacecraft/draconis/draconis_landed_hero.rmdl",$"mdl/metal_scraps/scrap_metal04.rmdl",$"mdl/robotics_r2/turret_plasma/plasma_turret_pc_1.rmdl",$"mdl/robotics_r2/turret_plasma/plasma_turret_pc_2.rmdl",$"mdl/robotics_r2/turret_plasma/plasma_turret_pc_3.rmdl",$"mdl/s2s/s2s_bridge_glass_shard.rmdl",$"mdl/robots/drone_air_attack/drone_attack_pc_4.rmdl",$"mdl/robots/drone_air_attack/drone_attack_pc_3.rmdl",$"mdl/robotics_r5/tick_loot/tick_loot_pcs_body_01.rmdl",$"mdl/robotics_r5/tick_loot/tick_loot_pcs_panel_01.rmdl",$"mdl/robotics_r5/tick_loot/tick_loot_pcs_leg_01.rmdl",$"mdl/rubble/concrete_chunk_med_01_body.rmdl",$"mdl/backwater/rock_set_backwater_02.rmdl"] foreach(string key, array assets in file.we_assets) { - printl("WE SECTION: " + key) + //printl("WE SECTION: " + key) file.we_sections.append(key) } foreach(string key, array assets in file.kc_assets) { - printl("KC SECTION: " + key) + //printl("KC SECTION: " + key) file.kc_sections.append(key) } foreach(string key, array assets in file.range_assets) { - printl("FIRING RANGE SECTION: " + key) + //printl("FIRING RANGE SECTION: " + key) file.range_sections.append(key) } diff --git a/vscripts/sh_assets_party_crasher_tworpaks.nut b/vscripts/sh_assets_party_crasher_tworpaks.nut deleted file mode 100644 index 2b34efdc7..000000000 --- a/vscripts/sh_assets_party_crasher_tworpaks.nut +++ /dev/null @@ -1,541 +0,0 @@ -struct { - table > we_assets = {} - table > kc_assets = {} - table > all_assets = {} - table > range_assets = {} - // manually written, might not work lmao - array we_sections = [] - array kc_sections = [] - array all_sections = [] - array range_sections = [] -} file; - -global function GetMapAssets -global function GetAssets -#if !UI -global function GetSections -#endif -global function GetMapSections -global function ShAssets_Init - -#if CLIENT -global function UpdateUIMap -global function Cl_MapEditor_Init -#endif - -#if SERVER -global function _MapEditor_Init -#endif - -#if SERVER || CLIENT -global function Sh_MapEditor_Init -#endif - -void function ShAssets_Init() { -array base_models = [$"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl", $"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl", $"mdl/Humans/class/medium/combat_dummie_medium.rmdl"] -file.we_assets ["mdl/base_models"] <- base_models -file.kc_assets ["mdl/base_models"] <- base_models -file.all_assets ["mdl/base_models"] <- base_models -file.range_assets ["mdl/base_models"] <- base_models - -// WORLDS EDGE -file.we_assets ["mdl/foliage_1"] <- [$"mdl/foliage/desertlands_alien_tree_leaf_large_01.rmdl",$"mdl/foliage/desertlands_alien_tree_large_root_02.rmdl",$"mdl/foliage/desertlands_alien_tree_large_root_01.rmdl",$"mdl/foliage/roots_ground_desertlands_01.rmdl",$"mdl/foliage/plant_desert_yucca_01.rmdl",$"mdl/foliage/brute_ivy_01.rmdl",$"mdl/foliage/brute_ivy_02.rmdl",$"mdl/foliage/plant_tobacco_large_03.rmdl",$"mdl/foliage/plant_tobacco_large_01.rmdl",$"mdl/foliage/plant_tobacco_large_02.rmdl",$"mdl/foliage/plant_agave_01.rmdl",$"mdl/foliage/fern_ground_dark_03.rmdl",$"mdl/foliage/fern_ground_dark_01.rmdl",$"mdl/foliage/fern_ground_dark_02.rmdl",$"mdl/foliage/desertlands_alien_tree_large_root_tendrils.rmdl",$"mdl/foliage/desertlands_alien_tree_02.rmdl",$"mdl/foliage/desertlands_alien_tree_large_01.rmdl",$"mdl/foliage/plant_fern_small_02.rmdl",$"mdl/foliage/tree_acacia_small_02.rmdl",$"mdl/foliage/ivy_green_large_hanging_02.rmdl",$"mdl/foliage/icelandic_ground_plant_01.rmdl",$"mdl/foliage/ground_plant_desertlands_01_group_01.rmdl",$"mdl/foliage/ground_plant_desertlands_01.rmdl",$"mdl/foliage/ground_plant_large.rmdl",$"mdl/foliage/plant_tropical_ground_leafy_01.rmdl"] -file.we_assets ["mdl/foliage_2"] <- [$"mdl/foliage/brute_small_tiger_plant.rmdl",$"mdl/foliage/brute_small_tiger_plant_02.rmdl",$"mdl/foliage/grass_luscious_clump_02_flower.rmdl",$"mdl/foliage/icelandic_ground_plant_02.rmdl",$"mdl/foliage/holy_e_ear_plant.rmdl",$"mdl/foliage/foliage_ground_plants.rmdl",$"mdl/foliage/foliage_ground_plants_desertlands.rmdl",$"mdl/foliage/tree_brush_yellow_large_03.rmdl",$"mdl/foliage/tree_acacia_small_03.rmdl",$"mdl/foliage/tree_acacia_small_01.rmdl",$"mdl/foliage/plant_chinese_evergreen_small_nexus_02.rmdl",$"mdl/foliage/tree_brush_yellow_large_01.rmdl",$"mdl/foliage/moss_green_hanging_large_01_dark.rmdl",$"mdl/foliage/moss_green_hanging_large_02_dark.rmdl",$"mdl/foliage/moss_green_hanging_large_04_dark.rmdl",$"mdl/foliage/leaves_ground_spread_01.rmdl",$"mdl/foliage/plant_bush_thorny_leaf_small.rmdl",$"mdl/foliage/lilypad_clusters_05_flowing.rmdl",$"mdl/foliage/plant_grass_dead_tall_01.rmdl",$"mdl/foliage/tree_brush_yellow_large_02.rmdl",$"mdl/foliage/mendoko_bulb_plant_low.rmdl",$"mdl/foliage/desertlands_alien_tree_leaf_small_01.rmdl",$"mdl/foliage/icelandic_ground_plant_03.rmdl",$"mdl/foliage/desertlands_alien_tree_leaf_small_02.rmdl",$"mdl/foliage/icelandic_moss_grass_02.rmdl"] -file.we_assets ["mdl/foliage_3"] <- [$"mdl/foliage/icelandic_moss_grass_01.rmdl",$"mdl/foliage/grass_burnt_yellow_03.rmdl",$"mdl/foliage/grass_burnt_long_02.rmdl",$"mdl/foliage/grass_icelandic_02.rmdl",$"mdl/foliage/grass_icelandic_03.rmdl",$"mdl/foliage/grass_icelandic_04.rmdl",$"mdl/foliage/grass_icelandic_01.rmdl",$"mdl/foliage/ground_plant_beacon_01.rmdl",$"mdl/foliage/ground_plant_beacon_03.rmdl"] -file.we_assets ["mdl/desertlands_1"] <- [$"mdl/desertlands/indust_struct_gondola_wires_02.rmdl",$"mdl/desertlands/indust_struct_gondola_wires_04.rmdl",$"mdl/desertlands/indust_struct_gondola_wires_01.rmdl",$"mdl/desertlands/indust_struct_cooling_tower_exterior_04.rmdl",$"mdl/desertlands/industrial_struct_bldg_02e.rmdl",$"mdl/desertlands/industrial_struct_bldg_05d.rmdl",$"mdl/desertlands/indust_struct_cooling_tower_support_01.rmdl",$"mdl/desertlands/indust_struct_gondola_platform_support_01.rmdl",$"mdl/desertlands/industrial_cargo_container_small_02.rmdl",$"mdl/desertlands/desertlands_train_track_wires_02.rmdl",$"mdl/desertlands/desertlands_train_track_wires_01.rmdl",$"mdl/desertlands/industrial_window_frame_ceiling_curved_01.rmdl",$"mdl/desertlands/industrial_metal_frame_256x144_02.rmdl",$"mdl/desertlands/industrial_metal_frame_wall_256x144_06.rmdl",$"mdl/desertlands/industrial_metal_frame_256x144_01.rmdl",$"mdl/desertlands/industrial_window_frame_ceiling_curved_02.rmdl",$"mdl/desertlands/desertlands_fuel_tower_scaff_01.rmdl",$"mdl/desertlands/industrial_metal_base_support_01.rmdl",$"mdl/desertlands/industrial_metal_base_support_02.rmdl",$"mdl/desertlands/indust_struct_cooling_tower_doorway_01.rmdl",$"mdl/desertlands/desertlands_cafeteria_buffet_01.rmdl",$"mdl/desertlands/industrial_window_frame_wall_curved_01.rmdl",$"mdl/desertlands/industrial_door_frame_trim_192_01.rmdl",$"mdl/desertlands/industrial_window_wall_192x128_cover24_01.rmdl",$"mdl/desertlands/industrial_door_frame_trim_160_01.rmdl"] -file.we_assets ["mdl/desertlands_2"] <- [$"mdl/desertlands/industrial_door_frame_160x128_01.rmdl",$"mdl/desertlands/industrial_door_frame_trim_128_02.rmdl",$"mdl/desertlands/construction_bldg_wood_board_01.rmdl",$"mdl/desertlands/industrial_window_wall_128x128_cover24_01.rmdl",$"mdl/desertlands/industrial_window_wall_128x128_cover40_01.rmdl",$"mdl/desertlands/industrial_metal_arm_support_02.rmdl",$"mdl/desertlands/desertlands_cafeteria_table_01.rmdl",$"mdl/desertlands/desertlands_lobby_double_doorframe_01.rmdl",$"mdl/desertlands/desertlands_lobby_double_doorframe_02.rmdl",$"mdl/desertlands/industrial_window_frame_128x80x16.rmdl",$"mdl/desertlands/desertlands_convenience_store_sign_01_rui.rmdl",$"mdl/desertlands/desertlands_fuel_tower_hose_01.rmdl",$"mdl/desertlands/industrial_door_frame_trim_128_01.rmdl",$"mdl/desertlands/industrial_door_frame_128x128_02.rmdl",$"mdl/desertlands/desertlands_cafeteria_table_02.rmdl",$"mdl/desertlands/industrial_door_frame_128x128_01.rmdl",$"mdl/desertlands/industrial_window_frame_128x80x16_int.rmdl",$"mdl/desertlands/desertlands_lobby_doorframe.rmdl",$"mdl/desertlands/desertlands_lobby_doorframe_02.rmdl",$"mdl/desertlands/industrial_window_frame_64x80x16.rmdl",$"mdl/desertlands/industrial_window_frame_64x80x8.rmdl",$"mdl/desertlands/industrial_metal_arm_support_01.rmdl",$"mdl/desertlands/industrial_window_frame_64x68x16.rmdl",$"mdl/desertlands/industrial_window_frame_64x80x16_int.rmdl",$"mdl/desertlands/industrial_window_frame_64x80x8_int.rmdl"] -file.we_assets ["mdl/desertlands_3"] <- [$"mdl/desertlands/desertlands_standing_cafeteria_table_01.rmdl",$"mdl/desertlands/construction_bldg_wood_debris_01.rmdl",$"mdl/desertlands/desertlands_trash_bin_01.rmdl",$"mdl/desertlands/desertlands_lobby_mailbox_02.rmdl",$"mdl/desertlands/industrial_window_frame_64x68x16_int.rmdl",$"mdl/desertlands/desertlands_standing_cafeteria_table_02.rmdl",$"mdl/desertlands/industrial_frame_track_01.rmdl",$"mdl/desertlands/desertlands_lobby_mailbox_01.rmdl",$"mdl/desertlands/industrial_support_beam_16x144_vertical_corner.rmdl",$"mdl/desertlands/desertlands_lobby_wall_art_01.rmdl",$"mdl/desertlands/desertlands_lobby_mailbox_03.rmdl",$"mdl/desertlands/construction_fold_sign_01.rmdl",$"mdl/desertlands/desertlands_lobby_couch_03.rmdl",$"mdl/desertlands/industrial_support_beam_16x144_vertical.rmdl",$"mdl/desertlands/industrial_support_beam_16x144_filler.rmdl",$"mdl/desertlands/railing_metal_dirty_64_panel_01.rmdl",$"mdl/desertlands/industrial_support_beam_16x64_vertical_corner.rmdl",$"mdl/desertlands/industrial_support_beam_8x144_filler.rmdl",$"mdl/desertlands/desertlands_lobby_couch_04.rmdl",$"mdl/desertlands/guard_rail_painted_metal_dirty_01.rmdl",$"mdl/desertlands/guard_rail_painted_metal_dirty_01_caution.rmdl",$"mdl/desertlands/railing_metal_dirty_64x24_panel_01.rmdl",$"mdl/desertlands/industrial_support_beam_16x64_vertical.rmdl",$"mdl/desertlands/desertlands_ceiling_tile_01.rmdl",$"mdl/desertlands/industrial_support_beam_16x32_vertical_corner.rmdl"] -file.we_assets ["mdl/desertlands_4"] <- [$"mdl/desertlands/desertlands_lobby_wall_art_02.rmdl",$"mdl/desertlands/industrial_support_beam_16x32_vertical.rmdl",$"mdl/desertlands/industrial_support_beam_16x16_vertical_corner.rmdl",$"mdl/desertlands/industrial_support_beam_vertical_corner_cap.rmdl",$"mdl/desertlands/industrial_support_beam_16x16_vertical.rmdl",$"mdl/desertlands/construction_stacker_cone_dirty_01.rmdl",$"mdl/desertlands/railing_post_metal_dirty_01.rmdl",$"mdl/desertlands/desertlands_napkin_holder_01.rmdl",$"mdl/desertlands/mobile_vehicle_01_handle_01.rmdl",$"mdl/desertlands/industrial_struct_bldg_05a.rmdl",$"mdl/desertlands/desrtlands_icicles_05.rmdl",$"mdl/desertlands/desrtlands_icicles_02.rmdl",$"mdl/desertlands/desrtlands_icicles_06.rmdl",$"mdl/desertlands/desrtlands_icicles_01.rmdl",$"mdl/desertlands/desrtlands_icicles_03.rmdl",$"mdl/desertlands/desrtlands_icicles_04.rmdl",$"mdl/desertlands/desertlands_building_ice_04.rmdl",$"mdl/desertlands/desertlands_building_ice_05.rmdl",$"mdl/desertlands/desertlands_building_ice_03.rmdl",$"mdl/desertlands/desertlands_building_ice_06.rmdl",$"mdl/desertlands/desertlands_building_ice_02.rmdl",$"mdl/desertlands/desertlands_ceiling_vent_01.rmdl",$"mdl/desertlands/construction_bldg_tarp_01.rmdl",$"mdl/desertlands/construction_bldg_tarp_02.rmdl",$"mdl/desertlands/city_pipe_frame_medium_128.rmdl"] -file.we_assets ["mdl/desertlands_5"] <- [$"mdl/desertlands/city_pipe_grate_medium_128.rmdl",$"mdl/desertlands/desertlands_city_slanted_building_01_wall_corner_Lshape.rmdl",$"mdl/desertlands/desertlands_large_liquid_tank_ring_01.rmdl",$"mdl/desertlands/desertlands_corner_cafe_mod_int_frame.rmdl",$"mdl/desertlands/city_store_front_insideframe_05.rmdl",$"mdl/desertlands/city_store_front_insideframe_06.rmdl",$"mdl/desertlands/desertlands_corner_lrg_box_windframe_01.rmdl",$"mdl/desertlands/road_plate_metal_192_double_01.rmdl",$"mdl/desertlands/desertlands_corner_smll_box_windframe_02.rmdl",$"mdl/desertlands/desertlands_corner_smll_box_windframe_01.rmdl",$"mdl/desertlands/road_plate_metal_128_single_01.rmdl",$"mdl/desertlands/road_plate_metal_64_single_01.rmdl",$"mdl/desertlands/desertlands_ice_explosion_mod_04.rmdl",$"mdl/desertlands/desertlands_ice_mod_04.rmdl",$"mdl/desertlands/desertlands_ice_explosion_mod_02.rmdl",$"mdl/desertlands/desertlands_ice_explosion_mod_01.rmdl",$"mdl/desertlands/desertlands_ice_explosion_mod_03.rmdl",$"mdl/desertlands/desertlands_ice_mod_01.rmdl",$"mdl/desertlands/desertlands_ice_mod_03.rmdl",$"mdl/desertlands/desertlands_plantroom_rack_01_no_lights.rmdl",$"mdl/desertlands/desertlands_plantroom_floor_piece_01.rmdl",$"mdl/desertlands/desertlands_apartments_planter_02.rmdl",$"mdl/desertlands/desertlands_train_station_turnstile_01.rmdl",$"mdl/desertlands/desertlands_train_station_interior_light_03.rmdl",$"mdl/desertlands/desertlands_serving_counter_01.rmdl"] -file.we_assets ["mdl/desertlands_6"] <- [$"mdl/desertlands/desertlands_city_slanted_building_01_wall_corner_Lshape_end.rmdl",$"mdl/desertlands/industrial_crane_yellow_donut_01.rmdl",$"mdl/desertlands/desertlands_city_slanted_building_01_wall_128.rmdl",$"mdl/desertlands/desertlands_hr_small_apt_a_03.rmdl",$"mdl/desertlands/desertlands_city_slanted_building_01_wall_64.rmdl",$"mdl/desertlands/desertlands_hr_small_apt_a_01.rmdl",$"mdl/desertlands/desertlands_city_slanted_building_01_wall_64_end_l.rmdl",$"mdl/desertlands/highrise_square_top_point.rmdl",$"mdl/desertlands/desertlands_apartments_planter_03.rmdl",$"mdl/desertlands/highrise_rectangle_base.rmdl",$"mdl/desertlands/industrial_struct_bldg_03.rmdl",$"mdl/desertlands/industrial_struct_bldg_05.rmdl",$"mdl/desertlands/desertlands_plantroom_rack_03.rmdl",$"mdl/desertlands/desertlands_barrier_concrete_128_01.rmdl",$"mdl/desertlands/desertlands_train_track_sign_01.rmdl",$"mdl/desertlands/lightpole_desertlands_city_01.rmdl",$"mdl/desertlands/industrial_metal_frame_wall_128x144_01.rmdl",$"mdl/desertlands/highrise_rectangle_slice_01.rmdl",$"mdl/desertlands/highrise_rectangle_top_01.rmdl",$"mdl/desertlands/highrise_square_slice_05.rmdl",$"mdl/desertlands/highrise_square_top_02.rmdl",$"mdl/desertlands/indust_struct_cooling_tower_curv_ramp_01.rmdl",$"mdl/desertlands/industrial_window_shutter_128x80.rmdl",$"mdl/desertlands/industrial_window_shutter_64x80.rmdl",$"mdl/desertlands/industrial_window_shutter_64x68.rmdl"] -file.we_assets ["mdl/desertlands_7"] <- [$"mdl/desertlands/industrial_cargo_container_large_01.rmdl",$"mdl/desertlands/highrise_square_slice_11.rmdl",$"mdl/desertlands/icelandic_moss_mod_01.rmdl",$"mdl/desertlands/icelandic_moss_mod_04.rmdl",$"mdl/desertlands/icelandic_moss_mod_02.rmdl",$"mdl/desertlands/highrise_square_slice_01.rmdl",$"mdl/desertlands/highrise_square_slice_10.rmdl",$"mdl/desertlands/highrise_square_slice_09.rmdl",$"mdl/desertlands/highrise_square_top_01.rmdl",$"mdl/desertlands/mobile_vehicle_01_wheel_01.rmdl",$"mdl/desertlands/mobile_vehicle_01_wheel_02.rmdl",$"mdl/desertlands/research_station_roof_rail_01.rmdl",$"mdl/desertlands/research_station_dome_building_floor_01.rmdl",$"mdl/desertlands/research_station_dome_building_floor_02.rmdl",$"mdl/desertlands/research_station_big_building_floor_01.rmdl",$"mdl/desertlands/desertlands_fuel_tower_center_tank_01.rmdl",$"mdl/desertlands/highrise_square_shell_box_top.rmdl",$"mdl/desertlands/indust_struct_gondola_wheel_01.rmdl",$"mdl/desertlands/desertlands_train_station_sign_02.rmdl",$"mdl/desertlands/construction_bldg_trash_shoot_01.rmdl",$"mdl/desertlands/highrise_square_shell_box_bottom.rmdl",$"mdl/desertlands/indust_struct_gondola_wheel_02.rmdl",$"mdl/desertlands/fence_metal_dirty_64_01.rmdl",$"mdl/desertlands/research_station_building_building_floor_03.rmdl",$"mdl/desertlands/research_station_small_building_floor_01.rmdl"] -file.we_assets ["mdl/desertlands_8"] <- [$"mdl/desertlands/desertlands_city_train_station_01_arch.rmdl",$"mdl/desertlands/railing_stairs_metal_dirty_48_01.rmdl",$"mdl/desertlands/city_store_front_awning.rmdl",$"mdl/desertlands/desertlands_trainyard_sign_01.rmdl",$"mdl/desertlands/construction_bldg_platform_05_corner.rmdl",$"mdl/desertlands/railing_metal_dirty_64_01.rmdl",$"mdl/desertlands/research_station_small_building_floor_01b.rmdl",$"mdl/desertlands/industrial_struct_bldg_01.rmdl",$"mdl/desertlands/research_station_big_building_railing_01.rmdl",$"mdl/desertlands/industrial_struct_bldg_02b.rmdl",$"mdl/desertlands/railing_metal_dirty_64x24_01.rmdl",$"mdl/desertlands/railing_stairs_metal_dirty_24_01.rmdl",$"mdl/desertlands/desertlands_train_track_straight_512.rmdl",$"mdl/desertlands/construction_bldg_platform_01.rmdl",$"mdl/desertlands/highrise_square_shell_box_top_a.rmdl",$"mdl/desertlands/highrise_square_shell_box_top_b.rmdl",$"mdl/desertlands/industrial_cargo_container_320_01.rmdl",$"mdl/desertlands/industrial_cargo_container_320_01_open.rmdl",$"mdl/desertlands/desertlands_train_station_interior_light_01.rmdl",$"mdl/desertlands/desertlands_train_station_interior_light_02.rmdl",$"mdl/desertlands/highrise_corner_tall_c.rmdl",$"mdl/desertlands/industrial_cargo_container_small_01.rmdl",$"mdl/desertlands/indust_struct_circular_building_02_support.rmdl",$"mdl/desertlands/desertlands_city_slanted_building_01_wall_wedge.rmdl",$"mdl/desertlands/desertlands_fuel_tower_pill_tank_med_01.rmdl"] -file.we_assets ["mdl/desertlands_9"] <- [$"mdl/desertlands/highrise_square_shell_box_bottom_b.rmdl",$"mdl/desertlands/desertlands_city_slanted_building_01_wall_pillar_64.rmdl",$"mdl/desertlands/highrise_square_shell_box_bottom_a.rmdl",$"mdl/desertlands/construction_bldg_platform_04_corner.rmdl",$"mdl/desertlands/construction_bldg_platform_02.rmdl",$"mdl/desertlands/desertlands_train_track_straight_256.rmdl",$"mdl/desertlands/desertlands_city_slanted_building_01_slice_01.rmdl",$"mdl/desertlands/desertlands_city_slanted_building_01_slice_02.rmdl",$"mdl/desertlands/highrise_square_block_02.rmdl",$"mdl/desertlands/highrise_corner_tall_a.rmdl",$"mdl/desertlands/highrise_corner_tall_b.rmdl",$"mdl/desertlands/desertlands_train_track_straight_120.rmdl",$"mdl/desertlands/desertlands_train_track_straight_96.rmdl",$"mdl/desertlands/highrise_square_block_01.rmdl",$"mdl/desertlands/research_station_shelf_02.rmdl",$"mdl/desertlands/highrise_square_block_03.rmdl",$"mdl/desertlands/highrise_panel_air_unit_02.rmdl",$"mdl/desertlands/highrise_panel_air_unit_01.rmdl",$"mdl/desertlands/construction_bldg_platform_03.rmdl",$"mdl/desertlands/construction_bldg_wall_01.rmdl",$"mdl/desertlands/desertlands_train_station_interior_light_05.rmdl",$"mdl/desertlands/desertlands_train_station_interior_light_04.rmdl",$"mdl/desertlands/industrial_metal_frame_wall_256x144_02.rmdl",$"mdl/desertlands/industrial_metal_frame_wall_256x144_01.rmdl",$"mdl/desertlands/industrial_metal_frame_wall_256x144_04.rmdl"] -file.we_assets ["mdl/desertlands_10"] <- [$"mdl/desertlands/desertlands_train_track_straight_16.rmdl",$"mdl/desertlands/highrise_square_shell_box_128_c.rmdl",$"mdl/desertlands/industrial_cargo_container_small_03.rmdl",$"mdl/desertlands/highrise_square_shell_box_128_b.rmdl",$"mdl/desertlands/desertlands_apartments_rug_02.rmdl",$"mdl/desertlands/industrial_metal_frame_wall_192x144_03.rmdl",$"mdl/desertlands/industrial_metal_frame_wall_192x144_01.rmdl",$"mdl/desertlands/desertlands_lobby_couch_05.rmdl",$"mdl/desertlands/wall_city_barred_concrete_192_01.rmdl",$"mdl/desertlands/highrise_square_shell_box_128_a.rmdl",$"mdl/desertlands/wall_city_panel_concrete_192_01.rmdl",$"mdl/desertlands/construction_bldg_column_stack_01.rmdl",$"mdl/desertlands/desertlands_lobby_desk_01.rmdl",$"mdl/desertlands/wall_city_corner_concrete_64_02.rmdl",$"mdl/desertlands/research_station_support_beam_01.rmdl",$"mdl/desertlands/wall_city_corner_concrete_64_01.rmdl",$"mdl/desertlands/fence_large_concrete_metal_dirty_192_01.rmdl",$"mdl/desertlands/industrial_metal_frame_wall_128x144_04.rmdl",$"mdl/desertlands/wall_city_panel_concrete_128_01.rmdl",$"mdl/desertlands/construction_bldg_column_01.rmdl",$"mdl/desertlands/indust_struct_gondola_platform_fence_01.rmdl",$"mdl/desertlands/fence_large_concrete_metal_dirty_128_01.rmdl",$"mdl/desertlands/desertlands_cafeteria_light_01.rmdl",$"mdl/desertlands/desertlands_apartments_rug_01.rmdl",$"mdl/desertlands/desertlands_apartments_planter_01.rmdl"] -file.we_assets ["mdl/desertlands_11"] <- [$"mdl/desertlands/highrise_corner_128_a.rmdl",$"mdl/desertlands/desertlands_train_station_sign_01.rmdl",$"mdl/desertlands/desertlands_sign_01.rmdl",$"mdl/desertlands/industrial_metal_frame_wall_64x144_01.rmdl",$"mdl/desertlands/industrial_metal_frame_wall_64x144_02.rmdl",$"mdl/desertlands/wall_city_panel_concrete_64_01.rmdl",$"mdl/desertlands/fence_large_concrete_metal_dirty_64_01.rmdl",$"mdl/desertlands/desertlands_lobby_sign_01.rmdl",$"mdl/desertlands/city_steps_metal_grate_double_128_01.rmdl",$"mdl/desertlands/research_station_support_beam_02.rmdl",$"mdl/desertlands/city_step_up_grate_128_01.rmdl",$"mdl/desertlands/desertlands_lobby_water_dispenser_01.rmdl",$"mdl/desertlands/industrial_metal_frame_wall_32x144_01.rmdl",$"mdl/desertlands/city_steps_metal_grate_single_128_01.rmdl",$"mdl/desertlands/wall_city_pillar_45_concrete_01.rmdl",$"mdl/desertlands/city_steps_metal_grate_double_64_01.rmdl",$"mdl/desertlands/wall_city_pillar_concrete_01.rmdl",$"mdl/desertlands/curb_parking_concrete_destroyed_01.rmdl",$"mdl/desertlands/research_station_bench_01.rmdl",$"mdl/desertlands/railing_metal_dirty_64_02.rmdl",$"mdl/desertlands/desertlands_cafeteria_buffet_light_01.rmdl",$"mdl/desertlands/desertlands_lobby_side_table_01.rmdl",$"mdl/desertlands/desertlands_lobby_light_01.rmdl",$"mdl/desertlands/indust_struct_gondola_platform_sign_01.rmdl",$"mdl/desertlands/desertlands_train_station_turnstile_02.rmdl"] -file.we_assets ["mdl/desertlands_12"] <- [$"mdl/desertlands/desertlands_train_station_sign_04.rmdl",$"mdl/desertlands/desertlands_train_station_sign_03.rmdl",$"mdl/desertlands/desertlands_city_slanted_building_01_exterior.rmdl",$"mdl/desertlands/desertlands_train_track_split_01.rmdl",$"mdl/desertlands/desertlands_train_track_split_03.rmdl",$"mdl/desertlands/desertlands_train_track_ytrack_r2904.rmdl",$"mdl/desertlands/desertlands_train_track_split_02.rmdl",$"mdl/desertlands/desertlands_train_track_curve_r6680.rmdl",$"mdl/desertlands/desertlands_train_track_curve_r6392.rmdl",$"mdl/desertlands/desertlands_train_track_curve_r4472.rmdl",$"mdl/desertlands/desertlands_train_track_curve_r4456.rmdl",$"mdl/desertlands/desertlands_train_track_curve_r4440.rmdl",$"mdl/desertlands/desertlands_hr_small_apt_a_05.rmdl",$"mdl/desertlands/desertlands_hr_small_apt_a_06.rmdl",$"mdl/desertlands/desertlands_hr_small_apt_a_04.rmdl",$"mdl/desertlands/desertlands_train_track_curve_r4048.rmdl",$"mdl/desertlands/desertlands_train_track_curve_r4457.rmdl",$"mdl/desertlands/desertlands_hr_small_apt_roof.rmdl",$"mdl/desertlands/desertlands_train_track_curve_r3032.rmdl",$"mdl/desertlands/desertlands_train_track_curve_r2992.rmdl",$"mdl/desertlands/desertlands_train_track_curve_r2976.rmdl",$"mdl/desertlands/desertlands_train_track_curve_r2968.rmdl",$"mdl/desertlands/desertlands_train_track_curve_r2904.rmdl",$"mdl/desertlands/desertlands_train_track_curve_r2824.rmdl",$"mdl/desertlands/desertlands_train_track_straight_512_open.rmdl"] -file.we_assets ["mdl/desertlands_13"] <- [$"mdl/desertlands/city_step_up_grate_64_01.rmdl",$"mdl/desertlands/desertlands_big_drill_intact_01.rmdl",$"mdl/desertlands/desertlands_big_drill_intact_top_01.rmdl",$"mdl/desertlands/desertland_big_drill_intact_leg_01.rmdl",$"mdl/desertlands/desertland_big_drill_intact_leg_02.rmdl",$"mdl/desertlands/desertlands_train_track_bridge_01.rmdl",$"mdl/desertlands/desertlands_lobby_couch_01.rmdl",$"mdl/desertlands/indust_struct_circular_building_02.rmdl",$"mdl/desertlands/fissure_catwalk_support.rmdl",$"mdl/desertlands/desertland_big_drill_capsule_large_01.rmdl",$"mdl/desertlands/indust_struct_circular_building.rmdl",$"mdl/desertlands/industrial_crane_yellow_01_c.rmdl",$"mdl/desertlands/desertland_big_drill_capsule_large_burst_01.rmdl",$"mdl/desertlands/desertland_big_drill_capsule_small_01.rmdl",$"mdl/desertlands/desertlands_train_track_support_01.rmdl",$"mdl/desertlands/desertlands_large_liquid_tank_01.rmdl",$"mdl/desertlands/research_station_stairs_corner_02.rmdl",$"mdl/desertlands/desertlands_big_drill_frame_01.rmdl",$"mdl/desertlands/research_station_corner_connector_01_ext.rmdl",$"mdl/desertlands/industrial_crane_yellow_02_a.rmdl",$"mdl/desertlands/industrial_crane_yellow_01_a.rmdl",$"mdl/desertlands/industrial_crane_yellow_01_b.rmdl",$"mdl/desertlands/desertlands_train_flatbed_01.rmdl",$"mdl/desertlands/island_refinery_01_tank.rmdl",$"mdl/desertlands/industrial_assembly_smoke_stack_01.rmdl"] -file.we_assets ["mdl/desertlands_14"] <- [$"mdl/desertlands/research_station_corner_connector_01c_ext.rmdl",$"mdl/desertlands/research_station_corner_connector_01b_ext.rmdl",$"mdl/desertlands/research_station_container_dome_01.rmdl",$"mdl/desertlands/desertlands_train_track_magnetic_beam_01.rmdl",$"mdl/desertlands/industrial_drill_01_support_sm_01.rmdl",$"mdl/desertlands/desertlands_plantroom_ceiling_rack_01.rmdl",$"mdl/desertlands/research_station_server_01.rmdl",$"mdl/desertlands/desertlands_train_passenger_cab_02.rmdl",$"mdl/desertlands/research_station_stairs_bend_01.rmdl",$"mdl/desertlands/research_station_server_wire_canopy_01.rmdl",$"mdl/desertlands/research_station_stairs_big_building_01.rmdl",$"mdl/desertlands/desertlands_lobby_couch_02.rmdl",$"mdl/desertlands/mobile_vehicle_01_seat_01.rmdl",$"mdl/desertlands/research_station_straight_connector_01_ext.rmdl",$"mdl/desertlands/research_station_server_wire_rack_01.rmdl",$"mdl/desertlands/research_station_container_big_01.rmdl",$"mdl/desertlands/industrial_drill_01_support_02.rmdl",$"mdl/desertlands/research_station_stairs_straight_02.rmdl",$"mdl/desertlands/research_station_storage_shelf_01.rmdl",$"mdl/desertlands/mobile_vehicle_01_console_01.rmdl",$"mdl/desertlands/desertlands_city_train_station_panel_01.rmdl",$"mdl/desertlands/desertlands_plantroom_rack_01.rmdl",$"mdl/desertlands/research_station_container_small_01.rmdl",$"mdl/desertlands/desertlands_plantroom_rack_02.rmdl",$"mdl/desertlands/desertlands_vending_machine_01.rmdl"] -file.we_assets ["mdl/desertlands_15"] <- [$"mdl/desertlands/research_station_storage_shelf_02.rmdl",$"mdl/desertlands/arctic_path_marker_01.rmdl",$"mdl/desertlands/building_ice_b2t_01.rmdl",$"mdl/desertlands/building_ice_b2t_02.rmdl",$"mdl/desertlands/building_ice_b2t_03.rmdl",$"mdl/desertlands/building_ice_b2t_04.rmdl",$"mdl/desertlands/building_ice_b2t_05.rmdl",$"mdl/desertlands/building_ice_b2t_06.rmdl",$"mdl/desertlands/building_ice_b2t_07.rmdl",$"mdl/desertlands/building_ice_b2t_08.rmdl",$"mdl/desertlands/building_ice_b2t_09.rmdl",$"mdl/desertlands/building_ice_b2t_10.rmdl",$"mdl/desertlands/desertland_big_drill_intact_leg_01_frozen.rmdl",$"mdl/desertlands/desertland_big_drill_intact_leg_02_frozen.rmdl",$"mdl/desertlands/desertlands_big_drill_intact_decal_frost_01.rmdl",$"mdl/desertlands/desertlands_big_drill_intact_decal_grime_01.rmdl",$"mdl/desertlands/desertlands_city_slanted_building_01_signage_01.rmdl",$"mdl/desertlands/desertlands_city_train_station_01_decals.rmdl",$"mdl/desertlands/desertlands_lobby_decals_01.rmdl",$"mdl/desertlands/highrise_small_apt_signage_02.rmdl",$"mdl/desertlands/highrise_small_apt_signage_03.rmdl",$"mdl/desertlands/indust_struct_circular_building_01_decal_45.rmdl",$"mdl/desertlands/mobile_vehicle_01_numbers_01.rmdl",$"mdl/desertlands/mobile_vehicle_01_numbers_02.rmdl",$"mdl/desertlands/construction_bldg_elevator_01_bott.rmdl"] -file.we_assets ["mdl/desertlands_16"] <- [$"mdl/desertlands/construction_bldg_elevator_01_mid.rmdl",$"mdl/desertlands/construction_bldg_elevator_01_top.rmdl",$"mdl/desertlands/desertlands_city_train_station_01_roof.rmdl",$"mdl/desertlands/desertlands_city_train_station_railing_01.rmdl",$"mdl/desertlands/desertlands_city_train_station_railing_02.rmdl",$"mdl/desertlands/desertlands_train_track_straight_arrows_512.rmdl",$"mdl/desertlands/indust_struct_gondola_cart_01.rmdl",$"mdl/desertlands/desertlands_train_front_01.rmdl",$"mdl/desertlands/desertlands_train_passenger_cab_01.rmdl",$"mdl/desertlands/industrial_drill_01.rmdl",$"mdl/desertlands/industrial_drill_01_support_01.rmdl",$"mdl/desertlands/mobile_vehicle_01.rmdl",$"mdl/desertlands/research_station_big_building_01.rmdl",$"mdl/desertlands/research_station_big_building_02.rmdl",$"mdl/desertlands/research_station_big_building_03.rmdl",$"mdl/desertlands/research_station_connector_building_01b_open_window.rmdl",$"mdl/desertlands/research_station_connector_building_open_wndow_01.rmdl",$"mdl/desertlands/research_station_dome_building_windows_01.rmdl",$"mdl/desertlands/research_station_incubator_01.rmdl",$"mdl/desertlands/research_station_shelf_03.rmdl",$"mdl/desertlands/research_station_small_building_01.rmdl",$"mdl/desertlands/research_station_small_building_01b.rmdl",$"mdl/desertlands/dland_train_cab_energy.rmdl",$"mdl/desertlands/dland_train_front_energy.rmdl",$"mdl/desertlands/indust_struct_circular_building_glass_ext.rmdl"] -file.we_assets ["mdl/desertlands_17"] <- [$"mdl/desertlands/indust_struct_circular_building_glass_int.rmdl",$"mdl/desertlands/indust_struct_circular_building_lower_glass_int.rmdl",$"mdl/desertlands/indust_struct_cooling_tower_godrays_01.rmdl",$"mdl/desertlands/industrial_struct_bldg_01a.rmdl",$"mdl/desertlands/industrial_struct_bldg_01b.rmdl",$"mdl/desertlands/industrial_struct_bldg_02c.rmdl",$"mdl/desertlands/industrial_struct_bldg_02d.rmdl",$"mdl/desertlands/industrial_struct_bldg_03b.rmdl",$"mdl/desertlands/industrial_struct_bldg_03c.rmdl",$"mdl/desertlands/industrial_struct_bldg_04b.rmdl",$"mdl/desertlands/industrial_struct_bldg_04c.rmdl",$"mdl/desertlands/industrial_struct_bldg_05b.rmdl",$"mdl/desertlands/industrial_struct_bldg_05c.rmdl",$"mdl/desertlands/industrial_struct_bldg_06b.rmdl",$"mdl/desertlands/industrial_struct_bldg_06c.rmdl",$"mdl/desertlands/mobile_vehicle_01_windshield_ext_01.rmdl",$"mdl/desertlands/mobile_vehicle_01_windshield_ext_02.rmdl"] -file.we_assets ["mdl/colony_1"] <- [$"mdl/colony/antenna_05_colony.rmdl",$"mdl/colony/farmland_domicile_table_02.rmdl",$"mdl/colony/antenna_05_colony_small.rmdl",$"mdl/colony/box_cardboard_flat_01.rmdl",$"mdl/colony/dirty_plate_pile_02.rmdl",$"mdl/colony/dirty_bowl_pile_02.rmdl",$"mdl/colony/dirty_bowl_pile_03.rmdl",$"mdl/colony/dirty_bowl_pile_01.rmdl",$"mdl/colony/dirty_bowl_single.rmdl",$"mdl/colony/ventilation_unit_01_black.rmdl",$"mdl/colony/farmland_bathroom_01.rmdl",$"mdl/colony/ventilation_duct_hatch_01b_black.rmdl",$"mdl/colony/farmland_crate_plastic_01_red.rmdl",$"mdl/colony/farmland_crate_plastic_yellow_01.rmdl",$"mdl/colony/ventilation_duct_hatch_02_black.rmdl",$"mdl/colony/ventilation_unit_01b_black.rmdl",$"mdl/colony/posted_papers_01.rmdl",$"mdl/colony/antenna_03_colony.rmdl",$"mdl/colony/farmland_crate_md_80x64x72_01.rmdl",$"mdl/colony/farmland_crate_md_80x64x72_02.rmdl",$"mdl/colony/farmland_crate_md_80x64x72_03.rmdl",$"mdl/colony/farmland_ac_unit_64x16x80_01.rmdl",$"mdl/colony/antenna_01_colony_arm.rmdl",$"mdl/colony/farmland_domicile_hanging_net_01.rmdl",$"mdl/colony/solar_panel_angled_01.rmdl"] -file.we_assets ["mdl/colony_2"] <- [$"mdl/colony/farmland_fridge_01.rmdl"] -file.we_assets ["mdl/thunderdome_1"] <- [$"mdl/thunderdome/survival_modular_flexscreens_04.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_512x352_02.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_512x352_01.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_256x352_02.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_256x352_01.rmdl",$"mdl/thunderdome/survival_modular_flexscreens_frame_01.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_512x128_01.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x256_03.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x256_05.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x256_02.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_128x352_03.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_128x352_04.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_128x352_01.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_128x352_02.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x128_03.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x128_02.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x128_04.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x128_06.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x64_02.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x64_04.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_256x128_02.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_256x128_03.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_256_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_128x32_01.rmdl"] -file.we_assets ["mdl/thunderdome_2"] <- [$"mdl/thunderdome/thunderdome_cage_frame_16x352_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_128_01.rmdl",$"mdl/thunderdome/thunderdome_spike_traps_small_256_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_16x128_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_16x32_01.rmdl",$"mdl/thunderdome/thunderdome_stands_girder_brace_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_16x32_02.rmdl",$"mdl/thunderdome/thunderdome_screen_tower_01.rmdl",$"mdl/thunderdome/thunderdome_hanging_wire_rings_04.rmdl",$"mdl/thunderdome/thunderdome_screen_tower_arm_01.rmdl",$"mdl/thunderdome/thunderdome_stands_awning_01.rmdl",$"mdl/thunderdome/thunderdome_gantry_pulley_02.rmdl",$"mdl/thunderdome/thunderdome_gantry_pulley_01.rmdl",$"mdl/thunderdome/thunderdome_barrier_01.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_512x128_04.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl",$"mdl/thunderdome/thunderdome_hanging_pilot_helmets_04.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x64_05.rmdl",$"mdl/thunderdome/thunderdome_hanging_pilot_helmets_06.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_03.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_01.rmdl"] -file.we_assets ["mdl/containers_1"] <- [$"mdl/containers/storage_bin_rollup_door_closed.rmdl",$"mdl/containers/pelican_case_large.rmdl",$"mdl/containers/pelican_case_large_drabgreen.rmdl",$"mdl/containers/box_med_cardboard_03.rmdl",$"mdl/containers/box_med_cardboard_02.rmdl",$"mdl/containers/box_med_cardboard_01.rmdl",$"mdl/containers/box_metal.rmdl",$"mdl/containers/slums_plastic_crate_blue_01.rmdl",$"mdl/containers/slums_plastic_crate_orange_01.rmdl",$"mdl/containers/slums_plastic_crate_red_01.rmdl",$"mdl/containers/slums_plastic_crate_blue_02.rmdl",$"mdl/containers/slums_plastic_crate_orange_02.rmdl",$"mdl/containers/box_mini_cardboard.rmdl",$"mdl/containers/can_blue_soda.rmdl",$"mdl/containers/can_red_soda.rmdl",$"mdl/containers/can_red_horizontal.rmdl",$"mdl/containers/can_blue_horizontal.rmdl",$"mdl/containers/slums_plastic_container_blue_02.rmdl",$"mdl/containers/slums_plastic_container_green_02.rmdl",$"mdl/containers/slums_plastic_container_orange_02.rmdl",$"mdl/containers/slums_plastic_container_blue_01.rmdl",$"mdl/containers/slums_plastic_container_green_01.rmdl",$"mdl/containers/slums_plastic_container_blue_03.rmdl",$"mdl/containers/slums_plastic_container_green_03.rmdl",$"mdl/containers/slums_plastic_container_orange_03.rmdl"] -file.we_assets ["mdl/containers_2"] <- [$"mdl/containers/slums_plastic_fish_plate_blue_01.rmdl",$"mdl/containers/slumcity_oxygen_bag_large_01_b.rmdl",$"mdl/containers/plastic_pallet_01.rmdl",$"mdl/containers/plastic_pallet_02.rmdl",$"mdl/containers/slumcity_oxygen_tank_blue.rmdl",$"mdl/containers/slumcity_oxygen_tank_red.rmdl",$"mdl/containers/box_shrinkwrapped.rmdl",$"mdl/containers/barrel.rmdl",$"mdl/containers/container_medium_tanks_blue.rmdl",$"mdl/containers/lagoon_roof_tanks_02.rmdl",$"mdl/containers/underbelly_cargo_container_128_red_02.rmdl",$"mdl/containers/underbelly_cargo_container_128_blue_02.rmdl",$"mdl/containers/underbelly_cargo_container_128_green_02.rmdl"] -file.we_assets ["mdl/sewers_1"] <- [$"mdl/sewers/sewer_wire_black_set_thin_04.rmdl",$"mdl/sewers/sewer_wire_black_set_thick_02.rmdl",$"mdl/sewers/sewer_wire_black_set_thick_04.rmdl",$"mdl/sewers/sewer_wire_black_set_thick_01.rmdl",$"mdl/sewers/sewer_wire_black_set_thick_03.rmdl",$"mdl/sewers/sewer_wire_black_set_thin_01.rmdl",$"mdl/sewers/sewer_wire_black_set_thin_03.rmdl",$"mdl/sewers/sewer_wire_black_set_thin_02.rmdl",$"mdl/sewers/sewer_wire_bracket_set_thick_01.rmdl",$"mdl/sewers/sewer_wire_bracket_set_thick_03.rmdl",$"mdl/sewers/sewer_wire_bracket_set_thin_03.rmdl",$"mdl/sewers/sewer_wire_bracket_set_thick_02.rmdl",$"mdl/sewers/sewer_wire_bracket_set_thin_01.rmdl",$"mdl/sewers/sewer_wire_bracket_set_thin_02.rmdl",$"mdl/sewers/sewer_wire_black_bend_r_thin_01.rmdl",$"mdl/sewers/sewer_wire_black_bend_l_thin_01.rmdl",$"mdl/sewers/sewer_wire_black_bend_l_thick_01.rmdl"] -file.we_assets ["mdl/ola_1"] <- [$"mdl/ola/sewer_wires_02.rmdl",$"mdl/ola/sewer_wires_01.rmdl",$"mdl/ola/sewer_railing_01_corner_in.rmdl",$"mdl/ola/sewer_railing_01_corner_out.rmdl",$"mdl/ola/sewer_railing_01_128.rmdl",$"mdl/ola/sewer_stair_railing_01.rmdl",$"mdl/ola/sewer_stair_railing_01_inv.rmdl",$"mdl/ola/sewer_railing_01_stairend.rmdl",$"mdl/ola/sewer_grate_01_16.rmdl",$"mdl/ola/sewer_railing_01_64.rmdl",$"mdl/ola/sewer_railing_02_128.rmdl",$"mdl/ola/sewer_stair_railingsmall_01.rmdl",$"mdl/ola/sewer_stair_railingsmall_01_inv.rmdl",$"mdl/ola/sewer_railing_01_32.rmdl",$"mdl/ola/sewer_railing_01_16.rmdl",$"mdl/ola/sewer_grate_02.rmdl",$"mdl/ola/sewer_staircase_01.rmdl",$"mdl/ola/sewer_grate_01.rmdl",$"mdl/ola/sewer_staircase_quad.rmdl",$"mdl/ola/sewer_staircase_96_quad.rmdl",$"mdl/ola/sewer_staircase_end_02.rmdl",$"mdl/ola/sewer_staircase_double.rmdl",$"mdl/ola/sewer_staircase_short_quad.rmdl",$"mdl/ola/sewer_staircase_96_double.rmdl",$"mdl/ola/sewer_staircase_single.rmdl"] -file.we_assets ["mdl/ola_2"] <- [$"mdl/ola/sewer_grate_01_32.rmdl",$"mdl/ola/sewer_staircase_short_double.rmdl",$"mdl/ola/sewer_staircase_96_single.rmdl"] -file.we_assets ["mdl/furniture_1"] <- [$"mdl/furniture/couch_suede_brown_01.rmdl",$"mdl/furniture/office_laptop.rmdl",$"mdl/furniture/office_desk_accessories_papers.rmdl",$"mdl/furniture/office_desk_accessories_pen_holder.rmdl",$"mdl/furniture/office_desk_accessories_mug.rmdl",$"mdl/furniture/office_keyboard_plastic.rmdl",$"mdl/furniture/chair_beanbag_01.rmdl",$"mdl/furniture/office_desk_shelved.rmdl",$"mdl/furniture/office_chair_leather.rmdl",$"mdl/furniture/books_shelved.rmdl"] -file.we_assets ["mdl/relic_1"] <- [$"mdl/relic/relic_yellow_wire_256_03.rmdl",$"mdl/relic/relic_yellow_wire_256_02.rmdl",$"mdl/relic/relic_yellow_wire_128_02.rmdl",$"mdl/relic/relic_yellow_wire_256_01.rmdl"] -file.we_assets ["mdl/playback_1"] <- [$"mdl/playback/playback_panel_window_frame_c.rmdl",$"mdl/playback/playback_panel_window_frame_a.rmdl",$"mdl/playback/playback_barstool_02.rmdl",$"mdl/playback/playback_girdering_joint_2way_h_01_dirty.rmdl",$"mdl/playback/playback_fish_net_01.rmdl",$"mdl/playback/playback_railing_slope_01a_4step.rmdl",$"mdl/playback/playback_railing_slope_01b_4step.rmdl",$"mdl/playback/playback_railing_01_064.rmdl",$"mdl/playback/playback_bridge_panel_128x064_01.rmdl",$"mdl/playback/playback_staircase_128_top_double_01_a.rmdl"] -file.we_assets ["mdl/IMC_base_1"] <- [$"mdl/IMC_base/imc_tech_tallpanel_48_02.rmdl",$"mdl/IMC_base/imc_tech_panelsquare_48_05.rmdl",$"mdl/IMC_base/imc_tech_smallfan_32_06.rmdl",$"mdl/IMC_base/chair_IMC_02.rmdl",$"mdl/IMC_base/imc_tech_panel_64_01.rmdl",$"mdl/IMC_base/ladder_modular_64_IMC.rmdl",$"mdl/IMC_base/siren_wall_IMC_01.rmdl",$"mdl/IMC_base/garage_support_wall_IMC_02.rmdl",$"mdl/IMC_base/handle_modular_IMC_LOD0.rmdl",$"mdl/IMC_base/ladder_modular_cap_IMC.rmdl",$"mdl/IMC_base/conduit_bracket_IMC_04.rmdl",$"mdl/IMC_base/conduit_bracket_IMC_02.rmdl",$"mdl/IMC_base/imc_fan_large_case_01.rmdl",$"mdl/IMC_base/imc_fan_large_case_01_short.rmdl",$"mdl/IMC_base/imc_fan_large_01.rmdl",$"mdl/IMC_base/thumper_generator_set_b.rmdl",$"mdl/IMC_base/conduit_str_64_IMC_01.rmdl",$"mdl/IMC_base/conduit_str_64_IMC_02.rmdl",$"mdl/IMC_base/conduit_str_32_IMC_01.rmdl",$"mdl/IMC_base/conduit_bend_16_IMC_01.rmdl",$"mdl/IMC_base/conduit_str_16_IMC_01.rmdl",$"mdl/IMC_base/conduit_str_32_IMC_02.rmdl",$"mdl/IMC_base/conduit_str_08_IMC_01.rmdl",$"mdl/IMC_base/conduit_str_16_IMC_02.rmdl",$"mdl/IMC_base/conduit_bend_16_IMC_02.rmdl"] -file.we_assets ["mdl/IMC_base_2"] <- [$"mdl/IMC_base/conduit_str_08_IMC_02.rmdl",$"mdl/IMC_base/conduit_start_IMC_02.rmdl",$"mdl/IMC_base/conduit_cap_IMC_02.rmdl",$"mdl/IMC_base/monitor_command_imc_01.rmdl",$"mdl/IMC_base/monitor_command_small_imc_01.rmdl",$"mdl/IMC_base/generator_IMC_01.rmdl",$"mdl/IMC_base/imc_antenna_large.rmdl",$"mdl/IMC_base/imc_antenna_01.rmdl",$"mdl/IMC_base/imc_antenna_02.rmdl",$"mdl/IMC_base/monitor_imc_02.rmdl",$"mdl/IMC_base/imc_antenna_03.rmdl",$"mdl/IMC_base/monitor_arm_01_oldsand.rmdl",$"mdl/IMC_base/imc_tech_pipepanel_92_04.rmdl",$"mdl/IMC_base/outer_wall_imc_column_02.rmdl",$"mdl/IMC_base/imc_tech_smallpanel_48_03.rmdl",$"mdl/IMC_base/cargo_container_imc_01_blue.rmdl",$"mdl/IMC_base/cargo_container_imc_01_white_open.rmdl",$"mdl/IMC_base/cargo_container_imc_01_red.rmdl",$"mdl/IMC_base/cargo_container_imc_01_white.rmdl",$"mdl/IMC_base/scaffold_tech_horz_rail_c.rmdl"] -file.we_assets ["mdl/industrial_1"] <- [$"mdl/industrial/underbelly_support_beam_256_01.rmdl",$"mdl/industrial/air_unit_badlands_02_tall.rmdl",$"mdl/industrial/underbelly_support_beam_128_01.rmdl",$"mdl/industrial/hazmat_suit_hanging.rmdl",$"mdl/industrial/underbelly_support_beam_bracket_corner_01.rmdl",$"mdl/industrial/air_unit_badlands_02_short.rmdl",$"mdl/industrial/air_unit_badlands_01.rmdl",$"mdl/industrial/jack_hammer_yellow.rmdl",$"mdl/industrial/hammer_metal_02.rmdl",$"mdl/industrial/bottle_wine.rmdl",$"mdl/industrial/cafe_coffe_machine_dirty.rmdl",$"mdl/industrial/zipline_arm.rmdl",$"mdl/industrial/construction_materials_cart_03.rmdl",$"mdl/industrial/rollup_door_04.rmdl",$"mdl/industrial/landing_mat_metal_02_large.rmdl",$"mdl/industrial/landing_mat_metal_03_large.rmdl",$"mdl/industrial/landing_mat_metal_02.rmdl",$"mdl/industrial/landing_mat_metal_03.rmdl",$"mdl/industrial/dart_board.rmdl",$"mdl/industrial/dart_green.rmdl",$"mdl/industrial/dart_red.rmdl",$"mdl/industrial/cafe_coffe_machine.rmdl",$"mdl/industrial/tool_chest.rmdl",$"mdl/industrial/tripod_cone_v1_high_on.rmdl",$"mdl/industrial/tool_chest_double.rmdl"] -file.we_assets ["mdl/industrial_2"] <- [$"mdl/industrial/welding_push_unit.rmdl",$"mdl/industrial/fan_mounted.rmdl",$"mdl/industrial/fan_mounted_w_cage.rmdl",$"mdl/industrial/light_pole_bforce_02.rmdl",$"mdl/industrial/security_fence_post.rmdl",$"mdl/industrial/vending_machine_05.rmdl",$"mdl/industrial/electrical_box_green.rmdl",$"mdl/industrial/city_light.rmdl",$"mdl/industrial/hand_rail_glass_light_24.rmdl",$"mdl/industrial/UTG_spire.rmdl",$"mdl/industrial/traffic_barrel_02.rmdl",$"mdl/industrial/traffic_barrel_01.rmdl",$"mdl/industrial/traffic_tube_01.rmdl",$"mdl/industrial/traffic_cone_01.rmdl",$"mdl/industrial/gas_generator.rmdl",$"mdl/industrial/indoor_console_server.rmdl",$"mdl/industrial/exit_sign_03.rmdl",$"mdl/industrial/vending_machine_02.rmdl",$"mdl/industrial/vending_machine_04.rmdl",$"mdl/industrial/vending_machine_01.rmdl",$"mdl/industrial/vending_machine_03.rmdl",$"mdl/industrial/underbelly_ceiling_panels_256x512_decal_03.rmdl",$"mdl/industrial/glass_white_board_wall.rmdl",$"mdl/industrial/store_fridge_64.rmdl",$"mdl/industrial/vending_machine_06.rmdl"] -file.we_assets ["mdl/industrial_3"] <- [$"mdl/industrial/dive_bar_beer_glass_01_a.rmdl",$"mdl/industrial/dive_bar_beer_glass_01_b.rmdl",$"mdl/industrial/lab_beaker_01.rmdl",$"mdl/industrial/lab_beaker_02.rmdl",$"mdl/industrial/gun_rack_arm_down.rmdl"] -file.we_assets ["mdl/levels_terrain_1"] <- [$"mdl/levels_terrain/mp_corporate/corporate_sign_dsgnOfic.rmdl",$"mdl/levels_terrain/mp_black_water_canal/black_water_canal_wire_64.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_04_spike_06_jakev.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_04_spike_12_jakev.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_04_spike_10_jakev.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_04_spike_05_jakev.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_04_spike_15_jakev.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_04_spike_07_jakev.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_04_spike_09_jakev.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_04_spike_13_jakev.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_04_spike_01_jakev.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_04_spike_14_jakev.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_04_spike_11_jakev.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_04_spike_03_jakev.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_04_spike_02_jakev.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_04_spike_08_jakev.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_04_spike_04_jakev.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_space_elevator_pole_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_space_elevator_cable_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_space_elevator_cable_02.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_themine_cylinder_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/canyonland_pipe_ring.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_z12_outer_circle_platform_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_zone_11_thermal_pillar_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_z12_wedge_platform_01.rmdl"] -file.we_assets ["mdl/levels_terrain_2"] <- [$"mdl/levels_terrain/mp_rr_desertlands/desertlands_z12_outer_circle_platform_02.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_z12_mid_platform_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_space_elevator_platform_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_z12_mid_pillar_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/clands_roof_bars_01_fglass_blue.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_space_elevator_gate_01.rmdl",$"mdl/levels_terrain/mp_lobby/mp_setting_menu.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_space_elevator_01_top.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_space_elevator_01_roof.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_space_elevator_01_floor.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_space_elevator_column_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_space_elevator_ramp_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_lava_drill_mover_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_08_water.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_08_water_2.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_09_water.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_09_water_2.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_09_water_3.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_10_water.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_10_water_2.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_12_water.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_14_water.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_14_water_2.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_space_elevator_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_godrays_zone_10_01.rmdl"] -file.we_assets ["mdl/levels_terrain_3"] <- [$"mdl/levels_terrain/mp_rr_desertlands/desertlands_godrays_zone_10_02.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_godrays_zone_11_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_godrays_zone_13_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_godrays_zone_16_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_godrays_zone_1_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_godrays_zone_2_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_godrays_zone_3_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_godrays_zone_5_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_godrays_zone_7_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_godrays_zone_8_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_godrays_zone_9_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_halogen_light_godray_blue_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_halogen_light_godray_orange_01.rmdl",$"mdl/levels_terrain/mp_lobby/mp_character_select_geo.rmdl"] -file.we_assets ["mdl/electricalboxes_1"] <- [$"mdl/electricalboxes/pipe_set_c.rmdl",$"mdl/electricalboxes/pipe_set_b.rmdl",$"mdl/electricalboxes/pipe_set_e.rmdl",$"mdl/electricalboxes/fusebox.rmdl",$"mdl/electricalboxes/pipe_set_h.rmdl",$"mdl/electricalboxes/fusebox_rusty.rmdl",$"mdl/electricalboxes/fusebox_small_a.rmdl"] -file.we_assets ["mdl/firstgen_1"] <- [$"mdl/firstgen/firstgen_pipe_256_darkcloth_01.rmdl",$"mdl/firstgen/firstgen_pipe_256_goldfoil_01.rmdl",$"mdl/firstgen/firstgen_pipe_256_cloth_01.rmdl",$"mdl/firstgen/firstgen_pipe_128_darkcloth_01.rmdl",$"mdl/firstgen/firstgen_pipe_128_goldfoil_01.rmdl",$"mdl/firstgen/firstgen_pipe_128_cloth_01.rmdl",$"mdl/firstgen/firstgen_pipe_64_darkcloth_01.rmdl",$"mdl/firstgen/firstgen_pipe_64_goldfoil_01.rmdl",$"mdl/firstgen/firstgen_pipe_64_cloth_01.rmdl",$"mdl/firstgen/firstgen_pipe_curve_darkcloth_01.rmdl",$"mdl/firstgen/firstgen_pipe_curve_goldfoil_01.rmdl",$"mdl/firstgen/firstgen_pipe_curve_cloth_01.rmdl",$"mdl/firstgen/firstgen_pipe_t_cloth_01.rmdl",$"mdl/firstgen/firstgen_pipe_t_darkcloth_01.rmdl",$"mdl/firstgen/firstgen_pipe_32_darkcloth_01.rmdl",$"mdl/firstgen/firstgen_pipe_32_goldfoil_01.rmdl",$"mdl/firstgen/firstgen_pipe_32_cloth_01.rmdl"] -file.we_assets ["mdl/barriers_1"] <- [$"mdl/barriers/concrete/concrete_barrier_01.rmdl",$"mdl/barriers/guard_rail_01_256.rmdl",$"mdl/barriers/guard_rail_01_128.rmdl",$"mdl/barriers/concrete/concrete_barrier_fence_128.rmdl",$"mdl/barriers/concrete/concrete_barrier_fence_tarp_128.rmdl"] -file.we_assets ["mdl/props_1"] <- [$"mdl/props/med_pod/exoplanet_med_pod_holder.rmdl",$"mdl/props/loot_bin_holder_inside.rmdl",$"mdl/props/tire_samson_v2_01/tire_samson_v2_01.rmdl",$"mdl/props/loot_bin_holder.rmdl",$"mdl/props/med_pod/exoplanet_med_pod_01.rmdl",$"mdl/props/med_pod/exoplanet_med_pod_02.rmdl",$"mdl/props/death_box/death_box_02.rmdl",$"mdl/props/global_access_panel_button/global_access_panel_button_console_w_stand.rmdl",$"mdl/props/loot_bin/loot_bin_01_animated.rmdl",$"mdl/props/zipline_balloon/zipline_balloon_base.rmdl",$"mdl/props/zipline_balloon/zipline_balloon.rmdl",$"mdl/props/pathfinder_beacon_radar/pathfinder_beacon_radar_animated.rmdl",$"mdl/props/global_access_panel_button/global_access_panel_button_wall.rmdl",$"mdl/props/loot_bin/loot_bin_02_animated.rmdl",$"mdl/props/ultimate_accelerant_usb/ultimate_accelerant_usb_static.rmdl",$"mdl/props/caustic_flask/caustic_flask.rmdl",$"mdl/props/caustic_mug/caustic_mug.rmdl",$"mdl/props/skull/skull_gladcard.rmdl",$"mdl/props/octane_wrench/octane_wrench_menu_static.rmdl",$"mdl/props/death_box/death_box_01_gladcard.rmdl",$"mdl/props/flask/prop_flask.rmdl",$"mdl/props/tablet/tablet_mini.rmdl",$"mdl/props/crypto_drone/crypto_drone_destoyed_01.rmdl",$"mdl/props/crypto_drone/crypto_drone_destoyed_02.rmdl",$"mdl/props/crypto_drone/crypto_drone_destoyed_03.rmdl"] -file.we_assets ["mdl/angel_city_1"] <- [$"mdl/angel_city/box_small_02.rmdl",$"mdl/angel_city/fire_hydrant_03.rmdl",$"mdl/angel_city/box_small_01.rmdl",$"mdl/angel_city/atm_small_02.rmdl",$"mdl/angel_city/sign_cleaning_wetfloor_01.rmdl",$"mdl/angel_city/toy_dispenser_01.rmdl",$"mdl/angel_city/vending_machine.rmdl",$"mdl/angel_city/jersey_barrier_large_02.rmdl",$"mdl/angel_city/recyclebin_large_01.rmdl",$"mdl/angel_city/ground_pile_trash_02.rmdl",$"mdl/angel_city/ground_pile_trash_03.rmdl",$"mdl/angel_city/keypad_01.rmdl"] -file.we_assets ["mdl/lamps_1"] <- [$"mdl/lamps/light_florescenet_modern_off.rmdl",$"mdl/lamps/exterior_walkway_light_off.rmdl",$"mdl/lamps/industrial_wall_light.rmdl",$"mdl/lamps/industrial_wall_light_02.rmdl",$"mdl/lamps/light_parking_post.rmdl",$"mdl/lamps/halogen_light_ceiling_blueish.rmdl",$"mdl/lamps/halogen_light_ceiling.rmdl",$"mdl/lamps/industrial_wall_light_02_on.rmdl",$"mdl/lamps/industrial_wall_light_02_on_blue.rmdl",$"mdl/lamps/industrial_wall_light_on_blue.rmdl",$"mdl/lamps/industrial_wall_light_on.rmdl",$"mdl/lamps/light_florescenet_modern.rmdl",$"mdl/lamps/floor_standing_ambient_light.rmdl",$"mdl/lamps/office_desk_lamp.rmdl",$"mdl/lamps/security_light_01_on.rmdl",$"mdl/lamps/warning_light_ON_red.rmdl",$"mdl/lamps/halogen_light_ceiling_subtle.rmdl"] -file.we_assets ["mdl/signs_1"] <- [$"mdl/signs/coffee_menu_01.rmdl",$"mdl/signs/sign_caution_chemical.rmdl",$"mdl/signs/sign_relic_warning_01.rmdl",$"mdl/signs/sign_caution_pump_warning.rmdl",$"mdl/signs/sign_service_shaft_01.rmdl",$"mdl/signs/sign_service_shaft_02.rmdl",$"mdl/signs/Sign_no_tresspasing.rmdl",$"mdl/signs/sign_caution_walkway_01.rmdl",$"mdl/signs/signage_plates_metal/sign_post_plate_c.rmdl",$"mdl/signs/signage_plates_metal/sign_plate_a.rmdl",$"mdl/signs/signage_plates_metal/sign_plate_c.rmdl",$"mdl/signs/market/angel_city_market_signs2.rmdl",$"mdl/signs/market/angel_city_market_signs1.rmdl",$"mdl/signs/market/angel_city_market_sign4.rmdl",$"mdl/signs/market/angel_city_market_signs4.rmdl",$"mdl/signs/market/angel_city_market_sign16.rmdl",$"mdl/signs/market/angel_city_market_sign17.rmdl",$"mdl/signs/market/angel_city_market_sign2.rmdl",$"mdl/signs/market/angel_city_market_sign9.rmdl",$"mdl/signs/market/angel_city_market_sign6.rmdl",$"mdl/signs/sign_market_01_on.rmdl",$"mdl/signs/runoff_signs/recycle_sign.rmdl",$"mdl/signs/street_sign_arrow.rmdl",$"mdl/signs/street_sign_rail_distance_02.rmdl",$"mdl/signs/thumper_signs_03.rmdl"] -file.we_assets ["mdl/signs_2"] <- [$"mdl/signs/runoff_signs/pump_distance_sign.rmdl",$"mdl/signs/restaurant_sign.rmdl",$"mdl/signs/market_sign_yellow_milk.rmdl",$"mdl/signs/scrolling_sign_scan.rmdl",$"mdl/signs/desertlands_city_newdawn_sign_01.rmdl",$"mdl/signs/desertlands_city_streetsign_01.rmdl",$"mdl/signs/numbers/sign_number_lit_2.rmdl",$"mdl/signs/numbers/sign_number_lit_3.rmdl",$"mdl/signs/numbers/sign_number_lit_1.rmdl",$"mdl/signs/building_sign_lit_standing_02.rmdl"] -file.we_assets ["mdl/utilities_1"] <- [$"mdl/utilities/halogen_lightbulb_case.rmdl",$"mdl/utilities/ceiling_vent_metal.rmdl",$"mdl/utilities/wall_Waterpipe.rmdl",$"mdl/utilities/wires_hanging_64.rmdl",$"mdl/utilities/wire_hanging_cluster_03.rmdl",$"mdl/utilities/power_gen1.rmdl",$"mdl/utilities/wire_ceiling_mounts_corner_l.rmdl",$"mdl/utilities/wire_ceiling_mounts_corner.rmdl",$"mdl/utilities/wires_ground_coils_01.rmdl",$"mdl/utilities/wire_ceiling_mounts_straight.rmdl",$"mdl/utilities/wire_ground_coils_02.rmdl",$"mdl/utilities/wire_ground_coils_03.rmdl",$"mdl/utilities/halogen_lightbulbs.rmdl"] -file.we_assets ["mdl/imc_interior_1"] <- [$"mdl/imc_interior/imc_int_fusebox_01.rmdl",$"mdl/imc_interior/wrapped_pipe_256.rmdl",$"mdl/imc_interior/ripped_pipe_128.rmdl",$"mdl/imc_interior/wrapped_pipe_128.rmdl",$"mdl/imc_interior/wrapped_pipe_bent.rmdl",$"mdl/imc_interior/ripped_pipe_64.rmdl"] -file.we_assets ["mdl/slum_city_1"] <- [$"mdl/slum_city/slumcity_grow_room_rack_lift_motor_02.rmdl",$"mdl/slum_city/slumcity_girdering_256x16_dirty_d.rmdl",$"mdl/slum_city/slumcity_wirebundle_128x32_hanging_a.rmdl",$"mdl/slum_city/slumcity_girdering_128x16_dirty_d.rmdl",$"mdl/slum_city/slumcity_wirebundle_64x32_hanging_a.rmdl",$"mdl/slum_city/slumcity_pipeplastic_256_a.rmdl",$"mdl/slum_city/slumcity_pipemetal_256_b.rmdl",$"mdl/slum_city/slumcity_pipemetal_256_c.rmdl",$"mdl/slum_city/slumcity_pipemetal_256_a.rmdl",$"mdl/slum_city/slumcity_girdering_64x16_dirty_d.rmdl",$"mdl/slum_city/slumcity_pipe_bracket_corrugated_metal_a.rmdl",$"mdl/slum_city/slumcity_pipeplastic_128_a.rmdl",$"mdl/slum_city/slumcity_girdering_32x16_dirty_d.rmdl",$"mdl/slum_city/slumcity_wirebundle_32x32_hanging_a.rmdl",$"mdl/slum_city/slumcity_wirebundle_16x16_90_a.rmdl",$"mdl/slum_city/slumcity_pipemetal_32_walljunc_a.rmdl",$"mdl/slum_city/slumcity_pipemetal_64_b.rmdl",$"mdl/slum_city/slumcity_pipemetal_64_c.rmdl",$"mdl/slum_city/slumcity_pipemetal_64_a.rmdl",$"mdl/slum_city/slumcity_pipeplastic_64_a.rmdl",$"mdl/slum_city/slumcity_girdering_16x16_dirty_d.rmdl",$"mdl/slum_city/slumcity_pipeplastic_16_90junc_a.rmdl",$"mdl/slum_city/slumcity_pipemetal_16_walljunc_a.rmdl",$"mdl/slum_city/slumcity_pipeplastic_32_a.rmdl",$"mdl/slum_city/slumcity_pipemetal_8_walljunc_a.rmdl"] -file.we_assets ["mdl/slum_city_2"] <- [$"mdl/slum_city/slumcity_pipemetal_8_junc_a.rmdl",$"mdl/slum_city/slumcity_pipeplastic_16_a.rmdl",$"mdl/slum_city/slumcity_pipe_256_corrugated_metal_a.rmdl",$"mdl/slum_city/slumcity_pipe_128_corrugated_metal_a.rmdl",$"mdl/slum_city/slumcity_pipe_64_corrugated_metal_b.rmdl",$"mdl/slum_city/slumcity_pipe_64_corrugated_metal_a.rmdl",$"mdl/slum_city/slumcity_pipe_90junc_corrugated_metal_a.rmdl",$"mdl/slum_city/slumcity_pipe_32_corrugated_metal_b.rmdl",$"mdl/slum_city/slumcity_pipe_32_corrugated_metal_a.rmdl",$"mdl/slum_city/slumcity_pipe_16_corrugated_metal_a.rmdl",$"mdl/slum_city/slumcity_fencewall_128x72_dirty.rmdl",$"mdl/slum_city/slumcity_industrial_scaffolding_128x128_tarp_c.rmdl",$"mdl/slum_city/slumcity_industrial_scaffolding_32x128_tarp_c.rmdl",$"mdl/slum_city/slum_city_apt_building_tanks_a.rmdl",$"mdl/slum_city/slumcity_column_40x64_dirty_c.rmdl",$"mdl/slum_city/slumcity_column01_40x128_dirty_a.rmdl",$"mdl/slum_city/slumcity_fencewall_64x72_dirty.rmdl"] -file.we_assets ["mdl/rocks_1"] <- [$"mdl/rocks/rock_sharp_lava_moss_desertlands_05.rmdl",$"mdl/rocks/rock_sharp_lava_moss_desertlands_04.rmdl",$"mdl/rocks/rock_sharp_lava_moss_desertlands_03.rmdl",$"mdl/rocks/rock_sharp_lava_moss_desertlands_06.rmdl",$"mdl/rocks/rock_sharp_lava_moss_desertlands_02.rmdl",$"mdl/rocks/rock_sharp_lava_moss_desertlands_01.rmdl",$"mdl/rocks/rock_lava_moss_desertlands_04.rmdl",$"mdl/rocks/rock_lava_moss_desertlands_03.rmdl",$"mdl/rocks/rock_lava_moss_desertlands_02.rmdl",$"mdl/rocks/rock_lava_moss_desertlands_01.rmdl",$"mdl/rocks/sulfur_geyser_brown_02.rmdl",$"mdl/rocks/sulfur_geyser_yellow_02.rmdl",$"mdl/rocks/sulfur_geyser_brown_01.rmdl",$"mdl/rocks/sulfur_geyser_yellow_01.rmdl",$"mdl/rocks/sulfur_mound_yellow_02.rmdl",$"mdl/rocks/sulfur_mound_brown_02.rmdl",$"mdl/rocks/sulfur_mound_brown_03.rmdl",$"mdl/rocks/sulfur_mound_yellow_03.rmdl",$"mdl/rocks/sulfur_mound_brown_05.rmdl",$"mdl/rocks/sulfur_mound_brown_06.rmdl",$"mdl/rocks/sulfur_mound_yellow_06.rmdl",$"mdl/rocks/rock_lava_small_moss_desertlands_02.rmdl",$"mdl/rocks/icelandic_moss_rock_01.rmdl",$"mdl/rocks/desertlands_sulfur_rock_06.rmdl",$"mdl/rocks/desertlands_sulfur_rock_cluster_03.rmdl"] -file.we_assets ["mdl/rocks_2"] <- [$"mdl/rocks/desertlands_sulfur_rock_05.rmdl",$"mdl/rocks/rock_lava_small_moss_desertlands_01.rmdl",$"mdl/rocks/rock_lava_small_moss_desertlands_03.rmdl",$"mdl/rocks/rock_lava_small_desertlands_02.rmdl",$"mdl/rocks/rock_lava_small_desertlands_01.rmdl",$"mdl/rocks/rock_lava_cluster_desertlands_01.rmdl",$"mdl/rocks/rock_lava_cluster_desertlands_02.rmdl",$"mdl/rocks/rock_lava_small_desertlands_03.rmdl",$"mdl/rocks/rock_lava_cluster_desertlands_03.rmdl",$"mdl/rocks/desertlands_sulfur_rock_cluster_01.rmdl",$"mdl/rocks/desertlands_sulfur_ground_cluster_01.rmdl",$"mdl/rocks/icelandic_rockcluster_02.rmdl",$"mdl/rocks/icelandic_rockcluster_03.rmdl",$"mdl/rocks/icelandic_rockcluster_01.rmdl",$"mdl/rocks/desertlands_sulfur_rock_07.rmdl",$"mdl/rocks/desertlands_sulfur_rock_08.rmdl",$"mdl/rocks/desertlands_sulfur_lake_crust_01.rmdl",$"mdl/rocks/desertlands_sulfur_lake_crust_02.rmdl",$"mdl/rocks/rock_sharp_lava_moss_desertlands_06_lavender.rmdl",$"mdl/rocks/desertlands_victory_platform.rmdl",$"mdl/rocks/rock_small_02.rmdl"] -file.we_assets ["mdl/pipes_1"] <- [$"mdl/pipes/pipe_modular_painted_grey_256.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_256.rmdl",$"mdl/pipes/pipe_modular_painted_red_256.rmdl",$"mdl/pipes/pipe_modular_painted_grey_128.rmdl",$"mdl/pipes/pipe_modular_painted_red_128.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_128.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_64.rmdl",$"mdl/pipes/pipe_modular_painted_grey_64.rmdl",$"mdl/pipes/pipe_modular_painted_red_64.rmdl",$"mdl/pipes/pipe_modular_painted_grey_32_valve.rmdl",$"mdl/pipes/pipe_modular_painted_red_32_valve.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_32_valve.rmdl",$"mdl/pipes/pipe_modular_painted_grey_32_tjunk.rmdl",$"mdl/pipes/pipe_modular_painted_red_32_tjunk.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_32_tjunk.rmdl",$"mdl/pipes/pipe_modular_painted_grey_corner.rmdl",$"mdl/pipes/pipe_modular_painted_red_corner.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_corner.rmdl",$"mdl/pipes/pipe_modular_painted_grey_32_03.rmdl",$"mdl/pipes/pipe_modular_painted_grey_32.rmdl",$"mdl/pipes/pipe_modular_painted_grey_32_04.rmdl",$"mdl/pipes/pipe_modular_painted_red_32.rmdl",$"mdl/pipes/pipe_modular_painted_red_32_04.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_32.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_32_04.rmdl"] -file.we_assets ["mdl/pipes_2"] <- [$"mdl/pipes/pipe_modular_painted_grey_45_angle.rmdl",$"mdl/pipes/pipe_modular_painted_grey_16.rmdl",$"mdl/pipes/pipe_modular_painted_red_16.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_16.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_8.rmdl",$"mdl/pipes/pipe_modular_painted_grey_8.rmdl",$"mdl/pipes/pipe_modular_painted_red_8.rmdl",$"mdl/pipes/pipe_medium_256_01.rmdl",$"mdl/pipes/slum_pipe_large_blue_64_01.rmdl",$"mdl/pipes/slum_pipe_large_yellow_64_01.rmdl",$"mdl/pipes/slum_pipe_large_blue_32_01.rmdl",$"mdl/pipes/slum_pipe_large_yellow_32_01.rmdl",$"mdl/pipes/pipe_medium_128_01.rmdl",$"mdl/pipes/pipe_medium_tjunc_01.rmdl",$"mdl/pipes/pipe_medium_angle_01.rmdl",$"mdl/pipes/pipe_medium_64_01.rmdl",$"mdl/pipes/pipe_medium_45angle_01.rmdl",$"mdl/pipes/pipe_small_128_01.rmdl",$"mdl/pipes/pipe_small_64_01.rmdl",$"mdl/pipes/pipe_small_tjunc_01.rmdl",$"mdl/pipes/pipe_small_angle_01.rmdl",$"mdl/pipes/pipe_small_32_01.rmdl",$"mdl/pipes/airduct_l_128.rmdl",$"mdl/pipes/airduct_l_4junc.rmdl",$"mdl/pipes/airduct_l_80.rmdl"] -file.we_assets ["mdl/pipes_3"] <- [$"mdl/pipes/airduct_s_128.rmdl",$"mdl/pipes/airduct_l_turn_side.rmdl",$"mdl/pipes/airduct_l_turn_long_side.rmdl",$"mdl/pipes/airduct_l_slant.rmdl",$"mdl/pipes/airduct_s_tjunc.rmdl",$"mdl/pipes/airduct_s_turn_side.rmdl",$"mdl/pipes/airduct_l_turn_vert.rmdl",$"mdl/pipes/airduct_l_48.rmdl",$"mdl/pipes/airduct_s_80.rmdl",$"mdl/pipes/airduct_s_turn_vert.rmdl",$"mdl/pipes/airduct_s_48.rmdl",$"mdl/pipes/airduct_trans_m_to_s.rmdl",$"mdl/pipes/airduct_l_vent.rmdl",$"mdl/pipes/slum_pipe_large_blue_512_01.rmdl",$"mdl/pipes/slum_pipe_large_yellow_512_01.rmdl",$"mdl/pipes/slum_pipe_large_blue_256_01.rmdl",$"mdl/pipes/slum_pipe_large_blue_256_02.rmdl",$"mdl/pipes/slum_pipe_large_yellow_256_01.rmdl",$"mdl/pipes/slum_pipe_large_yellow_256_02.rmdl",$"mdl/pipes/slum_pipe_large_blue_tjunc_01.rmdl",$"mdl/pipes/slum_pipe_large_yellow_tjunc_01.rmdl",$"mdl/pipes/slum_pipe_large_blue_angle_01.rmdl",$"mdl/pipes/slum_pipe_large_yellow_angle_01.rmdl",$"mdl/pipes/slum_pipe_large_blue_128_01.rmdl",$"mdl/pipes/slum_pipe_large_yellow_128_01.rmdl"] -file.we_assets ["mdl/pipes_4"] <- [$"mdl/pipes/slum_pipe_large_yellow_angle45_01.rmdl",$"mdl/pipes/pipe_medium_32_01.rmdl",$"mdl/pipes/pipe_medium_16_01.rmdl"] -file.we_assets ["mdl/beacon_1"] <- [$"mdl/beacon/construction_scaff_128_64_64.rmdl",$"mdl/beacon/construction_scaff_segment_128_64.rmdl",$"mdl/beacon/beacon_server_wall_mount_01_off.rmdl",$"mdl/beacon/construction_scaff_128_32.rmdl",$"mdl/beacon/kodai_metal_beam_02_256.rmdl",$"mdl/beacon/construction_scaff_post_128_01.rmdl",$"mdl/beacon/kodai_metal_beam_02_128.rmdl",$"mdl/beacon/kodai_metal_beam_02_96.rmdl",$"mdl/beacon/kodai_metal_beam_02_64.rmdl",$"mdl/beacon/construction_scaff_tarp_floor_01.rmdl",$"mdl/beacon/construction_scaff_128_64_128_02.rmdl",$"mdl/beacon/beacon_wire_ground_coils_04.rmdl",$"mdl/beacon/mendoko_wires_ground_coils_01.rmdl",$"mdl/beacon/beacon_wire_ground_coils_02.rmdl",$"mdl/beacon/mendoko_wire_ground_coils_02.rmdl",$"mdl/beacon/beacon_wire_cluster_07.rmdl",$"mdl/beacon/mendoko_wire_cluster_07.rmdl",$"mdl/beacon/beacon_wire_ground_coils_03.rmdl",$"mdl/beacon/mendoko_wire_ground_coils_03.rmdl",$"mdl/beacon/modular_hose_yellow_128_bend_01.rmdl",$"mdl/beacon/modular_hose_yellow_128_01.rmdl",$"mdl/beacon/modular_hose_yellow_128_02.rmdl",$"mdl/beacon/beacon_wire_cluster_03.rmdl",$"mdl/beacon/mendoko_wire_cluster_03.rmdl",$"mdl/beacon/beacon_wire_cluster_02.rmdl"] -file.we_assets ["mdl/beacon_2"] <- [$"mdl/beacon/mendoko_wire_cluster_02.rmdl",$"mdl/beacon/beacon_wire_cluster_01.rmdl",$"mdl/beacon/beacon_wire_cluster_04.rmdl",$"mdl/beacon/mendoko_wire_cluster_01.rmdl",$"mdl/beacon/modular_hose_yellow_32_01.rmdl",$"mdl/beacon/mendoko_wire_cluster_08.rmdl",$"mdl/beacon/mendoko_wire_cluster_08_l.rmdl",$"mdl/beacon/modular_hose_yellow_corner_01.rmdl",$"mdl/beacon/beacon_wire_cluster_06.rmdl",$"mdl/beacon/generator_fan_house_cap_01.rmdl",$"mdl/beacon/construction_plastic_mat_black_01.rmdl",$"mdl/beacon/construction_plastic_mat_white_01.rmdl",$"mdl/beacon/beacon_server_wall_mount_01.rmdl",$"mdl/beacon/beacon_fence_sign_01.rmdl",$"mdl/beacon/beacon_server_half_stand_01.rmdl",$"mdl/beacon/beacon_server_stand_01.rmdl",$"mdl/beacon/construction_plastic_mat_clear_01.rmdl",$"mdl/beacon/beacon_construction_flag_animated.rmdl"] -file.we_assets ["mdl/mendoko_1"] <- [$"mdl/mendoko/mendoko_desk_01.rmdl",$"mdl/mendoko/mendoko_rubber_floor_04.rmdl",$"mdl/mendoko/mendoko_rubber_floor_01.rmdl",$"mdl/mendoko/mendoko_sink_cabinet.rmdl",$"mdl/mendoko/mendoko_cabinet_02.rmdl",$"mdl/mendoko/mendoko_monitor_03.rmdl",$"mdl/mendoko/mendoko_monitor_04.rmdl",$"mdl/mendoko/mendoko_wire_ground_coils_02.rmdl",$"mdl/mendoko/mendoko_wire_ground_coils_03.rmdl",$"mdl/mendoko/mendoko_research_microscope.rmdl",$"mdl/mendoko/mendoko_handscanner_01.rmdl",$"mdl/mendoko/mendoko_handscanner_01_dmg.rmdl",$"mdl/mendoko/mendoko_research_centrifuge.rmdl",$"mdl/mendoko/mendoko_research_equipment_01.rmdl",$"mdl/mendoko/mendoko_research_equipment_02.rmdl",$"mdl/mendoko/mendoko_research_equipment_03.rmdl",$"mdl/mendoko/mendoko_research_storage.rmdl"] -file.we_assets ["mdl/door_1"] <- [$"mdl/door/canyonlands_door_single_02_hinges.rmdl",$"mdl/door/canyonlands_door_single_02_damaged.rmdl",$"mdl/door/canyonlands_door_single_02.rmdl",$"mdl/door/door_256x256x8_elevatorstyle02_animated.rmdl",$"mdl/door/canyonlands_door_vfx_bl.rmdl",$"mdl/door/canyonlands_door_vfx_br.rmdl",$"mdl/door/canyonlands_door_vfx_c.rmdl",$"mdl/door/canyonlands_door_vfx_uc.rmdl",$"mdl/door/canyonlands_door_vfx_ul.rmdl",$"mdl/door/canyonlands_door_vfx_ur.rmdl"] -file.we_assets ["mdl/lava_land_1"] <- [$"mdl/lava_land/volcanic_rock_01a.rmdl",$"mdl/lava_land/volcanic_rock_02a.rmdl",$"mdl/lava_land/volcanic_dry_flow_01.rmdl"] -file.we_assets ["mdl/vehicles_r5_1"] <- [$"mdl/vehicles_r5/land/msc_forklift_imc_v2/veh_land_msc_forklift_imc_v2_static.rmdl",$"mdl/vehicles_r5/land_med/msc_freight_tortus_mod/veh_land_msc_freight_tortus_mod_cargo_holder_v1_static.rmdl",$"mdl/vehicles_r5/land_med/msc_freight_tortus_mod/veh_land_msc_freight_tortus_mod_wheeled_v1_static.rmdl",$"mdl/vehicles_r5/land_med/msc_freight_tortus_mod/veh_land_msc_freight_tortus_mod_attach_nav_v1_static.rmdl",$"mdl/vehicles_r5/land_med/msc_freight_tortus_mod/veh_land_msc_freight_tortus_mod_attach_hitch_v1_static.rmdl",$"mdl/vehicles_r5/land/msc_suv_partum/veh_land_msc_suv_partum_static.rmdl",$"mdl/vehicles_r5/land/msc_truck_mod_lrg/veh_land_msc_truck_mod_police_lrg_01_closed_static.rmdl"] -file.we_assets ["mdl/canyonlands_1"] <- [$"mdl/canyonlands/canyonlands_zone_sign_01.rmdl",$"mdl/canyonlands/canyonlands_zone_sign_03b.rmdl",$"mdl/canyonlands/canyonlands_zone_sign_03.rmdl"] -file.we_assets ["mdl/decals_1"] <- [$"mdl/decals/grime_dirty_floor_decal_01.rmdl",$"mdl/decals/grime_dirty_floor_decal_02.rmdl",$"mdl/decals/grime_dirty_floor_decal_03.rmdl",$"mdl/decals/puddle_floor_decal_flat_01.rmdl",$"mdl/decals/puddle_floor_decal_flat_02.rmdl",$"mdl/decals/puddle_floor_decal_flat_03.rmdl"] -file.we_assets ["mdl/Gibs_1"] <- [$"mdl/Gibs/wood_gib01e.rmdl",$"mdl/Gibs/wood_gib01d.rmdl",$"mdl/Gibs/wood_gib01c.rmdl",$"mdl/Gibs/wood_gib01b.rmdl",$"mdl/Gibs/wood_gib01a.rmdl",$"mdl/Gibs/Glass_shard01.rmdl",$"mdl/Gibs/Glass_shard02.rmdl",$"mdl/Gibs/Glass_shard03.rmdl",$"mdl/Gibs/Glass_shard04.rmdl",$"mdl/Gibs/Glass_shard05.rmdl",$"mdl/Gibs/Glass_shard06.rmdl",$"mdl/Gibs/metal_gib1.rmdl",$"mdl/Gibs/metal_gib2.rmdl",$"mdl/Gibs/metal_gib3.rmdl",$"mdl/Gibs/metal_gib4.rmdl"] -file.we_assets ["mdl/props_debris_1"] <- [$"mdl/props_debris/concrete_chunk08a.rmdl",$"mdl/props_debris/concrete_chunk09a.rmdl",$"mdl/props_debris/concrete_chunk03a.rmdl",$"mdl/props_debris/concrete_chunk07a.rmdl"] -file.we_assets ["mdl/vehicle_1"] <- [$"mdl/vehicle/droppod_loot/droppod_loot_LL_holo.rmdl",$"mdl/vehicle/goblin_dropship/goblin_dropship_debris_01.rmdl",$"mdl/vehicle/goblin_dropship/goblin_dropship_holo.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo7.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo6.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo5.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo4.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo3.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo2.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo1.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_afterburners.rmdl"] -file.we_assets ["mdl/gibs_1"] <- [$"mdl/gibs/titan_gibs/at_gib8_l_thigh2.rmdl",$"mdl/gibs/titan_gibs/og_gib_r_forarm_d.rmdl",$"mdl/gibs/wood_gib01_lg.rmdl"] -file.we_assets ["mdl/extras_1"] <- [$"mdl/market/market_table_01.rmdl",$"mdl/rise/rise_door_frame_01.rmdl",$"mdl/rise/catwalk_hanging_wires_01.rmdl",$"mdl/benches/bench_single_modern_dirty.rmdl",$"mdl/haven/kitchen_set04_table01_sm.rmdl",$"mdl/haven/haven_bamboo_tree_02.rmdl",$"mdl/haven/kitchen_set04_table01_top_sm.rmdl",$"mdl/commercial/store_shelf_wall_32.rmdl",$"mdl/commercial/wall_mounted_fan.rmdl",$"mdl/outpost207/gondola_wires_01.rmdl",$"mdl/lights/industrial_interior_light_small_noant_off_01.rmdl",$"mdl/lights/industrial_interior_light_small_01.rmdl",$"mdl/imc_base/light_wall_imc_01.rmdl",$"mdl/imc_base/light_wall_imc_01_on.rmdl",$"mdl/hardware/paint_spraycan_closed.rmdl",$"mdl/thaw/thaw_rock_horizontal_01.rmdl",$"mdl/city_modern/citymodern_trashcan_a.rmdl",$"mdl/city_modern/citymodern_planter_128x128_72_squared_a.rmdl",$"mdl/kodai/white_board_postits_01.rmdl",$"mdl/floating_village/lagoon_window_metal_shutters_open_80x128.rmdl",$"mdl/floating_village/lagoon_window_metal_shutters_open_80x64.rmdl",$"mdl/timeshift/timeshift_bench_01.rmdl",$"mdl/homestead/homestead_floor_panel_01.rmdl",$"mdl/eden/beacon_small_screen_02_off.rmdl",$"mdl/eden/eden_electrical_pole_01.rmdl"] -file.we_assets ["mdl/extras_2"] <- [$"mdl/eden/eden_electrical_transformer_01.rmdl",$"mdl/fixtures/stasis_light_01_warm.rmdl",$"mdl/fixtures/stasis_light_01.rmdl",$"mdl/fixtures/stasis_light_01_red.rmdl",$"mdl/communication/phone_video_street.rmdl",$"mdl/menu/menu_cubemap.rmdl",$"mdl/menu/xp_badge.rmdl",$"mdl/menu/coin.rmdl",$"mdl/vistas/iceland_sloped.rmdl",$"mdl/vistas/iceland_slopeb.rmdl",$"mdl/vistas/desertlands_se.rmdl",$"mdl/runoff/runoff_railing_64_yellow.rmdl",$"mdl/runoff/runoff_railing_32_yellow.rmdl",$"mdl/refinery/light_tower.rmdl",$"mdl/traffic/traffic_empty_light_pole_extended_01_a.rmdl",$"mdl/traffic/traffic_light_02_a.rmdl",$"mdl/traffic/traffic_light_02_b.rmdl",$"mdl/harmony_mines/mine_flag_plastic_02.rmdl",$"mdl/military_base/militaryfort_wall_corner_decal_number_01.rmdl",$"mdl/military_base/militaryfort_wall_corner_decal_number_02.rmdl",$"mdl/military_base/militaryfort_wall_decal_orange_arrow_01.rmdl",$"mdl/test/virginia_test/desertlands_construction_site_01_ice_jakev.rmdl",$"mdl/water/water_puddle_decal_01.rmdl",$"mdl/dev/envballs.rmdl",$"mdl/dev/editor_ref.rmdl"] -file.we_assets ["mdl/extras_3"] <- [$"mdl/currency/crafting/currency_crafting_epic.rmdl",$"mdl/hud/grenade_indicator/bang_indicator.rmdl",$"mdl/empty/lights/empty_lights.rmdl",$"mdl/Robots/mobile_hardpoint/mobile_hardpoint_static.rmdl",$"mdl/creatures/bird/bird.rmdl",$"mdl/metal_scraps/scrap_metal04.rmdl",$"mdl/robotics_r2/turret_plasma/plasma_turret_pc_1.rmdl",$"mdl/robotics_r2/turret_plasma/plasma_turret_pc_2.rmdl",$"mdl/robotics_r2/turret_plasma/plasma_turret_pc_3.rmdl",$"mdl/s2s/s2s_bridge_glass_shard.rmdl",$"mdl/robots/drone_air_attack/drone_attack_pc_4.rmdl",$"mdl/robots/drone_air_attack/drone_attack_pc_3.rmdl",$"mdl/rubble/concrete_chunk_med_01_body.rmdl"] - -// KINGS CANYON -file.kc_assets ["mdl/colony_1"] <- [$"mdl/colony/antenna_05_colony.rmdl",$"mdl/colony/box_cardboard_flat_01.rmdl",$"mdl/colony/dirty_plate_pile_02.rmdl",$"mdl/colony/dirty_bowl_single.rmdl",$"mdl/colony/ventilation_duct_hatch_01b_black.rmdl",$"mdl/colony/ventilation_duct_hatch_02_black.rmdl",$"mdl/colony/ventilation_unit_01b_black.rmdl",$"mdl/colony/antenna_03_colony.rmdl",$"mdl/colony/farmland_crate_md_80x64x72_01.rmdl",$"mdl/colony/farmland_crate_md_80x64x72_02.rmdl",$"mdl/colony/farmland_ac_unit_64x16x80_01.rmdl",$"mdl/colony/antenna_01_colony_arm.rmdl",$"mdl/colony/farmland_domicile_hanging_net_01.rmdl",$"mdl/colony/solar_panel_angled_01.rmdl",$"mdl/colony/farmland_fridge_01.rmdl",$"mdl/colony/farmland_house_tarp_side_02_beams.rmdl",$"mdl/colony/farmland_crate_plastic_01.rmdl",$"mdl/colony/farmland_house_tarp_side_01.rmdl",$"mdl/colony/antenna_02_colony.rmdl",$"mdl/colony/colony_corner_connect.rmdl",$"mdl/colony/water_heater_red.rmdl",$"mdl/colony/solar_water_heater01_40u.rmdl",$"mdl/colony/colony_beam_support.rmdl",$"mdl/colony/farmland_wall_frame_128x128_01.rmdl",$"mdl/colony/farmland_window_01_096x80x04_01.rmdl"] -file.kc_assets ["mdl/colony_2"] <- [$"mdl/colony/farmland_house_frame_angled_128x40.rmdl",$"mdl/colony/farmland_house_frame_90bend_lg_01.rmdl",$"mdl/colony/farmland_house_frame_90bend_sm_01.rmdl",$"mdl/colony/farmland_house_frame_90bend_sm_02.rmdl",$"mdl/colony/farmland_house_tarp_side_02.rmdl",$"mdl/colony/antenna_01_colony.rmdl",$"mdl/colony/antenna_01_colony_electricalboxes.rmdl",$"mdl/colony/antenna_01_colony_pole.rmdl",$"mdl/colony/tower_antenna_radio_01.rmdl",$"mdl/colony/colony_wall_run_plate.rmdl",$"mdl/colony/farmland_ceiling_128x128_01.rmdl",$"mdl/colony/farmland_storage_bin_long_01.rmdl",$"mdl/colony/solar_panel_colony_single_02.rmdl",$"mdl/colony/farmland_wall_128x064x16_metal_01.rmdl",$"mdl/colony/farmland_wall_128x064x08_metal_01.rmdl",$"mdl/colony/farmland_crate_sm_32x24x40_01.rmdl",$"mdl/colony/farmland_kitchen_cabinets_02.rmdl",$"mdl/colony/farmland_house_support_01.rmdl",$"mdl/colony/farmland_shelf_ext_128.rmdl",$"mdl/colony/farmland_fence_rusted_02.rmdl",$"mdl/colony/farmland_fence_rusted_01.rmdl",$"mdl/colony/farmland_kitchen_cabinets_03.rmdl",$"mdl/colony/farmland_wall_128x128x16_metal_01.rmdl",$"mdl/colony/farmland_wall_128x128x16_metal_01b.rmdl",$"mdl/colony/farmland_wall_128x128x08_metal_01.rmdl"] -file.kc_assets ["mdl/colony_3"] <- [$"mdl/colony/farmland_wall_128x128x08_metal_01b.rmdl",$"mdl/colony/farmland_wall_128x128x04_metal_01.rmdl",$"mdl/colony/farmland_wall_128x096x16_metal_01.rmdl",$"mdl/colony/farmland_wall_128x096x16_metal_01b.rmdl",$"mdl/colony/farmland_fence_rusted_03_large.rmdl",$"mdl/colony/farmland_house_doorway_064x080x04_01.rmdl",$"mdl/colony/farmland_house_window_064x080x04.rmdl",$"mdl/colony/farmland_ceiling_128x096_01.rmdl",$"mdl/colony/farmland_house_window_02.rmdl",$"mdl/colony/farmland_wall_128x096x08_metal_01.rmdl",$"mdl/colony/farmland_wall_128x096x08_metal_01b.rmdl",$"mdl/colony/farmland_house_window_half_02.rmdl",$"mdl/colony/farmland_wall_128x096x04_metal_01.rmdl",$"mdl/colony/farmland_wall_128x096x04_metal_01b.rmdl",$"mdl/colony/farmland_wall_128x064x16_metal_01b.rmdl",$"mdl/colony/farmland_fence_rusted_03.rmdl",$"mdl/colony/farmland_wall_corner_128x32_metal_01.rmdl",$"mdl/colony/farmland_ceiling_128x064_01.rmdl",$"mdl/colony/farmland_wall_128x064x08_metal_01b.rmdl",$"mdl/colony/farmland_wall_128x064x04_metal_01b.rmdl",$"mdl/colony/farmland_ceiling_128x048_01.rmdl",$"mdl/colony/farmland_ceiling_096x048_01.rmdl",$"mdl/colony/farmland_ceiling_128x032_01.rmdl",$"mdl/colony/farmland_house_corner_16x16_01.rmdl",$"mdl/colony/farmland_detail_128x24x08_01.rmdl"] -file.kc_assets ["mdl/colony_4"] <- [$"mdl/colony/farmland_trim_angle_128x016_01.rmdl",$"mdl/colony/farmland_house_frame_01_128.rmdl",$"mdl/colony/farmland_trim_angle_096x016_01.rmdl",$"mdl/colony/farmland_house_frame_01_096.rmdl",$"mdl/colony/farmland_trim_angle_064x016_01.rmdl",$"mdl/colony/farmland_house_frame_01_064.rmdl",$"mdl/colony/farmland_house_frame_01_048.rmdl",$"mdl/colony/farmland_trim_angle_032x016_01.rmdl",$"mdl/colony/farmland_house_frame_01_032.rmdl",$"mdl/colony/farmland_house_frame_01_016.rmdl",$"mdl/colony/farmland_house_frame_01_008.rmdl"] -file.kc_assets ["mdl/thunderdome_1"] <- [$"mdl/thunderdome/survival_modular_flexscreens_04.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_512x352_02.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_512x352_01.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_256x352_02.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_256x352_01.rmdl",$"mdl/thunderdome/survival_modular_flexscreens_frame_01.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_512x128_01.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x256_03.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x256_05.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x256_02.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_128x352_03.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_128x352_04.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_128x352_01.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_128x352_02.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x128_03.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x128_02.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x128_04.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x128_06.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x64_02.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x64_04.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_256x128_02.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_256x128_03.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_256_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_128x32_01.rmdl"] -file.kc_assets ["mdl/thunderdome_2"] <- [$"mdl/thunderdome/thunderdome_cage_frame_16x352_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_128_01.rmdl",$"mdl/thunderdome/thunderdome_spike_traps_small_256_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_16x128_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_16x32_01.rmdl",$"mdl/thunderdome/thunderdome_stands_girder_brace_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_16x32_02.rmdl",$"mdl/thunderdome/thunderdome_screen_tower_01.rmdl",$"mdl/thunderdome/thunderdome_hanging_wire_rings_04.rmdl",$"mdl/thunderdome/thunderdome_screen_tower_arm_01.rmdl",$"mdl/thunderdome/thunderdome_stands_awning_01.rmdl",$"mdl/thunderdome/thunderdome_gantry_pulley_02.rmdl",$"mdl/thunderdome/thunderdome_gantry_pulley_01.rmdl",$"mdl/thunderdome/thunderdome_barrier_01.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_512x128_04.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl",$"mdl/thunderdome/thunderdome_hanging_pilot_helmets_04.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x64_05.rmdl",$"mdl/thunderdome/thunderdome_hanging_pilot_helmets_06.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_03.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_01.rmdl",$"mdl/thunderdome/thunderdome_gantry_01.rmdl",$"mdl/thunderdome/canyonland_thunderdome_rock_charred_orange_01.rmdl",$"mdl/thunderdome/canyonland_thunderdome_rock_charred_damaged_orange_01.rmdl",$"mdl/thunderdome/thunderdome_fan_stands_01.rmdl"] -file.kc_assets ["mdl/thunderdome_3"] <- [$"mdl/thunderdome/thunderdome_cage_wall_512x240_01.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_512x128_02.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_512x128_03.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_128x128_03.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_128x128_05.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x256_01.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_256x352_03.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_64x352_01.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x128_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_64x144_01.rmdl",$"mdl/thunderdome/thunderdome_prowler_hatch_01.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x64_06.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x64_03.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_256x128_01.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x32_01.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x64_01.rmdl",$"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_128x128_01.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_64x64_01.rmdl",$"mdl/thunderdome/thunderdome_cage_door_01.rmdl",$"mdl/thunderdome/thunderdome_stands_girder_32x256_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_64x32_01.rmdl",$"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_64_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_32x32_01.rmdl"] -file.kc_assets ["mdl/thunderdome_4"] <- [$"mdl/thunderdome/thunderdome_cage_frame_02.rmdl",$"mdl/thunderdome/thunderdome_spike_traps_small_128_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_32_01.rmdl",$"mdl/thunderdome/thunderdome_spike_traps_small_64_01.rmdl",$"mdl/thunderdome/thunderdome_cut_rock_large_01.rmdl",$"mdl/thunderdome/thunderdome_cut_rock_large_02.rmdl",$"mdl/thunderdome/canyonland_thunderdome_rock_orange_01.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_sand_256x128_01.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_sand_256x128_02.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_sand_256x128_03.rmdl",$"mdl/thunderdome/canyonland_thunderdome_ground_cap_01.rmdl",$"mdl/thunderdome/thunderdome_hanging_wire_rings_02.rmdl",$"mdl/thunderdome/thunderdome_hanging_wire_rings_03.rmdl",$"mdl/thunderdome/thunderdome_hanging_wire_rings_01.rmdl",$"mdl/thunderdome/thunderdome_barrier_02.rmdl",$"mdl/thunderdome/thunderdome_pilot_cage_01.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_128x128_04.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x256_04.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_128x128_06.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x128_05.rmdl",$"mdl/thunderdome/thunderdome_cage_floor_128x128_01.rmdl",$"mdl/thunderdome/thunderdome_stands_grate_01.rmdl",$"mdl/thunderdome/thunderdome_cage_floor_64x64_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_04.rmdl",$"mdl/thunderdome/thunderdome_hanging_pilot_helmets_05.rmdl"] -file.kc_assets ["mdl/thunderdome_5"] <- [$"mdl/thunderdome/thunderdome_cage_floor_128x64_01.rmdl"] -file.kc_assets ["mdl/sewers_1"] <- [$"mdl/sewers/sewer_wire_black_set_thin_04.rmdl",$"mdl/sewers/sewer_wire_black_set_thick_02.rmdl",$"mdl/sewers/sewer_wire_black_set_thick_04.rmdl",$"mdl/sewers/sewer_wire_black_set_thick_01.rmdl",$"mdl/sewers/sewer_wire_black_set_thick_03.rmdl",$"mdl/sewers/sewer_wire_black_set_thin_01.rmdl",$"mdl/sewers/sewer_wire_black_set_thin_03.rmdl",$"mdl/sewers/sewer_wire_black_set_thin_02.rmdl",$"mdl/sewers/sewer_wire_bracket_set_thick_01.rmdl",$"mdl/sewers/sewer_wire_bracket_set_thick_03.rmdl",$"mdl/sewers/sewer_wire_bracket_set_thin_03.rmdl",$"mdl/sewers/sewer_wire_bracket_set_thick_02.rmdl",$"mdl/sewers/sewer_wire_bracket_set_thin_01.rmdl",$"mdl/sewers/sewer_wire_bracket_set_thin_02.rmdl",$"mdl/sewers/sewer_wire_black_bend_r_thin_01.rmdl",$"mdl/sewers/sewer_wire_black_bend_l_thin_01.rmdl",$"mdl/sewers/sewer_wire_black_bend_l_thick_01.rmdl",$"mdl/sewers/sewer_wire_black_bend_r_thick_01.rmdl",$"mdl/sewers/sewer_lab_floor_64_128_02.rmdl",$"mdl/sewers/sewer_lab_floor_64_128_03.rmdl"] -file.kc_assets ["mdl/ola_1"] <- [$"mdl/ola/sewer_wires_02.rmdl",$"mdl/ola/sewer_wires_01.rmdl",$"mdl/ola/sewer_railing_01_corner_in.rmdl",$"mdl/ola/sewer_railing_01_corner_out.rmdl",$"mdl/ola/sewer_railing_01_128.rmdl",$"mdl/ola/sewer_stair_railing_01.rmdl",$"mdl/ola/sewer_stair_railing_01_inv.rmdl",$"mdl/ola/sewer_railing_01_stairend.rmdl",$"mdl/ola/sewer_grate_01_16.rmdl",$"mdl/ola/sewer_railing_01_64.rmdl",$"mdl/ola/sewer_railing_02_128.rmdl",$"mdl/ola/sewer_stair_railingsmall_01.rmdl",$"mdl/ola/sewer_railing_01_32.rmdl",$"mdl/ola/sewer_railing_01_16.rmdl",$"mdl/ola/sewer_grate_01.rmdl",$"mdl/ola/sewer_staircase_quad.rmdl",$"mdl/ola/sewer_staircase_96_quad.rmdl",$"mdl/ola/sewer_staircase_end_02.rmdl",$"mdl/ola/sewer_staircase_double.rmdl",$"mdl/ola/sewer_staircase_96_double.rmdl",$"mdl/ola/sewer_staircase_single.rmdl",$"mdl/ola/sewer_grate_01_32.rmdl",$"mdl/ola/sewer_staircase_96_single.rmdl",$"mdl/ola/sewer_grate_clamp_01_128.rmdl",$"mdl/ola/sewer_staircase_96_01.rmdl"] -file.kc_assets ["mdl/ola_2"] <- [$"mdl/ola/sewer_staircase_96_end_02.rmdl",$"mdl/ola/sewer_staircase_48_quad.rmdl",$"mdl/ola/sewer_staircase_96_end_01.rmdl"] -file.kc_assets ["mdl/relic_1"] <- [$"mdl/relic/relic_yellow_wire_256_03.rmdl",$"mdl/relic/relic_yellow_wire_256_02.rmdl",$"mdl/relic/relic_yellow_wire_128_02.rmdl",$"mdl/relic/relic_yellow_wire_256_01.rmdl",$"mdl/relic/relic_yellow_wire_128_01.rmdl",$"mdl/relic/relic_ship_beams_128.rmdl",$"mdl/relic/relic_ship_beams_64.rmdl",$"mdl/relic/hanging_relic_light_off_2.rmdl"] -file.kc_assets ["mdl/playback_1"] <- [$"mdl/playback/playback_panel_window_frame_c.rmdl",$"mdl/playback/playback_panel_window_frame_a.rmdl",$"mdl/playback/playback_railing_01_064.rmdl",$"mdl/playback/playback_bridge_panel_128x064_01.rmdl",$"mdl/playback/playback_staircase_96_base_double_01_a.rmdl",$"mdl/playback/playback_door_archway.rmdl",$"mdl/playback/playback_corner_connect.rmdl",$"mdl/playback/playback_door_frame_a.rmdl",$"mdl/playback/playback_gun_platform_02.rmdl",$"mdl/playback/playback_grate_support_x128_01_a.rmdl",$"mdl/playback/playback_grate_support_x64_01_a.rmdl",$"mdl/playback/playback_bridge_beam_01_08x128_01.rmdl",$"mdl/playback/playback_bridge_beam_04_08x16x128_01.rmdl",$"mdl/playback/playback_bridge_beam_01_cap_01.rmdl",$"mdl/playback/playback_bridge_beam_04_08x16x64_01.rmdl",$"mdl/playback/playback_bridge_beam_02_16x064_01.rmdl",$"mdl/playback/playback_staircase_railing_octo_01_a.rmdl",$"mdl/playback/playback_staircase_railing_octo_01_b.rmdl",$"mdl/playback/playback_railing_01_128.rmdl",$"mdl/playback/playback_staircase_railing_quad_01_a.rmdl",$"mdl/playback/playback_staircase_railing_quad_01_b.rmdl",$"mdl/playback/playback_staircase_railing_double_top_01_a.rmdl",$"mdl/playback/playback_staircase_railing_double_top_01_b.rmdl",$"mdl/playback/playback_staircase_railing_double_01_a.rmdl",$"mdl/playback/playback_staircase_railing_double_01_b.rmdl"] -file.kc_assets ["mdl/playback_2"] <- [$"mdl/playback/playback_staircase_railing_single_base_01_a.rmdl",$"mdl/playback/playback_staircase_railing_single_base_01_b.rmdl",$"mdl/playback/playback_staircase_railing_single_top_01_b.rmdl",$"mdl/playback/playback_staircase_railing_single_top_01_a.rmdl",$"mdl/playback/playback_staircase_railing_pole_01_a.rmdl",$"mdl/playback/playback_staircase_railing_pole_01_b.rmdl",$"mdl/playback/playback_staircase_96_long_01_a.rmdl",$"mdl/playback/playback_gun_platform_panel_02.rmdl",$"mdl/playback/playback_gun_platform_panel_03.rmdl",$"mdl/playback/playback_bridge_panel_128x128_01.rmdl",$"mdl/playback/playback_staircase_128_quad_01_a.rmdl",$"mdl/playback/playback_staircase_96_quad_01_a.rmdl",$"mdl/playback/playback_staircase_64_quad_01_a.rmdl",$"mdl/playback/playback_staircase_96_double_01_a.rmdl",$"mdl/playback/playback_staircase_64_base_double_01_a.rmdl",$"mdl/playback/playback_bridge_panel_064x064_01.rmdl",$"mdl/playback/playback_staircase_64_top_double_01_a.rmdl",$"mdl/playback/playback_staircase_64_double_01_a.rmdl",$"mdl/playback/playback_staircase_96_single_01_a.rmdl",$"mdl/playback/playback_staircase_96_base_single_01_a.rmdl",$"mdl/playback/playback_staircase_96_top_single_01_a.rmdl",$"mdl/playback/playback_staircase_64_single_01_a.rmdl",$"mdl/playback/playback_bridge_panel_64x32_01.rmdl",$"mdl/playback/playback_staircase_64_base_single_01_a.rmdl"] -file.kc_assets ["mdl/IMC_base_1"] <- [$"mdl/IMC_base/imc_tech_tallpanel_48_02.rmdl",$"mdl/IMC_base/imc_tech_smallfan_32_06.rmdl",$"mdl/IMC_base/imc_tech_panel_64_01.rmdl",$"mdl/IMC_base/ladder_modular_64_IMC.rmdl",$"mdl/IMC_base/siren_wall_IMC_01.rmdl",$"mdl/IMC_base/garage_support_wall_IMC_02.rmdl",$"mdl/IMC_base/ladder_modular_cap_IMC.rmdl",$"mdl/IMC_base/conduit_bracket_IMC_04.rmdl",$"mdl/IMC_base/conduit_bracket_IMC_02.rmdl",$"mdl/IMC_base/imc_fan_large_case_01.rmdl",$"mdl/IMC_base/imc_fan_large_case_01_short.rmdl",$"mdl/IMC_base/thumper_generator_set_b.rmdl",$"mdl/IMC_base/conduit_str_64_IMC_01.rmdl",$"mdl/IMC_base/conduit_str_64_IMC_02.rmdl",$"mdl/IMC_base/conduit_str_32_IMC_01.rmdl",$"mdl/IMC_base/conduit_bend_16_IMC_01.rmdl",$"mdl/IMC_base/conduit_str_16_IMC_02.rmdl",$"mdl/IMC_base/conduit_bend_16_IMC_02.rmdl",$"mdl/IMC_base/conduit_cap_IMC_02.rmdl",$"mdl/IMC_base/generator_IMC_01.rmdl",$"mdl/IMC_base/imc_antenna_02.rmdl",$"mdl/IMC_base/imc_antenna_03.rmdl",$"mdl/IMC_base/imc_tech_smallpanel_48_03.rmdl",$"mdl/IMC_base/scaffold_tech_horz_rail_c.rmdl",$"mdl/IMC_base/beam_I_512_IMC_01.rmdl"] -file.kc_assets ["mdl/IMC_base_2"] <- [$"mdl/IMC_base/cargo_bomb_rack01.rmdl",$"mdl/IMC_base/scaffold_tech_frame_bottom_128.rmdl",$"mdl/IMC_base/scaffold_tech_frame_top_128.rmdl",$"mdl/IMC_base/beam_I_256_IMC_01.rmdl",$"mdl/IMC_base/beam_I_turn_90_01.rmdl",$"mdl/IMC_base/beam_base_clamp_IMC_01.rmdl",$"mdl/IMC_base/beam_T_256_IMC_01.rmdl",$"mdl/IMC_base/bldg_wall_support_IMC_01_half.rmdl",$"mdl/IMC_base/beam_i_128_imc_01.rmdl",$"mdl/IMC_base/roof_corner_garage_IMC_02.rmdl",$"mdl/IMC_base/cables_modular_med_IMC_01.rmdl",$"mdl/IMC_base/cables_modular_med_IMC_03.rmdl",$"mdl/IMC_base/cables_modular_med_IMC_02.rmdl",$"mdl/IMC_base/corner_piston_IMC_02.rmdl",$"mdl/IMC_base/scaffold_tech_adjustbeam_256.rmdl",$"mdl/IMC_base/ceiling_plugs_IMC_02.rmdl",$"mdl/IMC_base/scaffold_tech_brace_03.rmdl",$"mdl/IMC_base/beam_I_64_IMC_01.rmdl",$"mdl/IMC_base/dispenser_wall_IMC_01.rmdl",$"mdl/IMC_base/bomb_imc_01.rmdl",$"mdl/IMC_base/bulk_head_footer_imc_01.rmdl",$"mdl/IMC_base/beam_T_64_IMC_01.rmdl",$"mdl/IMC_base/camera_imc_01.rmdl",$"mdl/IMC_base/ladder_modular_32_IMC.rmdl",$"mdl/IMC_base/bldg_wall_corner_IMC_01.rmdl"] -file.kc_assets ["mdl/IMC_base_3"] <- [$"mdl/IMC_base/camera_imc_base_01.rmdl",$"mdl/IMC_base/garage_support_wall_imc_01.rmdl",$"mdl/IMC_base/ladder_modular_16_IMC.rmdl",$"mdl/IMC_base/light_wall_IMC_03.rmdl",$"mdl/IMC_base/imc_fan_large_02.rmdl",$"mdl/IMC_base/imc_pipe_med_128.rmdl",$"mdl/IMC_base/imc_pipe_med_64.rmdl",$"mdl/IMC_base/imc_pipe_med_mount_01.rmdl",$"mdl/IMC_base/imc_pipe_med_32_02.rmdl",$"mdl/IMC_base/imc_pipe_med_32.rmdl",$"mdl/IMC_base/imc_pipe_med_curve90.rmdl",$"mdl/IMC_base/pipe_ceiling_IMC_str_03.rmdl",$"mdl/IMC_base/imc_pipe_med_ring_02.rmdl",$"mdl/IMC_base/pipe_ceiling_IMC_str_02.rmdl",$"mdl/IMC_base/pipe_ceiling_IMC_bend_01.rmdl",$"mdl/IMC_base/pipe_ceiling_IMC_end_02.rmdl",$"mdl/IMC_base/imc_pipe_med_cap.rmdl",$"mdl/IMC_base/pipe_ceiling_sml_IMC_str_03.rmdl",$"mdl/IMC_base/pipe_ceiling_IMC_str_01.rmdl",$"mdl/IMC_base/pipe_ceiling_sml_IMC_end_02.rmdl",$"mdl/IMC_base/pipe_ceiling_IMC_junc_01.rmdl",$"mdl/IMC_base/pipe_ceiling_IMC_junc_02.rmdl",$"mdl/IMC_base/pipe_ceiling_IMC_end_01.rmdl",$"mdl/IMC_base/pipe_ceiling_IMC_bend_02.rmdl",$"mdl/IMC_base/pipe_ceiling_sml_IMC_bend_01.rmdl"] -file.kc_assets ["mdl/IMC_base_4"] <- [$"mdl/IMC_base/conduit_start_IMC_01.rmdl",$"mdl/IMC_base/imc_pipe_med_256_grey.rmdl",$"mdl/IMC_base/imc_pipe_med_128_grey.rmdl",$"mdl/IMC_base/imc_pipe_med_64_grey.rmdl",$"mdl/IMC_base/imc_pipe_med_32_grey.rmdl",$"mdl/IMC_base/imc_pipe_med_curve90_grey.rmdl",$"mdl/IMC_base/scaffold_tech_128.rmdl",$"mdl/IMC_base/landing_pad_tarmac_nobase.rmdl",$"mdl/IMC_base/scaffold_tech_horz_rail_b.rmdl",$"mdl/IMC_base/landing_pad_arm_top.rmdl",$"mdl/IMC_base/chain_link_IMC_01.rmdl",$"mdl/IMC_base/monitor_outpost207_imc_screen_01.rmdl",$"mdl/IMC_base/footer_imc_02.rmdl",$"mdl/IMC_base/scaffold_tech_halfwalk.rmdl",$"mdl/IMC_base/scaffold_tech_alpharail_128.rmdl"] -file.kc_assets ["mdl/electricalboxes_1"] <- [$"mdl/electricalboxes/pipe_set_c.rmdl",$"mdl/electricalboxes/pipe_set_b.rmdl",$"mdl/electricalboxes/fusebox.rmdl",$"mdl/electricalboxes/pipe_set_h.rmdl",$"mdl/electricalboxes/fusebox_rusty.rmdl",$"mdl/electricalboxes/fusebox_small_a.rmdl",$"mdl/electricalboxes/fusebox_small_b.rmdl",$"mdl/electricalboxes/pipe_set_d.rmdl",$"mdl/electricalboxes/pipe_set_g.rmdl",$"mdl/electricalboxes/pipe_set_i.rmdl",$"mdl/electricalboxes/meterbox.rmdl",$"mdl/electricalboxes/pipe_bracket_a.rmdl",$"mdl/electricalboxes/fuseboxnodoor.rmdl",$"mdl/electricalboxes/fusebox_green.rmdl",$"mdl/electricalboxes/fusebox_small_c.rmdl",$"mdl/electricalboxes/pipejuction.rmdl",$"mdl/electricalboxes/pipe_wall_mess_06.rmdl",$"mdl/electricalboxes/pipe_endcap.rmdl"] -file.kc_assets ["mdl/industrial_1"] <- [$"mdl/industrial/air_unit_badlands_02_tall.rmdl",$"mdl/industrial/air_unit_badlands_02_short.rmdl",$"mdl/industrial/air_unit_badlands_01.rmdl",$"mdl/industrial/hammer_metal_02.rmdl",$"mdl/industrial/zipline_arm.rmdl",$"mdl/industrial/landing_mat_metal_02_large.rmdl",$"mdl/industrial/landing_mat_metal_02.rmdl",$"mdl/industrial/landing_mat_metal_03.rmdl",$"mdl/industrial/tool_chest.rmdl",$"mdl/industrial/tripod_cone_v1_high_on.rmdl",$"mdl/industrial/tool_chest_double.rmdl",$"mdl/industrial/fan_mounted.rmdl",$"mdl/industrial/light_pole_bforce_02.rmdl",$"mdl/industrial/security_fence_post.rmdl",$"mdl/industrial/UTG_spire.rmdl",$"mdl/industrial/gas_generator.rmdl",$"mdl/industrial/indoor_console_server.rmdl",$"mdl/industrial/gun_rack_arm_down.rmdl",$"mdl/industrial/screwdriver_octane.rmdl",$"mdl/industrial/stand_alone_air_vent_02.rmdl",$"mdl/industrial/hanging_plant_mister_cap.rmdl",$"mdl/industrial/water_silo_container.rmdl",$"mdl/industrial/modular_wall_metal_brace_03.rmdl",$"mdl/industrial/modular_wall_metal_brace_02.rmdl",$"mdl/industrial/pallete_crate_stack_straps.rmdl"] -file.kc_assets ["mdl/industrial_2"] <- [$"mdl/industrial/tibilisi_support_cross_beams_round.rmdl",$"mdl/industrial/metal_girder_beams_128.rmdl",$"mdl/industrial/tibilisi_vertical_support_metal.rmdl",$"mdl/industrial/indoor_console_b.rmdl",$"mdl/industrial/pallet_wood.rmdl",$"mdl/industrial/metal_floor_panels_frame.rmdl",$"mdl/industrial/metal_floor_panels.rmdl",$"mdl/industrial/metal_floor_panels_03.rmdl",$"mdl/industrial/metal_brace_corner_footer.rmdl",$"mdl/industrial/tire_small.rmdl",$"mdl/industrial/modular_railing_trim_long.rmdl",$"mdl/industrial/modular_railing_trim_mid.rmdl",$"mdl/industrial/air_duct_bracket_01.rmdl",$"mdl/industrial/modular_railing_trim_a.rmdl",$"mdl/industrial/rollup_door_cover.rmdl",$"mdl/industrial/landing_mat_metal.rmdl",$"mdl/industrial/clamp_metal_01.rmdl",$"mdl/industrial/rollup_door_frame.rmdl",$"mdl/industrial/rollup_door_motor.rmdl",$"mdl/industrial/propane_tank_large_nopanels.rmdl",$"mdl/industrial/work_cart_plastic.rmdl",$"mdl/industrial/tool_chest_top.rmdl",$"mdl/industrial/wrenches_pipeWrench01.rmdl",$"mdl/industrial/farmland_wall_tech_01.rmdl",$"mdl/industrial/grain_sacks_stacked.rmdl"] -file.kc_assets ["mdl/industrial_3"] <- [$"mdl/industrial/mounted_air_vent_medium.rmdl",$"mdl/industrial/indoor_console_a.rmdl",$"mdl/industrial/indoor_console_monitors.rmdl",$"mdl/industrial/exit_sign_04_on.rmdl"] -file.kc_assets ["mdl/containers_1"] <- [$"mdl/containers/pelican_case_large.rmdl",$"mdl/containers/pelican_case_large_drabgreen.rmdl",$"mdl/containers/box_med_cardboard_02.rmdl",$"mdl/containers/box_med_cardboard_01.rmdl",$"mdl/containers/box_metal.rmdl",$"mdl/containers/slums_plastic_crate_orange_01.rmdl",$"mdl/containers/can_blue_soda.rmdl",$"mdl/containers/can_red_soda.rmdl",$"mdl/containers/can_red_horizontal.rmdl",$"mdl/containers/can_blue_horizontal.rmdl",$"mdl/containers/plastic_pallet_01.rmdl",$"mdl/containers/plastic_pallet_02.rmdl",$"mdl/containers/box_shrinkwrapped.rmdl",$"mdl/containers/container_medium_tanks_blue.rmdl",$"mdl/containers/underbelly_cargo_container_128_red_02.rmdl",$"mdl/containers/underbelly_cargo_container_128_blue_02.rmdl",$"mdl/containers/underbelly_cargo_container_128_green_02.rmdl",$"mdl/containers/bullet_casings_03.rmdl",$"mdl/containers/bullet_casings_01.rmdl",$"mdl/containers/bullet_casings_02.rmdl",$"mdl/containers/box_large_plastic.rmdl",$"mdl/containers/box_large_cardboard.rmdl",$"mdl/containers/crate.rmdl",$"mdl/containers/box_small_plastic.rmdl",$"mdl/containers/styrofoam_lid_dirty.rmdl"] -file.kc_assets ["mdl/containers_2"] <- [$"mdl/containers/styrofoam_box_short_dirty.rmdl",$"mdl/containers/slums_plastic_crate_red_02.rmdl",$"mdl/containers/gas_tank.rmdl",$"mdl/containers/can_green_cola.rmdl",$"mdl/containers/crate_blue_plastic.rmdl",$"mdl/containers/crate_orange_plastic.rmdl",$"mdl/containers/lagoon_roof_tanks_01.rmdl",$"mdl/containers/underbelly_cargo_container_256_blue_01.rmdl",$"mdl/containers/underbelly_cargo_container_128_red_01.rmdl",$"mdl/containers/underbelly_cargo_container_128_blue_01.rmdl",$"mdl/containers/underbelly_cargo_container_128_green_01.rmdl",$"mdl/containers/underbelly_cargo_container_128_grey_02.rmdl"] -file.kc_assets ["mdl/angel_city_1"] <- [$"mdl/angel_city/box_small_02.rmdl",$"mdl/angel_city/box_small_01.rmdl",$"mdl/angel_city/vending_machine.rmdl",$"mdl/angel_city/ground_pile_trash_02.rmdl",$"mdl/angel_city/ground_pile_trash_03.rmdl",$"mdl/angel_city/keypad_01.rmdl",$"mdl/angel_city/tarp_02.rmdl",$"mdl/angel_city/metal_support_solid_beam_full.rmdl",$"mdl/angel_city/metal_support_I_beam_straight.rmdl",$"mdl/angel_city/metal_support_solid_beam_half.rmdl",$"mdl/angel_city/metal_support_beam_bracket_01.rmdl",$"mdl/angel_city/ground_pile_trash_01.rmdl",$"mdl/angel_city/jersey_barrier_large_01.rmdl"] -file.kc_assets ["mdl/lamps_1"] <- [$"mdl/lamps/light_florescenet_modern_off.rmdl",$"mdl/lamps/industrial_wall_light.rmdl",$"mdl/lamps/halogen_light_ceiling.rmdl",$"mdl/lamps/industrial_wall_light_02_on.rmdl",$"mdl/lamps/industrial_wall_light_on.rmdl",$"mdl/lamps/light_florescenet_modern.rmdl",$"mdl/lamps/security_light_01_on.rmdl",$"mdl/lamps/warning_light_ON_red.rmdl",$"mdl/lamps/halogen_light_ceiling_subtle.rmdl",$"mdl/lamps/light_hanging_industrial.rmdl",$"mdl/lamps/halogen_light_ceiling_off_broken.rmdl",$"mdl/lamps/halogen_light_ceiling_off.rmdl",$"mdl/lamps/security_light_01_off.rmdl",$"mdl/lamps/light_fc.rmdl",$"mdl/lamps/light_hanging_industrial_on.rmdl"] -file.kc_assets ["mdl/utilities_1"] <- [$"mdl/utilities/ceiling_vent_metal.rmdl",$"mdl/utilities/wall_Waterpipe.rmdl",$"mdl/utilities/wires_hanging_64.rmdl",$"mdl/utilities/wire_hanging_cluster_03.rmdl",$"mdl/utilities/power_gen1.rmdl",$"mdl/utilities/wire_ceiling_mounts_corner_l.rmdl",$"mdl/utilities/wire_ceiling_mounts_corner.rmdl",$"mdl/utilities/wires_ground_coils_01.rmdl",$"mdl/utilities/wire_ceiling_mounts_straight.rmdl",$"mdl/utilities/wire_ground_coils_02.rmdl",$"mdl/utilities/wire_ground_coils_03.rmdl",$"mdl/utilities/wire_bundle_01.rmdl",$"mdl/utilities/swamp_cofferdam_45_double_01.rmdl",$"mdl/utilities/swamp_cofferdam_single_endcap_01.rmdl",$"mdl/utilities/swamp_cofferdam_90_single_02.rmdl",$"mdl/utilities/power_cell_64.rmdl",$"mdl/utilities/power_cell_64_empty.rmdl",$"mdl/utilities/wire_exposed_bundle_left_up_curve.rmdl",$"mdl/utilities/power_cell_40.rmdl",$"mdl/utilities/wire_exposed_bundle_hanging.rmdl",$"mdl/utilities/power_cell_64_single_01.rmdl",$"mdl/utilities/swamp_cofferdam_single_01.rmdl",$"mdl/utilities/wire_ground_coils_04.rmdl",$"mdl/utilities/modular_wire_cluster_10.rmdl",$"mdl/utilities/modular_wire_cluster_09.rmdl"] -file.kc_assets ["mdl/utilities_2"] <- [$"mdl/utilities/modular_wire_cluster_03.rmdl",$"mdl/utilities/modular_wire_cluster_02.rmdl",$"mdl/utilities/modular_wire_cluster_01.rmdl"] -file.kc_assets ["mdl/signs_1"] <- [$"mdl/signs/sign_relic_warning_01.rmdl",$"mdl/signs/sign_service_shaft_01.rmdl",$"mdl/signs/sign_service_shaft_02.rmdl",$"mdl/signs/signage_plates_metal/sign_plate_a.rmdl",$"mdl/signs/signage_plates_metal/sign_plate_c.rmdl",$"mdl/signs/street_sign_arrow.rmdl",$"mdl/signs/street_sign_rail_distance_02.rmdl",$"mdl/signs/thumper_signs_03.rmdl",$"mdl/signs/runoff_signs/pump_distance_sign.rmdl",$"mdl/signs/sign_caution_red_light_01.rmdl",$"mdl/signs/sign_flame_red.rmdl",$"mdl/signs/signage_plates_metal/sign_plate_f.rmdl",$"mdl/signs/signage_plates_metal/post_a_basic.rmdl",$"mdl/signs/signage_plates_metal/sign_plate_e.rmdl",$"mdl/signs/signage_plates_metal/post_b_basic.rmdl",$"mdl/signs/runoff_signs/ingot_company_sign.rmdl",$"mdl/signs/runoff_signs/ingot_company_sign2.rmdl",$"mdl/signs/runoff_signs/sewage_outlet_sign.rmdl",$"mdl/signs/runoff_signs/station_pump_sign.rmdl",$"mdl/signs/runoff_signs/employees_only_sign.rmdl",$"mdl/signs/sign_market_meats_on.rmdl",$"mdl/signs/sign_neon_public_market_01_a.rmdl"] -file.kc_assets ["mdl/imc_interior_1"] <- [$"mdl/imc_interior/imc_int_fusebox_01.rmdl",$"mdl/imc_interior/wrapped_pipe_256.rmdl",$"mdl/imc_interior/wrapped_pipe_128.rmdl",$"mdl/imc_interior/wrapped_pipe_bent.rmdl",$"mdl/imc_interior/ripped_pipe_64.rmdl"] -file.kc_assets ["mdl/slum_city_1"] <- [$"mdl/slum_city/slumcity_grow_room_rack_lift_motor_02.rmdl",$"mdl/slum_city/slumcity_pipemetal_256_b.rmdl",$"mdl/slum_city/slumcity_pipemetal_256_a.rmdl",$"mdl/slum_city/slumcity_pipe_bracket_corrugated_metal_a.rmdl",$"mdl/slum_city/slumcity_pipeplastic_128_a.rmdl",$"mdl/slum_city/slumcity_pipemetal_32_walljunc_a.rmdl",$"mdl/slum_city/slumcity_pipemetal_64_b.rmdl",$"mdl/slum_city/slumcity_pipemetal_64_c.rmdl",$"mdl/slum_city/slumcity_pipemetal_64_a.rmdl",$"mdl/slum_city/slumcity_pipeplastic_16_90junc_a.rmdl",$"mdl/slum_city/slumcity_pipemetal_16_walljunc_a.rmdl",$"mdl/slum_city/slumcity_pipemetal_8_walljunc_a.rmdl",$"mdl/slum_city/slumcity_pipemetal_8_junc_a.rmdl",$"mdl/slum_city/slumcity_pipe_256_corrugated_metal_a.rmdl",$"mdl/slum_city/slumcity_pipe_128_corrugated_metal_a.rmdl",$"mdl/slum_city/slumcity_pipe_64_corrugated_metal_b.rmdl",$"mdl/slum_city/slumcity_pipe_64_corrugated_metal_a.rmdl",$"mdl/slum_city/slumcity_pipe_90junc_corrugated_metal_a.rmdl",$"mdl/slum_city/slumcity_pipe_32_corrugated_metal_b.rmdl",$"mdl/slum_city/slumcity_pipe_32_corrugated_metal_a.rmdl",$"mdl/slum_city/slumcity_pipe_16_corrugated_metal_a.rmdl",$"mdl/slum_city/slumcity_fencewall_128x72_dirty.rmdl",$"mdl/slum_city/slumcity_industrial_scaffolding_128x128_tarp_c.rmdl",$"mdl/slum_city/slumcity_industrial_scaffolding_32x128_tarp_c.rmdl",$"mdl/slum_city/slumcity_column01_40x128_dirty_a.rmdl"] -file.kc_assets ["mdl/slum_city_2"] <- [$"mdl/slum_city/slumcity_fencewall_64x72_dirty.rmdl",$"mdl/slum_city/slumcity_fencewall_32x72_dirty.rmdl",$"mdl/slum_city/slumcity_industrial_scaffolding_128x128_tarp_d.rmdl",$"mdl/slum_city/slumcity_industrial_scaffolding_32x128_tarp_b.rmdl",$"mdl/slum_city/slumcity_girdering_256x16_dirty_b.rmdl",$"mdl/slum_city/slumcity_pipemetal_128_a.rmdl",$"mdl/slum_city/slumcity_pipemetal_16_junc_b.rmdl",$"mdl/slum_city/slumcity_pipemetal_32_a.rmdl",$"mdl/slum_city/slumcity_pipemetal_16_junc_a.rmdl",$"mdl/slum_city/slumcity_pipeplastic_8_90junc_a.rmdl",$"mdl/slum_city/slumcity_pipemetal_16_a.rmdl",$"mdl/slum_city/slumcity_pipemetal_8_junc_b.rmdl",$"mdl/slum_city/slumcity_pipemetal_8_junc_c.rmdl",$"mdl/slum_city/slumcity_industrial_scaffolding_64x128_tarp_d.rmdl",$"mdl/slum_city/slumcity_pipe_32_corrugated_metal_c.rmdl",$"mdl/slum_city/slumcity_pipe_16_corrugated_metal_b.rmdl",$"mdl/slum_city/slumcity_pipe_16_corrugated_metal_c.rmdl",$"mdl/slum_city/slumcity_pipe_8_corrugated_metal_a.rmdl",$"mdl/slum_city/slumcity_grow_room_fan_01.rmdl",$"mdl/slum_city/slumcity_building_fan_frame_01.rmdl"] -file.kc_assets ["mdl/imc_base_1"] <- [$"mdl/imc_base/light_wall_imc_01.rmdl",$"mdl/imc_base/light_wall_imc_01_on.rmdl",$"mdl/imc_base/garage_blast_shield_IMC_01.rmdl",$"mdl/imc_base/chain_link_post_IMC_01.rmdl"] -file.kc_assets ["mdl/pipes_1"] <- [$"mdl/pipes/pipe_modular_painted_grey_256.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_256.rmdl",$"mdl/pipes/pipe_modular_painted_red_256.rmdl",$"mdl/pipes/pipe_modular_painted_grey_128.rmdl",$"mdl/pipes/pipe_modular_painted_red_128.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_128.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_64.rmdl",$"mdl/pipes/pipe_modular_painted_grey_64.rmdl",$"mdl/pipes/pipe_modular_painted_red_64.rmdl",$"mdl/pipes/pipe_modular_painted_grey_32_valve.rmdl",$"mdl/pipes/pipe_modular_painted_red_32_valve.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_32_valve.rmdl",$"mdl/pipes/pipe_modular_painted_grey_32_tjunk.rmdl",$"mdl/pipes/pipe_modular_painted_red_32_tjunk.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_32_tjunk.rmdl",$"mdl/pipes/pipe_modular_painted_grey_corner.rmdl",$"mdl/pipes/pipe_modular_painted_red_corner.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_corner.rmdl",$"mdl/pipes/pipe_modular_painted_grey_32_03.rmdl",$"mdl/pipes/pipe_modular_painted_grey_32.rmdl",$"mdl/pipes/pipe_modular_painted_grey_32_04.rmdl",$"mdl/pipes/pipe_modular_painted_red_32.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_32.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_32_04.rmdl",$"mdl/pipes/pipe_modular_painted_grey_45_angle.rmdl"] -file.kc_assets ["mdl/pipes_2"] <- [$"mdl/pipes/pipe_modular_painted_grey_16.rmdl",$"mdl/pipes/pipe_modular_painted_red_16.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_16.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_8.rmdl",$"mdl/pipes/pipe_modular_painted_grey_8.rmdl",$"mdl/pipes/pipe_modular_painted_red_8.rmdl",$"mdl/pipes/slum_pipe_large_blue_64_01.rmdl",$"mdl/pipes/slum_pipe_large_yellow_64_01.rmdl",$"mdl/pipes/slum_pipe_large_blue_32_01.rmdl",$"mdl/pipes/slum_pipe_large_yellow_32_01.rmdl",$"mdl/pipes/pipe_small_128_01.rmdl",$"mdl/pipes/pipe_small_64_01.rmdl",$"mdl/pipes/pipe_small_angle_01.rmdl",$"mdl/pipes/airduct_l_128.rmdl",$"mdl/pipes/airduct_l_80.rmdl",$"mdl/pipes/airduct_l_turn_long_side.rmdl",$"mdl/pipes/airduct_l_vent.rmdl",$"mdl/pipes/slum_pipe_large_blue_512_01.rmdl",$"mdl/pipes/slum_pipe_large_yellow_512_01.rmdl",$"mdl/pipes/slum_pipe_large_blue_256_01.rmdl",$"mdl/pipes/slum_pipe_large_yellow_256_01.rmdl",$"mdl/pipes/slum_pipe_large_yellow_256_02.rmdl",$"mdl/pipes/slum_pipe_large_blue_tjunc_01.rmdl",$"mdl/pipes/slum_pipe_large_blue_angle_01.rmdl",$"mdl/pipes/slum_pipe_large_yellow_angle_01.rmdl"] -file.kc_assets ["mdl/pipes_3"] <- [$"mdl/pipes/slum_pipe_large_blue_128_01.rmdl",$"mdl/pipes/slum_pipe_large_yellow_128_01.rmdl",$"mdl/pipes/pipe_small_16_01.rmdl",$"mdl/pipes/pipe_large_bracket_02.rmdl",$"mdl/pipes/pipe_modular_painted_white_256.rmdl",$"mdl/pipes/pipe_modular_painted_white_128.rmdl",$"mdl/pipes/pipe_modular_painted_white_64.rmdl",$"mdl/pipes/pipe_modular_painted_white_32_valve.rmdl",$"mdl/pipes/pipe_modular_painted_white_32_tjunk.rmdl",$"mdl/pipes/pipe_modular_painted_white_corner.rmdl",$"mdl/pipes/pipe_modular_painted_red_32_03.rmdl",$"mdl/pipes/pipe_modular_painted_grey_32_02.rmdl",$"mdl/pipes/pipe_modular_painted_red_32_02.rmdl",$"mdl/pipes/pipe_modular_painted_white_32.rmdl",$"mdl/pipes/pipe_modular_painted_white_32_04.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_32_03.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_45_angle.rmdl",$"mdl/pipes/pipe_modular_painted_white_16.rmdl",$"mdl/pipes/pipe_frac_ground_128_01.rmdl",$"mdl/pipes/pipe_frac_ground_128_brk.rmdl",$"mdl/pipes/pipe_wall_system_valve.rmdl",$"mdl/pipes/pipe_med_metal_blue_straight_32.rmdl",$"mdl/pipes/pipe_med_metal_blue_elbow.rmdl",$"mdl/pipes/pipe_med_metal_ground_ring_01.rmdl",$"mdl/pipes/pipe_med_metal_rust_ring.rmdl"] -file.kc_assets ["mdl/pipes_4"] <- [$"mdl/pipes/pipe_large_256_01.rmdl",$"mdl/pipes/pipe_large_256_01_red.rmdl",$"mdl/pipes/pipe_large_angle_01.rmdl",$"mdl/pipes/pipe_large_128_01.rmdl",$"mdl/pipes/pipe_large_128_01_red.rmdl",$"mdl/pipes/slum_pipe_large_bracket_01.rmdl",$"mdl/pipes/pipe_modular_painted_red_02_64.rmdl",$"mdl/pipes/pipe_modular_painted_red_02_corner.rmdl",$"mdl/pipes/pipe_modular_painted_red_02_8.rmdl",$"mdl/pipes/slum_pipe_large_blue_angle_cap_01.rmdl",$"mdl/pipes/pipe_refinery_section128.rmdl",$"mdl/pipes/slum_pipe_large_blue_angle_endcap_01.rmdl",$"mdl/pipes/slum_pipe_large_blue_256_angle_01.rmdl",$"mdl/pipes/slum_pipe_large_yellow_256_angle_01.rmdl",$"mdl/pipes/pipe_large_64_01.rmdl",$"mdl/pipes/pipe_large_32_01.rmdl",$"mdl/pipes/pipe_small_8_01.rmdl",$"mdl/pipes/pipe_frac_ground_128_brk_cap.rmdl"] -file.kc_assets ["mdl/beacon_1"] <- [$"mdl/beacon/construction_scaff_128_64_64.rmdl",$"mdl/beacon/beacon_server_wall_mount_01_off.rmdl",$"mdl/beacon/construction_scaff_tarp_floor_01.rmdl",$"mdl/beacon/construction_scaff_128_64_128_02.rmdl",$"mdl/beacon/beacon_wire_ground_coils_04.rmdl",$"mdl/beacon/mendoko_wires_ground_coils_01.rmdl",$"mdl/beacon/beacon_wire_ground_coils_02.rmdl",$"mdl/beacon/mendoko_wire_ground_coils_02.rmdl",$"mdl/beacon/beacon_wire_ground_coils_03.rmdl",$"mdl/beacon/mendoko_wire_ground_coils_03.rmdl",$"mdl/beacon/modular_hose_yellow_128_bend_01.rmdl",$"mdl/beacon/modular_hose_yellow_128_01.rmdl",$"mdl/beacon/modular_hose_yellow_128_02.rmdl",$"mdl/beacon/beacon_wire_cluster_03.rmdl",$"mdl/beacon/mendoko_wire_cluster_03.rmdl",$"mdl/beacon/beacon_wire_cluster_02.rmdl",$"mdl/beacon/mendoko_wire_cluster_02.rmdl",$"mdl/beacon/beacon_wire_cluster_01.rmdl",$"mdl/beacon/beacon_wire_cluster_04.rmdl",$"mdl/beacon/mendoko_wire_cluster_01.rmdl",$"mdl/beacon/modular_hose_yellow_32_01.rmdl",$"mdl/beacon/mendoko_wire_cluster_08_l.rmdl",$"mdl/beacon/modular_hose_yellow_corner_01.rmdl",$"mdl/beacon/beacon_wire_cluster_06.rmdl",$"mdl/beacon/generator_fan_house_cap_01.rmdl"] -file.kc_assets ["mdl/beacon_2"] <- [$"mdl/beacon/construction_plastic_mat_black_01.rmdl",$"mdl/beacon/construction_plastic_mat_white_01.rmdl",$"mdl/beacon/beacon_server_half_stand_01.rmdl",$"mdl/beacon/beacon_server_stand_01.rmdl",$"mdl/beacon/construction_plastic_mat_clear_01.rmdl",$"mdl/beacon/beacon_construction_flag_large_animated.rmdl",$"mdl/beacon/construction_scaff_post_256_01.rmdl",$"mdl/beacon/beacon_railing_lrg_02.rmdl",$"mdl/beacon/mendoko_wire_ground_coils_04.rmdl",$"mdl/beacon/beacon_wires_ground_coils_01.rmdl",$"mdl/beacon/modular_hose_yellow_512_02.rmdl",$"mdl/beacon/modular_hose_yellow_64_01.rmdl",$"mdl/beacon/beacon_server_single_01.rmdl"] -file.kc_assets ["mdl/floating_village_1"] <- [$"mdl/floating_village/lagoon_window_metal_shutters_open_80x128.rmdl",$"mdl/floating_village/lagoon_window_metal_shutters_open_80x64.rmdl",$"mdl/floating_village/roof_primitive_03_with_hole_white.rmdl",$"mdl/floating_village/hut_panel_01.rmdl",$"mdl/floating_village/lagoon_workshop_beam_arch_01.rmdl",$"mdl/floating_village/lagoon_building_hanging_nets_03.rmdl",$"mdl/floating_village/awning_cloth_01_blue.rmdl",$"mdl/floating_village/awning_cloth_01_green.rmdl",$"mdl/floating_village/panel_primitive_01.rmdl",$"mdl/floating_village/panel_primitive_02.rmdl",$"mdl/floating_village/panel_primitive_03.rmdl",$"mdl/floating_village/lagoon_hut_floor_support_posts_04.rmdl",$"mdl/floating_village/lagoon_hut_floor_support_posts_03.rmdl",$"mdl/floating_village/hut_window_01.rmdl",$"mdl/floating_village/lagoon_hut_floor_support_posts_01.rmdl",$"mdl/floating_village/lagoon_hut_floor_support_posts_02.rmdl",$"mdl/floating_village/hut_window_02.rmdl",$"mdl/floating_village/lagoon_building_post_02.rmdl",$"mdl/floating_village/lagoon_building_hanging_nets_02.rmdl",$"mdl/floating_village/lagoon_building_stairs_quad_step.rmdl",$"mdl/floating_village/hut_window_01_closed.rmdl",$"mdl/floating_village/lagoon_building_post_01.rmdl",$"mdl/floating_village/walkway_wood_pole_01.rmdl",$"mdl/floating_village/lagoon_building_post_03.rmdl",$"mdl/floating_village/wood_pole_09.rmdl"] -file.kc_assets ["mdl/floating_village_2"] <- [$"mdl/floating_village/lagoon_building_stairs_double_step.rmdl",$"mdl/floating_village/pipes_metal_02.rmdl",$"mdl/floating_village/wood_pole_07.rmdl",$"mdl/floating_village/buoy_barrel_01.rmdl",$"mdl/floating_village/walkway_wood_plank_02.rmdl",$"mdl/floating_village/walkway_wood_plank_01.rmdl",$"mdl/floating_village/walkway_wood_plank_04.rmdl",$"mdl/floating_village/lagoon_building_stairs_single_step.rmdl",$"mdl/floating_village/wood_pole_01.rmdl",$"mdl/floating_village/pipes_metal_04.rmdl",$"mdl/floating_village/walkway_wood_plank_03.rmdl",$"mdl/floating_village/wood_pole_05.rmdl",$"mdl/floating_village/pipes_metal_05.rmdl",$"mdl/floating_village/wood_pole_02.rmdl",$"mdl/floating_village/wood_pole_04.rmdl",$"mdl/floating_village/buoy_barrel_rope_01.rmdl",$"mdl/floating_village/pipes_metal_07.rmdl",$"mdl/floating_village/wood_pole_08.rmdl",$"mdl/floating_village/lagoon_hut_ceiling_beam_support_01.rmdl",$"mdl/floating_village/lagoon_window_metal_shutters_rails_80x128.rmdl",$"mdl/floating_village/lagoon_window_metal_shutters_open.rmdl",$"mdl/floating_village/lagoon_window_metal_shutters_rails_80x64.rmdl",$"mdl/floating_village/fish_net_01.rmdl",$"mdl/floating_village/fish_net_03.rmdl",$"mdl/floating_village/lagoon_building_hanging_nets_01.rmdl"] -file.kc_assets ["mdl/floating_village_3"] <- [$"mdl/floating_village/lagoon_building_bamboo_posts_01.rmdl",$"mdl/floating_village/lagoon_building_bamboo_posts_03.rmdl",$"mdl/floating_village/lagoon_building_bamboo_posts_04.rmdl",$"mdl/floating_village/lagoon_building_bamboo_posts_02.rmdl",$"mdl/floating_village/roof_primitive_03_white.rmdl",$"mdl/floating_village/lagoon_building_post_hook.rmdl",$"mdl/floating_village/buoy_hanging_06.rmdl",$"mdl/floating_village/buoy_hanging_03.rmdl",$"mdl/floating_village/buoy_hanging_05.rmdl",$"mdl/floating_village/buoy_hanging_02.rmdl",$"mdl/floating_village/buoy_hanging_04.rmdl",$"mdl/floating_village/roof_primitive_01_white.rmdl",$"mdl/floating_village/roof_primitive_02_white.rmdl",$"mdl/floating_village/fish_net_02.rmdl",$"mdl/floating_village/panel_primitive_01_white.rmdl",$"mdl/floating_village/panel_primitive_02_white.rmdl",$"mdl/floating_village/lagoon_hut_support_posts_04.rmdl",$"mdl/floating_village/lagoon_hut_support_posts_09.rmdl",$"mdl/floating_village/fish_basket_02.rmdl",$"mdl/floating_village/roof_primitve_metal_02.rmdl",$"mdl/floating_village/roof_primitve_metal_01.rmdl",$"mdl/floating_village/pipes_metal_01.rmdl",$"mdl/floating_village/fish_basket_01.rmdl",$"mdl/floating_village/walkway_wood_01_512.rmdl",$"mdl/floating_village/lagoon_hut_storage_shelf_large_01.rmdl"] -file.kc_assets ["mdl/homestead_1"] <- [$"mdl/homestead/homestead_floor_panel_01.rmdl",$"mdl/homestead/homestead_wind_turbine.rmdl",$"mdl/homestead/homestead_floor_panel_closed_02.rmdl",$"mdl/homestead/homestead_floor_panel_cap_02.rmdl",$"mdl/homestead/weathervane_generator.rmdl"] -file.kc_assets ["mdl/door_1"] <- [$"mdl/door/canyonlands_door_single_02_hinges.rmdl",$"mdl/door/canyonlands_door_single_02_damaged.rmdl",$"mdl/door/canyonlands_door_single_02.rmdl",$"mdl/door/door_256x256x8_elevatorstyle02_animated.rmdl",$"mdl/door/canyonlands_door_vfx_bl.rmdl",$"mdl/door/canyonlands_door_vfx_br.rmdl",$"mdl/door/canyonlands_door_vfx_c.rmdl",$"mdl/door/canyonlands_door_vfx_uc.rmdl",$"mdl/door/canyonlands_door_vfx_ul.rmdl",$"mdl/door/canyonlands_door_vfx_ur.rmdl",$"mdl/door/canyonlands_door_vfx_l.rmdl",$"mdl/door/canyonlands_lift_door_frame_large_01.rmdl",$"mdl/door/survival_door_frame_double_slums_01.rmdl"] -file.kc_assets ["mdl/furniture_1"] <- [$"mdl/furniture/office_desk_accessories_mug.rmdl",$"mdl/furniture/office_desk_accessories_clipboard.rmdl",$"mdl/furniture/kitchen_set02_black_old_counter1_1.rmdl",$"mdl/furniture/kitchen_set02_black_old_sink01.rmdl",$"mdl/furniture/kitchen_set04_table01.rmdl",$"mdl/furniture/overhead_cabnet_set.rmdl"] -file.kc_assets ["mdl/vehicles_r5_1"] <- [$"mdl/vehicles_r5/land/msc_forklift_imc_v2/veh_land_msc_forklift_imc_v2_static.rmdl",$"mdl/vehicles_r5/land/msc_truck_samson_v2/veh_land_msc_truck_samson_v2.rmdl",$"mdl/vehicles_r5/land/mil_tank_paladin_mkv/veh_land_mil_tank_paladin_mkv.rmdl",$"mdl/vehicles_r5/air/dropship_goblin/veh_air_dship_goblin_prk_opn_v1_static.rmdl"] -file.kc_assets ["mdl/props_1"] <- [$"mdl/props/tire_samson_v2_01/tire_samson_v2_01.rmdl",$"mdl/props/death_box/death_box_02.rmdl",$"mdl/props/global_access_panel_button/global_access_panel_button_console_w_stand.rmdl",$"mdl/props/loot_bin/loot_bin_01_animated.rmdl",$"mdl/props/zipline_balloon/zipline_balloon_base.rmdl",$"mdl/props/zipline_balloon/zipline_balloon.rmdl",$"mdl/props/pathfinder_beacon_radar/pathfinder_beacon_radar_animated.rmdl",$"mdl/props/ultimate_accelerant_usb/ultimate_accelerant_usb_static.rmdl",$"mdl/props/caustic_flask/caustic_flask.rmdl",$"mdl/props/caustic_mug/caustic_mug.rmdl",$"mdl/props/skull/skull_gladcard.rmdl",$"mdl/props/octane_wrench/octane_wrench_menu_static.rmdl",$"mdl/props/death_box/death_box_01_gladcard.rmdl",$"mdl/props/flask/prop_flask.rmdl",$"mdl/props/tablet/tablet_mini.rmdl",$"mdl/props/crypto_drone/crypto_drone_destoyed_01.rmdl",$"mdl/props/crypto_drone/crypto_drone_destoyed_02.rmdl",$"mdl/props/crypto_drone/crypto_drone_destoyed_03.rmdl",$"mdl/props/crypto_drone/crypto_drone_destoyed_04.rmdl"] -file.kc_assets ["mdl/eden_1"] <- [$"mdl/eden/beacon_small_screen_02_off.rmdl",$"mdl/eden/eden_electrical_pole_01.rmdl",$"mdl/eden/eden_electrical_transformer_01.rmdl",$"mdl/eden/eden_wirel_mess_01.rmdl"] -file.kc_assets ["mdl/foliage_1"] <- [$"mdl/foliage/ivy_green_large_hanging_02.rmdl",$"mdl/foliage/plant_tropical_ground_leafy_01.rmdl",$"mdl/foliage/foliage_ground_plants.rmdl",$"mdl/foliage/tree_brush_yellow_large_03.rmdl",$"mdl/foliage/tree_acacia_small_01.rmdl",$"mdl/foliage/leaves_ground_spread_01.rmdl",$"mdl/foliage/lilypad_clusters_05_flowing.rmdl",$"mdl/foliage/grass_burnt_long_02.rmdl",$"mdl/foliage/tree_swampland_canopy_01.rmdl",$"mdl/foliage/moss_green_hanging_large_01.rmdl",$"mdl/foliage/moss_green_hanging_large_04.rmdl",$"mdl/foliage/leaves_ground_spread_03.rmdl",$"mdl/foliage/leaves_ground_spread_02.rmdl",$"mdl/foliage/plant_fern.rmdl",$"mdl/foliage/pine_needle_pile_05.rmdl",$"mdl/foliage/pine_needle_pile_02.rmdl",$"mdl/foliage/vines_decal_02.rmdl",$"mdl/foliage/vines_decal_03.rmdl",$"mdl/foliage/vines_decal_01.rmdl",$"mdl/foliage/ground_plant_large_moss_yellow_vert_color.rmdl",$"mdl/foliage/tree_swampland_branch_large_03.rmdl",$"mdl/foliage/plant_green_dark_small_02.rmdl",$"mdl/foliage/tree_green_forest_med_01.rmdl",$"mdl/foliage/grass_02_desert_large.rmdl",$"mdl/foliage/grass_02_desert_64x64.rmdl"] -file.kc_assets ["mdl/foliage_2"] <- [$"mdl/foliage/grass_02_desert_large_16x16.rmdl",$"mdl/foliage/grass_brown_long_tall_03.rmdl",$"mdl/foliage/grass_brown_long_03.rmdl",$"mdl/foliage/grass_desert_02.rmdl",$"mdl/foliage/grass_high_04.rmdl",$"mdl/foliage/grass_brown_long_tall_02.rmdl",$"mdl/foliage/grass_brown_long_02.rmdl",$"mdl/foliage/grass_desert_01.rmdl",$"mdl/foliage/grass_brown_long_tall_01.rmdl",$"mdl/foliage/grass_brown_long_04.rmdl",$"mdl/foliage/grass_brown_long_01.rmdl",$"mdl/foliage/grass_green_long_03_animated.rmdl",$"mdl/foliage/grass_green_long_02_animated.rmdl",$"mdl/foliage/grass_green_long_01_animated.rmdl",$"mdl/foliage/bush_green_forest_01.rmdl",$"mdl/foliage/bush_desert_01.rmdl",$"mdl/foliage/grass_burnt_long_03.rmdl",$"mdl/foliage/ivy_green_large_hanging_05.rmdl",$"mdl/foliage/ivy_green_large_hanging_04.rmdl",$"mdl/foliage/ivy_green_large_hanging_10.rmdl",$"mdl/foliage/ivy_green_large_hanging_03.rmdl",$"mdl/foliage/ivy_green_large_hanging_01.rmdl",$"mdl/foliage/ivy_green_large_hanging_07.rmdl",$"mdl/foliage/ivy_green_large_hanging_09.rmdl",$"mdl/foliage/tree_roots_03_light.rmdl"] -file.kc_assets ["mdl/barriers_1"] <- [$"mdl/barriers/guard_rail_01_256.rmdl",$"mdl/barriers/guard_rail_01_128.rmdl",$"mdl/barriers/concrete/concrete_barrier_fence.rmdl",$"mdl/barriers/guard_rail_post_01.rmdl",$"mdl/barriers/guard_rail_01_64.rmdl",$"mdl/barriers/guard_rail_01.rmdl",$"mdl/barriers/sandbags_curved_01.rmdl",$"mdl/barriers/sandbags_large_01.rmdl",$"mdl/barriers/sandbags_double_01.rmdl",$"mdl/barriers/sandbags_bent_01.rmdl",$"mdl/barriers/sandbags_single_01.rmdl",$"mdl/barriers/sewer_concrete_barrier_28_32_01.rmdl",$"mdl/barriers/guard_rail_end_02.rmdl",$"mdl/barriers/sandbags_ripped_01.rmdl"] -file.kc_assets ["mdl/canyonlands_1"] <- [$"mdl/canyonlands/canyonlands_zone_sign_01.rmdl",$"mdl/canyonlands/canyonlands_zone_sign_03b.rmdl",$"mdl/canyonlands/canyonlands_zone_sign_03.rmdl",$"mdl/canyonlands/canyonlands_zone_sign_02.rmdl",$"mdl/canyonlands/fabric_canopy_pole_256_01.rmdl",$"mdl/canyonlands/canyonlands_light_pole_wires_01.rmdl",$"mdl/canyonlands/clands_wall_wire_cluster_512_01_a.rmdl",$"mdl/canyonlands/canyonlands_river_rock_03.rmdl",$"mdl/canyonlands/canyonlands_modular_crater_01.rmdl",$"mdl/canyonlands/canyonlands_modular_crater_03.rmdl",$"mdl/canyonlands/canyonlands_modular_crater_02.rmdl",$"mdl/canyonlands/canyonlands_stalactite_01.rmdl",$"mdl/canyonlands/canyonlands_stalactite_02.rmdl",$"mdl/canyonlands/canyonlands_stalactite_03.rmdl",$"mdl/canyonlands/fabric_canopy_02.rmdl",$"mdl/canyonlands/dirty_toolchest_tarp_01.rmdl",$"mdl/canyonlands/fabric_canopy_01.rmdl",$"mdl/canyonlands/zone_14_pillar_a.rmdl",$"mdl/canyonlands/concrete_broken_chunk_01.rmdl",$"mdl/canyonlands/concrete_broken_chunk_02.rmdl",$"mdl/canyonlands/canyonlands_light_pole_01.rmdl",$"mdl/canyonlands/clands_wall_wire_cluster_256_01_a.rmdl",$"mdl/canyonlands/sewer_hole_01.rmdl",$"mdl/canyonlands/clands_wall_vent_round_01_a.rmdl",$"mdl/canyonlands/canyonlands_river_rock_02.rmdl"] -file.kc_assets ["mdl/canyonlands_2"] <- [$"mdl/canyonlands/canyonlands_canon_01.rmdl",$"mdl/canyonlands/canyonlands_river_rock_01.rmdl",$"mdl/canyonlands/base_elevator_BNW_cable_01.rmdl",$"mdl/canyonlands/lagoon_overgrown_moss_04.rmdl",$"mdl/canyonlands/lagoon_overgrown_moss_05.rmdl",$"mdl/canyonlands/lagoon_overgrown_moss_06.rmdl",$"mdl/canyonlands/passthrough_base_decal_01.rmdl",$"mdl/canyonlands/passthrough_base_decal_02.rmdl",$"mdl/canyonlands/cylinder_BNW_01.rmdl",$"mdl/canyonlands/godray_small_orange_01.rmdl"] -file.kc_assets ["mdl/levels_terrain_1"] <- [$"mdl/levels_terrain/mp_rr_canyonlands/canyonland_pipe_ring.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/clands_roof_bars_01_fglass_blue.rmdl",$"mdl/levels_terrain/mp_lobby/mp_setting_menu.rmdl",$"mdl/levels_terrain/mp_lobby/mp_character_select_geo.rmdl",$"mdl/levels_terrain/mp_lobby/mp_character_select_smoke.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/canyonland_terrain_section_02_pipe.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/hydroelectric_dam_facility_pipe_ramp_02.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/hydroelectric_dam_facility_pipe_ramp_04.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/hydroelectric_dam_facility_pipe_ramp_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/hydroelectric_dam_facility_pipe_ramp_03.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/military_bridge_pillar_01.rmdl",$"mdl/levels_terrain/sp_tday/tday_vtol_landing_pad_square_01.rmdl",$"mdl/levels_terrain/mp_runoff/spherical_pressure_tank_base_LM.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/lagoon_interior_stair_rope_03.rmdl",$"mdl/levels_terrain/mp_runoff/spherical_pressure_tank_cap_LM.rmdl",$"mdl/levels_terrain/mp_runoff/spherical_pressure_tank_supports_LM.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/lagoon_interior_stair_post_02.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/lagoon_interior_stair_post_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/lagoon_interior_stair_rope_02.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/lagoon_interior_stair_post_03.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/lagoon_interior_stair_rope_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/military_bridge_catwalk_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/lagoon_interior_stair_rope_04.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/military_bridge_catwalk_02.rmdl",$"mdl/levels_terrain/floating_village/hut_window_01.rmdl"] -file.kc_assets ["mdl/levels_terrain_2"] <- [$"mdl/levels_terrain/mp_runoff/runoff_building_greeble_02.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/military_bridge_cable_stopper_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/clands_roof_door_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/clands_roof_bars_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/lagoon_ceiling_beams_04.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/lagoon_ceiling_beams_03.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/dog_whistle_tower_legs_01.rmdl",$"mdl/levels_terrain/mp_boneyard/rib_giant_07.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/canyonlands_bone_custom_01.rmdl",$"mdl/levels_terrain/mp_boneyard/rib_giant_03.rmdl",$"mdl/levels_terrain/mp_boneyard/rib_giant_02.rmdl",$"mdl/levels_terrain/mp_boneyard/rib_giant_05.rmdl",$"mdl/levels_terrain/mp_boneyard/rib_gaint_05.rmdl",$"mdl/levels_terrain/mp_boneyard/rib_giant_04.rmdl",$"mdl/levels_terrain/mp_boneyard/rib_gaint_06.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/rr_canyonlands_terrain01_staging_area_rock_top.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/swamp_dam_pillar_tall_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/swamp_dam_drain_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/zone11_center_water_round.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/military_bridge_spacer_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/military_bridge_wall_connection_02.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/canyonlands_milbase_structure_pipes_03.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/military_bridge_end_cap.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/canyonlands_mall_bone_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/canyonlands_mall_bone_02.rmdl"] -file.kc_assets ["mdl/levels_terrain_3"] <- [$"mdl/levels_terrain/mp_rr_canyonlands/clands_bone_tarps_02_a.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/military_bridge_cable_support_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/section_11_terrain_platform_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/section_11_terrain_round_a.rmdl",$"mdl/levels_terrain/mp_boneyard/skull_gaint_top.rmdl",$"mdl/levels_terrain/mp_boneyard/skull_gaint_jaw.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/mil_base_large_01_tunnel_pipes.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/radar_dish_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/dog_whistle_tower_panel_03.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/zone_11_water_treatment_walkway_a.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/military_bridge_top_bar_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/military_bridge_cables_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/mp_starting_screens.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/radar_dish_cross_beam_middle_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/mil_base_south_ramp_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/dog_whistle_tower_panel_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/mil_base_pillar_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/canyonlands_runoff_interior_bldg_01_nocol.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/mil_base_south_pipes_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/canyonlands_milbase_structure_pipes_01.rmdl",$"mdl/levels_terrain/floating_village/floating_village_hut_01_skeleton.rmdl",$"mdl/levels_terrain/mp_runoff/biodome_runoff_nocol.rmdl",$"mdl/levels_terrain/floating_village/supported_hut_06_skeleton.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/hydroelectric_dam_facility_turbine_02.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/canyonlands_mall_roof_dome_01.rmdl"] -file.kc_assets ["mdl/runoff_1"] <- [$"mdl/runoff/runoff_railing_64_yellow.rmdl",$"mdl/runoff/runoff_railing_32_yellow.rmdl",$"mdl/runoff/runoff_railing_12_yellow.rmdl",$"mdl/runoff/runoff_railing_768_yellow.rmdl",$"mdl/runoff/runoff_doorframe_01.rmdl",$"mdl/runoff/runoff_railing_512_yellow.rmdl",$"mdl/runoff/runoff_railing_256_yellow.rmdl",$"mdl/runoff/runoff_doorframe_01b.rmdl",$"mdl/runoff/runoff_railing_128_yellow.rmdl",$"mdl/runoff/runoff_windowframe_03_bars.rmdl",$"mdl/runoff/runoff_windowframe_02.rmdl",$"mdl/runoff/runoff_windowframe_02_bars.rmdl",$"mdl/runoff/runoff_windowframe_01.rmdl",$"mdl/runoff/runoff_windowframe_01_bars.rmdl",$"mdl/runoff/runoff_fuel_tank_01.rmdl"] -file.kc_assets ["mdl/military_base_1"] <- [$"mdl/military_base/militaryfort_wall_corner_decal_number_01.rmdl",$"mdl/military_base/militaryfort_wall_corner_decal_number_02.rmdl",$"mdl/military_base/militaryfort_wall_decal_orange_arrow_01.rmdl",$"mdl/military_base/militaryfort_wall_corner_03.rmdl",$"mdl/military_base/militaryfort_wall_trim_01.rmdl",$"mdl/military_base/militarybunker_trim_8x128.rmdl",$"mdl/military_base/militaryfort_clamp_01.rmdl",$"mdl/military_base/militaryfort_wall_concrete_02_b.rmdl",$"mdl/military_base/militaryfort_wall_rooftop_01.rmdl",$"mdl/military_base/militarybunker_rooftop_01.rmdl",$"mdl/military_base/militaryfort_wall_concrete_02_a.rmdl",$"mdl/military_base/militarybunker_wall_corner_metal_01_b.rmdl",$"mdl/military_base/militaryfort_pillar_tall_corner_02.rmdl",$"mdl/military_base/militaryfort_pillar_tall_corner_01.rmdl",$"mdl/military_base/militaryfort_wall_corner_window_01.rmdl",$"mdl/military_base/militaryfort_wall_corner_01.rmdl",$"mdl/military_base/militaryfort_wall_buttress_01.rmdl",$"mdl/military_base/militaryfort_wall_corner_02.rmdl",$"mdl/military_base/militaryfort_pillar_corner_01.rmdl",$"mdl/military_base/militaryfort_wall_buttress_02b.rmdl",$"mdl/military_base/militaryfort_wall_buttress_02.rmdl",$"mdl/military_base/militaryfort_wall_corner_cap_01_a.rmdl",$"mdl/military_base/militaryfort_wall_corner_cap_01_b.rmdl",$"mdl/military_base/militaryfort_pipe_corner_red_01.rmdl",$"mdl/military_base/ceiling_piece_01.rmdl"] -file.kc_assets ["mdl/military_base_2"] <- [$"mdl/military_base/militarybunker_wall_256x128_metal_01_c.rmdl",$"mdl/military_base/militarybunker_pipe_straight_red_01_b.rmdl",$"mdl/military_base/militaryfort_wall_cap_filler_01_a.rmdl",$"mdl/military_base/militarybunker_wall_128x128_metal_01_d.rmdl",$"mdl/military_base/militarybunker_wall_corner_metal_01_a.rmdl",$"mdl/military_base/militarybunker_pipe_straight_red_01_a.rmdl",$"mdl/military_base/militarybunker_pipe_corner_red_01_b.rmdl",$"mdl/military_base/militaryfort_turret_pit_01.rmdl",$"mdl/military_base/militarybunker_wall_angled_ext_01_a.rmdl",$"mdl/military_base/militarybunker_wall_angled_ext_01_closed.rmdl",$"mdl/military_base/militarybunker_wall_angled_ext_01_opened.rmdl",$"mdl/military_base/militarybunker_wall_256x128_metal_01_a.rmdl",$"mdl/military_base/militarybunker_wall_256x128_metal_01_b.rmdl",$"mdl/military_base/militarybunker_wall_128x128_metal_01_b.rmdl",$"mdl/military_base/militarybunker_wall_128x128_metal_01_c.rmdl",$"mdl/military_base/militarybunker_wall_128x128_metal_01_a.rmdl",$"mdl/military_base/militaryfort_wall_corner_decal_stripes_01.rmdl",$"mdl/military_base/militaryfort_wall_corner_decal_stripes_02.rmdl",$"mdl/military_base/militaryfort_wall_corner_decal_stripes_03.rmdl"] -file.kc_assets ["mdl/Gibs_1"] <- [$"mdl/Gibs/wood_gib01e.rmdl",$"mdl/Gibs/wood_gib01d.rmdl",$"mdl/Gibs/wood_gib01c.rmdl",$"mdl/Gibs/wood_gib01b.rmdl",$"mdl/Gibs/wood_gib01a.rmdl",$"mdl/Gibs/Glass_shard01.rmdl",$"mdl/Gibs/Glass_shard02.rmdl",$"mdl/Gibs/Glass_shard03.rmdl",$"mdl/Gibs/Glass_shard04.rmdl",$"mdl/Gibs/Glass_shard05.rmdl",$"mdl/Gibs/Glass_shard06.rmdl",$"mdl/Gibs/metal_gib1.rmdl",$"mdl/Gibs/metal_gib2.rmdl",$"mdl/Gibs/metal_gib3.rmdl",$"mdl/Gibs/metal_gib4.rmdl"] -file.kc_assets ["mdl/props_debris_1"] <- [$"mdl/props_debris/concrete_chunk08a.rmdl",$"mdl/props_debris/concrete_chunk09a.rmdl",$"mdl/props_debris/concrete_chunk03a.rmdl",$"mdl/props_debris/concrete_chunk07a.rmdl"] -file.kc_assets ["mdl/vehicle_1"] <- [$"mdl/vehicle/droppod_loot/droppod_loot_LL_holo.rmdl",$"mdl/vehicle/goblin_dropship/goblin_dropship_debris_01.rmdl",$"mdl/vehicle/goblin_dropship/goblin_dropship_holo.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo7.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo6.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo5.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo4.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo3.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo2.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo1.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_afterburners.rmdl"] -file.kc_assets ["mdl/rocks_1"] <- [$"mdl/rocks/rock_small_02.rmdl",$"mdl/rocks/fract_chunk_small_03.rmdl",$"mdl/rocks/rock_white_chalk_modular_large_01.rmdl",$"mdl/rocks/rock_white_chalk_modular_wallrun_01.rmdl",$"mdl/rocks/rock_white_chalk_modular_flat_03.rmdl",$"mdl/rocks/rock_white_chalk_modular_cap_02.rmdl",$"mdl/rocks/rock_white_chalk_modular_wallrun_02.rmdl",$"mdl/rocks/rock_white_chalk_modular_02.rmdl",$"mdl/rocks/rock_white_chalk_modular_wallrun_03.rmdl",$"mdl/rocks/rock_white_chalk_modular_cap_01.rmdl",$"mdl/rocks/rock_white_chalk_modular_flat_01.rmdl",$"mdl/rocks/rock_white_chalk_modular_01_half_01.rmdl",$"mdl/rocks/rock_white_chalk_modular_01_half_02.rmdl",$"mdl/rocks/rock_white_chalk_modular_flat_02.rmdl",$"mdl/rocks/rock_white_chalk_sand_modular_large_01.rmdl",$"mdl/rocks/rock_white_chalk_sand_modular_flat_03.rmdl",$"mdl/rocks/rock_white_chalk_sand_modular_cap_02.rmdl",$"mdl/rocks/rock_white_chalk_sand_modular_wallrun_02.rmdl",$"mdl/rocks/rock_white_chalk_sand_modular_02.rmdl",$"mdl/rocks/rock_white_chalk_modular_01.rmdl",$"mdl/rocks/rock_white_chalk_sand_modular_wallrun_03.rmdl",$"mdl/rocks/rock_white_chalk_sand_modular_flat_02.rmdl",$"mdl/rocks/thunderdome_quarry_block_01.rmdl",$"mdl/rocks/thunderdome_quarry_block_01_orange.rmdl",$"mdl/rocks/thunderdome_quarry_block_03_orange.rmdl"] -file.kc_assets ["mdl/rocks_2"] <- [$"mdl/rocks/thunderdome_quarry_block_02.rmdl",$"mdl/rocks/thunderdome_quarry_block_02_orange.rmdl",$"mdl/rocks/rock_sand_large_02.rmdl",$"mdl/rocks/forest_rock_cluster_small_02.rmdl",$"mdl/rocks/rock_white_chalk_mud_modular_wallrun_01.rmdl",$"mdl/rocks/rock_white_chalk_mud_modular_cap_01.rmdl",$"mdl/rocks/rock_white_chalk_mud_modular_flat_01.rmdl",$"mdl/rocks/rock_white_chalk_sand_modular_01.rmdl",$"mdl/rocks/rock_desert_05.rmdl",$"mdl/rocks/rock_desert_06.rmdl",$"mdl/rocks/rock_playback_05.rmdl",$"mdl/rocks/rock_playback_06.rmdl",$"mdl/rocks/thunderdome_quarry_block_stairs_01_orange.rmdl",$"mdl/rocks/rock_desert_04.rmdl",$"mdl/rocks/rock_playback_04.rmdl",$"mdl/rocks/desert_rock_cluster_small_04.rmdl",$"mdl/rocks/desert_rock_cluster_small_02.rmdl",$"mdl/rocks/desert_rock_cluster_small_03.rmdl",$"mdl/rocks/desert_rock_cluster_small_01.rmdl",$"mdl/rocks/desert_rock_cluster_small_05.rmdl"] -file.kc_assets ["mdl/gibs_1"] <- [$"mdl/gibs/titan_gibs/at_gib8_l_thigh2.rmdl",$"mdl/gibs/titan_gibs/og_gib_r_forarm_d.rmdl",$"mdl/gibs/wood_gib01_lg.rmdl"] -file.kc_assets ["mdl/nexus_1"] <- [$"mdl/nexus/nex_pipe_set_b.rmdl",$"mdl/nexus/nex_pipe_set_a.rmdl",$"mdl/nexus/nex_pipe_set_corner.rmdl",$"mdl/nexus/hay_bale_01_round.rmdl",$"mdl/nexus/hay_bale_01_straps.rmdl",$"mdl/nexus/nex_support_beams.rmdl",$"mdl/nexus/roto_tiller_01.rmdl",$"mdl/nexus/nex_support_beam_corner.rmdl",$"mdl/nexus/fir_log_pile_01.rmdl",$"mdl/nexus/nex_sp_shutter_d.rmdl",$"mdl/nexus/nex_sp_shutt_duo_b.rmdl",$"mdl/nexus/nexus_under_support_beam.rmdl",$"mdl/nexus/nexus_support_beam.rmdl"] -file.kc_assets ["mdl/clutter_1"] <- [$"mdl/clutter/rope_knot_01.rmdl",$"mdl/clutter/wood_scrap_04.rmdl",$"mdl/clutter/wood_scrap_01.rmdl",$"mdl/clutter/wood_scrap_03.rmdl",$"mdl/clutter/wooden_plank_decayed_small_06.rmdl",$"mdl/clutter/wooden_plank_decayed_small_05.rmdl",$"mdl/clutter/wooden_plank_decayed_small_11.rmdl",$"mdl/clutter/wooden_plank_decayed_small_07.rmdl",$"mdl/clutter/wooden_plank_decayed_small_12.rmdl",$"mdl/clutter/wooden_plank_decayed_small_08.rmdl",$"mdl/clutter/wooden_plank_decayed_small_10.rmdl",$"mdl/clutter/wooden_plank_decayed_small_09.rmdl",$"mdl/clutter/wooden_plank_decayed_small_03.rmdl",$"mdl/clutter/wooden_plank_decayed_small_14.rmdl",$"mdl/clutter/wooden_plank_decayed_small_02.rmdl"] -file.kc_assets ["mdl/metal_sheets_1"] <- [$"mdl/metal_sheets/sheet_metal_bent_02.rmdl",$"mdl/metal_sheets/sheet_metal_bent_03.rmdl",$"mdl/metal_sheets/sheet_metal_72x56_rust.rmdl",$"mdl/metal_sheets/sheet_metal_72x32_rust.rmdl",$"mdl/metal_sheets/sheet_metal_72x32.rmdl",$"mdl/metal_sheets/sheet_metal_72x56.rmdl"] -file.kc_assets ["mdl/harmony_mines_1"] <- [$"mdl/harmony_mines/cable_set_02.rmdl",$"mdl/harmony_mines/harmony_door_frame_a.rmdl",$"mdl/harmony_mines/harmony_panel_window_frame_a.rmdl",$"mdl/harmony_mines/harmony_mines_rockcluster_02.rmdl",$"mdl/harmony_mines/harmony_mines_rockcluster_03.rmdl",$"mdl/harmony_mines/harmony_mines_rockcluster_01.rmdl"] -file.kc_assets ["mdl/mcor_1"] <- [$"mdl/mcor/mcor_corner_consoles_64.rmdl",$"mdl/mcor/mcor_corner_consoles_32.rmdl",$"mdl/mcor/mcor_monitor_01.rmdl"] -file.kc_assets ["mdl/black_water_canal_1"] <- [$"mdl/black_water_canal/mp_blk_water_canal_wire_64.rmdl",$"mdl/black_water_canal/mp_blk_water_exterior_corner_03.rmdl",$"mdl/black_water_canal/mp_black_water_canal_concreteblock_01.rmdl"] -file.kc_assets ["mdl/extras_1"] <- [$"mdl/error.rmdl",$"mdl/dev/empty_model.rmdl",$"mdl/dev/envballs.rmdl",$"mdl/dev/editor_ref.rmdl",$"mdl/rise/rise_door_frame_01.rmdl",$"mdl/rise/catwalk_hanging_wires_01.rmdl",$"mdl/rise/rise_window_frame_03.rmdl",$"mdl/outpost207/gondola_wires_01.rmdl",$"mdl/mendoko/mendoko_monitor_03.rmdl",$"mdl/firstgen/firstgen_barrel_01.rmdl",$"mdl/menu/menu_cubemap.rmdl",$"mdl/menu/xp_badge.rmdl",$"mdl/menu/coin.rmdl",$"mdl/currency/crafting/currency_crafting_epic.rmdl",$"mdl/hud/grenade_indicator/bang_indicator.rmdl",$"mdl/empty/lights/empty_lights.rmdl",$"mdl/Robots/mobile_hardpoint/mobile_hardpoint_static.rmdl",$"mdl/metal_scraps/scrap_metal04.rmdl",$"mdl/robotics_r2/turret_plasma/plasma_turret_pc_1.rmdl",$"mdl/robotics_r2/turret_plasma/plasma_turret_pc_2.rmdl",$"mdl/robotics_r2/turret_plasma/plasma_turret_pc_3.rmdl",$"mdl/s2s/s2s_bridge_glass_shard.rmdl",$"mdl/robots/drone_air_attack/drone_attack_pc_4.rmdl",$"mdl/robots/drone_air_attack/drone_attack_pc_3.rmdl"] -file.kc_assets ["mdl/extras_2"] <- [$"mdl/robots/drone_frag/drone_frag_loot.rmdl",$"mdl/rubble/concrete_chunk_med_01_body.rmdl",$"mdl/rubble/compacted_metal_trash_stacked.rmdl",$"mdl/rubble/compacted_metal_trash.rmdl",$"mdl/Humans/class/medium/pilot_medium_bangalore.rmdl",$"mdl/Creatures/flyer/flyer_kingscanyon_animated.rmdl",$"mdl/backwater/rock_set_backwater_02.rmdl",$"mdl/backwater/black_water_fuel_sphere_large.rmdl",$"mdl/buildings/Vent_Roof_02.rmdl",$"mdl/buildings/vent_roof_03_tallflat.rmdl",$"mdl/buildings/vent_roof_03_shortround.rmdl",$"mdl/handrails/handrail_yellow_64.rmdl",$"mdl/handrails/handrail_yellow_end.rmdl",$"mdl/kodai_live_fire/live_fire_redframe_b.rmdl",$"mdl/cockpit/ship_console_control_large.rmdl",$"mdl/thaw/thaw_container_large.rmdl",$"mdl/vistas/canyonlands_drop_se.rmdl",$"mdl/exoplanet/waterfall_exoplanet_02.rmdl",$"mdl/creatures/leviathan/leviathan_kingscanyon_preview_animated.rmdl",$"mdl/vehicles_r2/spacecraft/draconis/draconis_landed_hero.rmdl",$"mdl/robotics_r5/tick_loot/tick_loot_pcs_body_01.rmdl",$"mdl/robotics_r5/tick_loot/tick_loot_pcs_panel_01.rmdl",$"mdl/robotics_r5/tick_loot/tick_loot_pcs_leg_01.rmdl"] - -// WORLDS EDGE -file.all_assets ["mdl/foliage_1"] <- [$"mdl/foliage/desertlands_alien_tree_leaf_large_01.rmdl",$"mdl/foliage/desertlands_alien_tree_large_root_02.rmdl",$"mdl/foliage/desertlands_alien_tree_large_root_01.rmdl",$"mdl/foliage/roots_ground_desertlands_01.rmdl",$"mdl/foliage/plant_desert_yucca_01.rmdl",$"mdl/foliage/brute_ivy_01.rmdl",$"mdl/foliage/brute_ivy_02.rmdl",$"mdl/foliage/plant_tobacco_large_03.rmdl",$"mdl/foliage/plant_tobacco_large_01.rmdl",$"mdl/foliage/plant_tobacco_large_02.rmdl",$"mdl/foliage/plant_agave_01.rmdl",$"mdl/foliage/fern_ground_dark_03.rmdl",$"mdl/foliage/fern_ground_dark_01.rmdl",$"mdl/foliage/fern_ground_dark_02.rmdl",$"mdl/foliage/desertlands_alien_tree_large_root_tendrils.rmdl",$"mdl/foliage/desertlands_alien_tree_02.rmdl",$"mdl/foliage/desertlands_alien_tree_large_01.rmdl",$"mdl/foliage/plant_fern_small_02.rmdl",$"mdl/foliage/tree_acacia_small_02.rmdl",$"mdl/foliage/ivy_green_large_hanging_02.rmdl",$"mdl/foliage/icelandic_ground_plant_01.rmdl",$"mdl/foliage/ground_plant_desertlands_01_group_01.rmdl",$"mdl/foliage/ground_plant_desertlands_01.rmdl",$"mdl/foliage/ground_plant_large.rmdl",$"mdl/foliage/plant_tropical_ground_leafy_01.rmdl"] -file.all_assets ["mdl/foliage_2"] <- [$"mdl/foliage/brute_small_tiger_plant.rmdl",$"mdl/foliage/brute_small_tiger_plant_02.rmdl",$"mdl/foliage/grass_luscious_clump_02_flower.rmdl",$"mdl/foliage/icelandic_ground_plant_02.rmdl",$"mdl/foliage/holy_e_ear_plant.rmdl",$"mdl/foliage/foliage_ground_plants.rmdl",$"mdl/foliage/foliage_ground_plants_desertlands.rmdl",$"mdl/foliage/tree_brush_yellow_large_03.rmdl",$"mdl/foliage/tree_acacia_small_03.rmdl",$"mdl/foliage/tree_acacia_small_01.rmdl",$"mdl/foliage/plant_chinese_evergreen_small_nexus_02.rmdl",$"mdl/foliage/tree_brush_yellow_large_01.rmdl",$"mdl/foliage/moss_green_hanging_large_01_dark.rmdl",$"mdl/foliage/moss_green_hanging_large_02_dark.rmdl",$"mdl/foliage/moss_green_hanging_large_04_dark.rmdl",$"mdl/foliage/leaves_ground_spread_01.rmdl",$"mdl/foliage/plant_bush_thorny_leaf_small.rmdl",$"mdl/foliage/lilypad_clusters_05_flowing.rmdl",$"mdl/foliage/plant_grass_dead_tall_01.rmdl",$"mdl/foliage/tree_brush_yellow_large_02.rmdl",$"mdl/foliage/mendoko_bulb_plant_low.rmdl",$"mdl/foliage/desertlands_alien_tree_leaf_small_01.rmdl",$"mdl/foliage/icelandic_ground_plant_03.rmdl",$"mdl/foliage/desertlands_alien_tree_leaf_small_02.rmdl",$"mdl/foliage/icelandic_moss_grass_02.rmdl"] -file.all_assets ["mdl/foliage_3"] <- [$"mdl/foliage/icelandic_moss_grass_01.rmdl",$"mdl/foliage/grass_burnt_yellow_03.rmdl",$"mdl/foliage/grass_burnt_long_02.rmdl",$"mdl/foliage/grass_icelandic_02.rmdl",$"mdl/foliage/grass_icelandic_03.rmdl",$"mdl/foliage/grass_icelandic_04.rmdl",$"mdl/foliage/grass_icelandic_01.rmdl",$"mdl/foliage/ground_plant_beacon_01.rmdl",$"mdl/foliage/ground_plant_beacon_03.rmdl"] -file.all_assets ["mdl/desertlands_1"] <- [$"mdl/desertlands/indust_struct_gondola_wires_02.rmdl",$"mdl/desertlands/indust_struct_gondola_wires_04.rmdl",$"mdl/desertlands/indust_struct_gondola_wires_01.rmdl",$"mdl/desertlands/indust_struct_cooling_tower_exterior_04.rmdl",$"mdl/desertlands/industrial_struct_bldg_02e.rmdl",$"mdl/desertlands/industrial_struct_bldg_05d.rmdl",$"mdl/desertlands/indust_struct_cooling_tower_support_01.rmdl",$"mdl/desertlands/indust_struct_gondola_platform_support_01.rmdl",$"mdl/desertlands/industrial_cargo_container_small_02.rmdl",$"mdl/desertlands/desertlands_train_track_wires_02.rmdl",$"mdl/desertlands/desertlands_train_track_wires_01.rmdl",$"mdl/desertlands/industrial_window_frame_ceiling_curved_01.rmdl",$"mdl/desertlands/industrial_metal_frame_256x144_02.rmdl",$"mdl/desertlands/industrial_metal_frame_wall_256x144_06.rmdl",$"mdl/desertlands/industrial_metal_frame_256x144_01.rmdl",$"mdl/desertlands/industrial_window_frame_ceiling_curved_02.rmdl",$"mdl/desertlands/desertlands_fuel_tower_scaff_01.rmdl",$"mdl/desertlands/industrial_metal_base_support_01.rmdl",$"mdl/desertlands/industrial_metal_base_support_02.rmdl",$"mdl/desertlands/indust_struct_cooling_tower_doorway_01.rmdl",$"mdl/desertlands/desertlands_cafeteria_buffet_01.rmdl",$"mdl/desertlands/industrial_window_frame_wall_curved_01.rmdl",$"mdl/desertlands/industrial_door_frame_trim_192_01.rmdl",$"mdl/desertlands/industrial_window_wall_192x128_cover24_01.rmdl",$"mdl/desertlands/industrial_door_frame_trim_160_01.rmdl"] -file.all_assets ["mdl/desertlands_2"] <- [$"mdl/desertlands/industrial_door_frame_160x128_01.rmdl",$"mdl/desertlands/industrial_door_frame_trim_128_02.rmdl",$"mdl/desertlands/construction_bldg_wood_board_01.rmdl",$"mdl/desertlands/industrial_window_wall_128x128_cover24_01.rmdl",$"mdl/desertlands/industrial_window_wall_128x128_cover40_01.rmdl",$"mdl/desertlands/industrial_metal_arm_support_02.rmdl",$"mdl/desertlands/desertlands_cafeteria_table_01.rmdl",$"mdl/desertlands/desertlands_lobby_double_doorframe_01.rmdl",$"mdl/desertlands/desertlands_lobby_double_doorframe_02.rmdl",$"mdl/desertlands/industrial_window_frame_128x80x16.rmdl",$"mdl/desertlands/desertlands_convenience_store_sign_01_rui.rmdl",$"mdl/desertlands/desertlands_fuel_tower_hose_01.rmdl",$"mdl/desertlands/industrial_door_frame_trim_128_01.rmdl",$"mdl/desertlands/industrial_door_frame_128x128_02.rmdl",$"mdl/desertlands/desertlands_cafeteria_table_02.rmdl",$"mdl/desertlands/industrial_door_frame_128x128_01.rmdl",$"mdl/desertlands/industrial_window_frame_128x80x16_int.rmdl",$"mdl/desertlands/desertlands_lobby_doorframe.rmdl",$"mdl/desertlands/desertlands_lobby_doorframe_02.rmdl",$"mdl/desertlands/industrial_window_frame_64x80x16.rmdl",$"mdl/desertlands/industrial_window_frame_64x80x8.rmdl",$"mdl/desertlands/industrial_metal_arm_support_01.rmdl",$"mdl/desertlands/industrial_window_frame_64x68x16.rmdl",$"mdl/desertlands/industrial_window_frame_64x80x16_int.rmdl",$"mdl/desertlands/industrial_window_frame_64x80x8_int.rmdl"] -file.all_assets ["mdl/desertlands_3"] <- [$"mdl/desertlands/desertlands_standing_cafeteria_table_01.rmdl",$"mdl/desertlands/construction_bldg_wood_debris_01.rmdl",$"mdl/desertlands/desertlands_trash_bin_01.rmdl",$"mdl/desertlands/desertlands_lobby_mailbox_02.rmdl",$"mdl/desertlands/industrial_window_frame_64x68x16_int.rmdl",$"mdl/desertlands/desertlands_standing_cafeteria_table_02.rmdl",$"mdl/desertlands/industrial_frame_track_01.rmdl",$"mdl/desertlands/desertlands_lobby_mailbox_01.rmdl",$"mdl/desertlands/industrial_support_beam_16x144_vertical_corner.rmdl",$"mdl/desertlands/desertlands_lobby_wall_art_01.rmdl",$"mdl/desertlands/desertlands_lobby_mailbox_03.rmdl",$"mdl/desertlands/construction_fold_sign_01.rmdl",$"mdl/desertlands/desertlands_lobby_couch_03.rmdl",$"mdl/desertlands/industrial_support_beam_16x144_vertical.rmdl",$"mdl/desertlands/industrial_support_beam_16x144_filler.rmdl",$"mdl/desertlands/railing_metal_dirty_64_panel_01.rmdl",$"mdl/desertlands/industrial_support_beam_16x64_vertical_corner.rmdl",$"mdl/desertlands/industrial_support_beam_8x144_filler.rmdl",$"mdl/desertlands/desertlands_lobby_couch_04.rmdl",$"mdl/desertlands/guard_rail_painted_metal_dirty_01.rmdl",$"mdl/desertlands/guard_rail_painted_metal_dirty_01_caution.rmdl",$"mdl/desertlands/railing_metal_dirty_64x24_panel_01.rmdl",$"mdl/desertlands/industrial_support_beam_16x64_vertical.rmdl",$"mdl/desertlands/desertlands_ceiling_tile_01.rmdl",$"mdl/desertlands/industrial_support_beam_16x32_vertical_corner.rmdl"] -file.all_assets ["mdl/desertlands_4"] <- [$"mdl/desertlands/desertlands_lobby_wall_art_02.rmdl",$"mdl/desertlands/industrial_support_beam_16x32_vertical.rmdl",$"mdl/desertlands/industrial_support_beam_16x16_vertical_corner.rmdl",$"mdl/desertlands/industrial_support_beam_vertical_corner_cap.rmdl",$"mdl/desertlands/industrial_support_beam_16x16_vertical.rmdl",$"mdl/desertlands/construction_stacker_cone_dirty_01.rmdl",$"mdl/desertlands/railing_post_metal_dirty_01.rmdl",$"mdl/desertlands/desertlands_napkin_holder_01.rmdl",$"mdl/desertlands/mobile_vehicle_01_handle_01.rmdl",$"mdl/desertlands/industrial_struct_bldg_05a.rmdl",$"mdl/desertlands/desrtlands_icicles_05.rmdl",$"mdl/desertlands/desrtlands_icicles_02.rmdl",$"mdl/desertlands/desrtlands_icicles_06.rmdl",$"mdl/desertlands/desrtlands_icicles_01.rmdl",$"mdl/desertlands/desrtlands_icicles_03.rmdl",$"mdl/desertlands/desrtlands_icicles_04.rmdl",$"mdl/desertlands/desertlands_building_ice_04.rmdl",$"mdl/desertlands/desertlands_building_ice_05.rmdl",$"mdl/desertlands/desertlands_building_ice_03.rmdl",$"mdl/desertlands/desertlands_building_ice_06.rmdl",$"mdl/desertlands/desertlands_building_ice_02.rmdl",$"mdl/desertlands/desertlands_ceiling_vent_01.rmdl",$"mdl/desertlands/construction_bldg_tarp_01.rmdl",$"mdl/desertlands/construction_bldg_tarp_02.rmdl",$"mdl/desertlands/city_pipe_frame_medium_128.rmdl"] -file.all_assets ["mdl/desertlands_5"] <- [$"mdl/desertlands/city_pipe_grate_medium_128.rmdl",$"mdl/desertlands/desertlands_city_slanted_building_01_wall_corner_Lshape.rmdl",$"mdl/desertlands/desertlands_large_liquid_tank_ring_01.rmdl",$"mdl/desertlands/desertlands_corner_cafe_mod_int_frame.rmdl",$"mdl/desertlands/city_store_front_insideframe_05.rmdl",$"mdl/desertlands/city_store_front_insideframe_06.rmdl",$"mdl/desertlands/desertlands_corner_lrg_box_windframe_01.rmdl",$"mdl/desertlands/road_plate_metal_192_double_01.rmdl",$"mdl/desertlands/desertlands_corner_smll_box_windframe_02.rmdl",$"mdl/desertlands/desertlands_corner_smll_box_windframe_01.rmdl",$"mdl/desertlands/road_plate_metal_128_single_01.rmdl",$"mdl/desertlands/road_plate_metal_64_single_01.rmdl",$"mdl/desertlands/desertlands_ice_explosion_mod_04.rmdl",$"mdl/desertlands/desertlands_ice_mod_04.rmdl",$"mdl/desertlands/desertlands_ice_explosion_mod_02.rmdl",$"mdl/desertlands/desertlands_ice_explosion_mod_01.rmdl",$"mdl/desertlands/desertlands_ice_explosion_mod_03.rmdl",$"mdl/desertlands/desertlands_ice_mod_01.rmdl",$"mdl/desertlands/desertlands_ice_mod_03.rmdl",$"mdl/desertlands/desertlands_plantroom_rack_01_no_lights.rmdl",$"mdl/desertlands/desertlands_plantroom_floor_piece_01.rmdl",$"mdl/desertlands/desertlands_apartments_planter_02.rmdl",$"mdl/desertlands/desertlands_train_station_turnstile_01.rmdl",$"mdl/desertlands/desertlands_train_station_interior_light_03.rmdl",$"mdl/desertlands/desertlands_serving_counter_01.rmdl"] -file.all_assets ["mdl/desertlands_6"] <- [$"mdl/desertlands/desertlands_city_slanted_building_01_wall_corner_Lshape_end.rmdl",$"mdl/desertlands/industrial_crane_yellow_donut_01.rmdl",$"mdl/desertlands/desertlands_city_slanted_building_01_wall_128.rmdl",$"mdl/desertlands/desertlands_hr_small_apt_a_03.rmdl",$"mdl/desertlands/desertlands_city_slanted_building_01_wall_64.rmdl",$"mdl/desertlands/desertlands_hr_small_apt_a_01.rmdl",$"mdl/desertlands/desertlands_city_slanted_building_01_wall_64_end_l.rmdl",$"mdl/desertlands/highrise_square_top_point.rmdl",$"mdl/desertlands/desertlands_apartments_planter_03.rmdl",$"mdl/desertlands/highrise_rectangle_base.rmdl",$"mdl/desertlands/industrial_struct_bldg_03.rmdl",$"mdl/desertlands/industrial_struct_bldg_05.rmdl",$"mdl/desertlands/desertlands_plantroom_rack_03.rmdl",$"mdl/desertlands/desertlands_barrier_concrete_128_01.rmdl",$"mdl/desertlands/desertlands_train_track_sign_01.rmdl",$"mdl/desertlands/lightpole_desertlands_city_01.rmdl",$"mdl/desertlands/industrial_metal_frame_wall_128x144_01.rmdl",$"mdl/desertlands/highrise_rectangle_slice_01.rmdl",$"mdl/desertlands/highrise_rectangle_top_01.rmdl",$"mdl/desertlands/highrise_square_slice_05.rmdl",$"mdl/desertlands/highrise_square_top_02.rmdl",$"mdl/desertlands/indust_struct_cooling_tower_curv_ramp_01.rmdl",$"mdl/desertlands/industrial_window_shutter_128x80.rmdl",$"mdl/desertlands/industrial_window_shutter_64x80.rmdl",$"mdl/desertlands/industrial_window_shutter_64x68.rmdl"] -file.all_assets ["mdl/desertlands_7"] <- [$"mdl/desertlands/industrial_cargo_container_large_01.rmdl",$"mdl/desertlands/highrise_square_slice_11.rmdl",$"mdl/desertlands/icelandic_moss_mod_01.rmdl",$"mdl/desertlands/icelandic_moss_mod_04.rmdl",$"mdl/desertlands/icelandic_moss_mod_02.rmdl",$"mdl/desertlands/highrise_square_slice_01.rmdl",$"mdl/desertlands/highrise_square_slice_10.rmdl",$"mdl/desertlands/highrise_square_slice_09.rmdl",$"mdl/desertlands/highrise_square_top_01.rmdl",$"mdl/desertlands/mobile_vehicle_01_wheel_01.rmdl",$"mdl/desertlands/mobile_vehicle_01_wheel_02.rmdl",$"mdl/desertlands/research_station_roof_rail_01.rmdl",$"mdl/desertlands/research_station_dome_building_floor_01.rmdl",$"mdl/desertlands/research_station_dome_building_floor_02.rmdl",$"mdl/desertlands/research_station_big_building_floor_01.rmdl",$"mdl/desertlands/desertlands_fuel_tower_center_tank_01.rmdl",$"mdl/desertlands/highrise_square_shell_box_top.rmdl",$"mdl/desertlands/indust_struct_gondola_wheel_01.rmdl",$"mdl/desertlands/desertlands_train_station_sign_02.rmdl",$"mdl/desertlands/construction_bldg_trash_shoot_01.rmdl",$"mdl/desertlands/highrise_square_shell_box_bottom.rmdl",$"mdl/desertlands/indust_struct_gondola_wheel_02.rmdl",$"mdl/desertlands/fence_metal_dirty_64_01.rmdl",$"mdl/desertlands/research_station_building_building_floor_03.rmdl",$"mdl/desertlands/research_station_small_building_floor_01.rmdl"] -file.all_assets ["mdl/desertlands_8"] <- [$"mdl/desertlands/desertlands_city_train_station_01_arch.rmdl",$"mdl/desertlands/railing_stairs_metal_dirty_48_01.rmdl",$"mdl/desertlands/city_store_front_awning.rmdl",$"mdl/desertlands/desertlands_trainyard_sign_01.rmdl",$"mdl/desertlands/construction_bldg_platform_05_corner.rmdl",$"mdl/desertlands/railing_metal_dirty_64_01.rmdl",$"mdl/desertlands/research_station_small_building_floor_01b.rmdl",$"mdl/desertlands/industrial_struct_bldg_01.rmdl",$"mdl/desertlands/research_station_big_building_railing_01.rmdl",$"mdl/desertlands/industrial_struct_bldg_02b.rmdl",$"mdl/desertlands/railing_metal_dirty_64x24_01.rmdl",$"mdl/desertlands/railing_stairs_metal_dirty_24_01.rmdl",$"mdl/desertlands/desertlands_train_track_straight_512.rmdl",$"mdl/desertlands/construction_bldg_platform_01.rmdl",$"mdl/desertlands/highrise_square_shell_box_top_a.rmdl",$"mdl/desertlands/highrise_square_shell_box_top_b.rmdl",$"mdl/desertlands/industrial_cargo_container_320_01.rmdl",$"mdl/desertlands/industrial_cargo_container_320_01_open.rmdl",$"mdl/desertlands/desertlands_train_station_interior_light_01.rmdl",$"mdl/desertlands/desertlands_train_station_interior_light_02.rmdl",$"mdl/desertlands/highrise_corner_tall_c.rmdl",$"mdl/desertlands/industrial_cargo_container_small_01.rmdl",$"mdl/desertlands/indust_struct_circular_building_02_support.rmdl",$"mdl/desertlands/desertlands_city_slanted_building_01_wall_wedge.rmdl",$"mdl/desertlands/desertlands_fuel_tower_pill_tank_med_01.rmdl"] -file.all_assets ["mdl/desertlands_9"] <- [$"mdl/desertlands/highrise_square_shell_box_bottom_b.rmdl",$"mdl/desertlands/desertlands_city_slanted_building_01_wall_pillar_64.rmdl",$"mdl/desertlands/highrise_square_shell_box_bottom_a.rmdl",$"mdl/desertlands/construction_bldg_platform_04_corner.rmdl",$"mdl/desertlands/construction_bldg_platform_02.rmdl",$"mdl/desertlands/desertlands_train_track_straight_256.rmdl",$"mdl/desertlands/desertlands_city_slanted_building_01_slice_01.rmdl",$"mdl/desertlands/desertlands_city_slanted_building_01_slice_02.rmdl",$"mdl/desertlands/highrise_square_block_02.rmdl",$"mdl/desertlands/highrise_corner_tall_a.rmdl",$"mdl/desertlands/highrise_corner_tall_b.rmdl",$"mdl/desertlands/desertlands_train_track_straight_120.rmdl",$"mdl/desertlands/desertlands_train_track_straight_96.rmdl",$"mdl/desertlands/highrise_square_block_01.rmdl",$"mdl/desertlands/research_station_shelf_02.rmdl",$"mdl/desertlands/highrise_square_block_03.rmdl",$"mdl/desertlands/highrise_panel_air_unit_02.rmdl",$"mdl/desertlands/highrise_panel_air_unit_01.rmdl",$"mdl/desertlands/construction_bldg_platform_03.rmdl",$"mdl/desertlands/construction_bldg_wall_01.rmdl",$"mdl/desertlands/desertlands_train_station_interior_light_05.rmdl",$"mdl/desertlands/desertlands_train_station_interior_light_04.rmdl",$"mdl/desertlands/industrial_metal_frame_wall_256x144_02.rmdl",$"mdl/desertlands/industrial_metal_frame_wall_256x144_01.rmdl",$"mdl/desertlands/industrial_metal_frame_wall_256x144_04.rmdl"] -file.all_assets ["mdl/desertlands_10"] <- [$"mdl/desertlands/desertlands_train_track_straight_16.rmdl",$"mdl/desertlands/highrise_square_shell_box_128_c.rmdl",$"mdl/desertlands/industrial_cargo_container_small_03.rmdl",$"mdl/desertlands/highrise_square_shell_box_128_b.rmdl",$"mdl/desertlands/desertlands_apartments_rug_02.rmdl",$"mdl/desertlands/industrial_metal_frame_wall_192x144_03.rmdl",$"mdl/desertlands/industrial_metal_frame_wall_192x144_01.rmdl",$"mdl/desertlands/desertlands_lobby_couch_05.rmdl",$"mdl/desertlands/wall_city_barred_concrete_192_01.rmdl",$"mdl/desertlands/highrise_square_shell_box_128_a.rmdl",$"mdl/desertlands/wall_city_panel_concrete_192_01.rmdl",$"mdl/desertlands/construction_bldg_column_stack_01.rmdl",$"mdl/desertlands/desertlands_lobby_desk_01.rmdl",$"mdl/desertlands/wall_city_corner_concrete_64_02.rmdl",$"mdl/desertlands/research_station_support_beam_01.rmdl",$"mdl/desertlands/wall_city_corner_concrete_64_01.rmdl",$"mdl/desertlands/fence_large_concrete_metal_dirty_192_01.rmdl",$"mdl/desertlands/industrial_metal_frame_wall_128x144_04.rmdl",$"mdl/desertlands/wall_city_panel_concrete_128_01.rmdl",$"mdl/desertlands/construction_bldg_column_01.rmdl",$"mdl/desertlands/indust_struct_gondola_platform_fence_01.rmdl",$"mdl/desertlands/fence_large_concrete_metal_dirty_128_01.rmdl",$"mdl/desertlands/desertlands_cafeteria_light_01.rmdl",$"mdl/desertlands/desertlands_apartments_rug_01.rmdl",$"mdl/desertlands/desertlands_apartments_planter_01.rmdl"] -file.all_assets ["mdl/desertlands_11"] <- [$"mdl/desertlands/highrise_corner_128_a.rmdl",$"mdl/desertlands/desertlands_train_station_sign_01.rmdl",$"mdl/desertlands/desertlands_sign_01.rmdl",$"mdl/desertlands/industrial_metal_frame_wall_64x144_01.rmdl",$"mdl/desertlands/industrial_metal_frame_wall_64x144_02.rmdl",$"mdl/desertlands/wall_city_panel_concrete_64_01.rmdl",$"mdl/desertlands/fence_large_concrete_metal_dirty_64_01.rmdl",$"mdl/desertlands/desertlands_lobby_sign_01.rmdl",$"mdl/desertlands/city_steps_metal_grate_double_128_01.rmdl",$"mdl/desertlands/research_station_support_beam_02.rmdl",$"mdl/desertlands/city_step_up_grate_128_01.rmdl",$"mdl/desertlands/desertlands_lobby_water_dispenser_01.rmdl",$"mdl/desertlands/industrial_metal_frame_wall_32x144_01.rmdl",$"mdl/desertlands/city_steps_metal_grate_single_128_01.rmdl",$"mdl/desertlands/wall_city_pillar_45_concrete_01.rmdl",$"mdl/desertlands/city_steps_metal_grate_double_64_01.rmdl",$"mdl/desertlands/wall_city_pillar_concrete_01.rmdl",$"mdl/desertlands/curb_parking_concrete_destroyed_01.rmdl",$"mdl/desertlands/research_station_bench_01.rmdl",$"mdl/desertlands/railing_metal_dirty_64_02.rmdl",$"mdl/desertlands/desertlands_cafeteria_buffet_light_01.rmdl",$"mdl/desertlands/desertlands_lobby_side_table_01.rmdl",$"mdl/desertlands/desertlands_lobby_light_01.rmdl",$"mdl/desertlands/indust_struct_gondola_platform_sign_01.rmdl",$"mdl/desertlands/desertlands_train_station_turnstile_02.rmdl"] -file.all_assets ["mdl/desertlands_12"] <- [$"mdl/desertlands/desertlands_train_station_sign_04.rmdl",$"mdl/desertlands/desertlands_train_station_sign_03.rmdl",$"mdl/desertlands/desertlands_city_slanted_building_01_exterior.rmdl",$"mdl/desertlands/desertlands_train_track_split_01.rmdl",$"mdl/desertlands/desertlands_train_track_split_03.rmdl",$"mdl/desertlands/desertlands_train_track_ytrack_r2904.rmdl",$"mdl/desertlands/desertlands_train_track_split_02.rmdl",$"mdl/desertlands/desertlands_train_track_curve_r6680.rmdl",$"mdl/desertlands/desertlands_train_track_curve_r6392.rmdl",$"mdl/desertlands/desertlands_train_track_curve_r4472.rmdl",$"mdl/desertlands/desertlands_train_track_curve_r4456.rmdl",$"mdl/desertlands/desertlands_train_track_curve_r4440.rmdl",$"mdl/desertlands/desertlands_hr_small_apt_a_05.rmdl",$"mdl/desertlands/desertlands_hr_small_apt_a_06.rmdl",$"mdl/desertlands/desertlands_hr_small_apt_a_04.rmdl",$"mdl/desertlands/desertlands_train_track_curve_r4048.rmdl",$"mdl/desertlands/desertlands_train_track_curve_r4457.rmdl",$"mdl/desertlands/desertlands_hr_small_apt_roof.rmdl",$"mdl/desertlands/desertlands_train_track_curve_r3032.rmdl",$"mdl/desertlands/desertlands_train_track_curve_r2992.rmdl",$"mdl/desertlands/desertlands_train_track_curve_r2976.rmdl",$"mdl/desertlands/desertlands_train_track_curve_r2968.rmdl",$"mdl/desertlands/desertlands_train_track_curve_r2904.rmdl",$"mdl/desertlands/desertlands_train_track_curve_r2824.rmdl",$"mdl/desertlands/desertlands_train_track_straight_512_open.rmdl"] -file.all_assets ["mdl/desertlands_13"] <- [$"mdl/desertlands/city_step_up_grate_64_01.rmdl",$"mdl/desertlands/desertlands_big_drill_intact_01.rmdl",$"mdl/desertlands/desertlands_big_drill_intact_top_01.rmdl",$"mdl/desertlands/desertland_big_drill_intact_leg_01.rmdl",$"mdl/desertlands/desertland_big_drill_intact_leg_02.rmdl",$"mdl/desertlands/desertlands_train_track_bridge_01.rmdl",$"mdl/desertlands/desertlands_lobby_couch_01.rmdl",$"mdl/desertlands/indust_struct_circular_building_02.rmdl",$"mdl/desertlands/fissure_catwalk_support.rmdl",$"mdl/desertlands/desertland_big_drill_capsule_large_01.rmdl",$"mdl/desertlands/indust_struct_circular_building.rmdl",$"mdl/desertlands/industrial_crane_yellow_01_c.rmdl",$"mdl/desertlands/desertland_big_drill_capsule_large_burst_01.rmdl",$"mdl/desertlands/desertland_big_drill_capsule_small_01.rmdl",$"mdl/desertlands/desertlands_train_track_support_01.rmdl",$"mdl/desertlands/desertlands_large_liquid_tank_01.rmdl",$"mdl/desertlands/research_station_stairs_corner_02.rmdl",$"mdl/desertlands/desertlands_big_drill_frame_01.rmdl",$"mdl/desertlands/research_station_corner_connector_01_ext.rmdl",$"mdl/desertlands/industrial_crane_yellow_02_a.rmdl",$"mdl/desertlands/industrial_crane_yellow_01_a.rmdl",$"mdl/desertlands/industrial_crane_yellow_01_b.rmdl",$"mdl/desertlands/desertlands_train_flatbed_01.rmdl",$"mdl/desertlands/island_refinery_01_tank.rmdl",$"mdl/desertlands/industrial_assembly_smoke_stack_01.rmdl"] -file.all_assets ["mdl/desertlands_14"] <- [$"mdl/desertlands/research_station_corner_connector_01c_ext.rmdl",$"mdl/desertlands/research_station_corner_connector_01b_ext.rmdl",$"mdl/desertlands/research_station_container_dome_01.rmdl",$"mdl/desertlands/desertlands_train_track_magnetic_beam_01.rmdl",$"mdl/desertlands/industrial_drill_01_support_sm_01.rmdl",$"mdl/desertlands/desertlands_plantroom_ceiling_rack_01.rmdl",$"mdl/desertlands/research_station_server_01.rmdl",$"mdl/desertlands/desertlands_train_passenger_cab_02.rmdl",$"mdl/desertlands/research_station_stairs_bend_01.rmdl",$"mdl/desertlands/research_station_server_wire_canopy_01.rmdl",$"mdl/desertlands/research_station_stairs_big_building_01.rmdl",$"mdl/desertlands/desertlands_lobby_couch_02.rmdl",$"mdl/desertlands/mobile_vehicle_01_seat_01.rmdl",$"mdl/desertlands/research_station_straight_connector_01_ext.rmdl",$"mdl/desertlands/research_station_server_wire_rack_01.rmdl",$"mdl/desertlands/research_station_container_big_01.rmdl",$"mdl/desertlands/industrial_drill_01_support_02.rmdl",$"mdl/desertlands/research_station_stairs_straight_02.rmdl",$"mdl/desertlands/research_station_storage_shelf_01.rmdl",$"mdl/desertlands/mobile_vehicle_01_console_01.rmdl",$"mdl/desertlands/desertlands_city_train_station_panel_01.rmdl",$"mdl/desertlands/desertlands_plantroom_rack_01.rmdl",$"mdl/desertlands/research_station_container_small_01.rmdl",$"mdl/desertlands/desertlands_plantroom_rack_02.rmdl",$"mdl/desertlands/desertlands_vending_machine_01.rmdl"] -file.all_assets ["mdl/desertlands_15"] <- [$"mdl/desertlands/research_station_storage_shelf_02.rmdl",$"mdl/desertlands/arctic_path_marker_01.rmdl",$"mdl/desertlands/building_ice_b2t_01.rmdl",$"mdl/desertlands/building_ice_b2t_02.rmdl",$"mdl/desertlands/building_ice_b2t_03.rmdl",$"mdl/desertlands/building_ice_b2t_04.rmdl",$"mdl/desertlands/building_ice_b2t_05.rmdl",$"mdl/desertlands/building_ice_b2t_06.rmdl",$"mdl/desertlands/building_ice_b2t_07.rmdl",$"mdl/desertlands/building_ice_b2t_08.rmdl",$"mdl/desertlands/building_ice_b2t_09.rmdl",$"mdl/desertlands/building_ice_b2t_10.rmdl",$"mdl/desertlands/desertland_big_drill_intact_leg_01_frozen.rmdl",$"mdl/desertlands/desertland_big_drill_intact_leg_02_frozen.rmdl",$"mdl/desertlands/desertlands_big_drill_intact_decal_frost_01.rmdl",$"mdl/desertlands/desertlands_big_drill_intact_decal_grime_01.rmdl",$"mdl/desertlands/desertlands_city_slanted_building_01_signage_01.rmdl",$"mdl/desertlands/desertlands_city_train_station_01_decals.rmdl",$"mdl/desertlands/desertlands_lobby_decals_01.rmdl",$"mdl/desertlands/highrise_small_apt_signage_02.rmdl",$"mdl/desertlands/highrise_small_apt_signage_03.rmdl",$"mdl/desertlands/indust_struct_circular_building_01_decal_45.rmdl",$"mdl/desertlands/mobile_vehicle_01_numbers_01.rmdl",$"mdl/desertlands/mobile_vehicle_01_numbers_02.rmdl",$"mdl/desertlands/construction_bldg_elevator_01_bott.rmdl"] -file.all_assets ["mdl/desertlands_16"] <- [$"mdl/desertlands/construction_bldg_elevator_01_mid.rmdl",$"mdl/desertlands/construction_bldg_elevator_01_top.rmdl",$"mdl/desertlands/desertlands_city_train_station_01_roof.rmdl",$"mdl/desertlands/desertlands_city_train_station_railing_01.rmdl",$"mdl/desertlands/desertlands_city_train_station_railing_02.rmdl",$"mdl/desertlands/desertlands_train_track_straight_arrows_512.rmdl",$"mdl/desertlands/indust_struct_gondola_cart_01.rmdl",$"mdl/desertlands/desertlands_train_front_01.rmdl",$"mdl/desertlands/desertlands_train_passenger_cab_01.rmdl",$"mdl/desertlands/industrial_drill_01.rmdl",$"mdl/desertlands/industrial_drill_01_support_01.rmdl",$"mdl/desertlands/mobile_vehicle_01.rmdl",$"mdl/desertlands/research_station_big_building_01.rmdl",$"mdl/desertlands/research_station_big_building_02.rmdl",$"mdl/desertlands/research_station_big_building_03.rmdl",$"mdl/desertlands/research_station_connector_building_01b_open_window.rmdl",$"mdl/desertlands/research_station_connector_building_open_wndow_01.rmdl",$"mdl/desertlands/research_station_dome_building_windows_01.rmdl",$"mdl/desertlands/research_station_incubator_01.rmdl",$"mdl/desertlands/research_station_shelf_03.rmdl",$"mdl/desertlands/research_station_small_building_01.rmdl",$"mdl/desertlands/research_station_small_building_01b.rmdl",$"mdl/desertlands/dland_train_cab_energy.rmdl",$"mdl/desertlands/dland_train_front_energy.rmdl",$"mdl/desertlands/indust_struct_circular_building_glass_ext.rmdl"] -file.all_assets ["mdl/desertlands_17"] <- [$"mdl/desertlands/indust_struct_circular_building_glass_int.rmdl",$"mdl/desertlands/indust_struct_circular_building_lower_glass_int.rmdl",$"mdl/desertlands/indust_struct_cooling_tower_godrays_01.rmdl",$"mdl/desertlands/industrial_struct_bldg_01a.rmdl",$"mdl/desertlands/industrial_struct_bldg_01b.rmdl",$"mdl/desertlands/industrial_struct_bldg_02c.rmdl",$"mdl/desertlands/industrial_struct_bldg_02d.rmdl",$"mdl/desertlands/industrial_struct_bldg_03b.rmdl",$"mdl/desertlands/industrial_struct_bldg_03c.rmdl",$"mdl/desertlands/industrial_struct_bldg_04b.rmdl",$"mdl/desertlands/industrial_struct_bldg_04c.rmdl",$"mdl/desertlands/industrial_struct_bldg_05b.rmdl",$"mdl/desertlands/industrial_struct_bldg_05c.rmdl",$"mdl/desertlands/industrial_struct_bldg_06b.rmdl",$"mdl/desertlands/industrial_struct_bldg_06c.rmdl",$"mdl/desertlands/mobile_vehicle_01_windshield_ext_01.rmdl",$"mdl/desertlands/mobile_vehicle_01_windshield_ext_02.rmdl"] -file.all_assets ["mdl/colony_1"] <- [$"mdl/colony/antenna_05_colony.rmdl",$"mdl/colony/farmland_domicile_table_02.rmdl",$"mdl/colony/antenna_05_colony_small.rmdl",$"mdl/colony/box_cardboard_flat_01.rmdl",$"mdl/colony/dirty_plate_pile_02.rmdl",$"mdl/colony/dirty_bowl_pile_02.rmdl",$"mdl/colony/dirty_bowl_pile_03.rmdl",$"mdl/colony/dirty_bowl_pile_01.rmdl",$"mdl/colony/dirty_bowl_single.rmdl",$"mdl/colony/ventilation_unit_01_black.rmdl",$"mdl/colony/farmland_bathroom_01.rmdl",$"mdl/colony/ventilation_duct_hatch_01b_black.rmdl",$"mdl/colony/farmland_crate_plastic_01_red.rmdl",$"mdl/colony/farmland_crate_plastic_yellow_01.rmdl",$"mdl/colony/ventilation_duct_hatch_02_black.rmdl",$"mdl/colony/ventilation_unit_01b_black.rmdl",$"mdl/colony/posted_papers_01.rmdl",$"mdl/colony/antenna_03_colony.rmdl",$"mdl/colony/farmland_crate_md_80x64x72_01.rmdl",$"mdl/colony/farmland_crate_md_80x64x72_02.rmdl",$"mdl/colony/farmland_crate_md_80x64x72_03.rmdl",$"mdl/colony/farmland_ac_unit_64x16x80_01.rmdl",$"mdl/colony/antenna_01_colony_arm.rmdl",$"mdl/colony/farmland_domicile_hanging_net_01.rmdl",$"mdl/colony/solar_panel_angled_01.rmdl"] -file.all_assets ["mdl/colony_2"] <- [$"mdl/colony/farmland_fridge_01.rmdl"] -file.all_assets ["mdl/thunderdome_1"] <- [$"mdl/thunderdome/survival_modular_flexscreens_04.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_512x352_02.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_512x352_01.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_256x352_02.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_256x352_01.rmdl",$"mdl/thunderdome/survival_modular_flexscreens_frame_01.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_512x128_01.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x256_03.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x256_05.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x256_02.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_128x352_03.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_128x352_04.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_128x352_01.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_128x352_02.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x128_03.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x128_02.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x128_04.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x128_06.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x64_02.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x64_04.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_256x128_02.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_256x128_03.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_256_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_128x32_01.rmdl"] -file.all_assets ["mdl/thunderdome_2"] <- [$"mdl/thunderdome/thunderdome_cage_frame_16x352_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_128_01.rmdl",$"mdl/thunderdome/thunderdome_spike_traps_small_256_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_16x128_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_16x32_01.rmdl",$"mdl/thunderdome/thunderdome_stands_girder_brace_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_16x32_02.rmdl",$"mdl/thunderdome/thunderdome_screen_tower_01.rmdl",$"mdl/thunderdome/thunderdome_hanging_wire_rings_04.rmdl",$"mdl/thunderdome/thunderdome_screen_tower_arm_01.rmdl",$"mdl/thunderdome/thunderdome_stands_awning_01.rmdl",$"mdl/thunderdome/thunderdome_gantry_pulley_02.rmdl",$"mdl/thunderdome/thunderdome_gantry_pulley_01.rmdl",$"mdl/thunderdome/thunderdome_barrier_01.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_512x128_04.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl",$"mdl/thunderdome/thunderdome_hanging_pilot_helmets_04.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x64_05.rmdl",$"mdl/thunderdome/thunderdome_hanging_pilot_helmets_06.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_03.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_01.rmdl"] -file.all_assets ["mdl/containers_1"] <- [$"mdl/containers/storage_bin_rollup_door_closed.rmdl",$"mdl/containers/pelican_case_large.rmdl",$"mdl/containers/pelican_case_large_drabgreen.rmdl",$"mdl/containers/box_med_cardboard_03.rmdl",$"mdl/containers/box_med_cardboard_02.rmdl",$"mdl/containers/box_med_cardboard_01.rmdl",$"mdl/containers/box_metal.rmdl",$"mdl/containers/slums_plastic_crate_blue_01.rmdl",$"mdl/containers/slums_plastic_crate_orange_01.rmdl",$"mdl/containers/slums_plastic_crate_red_01.rmdl",$"mdl/containers/slums_plastic_crate_blue_02.rmdl",$"mdl/containers/slums_plastic_crate_orange_02.rmdl",$"mdl/containers/box_mini_cardboard.rmdl",$"mdl/containers/can_blue_soda.rmdl",$"mdl/containers/can_red_soda.rmdl",$"mdl/containers/can_red_horizontal.rmdl",$"mdl/containers/can_blue_horizontal.rmdl",$"mdl/containers/slums_plastic_container_blue_02.rmdl",$"mdl/containers/slums_plastic_container_green_02.rmdl",$"mdl/containers/slums_plastic_container_orange_02.rmdl",$"mdl/containers/slums_plastic_container_blue_01.rmdl",$"mdl/containers/slums_plastic_container_green_01.rmdl",$"mdl/containers/slums_plastic_container_blue_03.rmdl",$"mdl/containers/slums_plastic_container_green_03.rmdl",$"mdl/containers/slums_plastic_container_orange_03.rmdl"] -file.all_assets ["mdl/containers_2"] <- [$"mdl/containers/slums_plastic_fish_plate_blue_01.rmdl",$"mdl/containers/slumcity_oxygen_bag_large_01_b.rmdl",$"mdl/containers/plastic_pallet_01.rmdl",$"mdl/containers/plastic_pallet_02.rmdl",$"mdl/containers/slumcity_oxygen_tank_blue.rmdl",$"mdl/containers/slumcity_oxygen_tank_red.rmdl",$"mdl/containers/box_shrinkwrapped.rmdl",$"mdl/containers/barrel.rmdl",$"mdl/containers/container_medium_tanks_blue.rmdl",$"mdl/containers/lagoon_roof_tanks_02.rmdl",$"mdl/containers/underbelly_cargo_container_128_red_02.rmdl",$"mdl/containers/underbelly_cargo_container_128_blue_02.rmdl",$"mdl/containers/underbelly_cargo_container_128_green_02.rmdl"] -file.all_assets ["mdl/sewers_1"] <- [$"mdl/sewers/sewer_wire_black_set_thin_04.rmdl",$"mdl/sewers/sewer_wire_black_set_thick_02.rmdl",$"mdl/sewers/sewer_wire_black_set_thick_04.rmdl",$"mdl/sewers/sewer_wire_black_set_thick_01.rmdl",$"mdl/sewers/sewer_wire_black_set_thick_03.rmdl",$"mdl/sewers/sewer_wire_black_set_thin_01.rmdl",$"mdl/sewers/sewer_wire_black_set_thin_03.rmdl",$"mdl/sewers/sewer_wire_black_set_thin_02.rmdl",$"mdl/sewers/sewer_wire_bracket_set_thick_01.rmdl",$"mdl/sewers/sewer_wire_bracket_set_thick_03.rmdl",$"mdl/sewers/sewer_wire_bracket_set_thin_03.rmdl",$"mdl/sewers/sewer_wire_bracket_set_thick_02.rmdl",$"mdl/sewers/sewer_wire_bracket_set_thin_01.rmdl",$"mdl/sewers/sewer_wire_bracket_set_thin_02.rmdl",$"mdl/sewers/sewer_wire_black_bend_r_thin_01.rmdl",$"mdl/sewers/sewer_wire_black_bend_l_thin_01.rmdl",$"mdl/sewers/sewer_wire_black_bend_l_thick_01.rmdl"] -file.all_assets ["mdl/ola_1"] <- [$"mdl/ola/sewer_wires_02.rmdl",$"mdl/ola/sewer_wires_01.rmdl",$"mdl/ola/sewer_railing_01_corner_in.rmdl",$"mdl/ola/sewer_railing_01_corner_out.rmdl",$"mdl/ola/sewer_railing_01_128.rmdl",$"mdl/ola/sewer_stair_railing_01.rmdl",$"mdl/ola/sewer_stair_railing_01_inv.rmdl",$"mdl/ola/sewer_railing_01_stairend.rmdl",$"mdl/ola/sewer_grate_01_16.rmdl",$"mdl/ola/sewer_railing_01_64.rmdl",$"mdl/ola/sewer_railing_02_128.rmdl",$"mdl/ola/sewer_stair_railingsmall_01.rmdl",$"mdl/ola/sewer_stair_railingsmall_01_inv.rmdl",$"mdl/ola/sewer_railing_01_32.rmdl",$"mdl/ola/sewer_railing_01_16.rmdl",$"mdl/ola/sewer_grate_02.rmdl",$"mdl/ola/sewer_staircase_01.rmdl",$"mdl/ola/sewer_grate_01.rmdl",$"mdl/ola/sewer_staircase_quad.rmdl",$"mdl/ola/sewer_staircase_96_quad.rmdl",$"mdl/ola/sewer_staircase_end_02.rmdl",$"mdl/ola/sewer_staircase_double.rmdl",$"mdl/ola/sewer_staircase_short_quad.rmdl",$"mdl/ola/sewer_staircase_96_double.rmdl",$"mdl/ola/sewer_staircase_single.rmdl"] -file.all_assets ["mdl/ola_2"] <- [$"mdl/ola/sewer_grate_01_32.rmdl",$"mdl/ola/sewer_staircase_short_double.rmdl",$"mdl/ola/sewer_staircase_96_single.rmdl"] -file.all_assets ["mdl/furniture_1"] <- [$"mdl/furniture/couch_suede_brown_01.rmdl",$"mdl/furniture/office_laptop.rmdl",$"mdl/furniture/office_desk_accessories_papers.rmdl",$"mdl/furniture/office_desk_accessories_pen_holder.rmdl",$"mdl/furniture/office_desk_accessories_mug.rmdl",$"mdl/furniture/office_keyboard_plastic.rmdl",$"mdl/furniture/chair_beanbag_01.rmdl",$"mdl/furniture/office_desk_shelved.rmdl",$"mdl/furniture/office_chair_leather.rmdl",$"mdl/furniture/books_shelved.rmdl"] -file.all_assets ["mdl/relic_1"] <- [$"mdl/relic/relic_yellow_wire_256_03.rmdl",$"mdl/relic/relic_yellow_wire_256_02.rmdl",$"mdl/relic/relic_yellow_wire_128_02.rmdl",$"mdl/relic/relic_yellow_wire_256_01.rmdl"] -file.all_assets ["mdl/playback_1"] <- [$"mdl/playback/playback_panel_window_frame_c.rmdl",$"mdl/playback/playback_panel_window_frame_a.rmdl",$"mdl/playback/playback_barstool_02.rmdl",$"mdl/playback/playback_girdering_joint_2way_h_01_dirty.rmdl",$"mdl/playback/playback_fish_net_01.rmdl",$"mdl/playback/playback_railing_slope_01a_4step.rmdl",$"mdl/playback/playback_railing_slope_01b_4step.rmdl",$"mdl/playback/playback_railing_01_064.rmdl",$"mdl/playback/playback_bridge_panel_128x064_01.rmdl",$"mdl/playback/playback_staircase_128_top_double_01_a.rmdl"] -file.all_assets ["mdl/IMC_base_1"] <- [$"mdl/IMC_base/imc_tech_tallpanel_48_02.rmdl",$"mdl/IMC_base/imc_tech_panelsquare_48_05.rmdl",$"mdl/IMC_base/imc_tech_smallfan_32_06.rmdl",$"mdl/IMC_base/chair_IMC_02.rmdl",$"mdl/IMC_base/imc_tech_panel_64_01.rmdl",$"mdl/IMC_base/ladder_modular_64_IMC.rmdl",$"mdl/IMC_base/siren_wall_IMC_01.rmdl",$"mdl/IMC_base/garage_support_wall_IMC_02.rmdl",$"mdl/IMC_base/handle_modular_IMC_LOD0.rmdl",$"mdl/IMC_base/ladder_modular_cap_IMC.rmdl",$"mdl/IMC_base/conduit_bracket_IMC_04.rmdl",$"mdl/IMC_base/conduit_bracket_IMC_02.rmdl",$"mdl/IMC_base/imc_fan_large_case_01.rmdl",$"mdl/IMC_base/imc_fan_large_case_01_short.rmdl",$"mdl/IMC_base/imc_fan_large_01.rmdl",$"mdl/IMC_base/thumper_generator_set_b.rmdl",$"mdl/IMC_base/conduit_str_64_IMC_01.rmdl",$"mdl/IMC_base/conduit_str_64_IMC_02.rmdl",$"mdl/IMC_base/conduit_str_32_IMC_01.rmdl",$"mdl/IMC_base/conduit_bend_16_IMC_01.rmdl",$"mdl/IMC_base/conduit_str_16_IMC_01.rmdl",$"mdl/IMC_base/conduit_str_32_IMC_02.rmdl",$"mdl/IMC_base/conduit_str_08_IMC_01.rmdl",$"mdl/IMC_base/conduit_str_16_IMC_02.rmdl",$"mdl/IMC_base/conduit_bend_16_IMC_02.rmdl"] -file.all_assets ["mdl/IMC_base_2"] <- [$"mdl/IMC_base/conduit_str_08_IMC_02.rmdl",$"mdl/IMC_base/conduit_start_IMC_02.rmdl",$"mdl/IMC_base/conduit_cap_IMC_02.rmdl",$"mdl/IMC_base/monitor_command_imc_01.rmdl",$"mdl/IMC_base/monitor_command_small_imc_01.rmdl",$"mdl/IMC_base/generator_IMC_01.rmdl",$"mdl/IMC_base/imc_antenna_large.rmdl",$"mdl/IMC_base/imc_antenna_01.rmdl",$"mdl/IMC_base/imc_antenna_02.rmdl",$"mdl/IMC_base/monitor_imc_02.rmdl",$"mdl/IMC_base/imc_antenna_03.rmdl",$"mdl/IMC_base/monitor_arm_01_oldsand.rmdl",$"mdl/IMC_base/imc_tech_pipepanel_92_04.rmdl",$"mdl/IMC_base/outer_wall_imc_column_02.rmdl",$"mdl/IMC_base/imc_tech_smallpanel_48_03.rmdl",$"mdl/IMC_base/cargo_container_imc_01_blue.rmdl",$"mdl/IMC_base/cargo_container_imc_01_white_open.rmdl",$"mdl/IMC_base/cargo_container_imc_01_red.rmdl",$"mdl/IMC_base/cargo_container_imc_01_white.rmdl",$"mdl/IMC_base/scaffold_tech_horz_rail_c.rmdl"] -file.all_assets ["mdl/industrial_1"] <- [$"mdl/industrial/underbelly_support_beam_256_01.rmdl",$"mdl/industrial/air_unit_badlands_02_tall.rmdl",$"mdl/industrial/underbelly_support_beam_128_01.rmdl",$"mdl/industrial/hazmat_suit_hanging.rmdl",$"mdl/industrial/underbelly_support_beam_bracket_corner_01.rmdl",$"mdl/industrial/air_unit_badlands_02_short.rmdl",$"mdl/industrial/air_unit_badlands_01.rmdl",$"mdl/industrial/jack_hammer_yellow.rmdl",$"mdl/industrial/hammer_metal_02.rmdl",$"mdl/industrial/bottle_wine.rmdl",$"mdl/industrial/cafe_coffe_machine_dirty.rmdl",$"mdl/industrial/zipline_arm.rmdl",$"mdl/industrial/construction_materials_cart_03.rmdl",$"mdl/industrial/rollup_door_04.rmdl",$"mdl/industrial/landing_mat_metal_02_large.rmdl",$"mdl/industrial/landing_mat_metal_03_large.rmdl",$"mdl/industrial/landing_mat_metal_02.rmdl",$"mdl/industrial/landing_mat_metal_03.rmdl",$"mdl/industrial/dart_board.rmdl",$"mdl/industrial/dart_green.rmdl",$"mdl/industrial/dart_red.rmdl",$"mdl/industrial/cafe_coffe_machine.rmdl",$"mdl/industrial/tool_chest.rmdl",$"mdl/industrial/tripod_cone_v1_high_on.rmdl",$"mdl/industrial/tool_chest_double.rmdl"] -file.all_assets ["mdl/industrial_2"] <- [$"mdl/industrial/welding_push_unit.rmdl",$"mdl/industrial/fan_mounted.rmdl",$"mdl/industrial/fan_mounted_w_cage.rmdl",$"mdl/industrial/light_pole_bforce_02.rmdl",$"mdl/industrial/security_fence_post.rmdl",$"mdl/industrial/vending_machine_05.rmdl",$"mdl/industrial/electrical_box_green.rmdl",$"mdl/industrial/city_light.rmdl",$"mdl/industrial/hand_rail_glass_light_24.rmdl",$"mdl/industrial/UTG_spire.rmdl",$"mdl/industrial/traffic_barrel_02.rmdl",$"mdl/industrial/traffic_barrel_01.rmdl",$"mdl/industrial/traffic_tube_01.rmdl",$"mdl/industrial/traffic_cone_01.rmdl",$"mdl/industrial/gas_generator.rmdl",$"mdl/industrial/indoor_console_server.rmdl",$"mdl/industrial/exit_sign_03.rmdl",$"mdl/industrial/vending_machine_02.rmdl",$"mdl/industrial/vending_machine_04.rmdl",$"mdl/industrial/vending_machine_01.rmdl",$"mdl/industrial/vending_machine_03.rmdl",$"mdl/industrial/underbelly_ceiling_panels_256x512_decal_03.rmdl",$"mdl/industrial/glass_white_board_wall.rmdl",$"mdl/industrial/store_fridge_64.rmdl",$"mdl/industrial/vending_machine_06.rmdl"] -file.all_assets ["mdl/industrial_3"] <- [$"mdl/industrial/dive_bar_beer_glass_01_a.rmdl",$"mdl/industrial/dive_bar_beer_glass_01_b.rmdl",$"mdl/industrial/lab_beaker_01.rmdl",$"mdl/industrial/lab_beaker_02.rmdl",$"mdl/industrial/gun_rack_arm_down.rmdl"] -file.all_assets ["mdl/levels_terrain_1"] <- [$"mdl/levels_terrain/mp_corporate/corporate_sign_dsgnOfic.rmdl",$"mdl/levels_terrain/mp_black_water_canal/black_water_canal_wire_64.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_04_spike_06_jakev.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_04_spike_12_jakev.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_04_spike_10_jakev.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_04_spike_05_jakev.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_04_spike_15_jakev.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_04_spike_07_jakev.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_04_spike_09_jakev.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_04_spike_13_jakev.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_04_spike_01_jakev.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_04_spike_14_jakev.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_04_spike_11_jakev.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_04_spike_03_jakev.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_04_spike_02_jakev.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_04_spike_08_jakev.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_04_spike_04_jakev.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_space_elevator_pole_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_space_elevator_cable_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_space_elevator_cable_02.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_themine_cylinder_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/canyonland_pipe_ring.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_z12_outer_circle_platform_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_zone_11_thermal_pillar_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_z12_wedge_platform_01.rmdl"] -file.all_assets ["mdl/levels_terrain_2"] <- [$"mdl/levels_terrain/mp_rr_desertlands/desertlands_z12_outer_circle_platform_02.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_z12_mid_platform_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_space_elevator_platform_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_z12_mid_pillar_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/clands_roof_bars_01_fglass_blue.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_space_elevator_gate_01.rmdl",$"mdl/levels_terrain/mp_lobby/mp_setting_menu.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_space_elevator_01_top.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_space_elevator_01_roof.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_space_elevator_01_floor.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_space_elevator_column_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_space_elevator_ramp_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_lava_drill_mover_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_08_water.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_08_water_2.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_09_water.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_09_water_2.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_09_water_3.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_10_water.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_10_water_2.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_12_water.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_14_water.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_terrain_section_14_water_2.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_space_elevator_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_godrays_zone_10_01.rmdl"] -file.all_assets ["mdl/levels_terrain_3"] <- [$"mdl/levels_terrain/mp_rr_desertlands/desertlands_godrays_zone_10_02.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_godrays_zone_11_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_godrays_zone_13_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_godrays_zone_16_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_godrays_zone_1_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_godrays_zone_2_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_godrays_zone_3_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_godrays_zone_5_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_godrays_zone_7_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_godrays_zone_8_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_godrays_zone_9_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_halogen_light_godray_blue_01.rmdl",$"mdl/levels_terrain/mp_rr_desertlands/desertlands_halogen_light_godray_orange_01.rmdl",$"mdl/levels_terrain/mp_lobby/mp_character_select_geo.rmdl"] -file.all_assets ["mdl/electricalboxes_1"] <- [$"mdl/electricalboxes/pipe_set_c.rmdl",$"mdl/electricalboxes/pipe_set_b.rmdl",$"mdl/electricalboxes/pipe_set_e.rmdl",$"mdl/electricalboxes/fusebox.rmdl",$"mdl/electricalboxes/pipe_set_h.rmdl",$"mdl/electricalboxes/fusebox_rusty.rmdl",$"mdl/electricalboxes/fusebox_small_a.rmdl"] -file.all_assets ["mdl/firstgen_1"] <- [$"mdl/firstgen/firstgen_pipe_256_darkcloth_01.rmdl",$"mdl/firstgen/firstgen_pipe_256_goldfoil_01.rmdl",$"mdl/firstgen/firstgen_pipe_256_cloth_01.rmdl",$"mdl/firstgen/firstgen_pipe_128_darkcloth_01.rmdl",$"mdl/firstgen/firstgen_pipe_128_goldfoil_01.rmdl",$"mdl/firstgen/firstgen_pipe_128_cloth_01.rmdl",$"mdl/firstgen/firstgen_pipe_64_darkcloth_01.rmdl",$"mdl/firstgen/firstgen_pipe_64_goldfoil_01.rmdl",$"mdl/firstgen/firstgen_pipe_64_cloth_01.rmdl",$"mdl/firstgen/firstgen_pipe_curve_darkcloth_01.rmdl",$"mdl/firstgen/firstgen_pipe_curve_goldfoil_01.rmdl",$"mdl/firstgen/firstgen_pipe_curve_cloth_01.rmdl",$"mdl/firstgen/firstgen_pipe_t_cloth_01.rmdl",$"mdl/firstgen/firstgen_pipe_t_darkcloth_01.rmdl",$"mdl/firstgen/firstgen_pipe_32_darkcloth_01.rmdl",$"mdl/firstgen/firstgen_pipe_32_goldfoil_01.rmdl",$"mdl/firstgen/firstgen_pipe_32_cloth_01.rmdl"] -file.all_assets ["mdl/barriers_1"] <- [$"mdl/barriers/concrete/concrete_barrier_01.rmdl",$"mdl/barriers/guard_rail_01_256.rmdl",$"mdl/barriers/guard_rail_01_128.rmdl",$"mdl/barriers/concrete/concrete_barrier_fence_128.rmdl",$"mdl/barriers/concrete/concrete_barrier_fence_tarp_128.rmdl"] -file.all_assets ["mdl/props_1"] <- [$"mdl/props/med_pod/exoplanet_med_pod_holder.rmdl",$"mdl/props/loot_bin_holder_inside.rmdl",$"mdl/props/tire_samson_v2_01/tire_samson_v2_01.rmdl",$"mdl/props/loot_bin_holder.rmdl",$"mdl/props/med_pod/exoplanet_med_pod_01.rmdl",$"mdl/props/med_pod/exoplanet_med_pod_02.rmdl",$"mdl/props/death_box/death_box_02.rmdl",$"mdl/props/global_access_panel_button/global_access_panel_button_console_w_stand.rmdl",$"mdl/props/loot_bin/loot_bin_01_animated.rmdl",$"mdl/props/zipline_balloon/zipline_balloon_base.rmdl",$"mdl/props/zipline_balloon/zipline_balloon.rmdl",$"mdl/props/pathfinder_beacon_radar/pathfinder_beacon_radar_animated.rmdl",$"mdl/props/global_access_panel_button/global_access_panel_button_wall.rmdl",$"mdl/props/loot_bin/loot_bin_02_animated.rmdl",$"mdl/props/ultimate_accelerant_usb/ultimate_accelerant_usb_static.rmdl",$"mdl/props/caustic_flask/caustic_flask.rmdl",$"mdl/props/caustic_mug/caustic_mug.rmdl",$"mdl/props/skull/skull_gladcard.rmdl",$"mdl/props/octane_wrench/octane_wrench_menu_static.rmdl",$"mdl/props/death_box/death_box_01_gladcard.rmdl",$"mdl/props/flask/prop_flask.rmdl",$"mdl/props/tablet/tablet_mini.rmdl",$"mdl/props/crypto_drone/crypto_drone_destoyed_01.rmdl",$"mdl/props/crypto_drone/crypto_drone_destoyed_02.rmdl",$"mdl/props/crypto_drone/crypto_drone_destoyed_03.rmdl"] -file.all_assets ["mdl/angel_city_1"] <- [$"mdl/angel_city/box_small_02.rmdl",$"mdl/angel_city/fire_hydrant_03.rmdl",$"mdl/angel_city/box_small_01.rmdl",$"mdl/angel_city/atm_small_02.rmdl",$"mdl/angel_city/sign_cleaning_wetfloor_01.rmdl",$"mdl/angel_city/toy_dispenser_01.rmdl",$"mdl/angel_city/vending_machine.rmdl",$"mdl/angel_city/jersey_barrier_large_02.rmdl",$"mdl/angel_city/recyclebin_large_01.rmdl",$"mdl/angel_city/ground_pile_trash_02.rmdl",$"mdl/angel_city/ground_pile_trash_03.rmdl",$"mdl/angel_city/keypad_01.rmdl"] -file.all_assets ["mdl/lamps_1"] <- [$"mdl/lamps/light_florescenet_modern_off.rmdl",$"mdl/lamps/exterior_walkway_light_off.rmdl",$"mdl/lamps/industrial_wall_light.rmdl",$"mdl/lamps/industrial_wall_light_02.rmdl",$"mdl/lamps/light_parking_post.rmdl",$"mdl/lamps/halogen_light_ceiling_blueish.rmdl",$"mdl/lamps/halogen_light_ceiling.rmdl",$"mdl/lamps/industrial_wall_light_02_on.rmdl",$"mdl/lamps/industrial_wall_light_02_on_blue.rmdl",$"mdl/lamps/industrial_wall_light_on_blue.rmdl",$"mdl/lamps/industrial_wall_light_on.rmdl",$"mdl/lamps/light_florescenet_modern.rmdl",$"mdl/lamps/floor_standing_ambient_light.rmdl",$"mdl/lamps/office_desk_lamp.rmdl",$"mdl/lamps/security_light_01_on.rmdl",$"mdl/lamps/warning_light_ON_red.rmdl",$"mdl/lamps/halogen_light_ceiling_subtle.rmdl"] -file.all_assets ["mdl/signs_1"] <- [$"mdl/signs/coffee_menu_01.rmdl",$"mdl/signs/sign_caution_chemical.rmdl",$"mdl/signs/sign_relic_warning_01.rmdl",$"mdl/signs/sign_caution_pump_warning.rmdl",$"mdl/signs/sign_service_shaft_01.rmdl",$"mdl/signs/sign_service_shaft_02.rmdl",$"mdl/signs/Sign_no_tresspasing.rmdl",$"mdl/signs/sign_caution_walkway_01.rmdl",$"mdl/signs/signage_plates_metal/sign_post_plate_c.rmdl",$"mdl/signs/signage_plates_metal/sign_plate_a.rmdl",$"mdl/signs/signage_plates_metal/sign_plate_c.rmdl",$"mdl/signs/market/angel_city_market_signs2.rmdl",$"mdl/signs/market/angel_city_market_signs1.rmdl",$"mdl/signs/market/angel_city_market_sign4.rmdl",$"mdl/signs/market/angel_city_market_signs4.rmdl",$"mdl/signs/market/angel_city_market_sign16.rmdl",$"mdl/signs/market/angel_city_market_sign17.rmdl",$"mdl/signs/market/angel_city_market_sign2.rmdl",$"mdl/signs/market/angel_city_market_sign9.rmdl",$"mdl/signs/market/angel_city_market_sign6.rmdl",$"mdl/signs/sign_market_01_on.rmdl",$"mdl/signs/runoff_signs/recycle_sign.rmdl",$"mdl/signs/street_sign_arrow.rmdl",$"mdl/signs/street_sign_rail_distance_02.rmdl",$"mdl/signs/thumper_signs_03.rmdl"] -file.all_assets ["mdl/signs_2"] <- [$"mdl/signs/runoff_signs/pump_distance_sign.rmdl",$"mdl/signs/restaurant_sign.rmdl",$"mdl/signs/market_sign_yellow_milk.rmdl",$"mdl/signs/scrolling_sign_scan.rmdl",$"mdl/signs/desertlands_city_newdawn_sign_01.rmdl",$"mdl/signs/desertlands_city_streetsign_01.rmdl",$"mdl/signs/numbers/sign_number_lit_2.rmdl",$"mdl/signs/numbers/sign_number_lit_3.rmdl",$"mdl/signs/numbers/sign_number_lit_1.rmdl",$"mdl/signs/building_sign_lit_standing_02.rmdl"] -file.all_assets ["mdl/utilities_1"] <- [$"mdl/utilities/halogen_lightbulb_case.rmdl",$"mdl/utilities/ceiling_vent_metal.rmdl",$"mdl/utilities/wall_Waterpipe.rmdl",$"mdl/utilities/wires_hanging_64.rmdl",$"mdl/utilities/wire_hanging_cluster_03.rmdl",$"mdl/utilities/power_gen1.rmdl",$"mdl/utilities/wire_ceiling_mounts_corner_l.rmdl",$"mdl/utilities/wire_ceiling_mounts_corner.rmdl",$"mdl/utilities/wires_ground_coils_01.rmdl",$"mdl/utilities/wire_ceiling_mounts_straight.rmdl",$"mdl/utilities/wire_ground_coils_02.rmdl",$"mdl/utilities/wire_ground_coils_03.rmdl",$"mdl/utilities/halogen_lightbulbs.rmdl"] -file.all_assets ["mdl/imc_interior_1"] <- [$"mdl/imc_interior/imc_int_fusebox_01.rmdl",$"mdl/imc_interior/wrapped_pipe_256.rmdl",$"mdl/imc_interior/ripped_pipe_128.rmdl",$"mdl/imc_interior/wrapped_pipe_128.rmdl",$"mdl/imc_interior/wrapped_pipe_bent.rmdl",$"mdl/imc_interior/ripped_pipe_64.rmdl"] -file.all_assets ["mdl/slum_city_1"] <- [$"mdl/slum_city/slumcity_grow_room_rack_lift_motor_02.rmdl",$"mdl/slum_city/slumcity_girdering_256x16_dirty_d.rmdl",$"mdl/slum_city/slumcity_wirebundle_128x32_hanging_a.rmdl",$"mdl/slum_city/slumcity_girdering_128x16_dirty_d.rmdl",$"mdl/slum_city/slumcity_wirebundle_64x32_hanging_a.rmdl",$"mdl/slum_city/slumcity_pipeplastic_256_a.rmdl",$"mdl/slum_city/slumcity_pipemetal_256_b.rmdl",$"mdl/slum_city/slumcity_pipemetal_256_c.rmdl",$"mdl/slum_city/slumcity_pipemetal_256_a.rmdl",$"mdl/slum_city/slumcity_girdering_64x16_dirty_d.rmdl",$"mdl/slum_city/slumcity_pipe_bracket_corrugated_metal_a.rmdl",$"mdl/slum_city/slumcity_pipeplastic_128_a.rmdl",$"mdl/slum_city/slumcity_girdering_32x16_dirty_d.rmdl",$"mdl/slum_city/slumcity_wirebundle_32x32_hanging_a.rmdl",$"mdl/slum_city/slumcity_wirebundle_16x16_90_a.rmdl",$"mdl/slum_city/slumcity_pipemetal_32_walljunc_a.rmdl",$"mdl/slum_city/slumcity_pipemetal_64_b.rmdl",$"mdl/slum_city/slumcity_pipemetal_64_c.rmdl",$"mdl/slum_city/slumcity_pipemetal_64_a.rmdl",$"mdl/slum_city/slumcity_pipeplastic_64_a.rmdl",$"mdl/slum_city/slumcity_girdering_16x16_dirty_d.rmdl",$"mdl/slum_city/slumcity_pipeplastic_16_90junc_a.rmdl",$"mdl/slum_city/slumcity_pipemetal_16_walljunc_a.rmdl",$"mdl/slum_city/slumcity_pipeplastic_32_a.rmdl",$"mdl/slum_city/slumcity_pipemetal_8_walljunc_a.rmdl"] -file.all_assets ["mdl/slum_city_2"] <- [$"mdl/slum_city/slumcity_pipemetal_8_junc_a.rmdl",$"mdl/slum_city/slumcity_pipeplastic_16_a.rmdl",$"mdl/slum_city/slumcity_pipe_256_corrugated_metal_a.rmdl",$"mdl/slum_city/slumcity_pipe_128_corrugated_metal_a.rmdl",$"mdl/slum_city/slumcity_pipe_64_corrugated_metal_b.rmdl",$"mdl/slum_city/slumcity_pipe_64_corrugated_metal_a.rmdl",$"mdl/slum_city/slumcity_pipe_90junc_corrugated_metal_a.rmdl",$"mdl/slum_city/slumcity_pipe_32_corrugated_metal_b.rmdl",$"mdl/slum_city/slumcity_pipe_32_corrugated_metal_a.rmdl",$"mdl/slum_city/slumcity_pipe_16_corrugated_metal_a.rmdl",$"mdl/slum_city/slumcity_fencewall_128x72_dirty.rmdl",$"mdl/slum_city/slumcity_industrial_scaffolding_128x128_tarp_c.rmdl",$"mdl/slum_city/slumcity_industrial_scaffolding_32x128_tarp_c.rmdl",$"mdl/slum_city/slum_city_apt_building_tanks_a.rmdl",$"mdl/slum_city/slumcity_column_40x64_dirty_c.rmdl",$"mdl/slum_city/slumcity_column01_40x128_dirty_a.rmdl",$"mdl/slum_city/slumcity_fencewall_64x72_dirty.rmdl"] -file.all_assets ["mdl/rocks_1"] <- [$"mdl/rocks/rock_sharp_lava_moss_desertlands_05.rmdl",$"mdl/rocks/rock_sharp_lava_moss_desertlands_04.rmdl",$"mdl/rocks/rock_sharp_lava_moss_desertlands_03.rmdl",$"mdl/rocks/rock_sharp_lava_moss_desertlands_06.rmdl",$"mdl/rocks/rock_sharp_lava_moss_desertlands_02.rmdl",$"mdl/rocks/rock_sharp_lava_moss_desertlands_01.rmdl",$"mdl/rocks/rock_lava_moss_desertlands_04.rmdl",$"mdl/rocks/rock_lava_moss_desertlands_03.rmdl",$"mdl/rocks/rock_lava_moss_desertlands_02.rmdl",$"mdl/rocks/rock_lava_moss_desertlands_01.rmdl",$"mdl/rocks/sulfur_geyser_brown_02.rmdl",$"mdl/rocks/sulfur_geyser_yellow_02.rmdl",$"mdl/rocks/sulfur_geyser_brown_01.rmdl",$"mdl/rocks/sulfur_geyser_yellow_01.rmdl",$"mdl/rocks/sulfur_mound_yellow_02.rmdl",$"mdl/rocks/sulfur_mound_brown_02.rmdl",$"mdl/rocks/sulfur_mound_brown_03.rmdl",$"mdl/rocks/sulfur_mound_yellow_03.rmdl",$"mdl/rocks/sulfur_mound_brown_05.rmdl",$"mdl/rocks/sulfur_mound_brown_06.rmdl",$"mdl/rocks/sulfur_mound_yellow_06.rmdl",$"mdl/rocks/rock_lava_small_moss_desertlands_02.rmdl",$"mdl/rocks/icelandic_moss_rock_01.rmdl",$"mdl/rocks/desertlands_sulfur_rock_06.rmdl",$"mdl/rocks/desertlands_sulfur_rock_cluster_03.rmdl"] -file.all_assets ["mdl/rocks_2"] <- [$"mdl/rocks/desertlands_sulfur_rock_05.rmdl",$"mdl/rocks/rock_lava_small_moss_desertlands_01.rmdl",$"mdl/rocks/rock_lava_small_moss_desertlands_03.rmdl",$"mdl/rocks/rock_lava_small_desertlands_02.rmdl",$"mdl/rocks/rock_lava_small_desertlands_01.rmdl",$"mdl/rocks/rock_lava_cluster_desertlands_01.rmdl",$"mdl/rocks/rock_lava_cluster_desertlands_02.rmdl",$"mdl/rocks/rock_lava_small_desertlands_03.rmdl",$"mdl/rocks/rock_lava_cluster_desertlands_03.rmdl",$"mdl/rocks/desertlands_sulfur_rock_cluster_01.rmdl",$"mdl/rocks/desertlands_sulfur_ground_cluster_01.rmdl",$"mdl/rocks/icelandic_rockcluster_02.rmdl",$"mdl/rocks/icelandic_rockcluster_03.rmdl",$"mdl/rocks/icelandic_rockcluster_01.rmdl",$"mdl/rocks/desertlands_sulfur_rock_07.rmdl",$"mdl/rocks/desertlands_sulfur_rock_08.rmdl",$"mdl/rocks/desertlands_sulfur_lake_crust_01.rmdl",$"mdl/rocks/desertlands_sulfur_lake_crust_02.rmdl",$"mdl/rocks/rock_sharp_lava_moss_desertlands_06_lavender.rmdl",$"mdl/rocks/desertlands_victory_platform.rmdl",$"mdl/rocks/rock_small_02.rmdl"] -file.all_assets ["mdl/pipes_1"] <- [$"mdl/pipes/pipe_modular_painted_grey_256.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_256.rmdl",$"mdl/pipes/pipe_modular_painted_red_256.rmdl",$"mdl/pipes/pipe_modular_painted_grey_128.rmdl",$"mdl/pipes/pipe_modular_painted_red_128.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_128.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_64.rmdl",$"mdl/pipes/pipe_modular_painted_grey_64.rmdl",$"mdl/pipes/pipe_modular_painted_red_64.rmdl",$"mdl/pipes/pipe_modular_painted_grey_32_valve.rmdl",$"mdl/pipes/pipe_modular_painted_red_32_valve.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_32_valve.rmdl",$"mdl/pipes/pipe_modular_painted_grey_32_tjunk.rmdl",$"mdl/pipes/pipe_modular_painted_red_32_tjunk.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_32_tjunk.rmdl",$"mdl/pipes/pipe_modular_painted_grey_corner.rmdl",$"mdl/pipes/pipe_modular_painted_red_corner.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_corner.rmdl",$"mdl/pipes/pipe_modular_painted_grey_32_03.rmdl",$"mdl/pipes/pipe_modular_painted_grey_32.rmdl",$"mdl/pipes/pipe_modular_painted_grey_32_04.rmdl",$"mdl/pipes/pipe_modular_painted_red_32.rmdl",$"mdl/pipes/pipe_modular_painted_red_32_04.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_32.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_32_04.rmdl"] -file.all_assets ["mdl/pipes_2"] <- [$"mdl/pipes/pipe_modular_painted_grey_45_angle.rmdl",$"mdl/pipes/pipe_modular_painted_grey_16.rmdl",$"mdl/pipes/pipe_modular_painted_red_16.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_16.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_8.rmdl",$"mdl/pipes/pipe_modular_painted_grey_8.rmdl",$"mdl/pipes/pipe_modular_painted_red_8.rmdl",$"mdl/pipes/pipe_medium_256_01.rmdl",$"mdl/pipes/slum_pipe_large_blue_64_01.rmdl",$"mdl/pipes/slum_pipe_large_yellow_64_01.rmdl",$"mdl/pipes/slum_pipe_large_blue_32_01.rmdl",$"mdl/pipes/slum_pipe_large_yellow_32_01.rmdl",$"mdl/pipes/pipe_medium_128_01.rmdl",$"mdl/pipes/pipe_medium_tjunc_01.rmdl",$"mdl/pipes/pipe_medium_angle_01.rmdl",$"mdl/pipes/pipe_medium_64_01.rmdl",$"mdl/pipes/pipe_medium_45angle_01.rmdl",$"mdl/pipes/pipe_small_128_01.rmdl",$"mdl/pipes/pipe_small_64_01.rmdl",$"mdl/pipes/pipe_small_tjunc_01.rmdl",$"mdl/pipes/pipe_small_angle_01.rmdl",$"mdl/pipes/pipe_small_32_01.rmdl",$"mdl/pipes/airduct_l_128.rmdl",$"mdl/pipes/airduct_l_4junc.rmdl",$"mdl/pipes/airduct_l_80.rmdl"] -file.all_assets ["mdl/pipes_3"] <- [$"mdl/pipes/airduct_s_128.rmdl",$"mdl/pipes/airduct_l_turn_side.rmdl",$"mdl/pipes/airduct_l_turn_long_side.rmdl",$"mdl/pipes/airduct_l_slant.rmdl",$"mdl/pipes/airduct_s_tjunc.rmdl",$"mdl/pipes/airduct_s_turn_side.rmdl",$"mdl/pipes/airduct_l_turn_vert.rmdl",$"mdl/pipes/airduct_l_48.rmdl",$"mdl/pipes/airduct_s_80.rmdl",$"mdl/pipes/airduct_s_turn_vert.rmdl",$"mdl/pipes/airduct_s_48.rmdl",$"mdl/pipes/airduct_trans_m_to_s.rmdl",$"mdl/pipes/airduct_l_vent.rmdl",$"mdl/pipes/slum_pipe_large_blue_512_01.rmdl",$"mdl/pipes/slum_pipe_large_yellow_512_01.rmdl",$"mdl/pipes/slum_pipe_large_blue_256_01.rmdl",$"mdl/pipes/slum_pipe_large_blue_256_02.rmdl",$"mdl/pipes/slum_pipe_large_yellow_256_01.rmdl",$"mdl/pipes/slum_pipe_large_yellow_256_02.rmdl",$"mdl/pipes/slum_pipe_large_blue_tjunc_01.rmdl",$"mdl/pipes/slum_pipe_large_yellow_tjunc_01.rmdl",$"mdl/pipes/slum_pipe_large_blue_angle_01.rmdl",$"mdl/pipes/slum_pipe_large_yellow_angle_01.rmdl",$"mdl/pipes/slum_pipe_large_blue_128_01.rmdl",$"mdl/pipes/slum_pipe_large_yellow_128_01.rmdl"] -file.all_assets ["mdl/pipes_4"] <- [$"mdl/pipes/slum_pipe_large_yellow_angle45_01.rmdl",$"mdl/pipes/pipe_medium_32_01.rmdl",$"mdl/pipes/pipe_medium_16_01.rmdl"] -file.all_assets ["mdl/beacon_1"] <- [$"mdl/beacon/construction_scaff_128_64_64.rmdl",$"mdl/beacon/construction_scaff_segment_128_64.rmdl",$"mdl/beacon/beacon_server_wall_mount_01_off.rmdl",$"mdl/beacon/construction_scaff_128_32.rmdl",$"mdl/beacon/kodai_metal_beam_02_256.rmdl",$"mdl/beacon/construction_scaff_post_128_01.rmdl",$"mdl/beacon/kodai_metal_beam_02_128.rmdl",$"mdl/beacon/kodai_metal_beam_02_96.rmdl",$"mdl/beacon/kodai_metal_beam_02_64.rmdl",$"mdl/beacon/construction_scaff_tarp_floor_01.rmdl",$"mdl/beacon/construction_scaff_128_64_128_02.rmdl",$"mdl/beacon/beacon_wire_ground_coils_04.rmdl",$"mdl/beacon/mendoko_wires_ground_coils_01.rmdl",$"mdl/beacon/beacon_wire_ground_coils_02.rmdl",$"mdl/beacon/mendoko_wire_ground_coils_02.rmdl",$"mdl/beacon/beacon_wire_cluster_07.rmdl",$"mdl/beacon/mendoko_wire_cluster_07.rmdl",$"mdl/beacon/beacon_wire_ground_coils_03.rmdl",$"mdl/beacon/mendoko_wire_ground_coils_03.rmdl",$"mdl/beacon/modular_hose_yellow_128_bend_01.rmdl",$"mdl/beacon/modular_hose_yellow_128_01.rmdl",$"mdl/beacon/modular_hose_yellow_128_02.rmdl",$"mdl/beacon/beacon_wire_cluster_03.rmdl",$"mdl/beacon/mendoko_wire_cluster_03.rmdl",$"mdl/beacon/beacon_wire_cluster_02.rmdl"] -file.all_assets ["mdl/beacon_2"] <- [$"mdl/beacon/mendoko_wire_cluster_02.rmdl",$"mdl/beacon/beacon_wire_cluster_01.rmdl",$"mdl/beacon/beacon_wire_cluster_04.rmdl",$"mdl/beacon/mendoko_wire_cluster_01.rmdl",$"mdl/beacon/modular_hose_yellow_32_01.rmdl",$"mdl/beacon/mendoko_wire_cluster_08.rmdl",$"mdl/beacon/mendoko_wire_cluster_08_l.rmdl",$"mdl/beacon/modular_hose_yellow_corner_01.rmdl",$"mdl/beacon/beacon_wire_cluster_06.rmdl",$"mdl/beacon/generator_fan_house_cap_01.rmdl",$"mdl/beacon/construction_plastic_mat_black_01.rmdl",$"mdl/beacon/construction_plastic_mat_white_01.rmdl",$"mdl/beacon/beacon_server_wall_mount_01.rmdl",$"mdl/beacon/beacon_fence_sign_01.rmdl",$"mdl/beacon/beacon_server_half_stand_01.rmdl",$"mdl/beacon/beacon_server_stand_01.rmdl",$"mdl/beacon/construction_plastic_mat_clear_01.rmdl",$"mdl/beacon/beacon_construction_flag_animated.rmdl"] -file.all_assets ["mdl/mendoko_1"] <- [$"mdl/mendoko/mendoko_desk_01.rmdl",$"mdl/mendoko/mendoko_rubber_floor_04.rmdl",$"mdl/mendoko/mendoko_rubber_floor_01.rmdl",$"mdl/mendoko/mendoko_sink_cabinet.rmdl",$"mdl/mendoko/mendoko_cabinet_02.rmdl",$"mdl/mendoko/mendoko_monitor_03.rmdl",$"mdl/mendoko/mendoko_monitor_04.rmdl",$"mdl/mendoko/mendoko_wire_ground_coils_02.rmdl",$"mdl/mendoko/mendoko_wire_ground_coils_03.rmdl",$"mdl/mendoko/mendoko_research_microscope.rmdl",$"mdl/mendoko/mendoko_handscanner_01.rmdl",$"mdl/mendoko/mendoko_handscanner_01_dmg.rmdl",$"mdl/mendoko/mendoko_research_centrifuge.rmdl",$"mdl/mendoko/mendoko_research_equipment_01.rmdl",$"mdl/mendoko/mendoko_research_equipment_02.rmdl",$"mdl/mendoko/mendoko_research_equipment_03.rmdl",$"mdl/mendoko/mendoko_research_storage.rmdl"] -file.all_assets ["mdl/door_1"] <- [$"mdl/door/canyonlands_door_single_02_hinges.rmdl",$"mdl/door/canyonlands_door_single_02_damaged.rmdl",$"mdl/door/canyonlands_door_single_02.rmdl",$"mdl/door/door_256x256x8_elevatorstyle02_animated.rmdl",$"mdl/door/canyonlands_door_vfx_bl.rmdl",$"mdl/door/canyonlands_door_vfx_br.rmdl",$"mdl/door/canyonlands_door_vfx_c.rmdl",$"mdl/door/canyonlands_door_vfx_uc.rmdl",$"mdl/door/canyonlands_door_vfx_ul.rmdl",$"mdl/door/canyonlands_door_vfx_ur.rmdl"] -file.all_assets ["mdl/lava_land_1"] <- [$"mdl/lava_land/volcanic_rock_01a.rmdl",$"mdl/lava_land/volcanic_rock_02a.rmdl",$"mdl/lava_land/volcanic_dry_flow_01.rmdl"] -file.all_assets ["mdl/vehicles_r5_1"] <- [$"mdl/vehicles_r5/land/msc_forklift_imc_v2/veh_land_msc_forklift_imc_v2_static.rmdl",$"mdl/vehicles_r5/land_med/msc_freight_tortus_mod/veh_land_msc_freight_tortus_mod_cargo_holder_v1_static.rmdl",$"mdl/vehicles_r5/land_med/msc_freight_tortus_mod/veh_land_msc_freight_tortus_mod_wheeled_v1_static.rmdl",$"mdl/vehicles_r5/land_med/msc_freight_tortus_mod/veh_land_msc_freight_tortus_mod_attach_nav_v1_static.rmdl",$"mdl/vehicles_r5/land_med/msc_freight_tortus_mod/veh_land_msc_freight_tortus_mod_attach_hitch_v1_static.rmdl",$"mdl/vehicles_r5/land/msc_suv_partum/veh_land_msc_suv_partum_static.rmdl",$"mdl/vehicles_r5/land/msc_truck_mod_lrg/veh_land_msc_truck_mod_police_lrg_01_closed_static.rmdl"] -file.all_assets ["mdl/canyonlands_1"] <- [$"mdl/canyonlands/canyonlands_zone_sign_01.rmdl",$"mdl/canyonlands/canyonlands_zone_sign_03b.rmdl",$"mdl/canyonlands/canyonlands_zone_sign_03.rmdl"] -file.all_assets ["mdl/decals_1"] <- [$"mdl/decals/grime_dirty_floor_decal_01.rmdl",$"mdl/decals/grime_dirty_floor_decal_02.rmdl",$"mdl/decals/grime_dirty_floor_decal_03.rmdl",$"mdl/decals/puddle_floor_decal_flat_01.rmdl",$"mdl/decals/puddle_floor_decal_flat_02.rmdl",$"mdl/decals/puddle_floor_decal_flat_03.rmdl"] -file.all_assets ["mdl/Gibs_1"] <- [$"mdl/Gibs/wood_gib01e.rmdl",$"mdl/Gibs/wood_gib01d.rmdl",$"mdl/Gibs/wood_gib01c.rmdl",$"mdl/Gibs/wood_gib01b.rmdl",$"mdl/Gibs/wood_gib01a.rmdl",$"mdl/Gibs/Glass_shard01.rmdl",$"mdl/Gibs/Glass_shard02.rmdl",$"mdl/Gibs/Glass_shard03.rmdl",$"mdl/Gibs/Glass_shard04.rmdl",$"mdl/Gibs/Glass_shard05.rmdl",$"mdl/Gibs/Glass_shard06.rmdl",$"mdl/Gibs/metal_gib1.rmdl",$"mdl/Gibs/metal_gib2.rmdl",$"mdl/Gibs/metal_gib3.rmdl",$"mdl/Gibs/metal_gib4.rmdl"] -file.all_assets ["mdl/props_debris_1"] <- [$"mdl/props_debris/concrete_chunk08a.rmdl",$"mdl/props_debris/concrete_chunk09a.rmdl",$"mdl/props_debris/concrete_chunk03a.rmdl",$"mdl/props_debris/concrete_chunk07a.rmdl"] -file.all_assets ["mdl/vehicle_1"] <- [$"mdl/vehicle/droppod_loot/droppod_loot_LL_holo.rmdl",$"mdl/vehicle/goblin_dropship/goblin_dropship_debris_01.rmdl",$"mdl/vehicle/goblin_dropship/goblin_dropship_holo.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo7.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo6.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo5.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo4.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo3.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo2.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo1.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_afterburners.rmdl"] -file.all_assets ["mdl/gibs_1"] <- [$"mdl/gibs/titan_gibs/at_gib8_l_thigh2.rmdl",$"mdl/gibs/titan_gibs/og_gib_r_forarm_d.rmdl",$"mdl/gibs/wood_gib01_lg.rmdl"] -file.all_assets ["mdl/extras_1"] <- [$"mdl/market/market_table_01.rmdl",$"mdl/rise/rise_door_frame_01.rmdl",$"mdl/rise/catwalk_hanging_wires_01.rmdl",$"mdl/benches/bench_single_modern_dirty.rmdl",$"mdl/haven/kitchen_set04_table01_sm.rmdl",$"mdl/haven/haven_bamboo_tree_02.rmdl",$"mdl/haven/kitchen_set04_table01_top_sm.rmdl",$"mdl/commercial/store_shelf_wall_32.rmdl",$"mdl/commercial/wall_mounted_fan.rmdl",$"mdl/outpost207/gondola_wires_01.rmdl",$"mdl/lights/industrial_interior_light_small_noant_off_01.rmdl",$"mdl/lights/industrial_interior_light_small_01.rmdl",$"mdl/imc_base/light_wall_imc_01.rmdl",$"mdl/imc_base/light_wall_imc_01_on.rmdl",$"mdl/hardware/paint_spraycan_closed.rmdl",$"mdl/thaw/thaw_rock_horizontal_01.rmdl",$"mdl/city_modern/citymodern_trashcan_a.rmdl",$"mdl/city_modern/citymodern_planter_128x128_72_squared_a.rmdl",$"mdl/kodai/white_board_postits_01.rmdl",$"mdl/floating_village/lagoon_window_metal_shutters_open_80x128.rmdl",$"mdl/floating_village/lagoon_window_metal_shutters_open_80x64.rmdl",$"mdl/timeshift/timeshift_bench_01.rmdl",$"mdl/homestead/homestead_floor_panel_01.rmdl",$"mdl/eden/beacon_small_screen_02_off.rmdl",$"mdl/eden/eden_electrical_pole_01.rmdl"] -file.all_assets ["mdl/extras_2"] <- [$"mdl/eden/eden_electrical_transformer_01.rmdl",$"mdl/fixtures/stasis_light_01_warm.rmdl",$"mdl/fixtures/stasis_light_01.rmdl",$"mdl/fixtures/stasis_light_01_red.rmdl",$"mdl/communication/phone_video_street.rmdl",$"mdl/menu/menu_cubemap.rmdl",$"mdl/menu/xp_badge.rmdl",$"mdl/menu/coin.rmdl",$"mdl/vistas/iceland_sloped.rmdl",$"mdl/vistas/iceland_slopeb.rmdl",$"mdl/vistas/desertlands_se.rmdl",$"mdl/runoff/runoff_railing_64_yellow.rmdl",$"mdl/runoff/runoff_railing_32_yellow.rmdl",$"mdl/refinery/light_tower.rmdl",$"mdl/traffic/traffic_empty_light_pole_extended_01_a.rmdl",$"mdl/traffic/traffic_light_02_a.rmdl",$"mdl/traffic/traffic_light_02_b.rmdl",$"mdl/harmony_mines/mine_flag_plastic_02.rmdl",$"mdl/military_base/militaryfort_wall_corner_decal_number_01.rmdl",$"mdl/military_base/militaryfort_wall_corner_decal_number_02.rmdl",$"mdl/military_base/militaryfort_wall_decal_orange_arrow_01.rmdl",$"mdl/test/virginia_test/desertlands_construction_site_01_ice_jakev.rmdl",$"mdl/water/water_puddle_decal_01.rmdl",$"mdl/dev/envballs.rmdl",$"mdl/dev/editor_ref.rmdl"] -file.all_assets ["mdl/extras_3"] <- [$"mdl/currency/crafting/currency_crafting_epic.rmdl",$"mdl/hud/grenade_indicator/bang_indicator.rmdl",$"mdl/empty/lights/empty_lights.rmdl",$"mdl/Robots/mobile_hardpoint/mobile_hardpoint_static.rmdl",$"mdl/creatures/bird/bird.rmdl",$"mdl/metal_scraps/scrap_metal04.rmdl",$"mdl/robotics_r2/turret_plasma/plasma_turret_pc_1.rmdl",$"mdl/robotics_r2/turret_plasma/plasma_turret_pc_2.rmdl",$"mdl/robotics_r2/turret_plasma/plasma_turret_pc_3.rmdl",$"mdl/s2s/s2s_bridge_glass_shard.rmdl",$"mdl/robots/drone_air_attack/drone_attack_pc_4.rmdl",$"mdl/robots/drone_air_attack/drone_attack_pc_3.rmdl",$"mdl/rubble/concrete_chunk_med_01_body.rmdl"] - -// KINGS CANYON -file.all_assets ["mdl/colony_1"] <- [$"mdl/colony/antenna_05_colony.rmdl",$"mdl/colony/box_cardboard_flat_01.rmdl",$"mdl/colony/dirty_plate_pile_02.rmdl",$"mdl/colony/dirty_bowl_single.rmdl",$"mdl/colony/ventilation_duct_hatch_01b_black.rmdl",$"mdl/colony/ventilation_duct_hatch_02_black.rmdl",$"mdl/colony/ventilation_unit_01b_black.rmdl",$"mdl/colony/antenna_03_colony.rmdl",$"mdl/colony/farmland_crate_md_80x64x72_01.rmdl",$"mdl/colony/farmland_crate_md_80x64x72_02.rmdl",$"mdl/colony/farmland_ac_unit_64x16x80_01.rmdl",$"mdl/colony/antenna_01_colony_arm.rmdl",$"mdl/colony/farmland_domicile_hanging_net_01.rmdl",$"mdl/colony/solar_panel_angled_01.rmdl",$"mdl/colony/farmland_fridge_01.rmdl",$"mdl/colony/farmland_house_tarp_side_02_beams.rmdl",$"mdl/colony/farmland_crate_plastic_01.rmdl",$"mdl/colony/farmland_house_tarp_side_01.rmdl",$"mdl/colony/antenna_02_colony.rmdl",$"mdl/colony/colony_corner_connect.rmdl",$"mdl/colony/water_heater_red.rmdl",$"mdl/colony/solar_water_heater01_40u.rmdl",$"mdl/colony/colony_beam_support.rmdl",$"mdl/colony/farmland_wall_frame_128x128_01.rmdl",$"mdl/colony/farmland_window_01_096x80x04_01.rmdl"] -file.all_assets ["mdl/colony_2"] <- [$"mdl/colony/farmland_house_frame_angled_128x40.rmdl",$"mdl/colony/farmland_house_frame_90bend_lg_01.rmdl",$"mdl/colony/farmland_house_frame_90bend_sm_01.rmdl",$"mdl/colony/farmland_house_frame_90bend_sm_02.rmdl",$"mdl/colony/farmland_house_tarp_side_02.rmdl",$"mdl/colony/antenna_01_colony.rmdl",$"mdl/colony/antenna_01_colony_electricalboxes.rmdl",$"mdl/colony/antenna_01_colony_pole.rmdl",$"mdl/colony/tower_antenna_radio_01.rmdl",$"mdl/colony/colony_wall_run_plate.rmdl",$"mdl/colony/farmland_ceiling_128x128_01.rmdl",$"mdl/colony/farmland_storage_bin_long_01.rmdl",$"mdl/colony/solar_panel_colony_single_02.rmdl",$"mdl/colony/farmland_wall_128x064x16_metal_01.rmdl",$"mdl/colony/farmland_wall_128x064x08_metal_01.rmdl",$"mdl/colony/farmland_crate_sm_32x24x40_01.rmdl",$"mdl/colony/farmland_kitchen_cabinets_02.rmdl",$"mdl/colony/farmland_house_support_01.rmdl",$"mdl/colony/farmland_shelf_ext_128.rmdl",$"mdl/colony/farmland_fence_rusted_02.rmdl",$"mdl/colony/farmland_fence_rusted_01.rmdl",$"mdl/colony/farmland_kitchen_cabinets_03.rmdl",$"mdl/colony/farmland_wall_128x128x16_metal_01.rmdl",$"mdl/colony/farmland_wall_128x128x16_metal_01b.rmdl",$"mdl/colony/farmland_wall_128x128x08_metal_01.rmdl"] -file.all_assets ["mdl/colony_3"] <- [$"mdl/colony/farmland_wall_128x128x08_metal_01b.rmdl",$"mdl/colony/farmland_wall_128x128x04_metal_01.rmdl",$"mdl/colony/farmland_wall_128x096x16_metal_01.rmdl",$"mdl/colony/farmland_wall_128x096x16_metal_01b.rmdl",$"mdl/colony/farmland_fence_rusted_03_large.rmdl",$"mdl/colony/farmland_house_doorway_064x080x04_01.rmdl",$"mdl/colony/farmland_house_window_064x080x04.rmdl",$"mdl/colony/farmland_ceiling_128x096_01.rmdl",$"mdl/colony/farmland_house_window_02.rmdl",$"mdl/colony/farmland_wall_128x096x08_metal_01.rmdl",$"mdl/colony/farmland_wall_128x096x08_metal_01b.rmdl",$"mdl/colony/farmland_house_window_half_02.rmdl",$"mdl/colony/farmland_wall_128x096x04_metal_01.rmdl",$"mdl/colony/farmland_wall_128x096x04_metal_01b.rmdl",$"mdl/colony/farmland_wall_128x064x16_metal_01b.rmdl",$"mdl/colony/farmland_fence_rusted_03.rmdl",$"mdl/colony/farmland_wall_corner_128x32_metal_01.rmdl",$"mdl/colony/farmland_ceiling_128x064_01.rmdl",$"mdl/colony/farmland_wall_128x064x08_metal_01b.rmdl",$"mdl/colony/farmland_wall_128x064x04_metal_01b.rmdl",$"mdl/colony/farmland_ceiling_128x048_01.rmdl",$"mdl/colony/farmland_ceiling_096x048_01.rmdl",$"mdl/colony/farmland_ceiling_128x032_01.rmdl",$"mdl/colony/farmland_house_corner_16x16_01.rmdl",$"mdl/colony/farmland_detail_128x24x08_01.rmdl"] -file.all_assets ["mdl/colony_4"] <- [$"mdl/colony/farmland_trim_angle_128x016_01.rmdl",$"mdl/colony/farmland_house_frame_01_128.rmdl",$"mdl/colony/farmland_trim_angle_096x016_01.rmdl",$"mdl/colony/farmland_house_frame_01_096.rmdl",$"mdl/colony/farmland_trim_angle_064x016_01.rmdl",$"mdl/colony/farmland_house_frame_01_064.rmdl",$"mdl/colony/farmland_house_frame_01_048.rmdl",$"mdl/colony/farmland_trim_angle_032x016_01.rmdl",$"mdl/colony/farmland_house_frame_01_032.rmdl",$"mdl/colony/farmland_house_frame_01_016.rmdl",$"mdl/colony/farmland_house_frame_01_008.rmdl"] -file.all_assets ["mdl/thunderdome_1"] <- [$"mdl/thunderdome/survival_modular_flexscreens_04.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_512x352_02.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_512x352_01.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_256x352_02.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_256x352_01.rmdl",$"mdl/thunderdome/survival_modular_flexscreens_frame_01.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_512x128_01.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x256_03.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x256_05.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x256_02.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_128x352_03.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_128x352_04.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_128x352_01.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_128x352_02.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x128_03.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x128_02.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x128_04.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x128_06.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x64_02.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x64_04.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_256x128_02.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_256x128_03.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_256_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_128x32_01.rmdl"] -file.all_assets ["mdl/thunderdome_2"] <- [$"mdl/thunderdome/thunderdome_cage_frame_16x352_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_128_01.rmdl",$"mdl/thunderdome/thunderdome_spike_traps_small_256_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_16x128_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_16x32_01.rmdl",$"mdl/thunderdome/thunderdome_stands_girder_brace_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_16x32_02.rmdl",$"mdl/thunderdome/thunderdome_screen_tower_01.rmdl",$"mdl/thunderdome/thunderdome_hanging_wire_rings_04.rmdl",$"mdl/thunderdome/thunderdome_screen_tower_arm_01.rmdl",$"mdl/thunderdome/thunderdome_stands_awning_01.rmdl",$"mdl/thunderdome/thunderdome_gantry_pulley_02.rmdl",$"mdl/thunderdome/thunderdome_gantry_pulley_01.rmdl",$"mdl/thunderdome/thunderdome_barrier_01.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_512x128_04.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl",$"mdl/thunderdome/thunderdome_hanging_pilot_helmets_04.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x64_05.rmdl",$"mdl/thunderdome/thunderdome_hanging_pilot_helmets_06.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_03.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_01.rmdl",$"mdl/thunderdome/thunderdome_gantry_01.rmdl",$"mdl/thunderdome/canyonland_thunderdome_rock_charred_orange_01.rmdl",$"mdl/thunderdome/canyonland_thunderdome_rock_charred_damaged_orange_01.rmdl",$"mdl/thunderdome/thunderdome_fan_stands_01.rmdl"] -file.all_assets ["mdl/thunderdome_3"] <- [$"mdl/thunderdome/thunderdome_cage_wall_512x240_01.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_512x128_02.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_512x128_03.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_128x128_03.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_128x128_05.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x256_01.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_256x352_03.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_64x352_01.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x128_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_64x144_01.rmdl",$"mdl/thunderdome/thunderdome_prowler_hatch_01.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x64_06.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x64_03.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_256x128_01.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x32_01.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x64_01.rmdl",$"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_128x128_01.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_64x64_01.rmdl",$"mdl/thunderdome/thunderdome_cage_door_01.rmdl",$"mdl/thunderdome/thunderdome_stands_girder_32x256_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_64x32_01.rmdl",$"mdl/thunderdome/thunderdome_spike_traps_large_128_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_64_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_32x32_01.rmdl"] -file.all_assets ["mdl/thunderdome_4"] <- [$"mdl/thunderdome/thunderdome_cage_frame_02.rmdl",$"mdl/thunderdome/thunderdome_spike_traps_small_128_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_32_01.rmdl",$"mdl/thunderdome/thunderdome_spike_traps_small_64_01.rmdl",$"mdl/thunderdome/thunderdome_cut_rock_large_01.rmdl",$"mdl/thunderdome/thunderdome_cut_rock_large_02.rmdl",$"mdl/thunderdome/canyonland_thunderdome_rock_orange_01.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_sand_256x128_01.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_sand_256x128_02.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_sand_256x128_03.rmdl",$"mdl/thunderdome/canyonland_thunderdome_ground_cap_01.rmdl",$"mdl/thunderdome/thunderdome_hanging_wire_rings_02.rmdl",$"mdl/thunderdome/thunderdome_hanging_wire_rings_03.rmdl",$"mdl/thunderdome/thunderdome_hanging_wire_rings_01.rmdl",$"mdl/thunderdome/thunderdome_barrier_02.rmdl",$"mdl/thunderdome/thunderdome_pilot_cage_01.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_128x128_04.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x256_04.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_128x128_06.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x128_05.rmdl",$"mdl/thunderdome/thunderdome_cage_floor_128x128_01.rmdl",$"mdl/thunderdome/thunderdome_stands_grate_01.rmdl",$"mdl/thunderdome/thunderdome_cage_floor_64x64_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_04.rmdl",$"mdl/thunderdome/thunderdome_hanging_pilot_helmets_05.rmdl"] -file.all_assets ["mdl/thunderdome_5"] <- [$"mdl/thunderdome/thunderdome_cage_floor_128x64_01.rmdl"] -file.all_assets ["mdl/sewers_1"] <- [$"mdl/sewers/sewer_wire_black_set_thin_04.rmdl",$"mdl/sewers/sewer_wire_black_set_thick_02.rmdl",$"mdl/sewers/sewer_wire_black_set_thick_04.rmdl",$"mdl/sewers/sewer_wire_black_set_thick_01.rmdl",$"mdl/sewers/sewer_wire_black_set_thick_03.rmdl",$"mdl/sewers/sewer_wire_black_set_thin_01.rmdl",$"mdl/sewers/sewer_wire_black_set_thin_03.rmdl",$"mdl/sewers/sewer_wire_black_set_thin_02.rmdl",$"mdl/sewers/sewer_wire_bracket_set_thick_01.rmdl",$"mdl/sewers/sewer_wire_bracket_set_thick_03.rmdl",$"mdl/sewers/sewer_wire_bracket_set_thin_03.rmdl",$"mdl/sewers/sewer_wire_bracket_set_thick_02.rmdl",$"mdl/sewers/sewer_wire_bracket_set_thin_01.rmdl",$"mdl/sewers/sewer_wire_bracket_set_thin_02.rmdl",$"mdl/sewers/sewer_wire_black_bend_r_thin_01.rmdl",$"mdl/sewers/sewer_wire_black_bend_l_thin_01.rmdl",$"mdl/sewers/sewer_wire_black_bend_l_thick_01.rmdl",$"mdl/sewers/sewer_wire_black_bend_r_thick_01.rmdl",$"mdl/sewers/sewer_lab_floor_64_128_02.rmdl",$"mdl/sewers/sewer_lab_floor_64_128_03.rmdl"] -file.all_assets ["mdl/ola_1"] <- [$"mdl/ola/sewer_wires_02.rmdl",$"mdl/ola/sewer_wires_01.rmdl",$"mdl/ola/sewer_railing_01_corner_in.rmdl",$"mdl/ola/sewer_railing_01_corner_out.rmdl",$"mdl/ola/sewer_railing_01_128.rmdl",$"mdl/ola/sewer_stair_railing_01.rmdl",$"mdl/ola/sewer_stair_railing_01_inv.rmdl",$"mdl/ola/sewer_railing_01_stairend.rmdl",$"mdl/ola/sewer_grate_01_16.rmdl",$"mdl/ola/sewer_railing_01_64.rmdl",$"mdl/ola/sewer_railing_02_128.rmdl",$"mdl/ola/sewer_stair_railingsmall_01.rmdl",$"mdl/ola/sewer_railing_01_32.rmdl",$"mdl/ola/sewer_railing_01_16.rmdl",$"mdl/ola/sewer_grate_01.rmdl",$"mdl/ola/sewer_staircase_quad.rmdl",$"mdl/ola/sewer_staircase_96_quad.rmdl",$"mdl/ola/sewer_staircase_end_02.rmdl",$"mdl/ola/sewer_staircase_double.rmdl",$"mdl/ola/sewer_staircase_96_double.rmdl",$"mdl/ola/sewer_staircase_single.rmdl",$"mdl/ola/sewer_grate_01_32.rmdl",$"mdl/ola/sewer_staircase_96_single.rmdl",$"mdl/ola/sewer_grate_clamp_01_128.rmdl",$"mdl/ola/sewer_staircase_96_01.rmdl"] -file.all_assets ["mdl/ola_2"] <- [$"mdl/ola/sewer_staircase_96_end_02.rmdl",$"mdl/ola/sewer_staircase_48_quad.rmdl",$"mdl/ola/sewer_staircase_96_end_01.rmdl"] -file.all_assets ["mdl/relic_1"] <- [$"mdl/relic/relic_yellow_wire_256_03.rmdl",$"mdl/relic/relic_yellow_wire_256_02.rmdl",$"mdl/relic/relic_yellow_wire_128_02.rmdl",$"mdl/relic/relic_yellow_wire_256_01.rmdl",$"mdl/relic/relic_yellow_wire_128_01.rmdl",$"mdl/relic/relic_ship_beams_128.rmdl",$"mdl/relic/relic_ship_beams_64.rmdl",$"mdl/relic/hanging_relic_light_off_2.rmdl"] -file.all_assets ["mdl/playback_1"] <- [$"mdl/playback/playback_panel_window_frame_c.rmdl",$"mdl/playback/playback_panel_window_frame_a.rmdl",$"mdl/playback/playback_railing_01_064.rmdl",$"mdl/playback/playback_bridge_panel_128x064_01.rmdl",$"mdl/playback/playback_staircase_96_base_double_01_a.rmdl",$"mdl/playback/playback_door_archway.rmdl",$"mdl/playback/playback_corner_connect.rmdl",$"mdl/playback/playback_door_frame_a.rmdl",$"mdl/playback/playback_gun_platform_02.rmdl",$"mdl/playback/playback_grate_support_x128_01_a.rmdl",$"mdl/playback/playback_grate_support_x64_01_a.rmdl",$"mdl/playback/playback_bridge_beam_01_08x128_01.rmdl",$"mdl/playback/playback_bridge_beam_04_08x16x128_01.rmdl",$"mdl/playback/playback_bridge_beam_01_cap_01.rmdl",$"mdl/playback/playback_bridge_beam_04_08x16x64_01.rmdl",$"mdl/playback/playback_bridge_beam_02_16x064_01.rmdl",$"mdl/playback/playback_staircase_railing_octo_01_a.rmdl",$"mdl/playback/playback_staircase_railing_octo_01_b.rmdl",$"mdl/playback/playback_railing_01_128.rmdl",$"mdl/playback/playback_staircase_railing_quad_01_a.rmdl",$"mdl/playback/playback_staircase_railing_quad_01_b.rmdl",$"mdl/playback/playback_staircase_railing_double_top_01_a.rmdl",$"mdl/playback/playback_staircase_railing_double_top_01_b.rmdl",$"mdl/playback/playback_staircase_railing_double_01_a.rmdl",$"mdl/playback/playback_staircase_railing_double_01_b.rmdl"] -file.all_assets ["mdl/playback_2"] <- [$"mdl/playback/playback_staircase_railing_single_base_01_a.rmdl",$"mdl/playback/playback_staircase_railing_single_base_01_b.rmdl",$"mdl/playback/playback_staircase_railing_single_top_01_b.rmdl",$"mdl/playback/playback_staircase_railing_single_top_01_a.rmdl",$"mdl/playback/playback_staircase_railing_pole_01_a.rmdl",$"mdl/playback/playback_staircase_railing_pole_01_b.rmdl",$"mdl/playback/playback_staircase_96_long_01_a.rmdl",$"mdl/playback/playback_gun_platform_panel_02.rmdl",$"mdl/playback/playback_gun_platform_panel_03.rmdl",$"mdl/playback/playback_bridge_panel_128x128_01.rmdl",$"mdl/playback/playback_staircase_128_quad_01_a.rmdl",$"mdl/playback/playback_staircase_96_quad_01_a.rmdl",$"mdl/playback/playback_staircase_64_quad_01_a.rmdl",$"mdl/playback/playback_staircase_96_double_01_a.rmdl",$"mdl/playback/playback_staircase_64_base_double_01_a.rmdl",$"mdl/playback/playback_bridge_panel_064x064_01.rmdl",$"mdl/playback/playback_staircase_64_top_double_01_a.rmdl",$"mdl/playback/playback_staircase_64_double_01_a.rmdl",$"mdl/playback/playback_staircase_96_single_01_a.rmdl",$"mdl/playback/playback_staircase_96_base_single_01_a.rmdl",$"mdl/playback/playback_staircase_96_top_single_01_a.rmdl",$"mdl/playback/playback_staircase_64_single_01_a.rmdl",$"mdl/playback/playback_bridge_panel_64x32_01.rmdl",$"mdl/playback/playback_staircase_64_base_single_01_a.rmdl"] -file.all_assets ["mdl/IMC_base_1"] <- [$"mdl/IMC_base/imc_tech_tallpanel_48_02.rmdl",$"mdl/IMC_base/imc_tech_smallfan_32_06.rmdl",$"mdl/IMC_base/imc_tech_panel_64_01.rmdl",$"mdl/IMC_base/ladder_modular_64_IMC.rmdl",$"mdl/IMC_base/siren_wall_IMC_01.rmdl",$"mdl/IMC_base/garage_support_wall_IMC_02.rmdl",$"mdl/IMC_base/ladder_modular_cap_IMC.rmdl",$"mdl/IMC_base/conduit_bracket_IMC_04.rmdl",$"mdl/IMC_base/conduit_bracket_IMC_02.rmdl",$"mdl/IMC_base/imc_fan_large_case_01.rmdl",$"mdl/IMC_base/imc_fan_large_case_01_short.rmdl",$"mdl/IMC_base/thumper_generator_set_b.rmdl",$"mdl/IMC_base/conduit_str_64_IMC_01.rmdl",$"mdl/IMC_base/conduit_str_64_IMC_02.rmdl",$"mdl/IMC_base/conduit_str_32_IMC_01.rmdl",$"mdl/IMC_base/conduit_bend_16_IMC_01.rmdl",$"mdl/IMC_base/conduit_str_16_IMC_02.rmdl",$"mdl/IMC_base/conduit_bend_16_IMC_02.rmdl",$"mdl/IMC_base/conduit_cap_IMC_02.rmdl",$"mdl/IMC_base/generator_IMC_01.rmdl",$"mdl/IMC_base/imc_antenna_02.rmdl",$"mdl/IMC_base/imc_antenna_03.rmdl",$"mdl/IMC_base/imc_tech_smallpanel_48_03.rmdl",$"mdl/IMC_base/scaffold_tech_horz_rail_c.rmdl",$"mdl/IMC_base/beam_I_512_IMC_01.rmdl"] -file.all_assets ["mdl/IMC_base_2"] <- [$"mdl/IMC_base/cargo_bomb_rack01.rmdl",$"mdl/IMC_base/scaffold_tech_frame_bottom_128.rmdl",$"mdl/IMC_base/scaffold_tech_frame_top_128.rmdl",$"mdl/IMC_base/beam_I_256_IMC_01.rmdl",$"mdl/IMC_base/beam_I_turn_90_01.rmdl",$"mdl/IMC_base/beam_base_clamp_IMC_01.rmdl",$"mdl/IMC_base/beam_T_256_IMC_01.rmdl",$"mdl/IMC_base/bldg_wall_support_IMC_01_half.rmdl",$"mdl/IMC_base/beam_i_128_imc_01.rmdl",$"mdl/IMC_base/roof_corner_garage_IMC_02.rmdl",$"mdl/IMC_base/cables_modular_med_IMC_01.rmdl",$"mdl/IMC_base/cables_modular_med_IMC_03.rmdl",$"mdl/IMC_base/cables_modular_med_IMC_02.rmdl",$"mdl/IMC_base/corner_piston_IMC_02.rmdl",$"mdl/IMC_base/scaffold_tech_adjustbeam_256.rmdl",$"mdl/IMC_base/ceiling_plugs_IMC_02.rmdl",$"mdl/IMC_base/scaffold_tech_brace_03.rmdl",$"mdl/IMC_base/beam_I_64_IMC_01.rmdl",$"mdl/IMC_base/dispenser_wall_IMC_01.rmdl",$"mdl/IMC_base/bomb_imc_01.rmdl",$"mdl/IMC_base/bulk_head_footer_imc_01.rmdl",$"mdl/IMC_base/beam_T_64_IMC_01.rmdl",$"mdl/IMC_base/camera_imc_01.rmdl",$"mdl/IMC_base/ladder_modular_32_IMC.rmdl",$"mdl/IMC_base/bldg_wall_corner_IMC_01.rmdl"] -file.all_assets ["mdl/IMC_base_3"] <- [$"mdl/IMC_base/camera_imc_base_01.rmdl",$"mdl/IMC_base/garage_support_wall_imc_01.rmdl",$"mdl/IMC_base/ladder_modular_16_IMC.rmdl",$"mdl/IMC_base/light_wall_IMC_03.rmdl",$"mdl/IMC_base/imc_fan_large_02.rmdl",$"mdl/IMC_base/imc_pipe_med_128.rmdl",$"mdl/IMC_base/imc_pipe_med_64.rmdl",$"mdl/IMC_base/imc_pipe_med_mount_01.rmdl",$"mdl/IMC_base/imc_pipe_med_32_02.rmdl",$"mdl/IMC_base/imc_pipe_med_32.rmdl",$"mdl/IMC_base/imc_pipe_med_curve90.rmdl",$"mdl/IMC_base/pipe_ceiling_IMC_str_03.rmdl",$"mdl/IMC_base/imc_pipe_med_ring_02.rmdl",$"mdl/IMC_base/pipe_ceiling_IMC_str_02.rmdl",$"mdl/IMC_base/pipe_ceiling_IMC_bend_01.rmdl",$"mdl/IMC_base/pipe_ceiling_IMC_end_02.rmdl",$"mdl/IMC_base/imc_pipe_med_cap.rmdl",$"mdl/IMC_base/pipe_ceiling_sml_IMC_str_03.rmdl",$"mdl/IMC_base/pipe_ceiling_IMC_str_01.rmdl",$"mdl/IMC_base/pipe_ceiling_sml_IMC_end_02.rmdl",$"mdl/IMC_base/pipe_ceiling_IMC_junc_01.rmdl",$"mdl/IMC_base/pipe_ceiling_IMC_junc_02.rmdl",$"mdl/IMC_base/pipe_ceiling_IMC_end_01.rmdl",$"mdl/IMC_base/pipe_ceiling_IMC_bend_02.rmdl",$"mdl/IMC_base/pipe_ceiling_sml_IMC_bend_01.rmdl"] -file.all_assets ["mdl/IMC_base_4"] <- [$"mdl/IMC_base/conduit_start_IMC_01.rmdl",$"mdl/IMC_base/imc_pipe_med_256_grey.rmdl",$"mdl/IMC_base/imc_pipe_med_128_grey.rmdl",$"mdl/IMC_base/imc_pipe_med_64_grey.rmdl",$"mdl/IMC_base/imc_pipe_med_32_grey.rmdl",$"mdl/IMC_base/imc_pipe_med_curve90_grey.rmdl",$"mdl/IMC_base/scaffold_tech_128.rmdl",$"mdl/IMC_base/landing_pad_tarmac_nobase.rmdl",$"mdl/IMC_base/scaffold_tech_horz_rail_b.rmdl",$"mdl/IMC_base/landing_pad_arm_top.rmdl",$"mdl/IMC_base/chain_link_IMC_01.rmdl",$"mdl/IMC_base/monitor_outpost207_imc_screen_01.rmdl",$"mdl/IMC_base/footer_imc_02.rmdl",$"mdl/IMC_base/scaffold_tech_halfwalk.rmdl",$"mdl/IMC_base/scaffold_tech_alpharail_128.rmdl"] -file.all_assets ["mdl/electricalboxes_1"] <- [$"mdl/electricalboxes/pipe_set_c.rmdl",$"mdl/electricalboxes/pipe_set_b.rmdl",$"mdl/electricalboxes/fusebox.rmdl",$"mdl/electricalboxes/pipe_set_h.rmdl",$"mdl/electricalboxes/fusebox_rusty.rmdl",$"mdl/electricalboxes/fusebox_small_a.rmdl",$"mdl/electricalboxes/fusebox_small_b.rmdl",$"mdl/electricalboxes/pipe_set_d.rmdl",$"mdl/electricalboxes/pipe_set_g.rmdl",$"mdl/electricalboxes/pipe_set_i.rmdl",$"mdl/electricalboxes/meterbox.rmdl",$"mdl/electricalboxes/pipe_bracket_a.rmdl",$"mdl/electricalboxes/fuseboxnodoor.rmdl",$"mdl/electricalboxes/fusebox_green.rmdl",$"mdl/electricalboxes/fusebox_small_c.rmdl",$"mdl/electricalboxes/pipejuction.rmdl",$"mdl/electricalboxes/pipe_wall_mess_06.rmdl",$"mdl/electricalboxes/pipe_endcap.rmdl"] -file.all_assets ["mdl/industrial_1"] <- [$"mdl/industrial/air_unit_badlands_02_tall.rmdl",$"mdl/industrial/air_unit_badlands_02_short.rmdl",$"mdl/industrial/air_unit_badlands_01.rmdl",$"mdl/industrial/hammer_metal_02.rmdl",$"mdl/industrial/zipline_arm.rmdl",$"mdl/industrial/landing_mat_metal_02_large.rmdl",$"mdl/industrial/landing_mat_metal_02.rmdl",$"mdl/industrial/landing_mat_metal_03.rmdl",$"mdl/industrial/tool_chest.rmdl",$"mdl/industrial/tripod_cone_v1_high_on.rmdl",$"mdl/industrial/tool_chest_double.rmdl",$"mdl/industrial/fan_mounted.rmdl",$"mdl/industrial/light_pole_bforce_02.rmdl",$"mdl/industrial/security_fence_post.rmdl",$"mdl/industrial/UTG_spire.rmdl",$"mdl/industrial/gas_generator.rmdl",$"mdl/industrial/indoor_console_server.rmdl",$"mdl/industrial/gun_rack_arm_down.rmdl",$"mdl/industrial/screwdriver_octane.rmdl",$"mdl/industrial/stand_alone_air_vent_02.rmdl",$"mdl/industrial/hanging_plant_mister_cap.rmdl",$"mdl/industrial/water_silo_container.rmdl",$"mdl/industrial/modular_wall_metal_brace_03.rmdl",$"mdl/industrial/modular_wall_metal_brace_02.rmdl",$"mdl/industrial/pallete_crate_stack_straps.rmdl"] -file.all_assets ["mdl/industrial_2"] <- [$"mdl/industrial/tibilisi_support_cross_beams_round.rmdl",$"mdl/industrial/metal_girder_beams_128.rmdl",$"mdl/industrial/tibilisi_vertical_support_metal.rmdl",$"mdl/industrial/indoor_console_b.rmdl",$"mdl/industrial/pallet_wood.rmdl",$"mdl/industrial/metal_floor_panels_frame.rmdl",$"mdl/industrial/metal_floor_panels.rmdl",$"mdl/industrial/metal_floor_panels_03.rmdl",$"mdl/industrial/metal_brace_corner_footer.rmdl",$"mdl/industrial/tire_small.rmdl",$"mdl/industrial/modular_railing_trim_long.rmdl",$"mdl/industrial/modular_railing_trim_mid.rmdl",$"mdl/industrial/air_duct_bracket_01.rmdl",$"mdl/industrial/modular_railing_trim_a.rmdl",$"mdl/industrial/rollup_door_cover.rmdl",$"mdl/industrial/landing_mat_metal.rmdl",$"mdl/industrial/clamp_metal_01.rmdl",$"mdl/industrial/rollup_door_frame.rmdl",$"mdl/industrial/rollup_door_motor.rmdl",$"mdl/industrial/propane_tank_large_nopanels.rmdl",$"mdl/industrial/work_cart_plastic.rmdl",$"mdl/industrial/tool_chest_top.rmdl",$"mdl/industrial/wrenches_pipeWrench01.rmdl",$"mdl/industrial/farmland_wall_tech_01.rmdl",$"mdl/industrial/grain_sacks_stacked.rmdl"] -file.all_assets ["mdl/industrial_3"] <- [$"mdl/industrial/mounted_air_vent_medium.rmdl",$"mdl/industrial/indoor_console_a.rmdl",$"mdl/industrial/indoor_console_monitors.rmdl",$"mdl/industrial/exit_sign_04_on.rmdl"] -file.all_assets ["mdl/containers_1"] <- [$"mdl/containers/pelican_case_large.rmdl",$"mdl/containers/pelican_case_large_drabgreen.rmdl",$"mdl/containers/box_med_cardboard_02.rmdl",$"mdl/containers/box_med_cardboard_01.rmdl",$"mdl/containers/box_metal.rmdl",$"mdl/containers/slums_plastic_crate_orange_01.rmdl",$"mdl/containers/can_blue_soda.rmdl",$"mdl/containers/can_red_soda.rmdl",$"mdl/containers/can_red_horizontal.rmdl",$"mdl/containers/can_blue_horizontal.rmdl",$"mdl/containers/plastic_pallet_01.rmdl",$"mdl/containers/plastic_pallet_02.rmdl",$"mdl/containers/box_shrinkwrapped.rmdl",$"mdl/containers/container_medium_tanks_blue.rmdl",$"mdl/containers/underbelly_cargo_container_128_red_02.rmdl",$"mdl/containers/underbelly_cargo_container_128_blue_02.rmdl",$"mdl/containers/underbelly_cargo_container_128_green_02.rmdl",$"mdl/containers/bullet_casings_03.rmdl",$"mdl/containers/bullet_casings_01.rmdl",$"mdl/containers/bullet_casings_02.rmdl",$"mdl/containers/box_large_plastic.rmdl",$"mdl/containers/box_large_cardboard.rmdl",$"mdl/containers/crate.rmdl",$"mdl/containers/box_small_plastic.rmdl",$"mdl/containers/styrofoam_lid_dirty.rmdl"] -file.all_assets ["mdl/containers_2"] <- [$"mdl/containers/styrofoam_box_short_dirty.rmdl",$"mdl/containers/slums_plastic_crate_red_02.rmdl",$"mdl/containers/gas_tank.rmdl",$"mdl/containers/can_green_cola.rmdl",$"mdl/containers/crate_blue_plastic.rmdl",$"mdl/containers/crate_orange_plastic.rmdl",$"mdl/containers/lagoon_roof_tanks_01.rmdl",$"mdl/containers/underbelly_cargo_container_256_blue_01.rmdl",$"mdl/containers/underbelly_cargo_container_128_red_01.rmdl",$"mdl/containers/underbelly_cargo_container_128_blue_01.rmdl",$"mdl/containers/underbelly_cargo_container_128_green_01.rmdl",$"mdl/containers/underbelly_cargo_container_128_grey_02.rmdl"] -file.all_assets ["mdl/angel_city_1"] <- [$"mdl/angel_city/box_small_02.rmdl",$"mdl/angel_city/box_small_01.rmdl",$"mdl/angel_city/vending_machine.rmdl",$"mdl/angel_city/ground_pile_trash_02.rmdl",$"mdl/angel_city/ground_pile_trash_03.rmdl",$"mdl/angel_city/keypad_01.rmdl",$"mdl/angel_city/tarp_02.rmdl",$"mdl/angel_city/metal_support_solid_beam_full.rmdl",$"mdl/angel_city/metal_support_I_beam_straight.rmdl",$"mdl/angel_city/metal_support_solid_beam_half.rmdl",$"mdl/angel_city/metal_support_beam_bracket_01.rmdl",$"mdl/angel_city/ground_pile_trash_01.rmdl",$"mdl/angel_city/jersey_barrier_large_01.rmdl"] -file.all_assets ["mdl/lamps_1"] <- [$"mdl/lamps/light_florescenet_modern_off.rmdl",$"mdl/lamps/industrial_wall_light.rmdl",$"mdl/lamps/halogen_light_ceiling.rmdl",$"mdl/lamps/industrial_wall_light_02_on.rmdl",$"mdl/lamps/industrial_wall_light_on.rmdl",$"mdl/lamps/light_florescenet_modern.rmdl",$"mdl/lamps/security_light_01_on.rmdl",$"mdl/lamps/warning_light_ON_red.rmdl",$"mdl/lamps/halogen_light_ceiling_subtle.rmdl",$"mdl/lamps/light_hanging_industrial.rmdl",$"mdl/lamps/halogen_light_ceiling_off_broken.rmdl",$"mdl/lamps/halogen_light_ceiling_off.rmdl",$"mdl/lamps/security_light_01_off.rmdl",$"mdl/lamps/light_fc.rmdl",$"mdl/lamps/light_hanging_industrial_on.rmdl"] -file.all_assets ["mdl/utilities_1"] <- [$"mdl/utilities/ceiling_vent_metal.rmdl",$"mdl/utilities/wall_Waterpipe.rmdl",$"mdl/utilities/wires_hanging_64.rmdl",$"mdl/utilities/wire_hanging_cluster_03.rmdl",$"mdl/utilities/power_gen1.rmdl",$"mdl/utilities/wire_ceiling_mounts_corner_l.rmdl",$"mdl/utilities/wire_ceiling_mounts_corner.rmdl",$"mdl/utilities/wires_ground_coils_01.rmdl",$"mdl/utilities/wire_ceiling_mounts_straight.rmdl",$"mdl/utilities/wire_ground_coils_02.rmdl",$"mdl/utilities/wire_ground_coils_03.rmdl",$"mdl/utilities/wire_bundle_01.rmdl",$"mdl/utilities/swamp_cofferdam_45_double_01.rmdl",$"mdl/utilities/swamp_cofferdam_single_endcap_01.rmdl",$"mdl/utilities/swamp_cofferdam_90_single_02.rmdl",$"mdl/utilities/power_cell_64.rmdl",$"mdl/utilities/power_cell_64_empty.rmdl",$"mdl/utilities/wire_exposed_bundle_left_up_curve.rmdl",$"mdl/utilities/power_cell_40.rmdl",$"mdl/utilities/wire_exposed_bundle_hanging.rmdl",$"mdl/utilities/power_cell_64_single_01.rmdl",$"mdl/utilities/swamp_cofferdam_single_01.rmdl",$"mdl/utilities/wire_ground_coils_04.rmdl",$"mdl/utilities/modular_wire_cluster_10.rmdl",$"mdl/utilities/modular_wire_cluster_09.rmdl"] -file.all_assets ["mdl/utilities_2"] <- [$"mdl/utilities/modular_wire_cluster_03.rmdl",$"mdl/utilities/modular_wire_cluster_02.rmdl",$"mdl/utilities/modular_wire_cluster_01.rmdl"] -file.all_assets ["mdl/signs_1"] <- [$"mdl/signs/sign_relic_warning_01.rmdl",$"mdl/signs/sign_service_shaft_01.rmdl",$"mdl/signs/sign_service_shaft_02.rmdl",$"mdl/signs/signage_plates_metal/sign_plate_a.rmdl",$"mdl/signs/signage_plates_metal/sign_plate_c.rmdl",$"mdl/signs/street_sign_arrow.rmdl",$"mdl/signs/street_sign_rail_distance_02.rmdl",$"mdl/signs/thumper_signs_03.rmdl",$"mdl/signs/runoff_signs/pump_distance_sign.rmdl",$"mdl/signs/sign_caution_red_light_01.rmdl",$"mdl/signs/sign_flame_red.rmdl",$"mdl/signs/signage_plates_metal/sign_plate_f.rmdl",$"mdl/signs/signage_plates_metal/post_a_basic.rmdl",$"mdl/signs/signage_plates_metal/sign_plate_e.rmdl",$"mdl/signs/signage_plates_metal/post_b_basic.rmdl",$"mdl/signs/runoff_signs/ingot_company_sign.rmdl",$"mdl/signs/runoff_signs/ingot_company_sign2.rmdl",$"mdl/signs/runoff_signs/sewage_outlet_sign.rmdl",$"mdl/signs/runoff_signs/station_pump_sign.rmdl",$"mdl/signs/runoff_signs/employees_only_sign.rmdl",$"mdl/signs/sign_market_meats_on.rmdl",$"mdl/signs/sign_neon_public_market_01_a.rmdl"] -file.all_assets ["mdl/imc_interior_1"] <- [$"mdl/imc_interior/imc_int_fusebox_01.rmdl",$"mdl/imc_interior/wrapped_pipe_256.rmdl",$"mdl/imc_interior/wrapped_pipe_128.rmdl",$"mdl/imc_interior/wrapped_pipe_bent.rmdl",$"mdl/imc_interior/ripped_pipe_64.rmdl"] -file.all_assets ["mdl/slum_city_1"] <- [$"mdl/slum_city/slumcity_grow_room_rack_lift_motor_02.rmdl",$"mdl/slum_city/slumcity_pipemetal_256_b.rmdl",$"mdl/slum_city/slumcity_pipemetal_256_a.rmdl",$"mdl/slum_city/slumcity_pipe_bracket_corrugated_metal_a.rmdl",$"mdl/slum_city/slumcity_pipeplastic_128_a.rmdl",$"mdl/slum_city/slumcity_pipemetal_32_walljunc_a.rmdl",$"mdl/slum_city/slumcity_pipemetal_64_b.rmdl",$"mdl/slum_city/slumcity_pipemetal_64_c.rmdl",$"mdl/slum_city/slumcity_pipemetal_64_a.rmdl",$"mdl/slum_city/slumcity_pipeplastic_16_90junc_a.rmdl",$"mdl/slum_city/slumcity_pipemetal_16_walljunc_a.rmdl",$"mdl/slum_city/slumcity_pipemetal_8_walljunc_a.rmdl",$"mdl/slum_city/slumcity_pipemetal_8_junc_a.rmdl",$"mdl/slum_city/slumcity_pipe_256_corrugated_metal_a.rmdl",$"mdl/slum_city/slumcity_pipe_128_corrugated_metal_a.rmdl",$"mdl/slum_city/slumcity_pipe_64_corrugated_metal_b.rmdl",$"mdl/slum_city/slumcity_pipe_64_corrugated_metal_a.rmdl",$"mdl/slum_city/slumcity_pipe_90junc_corrugated_metal_a.rmdl",$"mdl/slum_city/slumcity_pipe_32_corrugated_metal_b.rmdl",$"mdl/slum_city/slumcity_pipe_32_corrugated_metal_a.rmdl",$"mdl/slum_city/slumcity_pipe_16_corrugated_metal_a.rmdl",$"mdl/slum_city/slumcity_fencewall_128x72_dirty.rmdl",$"mdl/slum_city/slumcity_industrial_scaffolding_128x128_tarp_c.rmdl",$"mdl/slum_city/slumcity_industrial_scaffolding_32x128_tarp_c.rmdl",$"mdl/slum_city/slumcity_column01_40x128_dirty_a.rmdl"] -file.all_assets ["mdl/slum_city_2"] <- [$"mdl/slum_city/slumcity_fencewall_64x72_dirty.rmdl",$"mdl/slum_city/slumcity_fencewall_32x72_dirty.rmdl",$"mdl/slum_city/slumcity_industrial_scaffolding_128x128_tarp_d.rmdl",$"mdl/slum_city/slumcity_industrial_scaffolding_32x128_tarp_b.rmdl",$"mdl/slum_city/slumcity_girdering_256x16_dirty_b.rmdl",$"mdl/slum_city/slumcity_pipemetal_128_a.rmdl",$"mdl/slum_city/slumcity_pipemetal_16_junc_b.rmdl",$"mdl/slum_city/slumcity_pipemetal_32_a.rmdl",$"mdl/slum_city/slumcity_pipemetal_16_junc_a.rmdl",$"mdl/slum_city/slumcity_pipeplastic_8_90junc_a.rmdl",$"mdl/slum_city/slumcity_pipemetal_16_a.rmdl",$"mdl/slum_city/slumcity_pipemetal_8_junc_b.rmdl",$"mdl/slum_city/slumcity_pipemetal_8_junc_c.rmdl",$"mdl/slum_city/slumcity_industrial_scaffolding_64x128_tarp_d.rmdl",$"mdl/slum_city/slumcity_pipe_32_corrugated_metal_c.rmdl",$"mdl/slum_city/slumcity_pipe_16_corrugated_metal_b.rmdl",$"mdl/slum_city/slumcity_pipe_16_corrugated_metal_c.rmdl",$"mdl/slum_city/slumcity_pipe_8_corrugated_metal_a.rmdl",$"mdl/slum_city/slumcity_grow_room_fan_01.rmdl",$"mdl/slum_city/slumcity_building_fan_frame_01.rmdl"] -file.all_assets ["mdl/imc_base_1"] <- [$"mdl/imc_base/light_wall_imc_01.rmdl",$"mdl/imc_base/light_wall_imc_01_on.rmdl",$"mdl/imc_base/garage_blast_shield_IMC_01.rmdl",$"mdl/imc_base/chain_link_post_IMC_01.rmdl"] -file.all_assets ["mdl/pipes_1"] <- [$"mdl/pipes/pipe_modular_painted_grey_256.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_256.rmdl",$"mdl/pipes/pipe_modular_painted_red_256.rmdl",$"mdl/pipes/pipe_modular_painted_grey_128.rmdl",$"mdl/pipes/pipe_modular_painted_red_128.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_128.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_64.rmdl",$"mdl/pipes/pipe_modular_painted_grey_64.rmdl",$"mdl/pipes/pipe_modular_painted_red_64.rmdl",$"mdl/pipes/pipe_modular_painted_grey_32_valve.rmdl",$"mdl/pipes/pipe_modular_painted_red_32_valve.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_32_valve.rmdl",$"mdl/pipes/pipe_modular_painted_grey_32_tjunk.rmdl",$"mdl/pipes/pipe_modular_painted_red_32_tjunk.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_32_tjunk.rmdl",$"mdl/pipes/pipe_modular_painted_grey_corner.rmdl",$"mdl/pipes/pipe_modular_painted_red_corner.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_corner.rmdl",$"mdl/pipes/pipe_modular_painted_grey_32_03.rmdl",$"mdl/pipes/pipe_modular_painted_grey_32.rmdl",$"mdl/pipes/pipe_modular_painted_grey_32_04.rmdl",$"mdl/pipes/pipe_modular_painted_red_32.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_32.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_32_04.rmdl",$"mdl/pipes/pipe_modular_painted_grey_45_angle.rmdl"] -file.all_assets ["mdl/pipes_2"] <- [$"mdl/pipes/pipe_modular_painted_grey_16.rmdl",$"mdl/pipes/pipe_modular_painted_red_16.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_16.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_8.rmdl",$"mdl/pipes/pipe_modular_painted_grey_8.rmdl",$"mdl/pipes/pipe_modular_painted_red_8.rmdl",$"mdl/pipes/slum_pipe_large_blue_64_01.rmdl",$"mdl/pipes/slum_pipe_large_yellow_64_01.rmdl",$"mdl/pipes/slum_pipe_large_blue_32_01.rmdl",$"mdl/pipes/slum_pipe_large_yellow_32_01.rmdl",$"mdl/pipes/pipe_small_128_01.rmdl",$"mdl/pipes/pipe_small_64_01.rmdl",$"mdl/pipes/pipe_small_angle_01.rmdl",$"mdl/pipes/airduct_l_128.rmdl",$"mdl/pipes/airduct_l_80.rmdl",$"mdl/pipes/airduct_l_turn_long_side.rmdl",$"mdl/pipes/airduct_l_vent.rmdl",$"mdl/pipes/slum_pipe_large_blue_512_01.rmdl",$"mdl/pipes/slum_pipe_large_yellow_512_01.rmdl",$"mdl/pipes/slum_pipe_large_blue_256_01.rmdl",$"mdl/pipes/slum_pipe_large_yellow_256_01.rmdl",$"mdl/pipes/slum_pipe_large_yellow_256_02.rmdl",$"mdl/pipes/slum_pipe_large_blue_tjunc_01.rmdl",$"mdl/pipes/slum_pipe_large_blue_angle_01.rmdl",$"mdl/pipes/slum_pipe_large_yellow_angle_01.rmdl"] -file.all_assets ["mdl/pipes_3"] <- [$"mdl/pipes/slum_pipe_large_blue_128_01.rmdl",$"mdl/pipes/slum_pipe_large_yellow_128_01.rmdl",$"mdl/pipes/pipe_small_16_01.rmdl",$"mdl/pipes/pipe_large_bracket_02.rmdl",$"mdl/pipes/pipe_modular_painted_white_256.rmdl",$"mdl/pipes/pipe_modular_painted_white_128.rmdl",$"mdl/pipes/pipe_modular_painted_white_64.rmdl",$"mdl/pipes/pipe_modular_painted_white_32_valve.rmdl",$"mdl/pipes/pipe_modular_painted_white_32_tjunk.rmdl",$"mdl/pipes/pipe_modular_painted_white_corner.rmdl",$"mdl/pipes/pipe_modular_painted_red_32_03.rmdl",$"mdl/pipes/pipe_modular_painted_grey_32_02.rmdl",$"mdl/pipes/pipe_modular_painted_red_32_02.rmdl",$"mdl/pipes/pipe_modular_painted_white_32.rmdl",$"mdl/pipes/pipe_modular_painted_white_32_04.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_32_03.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_45_angle.rmdl",$"mdl/pipes/pipe_modular_painted_white_16.rmdl",$"mdl/pipes/pipe_frac_ground_128_01.rmdl",$"mdl/pipes/pipe_frac_ground_128_brk.rmdl",$"mdl/pipes/pipe_wall_system_valve.rmdl",$"mdl/pipes/pipe_med_metal_blue_straight_32.rmdl",$"mdl/pipes/pipe_med_metal_blue_elbow.rmdl",$"mdl/pipes/pipe_med_metal_ground_ring_01.rmdl",$"mdl/pipes/pipe_med_metal_rust_ring.rmdl"] -file.all_assets ["mdl/pipes_4"] <- [$"mdl/pipes/pipe_large_256_01.rmdl",$"mdl/pipes/pipe_large_256_01_red.rmdl",$"mdl/pipes/pipe_large_angle_01.rmdl",$"mdl/pipes/pipe_large_128_01.rmdl",$"mdl/pipes/pipe_large_128_01_red.rmdl",$"mdl/pipes/slum_pipe_large_bracket_01.rmdl",$"mdl/pipes/pipe_modular_painted_red_02_64.rmdl",$"mdl/pipes/pipe_modular_painted_red_02_corner.rmdl",$"mdl/pipes/pipe_modular_painted_red_02_8.rmdl",$"mdl/pipes/slum_pipe_large_blue_angle_cap_01.rmdl",$"mdl/pipes/pipe_refinery_section128.rmdl",$"mdl/pipes/slum_pipe_large_blue_angle_endcap_01.rmdl",$"mdl/pipes/slum_pipe_large_blue_256_angle_01.rmdl",$"mdl/pipes/slum_pipe_large_yellow_256_angle_01.rmdl",$"mdl/pipes/pipe_large_64_01.rmdl",$"mdl/pipes/pipe_large_32_01.rmdl",$"mdl/pipes/pipe_small_8_01.rmdl",$"mdl/pipes/pipe_frac_ground_128_brk_cap.rmdl"] -file.all_assets ["mdl/beacon_1"] <- [$"mdl/beacon/construction_scaff_128_64_64.rmdl",$"mdl/beacon/beacon_server_wall_mount_01_off.rmdl",$"mdl/beacon/construction_scaff_tarp_floor_01.rmdl",$"mdl/beacon/construction_scaff_128_64_128_02.rmdl",$"mdl/beacon/beacon_wire_ground_coils_04.rmdl",$"mdl/beacon/mendoko_wires_ground_coils_01.rmdl",$"mdl/beacon/beacon_wire_ground_coils_02.rmdl",$"mdl/beacon/mendoko_wire_ground_coils_02.rmdl",$"mdl/beacon/beacon_wire_ground_coils_03.rmdl",$"mdl/beacon/mendoko_wire_ground_coils_03.rmdl",$"mdl/beacon/modular_hose_yellow_128_bend_01.rmdl",$"mdl/beacon/modular_hose_yellow_128_01.rmdl",$"mdl/beacon/modular_hose_yellow_128_02.rmdl",$"mdl/beacon/beacon_wire_cluster_03.rmdl",$"mdl/beacon/mendoko_wire_cluster_03.rmdl",$"mdl/beacon/beacon_wire_cluster_02.rmdl",$"mdl/beacon/mendoko_wire_cluster_02.rmdl",$"mdl/beacon/beacon_wire_cluster_01.rmdl",$"mdl/beacon/beacon_wire_cluster_04.rmdl",$"mdl/beacon/mendoko_wire_cluster_01.rmdl",$"mdl/beacon/modular_hose_yellow_32_01.rmdl",$"mdl/beacon/mendoko_wire_cluster_08_l.rmdl",$"mdl/beacon/modular_hose_yellow_corner_01.rmdl",$"mdl/beacon/beacon_wire_cluster_06.rmdl",$"mdl/beacon/generator_fan_house_cap_01.rmdl"] -file.all_assets ["mdl/beacon_2"] <- [$"mdl/beacon/construction_plastic_mat_black_01.rmdl",$"mdl/beacon/construction_plastic_mat_white_01.rmdl",$"mdl/beacon/beacon_server_half_stand_01.rmdl",$"mdl/beacon/beacon_server_stand_01.rmdl",$"mdl/beacon/construction_plastic_mat_clear_01.rmdl",$"mdl/beacon/beacon_construction_flag_large_animated.rmdl",$"mdl/beacon/construction_scaff_post_256_01.rmdl",$"mdl/beacon/beacon_railing_lrg_02.rmdl",$"mdl/beacon/mendoko_wire_ground_coils_04.rmdl",$"mdl/beacon/beacon_wires_ground_coils_01.rmdl",$"mdl/beacon/modular_hose_yellow_512_02.rmdl",$"mdl/beacon/modular_hose_yellow_64_01.rmdl",$"mdl/beacon/beacon_server_single_01.rmdl"] -file.all_assets ["mdl/floating_village_1"] <- [$"mdl/floating_village/lagoon_window_metal_shutters_open_80x128.rmdl",$"mdl/floating_village/lagoon_window_metal_shutters_open_80x64.rmdl",$"mdl/floating_village/roof_primitive_03_with_hole_white.rmdl",$"mdl/floating_village/hut_panel_01.rmdl",$"mdl/floating_village/lagoon_workshop_beam_arch_01.rmdl",$"mdl/floating_village/lagoon_building_hanging_nets_03.rmdl",$"mdl/floating_village/awning_cloth_01_blue.rmdl",$"mdl/floating_village/awning_cloth_01_green.rmdl",$"mdl/floating_village/panel_primitive_01.rmdl",$"mdl/floating_village/panel_primitive_02.rmdl",$"mdl/floating_village/panel_primitive_03.rmdl",$"mdl/floating_village/lagoon_hut_floor_support_posts_04.rmdl",$"mdl/floating_village/lagoon_hut_floor_support_posts_03.rmdl",$"mdl/floating_village/hut_window_01.rmdl",$"mdl/floating_village/lagoon_hut_floor_support_posts_01.rmdl",$"mdl/floating_village/lagoon_hut_floor_support_posts_02.rmdl",$"mdl/floating_village/hut_window_02.rmdl",$"mdl/floating_village/lagoon_building_post_02.rmdl",$"mdl/floating_village/lagoon_building_hanging_nets_02.rmdl",$"mdl/floating_village/lagoon_building_stairs_quad_step.rmdl",$"mdl/floating_village/hut_window_01_closed.rmdl",$"mdl/floating_village/lagoon_building_post_01.rmdl",$"mdl/floating_village/walkway_wood_pole_01.rmdl",$"mdl/floating_village/lagoon_building_post_03.rmdl",$"mdl/floating_village/wood_pole_09.rmdl"] -file.all_assets ["mdl/floating_village_2"] <- [$"mdl/floating_village/lagoon_building_stairs_double_step.rmdl",$"mdl/floating_village/pipes_metal_02.rmdl",$"mdl/floating_village/wood_pole_07.rmdl",$"mdl/floating_village/buoy_barrel_01.rmdl",$"mdl/floating_village/walkway_wood_plank_02.rmdl",$"mdl/floating_village/walkway_wood_plank_01.rmdl",$"mdl/floating_village/walkway_wood_plank_04.rmdl",$"mdl/floating_village/lagoon_building_stairs_single_step.rmdl",$"mdl/floating_village/wood_pole_01.rmdl",$"mdl/floating_village/pipes_metal_04.rmdl",$"mdl/floating_village/walkway_wood_plank_03.rmdl",$"mdl/floating_village/wood_pole_05.rmdl",$"mdl/floating_village/pipes_metal_05.rmdl",$"mdl/floating_village/wood_pole_02.rmdl",$"mdl/floating_village/wood_pole_04.rmdl",$"mdl/floating_village/buoy_barrel_rope_01.rmdl",$"mdl/floating_village/pipes_metal_07.rmdl",$"mdl/floating_village/wood_pole_08.rmdl",$"mdl/floating_village/lagoon_hut_ceiling_beam_support_01.rmdl",$"mdl/floating_village/lagoon_window_metal_shutters_rails_80x128.rmdl",$"mdl/floating_village/lagoon_window_metal_shutters_open.rmdl",$"mdl/floating_village/lagoon_window_metal_shutters_rails_80x64.rmdl",$"mdl/floating_village/fish_net_01.rmdl",$"mdl/floating_village/fish_net_03.rmdl",$"mdl/floating_village/lagoon_building_hanging_nets_01.rmdl"] -file.all_assets ["mdl/floating_village_3"] <- [$"mdl/floating_village/lagoon_building_bamboo_posts_01.rmdl",$"mdl/floating_village/lagoon_building_bamboo_posts_03.rmdl",$"mdl/floating_village/lagoon_building_bamboo_posts_04.rmdl",$"mdl/floating_village/lagoon_building_bamboo_posts_02.rmdl",$"mdl/floating_village/roof_primitive_03_white.rmdl",$"mdl/floating_village/lagoon_building_post_hook.rmdl",$"mdl/floating_village/buoy_hanging_06.rmdl",$"mdl/floating_village/buoy_hanging_03.rmdl",$"mdl/floating_village/buoy_hanging_05.rmdl",$"mdl/floating_village/buoy_hanging_02.rmdl",$"mdl/floating_village/buoy_hanging_04.rmdl",$"mdl/floating_village/roof_primitive_01_white.rmdl",$"mdl/floating_village/roof_primitive_02_white.rmdl",$"mdl/floating_village/fish_net_02.rmdl",$"mdl/floating_village/panel_primitive_01_white.rmdl",$"mdl/floating_village/panel_primitive_02_white.rmdl",$"mdl/floating_village/lagoon_hut_support_posts_04.rmdl",$"mdl/floating_village/lagoon_hut_support_posts_09.rmdl",$"mdl/floating_village/fish_basket_02.rmdl",$"mdl/floating_village/roof_primitve_metal_02.rmdl",$"mdl/floating_village/roof_primitve_metal_01.rmdl",$"mdl/floating_village/pipes_metal_01.rmdl",$"mdl/floating_village/fish_basket_01.rmdl",$"mdl/floating_village/walkway_wood_01_512.rmdl",$"mdl/floating_village/lagoon_hut_storage_shelf_large_01.rmdl"] -file.all_assets ["mdl/homestead_1"] <- [$"mdl/homestead/homestead_floor_panel_01.rmdl",$"mdl/homestead/homestead_wind_turbine.rmdl",$"mdl/homestead/homestead_floor_panel_closed_02.rmdl",$"mdl/homestead/homestead_floor_panel_cap_02.rmdl",$"mdl/homestead/weathervane_generator.rmdl"] -file.all_assets ["mdl/door_1"] <- [$"mdl/door/canyonlands_door_single_02_hinges.rmdl",$"mdl/door/canyonlands_door_single_02_damaged.rmdl",$"mdl/door/canyonlands_door_single_02.rmdl",$"mdl/door/door_256x256x8_elevatorstyle02_animated.rmdl",$"mdl/door/canyonlands_door_vfx_bl.rmdl",$"mdl/door/canyonlands_door_vfx_br.rmdl",$"mdl/door/canyonlands_door_vfx_c.rmdl",$"mdl/door/canyonlands_door_vfx_uc.rmdl",$"mdl/door/canyonlands_door_vfx_ul.rmdl",$"mdl/door/canyonlands_door_vfx_ur.rmdl",$"mdl/door/canyonlands_door_vfx_l.rmdl",$"mdl/door/canyonlands_lift_door_frame_large_01.rmdl",$"mdl/door/survival_door_frame_double_slums_01.rmdl"] -file.all_assets ["mdl/furniture_1"] <- [$"mdl/furniture/office_desk_accessories_mug.rmdl",$"mdl/furniture/office_desk_accessories_clipboard.rmdl",$"mdl/furniture/kitchen_set02_black_old_counter1_1.rmdl",$"mdl/furniture/kitchen_set02_black_old_sink01.rmdl",$"mdl/furniture/kitchen_set04_table01.rmdl",$"mdl/furniture/overhead_cabnet_set.rmdl"] -file.all_assets ["mdl/vehicles_r5_1"] <- [$"mdl/vehicles_r5/land/msc_forklift_imc_v2/veh_land_msc_forklift_imc_v2_static.rmdl",$"mdl/vehicles_r5/land/msc_truck_samson_v2/veh_land_msc_truck_samson_v2.rmdl",$"mdl/vehicles_r5/land/mil_tank_paladin_mkv/veh_land_mil_tank_paladin_mkv.rmdl",$"mdl/vehicles_r5/air/dropship_goblin/veh_air_dship_goblin_prk_opn_v1_static.rmdl"] -file.all_assets ["mdl/props_1"] <- [$"mdl/props/tire_samson_v2_01/tire_samson_v2_01.rmdl",$"mdl/props/death_box/death_box_02.rmdl",$"mdl/props/global_access_panel_button/global_access_panel_button_console_w_stand.rmdl",$"mdl/props/loot_bin/loot_bin_01_animated.rmdl",$"mdl/props/zipline_balloon/zipline_balloon_base.rmdl",$"mdl/props/zipline_balloon/zipline_balloon.rmdl",$"mdl/props/pathfinder_beacon_radar/pathfinder_beacon_radar_animated.rmdl",$"mdl/props/ultimate_accelerant_usb/ultimate_accelerant_usb_static.rmdl",$"mdl/props/caustic_flask/caustic_flask.rmdl",$"mdl/props/caustic_mug/caustic_mug.rmdl",$"mdl/props/skull/skull_gladcard.rmdl",$"mdl/props/octane_wrench/octane_wrench_menu_static.rmdl",$"mdl/props/death_box/death_box_01_gladcard.rmdl",$"mdl/props/flask/prop_flask.rmdl",$"mdl/props/tablet/tablet_mini.rmdl",$"mdl/props/crypto_drone/crypto_drone_destoyed_01.rmdl",$"mdl/props/crypto_drone/crypto_drone_destoyed_02.rmdl",$"mdl/props/crypto_drone/crypto_drone_destoyed_03.rmdl",$"mdl/props/crypto_drone/crypto_drone_destoyed_04.rmdl"] -file.all_assets ["mdl/eden_1"] <- [$"mdl/eden/beacon_small_screen_02_off.rmdl",$"mdl/eden/eden_electrical_pole_01.rmdl",$"mdl/eden/eden_electrical_transformer_01.rmdl",$"mdl/eden/eden_wirel_mess_01.rmdl"] -file.all_assets ["mdl/foliage_1"] <- [$"mdl/foliage/ivy_green_large_hanging_02.rmdl",$"mdl/foliage/plant_tropical_ground_leafy_01.rmdl",$"mdl/foliage/foliage_ground_plants.rmdl",$"mdl/foliage/tree_brush_yellow_large_03.rmdl",$"mdl/foliage/tree_acacia_small_01.rmdl",$"mdl/foliage/leaves_ground_spread_01.rmdl",$"mdl/foliage/lilypad_clusters_05_flowing.rmdl",$"mdl/foliage/grass_burnt_long_02.rmdl",$"mdl/foliage/tree_swampland_canopy_01.rmdl",$"mdl/foliage/moss_green_hanging_large_01.rmdl",$"mdl/foliage/moss_green_hanging_large_04.rmdl",$"mdl/foliage/leaves_ground_spread_03.rmdl",$"mdl/foliage/leaves_ground_spread_02.rmdl",$"mdl/foliage/plant_fern.rmdl",$"mdl/foliage/pine_needle_pile_05.rmdl",$"mdl/foliage/pine_needle_pile_02.rmdl",$"mdl/foliage/vines_decal_02.rmdl",$"mdl/foliage/vines_decal_03.rmdl",$"mdl/foliage/vines_decal_01.rmdl",$"mdl/foliage/ground_plant_large_moss_yellow_vert_color.rmdl",$"mdl/foliage/tree_swampland_branch_large_03.rmdl",$"mdl/foliage/plant_green_dark_small_02.rmdl",$"mdl/foliage/tree_green_forest_med_01.rmdl",$"mdl/foliage/grass_02_desert_large.rmdl",$"mdl/foliage/grass_02_desert_64x64.rmdl"] -file.all_assets ["mdl/foliage_2"] <- [$"mdl/foliage/grass_02_desert_large_16x16.rmdl",$"mdl/foliage/grass_brown_long_tall_03.rmdl",$"mdl/foliage/grass_brown_long_03.rmdl",$"mdl/foliage/grass_desert_02.rmdl",$"mdl/foliage/grass_high_04.rmdl",$"mdl/foliage/grass_brown_long_tall_02.rmdl",$"mdl/foliage/grass_brown_long_02.rmdl",$"mdl/foliage/grass_desert_01.rmdl",$"mdl/foliage/grass_brown_long_tall_01.rmdl",$"mdl/foliage/grass_brown_long_04.rmdl",$"mdl/foliage/grass_brown_long_01.rmdl",$"mdl/foliage/grass_green_long_03_animated.rmdl",$"mdl/foliage/grass_green_long_02_animated.rmdl",$"mdl/foliage/grass_green_long_01_animated.rmdl",$"mdl/foliage/bush_green_forest_01.rmdl",$"mdl/foliage/bush_desert_01.rmdl",$"mdl/foliage/grass_burnt_long_03.rmdl",$"mdl/foliage/ivy_green_large_hanging_05.rmdl",$"mdl/foliage/ivy_green_large_hanging_04.rmdl",$"mdl/foliage/ivy_green_large_hanging_10.rmdl",$"mdl/foliage/ivy_green_large_hanging_03.rmdl",$"mdl/foliage/ivy_green_large_hanging_01.rmdl",$"mdl/foliage/ivy_green_large_hanging_07.rmdl",$"mdl/foliage/ivy_green_large_hanging_09.rmdl",$"mdl/foliage/tree_roots_03_light.rmdl"] -file.all_assets ["mdl/barriers_1"] <- [$"mdl/barriers/guard_rail_01_256.rmdl",$"mdl/barriers/guard_rail_01_128.rmdl",$"mdl/barriers/concrete/concrete_barrier_fence.rmdl",$"mdl/barriers/guard_rail_post_01.rmdl",$"mdl/barriers/guard_rail_01_64.rmdl",$"mdl/barriers/guard_rail_01.rmdl",$"mdl/barriers/sandbags_curved_01.rmdl",$"mdl/barriers/sandbags_large_01.rmdl",$"mdl/barriers/sandbags_double_01.rmdl",$"mdl/barriers/sandbags_bent_01.rmdl",$"mdl/barriers/sandbags_single_01.rmdl",$"mdl/barriers/sewer_concrete_barrier_28_32_01.rmdl",$"mdl/barriers/guard_rail_end_02.rmdl",$"mdl/barriers/sandbags_ripped_01.rmdl"] -file.all_assets ["mdl/canyonlands_1"] <- [$"mdl/canyonlands/canyonlands_zone_sign_01.rmdl",$"mdl/canyonlands/canyonlands_zone_sign_03b.rmdl",$"mdl/canyonlands/canyonlands_zone_sign_03.rmdl",$"mdl/canyonlands/canyonlands_zone_sign_02.rmdl",$"mdl/canyonlands/fabric_canopy_pole_256_01.rmdl",$"mdl/canyonlands/canyonlands_light_pole_wires_01.rmdl",$"mdl/canyonlands/clands_wall_wire_cluster_512_01_a.rmdl",$"mdl/canyonlands/canyonlands_river_rock_03.rmdl",$"mdl/canyonlands/canyonlands_modular_crater_01.rmdl",$"mdl/canyonlands/canyonlands_modular_crater_03.rmdl",$"mdl/canyonlands/canyonlands_modular_crater_02.rmdl",$"mdl/canyonlands/canyonlands_stalactite_01.rmdl",$"mdl/canyonlands/canyonlands_stalactite_02.rmdl",$"mdl/canyonlands/canyonlands_stalactite_03.rmdl",$"mdl/canyonlands/fabric_canopy_02.rmdl",$"mdl/canyonlands/dirty_toolchest_tarp_01.rmdl",$"mdl/canyonlands/fabric_canopy_01.rmdl",$"mdl/canyonlands/zone_14_pillar_a.rmdl",$"mdl/canyonlands/concrete_broken_chunk_01.rmdl",$"mdl/canyonlands/concrete_broken_chunk_02.rmdl",$"mdl/canyonlands/canyonlands_light_pole_01.rmdl",$"mdl/canyonlands/clands_wall_wire_cluster_256_01_a.rmdl",$"mdl/canyonlands/sewer_hole_01.rmdl",$"mdl/canyonlands/clands_wall_vent_round_01_a.rmdl",$"mdl/canyonlands/canyonlands_river_rock_02.rmdl"] -file.all_assets ["mdl/canyonlands_2"] <- [$"mdl/canyonlands/canyonlands_canon_01.rmdl",$"mdl/canyonlands/canyonlands_river_rock_01.rmdl",$"mdl/canyonlands/base_elevator_BNW_cable_01.rmdl",$"mdl/canyonlands/lagoon_overgrown_moss_04.rmdl",$"mdl/canyonlands/lagoon_overgrown_moss_05.rmdl",$"mdl/canyonlands/lagoon_overgrown_moss_06.rmdl",$"mdl/canyonlands/passthrough_base_decal_01.rmdl",$"mdl/canyonlands/passthrough_base_decal_02.rmdl",$"mdl/canyonlands/cylinder_BNW_01.rmdl",$"mdl/canyonlands/godray_small_orange_01.rmdl"] -file.all_assets ["mdl/levels_terrain_1"] <- [$"mdl/levels_terrain/mp_rr_canyonlands/canyonland_pipe_ring.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/clands_roof_bars_01_fglass_blue.rmdl",$"mdl/levels_terrain/mp_lobby/mp_setting_menu.rmdl",$"mdl/levels_terrain/mp_lobby/mp_character_select_geo.rmdl",$"mdl/levels_terrain/mp_lobby/mp_character_select_smoke.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/canyonland_terrain_section_02_pipe.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/hydroelectric_dam_facility_pipe_ramp_02.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/hydroelectric_dam_facility_pipe_ramp_04.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/hydroelectric_dam_facility_pipe_ramp_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/hydroelectric_dam_facility_pipe_ramp_03.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/military_bridge_pillar_01.rmdl",$"mdl/levels_terrain/sp_tday/tday_vtol_landing_pad_square_01.rmdl",$"mdl/levels_terrain/mp_runoff/spherical_pressure_tank_base_LM.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/lagoon_interior_stair_rope_03.rmdl",$"mdl/levels_terrain/mp_runoff/spherical_pressure_tank_cap_LM.rmdl",$"mdl/levels_terrain/mp_runoff/spherical_pressure_tank_supports_LM.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/lagoon_interior_stair_post_02.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/lagoon_interior_stair_post_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/lagoon_interior_stair_rope_02.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/lagoon_interior_stair_post_03.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/lagoon_interior_stair_rope_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/military_bridge_catwalk_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/lagoon_interior_stair_rope_04.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/military_bridge_catwalk_02.rmdl",$"mdl/levels_terrain/floating_village/hut_window_01.rmdl"] -file.all_assets ["mdl/levels_terrain_2"] <- [$"mdl/levels_terrain/mp_runoff/runoff_building_greeble_02.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/military_bridge_cable_stopper_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/clands_roof_door_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/clands_roof_bars_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/lagoon_ceiling_beams_04.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/lagoon_ceiling_beams_03.rmdl",$"mdl/levels_terrain/mp_boneyard/rib_giant_07.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/canyonlands_bone_custom_01.rmdl",$"mdl/levels_terrain/mp_boneyard/rib_giant_03.rmdl",$"mdl/levels_terrain/mp_boneyard/rib_giant_02.rmdl",$"mdl/levels_terrain/mp_boneyard/rib_giant_05.rmdl",$"mdl/levels_terrain/mp_boneyard/rib_gaint_05.rmdl",$"mdl/levels_terrain/mp_boneyard/rib_giant_04.rmdl",$"mdl/levels_terrain/mp_boneyard/rib_gaint_06.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/rr_canyonlands_terrain01_staging_area_rock_top.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/swamp_dam_pillar_tall_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/swamp_dam_drain_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/zone11_center_water_round.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/military_bridge_spacer_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/military_bridge_wall_connection_02.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/canyonlands_milbase_structure_pipes_03.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/military_bridge_end_cap.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/canyonlands_mall_bone_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/canyonlands_mall_bone_02.rmdl"] -file.all_assets ["mdl/levels_terrain_3"] <- [$"mdl/levels_terrain/mp_rr_canyonlands/clands_bone_tarps_02_a.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/military_bridge_cable_support_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/section_11_terrain_platform_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/section_11_terrain_round_a.rmdl",$"mdl/levels_terrain/mp_boneyard/skull_gaint_top.rmdl",$"mdl/levels_terrain/mp_boneyard/skull_gaint_jaw.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/mil_base_large_01_tunnel_pipes.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/radar_dish_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/dog_whistle_tower_panel_03.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/zone_11_water_treatment_walkway_a.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/military_bridge_top_bar_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/military_bridge_cables_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/mp_starting_screens.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/radar_dish_cross_beam_middle_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/mil_base_south_ramp_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/dog_whistle_tower_panel_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/mil_base_pillar_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/canyonlands_runoff_interior_bldg_01_nocol.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/mil_base_south_pipes_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/canyonlands_milbase_structure_pipes_01.rmdl",$"mdl/levels_terrain/floating_village/floating_village_hut_01_skeleton.rmdl",$"mdl/levels_terrain/mp_runoff/biodome_runoff_nocol.rmdl",$"mdl/levels_terrain/floating_village/supported_hut_06_skeleton.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/hydroelectric_dam_facility_turbine_02.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/canyonlands_mall_roof_dome_01.rmdl"] -file.all_assets ["mdl/runoff_1"] <- [$"mdl/runoff/runoff_railing_64_yellow.rmdl",$"mdl/runoff/runoff_railing_32_yellow.rmdl",$"mdl/runoff/runoff_railing_12_yellow.rmdl",$"mdl/runoff/runoff_railing_768_yellow.rmdl",$"mdl/runoff/runoff_doorframe_01.rmdl",$"mdl/runoff/runoff_railing_512_yellow.rmdl",$"mdl/runoff/runoff_railing_256_yellow.rmdl",$"mdl/runoff/runoff_doorframe_01b.rmdl",$"mdl/runoff/runoff_railing_128_yellow.rmdl",$"mdl/runoff/runoff_windowframe_03_bars.rmdl",$"mdl/runoff/runoff_windowframe_02.rmdl",$"mdl/runoff/runoff_windowframe_02_bars.rmdl",$"mdl/runoff/runoff_windowframe_01.rmdl",$"mdl/runoff/runoff_windowframe_01_bars.rmdl",$"mdl/runoff/runoff_fuel_tank_01.rmdl"] -file.all_assets ["mdl/military_base_1"] <- [$"mdl/military_base/militaryfort_wall_corner_decal_number_01.rmdl",$"mdl/military_base/militaryfort_wall_corner_decal_number_02.rmdl",$"mdl/military_base/militaryfort_wall_decal_orange_arrow_01.rmdl",$"mdl/military_base/militaryfort_wall_corner_03.rmdl",$"mdl/military_base/militaryfort_wall_trim_01.rmdl",$"mdl/military_base/militarybunker_trim_8x128.rmdl",$"mdl/military_base/militaryfort_clamp_01.rmdl",$"mdl/military_base/militaryfort_wall_concrete_02_b.rmdl",$"mdl/military_base/militaryfort_wall_rooftop_01.rmdl",$"mdl/military_base/militarybunker_rooftop_01.rmdl",$"mdl/military_base/militaryfort_wall_concrete_02_a.rmdl",$"mdl/military_base/militarybunker_wall_corner_metal_01_b.rmdl",$"mdl/military_base/militaryfort_pillar_tall_corner_02.rmdl",$"mdl/military_base/militaryfort_pillar_tall_corner_01.rmdl",$"mdl/military_base/militaryfort_wall_corner_window_01.rmdl",$"mdl/military_base/militaryfort_wall_corner_01.rmdl",$"mdl/military_base/militaryfort_wall_buttress_01.rmdl",$"mdl/military_base/militaryfort_wall_corner_02.rmdl",$"mdl/military_base/militaryfort_pillar_corner_01.rmdl",$"mdl/military_base/militaryfort_wall_buttress_02b.rmdl",$"mdl/military_base/militaryfort_wall_buttress_02.rmdl",$"mdl/military_base/militaryfort_wall_corner_cap_01_a.rmdl",$"mdl/military_base/militaryfort_wall_corner_cap_01_b.rmdl",$"mdl/military_base/militaryfort_pipe_corner_red_01.rmdl",$"mdl/military_base/ceiling_piece_01.rmdl"] -file.all_assets ["mdl/military_base_2"] <- [$"mdl/military_base/militarybunker_wall_256x128_metal_01_c.rmdl",$"mdl/military_base/militarybunker_pipe_straight_red_01_b.rmdl",$"mdl/military_base/militaryfort_wall_cap_filler_01_a.rmdl",$"mdl/military_base/militarybunker_wall_128x128_metal_01_d.rmdl",$"mdl/military_base/militarybunker_wall_corner_metal_01_a.rmdl",$"mdl/military_base/militarybunker_pipe_straight_red_01_a.rmdl",$"mdl/military_base/militarybunker_pipe_corner_red_01_b.rmdl",$"mdl/military_base/militaryfort_turret_pit_01.rmdl",$"mdl/military_base/militarybunker_wall_angled_ext_01_a.rmdl",$"mdl/military_base/militarybunker_wall_angled_ext_01_closed.rmdl",$"mdl/military_base/militarybunker_wall_angled_ext_01_opened.rmdl",$"mdl/military_base/militarybunker_wall_256x128_metal_01_a.rmdl",$"mdl/military_base/militarybunker_wall_256x128_metal_01_b.rmdl",$"mdl/military_base/militarybunker_wall_128x128_metal_01_b.rmdl",$"mdl/military_base/militarybunker_wall_128x128_metal_01_c.rmdl",$"mdl/military_base/militarybunker_wall_128x128_metal_01_a.rmdl",$"mdl/military_base/militaryfort_wall_corner_decal_stripes_01.rmdl",$"mdl/military_base/militaryfort_wall_corner_decal_stripes_02.rmdl",$"mdl/military_base/militaryfort_wall_corner_decal_stripes_03.rmdl"] -file.all_assets ["mdl/Gibs_1"] <- [$"mdl/Gibs/wood_gib01e.rmdl",$"mdl/Gibs/wood_gib01d.rmdl",$"mdl/Gibs/wood_gib01c.rmdl",$"mdl/Gibs/wood_gib01b.rmdl",$"mdl/Gibs/wood_gib01a.rmdl",$"mdl/Gibs/Glass_shard01.rmdl",$"mdl/Gibs/Glass_shard02.rmdl",$"mdl/Gibs/Glass_shard03.rmdl",$"mdl/Gibs/Glass_shard04.rmdl",$"mdl/Gibs/Glass_shard05.rmdl",$"mdl/Gibs/Glass_shard06.rmdl",$"mdl/Gibs/metal_gib1.rmdl",$"mdl/Gibs/metal_gib2.rmdl",$"mdl/Gibs/metal_gib3.rmdl",$"mdl/Gibs/metal_gib4.rmdl"] -file.all_assets ["mdl/props_debris_1"] <- [$"mdl/props_debris/concrete_chunk08a.rmdl",$"mdl/props_debris/concrete_chunk09a.rmdl",$"mdl/props_debris/concrete_chunk03a.rmdl",$"mdl/props_debris/concrete_chunk07a.rmdl"] -file.all_assets ["mdl/vehicle_1"] <- [$"mdl/vehicle/droppod_loot/droppod_loot_LL_holo.rmdl",$"mdl/vehicle/goblin_dropship/goblin_dropship_debris_01.rmdl",$"mdl/vehicle/goblin_dropship/goblin_dropship_holo.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo7.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo6.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo5.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo4.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo3.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo2.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo1.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_afterburners.rmdl"] -file.all_assets ["mdl/rocks_1"] <- [$"mdl/rocks/rock_small_02.rmdl",$"mdl/rocks/fract_chunk_small_03.rmdl",$"mdl/rocks/rock_white_chalk_modular_large_01.rmdl",$"mdl/rocks/rock_white_chalk_modular_wallrun_01.rmdl",$"mdl/rocks/rock_white_chalk_modular_flat_03.rmdl",$"mdl/rocks/rock_white_chalk_modular_cap_02.rmdl",$"mdl/rocks/rock_white_chalk_modular_wallrun_02.rmdl",$"mdl/rocks/rock_white_chalk_modular_02.rmdl",$"mdl/rocks/rock_white_chalk_modular_wallrun_03.rmdl",$"mdl/rocks/rock_white_chalk_modular_cap_01.rmdl",$"mdl/rocks/rock_white_chalk_modular_flat_01.rmdl",$"mdl/rocks/rock_white_chalk_modular_01_half_01.rmdl",$"mdl/rocks/rock_white_chalk_modular_01_half_02.rmdl",$"mdl/rocks/rock_white_chalk_modular_flat_02.rmdl",$"mdl/rocks/rock_white_chalk_sand_modular_large_01.rmdl",$"mdl/rocks/rock_white_chalk_sand_modular_flat_03.rmdl",$"mdl/rocks/rock_white_chalk_sand_modular_cap_02.rmdl",$"mdl/rocks/rock_white_chalk_sand_modular_wallrun_02.rmdl",$"mdl/rocks/rock_white_chalk_sand_modular_02.rmdl",$"mdl/rocks/rock_white_chalk_modular_01.rmdl",$"mdl/rocks/rock_white_chalk_sand_modular_wallrun_03.rmdl",$"mdl/rocks/rock_white_chalk_sand_modular_flat_02.rmdl",$"mdl/rocks/thunderdome_quarry_block_01.rmdl",$"mdl/rocks/thunderdome_quarry_block_01_orange.rmdl",$"mdl/rocks/thunderdome_quarry_block_03_orange.rmdl"] -file.all_assets ["mdl/rocks_2"] <- [$"mdl/rocks/thunderdome_quarry_block_02.rmdl",$"mdl/rocks/thunderdome_quarry_block_02_orange.rmdl",$"mdl/rocks/rock_sand_large_02.rmdl",$"mdl/rocks/forest_rock_cluster_small_02.rmdl",$"mdl/rocks/rock_white_chalk_mud_modular_wallrun_01.rmdl",$"mdl/rocks/rock_white_chalk_mud_modular_cap_01.rmdl",$"mdl/rocks/rock_white_chalk_mud_modular_flat_01.rmdl",$"mdl/rocks/rock_white_chalk_sand_modular_01.rmdl",$"mdl/rocks/rock_desert_05.rmdl",$"mdl/rocks/rock_desert_06.rmdl",$"mdl/rocks/rock_playback_05.rmdl",$"mdl/rocks/rock_playback_06.rmdl",$"mdl/rocks/thunderdome_quarry_block_stairs_01_orange.rmdl",$"mdl/rocks/rock_desert_04.rmdl",$"mdl/rocks/rock_playback_04.rmdl",$"mdl/rocks/desert_rock_cluster_small_04.rmdl",$"mdl/rocks/desert_rock_cluster_small_02.rmdl",$"mdl/rocks/desert_rock_cluster_small_03.rmdl",$"mdl/rocks/desert_rock_cluster_small_01.rmdl",$"mdl/rocks/desert_rock_cluster_small_05.rmdl"] -file.all_assets ["mdl/gibs_1"] <- [$"mdl/gibs/titan_gibs/at_gib8_l_thigh2.rmdl",$"mdl/gibs/titan_gibs/og_gib_r_forarm_d.rmdl",$"mdl/gibs/wood_gib01_lg.rmdl"] -file.all_assets ["mdl/nexus_1"] <- [$"mdl/nexus/nex_pipe_set_b.rmdl",$"mdl/nexus/nex_pipe_set_a.rmdl",$"mdl/nexus/nex_pipe_set_corner.rmdl",$"mdl/nexus/hay_bale_01_round.rmdl",$"mdl/nexus/hay_bale_01_straps.rmdl",$"mdl/nexus/nex_support_beams.rmdl",$"mdl/nexus/roto_tiller_01.rmdl",$"mdl/nexus/nex_support_beam_corner.rmdl",$"mdl/nexus/fir_log_pile_01.rmdl",$"mdl/nexus/nex_sp_shutter_d.rmdl",$"mdl/nexus/nex_sp_shutt_duo_b.rmdl",$"mdl/nexus/nexus_under_support_beam.rmdl",$"mdl/nexus/nexus_support_beam.rmdl"] -file.all_assets ["mdl/clutter_1"] <- [$"mdl/clutter/rope_knot_01.rmdl",$"mdl/clutter/wood_scrap_04.rmdl",$"mdl/clutter/wood_scrap_01.rmdl",$"mdl/clutter/wood_scrap_03.rmdl",$"mdl/clutter/wooden_plank_decayed_small_06.rmdl",$"mdl/clutter/wooden_plank_decayed_small_05.rmdl",$"mdl/clutter/wooden_plank_decayed_small_11.rmdl",$"mdl/clutter/wooden_plank_decayed_small_07.rmdl",$"mdl/clutter/wooden_plank_decayed_small_12.rmdl",$"mdl/clutter/wooden_plank_decayed_small_08.rmdl",$"mdl/clutter/wooden_plank_decayed_small_10.rmdl",$"mdl/clutter/wooden_plank_decayed_small_09.rmdl",$"mdl/clutter/wooden_plank_decayed_small_03.rmdl",$"mdl/clutter/wooden_plank_decayed_small_14.rmdl",$"mdl/clutter/wooden_plank_decayed_small_02.rmdl"] -file.all_assets ["mdl/metal_sheets_1"] <- [$"mdl/metal_sheets/sheet_metal_bent_02.rmdl",$"mdl/metal_sheets/sheet_metal_bent_03.rmdl",$"mdl/metal_sheets/sheet_metal_72x56_rust.rmdl",$"mdl/metal_sheets/sheet_metal_72x32_rust.rmdl",$"mdl/metal_sheets/sheet_metal_72x32.rmdl",$"mdl/metal_sheets/sheet_metal_72x56.rmdl"] -file.all_assets ["mdl/harmony_mines_1"] <- [$"mdl/harmony_mines/cable_set_02.rmdl",$"mdl/harmony_mines/harmony_door_frame_a.rmdl",$"mdl/harmony_mines/harmony_panel_window_frame_a.rmdl",$"mdl/harmony_mines/harmony_mines_rockcluster_02.rmdl",$"mdl/harmony_mines/harmony_mines_rockcluster_03.rmdl",$"mdl/harmony_mines/harmony_mines_rockcluster_01.rmdl"] -file.all_assets ["mdl/mcor_1"] <- [$"mdl/mcor/mcor_corner_consoles_64.rmdl",$"mdl/mcor/mcor_corner_consoles_32.rmdl",$"mdl/mcor/mcor_monitor_01.rmdl"] -file.all_assets ["mdl/black_water_canal_1"] <- [$"mdl/black_water_canal/mp_blk_water_canal_wire_64.rmdl",$"mdl/black_water_canal/mp_blk_water_exterior_corner_03.rmdl",$"mdl/black_water_canal/mp_black_water_canal_concreteblock_01.rmdl"] -file.all_assets ["mdl/extras_1"] <- [$"mdl/error.rmdl",$"mdl/dev/empty_model.rmdl",$"mdl/dev/envballs.rmdl",$"mdl/dev/editor_ref.rmdl",$"mdl/rise/rise_door_frame_01.rmdl",$"mdl/rise/catwalk_hanging_wires_01.rmdl",$"mdl/rise/rise_window_frame_03.rmdl",$"mdl/outpost207/gondola_wires_01.rmdl",$"mdl/mendoko/mendoko_monitor_03.rmdl",$"mdl/firstgen/firstgen_barrel_01.rmdl",$"mdl/menu/menu_cubemap.rmdl",$"mdl/menu/xp_badge.rmdl",$"mdl/menu/coin.rmdl",$"mdl/currency/crafting/currency_crafting_epic.rmdl",$"mdl/hud/grenade_indicator/bang_indicator.rmdl",$"mdl/empty/lights/empty_lights.rmdl",$"mdl/Robots/mobile_hardpoint/mobile_hardpoint_static.rmdl",$"mdl/metal_scraps/scrap_metal04.rmdl",$"mdl/robotics_r2/turret_plasma/plasma_turret_pc_1.rmdl",$"mdl/robotics_r2/turret_plasma/plasma_turret_pc_2.rmdl",$"mdl/robotics_r2/turret_plasma/plasma_turret_pc_3.rmdl",$"mdl/s2s/s2s_bridge_glass_shard.rmdl",$"mdl/robots/drone_air_attack/drone_attack_pc_4.rmdl",$"mdl/robots/drone_air_attack/drone_attack_pc_3.rmdl"] -file.all_assets ["mdl/extras_2"] <- [$"mdl/robots/drone_frag/drone_frag_loot.rmdl",$"mdl/rubble/concrete_chunk_med_01_body.rmdl",$"mdl/rubble/compacted_metal_trash_stacked.rmdl",$"mdl/rubble/compacted_metal_trash.rmdl",$"mdl/Humans/class/medium/pilot_medium_bangalore.rmdl",$"mdl/Creatures/flyer/flyer_kingscanyon_animated.rmdl",$"mdl/backwater/rock_set_backwater_02.rmdl",$"mdl/backwater/black_water_fuel_sphere_large.rmdl",$"mdl/buildings/Vent_Roof_02.rmdl",$"mdl/buildings/vent_roof_03_tallflat.rmdl",$"mdl/buildings/vent_roof_03_shortround.rmdl",$"mdl/handrails/handrail_yellow_64.rmdl",$"mdl/handrails/handrail_yellow_end.rmdl",$"mdl/kodai_live_fire/live_fire_redframe_b.rmdl",$"mdl/cockpit/ship_console_control_large.rmdl",$"mdl/thaw/thaw_container_large.rmdl",$"mdl/vistas/canyonlands_drop_se.rmdl",$"mdl/exoplanet/waterfall_exoplanet_02.rmdl",$"mdl/creatures/leviathan/leviathan_kingscanyon_preview_animated.rmdl",$"mdl/vehicles_r2/spacecraft/draconis/draconis_landed_hero.rmdl",$"mdl/robotics_r5/tick_loot/tick_loot_pcs_body_01.rmdl",$"mdl/robotics_r5/tick_loot/tick_loot_pcs_panel_01.rmdl",$"mdl/robotics_r5/tick_loot/tick_loot_pcs_leg_01.rmdl"] - -// //FIRING RANGE -// file.range_assets ["mdl/rocks_1"] <- [$"mdl/rocks/rock_white_chalk_modular_large_01.rmdl",$"mdl/rocks/rock_white_chalk_modular_flat_03.rmdl",$"mdl/rocks/rock_white_chalk_modular_cap_02.rmdl",$"mdl/rocks/rock_white_chalk_modular_wallrun_03.rmdl",$"mdl/rocks/rock_white_chalk_modular_flat_02.rmdl",$"mdl/rocks/thunderdome_quarry_block_01.rmdl",$"mdl/rocks/thunderdome_quarry_block_01_orange.rmdl",$"mdl/rocks/thunderdome_quarry_block_03_orange.rmdl",$"mdl/rocks/thunderdome_quarry_block_02.rmdl",$"mdl/rocks/thunderdome_quarry_block_02_orange.rmdl",$"mdl/rocks/rock_white_chalk_modular_01.rmdl",$"mdl/rocks/thunderdome_quarry_block_stairs_01_orange.rmdl",$"mdl/rocks/desert_rock_cluster_small_02.rmdl",$"mdl/rocks/desert_rock_cluster_small_03.rmdl",$"mdl/rocks/victory_platform.rmdl",$"mdl/rocks/rock_small_02.rmdl"] -// file.range_assets ["mdl/thunderdome_1"] <- [$"mdl/thunderdome/canyonland_thunderdome_rock_charred_orange_01.rmdl",$"mdl/thunderdome/survival_modular_flexscreens_04.rmdl",$"mdl/thunderdome/thunderdome_cut_rock_large_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_01.rmdl",$"mdl/thunderdome/canyonland_thunderdome_rock_charred_damaged_orange_01.rmdl",$"mdl/thunderdome/thunderdome_fan_stands_01.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_512x352_02.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_512x352_01.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_256x352_02.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_256x352_01.rmdl",$"mdl/thunderdome/survival_modular_flexscreens_frame_01.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_512x128_01.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_256x256_01.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_512x128_03.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x256_03.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_128x128_03.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x256_05.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x256_02.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_128x352_03.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_64x352_01.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_128x352_04.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_128x352_01.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_128x352_02.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x128_03.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x128_02.rmdl"] -// file.range_assets ["mdl/thunderdome_2"] <- [$"mdl/thunderdome/thunderdome_cage_ceiling_256x128_04.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x128_06.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x64_02.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x64_04.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_256x128_01.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_256x128_02.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_256x128_03.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x32_01.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x64_01.rmdl",$"mdl/thunderdome/thunderdome_stands_girder_32x512_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_128x32_01.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_64x64_01.rmdl",$"mdl/thunderdome/thunderdome_cage_door_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_16x352_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_64x32_01.rmdl",$"mdl/thunderdome/thunderdome_spike_traps_small_256_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_32x32_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_02.rmdl",$"mdl/thunderdome/thunderdome_spike_traps_small_128_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_16x128_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_16x32_01.rmdl",$"mdl/thunderdome/thunderdome_stands_girder_brace_01.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_16x32_02.rmdl",$"mdl/thunderdome/thunderdome_hanging_wire_rings_02.rmdl",$"mdl/thunderdome/thunderdome_cage_wall_sand_256x128_03.rmdl"] -// file.range_assets ["mdl/thunderdome_3"] <- [$"mdl/thunderdome/thunderdome_screen_tower_01.rmdl",$"mdl/thunderdome/thunderdome_hanging_wire_rings_03.rmdl",$"mdl/thunderdome/thunderdome_hanging_wire_rings_04.rmdl",$"mdl/thunderdome/thunderdome_hanging_wire_rings_01.rmdl",$"mdl/thunderdome/thunderdome_screen_tower_arm_01.rmdl",$"mdl/thunderdome/thunderdome_stands_awning_01.rmdl",$"mdl/thunderdome/thunderdome_barrier_01.rmdl",$"mdl/thunderdome/thunderdome_hanging_pilot_helmets_04.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_512x128_04.rmdl",$"mdl/thunderdome/thunderdome_stands_grate_01.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x256_04.rmdl",$"mdl/thunderdome/thunderdome_hanging_pilot_helmets_06.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x256_06.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_03.rmdl",$"mdl/thunderdome/thunderdome_cage_ceiling_256x128_05.rmdl",$"mdl/thunderdome/thunderdome_cage_frame_04.rmdl",$"mdl/thunderdome/thunderdome_cage_floor_128x128_01.rmdl",$"mdl/thunderdome/thunderdome_cage_floor_32x64_01.rmdl"] -// file.range_assets ["mdl/IMC_base_1"] <- [$"mdl/IMC_base/siren_wall_IMC_01.rmdl",$"mdl/IMC_base/generator_IMC_01.rmdl",$"mdl/IMC_base/imc_antenna_02.rmdl",$"mdl/IMC_base/imc_antenna_03.rmdl"] -// file.range_assets ["mdl/levels_terrain_1"] <- [$"mdl/levels_terrain/mp_rr_canyonlands/rr_canyonlands_terrain01_staging_area_flags.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/canyonlands_mall_bone_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/canyonlands_mall_bone_02.rmdl",$"mdl/levels_terrain/sp_thunderdome/thunderdome_rib_tarps_01.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/rr_canyonlands_terrain01_staging_area_rock_top.rmdl",$"mdl/levels_terrain/mp_lobby/mp_setting_menu.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/mp_starting_screens.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/rr_canyonlands_terrain01_staging_rooms_02.rmdl",$"mdl/levels_terrain/mp_rr_canyonlands/training_godrays_01.rmdl",$"mdl/levels_terrain/mp_lobby/mp_character_select_geo.rmdl"] -// file.range_assets ["mdl/slum_city_1"] <- [$"mdl/slum_city/slumcity_industrial_scaffolding_128x128_tarp_c.rmdl",$"mdl/slum_city/slumcity_industrial_scaffolding_64x128_tarp_d.rmdl",$"mdl/slum_city/slumcity_fencewall_128x72_dirty.rmdl"] -// file.range_assets ["mdl/pipes_1"] <- [$"mdl/pipes/pipe_modular_painted_yellow_256.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_128.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_64.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_32_valve.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_32_tjunk.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_corner.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_32_04.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_45_angle.rmdl",$"mdl/pipes/pipe_modular_painted_yellow_16.rmdl"] -// file.range_assets ["mdl/industrial_1"] <- [$"mdl/industrial/zipline_arm.rmdl",$"mdl/industrial/landing_mat_metal_02_large.rmdl",$"mdl/industrial/landing_mat_metal.rmdl",$"mdl/industrial/landing_mat_metal_02.rmdl",$"mdl/industrial/security_fence_post.rmdl",$"mdl/industrial/gun_rack_arm_down.rmdl"] -// file.range_assets ["mdl/props_1"] <- [$"mdl/props/tire_samson_v2_01/tire_samson_v2_01.rmdl",$"mdl/props/death_box/death_box_02.rmdl",$"mdl/props/global_access_panel_button/global_access_panel_button_console_w_stand.rmdl",$"mdl/props/ultimate_accelerant_usb/ultimate_accelerant_usb_static.rmdl",$"mdl/props/caustic_flask/caustic_flask.rmdl",$"mdl/props/caustic_mug/caustic_mug.rmdl",$"mdl/props/skull/skull_gladcard.rmdl",$"mdl/props/octane_wrench/octane_wrench_menu_static.rmdl",$"mdl/props/death_box/death_box_01_gladcard.rmdl",$"mdl/props/flask/prop_flask.rmdl",$"mdl/props/tablet/tablet_mini.rmdl",$"mdl/props/crypto_drone/crypto_drone_destoyed_01.rmdl",$"mdl/props/crypto_drone/crypto_drone_destoyed_02.rmdl",$"mdl/props/crypto_drone/crypto_drone_destoyed_03.rmdl"] -// file.range_assets ["mdl/containers_1"] <- [$"mdl/containers/lagoon_roof_tanks_01.rmdl",$"mdl/containers/underbelly_cargo_container_128_red_02.rmdl",$"mdl/containers/underbelly_cargo_container_128_blue_02.rmdl"] -// file.range_assets ["mdl/Gibs_1"] <- [$"mdl/Gibs/wood_gib01e.rmdl",$"mdl/Gibs/wood_gib01d.rmdl",$"mdl/Gibs/wood_gib01c.rmdl",$"mdl/Gibs/wood_gib01b.rmdl",$"mdl/Gibs/wood_gib01a.rmdl",$"mdl/Gibs/Glass_shard01.rmdl",$"mdl/Gibs/Glass_shard02.rmdl",$"mdl/Gibs/Glass_shard03.rmdl",$"mdl/Gibs/Glass_shard04.rmdl",$"mdl/Gibs/Glass_shard05.rmdl",$"mdl/Gibs/Glass_shard06.rmdl",$"mdl/Gibs/metal_gib1.rmdl",$"mdl/Gibs/metal_gib2.rmdl",$"mdl/Gibs/metal_gib3.rmdl",$"mdl/Gibs/metal_gib4.rmdl"] -// file.range_assets ["mdl/props_debris_1"] <- [$"mdl/props_debris/concrete_chunk08a.rmdl",$"mdl/props_debris/concrete_chunk09a.rmdl",$"mdl/props_debris/concrete_chunk03a.rmdl",$"mdl/props_debris/concrete_chunk07a.rmdl"] -// file.range_assets ["mdl/vehicle_1"] <- [$"mdl/vehicle/droppod_loot/droppod_loot_LL_holo.rmdl",$"mdl/vehicle/goblin_dropship/goblin_dropship_debris_01.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo7.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo6.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo5.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo4.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo3.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo2.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_ll_holo1.rmdl",$"mdl/vehicle/droppod_loot/droppod_loot_afterburners.rmdl"] -// file.range_assets ["mdl/door_1"] <- [$"mdl/door/canyonlands_door_single_02_damaged.rmdl",$"mdl/door/canyonlands_door_single_02.rmdl",$"mdl/door/canyonlands_door_vfx_bl.rmdl",$"mdl/door/canyonlands_door_vfx_br.rmdl",$"mdl/door/canyonlands_door_vfx_c.rmdl",$"mdl/door/canyonlands_door_vfx_uc.rmdl",$"mdl/door/canyonlands_door_vfx_ul.rmdl",$"mdl/door/canyonlands_door_vfx_ur.rmdl"] -// file.range_assets ["mdl/gibs_1"] <- [$"mdl/gibs/titan_gibs/at_gib8_l_thigh2.rmdl",$"mdl/gibs/titan_gibs/og_gib_r_forarm_d.rmdl",$"mdl/gibs/wood_gib01_lg.rmdl"] -// file.range_assets ["mdl/extras_1"] <- [$"mdl/error.rmdl",$"mdl/dev/empty_model.rmdl",$"mdl/dev/envballs.rmdl",$"mdl/dev/editor_ref.rmdl",$"mdl/angel_city/tarp_02.rmdl",$"mdl/foliage/bush_desert_01.rmdl",$"mdl/foliage/grass_brown_long_03.rmdl",$"mdl/utilities/wires_hanging_64.rmdl",$"mdl/canyonlands/fabric_canopy_pole_256_01.rmdl",$"mdl/canyonlands/fabric_canopy_02.rmdl",$"mdl/colony/farmland_fence_rusted_02.rmdl",$"mdl/colony/farmland_fence_rusted_01.rmdl",$"mdl/menu/menu_cubemap.rmdl",$"mdl/menu/xp_badge.rmdl",$"mdl/menu/coin.rmdl",$"mdl/lamps/security_light_01_on.rmdl",$"mdl/electricalboxes/fusebox_small_a.rmdl",$"mdl/rise/catwalk_hanging_wires_01.rmdl",$"mdl/vistas/canyonlands_drop_se.rmdl",$"mdl/currency/crafting/currency_crafting_epic.rmdl",$"mdl/hud/grenade_indicator/bang_indicator.rmdl",$"mdl/barriers/shooting_range_target_02_stand.rmdl",$"mdl/barriers/shooting_range_target_01.rmdl",$"mdl/barriers/shooting_range_target_02.rmdl"] -// file.range_assets ["mdl/extras_2"] <- [$"mdl/vehicles_r2/spacecraft/draconis/draconis_landed_hero.rmdl",$"mdl/metal_scraps/scrap_metal04.rmdl",$"mdl/robotics_r2/turret_plasma/plasma_turret_pc_1.rmdl",$"mdl/robotics_r2/turret_plasma/plasma_turret_pc_2.rmdl",$"mdl/robotics_r2/turret_plasma/plasma_turret_pc_3.rmdl",$"mdl/s2s/s2s_bridge_glass_shard.rmdl",$"mdl/robots/drone_air_attack/drone_attack_pc_4.rmdl",$"mdl/robots/drone_air_attack/drone_attack_pc_3.rmdl",$"mdl/robotics_r5/tick_loot/tick_loot_pcs_body_01.rmdl",$"mdl/robotics_r5/tick_loot/tick_loot_pcs_panel_01.rmdl",$"mdl/robotics_r5/tick_loot/tick_loot_pcs_leg_01.rmdl",$"mdl/rubble/concrete_chunk_med_01_body.rmdl",$"mdl/backwater/rock_set_backwater_02.rmdl"] - -foreach(string key, array assets in file.we_assets) { - printl("WE SECTION: " + key) - file.we_sections.append(key) - file.all_sections.append(key) -} - -foreach(string key, array assets in file.kc_assets) { - printl("KC SECTION: " + key) - file.kc_sections.append(key) - file.all_sections.append(key) -} - -// foreach(string key, array assets in file.range_assets) { - // printl("FIRING RANGE SECTION: " + key) - // file.range_sections.append(key) -// } - - -#if CLIENT -UpdateUIMap(GetMapName()) -#endif - -#if SERVER -foreach(string key, array assets in GetAssets()) { - foreach(ass in assets) { - if (!ModelIsPrecached(ass)) { - PrecacheModel(ass) - } - } -} -#endif - -} - -table > function GetAssets() { - #if !UI - switch(GetMapName()) - { - case "mp_rr_canyonlands_staging": - return {} - case "mp_rr_party_crasher": - case "mp_rr_habitat": - return file.all_assets - case "mp_rr_canyonlands_mu1": - case "mp_rr_canyonlands_mu1_night": - return {} - case "mp_rr_canyonlands_64k_x_64k": - return file.kc_assets - case "mp_lobby": - return {} - case "mp_rr_desertlands_64k_x_64k": - case "mp_rr_desertlands_64k_x_64k_nx": - return file.we_assets - default: - return {} - } - - unreachable - #else - return {} - #endif -} - -#if !UI -array function GetSections() { - switch(GetMapName()) - { - case "mp_rr_canyonlands_staging": - return file.range_sections - case "mp_rr_party_crasher": - case "mp_rr_habitat": - return file.all_sections - case "mp_rr_canyonlands_mu1": - case "mp_rr_canyonlands_mu1_night": - return [] - case "mp_rr_canyonlands_64k_x_64k": - return file.kc_sections - case "mp_lobby": - return [] - case "mp_rr_desertlands_64k_x_64k": - case "mp_rr_desertlands_64k_x_64k_nx": - return file.we_sections - default: - return [] - } - - unreachable -} -#endif - -array function GetMapSections(string map) { - switch(map) - { - case "mp_rr_canyonlands_staging": - printl("Returning stat") - return file.range_sections - case "mp_rr_party_crasher": - case "mp_rr_habitat": - return file.all_sections - case "mp_rr_canyonlands_mu1": - case "mp_rr_canyonlands_mu1_night": - return [] - case "mp_rr_canyonlands_64k_x_64k": - printl("cool") - return file.kc_sections - case "mp_lobby": - return [] - case "mp_rr_desertlands_64k_x_64k": - case "mp_rr_desertlands_64k_x_64k_nx": - printl("REturning Stat") - return file.we_sections - default: - return [] - } - - unreachable -} - -table > function GetMapAssets(string map) { - switch(map) - { - /*case "mp_rr_canyonlands_staging": - return [] - break - - case "mp_rr_canyonlands_mu1": - case "mp_rr_canyonlands_mu1_night": - case "mp_rr_canyonlands_64k_x_64k": - file.current_assets = file.kc_mu1_assets - #if CLIENT - UpdateUI() - #endif - return file.kc_mu1_assets - case "mp_lobby": - file.current_assets = file.lobby_assets - #if CLIENT - UpdateUI() - #endif - return file.lobby_assets*/ - case "mp_rr_desertlands_64k_x_64k": - case "mp_rr_desertlands_64k_x_64k_nx": - return file.we_assets - default: - Assert(false, "No TDM locations found for map!") - return {} - } - - unreachable -} - -#if CLIENT -void function UpdateUIMap(string map) { - RunUIScript("ModelsPanel_SetMap", map) -} -#endif - -#if UI -void function UpdateUISections(string map) { - -} -#endif - -#if CLIENT -void function Cl_MapEditor_Init() -{ -} -#endif - -#if SERVER -void function _MapEditor_Init() -{ -} -#endif - -#if SERVER || CLIENT -void function Sh_MapEditor_Init() -{ -} -#endif diff --git a/vscripts/sh_consts.gnut b/vscripts/sh_consts.gnut index c8a896e76..6d5e42a6a 100644 --- a/vscripts/sh_consts.gnut +++ b/vscripts/sh_consts.gnut @@ -1,3 +1,4 @@ +global string FLOWSTATE_VERSION = "v3.7" global const int INT_MIN = (1<<31) global const int INT_MAX = (1<<31) - 1 global const float FLT_MAX = 3.40282e+38 diff --git a/vscripts/sh_onboarding.gnut b/vscripts/sh_onboarding.gnut index 7dfe2d311..34276ea3e 100644 --- a/vscripts/sh_onboarding.gnut +++ b/vscripts/sh_onboarding.gnut @@ -462,16 +462,16 @@ void function DecideRespawnPlayer( entity player, bool giveLoadoutWeapons = true void function SetSkydiveEmotesForAllCharacters( entity player ) // You need to unlock the loadout for this to work { - array< array< string > > emoteArrays = [ [ "skydive_emote_bangalore_backflip" ], [ "skydive_emote_bloodhound_backflip" ], [ "skydive_emote_caustic_backflip" ], [ "skydive_emote_gibraltar_backflip" , - "skydive_emote_gibraltar_surf" ], [ "skydive_emote_lifeline_backflip", "skydive_emote_lifeline_windmill" ], [ "skydive_emote_mirage_backflip", - "skydive_emote_mirage_rodeo" ], [ "skydive_emote_octane_backflip" ], [ "skydive_emote_pathfinder_backflip", "skydive_emote_pathfinder_birdattack" ], - [ "skydive_emote_wattson_backflip", "skydive_emote_wattson_explorer" ], [ "skydive_emote_wraith_backflip" ] ] + // array< array< string > > emoteArrays = [ [ "skydive_emote_bangalore_backflip" ], [ "skydive_emote_bloodhound_backflip" ], [ "skydive_emote_caustic_backflip" ], [ "skydive_emote_gibraltar_backflip" , + // "skydive_emote_gibraltar_surf" ], [ "skydive_emote_lifeline_backflip", "skydive_emote_lifeline_windmill" ], [ "skydive_emote_mirage_backflip", + // "skydive_emote_mirage_rodeo" ], [ "skydive_emote_octane_backflip" ], [ "skydive_emote_pathfinder_backflip", "skydive_emote_pathfinder_birdattack" ], + // [ "skydive_emote_wattson_backflip", "skydive_emote_wattson_explorer" ], [ "skydive_emote_wraith_backflip" ] ] - foreach( emoteArray in emoteArrays ) - { - for( int i = 0; i < emoteArray.len(); i++ ) - ClientCommand( player, "loadouts_devset skydive_emote_" + i + " " + emoteArray[ i ] ) - } + // foreach( emoteArray in emoteArrays ) + // { + // for( int i = 0; i < emoteArray.len(); i++ ) + // ClientCommand( player, "loadouts_devset skydive_emote_" + i + " " + emoteArray[ i ] ) + // } } #endif diff --git a/vscripts/ui/FlowstateDM/flowstate_statistics.nut b/vscripts/ui/FlowstateDM/flowstate_statistics.nut index 192c1d0a6..8c987824f 100644 --- a/vscripts/ui/FlowstateDM/flowstate_statistics.nut +++ b/vscripts/ui/FlowstateDM/flowstate_statistics.nut @@ -181,33 +181,33 @@ void function InitStatisticsUI( var newMenuArg ) var menu = GetMenu( "StatisticsUI" ) file.menu = menu - AddMenuEventHandler( menu, eUIEvent.MENU_SHOW, OnR5RSB_Show ) - AddMenuEventHandler( menu, eUIEvent.MENU_OPEN, OnR5RSB_Open ) - AddMenuEventHandler( menu, eUIEvent.MENU_CLOSE, OnR5RSB_Close ) - AddMenuEventHandler( menu, eUIEvent.MENU_NAVIGATE_BACK, OnR5RSB_NavigateBack ) + // AddMenuEventHandler( menu, eUIEvent.MENU_SHOW, OnR5RSB_Show ) + // AddMenuEventHandler( menu, eUIEvent.MENU_OPEN, OnR5RSB_Open ) + // AddMenuEventHandler( menu, eUIEvent.MENU_CLOSE, OnR5RSB_Close ) + // AddMenuEventHandler( menu, eUIEvent.MENU_NAVIGATE_BACK, OnR5RSB_NavigateBack ) - AddEventHandlerToButton( menu, "Challenges", UIE_CLICK, ChallengesButtonFunct ) - AddEventHandlerToButton( menu, "Settings", UIE_CLICK, SettingsButtonFunct ) + // AddEventHandlerToButton( menu, "Challenges", UIE_CLICK, ChallengesButtonFunct ) + // AddEventHandlerToButton( menu, "Settings", UIE_CLICK, SettingsButtonFunct ) - //Setup Page Nav Buttons - Hud_AddEventHandler( Hud_GetChild( file.menu, "BtnServerListRightArrow" ), UIE_CLICK, NextPage ) - Hud_AddEventHandler( Hud_GetChild( file.menu, "BtnServerListLeftArrow" ), UIE_CLICK, PrevPage ) - Hud_AddEventHandler( Hud_GetChild( file.menu, "PrintToConsole" ), UIE_CLICK, PrintToConsole ) + // //Setup Page Nav Buttons + // Hud_AddEventHandler( Hud_GetChild( file.menu, "BtnServerListRightArrow" ), UIE_CLICK, NextPage ) + // Hud_AddEventHandler( Hud_GetChild( file.menu, "BtnServerListLeftArrow" ), UIE_CLICK, PrevPage ) + // Hud_AddEventHandler( Hud_GetChild( file.menu, "PrintToConsole" ), UIE_CLICK, PrintToConsole ) - var gameMenuButton = Hud_GetChild( menu, "GameMenuButton" ) - ToolTipData gameMenuToolTip - gameMenuToolTip.descText = "Global Settings" - Hud_SetToolTipData( gameMenuButton, gameMenuToolTip ) - HudElem_SetRuiArg( gameMenuButton, "icon", $"rui/menu/lobby/settings_icon" ) - HudElem_SetRuiArg( gameMenuButton, "shortcutText", "Global Settings" ) - Hud_AddEventHandler( gameMenuButton, UIE_CLICK, OpenGlobalSettings ) + // var gameMenuButton = Hud_GetChild( menu, "GameMenuButton" ) + // ToolTipData gameMenuToolTip + // gameMenuToolTip.descText = "Global Settings" + // Hud_SetToolTipData( gameMenuButton, gameMenuToolTip ) + // HudElem_SetRuiArg( gameMenuButton, "icon", $"rui/menu/lobby/settings_icon" ) + // HudElem_SetRuiArg( gameMenuButton, "shortcutText", "Global Settings" ) + // Hud_AddEventHandler( gameMenuButton, UIE_CLICK, OpenGlobalSettings ) - array challengesRows = GetElementsByClassname( file.menu, "ChallengeBtn" ) - foreach ( var elem in challengesRows ) - { - RuiSetString( Hud_GetRui( elem ), "buttonText", "") - Hud_SetEnabled( elem, false ) - } + // array challengesRows = GetElementsByClassname( file.menu, "ChallengeBtn" ) + // foreach ( var elem in challengesRows ) + // { + // RuiSetString( Hud_GetRui( elem ), "buttonText", "") + // Hud_SetEnabled( elem, false ) + // } } // void function HistoryUI_AddNewChallenge(string Name, int ShotsHit, string Weapon, float Accuracy, int dummiesKilled, int Damage, int totalshots, int criticalshots, int roundtime) diff --git a/vscripts/ui/menu_main.nut b/vscripts/ui/menu_main.nut index 7d2c79111..c92321a93 100644 --- a/vscripts/ui/menu_main.nut +++ b/vscripts/ui/menu_main.nut @@ -34,7 +34,7 @@ void function InitMainMenu( var newMenuArg ) file.subtitle = Hud_GetChild( file.menu, "Subtitle" ) var subtitleRui = Hud_GetRui( file.subtitle ) - RuiSetString( subtitleRui, "subtitleText", "Reloaded".toupper() ) + RuiSetString( subtitleRui, "subtitleText", "Flowstate ".toupper() + FLOWSTATE_VERSION ) file.versionDisplay = Hud_GetChild( menu, "VersionDisplay" ) file.signedInDisplay = Hud_GetChild( menu, "SignInDisplay" ) diff --git a/vscripts/ui/menu_system.nut b/vscripts/ui/menu_system.nut index 146aa01f6..2bf8eb433 100644 --- a/vscripts/ui/menu_system.nut +++ b/vscripts/ui/menu_system.nut @@ -35,6 +35,8 @@ struct table endmatchButtonData table spectateButtonData table respawnButtonData + table hubButtonData + table invisButtonData table SetHunterButtonData table ToggleScoreboardFocus InputDef& qaFooter @@ -134,6 +136,8 @@ void function InitSystemPanel( var panel ) file.ExitChallengeButtonData[ panel ] <- clone data file.spectateButtonData[ panel ] <- clone data file.respawnButtonData[ panel ] <- clone data + file.hubButtonData[ panel ] <- clone data + file.invisButtonData[ panel ] <- clone data file.TDM_ChangeWeapons[ panel ] <- clone data file.SetHunterButtonData[ panel ] <- clone data file.ToggleScoreboardFocus[ panel ] <- clone data @@ -382,6 +386,16 @@ void function RunKillSelf() ClientCommand( "kill_self" ) } +void function RunHub() +{ + ClientCommand( "hub" ) +} + +void function RunInvis() +{ + ClientCommand( "invis" ) +} + #if CONSOLE_PROG void function ReturnToMain_OnActivate( var button ) { diff --git a/weapons/mp_weapon_changeprops_fakeultimate.txt b/weapons/mp_weapon_changeprops_fakeultimate.txt new file mode 100644 index 000000000..63aa1836a --- /dev/null +++ b/weapons/mp_weapon_changeprops_fakeultimate.txt @@ -0,0 +1,41 @@ +#base "_base_ability_ultimate.txt" + +WeaponData +{ + // General + "printname" "" + "shortprintname" "" + "description" "" + "longdesc" "" + + "menu_icon" "rui/pilot_loadout/suit/light" + "hud_icon" "rui/flowstatecustom/prophunt_changeprops" + + "weapon_type_flags" "WPT_ULTIMATE" + "weaponClass" "human" + "weaponType" "tactical" + "fire_mode" "offhand" + "offhand_default_inventory_slot" "4" + "offhand_keep_primary_in_hand" "0" + "offhand_holster_primary" "1" + "hide_holstered_sidearm_when_active" "1" + "offhand_interupts_weapon_anims" "1" + "zoom_effects" "0" + + //Infinite Ammo + "uses_ammo_pool" "0" + "ammo_min_to_fire" "1" + "ammo_per_shot" "1" + "ammo_no_remove_from_stockpile" "1" + + "allow_empty_fire" "1" + "regen_ammo_refill_rate" "1" + "regen_ammo_refill_start_delay" "0.0" + + "ammo_default_total" "500" + "ammo_stockpile_max" "420" + + Mods + { + } +} diff --git a/weapons/mp_weapon_flashbang_fakeultimate.txt b/weapons/mp_weapon_flashbang_fakeultimate.txt new file mode 100644 index 000000000..8ec4814f4 --- /dev/null +++ b/weapons/mp_weapon_flashbang_fakeultimate.txt @@ -0,0 +1,41 @@ +#base "_base_ability_ultimate.txt" + +WeaponData +{ + // General + "printname" "" + "shortprintname" "" + "description" "" + "longdesc" "" + + "menu_icon" "rui/pilot_loadout/suit/light" + "hud_icon" "rui/flowstatecustom/prophunt_flashbang" + + "weapon_type_flags" "WPT_ULTIMATE" + "weaponClass" "human" + "weaponType" "tactical" + "fire_mode" "offhand" + "offhand_default_inventory_slot" "4" + "offhand_keep_primary_in_hand" "0" + "offhand_holster_primary" "1" + "hide_holstered_sidearm_when_active" "1" + "offhand_interupts_weapon_anims" "1" + "zoom_effects" "0" + + //Infinite Ammo + "uses_ammo_pool" "0" + "ammo_min_to_fire" "1" + "ammo_per_shot" "1" + "ammo_no_remove_from_stockpile" "1" + + "allow_empty_fire" "1" + "regen_ammo_refill_rate" "1" + "regen_ammo_refill_start_delay" "0.0" + + "ammo_default_total" "500" + "ammo_stockpile_max" "420" + + Mods + { + } +} diff --git a/weapons/mp_weapon_sniper.txt b/weapons/mp_weapon_sniper.txt index 7df1a5b32..43a0ac528 100644 --- a/weapons/mp_weapon_sniper.txt +++ b/weapons/mp_weapon_sniper.txt @@ -309,6 +309,28 @@ "viewmodel_offset_zoom_frac_start" "0.2" "viewmodel_offset_zoom_frac_end" "0.8" } + + "duckhunt" + { + "reload_time" "2.5" + "reload_time_late1" "2.5" + "reload_time_late2" "2.5" + "reloadempty_time" "2.5" + "reloadempty_time_late1" "2.5" + "reloadempty_time_late2" "2.5" + "reloadempty_time_late3" "2.5" + "rechamber_time" "0.8" + + "zoom_time_in" "0.25" + "zoom_time_out" "0.25" + "zoom_toggle_lerp_time" "0.01" + + "deployfirst_time" "0.5" + "deploy_time" "0.5" + "holster_time" "0.2" + "lower_time" "0.4" + "raise_time" "0.4" + } } // RUI From 8b8081625fb2a3dcc4d3f5ddd15851b064276941 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caf=C3=A9DeColombiaFPS?= <92343247+ColombianGuy@users.noreply.github.com> Date: Wed, 3 May 2023 18:42:47 -0500 Subject: [PATCH 06/17] merge new lobby and disconnect fixes from base --- .../ui/menus/CustomLobby/create_match.res | 1171 ++++++++++++ .../CustomLobby/customize_character.menu | 257 +++ .../menus/CustomLobby/customize_weapon.menu | 201 +++ .../ui/menus/CustomLobby/gamemode_select.res | 723 ++++++++ .../menus/{R5R => CustomLobby}/lobbymenu.res | 163 +- .../ui/menus/{R5R => CustomLobby}/main.res | 2 +- .../ui/menus/CustomLobby/misc_customize.menu | 171 ++ resource/ui/menus/CustomLobby/news.res | 360 ++++ .../CustomLobby/panels/character_skins.res | 104 ++ .../menus/CustomLobby/panels/characters.res | 235 +++ .../panels/connecting.res | 2 +- .../panels/create_match.res} | 121 +- resource/ui/menus/CustomLobby/panels/home.res | 273 +++ .../ui/menus/CustomLobby/panels/loadout.res | 141 ++ .../{R5R => CustomLobby}/panels/mainmenu.res | 0 .../menus/{R5R => CustomLobby}/panels/map.res | 1 - .../{R5R => CustomLobby}/panels/playlist.res | 1 - .../panels/serverbrowser.res | 883 ++++------ .../panels/serverdesc.res | 1 - .../panels/servername.res | 1 - .../panels/visibility.res | 2 +- resource/ui/menus/R5R/panels/createserver.res | 600 ------- resource/ui/menus/R5R/panels/home.res | 215 --- resource/ui/menus/R5R/panels/kickplayer.res | 265 --- .../ui/menus/R5R/panels/matchstarting.res | 140 -- resource/ui/menus/weaponmods.menu | 1563 +++++++++++++++++ vscripts/_remote_functions_mp.gnut | 8 +- vscripts/lobby/lobbyvm/_lobbyvm.nut | 264 +-- vscripts/lobby/lobbyvm/cl_lobbyvm.nut | 143 -- vscripts/lobby/lobbyvm/sh_lobbyvm.nut | 25 + vscripts/mp/sh_quickchat.gnut | 68 +- vscripts/scripts.rson | 30 +- vscripts/sh_consts.gnut | 8 +- vscripts/sh_menu_models.gnut | 38 +- .../ui/CustomLobby/menu_gamemodeselect.nut | 356 ++++ vscripts/ui/CustomLobby/menu_lobby.nut | 283 +++ .../{R5RMenus => CustomLobby}/menu_main.nut | 57 +- vscripts/ui/CustomLobby/menu_news.nut | 235 +++ .../panel_create.nut} | 82 +- vscripts/ui/CustomLobby/panel_home.nut | 606 +++++++ vscripts/ui/CustomLobby/panel_legends.nut | 184 ++ vscripts/ui/CustomLobby/panel_loadout.nut | 153 ++ vscripts/ui/CustomLobby/panel_mainmenu.nut | 81 + .../{R5RMenus => CustomLobby}/panel_map.nut | 16 +- .../panel_playlist.nut | 19 +- .../ui/CustomLobby/panel_serverbrowser.nut | 630 +++++++ .../panel_visibility.nut | 15 +- vscripts/ui/R5RMenus/menu_lobby.nut | 271 --- vscripts/ui/R5RMenus/menu_private_match.nut | 436 ----- vscripts/ui/R5RMenus/panel_home.nut | 35 - vscripts/ui/R5RMenus/panel_mainmenu.nut | 52 - vscripts/ui/R5RMenus/panel_serverbrowser.nut | 480 ----- vscripts/ui/_grid_panel.gnut | 4 +- vscripts/ui/_menu_utility.nut | 4 +- vscripts/ui/_menus.nut | 62 +- vscripts/ui/customize_common.gnut | 26 +- vscripts/ui/dialogs/error.nut | 8 +- vscripts/ui/menu_customize_character.nut | 8 +- vscripts/ui/menu_customize_weapon.nut | 26 +- vscripts/ui/menu_matchmaking_utility.nut | 33 +- vscripts/ui/menu_misc.nut | 7 + vscripts/ui/menu_social.nut | 2 + vscripts/ui/menu_system.nut | 2 +- vscripts/ui/menu_weaponmods.nut | 629 +++++++ vscripts/ui/panel_banner_badges_v2.nut | 24 +- vscripts/ui/panel_banner_frames.nut | 6 +- vscripts/ui/panel_banner_poses.nut | 6 +- vscripts/ui/panel_banner_trackers_v2.nut | 4 +- vscripts/ui/panel_character_executions.nut | 8 +- vscripts/ui/panel_character_skins.nut | 33 +- vscripts/ui/panel_mainmenu.nut | 322 +++- vscripts/ui/panel_quip_intro.nut | 6 +- vscripts/ui/panel_quip_kill.nut | 6 +- vscripts/ui/panel_weapon_skins.nut | 1 + vscripts/ui/sh_tooltips.nut | 1 + vscripts/ui/ui_utility.gnut | 8 +- 76 files changed, 9521 insertions(+), 3886 deletions(-) create mode 100644 resource/ui/menus/CustomLobby/create_match.res create mode 100644 resource/ui/menus/CustomLobby/customize_character.menu create mode 100644 resource/ui/menus/CustomLobby/customize_weapon.menu create mode 100644 resource/ui/menus/CustomLobby/gamemode_select.res rename resource/ui/menus/{R5R => CustomLobby}/lobbymenu.res (68%) rename resource/ui/menus/{R5R => CustomLobby}/main.res (97%) create mode 100644 resource/ui/menus/CustomLobby/misc_customize.menu create mode 100644 resource/ui/menus/CustomLobby/news.res create mode 100644 resource/ui/menus/CustomLobby/panels/character_skins.res create mode 100644 resource/ui/menus/CustomLobby/panels/characters.res rename resource/ui/menus/{R5R => CustomLobby}/panels/connecting.res (97%) rename resource/ui/menus/{R5R/privatematch.res => CustomLobby/panels/create_match.res} (83%) create mode 100644 resource/ui/menus/CustomLobby/panels/home.res create mode 100644 resource/ui/menus/CustomLobby/panels/loadout.res rename resource/ui/menus/{R5R => CustomLobby}/panels/mainmenu.res (100%) rename resource/ui/menus/{R5R => CustomLobby}/panels/map.res (99%) rename resource/ui/menus/{R5R => CustomLobby}/panels/playlist.res (99%) rename resource/ui/menus/{R5R => CustomLobby}/panels/serverbrowser.res (81%) rename resource/ui/menus/{R5R => CustomLobby}/panels/serverdesc.res (99%) rename resource/ui/menus/{R5R => CustomLobby}/panels/servername.res (99%) rename resource/ui/menus/{R5R => CustomLobby}/panels/visibility.res (99%) delete mode 100644 resource/ui/menus/R5R/panels/createserver.res delete mode 100644 resource/ui/menus/R5R/panels/home.res delete mode 100644 resource/ui/menus/R5R/panels/kickplayer.res delete mode 100644 resource/ui/menus/R5R/panels/matchstarting.res create mode 100644 resource/ui/menus/weaponmods.menu create mode 100644 vscripts/ui/CustomLobby/menu_gamemodeselect.nut create mode 100644 vscripts/ui/CustomLobby/menu_lobby.nut rename vscripts/ui/{R5RMenus => CustomLobby}/menu_main.nut (89%) create mode 100644 vscripts/ui/CustomLobby/menu_news.nut rename vscripts/ui/{R5RMenus/panel_createserver.nut => CustomLobby/panel_create.nut} (73%) create mode 100644 vscripts/ui/CustomLobby/panel_home.nut create mode 100644 vscripts/ui/CustomLobby/panel_legends.nut create mode 100644 vscripts/ui/CustomLobby/panel_loadout.nut create mode 100644 vscripts/ui/CustomLobby/panel_mainmenu.nut rename vscripts/ui/{R5RMenus => CustomLobby}/panel_map.nut (91%) rename vscripts/ui/{R5RMenus => CustomLobby}/panel_playlist.nut (87%) create mode 100644 vscripts/ui/CustomLobby/panel_serverbrowser.nut rename vscripts/ui/{R5RMenus => CustomLobby}/panel_visibility.nut (88%) delete mode 100644 vscripts/ui/R5RMenus/menu_lobby.nut delete mode 100644 vscripts/ui/R5RMenus/menu_private_match.nut delete mode 100644 vscripts/ui/R5RMenus/panel_home.nut delete mode 100644 vscripts/ui/R5RMenus/panel_mainmenu.nut delete mode 100644 vscripts/ui/R5RMenus/panel_serverbrowser.nut create mode 100644 vscripts/ui/menu_weaponmods.nut diff --git a/resource/ui/menus/CustomLobby/create_match.res b/resource/ui/menus/CustomLobby/create_match.res new file mode 100644 index 000000000..604982eff --- /dev/null +++ b/resource/ui/menus/CustomLobby/create_match.res @@ -0,0 +1,1171 @@ +resource/ui/menus/dialog_gamemode_select_v2.menu +{ + menu + { + ControlName Frame + xpos 0 + ypos 0 + zpos 3 + wide f0 + tall f0 + autoResize 0 + pinCorner 0 + visible 1 + enabled 1 + tabPosition 1 + PaintBackgroundType 0 + infocus_bgcolor_override "0 0 0 0" + outoffocus_bgcolor_override "0 0 0 0" + modal 1 + + ScreenBlur + { + ControlName Label + labelText "" + } + + ScreenFrame + { + ControlName RuiPanel + xpos 0 + ypos 0 + wide %100 + tall %100 + visible 1 + enabled 1 + scaleImage 1 + rui "ui/screen_blur.rpak" + drawColor "255 255 255 255" + } + + Cover + { + ControlName ImagePanel + xpos 0 + ypos 0 + wide %200 + tall %200 + visible 1 + enabled 1 + scaleImage 1 + image "vgui/HUD/white" + drawColor "0 0 0 200" + + pin_to_sibling ScreenFrame + pin_corner_to_sibling CENTER + pin_to_sibling_corner CENTER + } + + BtnServerName + { + ControlName TextEntry + zpos 100 // This works around input weirdness when the control is constructed by code instead of VGUI blackbox. + wide 600 + tall 50 + ypos -198 + xpos -120 + zpos 70 + allowRightClickMenu 0 + allowSpecialCharacters 0 + unicode 0 + + keyboardTitle "Enter Server Name" + keyboardDescription "Enter Server Name" + + visible 1 + enabled 1 + textHidden 0 + editable 1 + maxchars 100 + textAlignment "center" + ruiFont TitleRegularFont + ruiFontHeight 22 + ruiMinFontHeight 16 + bgcolor_override "30 30 30 200" + + pin_to_sibling ScreenFrame + pin_corner_to_sibling TOP_RIGHT + pin_to_sibling_corner TOP_RIGHT + } + + "ServerNameText" + { + "ControlName" "Label" + "xpos" "0" + "ypos" "10" + "auto_wide_tocontents" "1" + "tall" "25" + "visible" "1" + "wrap" "0" + "fontHeight" "25" + "zpos" "5" + "textAlignment" "north-west" + "labelText" "Server Name:" + "font" "TitleBoldFont" + "allcaps" "1" + "fgcolor_override" "200 200 200 255" + + "pin_to_sibling" "BtnServerName" + "pin_corner_to_sibling" "BOTTOM" + "pin_to_sibling_corner" "TOP" + } + + BtnServerDesc + { + ControlName TextEntry + zpos 100 // This works around input weirdness when the control is constructed by code instead of VGUI blackbox. + wide 600 + tall 50 + ypos 50 + xpos 0 + zpos 70 + allowRightClickMenu 0 + allowSpecialCharacters 0 + unicode 0 + + keyboardTitle "Enter Server Name" + keyboardDescription "Enter Server Name" + + visible 1 + enabled 1 + textHidden 0 + editable 1 + maxchars 100 + textAlignment "center" + ruiFont TitleRegularFont + ruiFontHeight 22 + ruiMinFontHeight 16 + bgcolor_override "30 30 30 200" + + pin_to_sibling BtnServerName + pin_corner_to_sibling TOP_RIGHT + pin_to_sibling_corner BOTTOM_RIGHT + } + + "ServerDescText" + { + "ControlName" "Label" + "xpos" "0" + "ypos" "10" + "auto_wide_tocontents" "1" + "tall" "25" + "visible" "1" + "wrap" "0" + "fontHeight" "25" + "zpos" "5" + "textAlignment" "north-west" + "labelText" "Server Name:" + "font" "TitleBoldFont" + "allcaps" "1" + "fgcolor_override" "200 200 200 255" + + "pin_to_sibling" "BtnServerDesc" + "pin_corner_to_sibling" "BOTTOM" + "pin_to_sibling_corner" "TOP" + } + + SwtBtnVisibility + { + ControlName RuiButton + InheritProperties SwitchButton + style DialogListButton + ConVar "menu_faq_community_version" + classname FilterPanelChild + wide 600 + ypos 30 + xpos 0 + + ruiArgs + { + buttonText "Server Visibility" + } + + list + { + "Offline" 0 + "Visible" 1 + "Hidden" 2 + } + + pin_to_sibling BtnServerDesc + pin_corner_to_sibling TOP_RIGHT + pin_to_sibling_corner BOTTOM_RIGHT + + childGroupAlways MultiChoiceButtonAlways + } + + "SettingsText" + { + "ControlName" "Label" + "xpos" "0" + "ypos" "60" + "auto_wide_tocontents" "1" + "tall" "30" + "visible" "1" + "wrap" "0" + "fontHeight" "30" + "zpos" "5" + "textAlignment" "north-west" + "labelText" "Server Settings" + "font" "TitleBoldFont" + "allcaps" "1" + "fgcolor_override" "200 200 200 255" + + "pin_to_sibling" "BtnServerName" + "pin_corner_to_sibling" "BOTTOM" + "pin_to_sibling_corner" "TOP" + } + + SaveBtn + { + ControlName RuiButton + wide 600 + tall 120 + ypos -100 + xpos -120 + zpos 10 + rui "ui/gamemode_select_v2_lobby_button.rpak" + labelText "" + visible 1 + tabPosition 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_GameMode_Select" + + ruiArgs + { + lockIconEnabled 0 + modeNameText "Create Private Match" + modeDescText "" + modeImage "rui/menu/store/feature_background_square" + } + + pin_to_sibling ScreenFrame + pin_corner_to_sibling BOTTOM_RIGHT + pin_to_sibling_corner BOTTOM_RIGHT + } + + "ErrorText" + { + "ControlName" "Label" + "xpos" "0" + "ypos" "10" + "auto_wide_tocontents" "1" + "tall" "30" + "visible" "0" + "wrap" "0" + "fontHeight" "30" + "zpos" "5" + "textAlignment" "north-west" + "labelText" "" + "font" "TitleBoldFont" + "allcaps" "1" + "fgcolor_override" "200 30 30 255" + + "pin_to_sibling" "SaveBtn" + "pin_corner_to_sibling" "TOP" + "pin_to_sibling_corner" "BOTTOM" + } + + "SettingsBG" + { + "ControlName" "Label" + "xpos" "2" + "ypos" "50" + "zpos" "1" + "wide" "600" + "tall" "700" + "labelText" "" + "bgcolor_override" "100 100 100 150" + "visible" "1" + "paintbackground" "1" + + "pin_to_sibling" "BtnServerName" + "pin_corner_to_sibling" "TOP" + "pin_to_sibling_corner" "TOP" + } + + //Row 1 + MapButton0 + { + ControlName RuiButton + classname "MapButton" + wide 280 + tall 120 + ypos 125 + xpos -120 + zpos 10 + rui "ui/gamemode_select_v2_lobby_button.rpak" + labelText "" + visible 1 + tabPosition 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_GameMode_Select" + "scriptID" "0" + + ruiArgs + { + lockIconEnabled 0 + modeNameText "Map Name" + modeDescText "" + //modeImage "rui/menu/gamemode/firing_range" + } + + pin_to_sibling ScreenFrame + pin_corner_to_sibling LEFT + pin_to_sibling_corner LEFT + } + + MapButton1 + { + ControlName RuiButton + classname "MapButton" + wide 280 + tall 120 + ypos 0 + xpos 10 + zpos 10 + rui "ui/gamemode_select_v2_lobby_button.rpak" + labelText "" + visible 1 + tabPosition 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_GameMode_Select" + "scriptID" "1" + + ruiArgs + { + lockIconEnabled 0 + modeNameText "Map Name" + modeDescText "" + //modeImage "rui/menu/gamemode/firing_range" + } + + pin_to_sibling MapButton0 + pin_corner_to_sibling LEFT + pin_to_sibling_corner RIGHT + } + + MapButton2 + { + ControlName RuiButton + classname "MapButton" + wide 280 + tall 120 + ypos 0 + xpos 10 + zpos 10 + rui "ui/gamemode_select_v2_lobby_button.rpak" + labelText "" + visible 1 + tabPosition 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_GameMode_Select" + "scriptID" "2" + + ruiArgs + { + lockIconEnabled 0 + modeNameText "Map Name" + modeDescText "" + //modeImage "rui/menu/gamemode/firing_range" + } + + pin_to_sibling MapButton1 + pin_corner_to_sibling LEFT + pin_to_sibling_corner RIGHT + } + + //Row 2 + MapButton3 + { + ControlName RuiButton + classname "MapButton" + wide 280 + tall 120 + ypos 10 + xpos 0 + zpos 10 + rui "ui/gamemode_select_v2_lobby_button.rpak" + labelText "" + visible 1 + tabPosition 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_GameMode_Select" + "scriptID" "3" + + ruiArgs + { + lockIconEnabled 0 + modeNameText "Map Name" + modeDescText "" + //modeImage "rui/menu/gamemode/firing_range" + } + + pin_to_sibling MapButton0 + pin_corner_to_sibling TOP + pin_to_sibling_corner BOTTOM + } + + MapButton4 + { + ControlName RuiButton + classname "MapButton" + wide 280 + tall 120 + ypos 0 + xpos 10 + zpos 10 + rui "ui/gamemode_select_v2_lobby_button.rpak" + labelText "" + visible 1 + tabPosition 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_GameMode_Select" + "scriptID" "4" + + ruiArgs + { + lockIconEnabled 0 + modeNameText "Map Name" + modeDescText "" + //modeImage "rui/menu/gamemode/firing_range" + } + + pin_to_sibling MapButton3 + pin_corner_to_sibling LEFT + pin_to_sibling_corner RIGHT + } + + MapButton5 + { + ControlName RuiButton + classname "MapButton" + wide 280 + tall 120 + ypos 0 + xpos 10 + zpos 10 + rui "ui/gamemode_select_v2_lobby_button.rpak" + labelText "" + visible 1 + tabPosition 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_GameMode_Select" + "scriptID" "5" + + ruiArgs + { + lockIconEnabled 0 + modeNameText "Map Name" + modeDescText "" + //modeImage "rui/menu/gamemode/firing_range" + } + + pin_to_sibling MapButton4 + pin_corner_to_sibling LEFT + pin_to_sibling_corner RIGHT + } + + //Row 3 + MapButton6 + { + ControlName RuiButton + classname "MapButton" + wide 280 + tall 120 + ypos 10 + xpos 0 + zpos 10 + rui "ui/gamemode_select_v2_lobby_button.rpak" + labelText "" + visible 1 + tabPosition 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_GameMode_Select" + "scriptID" "6" + + ruiArgs + { + lockIconEnabled 0 + modeNameText "Map Name" + modeDescText "" + //modeImage "rui/menu/gamemode/firing_range" + } + + pin_to_sibling MapButton3 + pin_corner_to_sibling TOP + pin_to_sibling_corner BOTTOM + } + + MapButton7 + { + ControlName RuiButton + classname "MapButton" + wide 280 + tall 120 + ypos 0 + xpos 10 + zpos 10 + rui "ui/gamemode_select_v2_lobby_button.rpak" + labelText "" + visible 1 + tabPosition 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_GameMode_Select" + "scriptID" "7" + + ruiArgs + { + lockIconEnabled 0 + modeNameText "Map Name" + modeDescText "" + //modeImage "rui/menu/gamemode/firing_range" + } + + pin_to_sibling MapButton6 + pin_corner_to_sibling LEFT + pin_to_sibling_corner RIGHT + } + + MapButton8 + { + ControlName RuiButton + classname "MapButton" + wide 280 + tall 120 + ypos 0 + xpos 10 + zpos 10 + rui "ui/gamemode_select_v2_lobby_button.rpak" + labelText "" + visible 1 + tabPosition 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_GameMode_Select" + "scriptID" "8" + + ruiArgs + { + lockIconEnabled 0 + modeNameText "Map Name" + modeDescText "" + //modeImage "rui/menu/gamemode/firing_range" + } + + pin_to_sibling MapButton7 + pin_corner_to_sibling LEFT + pin_to_sibling_corner RIGHT + } + + "MapText" + { + "ControlName" "Label" + "xpos" "0" + "ypos" "10" + "auto_wide_tocontents" "1" + "tall" "30" + "visible" "1" + "wrap" "0" + "fontHeight" "30" + "zpos" "5" + "textAlignment" "north-west" + "labelText" "Select Map" + "font" "TitleBoldFont" + "allcaps" "1" + "fgcolor_override" "200 200 200 255" + + "pin_to_sibling" "MapButton1" + "pin_corner_to_sibling" "BOTTOM" + "pin_to_sibling_corner" "TOP" + } + + //Row 1 + PlaylistButton0 + { + ControlName RuiButton + classname "PlaylistButton" + wide 280 + tall 120 + ypos -150 + xpos -120 + zpos 10 + rui "ui/gamemode_select_v2_lobby_button.rpak" + labelText "" + visible 1 + tabPosition 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_GameMode_Select" + "scriptID" "0" + + ruiArgs + { + lockIconEnabled 0 + modeNameText "Playlist Name" + modeDescText "" + //modeImage "rui/menu/gamemode/firing_range" + } + + pin_to_sibling ScreenFrame + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner TOP_LEFT + } + + PlaylistButton1 + { + ControlName RuiButton + classname "PlaylistButton" + wide 280 + tall 120 + ypos 0 + xpos 10 + zpos 10 + rui "ui/gamemode_select_v2_lobby_button.rpak" + labelText "" + visible 1 + tabPosition 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_GameMode_Select" + "scriptID" "1" + + ruiArgs + { + lockIconEnabled 0 + modeNameText "Playlist Name" + modeDescText "" + //modeImage "rui/menu/gamemode/firing_range" + } + + pin_to_sibling PlaylistButton0 + pin_corner_to_sibling LEFT + pin_to_sibling_corner RIGHT + } + + PlaylistButton2 + { + ControlName RuiButton + classname "PlaylistButton" + wide 280 + tall 120 + ypos 0 + xpos 10 + zpos 10 + rui "ui/gamemode_select_v2_lobby_button.rpak" + labelText "" + visible 1 + tabPosition 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_GameMode_Select" + "scriptID" "2" + + ruiArgs + { + lockIconEnabled 0 + modeNameText "Playlist Name" + modeDescText "" + //modeImage "rui/menu/gamemode/firing_range" + } + + pin_to_sibling PlaylistButton1 + pin_corner_to_sibling LEFT + pin_to_sibling_corner RIGHT + } + + //Row 2 + PlaylistButton3 + { + ControlName RuiButton + classname "PlaylistButton" + wide 280 + tall 120 + ypos 10 + xpos 0 + zpos 10 + rui "ui/gamemode_select_v2_lobby_button.rpak" + labelText "" + visible 1 + tabPosition 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_GameMode_Select" + "scriptID" "3" + + ruiArgs + { + lockIconEnabled 0 + modeNameText "Playlist Name" + modeDescText "" + //modeImage "rui/menu/gamemode/firing_range" + } + + pin_to_sibling PlaylistButton0 + pin_corner_to_sibling TOP + pin_to_sibling_corner BOTTOM + } + + PlaylistButton4 + { + ControlName RuiButton + classname "PlaylistButton" + wide 280 + tall 120 + ypos 0 + xpos 10 + zpos 10 + rui "ui/gamemode_select_v2_lobby_button.rpak" + labelText "" + visible 1 + tabPosition 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_GameMode_Select" + "scriptID" "4" + + ruiArgs + { + lockIconEnabled 0 + modeNameText "Playlist Name" + modeDescText "" + //modeImage "rui/menu/gamemode/firing_range" + } + + pin_to_sibling PlaylistButton3 + pin_corner_to_sibling LEFT + pin_to_sibling_corner RIGHT + } + + PlaylistButton5 + { + ControlName RuiButton + classname "PlaylistButton" + wide 280 + tall 120 + ypos 0 + xpos 10 + zpos 10 + rui "ui/gamemode_select_v2_lobby_button.rpak" + labelText "" + visible 1 + tabPosition 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_GameMode_Select" + "scriptID" "5" + + ruiArgs + { + lockIconEnabled 0 + modeNameText "Playlist Name" + modeDescText "" + //modeImage "rui/menu/gamemode/firing_range" + } + + pin_to_sibling PlaylistButton4 + pin_corner_to_sibling LEFT + pin_to_sibling_corner RIGHT + } + + //Row 3 + PlaylistButton6 + { + ControlName RuiButton + classname "PlaylistButton" + wide 280 + tall 120 + ypos 10 + xpos 0 + zpos 10 + rui "ui/gamemode_select_v2_lobby_button.rpak" + labelText "" + visible 1 + tabPosition 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_GameMode_Select" + "scriptID" "6" + + ruiArgs + { + lockIconEnabled 0 + modeNameText "Playlist Name" + modeDescText "" + //modeImage "rui/menu/gamemode/firing_range" + } + + pin_to_sibling PlaylistButton3 + pin_corner_to_sibling TOP + pin_to_sibling_corner BOTTOM + } + + PlaylistButton7 + { + ControlName RuiButton + classname "PlaylistButton" + wide 280 + tall 120 + ypos 0 + xpos 10 + zpos 10 + rui "ui/gamemode_select_v2_lobby_button.rpak" + labelText "" + visible 1 + tabPosition 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_GameMode_Select" + "scriptID" "7" + + ruiArgs + { + lockIconEnabled 0 + modeNameText "Playlist Name" + modeDescText "" + //modeImage "rui/menu/gamemode/firing_range" + } + + pin_to_sibling PlaylistButton6 + pin_corner_to_sibling LEFT + pin_to_sibling_corner RIGHT + } + + PlaylistButton8 + { + ControlName RuiButton + classname "PlaylistButton" + wide 280 + tall 120 + ypos 0 + xpos 10 + zpos 10 + rui "ui/gamemode_select_v2_lobby_button.rpak" + labelText "" + visible 1 + tabPosition 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_GameMode_Select" + "scriptID" "8" + + ruiArgs + { + lockIconEnabled 0 + modeNameText "Playlist Name" + modeDescText "" + //modeImage "rui/menu/gamemode/firing_range" + } + + pin_to_sibling PlaylistButton7 + pin_corner_to_sibling LEFT + pin_to_sibling_corner RIGHT + } + + "PlaylistText" + { + "ControlName" "Label" + "xpos" "0" + "ypos" "10" + "auto_wide_tocontents" "1" + "tall" "30" + "visible" "1" + "wrap" "0" + "fontHeight" "30" + "zpos" "5" + "textAlignment" "north-west" + "labelText" "Select Playlist" + "font" "TitleBoldFont" + "allcaps" "1" + "fgcolor_override" "200 200 200 255" + + "pin_to_sibling" "PlaylistButton1" + "pin_corner_to_sibling" "BOTTOM" + "pin_to_sibling_corner" "TOP" + } + + //Map Slider + "MapListSliderBG" + { + "ControlName" "ImagePanel" + wide 32 + tall 335 + xpos 10 + ypos -45 + zpos 0 + "fillColor" "195 29 38 150" + scaleImage 1 + "visible" "0" + + pin_to_sibling MapButton2 + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner TOP_RIGHT + } + + BtnMapListSlider + { + ControlName RuiButton + InheritProperties RuiSmallButton + //labelText "V" + wide 30 + tall 290 + xpos 10 + ypos -45 + zpos 0 + + image "vgui/hud/white" + drawColor "255 255 255 255" + + pin_to_sibling MapButton2 + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner TOP_RIGHT + } + + BtnMapListSliderPanel + { + ControlName RuiPanel + wide 30 + tall 290 + xpos 10 + ypos -45 + zpos 100 + + rui "ui/control_options_description.rpak" + + visible 1 + zpos -1 + + pin_to_sibling MapButton2 + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner TOP_RIGHT + } + + // sh_menu_models.gnut has a global function which gets called when + // left mouse button gets called while hovering and has mouse + // deltaX; deltaY which we can yoink for ourselfes + MapMouseMovementCapture + { + ControlName CMouseMovementCapturePanel + wide 30 + tall 290 + xpos 10 + ypos -45 + zpos 100 + + pin_to_sibling MapButton2 + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner TOP_RIGHT + } + + BtnMapListUpArrow + { + ControlName RuiButton + InheritProperties RuiSmallButton + //labelText "A" + wide 30 + tall 45 + xpos 0 + ypos 0 + zpos 5 + + image "vgui/hud/white" + drawColor "255 255 255 128" + + pin_to_sibling MapListSliderBG + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + BtnMapListUpArrowPanel + { + ControlName RuiPanel + wide 30 + tall 45 + xpos 0 + ypos 0 + + rui "ui/control_options_description.rpak" + + visible 1 + zpos 4 + + pin_to_sibling MapListSliderBG + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + BtnMapListDownArrow + { + ControlName RuiButton + InheritProperties RuiSmallButton + //labelText "A" + wide 30 + tall 45 + xpos 0 + ypos 0 + zpos 5 + + image "vgui/hud/white" + drawColor "255 255 255 128" + + pin_to_sibling MapListSliderBG + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner BOTTOM_LEFT + } + + BtnMapListDownArrowPanel + { + ControlName RuiPanel + wide 30 + tall 45 + xpos 0 + ypos 0 + + rui "ui/control_options_description.rpak" + + visible 1 + zpos 4 + + pin_to_sibling MapListSliderBG + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner BOTTOM_LEFT + } + + //Playlist Slider + "PlaylistListSliderBG" + { + "ControlName" "ImagePanel" + wide 32 + tall 335 + xpos 10 + ypos -45 + zpos 0 + "fillColor" "195 29 38 150" + scaleImage 1 + "visible" "0" + + pin_to_sibling PlaylistButton2 + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner TOP_RIGHT + } + + PlaylistMapListSlider + { + ControlName RuiButton + InheritProperties RuiSmallButton + //labelText "V" + wide 30 + tall 290 + xpos 10 + ypos -45 + zpos 0 + + image "vgui/hud/white" + drawColor "255 255 255 255" + + pin_to_sibling PlaylistButton2 + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner TOP_RIGHT + } + + PlaylistMapListSliderPanel + { + ControlName RuiPanel + wide 30 + tall 290 + xpos 10 + ypos -45 + zpos 100 + + rui "ui/control_options_description.rpak" + + visible 1 + zpos -1 + + pin_to_sibling PlaylistButton2 + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner TOP_RIGHT + } + + // sh_menu_models.gnut has a global function which gets called when + // left mouse button gets called while hovering and has mouse + // deltaX; deltaY which we can yoink for ourselfes + PlaylistMouseMovementCapture + { + ControlName CMouseMovementCapturePanel + wide 30 + tall 290 + xpos 10 + ypos -45 + zpos 100 + + pin_to_sibling PlaylistButton2 + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner TOP_RIGHT + } + + BtnPlaylistListUpArrow + { + ControlName RuiButton + InheritProperties RuiSmallButton + //labelText "A" + wide 30 + tall 45 + xpos 0 + ypos 0 + zpos 5 + + image "vgui/hud/white" + drawColor "255 255 255 128" + + pin_to_sibling PlaylistListSliderBG + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + BtnPlaylistListUpArrowPanel + { + ControlName RuiPanel + wide 30 + tall 45 + xpos 0 + ypos 0 + + rui "ui/control_options_description.rpak" + + visible 1 + zpos 4 + + pin_to_sibling PlaylistListSliderBG + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + BtnPlaylistListDownArrow + { + ControlName RuiButton + InheritProperties RuiSmallButton + //labelText "A" + wide 30 + tall 45 + xpos 0 + ypos 0 + zpos 5 + + image "vgui/hud/white" + drawColor "255 255 255 128" + + pin_to_sibling PlaylistListSliderBG + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner BOTTOM_LEFT + } + + BtnPlaylistListDownArrowPanel + { + ControlName RuiPanel + wide 30 + tall 45 + xpos 0 + ypos 0 + + rui "ui/control_options_description.rpak" + + visible 1 + zpos 4 + + pin_to_sibling PlaylistListSliderBG + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner BOTTOM_LEFT + } + } +} diff --git a/resource/ui/menus/CustomLobby/customize_character.menu b/resource/ui/menus/CustomLobby/customize_character.menu new file mode 100644 index 000000000..3b1110139 --- /dev/null +++ b/resource/ui/menus/CustomLobby/customize_character.menu @@ -0,0 +1,257 @@ +resource/ui/menus/customize_character.menu +{ + menu + { + ControlName Frame + xpos 0 + ypos 0 + zpos 3 + wide f0 + tall f0 + autoResize 0 + pinCorner 0 + visible 1 + enabled 1 + PaintBackgroundType 0 + infocus_bgcolor_override "0 0 0 0" + outoffocus_bgcolor_override "0 0 0 0" + + ScreenFrame + { + ControlName Label + xpos 0 + ypos 0 + wide %100 + tall %100 + labelText "" + //visible 1 + //bgcolor_override "255 255 0 100" + //paintbackground 1 + } + + Vignette + { + ControlName ImagePanel + InheritProperties MenuVignette + } + + ScreenBlur + { + ControlName Label + labelText "" + } + + Title + { + ControlName RuiPanel + ypos -48 + wide 912 + tall 65 + visible 1 + rui "ui/menu_title.rpak" + + pin_to_sibling ScreenFrame + pin_corner_to_sibling TOP + pin_to_sibling_corner TOP + } + + TabsCommon + { + ControlName CNestedPanel + classname "TabsCommonClass" + ypos -132 + zpos 1 + wide f0 + tall 44 + visible 1 + controlSettingsFile "resource/ui/menus/panels/tabs_character_customize.res" + + pin_to_sibling ScreenFrame + pin_corner_to_sibling TOP + pin_to_sibling_corner TOP + } + + Decoration + { + ControlName RuiPanel + wide f0 + tall f0 + rui "ui/customize_character_menu_decoration.rpak" + } + + Logo + { + ControlName RuiPanel + InheritProperties Logo + + pin_to_sibling ScreenFrame + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner TOP_LEFT + } +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + CharacterSkinsPanel + { + ControlName CNestedPanel + classname "TabPanelClass" + wide 1728 + tall 820 + visible 0 + tabPosition 1 + controlSettingsFile "resource/ui/menus/panels/character_skins.res" + + pin_to_sibling TabsCommon + pin_corner_to_sibling TOP + pin_to_sibling_corner BOTTOM + } + + CharacterCardsPanel + { + ControlName CNestedPanel + classname "TabPanelClass" + wide 1728 + tall 820 + visible 0 + tabPosition 1 + controlSettingsFile "resource/ui/menus/panels/character_banners.res" + + pin_to_sibling TabsCommon + pin_corner_to_sibling TOP + pin_to_sibling_corner BOTTOM + } + + CharacterCardsPanelV2 + { + ControlName CNestedPanel + classname "TabPanelClass" + wide 1728 + tall 820 + visible 0 + tabPosition 1 + controlSettingsFile "resource/ui/menus/panels/character_banners_v2.res" + + pin_to_sibling TabsCommon + pin_corner_to_sibling TOP + pin_to_sibling_corner BOTTOM + } + + CharacterQuipsPanel + { + ControlName CNestedPanel + classname "TabPanelClass" + wide 1728 + tall 820 + visible 0 + tabPosition 1 + controlSettingsFile "resource/ui/menus/panels/character_quips.res" + + pin_to_sibling TabsCommon + pin_corner_to_sibling TOP + pin_to_sibling_corner BOTTOM + } + + CharacterEmotesPanel + { + ControlName CNestedPanel + classname "TabPanelClass" + wide 1728 + tall 820 + visible 0 + tabPosition 1 + controlSettingsFile "resource/ui/menus/panels/character_emotes.res" + + pin_to_sibling TabsCommon + pin_corner_to_sibling TOP + pin_to_sibling_corner BOTTOM + } + + CharacterExecutionsPanel + { + ControlName CNestedPanel + classname "TabPanelClass" + wide 1728 + tall 820 + visible 0 + tabPosition 1 + controlSettingsFile "resource/ui/menus/panels/character_executions.res" + + pin_to_sibling TabsCommon + pin_corner_to_sibling TOP + pin_to_sibling_corner BOTTOM + } + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + PrevButton + { + ControlName RuiButton + wide 100 + tall %100 + rui "ui/switch_button.rpak" + labelText "" + visible 0 //1 + cursorVelocityModifier 0.7 + + proportionalToParent 1 + + pin_to_sibling Vignette + pin_corner_to_sibling LEFT + pin_to_sibling_corner LEFT + } + + NextButton + { + ControlName RuiButton + wide 100 + tall %100 + rui "ui/switch_button.rpak" + labelText "" + visible 0 //1 + cursorVelocityModifier 0.7 + + proportionalToParent 1 + + pin_to_sibling Vignette + pin_corner_to_sibling RIGHT + pin_to_sibling_corner RIGHT + } + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + MatchmakingStatus + { + ControlName RuiPanel + InheritProperties MatchmakingStatus + + pin_to_sibling ScreenFrame + pin_corner_to_sibling BOTTOM + pin_to_sibling_corner BOTTOM + } + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + ToolTip + { + ControlName RuiPanel + InheritProperties ToolTip + } + + FooterButtons + { + ControlName CNestedPanel + InheritProperties FooterButtons + } + +// Guide // TEMP +// { +// ControlName RuiPanel +// zpos 10 +// wide %100 +// tall %100 +// visible 1 +// enabled 1 +// proportionalToParent 1 +// rui "ui/guide.rpak" +// } + } +} diff --git a/resource/ui/menus/CustomLobby/customize_weapon.menu b/resource/ui/menus/CustomLobby/customize_weapon.menu new file mode 100644 index 000000000..bc83f552c --- /dev/null +++ b/resource/ui/menus/CustomLobby/customize_weapon.menu @@ -0,0 +1,201 @@ +resource/ui/menus/customize_weapon.menu +{ + menu + { + ControlName Frame + xpos 0 + ypos 0 + zpos 3 + wide f0 + tall f0 + autoResize 0 + pinCorner 0 + visible 1 + enabled 1 + PaintBackgroundType 0 + infocus_bgcolor_override "0 0 0 0" + outoffocus_bgcolor_override "0 0 0 0" + + ScreenFrame + { + ControlName Label + xpos 0 + ypos 0 + wide %100 + tall %100 + labelText "" + //visible 1 + //bgcolor_override "255 255 0 100" + //paintbackground 1 + } + + Vignette + { + ControlName ImagePanel + InheritProperties MenuVignette + } + + ScreenBlur + { + ControlName Label + labelText "" + } + + TabsCommon + { + ControlName CNestedPanel + classname "TabsCommonClass" + ypos -132 + zpos 1 + wide f0 + tall 44 + visible 1 + controlSettingsFile "resource/ui/menus/panels/tabs_weapon_customize.res" + + pin_to_sibling ScreenFrame + pin_corner_to_sibling TOP + pin_to_sibling_corner TOP + } + + Decoration + { + ControlName RuiPanel + wide f0 + tall f0 + rui "ui/customize_character_menu_decoration.rpak" + } + + Logo + { + ControlName RuiPanel + InheritProperties Logo + + pin_to_sibling ScreenFrame + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Title + { + ControlName RuiPanel + ypos -48 + wide 912 + tall 65 + visible 1 + rui "ui/menu_title.rpak" + + pin_to_sibling ScreenFrame + pin_corner_to_sibling TOP + pin_to_sibling_corner TOP + } + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + WeaponSkinsPanel0 + { + ControlName CNestedPanel + classname "TabPanelClass" + wide 1824 + tall 814 + visible 0 + tabPosition 1 + controlSettingsFile "resource/ui/menus/panels/weapon_skins.res" + + pin_to_sibling TabsCommon + pin_corner_to_sibling TOP + pin_to_sibling_corner BOTTOM + } + + WeaponSkinsPanel1 + { + ControlName CNestedPanel + classname "TabPanelClass" + wide 1824 + tall 814 + visible 0 + tabPosition 1 + controlSettingsFile "resource/ui/menus/panels/weapon_skins.res" + + pin_to_sibling TabsCommon + pin_corner_to_sibling TOP + pin_to_sibling_corner BOTTOM + } + + WeaponSkinsPanel2 + { + ControlName CNestedPanel + classname "TabPanelClass" + wide 1824 + tall 814 + visible 0 + tabPosition 1 + controlSettingsFile "resource/ui/menus/panels/weapon_skins.res" + + pin_to_sibling TabsCommon + pin_corner_to_sibling TOP + pin_to_sibling_corner BOTTOM + } + + WeaponSkinsPanel3 + { + ControlName CNestedPanel + classname "TabPanelClass" + wide 1824 + tall 814 + visible 0 + tabPosition 1 + controlSettingsFile "resource/ui/menus/panels/weapon_skins.res" + + pin_to_sibling TabsCommon + pin_corner_to_sibling TOP + pin_to_sibling_corner BOTTOM + } + + WeaponSkinsPanel4 + { + ControlName CNestedPanel + classname "TabPanelClass" + wide 1824 + tall 814 + visible 0 + tabPosition 1 + controlSettingsFile "resource/ui/menus/panels/weapon_skins.res" + + pin_to_sibling TabsCommon + pin_corner_to_sibling TOP + pin_to_sibling_corner BOTTOM + } + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + MatchmakingStatus + { + ControlName RuiPanel + InheritProperties MatchmakingStatus + + pin_to_sibling ScreenFrame + pin_corner_to_sibling BOTTOM + pin_to_sibling_corner BOTTOM + } + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + ToolTip + { + ControlName RuiPanel + InheritProperties ToolTip + } + + ButtonTooltip + { + ControlName CNestedPanel + InheritProperties ButtonTooltip + } + + FooterButtons + { + ControlName CNestedPanel + InheritProperties FooterButtons + } + } +} diff --git a/resource/ui/menus/CustomLobby/gamemode_select.res b/resource/ui/menus/CustomLobby/gamemode_select.res new file mode 100644 index 000000000..c5b497786 --- /dev/null +++ b/resource/ui/menus/CustomLobby/gamemode_select.res @@ -0,0 +1,723 @@ +resource/ui/menus/dialog_gamemode_select_v2.menu +{ + menu + { + ControlName Frame + xpos 0 + ypos 0 + zpos 3 + wide f0 + tall f0 + autoResize 0 + pinCorner 0 + visible 1 + enabled 1 + tabPosition 1 + PaintBackgroundType 0 + infocus_bgcolor_override "0 0 0 0" + outoffocus_bgcolor_override "0 0 0 0" + modal 1 + + ScreenBlur + { + ControlName Label + labelText "" + } + + ScreenFrame + { + ControlName RuiPanel + xpos 0 + ypos 0 + wide %100 + tall %100 + visible 1 + enabled 1 + scaleImage 1 + rui "ui/screen_blur.rpak" + drawColor "255 255 255 255" + } + + "MainButtonsFrame" + { + "ControlName" "ImagePanel" + "wide" "f0" + "tall" "83" + "visible" "1" + "scaleImage" "1" + "zpos" "0" + "fillColor" "30 30 30 200" + "drawColor" "30 30 30 200" + + "pin_to_sibling" "ScreenFrame" + "pin_corner_to_sibling" "TOP" + "pin_to_sibling_corner" "TOP" + } + + "GamemodesBtn" + { + "ControlName" "RuiButton" + "InheritProperties" "TabButtonSettings" + "classname" "TopButtons" + "zpos" "3" + "xpos" "0" + + ruiArgs + { + isSelected 1 + buttonText "Quick Play" + } + + "pin_to_sibling" "MainButtonsFrame" + "pin_corner_to_sibling" "CENTER" + "pin_to_sibling_corner" "CENTER" + } + + Cover + { + ControlName ImagePanel + xpos 0 + ypos 0 + wide %200 + tall %200 + visible 1 + enabled 1 + scaleImage 1 + image "vgui/HUD/white" + drawColor "0 0 0 200" + + pin_to_sibling ScreenFrame + pin_corner_to_sibling CENTER + pin_to_sibling_corner CENTER + } + + PrevPageButton + { + ControlName RuiButton + wide 960 + tall 560 + rui "ui/promo_page_change_button.rpak" + labelText "" + visible 1 + proportionalToParent 1 + xpos 50 + ypos 100 + sound_accept "UI_Menu_MOTD_Tab" + zpos 1 + + pin_to_sibling ScreenFrame + pin_corner_to_sibling LEFT + pin_to_sibling_corner LEFT + } + + NextPageButton + { + ControlName RuiButton + wide 960 + tall 560 + rui "ui/promo_page_change_button.rpak" + labelText "" + visible 1 + proportionalToParent 1 + xpos 50 + ypos 100 + sound_accept "UI_Menu_MOTD_Tab" + zpos 1 + + pin_to_sibling ScreenFrame + pin_corner_to_sibling RIGHT + pin_to_sibling_corner RIGHT + } + + CloseButton + { + ControlName BaseModHybridButton + xpos 0 + ypos 0 + wide %100 + tall %100 + labelText "" + visible 1 + sound_accept "UI_Menu_SelectMode_Close" + } + + "QuickPlayText" + { + "ControlName" "Label" + "xpos" "0" + "ypos" "10" + "auto_wide_tocontents" "1" + "tall" "30" + "visible" "1" + "wrap" "0" + "fontHeight" "30" + "zpos" "5" + "textAlignment" "north-west" + "labelText" "Quick Play" + "font" "TitleBoldFont" + "allcaps" "1" + "fgcolor_override" "200 200 200 255" + + "pin_to_sibling" "FiringRangeButton" + "pin_corner_to_sibling" "BOTTOM" + "pin_to_sibling_corner" "TOP_RIGHT" + } + + FiringRangeButton + { + ControlName RuiButton + classname "MenuButton" + wide 280 + tall 120 + ypos -150 + xpos -120 + zpos 10 + rui "ui/gamemode_select_v2_lobby_button.rpak" + labelText "" + visible 1 + tabPosition 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_GameMode_Select" + + ruiArgs + { + lockIconEnabled 0 + modeNameText "Firing Range" + modeDescText "Run around in the custom Firing Range" + modeImage "rui/menu/gamemode/firing_range" + } + + pin_to_sibling ScreenFrame + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner TOP_LEFT + } + + FreeRoamButton + { + ControlName RuiButton + classname "MenuButton" + wide 280 + tall 120 + ypos 0 + xpos 10 + zpos 10 + rui "ui/gamemode_select_v2_lobby_button.rpak" + labelText "" + visible 1 + tabPosition 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_MOTD_Tab" + + ruiArgs + { + lockIconEnabled 0 + modeNameText "Free Roam" + modeDescText "Run around any map" + modeImage "rui/menu/maps/mp_rr_desertlands_64k_x_64k" + } + + pin_to_sibling FiringRangeButton + pin_corner_to_sibling LEFT + pin_to_sibling_corner RIGHT + } + + "TopServersText" + { + "ControlName" "Label" + "xpos" "0" + "ypos" "10" + "auto_wide_tocontents" "1" + "tall" "30" + "visible" "1" + "wrap" "0" + "fontHeight" "30" + "zpos" "5" + "textAlignment" "north-west" + "labelText" "Top Servers" + "font" "TitleBoldFont" + "allcaps" "1" + "fgcolor_override" "200 200 200 255" + + "pin_to_sibling" "TopServerButton1" + "pin_corner_to_sibling" "BOTTOM" + "pin_to_sibling_corner" "TOP" + } + + TopServerButton0 + { + ControlName RuiButton + classname "TopServerButtons" + wide 260 + tall 120 + ypos -150 + xpos -120 + zpos 10 + rui "ui/gamemode_select_v2_lobby_button.rpak" + labelText "" + visible 1 + tabPosition 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_GameMode_Select" + "scriptID" "2" + + ruiArgs + { + lockIconEnabled 0 + } + + pin_to_sibling ScreenFrame + pin_corner_to_sibling TOP_RIGHT + pin_to_sibling_corner TOP_RIGHT + } + + TopServerButton1 + { + ControlName RuiButton + classname "TopServerButtons" + wide 260 + tall 120 + ypos 0 + xpos 10 + zpos 10 + rui "ui/gamemode_select_v2_lobby_button.rpak" + labelText "" + visible 1 + tabPosition 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_GameMode_Select" + "scriptID" "1" + + ruiArgs + { + lockIconEnabled 0 + } + + pin_to_sibling TopServerButton0 + pin_corner_to_sibling RIGHT + pin_to_sibling_corner LEFT + } + + TopServerButton2 + { + ControlName RuiButton + classname "TopServerButtons" + wide 260 + tall 120 + ypos 0 + xpos 10 + zpos 10 + rui "ui/gamemode_select_v2_lobby_button.rpak" + labelText "" + visible 1 + tabPosition 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_GameMode_Select" + "scriptID" "0" + + ruiArgs + { + lockIconEnabled 0 + } + + pin_to_sibling TopServerButton1 + pin_corner_to_sibling RIGHT + pin_to_sibling_corner LEFT + } + + GameModeSelectAnchor + { + ControlName Label + labelText "" + + wide 0 + tall 0 + xpos 0 + ypos 0 + + pin_to_sibling ScreenFrame + pin_corner_to_sibling CENTER + pin_to_sibling_corner CENTER + } + + "TitleText" + { + "ControlName" "Label" + "xpos" "0" + "ypos" "-215" + "auto_wide_tocontents" "1" + "tall" "30" + "visible" "1" + "wrap" "0" + "fontHeight" "30" + "zpos" "5" + "textAlignment" "north-west" + "labelText" "Quick Join" + "font" "TitleBoldFont" + "allcaps" "1" + "fgcolor_override" "200 200 200 255" + + "pin_to_sibling" "GameModeSelectAnchor" + "pin_corner_to_sibling" "CENTER" + "pin_to_sibling_corner" "CENTER" + } + + GameModeButton0 + { + ControlName RuiButton + classname "GamemodeButtons" + wide 325 + tall 560 + ypos 100 + xpos -675 + zpos 10 + rui "ui/gamemode_select_v2_button.rpak" + labelText "" + visible 1 + tabPosition 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_GameMode_Select" + "scriptID" "0" + + ruiArgs + { + lockIconEnabled 0 + modeNameText "Random Playlist" + modeDescText "Quickly Join any kind of server" + modeImage "rui/menu/gamemode/ranked_1" + } + + + navRight GameModeButton1 + + pin_to_sibling GameModeSelectAnchor + pin_corner_to_sibling CENTER + pin_to_sibling_corner CENTER + } + + + GameModeButton1 + { + ControlName RuiButton + classname "GamemodeButtons" + wide 325 + tall 560 + xpos 15 + zpos 10 + rui "ui/gamemode_select_v2_button.rpak" + labelText "" + visible 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_GameMode_Select" + "scriptID" "1" + + navLeft GameModeButton0 + navRight GameModeButton2 + + pin_to_sibling GameModeButton0 + pin_corner_to_sibling LEFT + pin_to_sibling_corner RIGHT + } + + + GameModeButton2 + { + ControlName RuiButton + classname "GamemodeButtons" + wide 325 + tall 560 + xpos 15 + zpos 10 + rui "ui/gamemode_select_v2_button.rpak" + labelText "" + visible 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_GameMode_Select" + "scriptID" "2" + + navLeft GameModeButton1 + navRight GameModeButton3 + + pin_to_sibling GameModeButton1 + pin_corner_to_sibling LEFT + pin_to_sibling_corner RIGHT + } + + + GameModeButton3 + { + ControlName RuiButton + classname "GamemodeButtons" + wide 325 + tall 560 + xpos 15 + zpos 10 + rui "ui/gamemode_select_v2_button.rpak" + labelText "" + visible 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_GameMode_Select" + "scriptID" "3" + + navLeft GameModeButton2 + navRight GameModeButton4 + + pin_to_sibling GameModeButton2 + pin_corner_to_sibling LEFT + pin_to_sibling_corner RIGHT + } + + + GameModeButton4 + { + ControlName RuiButton + classname "GamemodeButtons" + wide 325 + tall 560 + xpos 15 + zpos 10 + rui "ui/gamemode_select_v2_button.rpak" + labelText "" + visible 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_GameMode_Select" + "scriptID" "4" + + navLeft GameModeButton3 + + pin_to_sibling GameModeButton3 + pin_corner_to_sibling LEFT + pin_to_sibling_corner RIGHT + } + + FooterButtons + { + ControlName CNestedPanel + InheritProperties FooterButtons + } + + FreeRoamPanel + { + "ControlName" "ImagePanel" + classname "FreeRoamUI" + "wide" "300" + "tall" "780" + "xpos" "10" + "visible" "1" + "scaleImage" "1" + "zpos" "100" + "fillColor" "30 30 30 255" + "drawColor" "30 30 30 255" + + "pin_to_sibling" "FreeRoamButton" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "TOP_RIGHT" + } + + "FreeRoamText" + { + "ControlName" "Label" + classname "FreeRoamUI" + "xpos" "0" + "ypos" "10" + "auto_wide_tocontents" "1" + "tall" "30" + "visible" "1" + "wrap" "0" + "fontHeight" "30" + "zpos" "5" + "textAlignment" "north-west" + "labelText" "Select Map" + "font" "TitleBoldFont" + "allcaps" "1" + "fgcolor_override" "200 200 200 255" + + pin_to_sibling FreeRoamPanel + pin_corner_to_sibling BOTTOM + pin_to_sibling_corner TOP + } + + FreeRoamButton0 + { + ControlName RuiButton + classname "FreeRoamUI" + wide 280 + tall 120 + ypos -5 + xpos 0 + zpos 105 + rui "ui/gamemode_select_v2_lobby_button.rpak" + labelText "" + visible 1 + tabPosition 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_GameMode_Select" + "scriptID" "0" + + ruiArgs + { + lockIconEnabled 0 + } + + pin_to_sibling FreeRoamPanel + pin_corner_to_sibling TOP + pin_to_sibling_corner TOP + } + + FreeRoamButton1 + { + ControlName RuiButton + classname "FreeRoamUI" + wide 280 + tall 120 + ypos 5 + xpos 0 + zpos 105 + rui "ui/gamemode_select_v2_lobby_button.rpak" + labelText "" + visible 1 + tabPosition 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_GameMode_Select" + "scriptID" "1" + + ruiArgs + { + lockIconEnabled 0 + } + + pin_to_sibling FreeRoamButton0 + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner BOTTOM_LEFT + } + + FreeRoamButton2 + { + ControlName RuiButton + classname "FreeRoamUI" + wide 280 + tall 120 + ypos 5 + xpos 0 + zpos 105 + rui "ui/gamemode_select_v2_lobby_button.rpak" + labelText "" + visible 1 + tabPosition 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_GameMode_Select" + "scriptID" "2" + + ruiArgs + { + lockIconEnabled 0 + } + + pin_to_sibling FreeRoamButton1 + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner BOTTOM_LEFT + } + + FreeRoamButton3 + { + ControlName RuiButton + classname "FreeRoamUI" + wide 280 + tall 120 + ypos 5 + xpos 0 + zpos 105 + rui "ui/gamemode_select_v2_lobby_button.rpak" + labelText "" + visible 1 + tabPosition 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_GameMode_Select" + "scriptID" "3" + + ruiArgs + { + lockIconEnabled 0 + } + + pin_to_sibling FreeRoamButton2 + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner BOTTOM_LEFT + } + + FreeRoamButton4 + { + ControlName RuiButton + classname "FreeRoamUI" + wide 280 + tall 120 + ypos 5 + xpos 0 + zpos 105 + rui "ui/gamemode_select_v2_lobby_button.rpak" + labelText "" + visible 1 + tabPosition 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_GameMode_Select" + "scriptID" "4" + + ruiArgs + { + lockIconEnabled 0 + } + + pin_to_sibling FreeRoamButton3 + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner BOTTOM_LEFT + } + + FreeRoamButton5 + { + ControlName RuiButton + classname "FreeRoamUI" + wide 280 + tall 120 + ypos 5 + xpos 0 + zpos 105 + rui "ui/gamemode_select_v2_lobby_button.rpak" + labelText "" + visible 1 + tabPosition 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_GameMode_Select" + "scriptID" "5" + + ruiArgs + { + lockIconEnabled 0 + } + + pin_to_sibling FreeRoamButton4 + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner BOTTOM_LEFT + } + + MouseWheelText + { + "ControlName" "Label" + classname "FreeRoamUI" + "xpos" "0" + "ypos" "10" + "auto_wide_tocontents" "1" + "tall" "20" + "visible" "1" + "wrap" "0" + "fontHeight" "20" + "zpos" "150" + "labelText" "%weaponcycle% NEXT/PREV" + "font" "TitleBoldFont" + "allcaps" "1" + "fgcolor_override" "255 255 255 255" + + pin_to_sibling FreeRoamButton5 + pin_corner_to_sibling TOP + pin_to_sibling_corner BOTTOM + } + } +} diff --git a/resource/ui/menus/R5R/lobbymenu.res b/resource/ui/menus/CustomLobby/lobbymenu.res similarity index 68% rename from resource/ui/menus/R5R/lobbymenu.res rename to resource/ui/menus/CustomLobby/lobbymenu.res index fef21c65b..37780c479 100644 --- a/resource/ui/menus/R5R/lobbymenu.res +++ b/resource/ui/menus/CustomLobby/lobbymenu.res @@ -1,4 +1,4 @@ -"scripts/resource/ui/menus/R5R/lobbymenu.menu" +"scripts/resource/ui/menus/CustomLobby/lobbymenu.menu" { menu { @@ -84,7 +84,7 @@ "ypos" "0" "auto_wide_tocontents" "1" "tall" "40" - "visible" "1" + "visible" "0" "fontHeight" "50" "labelText" "R5Reloaded" "font" "DefaultBold_41" @@ -96,47 +96,35 @@ "pin_to_sibling_corner" "LEFT" } - "HomeBtn" + "NabButton0" { "ControlName" "RuiButton" "InheritProperties" "TabButtonSettings" "classname" "TopButtons" "zpos" "3" - "xpos" "-1200" + "xpos" "-500" // from -400 with ModsBtn visible "scriptID" "0" - ruiArgs - { - isSelected 1 - buttonText "Home" - } - "pin_to_sibling" "MainButtonsFrame" - "pin_corner_to_sibling" "RIGHT" - "pin_to_sibling_corner" "RIGHT" + "pin_corner_to_sibling" "CENTER" + "pin_to_sibling_corner" "CENTER" } - "CreateServerBtn" + "NabButton1" { "ControlName" "RuiButton" "InheritProperties" "TabButtonSettings" "classname" "TopButtons" "zpos" "3" - "xpos" "-80" + "xpos" "-80" // from -400 with ModsBtn visible "scriptID" "1" - ruiArgs - { - isSelected 0 - buttonText "Create Server" - } - - "pin_to_sibling" "HomeBtn" + "pin_to_sibling" "NabButton0" "pin_corner_to_sibling" "BOTTOM_LEFT" "pin_to_sibling_corner" "BOTTOM_RIGHT" } - "ServerBrowserBtn" + "NabButton2" { "ControlName" "RuiButton" "InheritProperties" "TabButtonSettings" @@ -145,61 +133,76 @@ "xpos" "-80" "scriptID" "2" - ruiArgs - { - isSelected 0 - buttonText "Server Browser" - } + "pin_to_sibling" "NabButton1" + "pin_corner_to_sibling" "BOTTOM_LEFT" + "pin_to_sibling_corner" "BOTTOM_RIGHT" + } - "pin_to_sibling" "CreateServerBtn" + "NabButton3" + { + "ControlName" "RuiButton" + "InheritProperties" "TabButtonSettings" + "classname" "TopButtons" + "zpos" "3" + "xpos" "-80" + "scriptID" "3" + + "pin_to_sibling" "NabButton2" "pin_corner_to_sibling" "BOTTOM_LEFT" "pin_to_sibling_corner" "BOTTOM_RIGHT" } - "SettingsBtn" + "NabButton4" { "ControlName" "RuiButton" "InheritProperties" "TabButtonSettings" + "classname" "TopButtons" "zpos" "3" "xpos" "-80" - - ruiArgs - { - isSelected 0 - buttonText "Settings" - } - - "pin_to_sibling" "ServerBrowserBtn" + "scriptID" "4" + + "pin_to_sibling" "NabButton3" "pin_corner_to_sibling" "BOTTOM_LEFT" "pin_to_sibling_corner" "BOTTOM_RIGHT" } - "QuitBtn" + "NabButton5" { "ControlName" "RuiButton" "InheritProperties" "TabButtonSettings" + "classname" "TopButtons" "zpos" "3" "xpos" "-80" - - ruiArgs - { - isSelected 0 - buttonText "Quit" - } - - "pin_to_sibling" "SettingsBtn" + "scriptID" "5" + + "pin_to_sibling" "NabButton4" "pin_corner_to_sibling" "BOTTOM_LEFT" "pin_to_sibling_corner" "BOTTOM_RIGHT" } - "R5RHomePanel" + "HomePanel" + { + "ControlName" "CNestedPanel" + "ypos" "20" + "wide" "f0" + "tall" "1200" + "visible" "0" + "controlSettingsFile" "scripts/resource/ui/menus/CustomLobby/panels/home.res" + "proportionalToParent" "1" + + "pin_to_sibling" "MainButtonsFrame" + "pin_corner_to_sibling" "TOP" + "pin_to_sibling_corner" "BOTTOM" + } + + "CreatePanel" { "ControlName" "CNestedPanel" "ypos" "20" "wide" "f0" - "tall" "940" + "tall" "1200" "visible" "0" - "controlSettingsFile" "scripts/resource/ui/menus/R5R/panels/home.res" + "controlSettingsFile" "scripts/resource/ui/menus/CustomLobby/panels/create_match.res" "proportionalToParent" "1" "pin_to_sibling" "MainButtonsFrame" @@ -207,14 +210,14 @@ "pin_to_sibling_corner" "BOTTOM" } - "R5RCreateServerPanel" + "ServerBrowserPanel" { "ControlName" "CNestedPanel" "ypos" "20" "wide" "f0" - "tall" "960" + "tall" "1200" "visible" "0" - "controlSettingsFile" "scripts/resource/ui/menus/R5R/panels/createserver.res" + "controlSettingsFile" "scripts/resource/ui/menus/CustomLobby/panels/serverbrowser.res" "proportionalToParent" "1" "pin_to_sibling" "MainButtonsFrame" @@ -222,14 +225,14 @@ "pin_to_sibling_corner" "BOTTOM" } - "R5RServerBrowserPanel" + "LegendsPanel" { "ControlName" "CNestedPanel" "ypos" "20" "wide" "f0" - "tall" "960" + "tall" "1200" "visible" "0" - "controlSettingsFile" "scripts/resource/ui/menus/R5R/panels/serverbrowser.res" + "controlSettingsFile" "scripts/resource/ui/menus/CustomLobby/panels/characters.res" "proportionalToParent" "1" "pin_to_sibling" "MainButtonsFrame" @@ -237,14 +240,14 @@ "pin_to_sibling_corner" "BOTTOM" } - "R5RPrivateMatchPanel" + "LoadoutPanel" { "ControlName" "CNestedPanel" "ypos" "20" "wide" "f0" - "tall" "960" + "tall" "1200" "visible" "0" - "controlSettingsFile" "scripts/resource/ui/menus/R5R/privatematch.res" + "controlSettingsFile" "scripts/resource/ui/menus/CustomLobby/panels/loadout.res" "proportionalToParent" "1" "pin_to_sibling" "MainButtonsFrame" @@ -255,12 +258,13 @@ "R5RNamePanel" { "ControlName" "CNestedPanel" + "classname" "CustomPrivateMatchMenu" "ypos" "0" "zpos" "45" "wide" "f0" "tall" "f0" "visible" "0" - "controlSettingsFile" "scripts/resource/ui/menus/R5R/panels/servername.res" + "controlSettingsFile" "scripts/resource/ui/menus/CustomLobby/panels/servername.res" "proportionalToParent" "1" "zpos" "10" } @@ -268,17 +272,18 @@ "R5RDescPanel" { "ControlName" "CNestedPanel" + "classname" "CustomPrivateMatchMenu" "ypos" "0" "zpos" "45" "wide" "f0" "tall" "f0" "visible" "0" - "controlSettingsFile" "scripts/resource/ui/menus/R5R/panels/serverdesc.res" + "controlSettingsFile" "scripts/resource/ui/menus/CustomLobby/panels/serverdesc.res" "proportionalToParent" "1" "zpos" "10" } - "R5RKickPanel" + "R5RConnectingPanel" { "ControlName" "CNestedPanel" "ypos" "0" @@ -286,35 +291,25 @@ "wide" "f0" "tall" "f0" "visible" "0" - "controlSettingsFile" "scripts/resource/ui/menus/R5R/panels/kickplayer.res" + "controlSettingsFile" "scripts/resource/ui/menus/CustomLobby/panels/connecting.res" "proportionalToParent" "1" "zpos" "10" } - "R5RStartingPanel" - { - "ControlName" "CNestedPanel" - "ypos" "0" - "zpos" "45" - "wide" "f0" - "tall" "f0" - "visible" "0" - "controlSettingsFile" "scripts/resource/ui/menus/R5R/panels/matchstarting.res" - "proportionalToParent" "1" - "zpos" "10" - } + MatchmakingStatus + { + ControlName RuiPanel + InheritProperties MatchmakingStatus - "R5RConnectingPanel" + pin_to_sibling DarkenBackground + pin_corner_to_sibling BOTTOM + pin_to_sibling_corner BOTTOM + } + + ToolTip { - "ControlName" "CNestedPanel" - "ypos" "0" - "zpos" "45" - "wide" "f0" - "tall" "f0" - "visible" "0" - "controlSettingsFile" "scripts/resource/ui/menus/R5R/panels/connecting.res" - "proportionalToParent" "1" - "zpos" "10" + ControlName CNestedPanel + InheritProperties ToolTip } } } diff --git a/resource/ui/menus/R5R/main.res b/resource/ui/menus/CustomLobby/main.res similarity index 97% rename from resource/ui/menus/R5R/main.res rename to resource/ui/menus/CustomLobby/main.res index 2815a242a..82cd5e12c 100644 --- a/resource/ui/menus/R5R/main.res +++ b/resource/ui/menus/CustomLobby/main.res @@ -114,7 +114,7 @@ "tall" "%100" "visible" "0" "tabPosition" "1" - "controlSettingsFile" "scripts/resource/ui/menus/R5R/panels/mainmenu.res" + "controlSettingsFile" "scripts/resource/ui/menus/CustomLobby/panels/mainmenu.res" } // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// "FooterButtons" diff --git a/resource/ui/menus/CustomLobby/misc_customize.menu b/resource/ui/menus/CustomLobby/misc_customize.menu new file mode 100644 index 000000000..2f038b259 --- /dev/null +++ b/resource/ui/menus/CustomLobby/misc_customize.menu @@ -0,0 +1,171 @@ +resource/ui/menus/misc_customize.menu +{ + menu + { + ControlName Frame + xpos 0 + ypos 0 + zpos 3 + wide f0 + tall f0 + autoResize 0 + pinCorner 0 + visible 1 + enabled 1 + PaintBackgroundType 0 + infocus_bgcolor_override "0 0 0 0" + outoffocus_bgcolor_override "0 0 0 0" + + ScreenFrame + { + ControlName Label + xpos 0 + ypos 0 + wide %100 + tall %100 + labelText "" + //visible 1 + //bgcolor_override "255 255 0 100" + //paintbackground 1 + } + + Vignette + { + ControlName ImagePanel + InheritProperties MenuVignette + } + + ScreenBlur + { + ControlName Label + labelText "" + } + + TabsCommon + { + ControlName CNestedPanel + classname "TabsCommonClass" + ypos -132 + zpos 1 + wide f0 + tall 44 + visible 1 + controlSettingsFile "resource/ui/menus/panels/tabs_weapon_customize.res" + + pin_to_sibling ScreenFrame + pin_corner_to_sibling TOP + pin_to_sibling_corner TOP + } + + Decoration + { + ControlName RuiPanel + wide f0 + tall f0 + rui "ui/customize_character_menu_decoration.rpak" + } + + Logo + { + ControlName RuiPanel + InheritProperties Logo + + pin_to_sibling ScreenFrame + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Title + { + ControlName RuiPanel + ypos -48 + wide 912 + tall 65 + visible 1 + rui "ui/menu_title.rpak" + + pin_to_sibling ScreenFrame + pin_corner_to_sibling TOP + pin_to_sibling_corner TOP + } + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + LoadscreenPanel + { + ControlName CNestedPanel + classname "TabPanelClass" + wide 1728 + tall 820 + visible 0 + tabPosition 1 + controlSettingsFile "resource/ui/menus/panels/loadscreens.res" + + pin_to_sibling TabsCommon + pin_corner_to_sibling TOP + pin_to_sibling_corner BOTTOM + } + + MusicPackPanel + { + ControlName CNestedPanel + classname "TabPanelClass" + wide 1728 + tall 820 + visible 0 + tabPosition 1 + controlSettingsFile "resource/ui/menus/panels/music_packs.res" + + pin_to_sibling TabsCommon + pin_corner_to_sibling TOP + pin_to_sibling_corner BOTTOM + } + + SkydiveTrailPanel + { + ControlName CNestedPanel + classname "TabPanelClass" + wide 1728 + tall 820 + visible 0 + tabPosition 1 + controlSettingsFile "resource/ui/menus/panels/skydive_trail.res" + + pin_to_sibling TabsCommon + pin_corner_to_sibling TOP + pin_to_sibling_corner BOTTOM + } + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + MatchmakingStatus + { + ControlName RuiPanel + InheritProperties MatchmakingStatus + + pin_to_sibling ScreenFrame + pin_corner_to_sibling BOTTOM + pin_to_sibling_corner BOTTOM + } + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + ToolTip + { + ControlName RuiPanel + InheritProperties ToolTip + } + + ButtonTooltip + { + ControlName CNestedPanel + InheritProperties ButtonTooltip + } + + FooterButtons + { + ControlName CNestedPanel + InheritProperties FooterButtons + } + } +} diff --git a/resource/ui/menus/CustomLobby/news.res b/resource/ui/menus/CustomLobby/news.res new file mode 100644 index 000000000..31b11462f --- /dev/null +++ b/resource/ui/menus/CustomLobby/news.res @@ -0,0 +1,360 @@ +resource/ui/menus/dialog.menu +{ + menu + { + ControlName Frame + zpos 3 + wide f0 + tall f0 + autoResize 0 + pinCorner 0 + visible 1 + enabled 1 + tabPosition 0 + PaintBackgroundType 0 + infocus_bgcolor_override "0 0 0 0" + outoffocus_bgcolor_override "0 0 0 0" + modal 1 + disableDpad 1 + + ScreenBlur + { + ControlName RuiPanel + wide %100 + tall %100 + rui "ui/screen_blur.rpak" + visible 1 + } + + DarkenBackground + { + ControlName Label + xpos 0 + ypos 0 + wide %100 + tall %100 + labelText "" + bgcolor_override "0 0 0 150" + visible 1 + paintbackground 1 + } + + "MainButtonsFrame" + { + "ControlName" "ImagePanel" + "wide" "f0" + "tall" "83" + "visible" "1" + "scaleImage" "1" + "zpos" "0" + "fillColor" "30 30 30 200" + "drawColor" "30 30 30 200" + + "pin_to_sibling" "DarkenBackground" + "pin_corner_to_sibling" "TOP" + "pin_to_sibling_corner" "TOP" + } + + "NewsBtn" + { + "ControlName" "RuiButton" + "InheritProperties" "TabButtonSettings" + "classname" "TopButtons" + "zpos" "3" + + ruiArgs + { + isSelected 1 + buttonText "News" + } + + "pin_to_sibling" "MainButtonsFrame" + "pin_corner_to_sibling" "CENTER" + "pin_to_sibling_corner" "CENTER" + } + + MouseWheelText + { + "ControlName" "Label" + "xpos" "0" + "ypos" "-50" + "auto_wide_tocontents" "1" + "tall" "20" + "visible" "1" + "wrap" "0" + "fontHeight" "20" + "zpos" "5" + "labelText" "%weaponcycle% NEXT/PREV" + "font" "TitleBoldFont" + "allcaps" "1" + "fgcolor_override" "255 255 255 255" + + "pin_to_sibling" "DarkenBackground" + "pin_corner_to_sibling" "BOTTOM" + "pin_to_sibling_corner" "BOTTOM" + } + + "DescText" + { + "ControlName" "Label" + "xpos" "-30" + "ypos" "-30" + "wide" "600" + "tall" "190" + "visible" "1" + "wrap" "1" + "fontHeight" "28" + "zpos" "5" + "textAlignment" "north-west" + "labelText" "This project allows you to run APEX Legends with mods, by running the embedded server and loading custom scripts/global compile lists into the scripting VM. This allows you to create custom gamemodes, levels, weapons and more. This project allows you to run APEX Legends with mods, by running the embedded server and loading custom scripts/global compile lists into the scripting VM. This allows you to create custom gamemodes, levels, weapons and more. This project allows you to run APEX Legends with mods, by running the embedded server and loading custom scripts/global compile lists into the scripting VM. This allows you to create custom gamemodes, levels, weapons and more. This project allows you to run APEX Legends with mods, by running the embedded server and loading custom scripts/global compile lists into the scripting VM. This allows you to create custom gamemodes, levels, weapons and more." + "font" "DefaultBold_41" + "allcaps" "0" + "fgcolor_override" "255 255 255 255" + + "pin_to_sibling" "CenterNewsImage" + "pin_corner_to_sibling" "BOTTOM_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "TitleText" + { + "ControlName" "Label" + "xpos" "0" + "ypos" "5" + "wide" "900" + "tall" "50" + "visible" "1" + "wrap" "0" + "fontHeight" "50" + "zpos" "5" + "textAlignment" "north-west" + "labelText" "TEST TITLE. TEST TITLE. TEST TITLE. TEST TITLE. TEST TITLE. TEST TITLE. TEST TITLE. TEST TITLE. TEST TITLE. TEST TITLE. TEST TITLE. TEST TITLE. TEST TITLE. TEST TITLE. TEST TITLE. TEST TITLE. TEST TITLE. TEST TITLE. TEST TITLE. TEST TITLE. " + "font" "TitleBoldFont" + "allcaps" "1" + "fgcolor_override" "255 255 255 255" + + "pin_to_sibling" "DescText" + "pin_corner_to_sibling" "BOTTOM_LEFT" + "pin_to_sibling_corner" "TOP_LEFT" + } + + CenterNewsImage + { + ControlName RuiPanel + wide 1280 + tall 720 + visible 1 + rui "ui/custom_loadscreen_image.rpak" + ypos 20 + zpos 2 + + pin_to_sibling MainButtonsFrame + pin_corner_to_sibling TOP + pin_to_sibling_corner BOTTOM + } + + LeftNewsImage + { + ControlName RuiPanel + wide 1180 + tall 620 + visible 1 + rui "ui/custom_loadscreen_image.rpak" + zpos 2 + + xpos 100 + + pin_to_sibling CenterNewsImage + pin_corner_to_sibling RIGHT + pin_to_sibling_corner LEFT + } + + RightNewsImage + { + ControlName RuiPanel + wide 1180 + tall 620 + visible 1 + rui "ui/custom_loadscreen_image.rpak" + zpos 2 + + xpos 100 + + pin_to_sibling CenterNewsImage + pin_corner_to_sibling LEFT + pin_to_sibling_corner RIGHT + } + + PrevPageButton + { + ControlName RuiButton + wide 960 + tall 594 + rui "ui/promo_page_change_button.rpak" + labelText "" + visible 1 + proportionalToParent 1 + xpos 150 + sound_accept "UI_Menu_MOTD_Tab" + zpos 10 + + pin_to_sibling CenterNewsImage + pin_corner_to_sibling LEFT + pin_to_sibling_corner LEFT + } + + NextPageButton + { + ControlName RuiButton + wide 960 + tall 594 + rui "ui/promo_page_change_button.rpak" + labelText "" + visible 1 + proportionalToParent 1 + xpos 150 + sound_accept "UI_Menu_MOTD_Tab" + zpos 10 + + pin_to_sibling CenterNewsImage + pin_corner_to_sibling RIGHT + pin_to_sibling_corner RIGHT + } + + NewsItem1 + { + ControlName RuiButton + classname "MenuButton MatchmakingStatusRui" + wide 256 + tall 144 + visible 1 + rui "ui/gamemode_select_v2_lobby_button.rpak" + ypos -100 + xpos 0 + zpos 2 + "scriptID" "0" + + pin_to_sibling DarkenBackground + pin_corner_to_sibling BOTTOM + pin_to_sibling_corner BOTTOM + } + + NewsItem2 + { + ControlName RuiButton + classname "MenuButton MatchmakingStatusRui" + wide 256 + tall 144 + visible 1 + rui "ui/gamemode_select_v2_lobby_button.rpak" + xpos 10 + zpos 2 + "scriptID" "1" + + pin_to_sibling NewsItem1 + pin_corner_to_sibling LEFT + pin_to_sibling_corner RIGHT + } + + NewsItem3 + { + ControlName RuiButton + classname "MenuButton MatchmakingStatusRui" + wide 256 + tall 144 + visible 1 + rui "ui/gamemode_select_v2_lobby_button.rpak" + xpos 10 + zpos 2 + "scriptID" "2" + + pin_to_sibling NewsItem2 + pin_corner_to_sibling LEFT + pin_to_sibling_corner RIGHT + } + + NewsItem4 + { + ControlName RuiButton + classname "MenuButton MatchmakingStatusRui" + wide 256 + tall 144 + visible 1 + rui "ui/gamemode_select_v2_lobby_button.rpak" + xpos 10 + zpos 2 + "scriptID" "3" + + pin_to_sibling NewsItem3 + pin_corner_to_sibling LEFT + pin_to_sibling_corner RIGHT + } + + NewsItem5 + { + ControlName RuiButton + classname "MenuButton MatchmakingStatusRui" + wide 256 + tall 144 + visible 1 + rui "ui/gamemode_select_v2_lobby_button.rpak" + xpos 10 + zpos 2 + "scriptID" "4" + + pin_to_sibling NewsItem4 + pin_corner_to_sibling LEFT + pin_to_sibling_corner RIGHT + } + + NewsItem6 + { + ControlName RuiButton + classname "MenuButton MatchmakingStatusRui" + wide 256 + tall 144 + visible 1 + rui "ui/gamemode_select_v2_lobby_button.rpak" + xpos 10 + zpos 2 + "scriptID" "5" + + pin_to_sibling NewsItem5 + pin_corner_to_sibling LEFT + pin_to_sibling_corner RIGHT + } + + NewsItemSelected + { + ControlName ImagePanel + wide 296 + tall 450 + visible 1 + image "vgui/HUD/flare_announcement" + drawColor "255 255 255 255" + scaleImage 1 + "zpos" "0" + + "pin_to_sibling" "NewsItem1" + "pin_corner_to_sibling" "CENTER" + "pin_to_sibling_corner" "CENTER" + } + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + FooterButtons + { + ControlName CNestedPanel + InheritProperties PromoFooterButtons + xpos -15 + ypos -35 + //wide 200 // width of 1 button + wide 422 // width of 2 buttons including space in between + + pin_to_sibling DarkenBackground + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner BOTTOM_LEFT + } + } +} diff --git a/resource/ui/menus/CustomLobby/panels/character_skins.res b/resource/ui/menus/CustomLobby/panels/character_skins.res new file mode 100644 index 000000000..9ab348523 --- /dev/null +++ b/resource/ui/menus/CustomLobby/panels/character_skins.res @@ -0,0 +1,104 @@ +"resource/ui/menus/panels/character_skins.res" +{ + PanelFrame + { + ControlName Label + xpos 0 + ypos 0 + wide %100 + tall %100 + labelText "" + bgcolor_override "70 70 70 255" + visible 0 + paintbackground 1 + proportionalToParent 1 + } + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + Header + { + ControlName RuiPanel + xpos 194 + ypos 50 + zpos 4 + wide 550 + tall 33 + rui "ui/character_items_header.rpak" + } + + CharacterSkinList + { + ControlName GridButtonListPanel + xpos 194 + ypos 96 + columns 1 + rows 12 + buttonSpacing 6 + scrollbarSpacing 6 + scrollbarOnLeft 0 + visible 1 + tabPosition 1 + selectOnDpadNav 1 + + ButtonSettings + { + rui "ui/generic_item_button.rpak" + clipRui 1 + wide 350 + tall 50 + cursorVelocityModifier 0.7 + rightClickEvents 1 + doubleClickEvents 1 + sound_focus "UI_Menu_Focus_Small" + sound_accept "" + sound_deny "" + } + } + + ModelRotateMouseCapture + { + ControlName CMouseMovementCapturePanel + xpos 700 + ypos 0 + wide 1340 + tall %100 + } + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + ActionButton + { + ControlName RuiButton + classname "MenuButton" + wide 280 + tall 110 + xpos -28 + ypos -25 + rui "ui/generic_loot_button.rpak" + labelText "" + visible 1 + cursorVelocityModifier 0.7 + + pin_to_sibling PanelFrame + pin_corner_to_sibling BOTTOM_RIGHT + pin_to_sibling_corner BOTTOM_RIGHT + } + + EquipHeirloomButton + { + ControlName RuiButton + classname "MenuButton" + wide 280 + tall 110 + ypos 6 + rui "ui/generic_loot_button.rpak" + labelText "" + visible 1 + cursorVelocityModifier 0.7 + + pin_to_sibling ActionButton + pin_corner_to_sibling BOTTOM_RIGHT + pin_to_sibling_corner TOP_RIGHT + } +} \ No newline at end of file diff --git a/resource/ui/menus/CustomLobby/panels/characters.res b/resource/ui/menus/CustomLobby/panels/characters.res new file mode 100644 index 000000000..1781188d6 --- /dev/null +++ b/resource/ui/menus/CustomLobby/panels/characters.res @@ -0,0 +1,235 @@ +"resource/ui/menus/panels/characters.res" +{ + PanelFrame + { + ControlName Label + xpos 0 + ypos 0 + wide %100 + tall %100 + labelText "" + visible 1 + bgcolor_override "0 0 0 0" + paintbackground 1 + + proportionalToParent 1 + } + + //ActionButton + //{ + // ControlName RuiButton + // classname "MenuButton" + // wide 280 + // tall 80 + // xpos -28 + // ypos -25 + // rui "ui/generic_loot_button.rpak" + // labelText "" + // visible 0 + // cursorVelocityModifier 0.7 + + // pin_to_sibling PanelFrame + // pin_corner_to_sibling BOTTOM_LEFT + // pin_to_sibling_corner BOTTOM_LEFT + //} + + ActionLabel + { + ControlName Label + auto_wide_tocontents 1 + auto_tall_tocontents 1 + visible 0 + labelText "This is a Label" + fgcolor_override "220 220 220 255" + fontHeight 36 + ypos 420 + xpos -178 + + pin_to_sibling CharacterSelectInfo + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner BOTTOM_LEFT + } + + CharacterSelectInfo + { + ControlName RuiPanel + xpos -150 + ypos -120 + wide 740 + tall 153 + visible 1 + rui "ui/character_select_info.rpak" + + pin_to_sibling PanelFrame + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner TOP_LEFT + } + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + Anchor + { + ControlName Label + + labelText "" + xpos 428 //500 + ypos 300 + wide 50 + tall 50 + //bgcolor_override "0 255 0 100" + //paintbackground 1 + } + + CharacterButton0 + { + ControlName RuiButton + InheritProperties LobbyCharacterButton + tabPosition 1 + } + CharacterButton1 + { + ControlName RuiButton + InheritProperties LobbyCharacterButton + } + CharacterButton2 + { + ControlName RuiButton + InheritProperties LobbyCharacterButton + } + CharacterButton3 + { + ControlName RuiButton + InheritProperties LobbyCharacterButton + } + CharacterButton4 + { + ControlName RuiButton + InheritProperties LobbyCharacterButton + } + CharacterButton5 + { + ControlName RuiButton + InheritProperties LobbyCharacterButton + } + CharacterButton6 + { + ControlName RuiButton + InheritProperties LobbyCharacterButton + } + CharacterButton7 + { + ControlName RuiButton + InheritProperties LobbyCharacterButton + } + CharacterButton8 + { + ControlName RuiButton + InheritProperties LobbyCharacterButton + } + CharacterButton9 + { + ControlName RuiButton + InheritProperties LobbyCharacterButton + } + CharacterButton10 + { + ControlName RuiButton + InheritProperties LobbyCharacterButton + } + CharacterButton11 + { + ControlName RuiButton + InheritProperties LobbyCharacterButton + } + CharacterButton12 + { + ControlName RuiButton + InheritProperties LobbyCharacterButton + } + CharacterButton13 + { + ControlName RuiButton + InheritProperties LobbyCharacterButton + } + CharacterButton14 + { + ControlName RuiButton + InheritProperties LobbyCharacterButton + } + CharacterButton15 + { + ControlName RuiButton + InheritProperties LobbyCharacterButton + } + CharacterButton16 + { + ControlName RuiButton + InheritProperties LobbyCharacterButton + } + CharacterButton17 + { + ControlName RuiButton + InheritProperties LobbyCharacterButton + } + CharacterButton18 + { + ControlName RuiButton + InheritProperties LobbyCharacterButton + } + CharacterButton19 + { + ControlName RuiButton + InheritProperties LobbyCharacterButton + } + CharacterButton20 + { + ControlName RuiButton + InheritProperties LobbyCharacterButton + } + CharacterButton21 + { + ControlName RuiButton + InheritProperties LobbyCharacterButton + } + CharacterButton22 + { + ControlName RuiButton + InheritProperties LobbyCharacterButton + } + CharacterButton23 + { + ControlName RuiButton + InheritProperties LobbyCharacterButton + } + CharacterButton24 + { + ControlName RuiButton + InheritProperties LobbyCharacterButton + } + CharacterButton25 + { + ControlName RuiButton + InheritProperties LobbyCharacterButton + } + CharacterButton26 + { + ControlName RuiButton + InheritProperties LobbyCharacterButton + } + CharacterButton27 + { + ControlName RuiButton + InheritProperties LobbyCharacterButton + } + CharacterButton28 + { + ControlName RuiButton + InheritProperties LobbyCharacterButton + } + CharacterButton29 + { + ControlName RuiButton + InheritProperties LobbyCharacterButton + } +} + diff --git a/resource/ui/menus/R5R/panels/connecting.res b/resource/ui/menus/CustomLobby/panels/connecting.res similarity index 97% rename from resource/ui/menus/R5R/panels/connecting.res rename to resource/ui/menus/CustomLobby/panels/connecting.res index 29ea34610..d90a3c076 100644 --- a/resource/ui/menus/R5R/panels/connecting.res +++ b/resource/ui/menus/CustomLobby/panels/connecting.res @@ -1,4 +1,4 @@ -"scripts/resource/ui/menus/R5R/panels/connecting.res" +"scripts/resource/ui/menus/CustomLobby/panels/connecting.res" { "DarkenBackground" { diff --git a/resource/ui/menus/R5R/privatematch.res b/resource/ui/menus/CustomLobby/panels/create_match.res similarity index 83% rename from resource/ui/menus/R5R/privatematch.res rename to resource/ui/menus/CustomLobby/panels/create_match.res index 26833fa64..c7657efb3 100644 --- a/resource/ui/menus/R5R/privatematch.res +++ b/resource/ui/menus/CustomLobby/panels/create_match.res @@ -132,7 +132,7 @@ destination "global" hideInputBox 0 - visible 1 + visible 0 teamChat 0 stopMessageModeOnFocusLoss 1 menuModeWithFade 0 @@ -159,7 +159,7 @@ xpos 0 fillColor "195 29 38 200" drawColor "195 29 38 200" - visible 1 + visible 0 zpos 0 pin_to_sibling LobbyChatBox pin_corner_to_sibling BOTTOM @@ -178,47 +178,13 @@ xpos 0 ypos 0 "fgcolor_override" "255 255 255 255" + visible 0 pin_to_sibling ChatTopLine pin_corner_to_sibling CENTER pin_to_sibling_corner CENTER } - HostSettingUpGamePanel - { - ControlName ImagePanel - wide 680 - tall 40 - fillColor "195 29 38 200" - drawColor "195 29 38 200" - visible 1 - zpos 0 - xpos 0 - ypos 10 - - pin_to_sibling ServerMapImg - pin_corner_to_sibling BOTTOM_LEFT - pin_to_sibling_corner TOP_LEFT - } - - HostSettingUpGamePanelText - { - ControlName Label - labelText "Host is currently setting up the match" - "font" "DefaultBold_41" - "allcaps" "1" - auto_wide_tocontents 1 - zpos 3 - fontHeight 25 - xpos 0 - ypos 0 - "fgcolor_override" "255 255 255 255" - - pin_to_sibling HostSettingUpGamePanel - pin_corner_to_sibling CENTER - pin_to_sibling_corner CENTER - } - StartGamePanel { ControlName RuiPanel @@ -294,7 +260,7 @@ PlaylistInfoEdit { ControlName Label - labelText "flowstate" + labelText "custom_tdm" font Default_27_Outline "allcaps" "1" wide 225 @@ -368,7 +334,7 @@ VisInfoEdit { ControlName Label - labelText "flowstate" + labelText "custom_tdm" font Default_27_Outline "allcaps" "1" wide 125 @@ -665,81 +631,16 @@ pin_to_sibling_corner CENTER } - "PlayersListTop" - { - ControlName ImagePanel - wide 490 - tall 40 - ypos -20 - fillColor "195 29 38 200" - drawColor "195 29 38 200" - visible 1 - zpos 0 - pin_to_sibling DarkenBackground - pin_corner_to_sibling TOP_RIGHT - pin_to_sibling_corner TOP_RIGHT - } - - CurrentPlayersText - { - ControlName Label - labelText "Current Players" - "font" "DefaultBold_41" - "allcaps" "1" - auto_wide_tocontents 1 - zpos 10 - fontHeight 25 - xpos 0 - ypos 0 - "fgcolor_override" "255 255 255 255" - - pin_to_sibling PlayersListTop - pin_corner_to_sibling CENTER - pin_to_sibling_corner CENTER - } - - PlayerList - { - ControlName GridButtonListPanel - xpos 18 - ypos 2 - columns 1 - rows 18 - buttonSpacing 6 - scrollbarSpacing 6 - scrollbarOnLeft 1 - visible 1 - tabPosition 1 - selectOnDpadNav 1 - - ButtonSettings - { - rui "ui/generic_item_button.rpak" - clipRui 1 - wide 550 - tall 50 - cursorVelocityModifier 0.7 - rightClickEvents 1 - doubleClickEvents 1 - sound_focus "UI_Menu_Focus_Small" - sound_accept "" - sound_deny "" - } - - pin_to_sibling PlayersListTop - pin_corner_to_sibling TOP_LEFT - pin_to_sibling_corner BOTTOM_LEFT - } - "R5RPlaylistPanel" { "ControlName" "CNestedPanel" + "classname" "CustomPrivateMatchMenu" "ypos" "-61" "xpos" "-520" "wide" "490" "tall" "560" "visible" "0" - "controlSettingsFile" "scripts/resource/ui/menus/R5R/panels/playlist.res" + "controlSettingsFile" "scripts/resource/ui/menus/CustomLobby/panels/playlist.res" "proportionalToParent" "1" "zpos" "10" @@ -751,12 +652,13 @@ "R5RMapPanel" { "ControlName" "CNestedPanel" + "classname" "CustomPrivateMatchMenu" "ypos" "-61" "xpos" "-520" "wide" "490" "tall" "560" "visible" "0" - "controlSettingsFile" "scripts/resource/ui/menus/R5R/panels/map.res" + "controlSettingsFile" "scripts/resource/ui/menus/CustomLobby/panels/map.res" "proportionalToParent" "1" "zpos" "10" @@ -768,12 +670,13 @@ "R5RVisPanel" { "ControlName" "CNestedPanel" + "classname" "CustomPrivateMatchMenu" "ypos" "-61" "xpos" "-520" "wide" "500" "tall" "220" "visible" "1" - "controlSettingsFile" "scripts/resource/ui/menus/R5R/panels/visibility.res" + "controlSettingsFile" "scripts/resource/ui/menus/CustomLobby/panels/visibility.res" "proportionalToParent" "1" "zpos" "10" @@ -781,4 +684,4 @@ "pin_corner_to_sibling" "TOP_LEFT" "pin_to_sibling_corner" "TOP_LEFT" } -} +} \ No newline at end of file diff --git a/resource/ui/menus/CustomLobby/panels/home.res b/resource/ui/menus/CustomLobby/panels/home.res new file mode 100644 index 000000000..412e4268a --- /dev/null +++ b/resource/ui/menus/CustomLobby/panels/home.res @@ -0,0 +1,273 @@ +"scripts/resource/ui/menus/CustomLobby/panels/home.res" +{ + "DarkenBackground" + { + "ControlName" "Label" + "xpos" "0" + "ypos" "0" + "zpos" "0" + "wide" "%100" + "tall" "%100" + "labelText" "" + "bgcolor_override" "0 0 0 0" + "visible" "1" + "paintbackground" "1" + } + + TopRightContentAnchor + { + ControlName Label + wide 308 + tall 45 + labelText "" + //visible 1 + //bgcolor_override "0 255 0 64" + //paintbackground 1 + xpos -50 + + pin_to_sibling DarkenBackground + pin_corner_to_sibling TOP_RIGHT + pin_to_sibling_corner TOP_RIGHT + } + + R5ReloadedBox + { + ControlName RuiPanel + wide 308 + tall 86 + visible 1 + "zpos" "10" + rui "ui/lobby_challenge_box.rpak" + + ruiArgs + { + headerText "Welcome To" + subText "R5Reloaded" + } + + pin_to_sibling TopRightContentAnchor + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner BOTTOM_LEFT + } + + R5ReloadedBoxLogo + { + ControlName RuiPanel + wide 100 + tall 100 + "zpos" "20" + visible 1 + rui "ui/basic_image.rpak" + ruiArgs + { + basicImage "rui/hud/custom_badges/r5r_badge" + } + + pin_to_sibling R5ReloadedBox + pin_corner_to_sibling CENTER + pin_to_sibling_corner LEFT + } + + "R5ReloadedBoxBG" + { + "ControlName" "ImagePanel" + "wide" "508" + "tall" "300" + "visible" "1" + "scaleImage" "1" + "zpos" "1" + "fillColor" "30 30 30 200" + "drawColor" "30 30 30 200" + + "pin_to_sibling" "R5ReloadedBox" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "Info" + { + "ControlName" "Label" + "xpos" "-15" + "ypos" "-5" + "wide" "325" + "tall" "300" + "visible" "1" + "wrap" "1" + "fontHeight" "25" + "zpos" "5" + "textAlignment" "north-west" + "labelText" "This project allows you to run APEX Legends with mods, by running the embedded server and loading custom scripts/global compile lists into the scripting VM. This allows you to create custom gamemodes, levels, weapons and more." + "font" "DefaultBold_41" + "allcaps" "0" + "fgcolor_override" "200 200 200 255" + + "pin_to_sibling" "R5ReloadedBoxBG" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "TOP_LEFT" + } + + R5RVersionButton + { + ControlName RuiButton + ypos 0 + zpos 0 + wide 400 // intentionally goes off screen + tall 64 + visible 1 + labelText "" + rui "ui/lobby_all_challenges_button.rpak" + proportionalToParent 1 + sound_focus "UI_Menu_Focus_Small" + cursorVelocityModifier 0.7 + pin_to_sibling R5ReloadedBoxBG + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner BOTTOM_LEFT + } + + MiniPromo + { + ControlName RuiButton + wide 308 + tall 106 + ypos 25 + rui "ui/mini_promo.rpak" + visible 1 + cursorVelocityModifier 0.7 + + proportionalToParent 1 + + pin_to_sibling R5RVersionButton + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner BOTTOM_LEFT + + sound_focus "UI_Menu_Focus_Large" + sound_accept "" + } + + ReadyButton + { + ControlName RuiButton + classname "MenuButton MatchmakingStatusRui" + wide 367 + tall 112 + rui "ui/generic_ready_button.rpak" + labelText "" + visible 1 + cursorVelocityModifier 0.7 + ypos -150 + xpos -50 + + navUp ModeButton + + proportionalToParent 1 + + pin_to_sibling DarkenBackground + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner BOTTOM_LEFT + + sound_focus "UI_Menu_Focus_Large" + } + + GamemodeSelectV2Button + { + ControlName RuiButton + classname "MenuButton MatchmakingStatusRui" + wide 367 + tall 168 + ypos 13 + zpos 10 + rui "ui/gamemode_select_v2_lobby_button.rpak" + labelText "" + visible 1 + cursorVelocityModifier 0.7 + sound_accept "UI_Menu_SelectMode_Extend" + + navUp InviteFriendsButton0 + navDown ReadyButton + navRight InviteFriendsButton0 + + proportionalToParent 1 + + pin_to_sibling ReadyButton + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + SelfButton + { + ControlName RuiButton + wide 340 + tall 88 + xpos 0 + ypos -70 + rui "ui/lobby_friend_button.rpak" + labelText "" + visible 1 + cursorVelocityModifier 0.7 + scriptID -1 + rightClickEvents 0 + tabPosition 1 + + proportionalToParent 1 + + ruiArgs + { + canViewStats 0 + isLeader 1 + } + + pin_to_sibling DarkenBackground + pin_corner_to_sibling TOP + pin_to_sibling_corner TOP + } + + GameMenuButton + { + ControlName RuiButton + InheritProperties CornerButton + zpos 5 + ypos -150 + xpos -50 + + pin_to_sibling DarkenBackground + pin_corner_to_sibling BOTTOM_RIGHT + pin_to_sibling_corner BOTTOM_RIGHT + } + + PlayersButton + { + ControlName RuiButton + InheritProperties CornerButton + xpos 13 + zpos 5 + + pin_to_sibling GameMenuButton + pin_corner_to_sibling BOTTOM_RIGHT + pin_to_sibling_corner BOTTOM_LEFT + } + + ServersButton + { + ControlName RuiButton + InheritProperties CornerButton + xpos 13 + zpos 5 + + pin_to_sibling PlayersButton + pin_corner_to_sibling BOTTOM_RIGHT + pin_to_sibling_corner BOTTOM_LEFT + } + + NewsButton + { + ControlName RuiButton + InheritProperties CornerButton + xpos 13 + zpos 5 + + pin_to_sibling ServersButton + pin_corner_to_sibling BOTTOM_RIGHT + pin_to_sibling_corner BOTTOM_LEFT + } +} + diff --git a/resource/ui/menus/CustomLobby/panels/loadout.res b/resource/ui/menus/CustomLobby/panels/loadout.res new file mode 100644 index 000000000..bb39966d0 --- /dev/null +++ b/resource/ui/menus/CustomLobby/panels/loadout.res @@ -0,0 +1,141 @@ +"resource/ui/menus/panels/armory.res" +{ + PanelFrame + { + ControlName Label + xpos 0 + ypos 0 + wide %100 + tall %100 + labelText "" + visible 0 + bgcolor_override "0 0 0 0" + paintbackground 1 + } + + WeaponCategoryButton0 + { + ControlName RuiButton + InheritProperties WeaponCategoryButton + classname WeaponCategoryButtonClass + scriptID 0 + xpos 173 + ypos 189 + tabPosition 1 + cursorVelocityModifier 0.7 + + navDown WeaponCategoryButton3 + navRight WeaponCategoryButton1 + } + WeaponCategoryButton1 + { + ControlName RuiButton + InheritProperties WeaponCategoryButton + classname WeaponCategoryButtonClass + scriptID 1 + xpos -121 + cursorVelocityModifier 0.7 + + navDown WeaponCategoryButton4 + navLeft WeaponCategoryButton0 + navRight WeaponCategoryButton2 + + pin_to_sibling WeaponCategoryButton0 + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner TOP_RIGHT + } + WeaponCategoryButton2 + { + ControlName RuiButton + InheritProperties WeaponCategoryButton + classname WeaponCategoryButtonClass + scriptID 2 + xpos -121 + cursorVelocityModifier 0.7 + + navDown WeaponCategoryButton5 + navLeft WeaponCategoryButton1 + + pin_to_sibling WeaponCategoryButton1 + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner TOP_RIGHT + } + WeaponCategoryButton3 + { + ControlName RuiButton + InheritProperties WeaponCategoryButton + classname WeaponCategoryButtonClass + scriptID 3 + ypos 35 + cursorVelocityModifier 0.7 + ruiArgs + { + isNameAtTop 1 + } + + navUp WeaponCategoryButton0 + navRight WeaponCategoryButton4 + + pin_to_sibling WeaponCategoryButton0 + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner BOTTOM_LEFT + } + WeaponCategoryButton4 + { + ControlName RuiButton + InheritProperties WeaponCategoryButton + classname WeaponCategoryButtonClass + scriptID 4 + xpos -121 + cursorVelocityModifier 0.7 + ruiArgs + { + isNameAtTop 1 + } + + navUp WeaponCategoryButton1 + navLeft WeaponCategoryButton3 + navRight WeaponCategoryButton5 + navDown MiscCustomizeButton + + pin_to_sibling WeaponCategoryButton3 + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner TOP_RIGHT + } + WeaponCategoryButton5 + { + ControlName RuiButton + InheritProperties WeaponCategoryButton + classname WeaponCategoryButtonClass + scriptID 5 + xpos -121 + cursorVelocityModifier 0.7 + ruiArgs + { + isNameAtTop 1 + } + + navUp WeaponCategoryButton2 + navLeft WeaponCategoryButton4 + + pin_to_sibling WeaponCategoryButton4 + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner TOP_RIGHT + } + MiscCustomizeButton + { + ControlName RuiButton + InheritProperties MiscCustomizeButton + classname MiscCustomizeButtonClass + scriptID 6 + ypos 35 + visible 0 + cursorVelocityModifier 0.7 + + navUp WeaponCategoryButton4 + + pin_to_sibling WeaponCategoryButton4 + pin_corner_to_sibling TOP + pin_to_sibling_corner BOTTOM + } +} diff --git a/resource/ui/menus/R5R/panels/mainmenu.res b/resource/ui/menus/CustomLobby/panels/mainmenu.res similarity index 100% rename from resource/ui/menus/R5R/panels/mainmenu.res rename to resource/ui/menus/CustomLobby/panels/mainmenu.res diff --git a/resource/ui/menus/R5R/panels/map.res b/resource/ui/menus/CustomLobby/panels/map.res similarity index 99% rename from resource/ui/menus/R5R/panels/map.res rename to resource/ui/menus/CustomLobby/panels/map.res index 5e2b20d3c..783810328 100644 --- a/resource/ui/menus/R5R/panels/map.res +++ b/resource/ui/menus/CustomLobby/panels/map.res @@ -103,4 +103,3 @@ pin_to_sibling_corner TOP_LEFT } } - diff --git a/resource/ui/menus/R5R/panels/playlist.res b/resource/ui/menus/CustomLobby/panels/playlist.res similarity index 99% rename from resource/ui/menus/R5R/panels/playlist.res rename to resource/ui/menus/CustomLobby/panels/playlist.res index 797e92ea8..e5bc483c8 100644 --- a/resource/ui/menus/R5R/panels/playlist.res +++ b/resource/ui/menus/CustomLobby/panels/playlist.res @@ -117,4 +117,3 @@ pin_to_sibling_corner TOP_LEFT } } - diff --git a/resource/ui/menus/R5R/panels/serverbrowser.res b/resource/ui/menus/CustomLobby/panels/serverbrowser.res similarity index 81% rename from resource/ui/menus/R5R/panels/serverbrowser.res rename to resource/ui/menus/CustomLobby/panels/serverbrowser.res index 2f5a07621..e44272ea1 100644 --- a/resource/ui/menus/R5R/panels/serverbrowser.res +++ b/resource/ui/menus/CustomLobby/panels/serverbrowser.res @@ -1,4 +1,4 @@ -scripts/resource/ui/menus/R5R/panels/serverbrowser.res +scripts/resource/ui/menus/CustomLobby/panels/serverbrowser.res { "DarkenBackground" { @@ -16,7 +16,7 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "ServerBrowserBG" { "ControlName" "ImagePanel" - "xpos" "-235" + "xpos" "-245" "ypos" "-40" "tall" "50" "wide" "1395" @@ -31,18 +31,74 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "pin_to_sibling_corner" "TOP" } - BtnFilterServers + "ServersBG" + { + "ControlName" "ImagePanel" + "xpos" "0" + "ypos" "0" + "tall" "600" + "wide" "1395" + "fillColor" "30 30 30 120" + "drawColor" "30 30 30 120" + "wrap" "1" + "visible" "1" + "zpos" "0" + + "pin_to_sibling" "ServerBrowserBG" + "pin_corner_to_sibling" "TOP_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" + } + + "ServerBrowserBGBottom" + { + "ControlName" "ImagePanel" + "xpos" "0" + "ypos" "10" + "tall" "240" + "wide" "1395" + "fillColor" "30 30 30 200" + "drawColor" "30 30 30 200" + "wrap" "1" + "visible" "1" + "zpos" "0" + + "pin_to_sibling" "ServersBG" + "pin_corner_to_sibling" "TOP" + "pin_to_sibling_corner" "BOTTOM" + } + + "BtnSearchLabel" + { + "ControlName" "Label" + "labelText" "Search:" + "xpos" "-23" + "ypos" "-16" + "auto_wide_tocontents" "1" + "zpos" "10" + "fontHeight" "30" + + ruiArgs + { + buttonText "Search:" + } + + pin_to_sibling ServerBrowserBGBottom + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner TOP_LEFT + } + + BtnServerSearch { ControlName TextEntry - zpos 100 // This works around input weirdness when the control is constructed by code instead of VGUI blackbox. - wide 1000 - tall 40 - xpos 0 - ypos 5 + zpos 100 // This works around input weirdness when the control is constructed by code instead of VGUI blackbox. + xpos 10 + ypos 0 + wide 1275 + tall 40 zpos 70 allowRightClickMenu 0 allowSpecialCharacters 0 - unicode 0 + unicode 1 visible 1 enabled 1 @@ -55,61 +111,80 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res ruiMinFontHeight 16 bgcolor_override "30 30 30 200" - pin_to_sibling ServerBrowserBG - pin_corner_to_sibling BOTTOM_RIGHT - pin_to_sibling_corner TOP_RIGHT + pin_to_sibling BtnSearchLabel + pin_corner_to_sibling LEFT + pin_to_sibling_corner RIGHT } - "FilterLbl" + SwtBtnSelectGamemode { - "ControlName" "Label" - "labelText" "Search :" - "xpos" "5" - "ypos" "0" - "auto_wide_tocontents" "1" - "zpos" "10" - "fontHeight" "40" - "tall" "40" + ControlName RuiButton + InheritProperties SwitchButton + style DialogListButton + ConVar "serverbrowser_gamemodeFilter" + wide 670 + ypos 15 - "pin_to_sibling" "BtnFilterServers" - "pin_corner_to_sibling" "RIGHT" - "pin_to_sibling_corner" "LEFT" + ruiArgs + { + buttonText "Playlist Filter" + } + + pin_to_sibling BtnSearchLabel + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner BOTTOM_LEFT + + childGroupAlways MultiChoiceButtonAlways } - "ServersBG" + SwtBtnSelectMap { - "ControlName" "ImagePanel" - "xpos" "0" - "ypos" "0" - "tall" "760" - "wide" "1395" - "fillColor" "30 30 30 120" - "drawColor" "30 30 30 120" - "wrap" "1" - "visible" "1" - "zpos" "0" + ControlName RuiButton + InheritProperties SwitchButton + style DialogListButton + ConVar "serverbrowser_mapFilter" + wide 670 + ypos 0 + xpos 10 - "pin_to_sibling" "ServerBrowserBG" - "pin_corner_to_sibling" "TOP_LEFT" - "pin_to_sibling_corner" "BOTTOM_LEFT" + ruiArgs + { + buttonText "Map Filter" + } + + pin_to_sibling SwtBtnSelectGamemode + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner TOP_RIGHT + + childGroupAlways MultiChoiceButtonAlways } - "ServerBrowserBGBottom" + SwtBtnHideEmpty { - "ControlName" "ImagePanel" - "xpos" "0" - "ypos" "750" - "tall" "70" - "wide" "1395" - "fillColor" "30 30 30 200" - "drawColor" "30 30 30 200" - "wrap" "1" - "visible" "0" - "zpos" "3" + ControlName RuiButton + InheritProperties SwitchButton + style DialogListButton + ConVar "serverbrowser_hideEmptyServers" + classname FilterPanelChild + wide 1349 + ypos 10 - "pin_to_sibling" "ServerBrowserBG" - "pin_corner_to_sibling" "TOP" - "pin_to_sibling_corner" "BOTTOM" + ruiArgs + { + buttonText "Hide Empty Servers" + } + + list + { + "No" 0 + "Yes" 1 + } + + pin_to_sibling SwtBtnSelectGamemode + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner BOTTOM_LEFT + + childGroupAlways ChoiceButtonAlways } "NoServersLbl" @@ -127,77 +202,60 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "pin_to_sibling_corner" "CENTER" } - "BtnServerListRightArrow" + "RefreshServers" { - "ControlName" "RuiButton" - "rui" "ui/footer_button.rpak" - "wide" "100" - "tall" "35" - "xpos" "0" - "ypos" "0" - "zpos" "6" + "ControlName" "RuiButton" + "style" "RuiButton" + "wide" "200" + "tall" "35" + "xpos" "-5" + "ypos" "0" + "visible" "1" + "enabled" "1" + "zpos" "10" + "rui" "ui/tab_button.rpak" + "cursorVelocityModifier" "0.7" ruiArgs { - buttonText ">>>" + buttonText "" } - "pin_to_sibling" "Pages" - "pin_corner_to_sibling" "LEFT" - "pin_to_sibling_corner" "RIGHT" + "pin_to_sibling" "ServerBrowserBGBottom" + "pin_corner_to_sibling" "BOTTOM_LEFT" + "pin_to_sibling_corner" "BOTTOM_LEFT" } - "Pages" + "RefreshServersText" { "ControlName" "Label" - "labelText" " Page: 0/0 " + "labelText" "Refresh Servers" "font" "DefaultBold_41" "allcaps" "1" - "wide" "120" - "zpos" "7" + "auto_wide_tocontents" "1" + "zpos" "0" "fontHeight" "25" - "xpos" "25" + "xpos" "0" "ypos" "0" + "zpos" "9" "fgcolor_override" "255 255 255 255" - "textalignment" "center" - "auto_wide_tocontents" "1" - "pin_to_sibling" "ServerBrowserBGBottom" + "pin_to_sibling" "RefreshServers" "pin_corner_to_sibling" "CENTER" "pin_to_sibling_corner" "CENTER" } - "BtnServerListLeftArrow" - { - "ControlName" "RuiButton" - "rui" "ui/footer_button.rpak" - "wide" "100" - "tall" "35" - "xpos" "0" - "ypos" "0" - "zpos" "6" - - ruiArgs - { - buttonText "<<<" - } - - "pin_to_sibling" "Pages" - "pin_corner_to_sibling" "RIGHT" - "pin_to_sibling_corner" "LEFT" - } - - "RefreshServers" + "ClearFliters" { "ControlName" "RuiButton" "style" "RuiButton" "wide" "200" "tall" "35" - "xpos" "-5" + "xpos" "5" "ypos" "0" "visible" "1" "enabled" "1" - "zpos" "2" + "zpos" "10" "rui" "ui/tab_button.rpak" "cursorVelocityModifier" "0.7" @@ -206,15 +264,15 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res buttonText "" } - "pin_to_sibling" "ServerBrowserBGBottom" - "pin_corner_to_sibling" "LEFT" - "pin_to_sibling_corner" "LEFT" + "pin_to_sibling" "RefreshServers" + "pin_corner_to_sibling" "BOTTOM_LEFT" + "pin_to_sibling_corner" "BOTTOM_RIGHT" } - "RefreshServersText" + "ClearFlitersText" { "ControlName" "Label" - "labelText" "Refresh Servers" + "labelText" "Clear Filters" "font" "DefaultBold_41" "allcaps" "1" "auto_wide_tocontents" "1" @@ -222,13 +280,160 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "fontHeight" "25" "xpos" "0" "ypos" "0" + "zpos" "9" "fgcolor_override" "255 255 255 255" - "pin_to_sibling" "RefreshServers" + "pin_to_sibling" "ClearFliters" "pin_corner_to_sibling" "CENTER" "pin_to_sibling_corner" "CENTER" } + "ListSliderBG" + { + "ControlName" "ImagePanel" + wide 32 + tall 649 + xpos 2 + ypos 50 + zpos 0 + "fillColor" "195 29 38 150" + scaleImage 1 + "visible" "0" + + pin_to_sibling ServersBG + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner TOP_RIGHT + } + + BtnServerListSlider + { + ControlName RuiButton + InheritProperties RuiSmallButton + //labelText "V" + wide 30 + tall 550 + xpos 2 + ypos 0 + zpos 0 + + image "vgui/hud/white" + drawColor "255 255 255 255" + + pin_to_sibling ServersBG + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner TOP_RIGHT + } + + BtnServerListSliderPanel + { + ControlName RuiPanel + wide 30 + tall 550 + xpos 2 + ypos 0 + zpos 100 + + rui "ui/control_options_description.rpak" + + visible 1 + zpos -1 + + pin_to_sibling ServersBG + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner TOP_RIGHT + } + + // sh_menu_models.gnut has a global function which gets called when + // left mouse button gets called while hovering and has mouse + // deltaX; deltaY which we can yoink for ourselfes + MouseMovementCapture + { + ControlName CMouseMovementCapturePanel + wide 30 + tall 550 + xpos 2 + ypos 1 + zpos 100 + + pin_to_sibling ServersBG + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner TOP_RIGHT + } + + BtnServerListUpArrow + { + ControlName RuiButton + InheritProperties RuiSmallButton + //labelText "A" + wide 30 + tall 45 + xpos 0 + ypos 0 + zpos 5 + + image "vgui/hud/white" + drawColor "255 255 255 128" + + pin_to_sibling ListSliderBG + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner TOP_LEFT + } + + BtnServerListUpArrowPanel + { + ControlName RuiPanel + wide 30 + tall 45 + xpos 0 + ypos 0 + + rui "ui/control_options_description.rpak" + + visible 1 + zpos 4 + + pin_to_sibling ListSliderBG + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner TOP_LEFT + } + + BtnServerListDownArrow + { + ControlName RuiButton + InheritProperties RuiSmallButton + //labelText "A" + wide 30 + tall 45 + xpos 0 + ypos 0 + zpos 5 + + image "vgui/hud/white" + drawColor "255 255 255 128" + + pin_to_sibling ListSliderBG + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner BOTTOM_LEFT + } + + BtnServerListDownArrowPanel + { + ControlName RuiPanel + wide 30 + tall 45 + xpos 0 + ypos 0 + + rui "ui/control_options_description.rpak" + + visible 1 + zpos 4 + + pin_to_sibling ListSliderBG + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner BOTTOM_LEFT + } + "ServersCount" { "ControlName" "Label" @@ -238,13 +443,13 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "auto_wide_tocontents" "1" "zpos" "7" "fontHeight" "25" - "xpos" "0" + "xpos" "-5" "ypos" "0" "fgcolor_override" "255 255 255 255" "pin_to_sibling" "ServerBrowserBGBottom" - "pin_corner_to_sibling" "RIGHT" - "pin_to_sibling_corner" "RIGHT" + "pin_corner_to_sibling" "BOTTOM_RIGHT" + "pin_to_sibling_corner" "BOTTOM_RIGHT" } "PlayersCount" @@ -341,7 +546,7 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "ControlName" "ImagePanel" "xpos" "0" "ypos" "0" - "tall" "760" + "tall" "600" "wide" "2" "fillColor" "155 155 155 200" "drawColor" "155 155 155 200" @@ -359,7 +564,7 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "ControlName" "ImagePanel" "xpos" "-660" "ypos" "0" - "tall" "760" + "tall" "600" "wide" "2" "fillColor" "155 155 155 200" "drawColor" "155 155 155 200" @@ -377,7 +582,7 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "ControlName" "ImagePanel" "xpos" "-790" "ypos" "0" - "tall" "760" + "tall" "600" "wide" "2" "fillColor" "155 155 155 200" "drawColor" "155 155 155 200" @@ -395,7 +600,7 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "ControlName" "ImagePanel" "xpos" "-1040" "ypos" "0" - "tall" "760" + "tall" "600" "wide" "2" "fillColor" "155 155 155 200" "drawColor" "155 155 155 200" @@ -413,7 +618,7 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "ControlName" "ImagePanel" "xpos" "0" "ypos" "0" - "tall" "760" + "tall" "600" "wide" "2" "fillColor" "155 155 155 200" "drawColor" "155 155 155 200" @@ -470,7 +675,7 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "visible" "1" "rui" "ui/custom_loadscreen_image.rpak" "ypos" "0" - "xpos" "27" + "xpos" "40" "zpos" "4" "pin_to_sibling" "ServerBrowserBG" @@ -483,7 +688,7 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "ControlName" "ImagePanel" "xpos" "0" "ypos" "0" - "tall" "470" + "tall" "560" "wide" "450" "fillColor" "30 30 30 200" "drawColor" "30 30 30 200" @@ -674,6 +879,7 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "classname" "ServBtn" "wide" "1395" "tall" "40" + "doubleClickEvents" "1" "visible" "1" "enabled" "1" "style" "RuiButton" @@ -695,6 +901,7 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "classname" "ServBtn" "wide" "1395" "tall" "40" + "doubleClickEvents" "1" "visible" "1" "enabled" "1" "style" "RuiButton" @@ -715,6 +922,7 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "classname" "ServBtn" "wide" "1395" "tall" "40" + "doubleClickEvents" "1" "visible" "1" "enabled" "1" "style" "RuiButton" @@ -735,6 +943,7 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "classname" "ServBtn" "wide" "1395" "tall" "40" + "doubleClickEvents" "1" "visible" "1" "enabled" "1" "style" "RuiButton" @@ -755,6 +964,7 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "classname" "ServBtn" "wide" "1395" "tall" "40" + "doubleClickEvents" "1" "visible" "1" "enabled" "1" "style" "RuiButton" @@ -775,6 +985,7 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "classname" "ServBtn" "wide" "1395" "tall" "40" + "doubleClickEvents" "1" "visible" "1" "enabled" "1" "style" "RuiButton" @@ -795,6 +1006,7 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "classname" "ServBtn" "wide" "1395" "tall" "40" + "doubleClickEvents" "1" "visible" "1" "enabled" "1" "style" "RuiButton" @@ -815,6 +1027,7 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "classname" "ServBtn" "wide" "1395" "tall" "40" + "doubleClickEvents" "1" "visible" "1" "enabled" "1" "style" "RuiButton" @@ -835,6 +1048,7 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "classname" "ServBtn" "wide" "1395" "tall" "40" + "doubleClickEvents" "1" "visible" "1" "enabled" "1" "style" "RuiButton" @@ -855,6 +1069,7 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "classname" "ServBtn" "wide" "1395" "tall" "40" + "doubleClickEvents" "1" "visible" "1" "enabled" "1" "style" "RuiButton" @@ -875,6 +1090,7 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "classname" "ServBtn" "wide" "1395" "tall" "40" + "doubleClickEvents" "1" "visible" "1" "enabled" "1" "style" "RuiButton" @@ -895,6 +1111,7 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "classname" "ServBtn" "wide" "1395" "tall" "40" + "doubleClickEvents" "1" "visible" "1" "enabled" "1" "style" "RuiButton" @@ -915,6 +1132,7 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "classname" "ServBtn" "wide" "1395" "tall" "40" + "doubleClickEvents" "1" "visible" "1" "enabled" "1" "style" "RuiButton" @@ -935,6 +1153,7 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "classname" "ServBtn" "wide" "1395" "tall" "40" + "doubleClickEvents" "1" "visible" "1" "enabled" "1" "style" "RuiButton" @@ -955,6 +1174,7 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "classname" "ServBtn" "wide" "1395" "tall" "40" + "doubleClickEvents" "1" "visible" "1" "enabled" "1" "style" "RuiButton" @@ -969,159 +1189,7 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "pin_to_sibling_corner" "BOTTOM_LEFT" } - "ServerButton15" - { - "ControlName" "RuiButton" - "classname" "ServBtn" - "wide" "1395" - "tall" "40" - "visible" "1" - "enabled" "1" - "style" "RuiButton" - "rui" "ui/tab_button.rpak" - "labelText" "" - "cursorVelocityModifier" "0.7" - "zpos" "1" - "scriptID" "15" - - "pin_to_sibling" "ServerButton14" - "pin_corner_to_sibling" "TOP_LEFT" - "pin_to_sibling_corner" "BOTTOM_LEFT" - } - - "ServerButton16" - { - "ControlName" "RuiButton" - "classname" "ServBtn" - "wide" "1395" - "tall" "40" - "visible" "1" - "enabled" "1" - "style" "RuiButton" - "rui" "ui/tab_button.rpak" - "labelText" "" - "cursorVelocityModifier" "0.7" - "zpos" "1" - "scriptID" "16" - - "pin_to_sibling" "ServerButton15" - "pin_corner_to_sibling" "TOP_LEFT" - "pin_to_sibling_corner" "BOTTOM_LEFT" - } - - "ServerButton17" - { - "ControlName" "RuiButton" - "classname" "ServBtn" - "wide" "1395" - "tall" "40" - "visible" "1" - "enabled" "1" - "style" "RuiButton" - "rui" "ui/tab_button.rpak" - "labelText" "" - "cursorVelocityModifier" "0.7" - "zpos" "1" - "scriptID" "17" - - "pin_to_sibling" "ServerButton16" - "pin_corner_to_sibling" "TOP_LEFT" - "pin_to_sibling_corner" "BOTTOM_LEFT" - } - - "ServerButton18" - { - "ControlName" "RuiButton" - "classname" "ServBtn" - "wide" "1395" - "tall" "40" - "visible" "1" - "enabled" "1" - "style" "RuiButton" - "rui" "ui/tab_button.rpak" - "labelText" "" - "cursorVelocityModifier" "0.7" - "zpos" "1" - "scriptID" "18" - - "pin_to_sibling" "ServerButton17" - "pin_corner_to_sibling" "TOP_LEFT" - "pin_to_sibling_corner" "BOTTOM_LEFT" - } - - "ServerName0" - { - "ControlName" "Label" - "labelText" "" - "xpos" "-15" - "ypos" "0" - "zpos" "0" - "wide" "630" - "zpos" "4" - "fontHeight" "30" - "tall" "30" - "classname" "ServerLabels" - - "pin_to_sibling" "ServerButton0" - "pin_corner_to_sibling" "LEFT" - "pin_to_sibling_corner" "LEFT" - } - - "ServerName1" - { - "ControlName" "Label" - "labelText" "" - "xpos" "-15" - "ypos" "0" - "zpos" "0" - "wide" "630" - "zpos" "4" - "fontHeight" "30" - "tall" "30" - "classname" "ServerLabels" - - "pin_to_sibling" "ServerButton1" - "pin_corner_to_sibling" "LEFT" - "pin_to_sibling_corner" "LEFT" - } - - "ServerName2" - { - "ControlName" "Label" - "labelText" "" - "xpos" "-15" - "ypos" "0" - "zpos" "0" - "wide" "630" - "zpos" "4" - "fontHeight" "30" - "tall" "30" - "classname" "ServerLabels" - - "pin_to_sibling" "ServerButton2" - "pin_corner_to_sibling" "LEFT" - "pin_to_sibling_corner" "LEFT" - } - - "ServerName3" - { - "ControlName" "Label" - "labelText" "" - "xpos" "-15" - "ypos" "0" - "zpos" "0" - "wide" "630" - "zpos" "4" - "fontHeight" "30" - "tall" "30" - "classname" "ServerLabels" - - "pin_to_sibling" "ServerButton3" - "pin_corner_to_sibling" "LEFT" - "pin_to_sibling_corner" "LEFT" - } - - "ServerName4" + "ServerName0" { "ControlName" "Label" "labelText" "" @@ -1134,12 +1202,12 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "tall" "30" "classname" "ServerLabels" - "pin_to_sibling" "ServerButton4" + "pin_to_sibling" "ServerButton0" "pin_corner_to_sibling" "LEFT" "pin_to_sibling_corner" "LEFT" } - "ServerName5" + "ServerName1" { "ControlName" "Label" "labelText" "" @@ -1152,12 +1220,12 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "tall" "30" "classname" "ServerLabels" - "pin_to_sibling" "ServerButton5" + "pin_to_sibling" "ServerButton1" "pin_corner_to_sibling" "LEFT" "pin_to_sibling_corner" "LEFT" } - "ServerName6" + "ServerName2" { "ControlName" "Label" "labelText" "" @@ -1170,12 +1238,12 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "tall" "30" "classname" "ServerLabels" - "pin_to_sibling" "ServerButton6" + "pin_to_sibling" "ServerButton2" "pin_corner_to_sibling" "LEFT" "pin_to_sibling_corner" "LEFT" } - "ServerName7" + "ServerName3" { "ControlName" "Label" "labelText" "" @@ -1188,12 +1256,12 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "tall" "30" "classname" "ServerLabels" - "pin_to_sibling" "ServerButton7" + "pin_to_sibling" "ServerButton3" "pin_corner_to_sibling" "LEFT" "pin_to_sibling_corner" "LEFT" } - "ServerName8" + "ServerName4" { "ControlName" "Label" "labelText" "" @@ -1206,12 +1274,12 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "tall" "30" "classname" "ServerLabels" - "pin_to_sibling" "ServerButton8" + "pin_to_sibling" "ServerButton4" "pin_corner_to_sibling" "LEFT" "pin_to_sibling_corner" "LEFT" } - "ServerName9" + "ServerName5" { "ControlName" "Label" "labelText" "" @@ -1224,12 +1292,12 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "tall" "30" "classname" "ServerLabels" - "pin_to_sibling" "ServerButton9" + "pin_to_sibling" "ServerButton5" "pin_corner_to_sibling" "LEFT" "pin_to_sibling_corner" "LEFT" } - "ServerName10" + "ServerName6" { "ControlName" "Label" "labelText" "" @@ -1242,12 +1310,12 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "tall" "30" "classname" "ServerLabels" - "pin_to_sibling" "ServerButton10" + "pin_to_sibling" "ServerButton6" "pin_corner_to_sibling" "LEFT" "pin_to_sibling_corner" "LEFT" } - "ServerName11" + "ServerName7" { "ControlName" "Label" "labelText" "" @@ -1260,12 +1328,12 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "tall" "30" "classname" "ServerLabels" - "pin_to_sibling" "ServerButton11" + "pin_to_sibling" "ServerButton7" "pin_corner_to_sibling" "LEFT" "pin_to_sibling_corner" "LEFT" } - "ServerName12" + "ServerName8" { "ControlName" "Label" "labelText" "" @@ -1278,12 +1346,12 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "tall" "30" "classname" "ServerLabels" - "pin_to_sibling" "ServerButton12" + "pin_to_sibling" "ServerButton8" "pin_corner_to_sibling" "LEFT" "pin_to_sibling_corner" "LEFT" } - "ServerName13" + "ServerName9" { "ControlName" "Label" "labelText" "" @@ -1296,12 +1364,12 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "tall" "30" "classname" "ServerLabels" - "pin_to_sibling" "ServerButton13" + "pin_to_sibling" "ServerButton9" "pin_corner_to_sibling" "LEFT" "pin_to_sibling_corner" "LEFT" } - "ServerName14" + "ServerName10" { "ControlName" "Label" "labelText" "" @@ -1314,12 +1382,12 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "tall" "30" "classname" "ServerLabels" - "pin_to_sibling" "ServerButton14" + "pin_to_sibling" "ServerButton10" "pin_corner_to_sibling" "LEFT" "pin_to_sibling_corner" "LEFT" } - "ServerName15" + "ServerName11" { "ControlName" "Label" "labelText" "" @@ -1332,12 +1400,12 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "tall" "30" "classname" "ServerLabels" - "pin_to_sibling" "ServerButton15" + "pin_to_sibling" "ServerButton11" "pin_corner_to_sibling" "LEFT" "pin_to_sibling_corner" "LEFT" } - "ServerName16" + "ServerName12" { "ControlName" "Label" "labelText" "" @@ -1350,12 +1418,12 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "tall" "30" "classname" "ServerLabels" - "pin_to_sibling" "ServerButton16" + "pin_to_sibling" "ServerButton12" "pin_corner_to_sibling" "LEFT" "pin_to_sibling_corner" "LEFT" } - "ServerName17" + "ServerName13" { "ControlName" "Label" "labelText" "" @@ -1368,12 +1436,12 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "tall" "30" "classname" "ServerLabels" - "pin_to_sibling" "ServerButton17" + "pin_to_sibling" "ServerButton13" "pin_corner_to_sibling" "LEFT" "pin_to_sibling_corner" "LEFT" } - "ServerName18" + "ServerName14" { "ControlName" "Label" "labelText" "" @@ -1386,7 +1454,7 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "tall" "30" "classname" "ServerLabels" - "pin_to_sibling" "ServerButton18" + "pin_to_sibling" "ServerButton14" "pin_corner_to_sibling" "LEFT" "pin_to_sibling_corner" "LEFT" } @@ -1676,82 +1744,6 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "pin_to_sibling_corner" "LEFT" } - "Playlist15" - { - "ControlName" "Label" - "labelText" "" - "xpos" "-800" - "ypos" "0" - "zpos" "0" - "textalignment" "center" - "wide" "230" - "zpos" "4" - "fontHeight" "30" - "tall" "30" - "classname" "ServerLabels" - - "pin_to_sibling" "ServerButton15" - "pin_corner_to_sibling" "LEFT" - "pin_to_sibling_corner" "LEFT" - } - - "Playlist16" - { - "ControlName" "Label" - "labelText" "" - "xpos" "-800" - "ypos" "0" - "zpos" "0" - "textalignment" "center" - "wide" "230" - "zpos" "4" - "fontHeight" "30" - "tall" "30" - "classname" "ServerLabels" - - "pin_to_sibling" "ServerButton16" - "pin_corner_to_sibling" "LEFT" - "pin_to_sibling_corner" "LEFT" - } - - "Playlist17" - { - "ControlName" "Label" - "labelText" "" - "xpos" "-800" - "ypos" "0" - "zpos" "0" - "textalignment" "center" - "wide" "230" - "zpos" "4" - "fontHeight" "30" - "tall" "30" - "classname" "ServerLabels" - - "pin_to_sibling" "ServerButton17" - "pin_corner_to_sibling" "LEFT" - "pin_to_sibling_corner" "LEFT" - } - - "Playlist18" - { - "ControlName" "Label" - "labelText" "" - "xpos" "-800" - "ypos" "0" - "zpos" "0" - "textalignment" "center" - "wide" "230" - "zpos" "4" - "fontHeight" "30" - "tall" "30" - "classname" "ServerLabels" - - "pin_to_sibling" "ServerButton18" - "pin_corner_to_sibling" "LEFT" - "pin_to_sibling_corner" "LEFT" - } - "PlayerCount0" { "ControlName" "Label" @@ -2037,82 +2029,6 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "pin_to_sibling_corner" "LEFT" } - "PlayerCount15" - { - "ControlName" "Label" - "labelText" "" - "xpos" "-670" - "ypos" "0" - "zpos" "0" - "textalignment" "center" - "wide" "110" - "zpos" "4" - "fontHeight" "30" - "tall" "30" - "classname" "ServerLabels" - - "pin_to_sibling" "ServerButton15" - "pin_corner_to_sibling" "LEFT" - "pin_to_sibling_corner" "LEFT" - } - - "PlayerCount16" - { - "ControlName" "Label" - "labelText" "" - "xpos" "-670" - "ypos" "0" - "zpos" "0" - "textalignment" "center" - "wide" "110" - "zpos" "4" - "fontHeight" "30" - "tall" "30" - "classname" "ServerLabels" - - "pin_to_sibling" "ServerButton16" - "pin_corner_to_sibling" "LEFT" - "pin_to_sibling_corner" "LEFT" - } - - "PlayerCount17" - { - "ControlName" "Label" - "labelText" "" - "xpos" "-670" - "ypos" "0" - "zpos" "0" - "textalignment" "center" - "wide" "110" - "zpos" "4" - "fontHeight" "30" - "tall" "30" - "classname" "ServerLabels" - - "pin_to_sibling" "ServerButton17" - "pin_corner_to_sibling" "LEFT" - "pin_to_sibling_corner" "LEFT" - } - - "PlayerCount18" - { - "ControlName" "Label" - "labelText" "" - "xpos" "-670" - "ypos" "0" - "zpos" "0" - "textalignment" "center" - "wide" "110" - "zpos" "4" - "fontHeight" "30" - "tall" "30" - "classname" "ServerLabels" - - "pin_to_sibling" "ServerButton18" - "pin_corner_to_sibling" "LEFT" - "pin_to_sibling_corner" "LEFT" - } - "Map0" { "ControlName" "Label" @@ -2396,82 +2312,5 @@ scripts/resource/ui/menus/R5R/panels/serverbrowser.res "pin_corner_to_sibling" "LEFT" "pin_to_sibling_corner" "LEFT" } - - "Map15" - { - "ControlName" "Label" - "labelText" "" - "xpos" "-1050" - "ypos" "0" - "zpos" "0" - "textalignment" "center" - "wide" "330" - "zpos" "4" - "fontHeight" "30" - "tall" "30" - "classname" "ServerLabels" - - "pin_to_sibling" "ServerButton15" - "pin_corner_to_sibling" "LEFT" - "pin_to_sibling_corner" "LEFT" - } - - "Map16" - { - "ControlName" "Label" - "labelText" "" - "xpos" "-1050" - "ypos" "0" - "zpos" "0" - "textalignment" "center" - "wide" "330" - "zpos" "4" - "fontHeight" "30" - "tall" "30" - "classname" "ServerLabels" - - "pin_to_sibling" "ServerButton16" - "pin_corner_to_sibling" "LEFT" - "pin_to_sibling_corner" "LEFT" - } - - "Map17" - { - "ControlName" "Label" - "labelText" "" - "xpos" "-1050" - "ypos" "0" - "zpos" "0" - "textalignment" "center" - "wide" "330" - "zpos" "4" - "fontHeight" "30" - "tall" "30" - "classname" "ServerLabels" - - "pin_to_sibling" "ServerButton17" - "pin_corner_to_sibling" "LEFT" - "pin_to_sibling_corner" "LEFT" - } - - "Map18" - { - "ControlName" "Label" - "labelText" "" - "xpos" "-1050" - "ypos" "0" - "zpos" "0" - "textalignment" "center" - "wide" "330" - "zpos" "4" - "fontHeight" "30" - "tall" "30" - "classname" "ServerLabels" - - "pin_to_sibling" "ServerButton18" - "pin_corner_to_sibling" "LEFT" - "pin_to_sibling_corner" "LEFT" - } - } diff --git a/resource/ui/menus/R5R/panels/serverdesc.res b/resource/ui/menus/CustomLobby/panels/serverdesc.res similarity index 99% rename from resource/ui/menus/R5R/panels/serverdesc.res rename to resource/ui/menus/CustomLobby/panels/serverdesc.res index a4737db98..c1ffc572b 100644 --- a/resource/ui/menus/R5R/panels/serverdesc.res +++ b/resource/ui/menus/CustomLobby/panels/serverdesc.res @@ -170,4 +170,3 @@ pin_to_sibling_corner CENTER } } - diff --git a/resource/ui/menus/R5R/panels/servername.res b/resource/ui/menus/CustomLobby/panels/servername.res similarity index 99% rename from resource/ui/menus/R5R/panels/servername.res rename to resource/ui/menus/CustomLobby/panels/servername.res index 9dcba7608..0e98c3831 100644 --- a/resource/ui/menus/R5R/panels/servername.res +++ b/resource/ui/menus/CustomLobby/panels/servername.res @@ -170,4 +170,3 @@ pin_to_sibling_corner CENTER } } - diff --git a/resource/ui/menus/R5R/panels/visibility.res b/resource/ui/menus/CustomLobby/panels/visibility.res similarity index 99% rename from resource/ui/menus/R5R/panels/visibility.res rename to resource/ui/menus/CustomLobby/panels/visibility.res index 8cbb60c6b..17ddd0d90 100644 --- a/resource/ui/menus/R5R/panels/visibility.res +++ b/resource/ui/menus/CustomLobby/panels/visibility.res @@ -102,4 +102,4 @@ pin_corner_to_sibling TOP_LEFT pin_to_sibling_corner TOP_LEFT } -} +} \ No newline at end of file diff --git a/resource/ui/menus/R5R/panels/createserver.res b/resource/ui/menus/R5R/panels/createserver.res deleted file mode 100644 index 4665580da..000000000 --- a/resource/ui/menus/R5R/panels/createserver.res +++ /dev/null @@ -1,600 +0,0 @@ -scripts/resource/ui/menus/R5R/panels/createserver.res -{ - "DarkenBackground" - { - ControlName Label - xpos 0 - ypos 0 - wide %100 - tall %100 - labelText "" - bgcolor_override "0 0 0 0" - visible 1 - paintbackground 1 - } - - "CreateServerBG" - { - ControlName ImagePanel - ypos -676 - xpos -20 - wide 490 - tall 280 - fillColor "30 30 30 100" - drawColor "30 30 30 100" - visible 1 - zpos 0 - pin_to_sibling DarkenBackground - pin_corner_to_sibling BOTTOM_LEFT - pin_to_sibling_corner BOTTOM_LEFT - } - - "CreateServerBGTopLine" - { - ControlName ImagePanel - wide 490 - tall 3 - fillColor "195 29 38 200" - drawColor "195 29 38 200" - visible 1 - zpos 0 - pin_to_sibling CreateServerBG - pin_corner_to_sibling TOP - pin_to_sibling_corner BOTTOM - } - - "CreateServerBGBottomLine" - { - ControlName ImagePanel - wide 490 - tall 40 - fillColor "195 29 38 200" - drawColor "195 29 38 200" - visible 1 - zpos 0 - pin_to_sibling CreateServerBG - pin_corner_to_sibling BOTTOM - pin_to_sibling_corner TOP - } - - ServerMapImg - { - ControlName RuiPanel - wide 480 - tall 270 - visible 1 - rui "ui/custom_loadscreen_image.rpak" - ypos -215 - xpos -25 - zpos 4 - - pin_to_sibling DarkenBackground - pin_corner_to_sibling BOTTOM_LEFT - pin_to_sibling_corner BOTTOM_LEFT - } - - "ServerMapImgTopLine" - { - ControlName ImagePanel - wide 480 - tall 3 - fillColor "195 29 38 200" - drawColor "195 29 38 200" - visible 1 - zpos 0 - pin_to_sibling ServerMapImg - pin_corner_to_sibling TOP - pin_to_sibling_corner BOTTOM - } - - "ServerMapImgBottomLine" - { - ControlName ImagePanel - wide 480 - tall 3 - fillColor "195 29 38 200" - drawColor "195 29 38 200" - visible 1 - zpos 0 - pin_to_sibling ServerMapImg - pin_corner_to_sibling BOTTOM - pin_to_sibling_corner TOP - } - - ServerSettingsText - { - ControlName Label - labelText "Server Settings" - "font" "DefaultBold_41" - "allcaps" "1" - auto_wide_tocontents 1 - zpos 10 - fontHeight 25 - xpos 0 - ypos 0 - "fgcolor_override" "255 255 255 255" - - pin_to_sibling CreateServerBGBottomLine - pin_corner_to_sibling CENTER - pin_to_sibling_corner CENTER - } - - PlaylistNameBG - { - ControlName ImagePanel - xpos 0 - ypos -15 - tall 30 - wide 225 - fillColor "30 30 30 200" - drawColor "30 30 30 200" - wrap 1 - visible 1 - zpos 6 - pin_to_sibling ServerMapImg - pin_corner_to_sibling BOTTOM_RIGHT - pin_to_sibling_corner BOTTOM_RIGHT - } - - PlaylistInfoEdit - { - ControlName Label - labelText "flowstate" - font Default_27_Outline - "allcaps" "1" - wide 225 - zpos 7 - fontHeight 25 - textAlignment "center" - xpos 5 - ypos 0 - fgcolor_override "240 240 240 255" - bgcolor_override "0 0 0 255" - - pin_to_sibling PlaylistNameBG - pin_corner_to_sibling RIGHT - pin_to_sibling_corner RIGHT - } - - MapServerNameBG - { - ControlName ImagePanel - xpos 0 - ypos -15 - tall 30 - wide 480 - fillColor "30 30 30 200" - drawColor "30 30 30 200" - wrap 1 - visible 1 - zpos 6 - pin_to_sibling ServerMapImg - pin_corner_to_sibling TOP_LEFT - pin_to_sibling_corner TOP_LEFT - } - - MapServerNameInfoEdit - { - ControlName Label - labelText "Some Server Name" - font Default_27_Outline - "allcaps" "1" - wide 480 - zpos 7 - fontHeight 25 - textAlignment "center" - xpos 0 - ypos 0 - fgcolor_override "240 240 240 255" - bgcolor_override "0 0 0 255" - - pin_to_sibling MapServerNameBG - pin_corner_to_sibling LEFT - pin_to_sibling_corner LEFT - } - - VisBG - { - ControlName ImagePanel - xpos 0 - ypos -15 - tall 30 - wide 125 - fillColor "30 30 30 200" - drawColor "30 30 30 200" - wrap 1 - visible 1 - zpos 6 - pin_to_sibling ServerMapImg - pin_corner_to_sibling BOTTOM_LEFT - pin_to_sibling_corner BOTTOM_LEFT - } - - VisInfoEdit - { - ControlName Label - labelText "flowstate" - font Default_27_Outline - "allcaps" "1" - wide 125 - zpos 7 - fontHeight 25 - textAlignment "center" - xpos 0 - ypos 0 - fgcolor_override "240 240 240 255" - bgcolor_override "0 0 0 255" - - pin_to_sibling VisBG - pin_corner_to_sibling RIGHT - pin_to_sibling_corner RIGHT - } - - StartGamePanel - { - ControlName RuiPanel - wide 480 - tall 50 - xpos 0 - ypos 10 - - rui "ui/control_options_description.rpak" - - visible 1 - zpos 0 - - pin_to_sibling ServerMapImg - pin_corner_to_sibling BOTTOM_LEFT - pin_to_sibling_corner TOP_LEFT - } - - BtnStartGame - { - ControlName RuiButton - InheritProperties RuiSmallButton - wide 480 - tall 50 - xpos 0 - ypos 0 - zpos 6 - - - pin_to_sibling StartGamePanel - pin_corner_to_sibling CENTER - pin_to_sibling_corner CENTER - } - - BtnStartGameText - { - ControlName Label - labelText "Start Game" - "font" "DefaultBold_41" - "allcaps" "1" - auto_wide_tocontents 1 - zpos 3 - fontHeight 25 - xpos 0 - ypos 0 - "fgcolor_override" "255 255 255 255" - - pin_to_sibling StartGamePanel - pin_corner_to_sibling CENTER - pin_to_sibling_corner CENTER - } - - PlaylistPanel - { - ControlName RuiPanel - wide 480 - tall 50 - xpos 0 - ypos 5 - - rui "ui/control_options_description.rpak" - - visible 1 - zpos 0 - - pin_to_sibling VisPanel - pin_corner_to_sibling BOTTOM_LEFT - pin_to_sibling_corner TOP_LEFT - } - - BtnPlaylist - { - ControlName RuiButton - InheritProperties RuiSmallButton - wide 480 - tall 50 - xpos 0 - ypos 0 - zpos 6 - classname "createserverbuttons" - "scriptID" "1" - - - pin_to_sibling PlaylistPanel - pin_corner_to_sibling CENTER - pin_to_sibling_corner CENTER - } - - BtnPlaylistText - { - ControlName Label - labelText "Select Playlist" - "font" "DefaultBold_41" - "allcaps" "1" - auto_wide_tocontents 1 - zpos 3 - fontHeight 25 - xpos 0 - ypos 0 - "fgcolor_override" "255 255 255 255" - - pin_to_sibling PlaylistPanel - pin_corner_to_sibling CENTER - pin_to_sibling_corner CENTER - } - - VisPanel - { - ControlName RuiPanel - wide 480 - tall 50 - xpos 0 - ypos 135 - - rui "ui/control_options_description.rpak" - - visible 1 - zpos 0 - - pin_to_sibling StartGamePanel - pin_corner_to_sibling BOTTOM_LEFT - pin_to_sibling_corner TOP_LEFT - } - - BtnVis - { - ControlName RuiButton - InheritProperties RuiSmallButton - wide 480 - tall 50 - xpos 0 - ypos 0 - zpos 6 - classname "createserverbuttons" - "scriptID" "2" - - - pin_to_sibling VisPanel - pin_corner_to_sibling CENTER - pin_to_sibling_corner CENTER - } - - BtnVisText - { - ControlName Label - labelText "Select Visibility" - "font" "DefaultBold_41" - "allcaps" "1" - auto_wide_tocontents 1 - zpos 3 - fontHeight 25 - xpos 0 - ypos 0 - "fgcolor_override" "255 255 255 255" - - pin_to_sibling VisPanel - pin_corner_to_sibling CENTER - pin_to_sibling_corner CENTER - } - - MapPanel - { - ControlName RuiPanel - wide 480 - tall 50 - xpos 0 - ypos 5 - - rui "ui/control_options_description.rpak" - - visible 1 - zpos 0 - - pin_to_sibling PlaylistPanel - pin_corner_to_sibling BOTTOM_LEFT - pin_to_sibling_corner TOP_LEFT - } - - BtnMap - { - ControlName RuiButton - InheritProperties RuiSmallButton - wide 480 - tall 50 - xpos 0 - ypos 0 - zpos 6 - classname "createserverbuttons" - "scriptID" "0" - - - pin_to_sibling MapPanel - pin_corner_to_sibling CENTER - pin_to_sibling_corner CENTER - } - - BtnMapText - { - ControlName Label - labelText "Select Map" - "font" "DefaultBold_41" - "allcaps" "1" - auto_wide_tocontents 1 - zpos 3 - fontHeight 25 - xpos 0 - ypos 0 - "fgcolor_override" "255 255 255 255" - - pin_to_sibling MapPanel - pin_corner_to_sibling CENTER - pin_to_sibling_corner CENTER - } - - ServerNamePanel - { - ControlName RuiPanel - wide 480 - tall 50 - xpos 0 - ypos 5 - - rui "ui/control_options_description.rpak" - - visible 1 - zpos 0 - - pin_to_sibling BtnServerDesc - pin_corner_to_sibling BOTTOM_LEFT - pin_to_sibling_corner TOP_LEFT - } - - BtnServerName - { - ControlName RuiButton - InheritProperties RuiSmallButton - wide 480 - tall 50 - xpos 0 - ypos 0 - zpos 6 - classname "createserverbuttons" - "scriptID" "3" - - - pin_to_sibling ServerNamePanel - pin_corner_to_sibling CENTER - pin_to_sibling_corner CENTER - } - - BtnServerNameTxT - { - ControlName Label - labelText "Server Name" - "font" "DefaultBold_41" - "allcaps" "1" - auto_wide_tocontents 1 - zpos 3 - fontHeight 25 - xpos 0 - ypos 0 - "fgcolor_override" "255 255 255 255" - - pin_to_sibling ServerNamePanel - pin_corner_to_sibling CENTER - pin_to_sibling_corner CENTER - } - - ServerDescPanel - { - ControlName RuiPanel - wide 480 - tall 50 - xpos 0 - ypos 5 - - rui "ui/control_options_description.rpak" - - visible 1 - zpos 0 - - pin_to_sibling MapPanel - pin_corner_to_sibling BOTTOM_LEFT - pin_to_sibling_corner TOP_LEFT - } - - BtnServerDesc - { - ControlName RuiButton - InheritProperties RuiSmallButton - wide 480 - tall 50 - xpos 0 - ypos 0 - zpos 6 - classname "createserverbuttons" - "scriptID" "4" - - - pin_to_sibling ServerDescPanel - pin_corner_to_sibling CENTER - pin_to_sibling_corner CENTER - } - - BtnServerDescTxT - { - ControlName Label - labelText "Server Description" - "font" "DefaultBold_41" - "allcaps" "1" - auto_wide_tocontents 1 - zpos 3 - fontHeight 25 - xpos 0 - ypos 0 - "fgcolor_override" "255 255 255 255" - - pin_to_sibling ServerDescPanel - pin_corner_to_sibling CENTER - pin_to_sibling_corner CENTER - } - - "R5RPlaylistPanel" - { - "ControlName" "CNestedPanel" - "ypos" "20" - "wide" "f0" - "tall" "960" - "visible" "0" - "controlSettingsFile" "scripts/resource/ui/menus/R5R/panels/playlist.res" - "proportionalToParent" "1" - - "pin_to_sibling" "DarkenBackground" - "pin_corner_to_sibling" "TOP_RIGHT" - "pin_to_sibling_corner" "TOP_RIGHT" - } - - "R5RMapPanel" - { - "ControlName" "CNestedPanel" - "ypos" "20" - "wide" "f0" - "tall" "960" - "visible" "0" - "controlSettingsFile" "scripts/resource/ui/menus/R5R/panels/map.res" - "proportionalToParent" "1" - - "pin_to_sibling" "DarkenBackground" - "pin_corner_to_sibling" "TOP_RIGHT" - "pin_to_sibling_corner" "TOP_RIGHT" - } - - "R5RVisPanel" - { - "ControlName" "CNestedPanel" - "ypos" "20" - "wide" "f0" - "tall" "960" - "visible" "0" - "controlSettingsFile" "scripts/resource/ui/menus/R5R/panels/visibility.res" - "proportionalToParent" "1" - - "pin_to_sibling" "DarkenBackground" - "pin_corner_to_sibling" "TOP_RIGHT" - "pin_to_sibling_corner" "TOP_RIGHT" - } -} - diff --git a/resource/ui/menus/R5R/panels/home.res b/resource/ui/menus/R5R/panels/home.res deleted file mode 100644 index 253ba510d..000000000 --- a/resource/ui/menus/R5R/panels/home.res +++ /dev/null @@ -1,215 +0,0 @@ -"scripts/resource/ui/menus/R5R/panels/home.res" -{ - "DarkenBackground" - { - "ControlName" "Label" - "xpos" "0" - "ypos" "0" - "zpos" "0" - "wide" "%100" - "tall" "%100" - "labelText" "" - "bgcolor_override" "0 0 0 0" - "visible" "1" - "paintbackground" "1" - } - - "HomeBackground" - { - "ControlName" "ImagePanel" - "wide" "500" - "tall" "870" - "visible" "1" - "scaleImage" "1" - "xpos" "-30" - "ypos" "-40" - "zpos" "0" - "fillColor" "30 30 30 200" - "drawColor" "30 30 30 200" - - "pin_to_sibling" "DarkenBackground" - "pin_corner_to_sibling" "TOP_LEFT" - "pin_to_sibling_corner" "TOP_LEFT" - } - - "InPlayersLobby" - { - "ControlName" "ImagePanel" - "wide" "350" - "tall" "75" - "visible" "1" - "scaleImage" "1" - "xpos" "0" - "ypos" "-40" - "zpos" "0" - "fillColor" "30 30 30 200" - "drawColor" "30 30 30 200" - - "pin_to_sibling" "DarkenBackground" - "pin_corner_to_sibling" "TOP_RIGHT" - "pin_to_sibling_corner" "TOP_RIGHT" - } - - "InPlayersLobbyText" - { - "ControlName" "Label" - "xpos" "0" - "ypos" "0" - "auto_wide_tocontents" "1" - "tall" "40" - "visible" "1" - "fontHeight" "30" - "labelText" "You are in lobby" - "font" "DefaultBold_41" - "allcaps" "0" - "fgcolor_override" "255 100 100 255" - - "pin_to_sibling" "InPlayersLobby" - "pin_corner_to_sibling" "CENTER" - "pin_to_sibling_corner" "CENTER" - } - - "R5RPicBox" - { - "ControlName" "RuiPanel" - "wide" "501" - "tall" "275" - "rui" "ui/basic_image.rpak" - "visible" "1" - "scaleImage" "1" - - "pin_to_sibling" "HomeBackground" - "pin_corner_to_sibling" "TOP" - "pin_to_sibling_corner" "TOP" - } - - "Welcome" - { - "ControlName" "Label" - "xpos" "-25" - "ypos" "20" - "auto_wide_tocontents" "1" - "tall" "40" - "visible" "1" - "fontHeight" "30" - "labelText" "Welcome to R5Reloaded" - "font" "DefaultBold_41" - "allcaps" "0" - "fgcolor_override" "255 100 100 255" - - "pin_to_sibling" "R5RPicBox" - "pin_corner_to_sibling" "TOP_LEFT" - "pin_to_sibling_corner" "BOTTOM_LEFT" - } - - "Info" - { - "ControlName" "Label" - "xpos" "0" - "ypos" "20" - "wide" "450" - "tall" "200" - "visible" "1" - "wrap" "1" - "fontHeight" "25" - "textAlignment" "north-west" - "labelText" "This project allows you to run APEX Legends with mods, by running the embedded server and loading custom scripts/global compile lists into the scripting VM. This allows you to create custom gamemodes, levels, weapons and more. " - "font" "DefaultBold_41" - "allcaps" "0" - "fgcolor_override" "200 200 200 255" - - "pin_to_sibling" "Welcome" - "pin_corner_to_sibling" "TOP_LEFT" - "pin_to_sibling_corner" "BOTTOM_LEFT" - } - - "Welcome2" - { - "ControlName" "Label" - "xpos" "0" - "ypos" "45" - "auto_wide_tocontents" "1" - "tall" "40" - "visible" "1" - "fontHeight" "30" - "labelText" "You're using Flowstate scripts!" - "font" "DefaultBold_41" - "allcaps" "0" - "fgcolor_override" "255 100 100 255" - - "pin_to_sibling" "Info2" - "pin_corner_to_sibling" "TOP_LEFT" - "pin_to_sibling_corner" "TOP_LEFT" - } - - "Info2" - { - "ControlName" "Label" - "xpos" "0" - "ypos" "5" - "wide" "450" - "tall" "300" - "visible" "1" - "wrap" "1" - "fontHeight" "25" - "textAlignment" "north-west" - "labelText" "Flowstate is a package of scripts for R5 Reloaded (Modded Apex Legends) that includes a large number of bugs fixes and new features. It also includes exclusive content made by the community like abilities, gamemodes or maps!" - "font" "DefaultBold_41" - "allcaps" "0" - "fgcolor_override" "200 200 200 255" - - "pin_to_sibling" "Info" - "pin_corner_to_sibling" "TOP_LEFT" - "pin_to_sibling_corner" "BOTTOM_LEFT" - } - - "VersionNumber" - { - "ControlName" "Label" - "labelText" "flowstate" - "font" "Default_27_Outline" - "allcaps" "1" - "wide" "225" - "zpos" "7" - "fontHeight" "25" - "xpos" "-15" - "ypos" "-15" - "textAlignment" "east" - "fgcolor_override" "240 240 240 255" - "bgcolor_override" "0 0 0 255" - visible 0 - - "pin_to_sibling" "HomeBackground" - "pin_corner_to_sibling" "BOTTOM_RIGHT" - "pin_to_sibling_corner" "BOTTOM_RIGHT" - } - - SelfButton - { - ControlName RuiButton - wide 340 - tall 88 - xpos 0 - ypos -70 - rui "ui/lobby_friend_button.rpak" - labelText "" - visible 1 - cursorVelocityModifier 0.7 - scriptID -1 - rightClickEvents 0 - tabPosition 1 - - proportionalToParent 1 - - ruiArgs - { - canViewStats 0 - isLeader 1 - } - - pin_to_sibling DarkenBackground - pin_corner_to_sibling TOP - pin_to_sibling_corner TOP - } -} - diff --git a/resource/ui/menus/R5R/panels/kickplayer.res b/resource/ui/menus/R5R/panels/kickplayer.res deleted file mode 100644 index 05d99540a..000000000 --- a/resource/ui/menus/R5R/panels/kickplayer.res +++ /dev/null @@ -1,265 +0,0 @@ -"scripts/resource/ui/menus/R5R/panels/kickplayer.res" -{ - "DarkenBackground" - { - "ControlName" "Label" - "xpos" "0" - "ypos" "0" - "zpos" "50" - "wide" "f0" - "tall" "f0" - "bgcolor_override" "50 50 50 200" - "labelText" "" - "visible" "1" - "paintbackground" "1" - } - - "PanelBG" - { - "ControlName" "Label" - "xpos" "0" - "ypos" "0" - "zpos" "55" - "wide" "f0" - "tall" "350" - "labelText" "" - "bgcolor_override" "25 25 25 150" - "visible" "1" - "paintbackground" "1" - - "pin_to_sibling" "DarkenBackground" - "pin_corner_to_sibling" "LEFT" - "pin_to_sibling_corner" "LEFT" - } - - KickTopMessage - { - ControlName Label - labelText "Player Options" - "font" "DefaultBold_41" - "allcaps" "1" - auto_wide_tocontents 1 - zpos 71 - fontHeight 40 - xpos 0 - ypos -25 - "fgcolor_override" "255 255 255 255" - - "pin_to_sibling" "PanelBG" - "pin_corner_to_sibling" "TOP" - "pin_to_sibling_corner" "TOP" - } - - SetPlayerKickMessage - { - ControlName Label - labelText "Are you sure you want to kick this player?" - "font" "DefaultBold_41" - "allcaps" "1" - auto_wide_tocontents 1 - zpos 71 - fontHeight 35 - xpos 0 - ypos -25 - "fgcolor_override" "255 255 255 255" - - "pin_to_sibling" "PanelBG" - "pin_corner_to_sibling" "CENTER" - "pin_to_sibling_corner" "CENTER" - } - - "PanelTopBG" - { - "ControlName" "Label" - "xpos" "0" - "ypos" "0" - "zpos" "55" - "wide" "f0" - "tall" "3" - "labelText" "" - "bgcolor_override" "195 29 38 200" - "visible" "1" - "paintbackground" "1" - - "pin_to_sibling" "PanelBG" - "pin_corner_to_sibling" "BOTTOM" - "pin_to_sibling_corner" "TOP" - } - - "PanelBottomBG" - { - "ControlName" "Label" - "xpos" "0" - "ypos" "0" - "zpos" "55" - "wide" "f0" - "tall" "3" - "labelText" "" - "bgcolor_override" "195 29 38 200" - "visible" "1" - "paintbackground" "1" - - "pin_to_sibling" "PanelBG" - "pin_corner_to_sibling" "TOP" - "pin_to_sibling_corner" "BOTTOM" - } - - BanPanel - { - ControlName RuiPanel - wide 300 - tall 50 - xpos 0 - ypos -25 - - rui "ui/control_options_description.rpak" - - visible 1 - zpos 70 - - pin_to_sibling PanelBG - pin_corner_to_sibling BOTTOM - pin_to_sibling_corner BOTTOM - } - - BtnBan - { - ControlName RuiButton - InheritProperties RuiSmallButton - wide 300 - tall 50 - xpos 0 - ypos 0 - zpos 72 - scriptID 1 - - - pin_to_sibling BanPanel - pin_corner_to_sibling CENTER - pin_to_sibling_corner CENTER - } - - BtnBanText - { - ControlName Label - labelText "Ban" - "font" "DefaultBold_41" - "allcaps" "1" - auto_wide_tocontents 1 - zpos 71 - fontHeight 25 - xpos 0 - ypos 0 - "fgcolor_override" "255 255 255 255" - - pin_to_sibling BanPanel - pin_corner_to_sibling CENTER - pin_to_sibling_corner CENTER - } - - KickPanel - { - ControlName RuiPanel - wide 300 - tall 50 - xpos 5 - ypos 0 - - rui "ui/control_options_description.rpak" - - visible 1 - zpos 70 - - pin_to_sibling BanPanel - pin_corner_to_sibling TOP_RIGHT - pin_to_sibling_corner TOP_LEFT - } - - BtnKick - { - ControlName RuiButton - InheritProperties RuiSmallButton - wide 300 - tall 50 - xpos 0 - ypos 0 - zpos 72 - scriptID 0 - - - pin_to_sibling KickPanel - pin_corner_to_sibling CENTER - pin_to_sibling_corner CENTER - } - - BtnKickText - { - ControlName Label - labelText "Kick" - "font" "DefaultBold_41" - "allcaps" "1" - auto_wide_tocontents 1 - zpos 71 - fontHeight 25 - xpos 0 - ypos 0 - "fgcolor_override" "255 255 255 255" - - pin_to_sibling KickPanel - pin_corner_to_sibling CENTER - pin_to_sibling_corner CENTER - } - - CancelPanel - { - ControlName RuiPanel - wide 300 - tall 50 - xpos 5 - ypos 0 - - rui "ui/control_options_description.rpak" - - visible 1 - zpos 70 - - pin_to_sibling BanPanel - pin_corner_to_sibling LEFT - pin_to_sibling_corner RIGHT - } - - BtnCancel - { - ControlName RuiButton - InheritProperties RuiSmallButton - wide 300 - tall 50 - xpos 0 - ypos 0 - zpos 72 - - - pin_to_sibling CancelPanel - pin_corner_to_sibling CENTER - pin_to_sibling_corner CENTER - } - - BtnCancelText - { - ControlName Label - labelText "Cancel" - "font" "DefaultBold_41" - "allcaps" "1" - auto_wide_tocontents 1 - zpos 71 - fontHeight 25 - xpos 0 - ypos 0 - "fgcolor_override" "255 255 255 255" - - pin_to_sibling CancelPanel - pin_corner_to_sibling CENTER - pin_to_sibling_corner CENTER - } -} - diff --git a/resource/ui/menus/R5R/panels/matchstarting.res b/resource/ui/menus/R5R/panels/matchstarting.res deleted file mode 100644 index b677891f1..000000000 --- a/resource/ui/menus/R5R/panels/matchstarting.res +++ /dev/null @@ -1,140 +0,0 @@ -"scripts/resource/ui/menus/R5R/panels/matchstarting.res" -{ - "DarkenBackground" - { - "ControlName" "Label" - "xpos" "0" - "ypos" "0" - "zpos" "50" - "wide" "f0" - "tall" "f0" - "bgcolor_override" "50 50 50 200" - "labelText" "" - "visible" "1" - "paintbackground" "1" - } - - "PanelBG" - { - "ControlName" "Label" - "xpos" "0" - "ypos" "0" - "zpos" "55" - "wide" "f0" - "tall" "350" - "labelText" "" - "bgcolor_override" "25 25 25 150" - "visible" "1" - "paintbackground" "1" - - "pin_to_sibling" "DarkenBackground" - "pin_corner_to_sibling" "LEFT" - "pin_to_sibling_corner" "LEFT" - } - - TopMessage - { - ControlName Label - labelText "Match Starting" - "font" "DefaultBold_41" - "allcaps" "1" - auto_wide_tocontents 1 - zpos 71 - fontHeight 60 - tall 60 - xpos 0 - ypos -50 - "fgcolor_override" "255 255 255 255" - - "pin_to_sibling" "PanelBG" - "pin_corner_to_sibling" "TOP" - "pin_to_sibling_corner" "TOP" - } - - MapAndGamemode - { - ControlName Label - labelText "FLOWSTATE BY @CAFEFPS" - "font" "DefaultBold_41" - "allcaps" "1" - auto_wide_tocontents 1 - zpos 71 - fontHeight 40 - tall 40 - xpos 0 - ypos 20 - "fgcolor_override" "200 200 200 255" - - "pin_to_sibling" "TopMessage" - "pin_corner_to_sibling" "TOP" - "pin_to_sibling_corner" "BOTTOM" - } - - "PanelTopBG" - { - "ControlName" "Label" - "xpos" "0" - "ypos" "0" - "zpos" "55" - "wide" "f0" - "tall" "3" - "labelText" "" - "bgcolor_override" "195 29 38 200" - "visible" "1" - "paintbackground" "1" - - "pin_to_sibling" "PanelBG" - "pin_corner_to_sibling" "BOTTOM" - "pin_to_sibling_corner" "TOP" - } - - "PanelBottomBG" - { - "ControlName" "Label" - "xpos" "0" - "ypos" "0" - "zpos" "55" - "wide" "f0" - "tall" "3" - "labelText" "" - "bgcolor_override" "195 29 38 200" - "visible" "1" - "paintbackground" "1" - - "pin_to_sibling" "PanelBG" - "pin_corner_to_sibling" "TOP" - "pin_to_sibling_corner" "BOTTOM" - } - - DialogSpinner - { - ControlName RuiPanel - InheritProperties RuiDialogSpinner - classname DialogSpinnerClass - xpos 0 - ypos 75 - - pin_to_sibling PanelBG - pin_corner_to_sibling CENTER - pin_to_sibling_corner CENTER - } - - Timer - { - ControlName Label - labelText "5" - "font" "DefaultBold_41" - "allcaps" "1" - auto_wide_tocontents 1 - zpos 71 - fontHeight 35 - xpos 0 - ypos 0 - "fgcolor_override" "255 255 255 255" - - "pin_to_sibling" "DialogSpinner" - "pin_corner_to_sibling" "CENTER" - "pin_to_sibling_corner" "CENTER" - } -} - diff --git a/resource/ui/menus/weaponmods.menu b/resource/ui/menus/weaponmods.menu new file mode 100644 index 000000000..e35aef52e --- /dev/null +++ b/resource/ui/menus/weaponmods.menu @@ -0,0 +1,1563 @@ +"scripts/resource/ui/menus/CTF/ctfvotemenu.menu" +{ + "menu" + { + "ControlName" "Frame" + "xpos" "0" + "ypos" "0" + "zpos" "3" + "wide" "f0" + "tall" "f0" + "autoResize" "0" + "pinCorner" "0" + "visible" "1" + "enabled" "1" + "tabPosition" "0" + "PaintBackgroundType" "0" + "infocus_bgcolor_override" "0 0 0 0" + "outoffocus_bgcolor_override" "0 0 0 0" + "modal" "1" + + "DarkenBackground" + { + "ControlName" "Label" + "xpos" "0" + "ypos" "0" + "wide" "%100" + "tall" "%100" + "labelText" "" + "bgcolor_override" "0 0 0 20" + "visible" "1" + "paintbackground" "1" + } + + "ModsBG" + { + "ControlName" "Label" + "xpos" "0" + "ypos" "0" + "wide" "100" + "tall" "100" + "labelText" "" + "bgcolor_override" "0 0 0 200" + "visible" "1" + "paintbackground" "1" + + pin_to_sibling DarkenBackground + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner BOTTOM_LEFT + } + + OpticCata + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "CataButton" + wide 100 + tall 100 + ypos 0 + xpos 15 + zpos 10 + scriptID "0" + + pin_to_sibling DarkenBackground + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner BOTTOM_LEFT + } + + BarrelCata + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "CataButton" + wide 100 + tall 100 + ypos 0 + xpos 15 + zpos 10 + scriptID "1" + + pin_to_sibling DarkenBackground + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner BOTTOM_LEFT + } + + MagsCata + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "CataButton" + wide 100 + tall 100 + ypos 0 + xpos 15 + zpos 10 + scriptID "2" + + pin_to_sibling DarkenBackground + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner BOTTOM_LEFT + } + + StocksCata + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "CataButton" + wide 100 + tall 100 + ypos 0 + xpos 15 + zpos 10 + scriptID "3" + + pin_to_sibling DarkenBackground + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner BOTTOM_LEFT + } + + BoltsCata + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "CataButton" + wide 100 + tall 100 + ypos 0 + xpos 15 + zpos 10 + scriptID "4" + + pin_to_sibling DarkenBackground + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner BOTTOM_LEFT + } + + HopUpCata + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "CataButton" + wide 100 + tall 100 + ypos 0 + xpos 15 + zpos 10 + scriptID "5" + + pin_to_sibling DarkenBackground + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner BOTTOM_LEFT + } + + Optic0 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "OpticsButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "0" + + pin_to_sibling OpticCata + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Optic1 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "OpticsButton" + wide 100 + tall 100 + ypos 0 + xpos 10 + zpos 10 + scriptID "1" + + pin_to_sibling Optic0 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner BOTTOM_RIGHT + } + + Optic2 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "OpticsButton" + wide 100 + tall 100 + ypos 0 + xpos 10 + zpos 10 + scriptID "2" + + pin_to_sibling Optic1 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner BOTTOM_RIGHT + } + + Optic3 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "OpticsButton" + wide 100 + tall 100 + ypos 0 + xpos 10 + zpos 10 + scriptID "3" + + pin_to_sibling Optic2 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner BOTTOM_RIGHT + } + + Optic4 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "OpticsButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "4" + + pin_to_sibling Optic0 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Optic5 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "OpticsButton" + wide 100 + tall 100 + ypos 0 + xpos 10 + zpos 10 + scriptID "5" + + pin_to_sibling Optic4 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner BOTTOM_RIGHT + } + + Optic6 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "OpticsButton" + wide 100 + tall 100 + ypos 0 + xpos 10 + zpos 10 + scriptID "6" + + pin_to_sibling Optic5 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner BOTTOM_RIGHT + } + + Optic7 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "OpticsButton" + wide 100 + tall 100 + ypos 0 + xpos 10 + zpos 10 + scriptID "7" + + pin_to_sibling Optic6 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner BOTTOM_RIGHT + } + + Optic8 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "OpticsButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "8" + + pin_to_sibling Optic4 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Optic9 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "OpticsButton" + wide 100 + tall 100 + ypos 0 + xpos 10 + zpos 10 + scriptID "9" + + pin_to_sibling Optic8 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner BOTTOM_RIGHT + } + + Optic10 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "OpticsButton" + wide 100 + tall 100 + ypos 0 + xpos 10 + zpos 10 + scriptID "10" + + pin_to_sibling Optic9 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner BOTTOM_RIGHT + } + + Optic11 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "OpticsButton" + wide 100 + tall 100 + ypos 0 + xpos 10 + zpos 10 + scriptID "11" + + pin_to_sibling Optic10 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner BOTTOM_RIGHT + } + + Optic12 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "OpticsButton" + wide 100 + tall 100 + ypos 0 + xpos 10 + zpos 10 + scriptID "12" + + pin_to_sibling Optic11 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner BOTTOM_RIGHT + } + + Barrel0 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "BarrelButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "0" + + pin_to_sibling BarrelCata + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Barrel1 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "BarrelButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "1" + + pin_to_sibling Barrel0 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Barrel2 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "BarrelButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "2" + + pin_to_sibling Barrel1 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Barrel3 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "BarrelButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "3" + + pin_to_sibling Barrel2 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Barrel4 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "BarrelButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "4" + + pin_to_sibling Barrel3 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Barrel5 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "BarrelButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "5" + + pin_to_sibling Barrel4 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Barrel6 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "BarrelButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "6" + + pin_to_sibling Barrel5 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Barrel7 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "BarrelButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "7" + + pin_to_sibling Barrel6 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Barrel8 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "BarrelButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "8" + + pin_to_sibling Barrel7 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Barrel9 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "BarrelButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "9" + + pin_to_sibling Barrel8 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Barrel10 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "BarrelButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "10" + + pin_to_sibling Barrel9 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Barrel11 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "BarrelButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "11" + + pin_to_sibling Barrel10 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Barrel12 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "BarrelButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "12" + + pin_to_sibling Barrel11 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Magazine0 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "MagazineButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "0" + + pin_to_sibling MagsCata + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Magazine1 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "MagazineButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "1" + + pin_to_sibling Magazine0 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Magazine2 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "MagazineButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "2" + + pin_to_sibling Magazine1 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Magazine3 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "MagazineButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "3" + + pin_to_sibling Magazine2 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Magazine4 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "MagazineButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "4" + + pin_to_sibling Magazine3 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Magazine5 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "MagazineButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "5" + + pin_to_sibling Magazine4 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Magazine6 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "MagazineButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "6" + + pin_to_sibling Magazine5 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Magazine7 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "MagazineButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "7" + + pin_to_sibling Magazine6 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Magazine8 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "MagazineButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "8" + + pin_to_sibling Magazine7 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Magazine9 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "MagazineButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "9" + + pin_to_sibling Magazine8 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Magazine10 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "MagazineButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "10" + + pin_to_sibling Magazine9 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Magazine11 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "MagazineButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "11" + + pin_to_sibling Magazine10 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Magazine12 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "MagazineButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "12" + + pin_to_sibling Magazine11 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Stock0 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "StockButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "0" + + pin_to_sibling StocksCata + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Stock1 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "StockButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "1" + + pin_to_sibling Stock0 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Stock2 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "StockButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "2" + + pin_to_sibling Stock1 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Stock3 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "StockButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "3" + + pin_to_sibling Stock2 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Stock4 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "StockButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "4" + + pin_to_sibling Stock3 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Stock5 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "StockButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "5" + + pin_to_sibling Stock4 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Stock6 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "StockButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "6" + + pin_to_sibling Stock5 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Stock7 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "StockButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "7" + + pin_to_sibling Stock6 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Stock8 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "StockButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "8" + + pin_to_sibling Stock7 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Stock9 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "StockButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "9" + + pin_to_sibling Stock8 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Stock10 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "StockButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "10" + + pin_to_sibling Stock9 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Stock11 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "StockButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "11" + + pin_to_sibling Stock10 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Stock12 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "StockButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "12" + + pin_to_sibling Stock11 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Bolt0 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "BoltButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "0" + + pin_to_sibling BoltsCata + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Bolt1 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "BoltButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "1" + + pin_to_sibling Bolt0 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Bolt2 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "BoltButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "2" + + pin_to_sibling Bolt1 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Bolt3 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "BoltButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "3" + + pin_to_sibling Bolt2 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Bolt4 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "BoltButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "4" + + pin_to_sibling Bolt3 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Bolt5 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "BoltButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "5" + + pin_to_sibling Bolt5 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Bolt6 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "BoltButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "6" + + pin_to_sibling Bolt5 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Bolt7 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "BoltButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "7" + + pin_to_sibling Bolt6 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Bolt8 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "BoltButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "8" + + pin_to_sibling Bolt7 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Bolt9 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "BoltButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "9" + + pin_to_sibling Bolt8 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Bolt10 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "BoltButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "10" + + pin_to_sibling Bolt9 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Bolt11 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "BoltButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "11" + + pin_to_sibling Bolt10 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + Bolt12 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "BoltButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "12" + + pin_to_sibling Bolt11 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + HopUp0 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "HopUpButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "0" + + pin_to_sibling HopUpCata + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + HopUp1 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "HopUpButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "1" + + pin_to_sibling HopUp0 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + HopUp2 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "HopUpButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "2" + + pin_to_sibling DarkenBackground + pin_corner_to_sibling TOP_LEFT + pin_to_sibling_corner TOP_LEFT + } + + HopUp3 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "HopUpButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "3" + + pin_to_sibling HopUp2 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + HopUp4 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "HopUpButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "4" + + pin_to_sibling HopUp3 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + HopUp5 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "HopUpButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "5" + + pin_to_sibling HopUp4 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + HopUp6 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "HopUpButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "6" + + pin_to_sibling HopUp5 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + HopUp7 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "HopUpButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "7" + + pin_to_sibling HopUp6 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + HopUp8 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "HopUpButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "8" + + pin_to_sibling HopUp7 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + HopUp9 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "HopUpButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "9" + + pin_to_sibling HopUp8 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + HopUp10 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "HopUpButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "10" + + pin_to_sibling HopUp9 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + HopUp11 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "HopUpButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "11" + + pin_to_sibling HopUp10 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + + HopUp12 + { + sound_accept "UI_Menu_Accept" + ControlName RuiButton + InheritProperties SurvivalInventoryGridButton + classname "HopUpButton" + wide 100 + tall 100 + ypos 10 + xpos 0 + zpos 10 + scriptID "12" + + pin_to_sibling HopUp11 + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner TOP_LEFT + } + } +} diff --git a/vscripts/_remote_functions_mp.gnut b/vscripts/_remote_functions_mp.gnut index 64d41ecfe..c397763f2 100644 --- a/vscripts/_remote_functions_mp.gnut +++ b/vscripts/_remote_functions_mp.gnut @@ -593,13 +593,7 @@ void function RemoteFunctions_Init_Begin() if ( IsLobby()) { - Remote_RegisterClientFunction( "ServerCallback_LobbyVM_UpdateUI" ) - Remote_RegisterClientFunction( "ServerCallback_LobbyVM_StartingMatch" ) - Remote_RegisterClientFunction( "ServerCallback_LobbyVM_SelectionUpdated", "int", 0, 255 ) - Remote_RegisterClientFunction( "ServerCallback_ServerBrowser_JoinServer", "int", 0, 999 ) - Remote_RegisterClientFunction( "ServerCallback_ServerBrowser_RefreshServers" ) - - Remote_RegisterUntypedFunction_deprecated( "ServerCallback_LobbyVM_BuildClientString" ) + //Register networked variables for the lobby } if ( !IsLobby() ) diff --git a/vscripts/lobby/lobbyvm/_lobbyvm.nut b/vscripts/lobby/lobbyvm/_lobbyvm.nut index 0ccf1e9aa..99f051350 100644 --- a/vscripts/lobby/lobbyvm/_lobbyvm.nut +++ b/vscripts/lobby/lobbyvm/_lobbyvm.nut @@ -1,267 +1,13 @@ global function _LobbyVM_Init -array playerarray - -array PrivateMatchSettings = ["A R5Reloaded Server", "mp_rr_canyonlands_mu1", "fs_dm", "2"] - void function _LobbyVM_Init() { - AddCallback_OnClientConnected( void function(entity player) { thread _OnPlayerConnected(player) } ) - - AddClientCommandCallback("lobby_updateserversetting", ClientCommand_ChangedServerSetting) - AddClientCommandCallback("lobby_updateclient", ClientCommand_UpdateClient) - AddClientCommandCallback("lobby_kick", ClientCommand_KickPlayer) - AddClientCommandCallback("lobby_ban", ClientCommand_BanPlayer) - AddClientCommandCallback("lobby_startmatch", ClientCommand_StartMatch) - AddClientCommandCallback("lobby_joinserver", ClientCommand_JoinServer) - AddClientCommandCallback("lobby_refreshservers", ClientCommand_ResfreshServers) - - thread PlayerCheck() -} - -///////////////////////////////////////////// -// // -// Client Commands // -// // -///////////////////////////////////////////// - -bool function ClientCommand_ResfreshServers(entity player, array args) -{ - if( !IsValid( player ) ) - return false - - if( GetPlayerArray()[0] != player) - return false - - foreach( p in GetPlayerArray() ) { - Remote_CallFunction_Replay( p, "ServerCallback_ServerBrowser_RefreshServers" ) - } - - return true -} - -bool function ClientCommand_JoinServer(entity player, array args) -{ - if( !IsValid( player ) ) - return false - - if( GetPlayerArray()[0] != player) - return false - - if(args.len() < 1) - return false - - foreach( p in GetPlayerArray() ) { - if(p != player) - Remote_CallFunction_Replay( p, "ServerCallback_ServerBrowser_JoinServer", args[0].tointeger() ) - } - - //Host joins last otherwise the vm will get shut down before everyone can join - Remote_CallFunction_Replay( player, "ServerCallback_ServerBrowser_JoinServer", args[0].tointeger() ) - - return true + AddCallback_OnClientConnected(OnPlayerConnected) } -bool function ClientCommand_StartMatch(entity player, array args) +void function OnPlayerConnected(entity player) { - if( !IsValid( player ) ) - return false - - if( GetPlayerArray()[0] != player) - return false - - foreach( p in GetPlayerArray() ) { - if( !IsValid( p ) ) - continue - - SetTeam(p, TEAM_SPECTATOR) - Remote_CallFunction_Replay( p, "ServerCallback_LobbyVM_StartingMatch" ) - } - - return true -} - -bool function ClientCommand_KickPlayer(entity player, array args) -{ - if( !IsValid( player ) ) - return false - - if( GetPlayerArray()[0] != player) - return false - - if(args.len() < 1) - return false - - if(args[0] == ("[Host]")) - return false - - string playertokick - foreach(int i, arg in args) - { - playertokick += arg - } - - ServerCommand( "sv_kick \"" + playertokick + "\"" ) - - return true -} - -bool function ClientCommand_BanPlayer(entity player, array args) -{ - if( !IsValid( player ) ) - return false - - if( GetPlayerArray()[0] != player) - return false - - if(args.len() < 1) - return false - - if(args[0] == ("[Host]")) - return false - - string playertoban - foreach(int i, arg in args) - { - playertoban += arg - } - - ServerCommand( "sv_ban \"" + playertoban + "\"" ) - - return true -} - -bool function ClientCommand_UpdateClient(entity player, array args) -{ - if( !IsValid( player ) ) - return false - - UpdateServerSettings(player) - - Remote_CallFunction_Replay( player, "ServerCallback_LobbyVM_UpdateUI" ) - - return true -} - -bool function ClientCommand_ChangedServerSetting(entity player, array args) -{ - if( !IsValid( player ) ) - return false - - if( GetPlayerArray()[0] != player) - return false - - if(args.len() < 2) - return false - - int type = args[0].tointeger() - string text - - if(type == 0) { - foreach(int i, arg in args) { - if(i == 0) - continue - - if(i == 1) - text += arg - else - text += " " + arg - } - } - else - text = args[1] - - switch( type ) { - case 0: //Name - PrivateMatchSettings[0] = text; - break; - case 1: //Map - PrivateMatchSettings[1] = text; - break; - case 2: //Playlist - PrivateMatchSettings[2] = text; - break; - case 3: //Vis - PrivateMatchSettings[3] = text; - break; - } - - //Update all players - foreach( p in GetPlayerArray() ) { - if( !IsValid( p ) ) - continue - - UpdateServerSettings(p) - } - - return true -} - -///////////////////////////////////////////// -// // -// General Functions // -// // -///////////////////////////////////////////// - -void function PlayerCheck() -{ - //Kind of a hack way to check players, but onclientdisconnect was unreliable - bool hasclientdisconnected = false - while(true) - { - //Check to see if any player in the last array saved has become invalid - foreach( p in playerarray ) { - if( !IsValid( p ) ) { - //if so set bool to true and update player array - hasclientdisconnected = true - playerarray = GetPlayerArray() - } - } - - //Player/Players have become invalid, update everyones UI - if(hasclientdisconnected) { - foreach( p in playerarray ) { - if( IsValid( p ) ) - Remote_CallFunction_Replay( p, "ServerCallback_LobbyVM_UpdateUI" ) - } - - hasclientdisconnected = false - } - - wait 1; - } -} - -void function UpdateServerSettings(entity player) -{ - foreach(int type, string text in PrivateMatchSettings) - { - for ( int i = 0; i < text.len(); i++ ) { - Remote_CallFunction_NonReplay( player, "ServerCallback_LobbyVM_BuildClientString", text[i] ) - } - Remote_CallFunction_NonReplay( player, "ServerCallback_LobbyVM_SelectionUpdated", type ) - } -} - -void function _OnPlayerConnected(entity player) -{ - //Get current server settings and update players ui - UpdateServerSettings(player) - - GameRules_EnableGlobalChat(true) - - SetTeam(player, TEAM_IMC) - - //Grab the latest player array - playerarray = GetPlayerArray() - - //Update each players ui - foreach( p in playerarray ) - { - if( !IsValid( p ) ) - continue - - Remote_CallFunction_Replay( p, "ServerCallback_LobbyVM_UpdateUI" ) - Remote_CallFunction_Replay( p, "ServerCallback_ServerBrowser_RefreshServers" ) - } + LoadoutEntry entry = GetAllLoadoutSlots()[268] + ItemFlavor itemFlavor = ConvertLoadoutSlotContentsIndexToItemFlavor( entry, 6 ) + SetItemFlavorLoadoutSlot( ToEHI( player ), entry, itemFlavor ) } \ No newline at end of file diff --git a/vscripts/lobby/lobbyvm/cl_lobbyvm.nut b/vscripts/lobby/lobbyvm/cl_lobbyvm.nut index 724b4dde1..3539423b6 100644 --- a/vscripts/lobby/lobbyvm/cl_lobbyvm.nut +++ b/vscripts/lobby/lobbyvm/cl_lobbyvm.nut @@ -1,149 +1,6 @@ global function Cl_LobbyVM_Init -global function ServerCallback_LobbyVM_UpdateUI -global function ServerCallback_LobbyVM_SelectionUpdated -global function ServerCallback_LobbyVM_BuildClientString -global function ServerCallback_LobbyVM_StartingMatch -global function ServerCallback_ServerBrowser_JoinServer -global function ServerCallback_ServerBrowser_RefreshServers - -global function UICodeCallback_UpdateServerInfo -global function UICodeCallback_KickOrBanPlayer -global function UICallback_CheckForHost -global function UICallback_StartMatch -global function UICallback_ServerBrowserJoinServer -global function UICallback_RefreshServer -global function UICallback_SetHostName - -string tempstring = "" - void function Cl_LobbyVM_Init() { - AddClientCallback_OnResolutionChanged( OnResolutionChanged_UpdateClientUI ) -} - -void function OnResolutionChanged_UpdateClientUI() -{ - GetLocalClientPlayer().ClientCommand("lobby_updateclient") -} - -//////////////////////////////////////////////// -// -// UI CallBacks -// -//////////////////////////////////////////////// - -void function UICallback_SetHostName(string name) -{ - if(GetLocalClientPlayer() == GetPlayerArray()[0]) - GetLocalClientPlayer().ClientCommand("hostname " + name) -} - -void function UICallback_RefreshServer() -{ - if(GetLocalClientPlayer() == GetPlayerArray()[0]) - GetLocalClientPlayer().ClientCommand("lobby_refreshservers") -} - -void function UICallback_StartMatch() -{ - if(GetLocalClientPlayer() == GetPlayerArray()[0]) - GetLocalClientPlayer().ClientCommand("lobby_startmatch") -} - -void function UICallback_CheckForHost() -{ - if(GetLocalClientPlayer() == GetPlayerArray()[0]) - RunUIScript( "EnableCreateMatchUI" ) -} - -void function UICodeCallback_UpdateServerInfo(int type, string text) -{ - if(GetLocalClientPlayer() == GetPlayerArray()[0]) - GetLocalClientPlayer().ClientCommand("lobby_updateserversetting " + type + " " + text) -} - -void function UICodeCallback_KickOrBanPlayer(int type, string player) -{ - if(GetLocalClientPlayer() != GetPlayerArray()[0]) - return - switch (type) - { - case 0: - GetLocalClientPlayer().ClientCommand("lobby_kick " + player) - break; - case 1: - GetLocalClientPlayer().ClientCommand("lobby_ban " + player) - break; - } -} - -void function UICallback_ServerBrowserJoinServer(int id) -{ - if(GetLocalClientPlayer() == GetPlayerArray()[0]) - GetLocalClientPlayer().ClientCommand("lobby_joinserver " + id) -} - -//////////////////////////////////////////////// -// -// Server CallBacks -// -//////////////////////////////////////////////// - -void function ServerCallback_ServerBrowser_RefreshServers() -{ - RunUIScript( "ServerBrowser_RefreshServerListing") -} - -void function ServerCallback_ServerBrowser_JoinServer(int id) -{ - RunUIScript( "ServerBrowser_JoinServer", id) -} - -void function ServerCallback_LobbyVM_StartingMatch() -{ - RunUIScript( "ShowMatchStartingScreen") -} - -void function ServerCallback_LobbyVM_UpdateUI() -{ - array playernames - - RunUIScript( "ClearPlayerUIArray" ) - - foreach( player in GetPlayerArray() ) - { - if(!IsValid(player)) - continue - - string playername = player.GetPlayerName() - - if(GetPlayerArray()[0] == player) - { - playername = "[Host] " + player.GetPlayerName() - } - - RunUIScript( "AddPlayerToUIArray", playername ) - } - - RunUIScript( "UpdateHostName", GetPlayerArray()[0].GetPlayerName() ) - - RunUIScript( "UpdatePlayersList" ) - - RunUIScript( "ServerBrowser_EnableRefreshButton", GetPlayerArray()[0] == GetLocalClientPlayer() ) - - RunUIScript( "InPlayersLobby" , GetPlayerArray()[0] != GetLocalClientPlayer() && GetPlayerArray().len() > 1, GetPlayerArray()[0].GetPlayerName()) -} - -void function ServerCallback_LobbyVM_SelectionUpdated(int type) -{ - RunUIScript("UI_SetServerInfo", type, tempstring) - tempstring = "" -} - -void function ServerCallback_LobbyVM_BuildClientString( ... ) -{ - for ( int i = 0; i < vargc; i++ ) - tempstring += format("%c", vargv[i] ) } \ No newline at end of file diff --git a/vscripts/lobby/lobbyvm/sh_lobbyvm.nut b/vscripts/lobby/lobbyvm/sh_lobbyvm.nut index 384d8dd4c..567a3fefc 100644 --- a/vscripts/lobby/lobbyvm/sh_lobbyvm.nut +++ b/vscripts/lobby/lobbyvm/sh_lobbyvm.nut @@ -2,5 +2,30 @@ global function Sh_LobbyVM_Init void function Sh_LobbyVM_Init() { + //PreCacheLobby() +} +void function PreCacheLobby() +{ + /*PrecacheParticleSystem( $"P_fire_med_FULL" ) + PrecacheParticleSystem( $"P_loot_tick_beam_idle_flash") + PrecacheParticleSystem( LOOT_DRONE_FX_TRAIL ) + + PrecacheModel( $"mdl/robots/marvin/marvin.rmdl" ) + + PrecacheModel( $"mdl/props/kunai/kunai.rmdl" ) + PrecacheModel( $"mdl/props/tablet/tablet_mini.rmdl" ) + PrecacheModel( $"mdl/props/skull/skull_gladcard.rmdl" ) + PrecacheModel( $"mdl/imc_base/scaffold_tech_horz_rail_c.rmdl" ) + PrecacheModel( $"mdl/props/caustic_flask/caustic_flask.rmdl" ) + //PrecacheModel( $"mdl/props/charm/charm_r5r.rmdl" ) + PrecacheModel( $"mdl/props/global_access_panel_button/global_access_panel_button_console_w_stand.rmdl" ) + PrecacheModel( $"mdl/props/death_box/death_box_01.rmdl" ) + PrecacheModel( $"mdl/props/loot_drone/loot_drone.rmdl" ) + PrecacheModel( $"mdl/props/loot_sphere/loot_sphere.rmdl" ) + PrecacheModel( $"mdl/vehicle/goblin_dropship/goblin_dropship.rmdl" ) + PrecacheModel( $"mdl/robots/drone_frag/drone_frag_loot.rmdl" ) + PrecacheModel( $"mdl/menu/coin.rmdl" ) + PrecacheModel( $"mdl/humans/class/medium/pilot_medium_bloodhound.rmdl" ) + PrecacheModel( $"mdl/vehicle/droppod_fireteam/droppod_fireteam.rmdl" )*/ } \ No newline at end of file diff --git a/vscripts/mp/sh_quickchat.gnut b/vscripts/mp/sh_quickchat.gnut index 564e47414..524c8687a 100644 --- a/vscripts/mp/sh_quickchat.gnut +++ b/vscripts/mp/sh_quickchat.gnut @@ -131,9 +131,66 @@ void function LoadCommsActionsFromDatatable() } +void function RegisterCustomComs() +{ + // ammo + RegisterCustomCom( eCommsAction.PING_AMMO_SNIPER, "ping_foundAmmoSniper") + RegisterCustomCom( eCommsAction.INVENTORY_NEED_AMMO_SNIPER, "ping_needAmmoSniper") + + // weapons + RegisterCustomCom( eCommsAction.PING_WEAPON_VOLT, "ping_foundVoltSmg") + RegisterCustomCom( eCommsAction.PING_WEAPON_SMART_PISTOL, "ping_foundPistol") + RegisterCustomCom( eCommsAction.PING_WEAPON_SENTINEL, "ping_foundSentinel") + + // npcs + + asset icon = $"rui/hud/ping/icon_ping_enemy" + asset iconasset = $"settings/itemflav/ping/ping_enemy.rpak" + string chattext = "#PING_ENEMY_SPOTTED_GENERAL" + string shorttext = "#PROMPT_PING_ENEMY_SPOTTED_GENERAL_SHORT" + string menutext = "#PROMPT_PING_ENEMY_SPOTTED_GENERAL" + + // creatures + RegisterCustomCom( eCommsAction.PING_ENEMY_NPC_SPIDER, "ping_spotSpider", icon, iconasset, chattext, shorttext, menutext) + RegisterCustomCom( eCommsAction.PING_ENEMY_NPC_PROWLER, "ping_spotProwler", icon, iconasset, chattext, shorttext, menutext) + RegisterCustomCom( eCommsAction.PING_ENEMY_NPC_GOLIATH, "ping_spotGoliath", icon, iconasset, chattext, shorttext, menutext) + + // robots + RegisterCustomCom( eCommsAction.PING_ENEMY_NPC_DRONE, "ping_spotDrone", icon, iconasset, chattext, shorttext, menutext ) + RegisterCustomCom( eCommsAction.PING_ENEMY_NPC_TITAN, "ping_spotTitan", icon, iconasset, chattext, shorttext, menutext ) + RegisterCustomCom( eCommsAction.PING_ENEMY_NPC_REAPER, "ping_spotReaper", icon, iconasset, chattext, shorttext, menutext ) + RegisterCustomCom( eCommsAction.PING_ENEMY_NPC_SPECTRE, "ping_spotSpectre", icon, iconasset, chattext, shorttext, menutext ) + RegisterCustomCom( eCommsAction.PING_ENEMY_NPC_TICK, "ping_spotTick", icon, iconasset, chattext, shorttext, menutext ) +} + +void function RegisterCustomCom( int index, string alias, asset icon = $"", asset pingAsset = $"", string chattext = "#PING_LOOT", string shorttext = "", string menutext = "") +{ + if(index in file.actions) + return + + if(pingAsset != $"") + RegisterItemFlavorFromSettingsAsset( pingAsset ) + + CommsAction action + action.chatText = chattext + action.menuText = menutext + action.shortText = shorttext + action.chatText = chattext + action.defaultIcon = icon + action.aliasSubname = alias + action.hasCalm = true + action.hasUrgent = true + action.hasCalmFar = false + action.hasUrgentFar = false + action.index = index + + file.actions[index] <- action +} + void function ShQuickchat_Init() { AddCallback_RegisterRootItemFlavors( LoadCommsActionsFromDatatable ) + RegisterCustomComs() #if SERVER AddClientCommandCallback( "ClientCommand_Quickchat", ClientCommand_Quickchat ) @@ -152,6 +209,7 @@ void function DEV_ReloadCommsTable() { file.actions.clear() LoadCommsActionsFromDatatable() + RegisterCustomComs() } #if CLIENT @@ -283,11 +341,11 @@ array function GetSubjectNamesForCommsAction( int commsAction, entity su } - - if ( commsAction == eCommsAction.PING_LOOT_VAULT || commsAction == eCommsAction.PING_LOOT_VAULT_OPEN || commsAction == eCommsAction.PING_LOOT_VAULT_HAS_KEY_SQUAD || commsAction == eCommsAction.PING_LOOT_VAULT_HAS_KEY_SELF ) - { - return [Localize( "#LOOT_VAULT_UI_TITLE" )] - } + if ( commsAction == eCommsAction.PING_LOOT_VAULT || + commsAction == eCommsAction.PING_LOOT_VAULT_OPEN || + commsAction == eCommsAction.PING_LOOT_VAULT_HAS_KEY_SQUAD || + commsAction == eCommsAction.PING_LOOT_VAULT_HAS_KEY_SELF ) + return [Localize( "#LOOT_VAULT_UI_TITLE" )] return [""] diff --git a/vscripts/scripts.rson b/vscripts/scripts.rson index 8edd71d00..ed92f915b 100644 --- a/vscripts/scripts.rson +++ b/vscripts/scripts.rson @@ -818,20 +818,30 @@ Scripts: //KillReplay ui/KillReplay/menu_killreplay.nut - //R5RUI - ui/R5RMenus/menu_main.nut - ui/R5RMenus/menu_lobby.nut - ui/R5RMenus/menu_private_match.nut - ui/R5RMenus/panel_home.nut - ui/R5RMenus/panel_serverbrowser.nut - ui/R5RMenus/panel_mainmenu.nut - ui/R5RMenus/panel_playlist.nut - ui/R5RMenus/panel_map.nut - ui/R5RMenus/panel_visibility.nut + //R5R Main Menu + ui/CustomLobby/menu_main.nut + ui/CustomLobby/panel_mainmenu.nut + + //R5R Lobby + ui/CustomLobby/menu_lobby.nut + ui/CustomLobby/panel_home.nut + ui/CustomLobby/panel_create.nut + ui/CustomLobby/panel_serverbrowser.nut + ui/CustomLobby/panel_legends.nut + ui/CustomLobby/panel_loadout.nut + + //R5R Extra + ui/CustomLobby/menu_news.nut + ui/CustomLobby/menu_gamemodeselect.nut + ui/CustomLobby/panel_map.nut + ui/CustomLobby/panel_playlist.nut + ui/CustomLobby/panel_visibility.nut ui/CTFMenus/menu_ctf_vote.nut //Statistics ui/FlowstateDM/flowstate_statistics.nut ui/FlowstateDM/flowstate_menu_vote.nut + + ui/menu_weaponmods.nut ] When: "SERVER || UI " diff --git a/vscripts/sh_consts.gnut b/vscripts/sh_consts.gnut index 6d5e42a6a..4a0db366a 100644 --- a/vscripts/sh_consts.gnut +++ b/vscripts/sh_consts.gnut @@ -1,4 +1,4 @@ -global string FLOWSTATE_VERSION = "v3.7" +global string FLOWSTATE_VERSION = "v3.71" global const int INT_MIN = (1<<31) global const int INT_MAX = (1<<31) - 1 global const float FLT_MAX = 3.40282e+38 @@ -1700,6 +1700,9 @@ global enum eCommsAction PING_WEAPON_SEMIPISTOL, PING_WEAPON_AUTOPISTOL, PING_WEAPON_DEFENDER, + PING_WEAPON_VOLT, + PING_WEAPON_SMART_PISTOL, + PING_WEAPON_SENTINEL, // PING_OFFHAND_GRENADE_FIRESTAR, PING_OFFHAND_GRENADE_FRAG, @@ -1709,6 +1712,7 @@ global enum eCommsAction PING_AMMO_SPECIAL, PING_AMMO_SHOTGUN, PING_AMMO_HIGHCAL, + PING_AMMO_SNIPER, // PING_EQUIPMENT_ARMOR_1, PING_EQUIPMENT_ARMOR_2, @@ -1902,6 +1906,7 @@ global enum eCommsAction INVENTORY_NEED_AMMO_SPECIAL, INVENTORY_NEED_AMMO_HIGHCAL, INVENTORY_NEED_AMMO_SHOTGUN, + INVENTORY_NEED_AMMO_SNIPER, INVENTORY_NEED_FIRST_WEAPON, INVENTORY_NEED_ANOTHER_WEAPON, INVENTORY_NEED_ARMOR, @@ -1915,6 +1920,7 @@ global enum eCommsAction INVENTORY_NEED_ATTACHMENT_MAG_SPECIAL, INVENTORY_NEED_ATTACHMENT_MAG_SHOTGUN, INVENTORY_NEED_ATTACHMENT_MAG_HIGHCAL, + INVENTORY_NEED_ATTACHMENT_MAG_SNIPER, INVENTORY_NEED_ATTACHMENT_SIGHT_PISTOL, INVENTORY_NEED_ATTACHMENT_SIGHT_SMG, diff --git a/vscripts/sh_menu_models.gnut b/vscripts/sh_menu_models.gnut index 849204c61..bef6f8e44 100644 --- a/vscripts/sh_menu_models.gnut +++ b/vscripts/sh_menu_models.gnut @@ -206,7 +206,10 @@ struct array mouseWheelDownCallbacks array mouseWheelUpCallbacks - + + // a table of capturePanels and menus, each of which contains an array of callbacks + table< var, array< void functionref( int deltaX, int deltaY ) > > mouseMovementCaptureCallbacks = {} + table scriptEntitiesOrigins = { default_camera_target = <9216, 0, 56> customize_weapon_camera_target = <7168, 0, 56> @@ -295,6 +298,7 @@ global function RunMenuClientFunction global function UI_SetPresentationType global function UICodeCallback_MouseMovementCapture +global function AddMouseMovementCaptureHandler global function OnMouseWheelDown global function OnMouseWheelUp @@ -2700,8 +2704,40 @@ void function UI_SetPresentationType( int newPresentationType ) RunClientScript( "UpdateMenuWithPartyMembers" ) } +// this function registers a callback (or "handler") function for a MouseMovementCapture menu panel +// use this for scrollbars, sliders, etc. +void function AddMouseMovementCaptureHandler( var capturePanelOrMenu, void functionref( int deltaX, int deltaY ) func ) +{ + // if the capturePanel or menu already has an array in the table, we append to the array + // if not, we should create the array, [func] just turns func into an array + if ( capturePanelOrMenu in file.mouseMovementCaptureCallbacks ) + file.mouseMovementCaptureCallbacks[capturePanelOrMenu].append( func ) + else + file.mouseMovementCaptureCallbacks[capturePanelOrMenu] <- [func] +} + +void function RunMouseMovementCallbacks( var capturePanelOrMenu, int deltaX, int deltaY ) +{ + // check that the capturePanelOrMenu is in the table before trying anything stupid + if ( capturePanelOrMenu in file.mouseMovementCaptureCallbacks ) + { + // iterate through the different callback functions + foreach ( void functionref( int deltaX, int deltaY ) callback in file.mouseMovementCaptureCallbacks[capturePanelOrMenu] ) + { + // run the callback function + callback( deltaX, deltaY ) + } + } +} + void function UICodeCallback_MouseMovementCapture( var capturePanel, int deltaX, int deltaY ) { + // run callbacks for the capturePanel + RunMouseMovementCallbacks( capturePanel, deltaX, deltaY ) + + // get the current menu and run callbacks, this preserves backwards compatibility + RunMouseMovementCallbacks( GetActiveMenu(), deltaX, deltaY ) + float screenScaleXModifier = 1920.0 / GetScreenSize().width // 1920 is base screen width float mouseXRotateDelta = deltaX * screenScaleXModifier * MOUSE_ROTATE_MULTIPLIER //printt( "deltaX:", deltaX, "screenScaleXModifier:", screenScaleXModifier, "mouseXRotateDelta:", mouseXRotateDelta ) diff --git a/vscripts/ui/CustomLobby/menu_gamemodeselect.nut b/vscripts/ui/CustomLobby/menu_gamemodeselect.nut new file mode 100644 index 000000000..32b18da1f --- /dev/null +++ b/vscripts/ui/CustomLobby/menu_gamemodeselect.nut @@ -0,0 +1,356 @@ +global function InitR5RGamemodeSelectDialog + +const int MAX_DISPLAYED_MODES = 5 +const int MAX_TOP_SERVERS = 3 +const int MAX_FREEROAM_MAPS = 6 + +struct TopServer { + int svServerID + string svServerName + string svMapName + string svPlaylist + string svDescription + int svMaxPlayers + int svCurrentPlayers +} + +global struct SelectedTopServer { + int svServerID + string svServerName + string svMapName + string svPlaylist + string svDescription + int svMaxPlayers + int svCurrentPlayers +} + +struct { + var menu + + bool showfreeroam = false + int freeroamscroll = 0 + + int pageoffset = 0 + + array m_vTopServers + array m_vPlaylists + array m_vMaps +} file + +global SelectedTopServer g_SelectedTopServer + +global string g_SelectedPlaylist +global string g_SelectedQuickPlay +global string g_SelectedQuickPlayMap +global asset g_SelectedQuickPlayImage + +void function InitR5RGamemodeSelectDialog( var newMenuArg ) // +{ + var menu = GetMenu( "R5RGamemodeSelectV2Dialog" ) + file.menu = menu + + HudElem_SetRuiArg( Hud_GetChild( menu, "PrevPageButton" ), "flipHorizontal", true ) + Hud_AddEventHandler( Hud_GetChild( menu, "PrevPageButton" ), UIE_CLICK, PrevPage_Activated ) + Hud_AddEventHandler( Hud_GetChild( menu, "NextPageButton" ), UIE_CLICK, NextPage_Activated ) + Hud_AddEventHandler( Hud_GetChild( menu, "FiringRangeButton" ), UIE_CLICK, FiringRange_Activated ) + Hud_AddEventHandler( Hud_GetChild( menu, "FreeRoamButton" ), UIE_CLICK, FreeRoam_Activated ) + Hud_AddEventHandler( Hud_GetChild( menu, "CloseButton" ), UIE_CLICK, OnCloseButton_Activate ) + + AddMenuEventHandler( menu, eUIEvent.MENU_OPEN, OnOpenModeSelectDialog ) + AddMenuEventHandler( menu, eUIEvent.MENU_CLOSE, OnCloseModeSelectDialog ) + + foreach ( uielem in GetElementsByClassname( menu, "FreeRoamUI" ) ) { + Hud_Hide( uielem ) + Hud_AddEventHandler( uielem, UIE_CLICK, FreeRoamButton_Activated ) + } + + foreach ( btn in GetElementsByClassname( menu, "TopServerButtons" ) ) + Hud_AddEventHandler( btn, UIE_CLICK, TopServerButton_Activated ) + + foreach ( btn in GetElementsByClassname( menu, "GamemodeButtons" ) ) + Hud_AddEventHandler( btn, UIE_CLICK, PlaylistButton_Activated ) + + AddMenuFooterOption( menu, LEFT, BUTTON_B, true, "#B_BUTTON_CLOSE", "#CLOSE" ) + AddMenuFooterOption( menu, LEFT, BUTTON_A, true, "#A_BUTTON_SELECT" ) +} + +void function OnOpenModeSelectDialog() +{ + Servers_GetCurrentServerListing() + SetupTopServers() + SetupPlaylistQuickSearch() + SetupFreeRoamButtons() +} + +void function OnCloseModeSelectDialog() +{ + DiagCloseing() +} + +void function OnCloseButton_Activate( var button ) +{ + DiagCloseing() +} + +void function DiagCloseing() +{ + if(!file.showfreeroam) + return + + foreach ( var uielem in GetElementsByClassname( file.menu, "FreeRoamUI" ) ) + Hud_Hide( uielem ) + + RemoveCallback_OnMouseWheelUp( FreeRoam_ScrollUp ) + RemoveCallback_OnMouseWheelDown( FreeRoam_ScrollDown ) + + file.showfreeroam = false + file.freeroamscroll = 0 +} + +//////////////////////////////////////////////////////////////////////////////////////// +// +// Quick Server Join +// +//////////////////////////////////////////////////////////////////////////////////////// + +void function NextPage_Activated(var button) +{ + file.pageoffset += 1 + SetupPlaylistQuickSearch() +} + +void function PrevPage_Activated(var button) +{ + file.pageoffset -= 1 + SetupPlaylistQuickSearch() +} + +void function PlaylistButton_Activated(var button) +{ + int id = Hud_GetScriptID( button ).tointeger() + g_SelectedPlaylist = file.m_vPlaylists[id + file.pageoffset] + R5RPlay_SetSelectedPlaylist(JoinType.QuickServerJoin) + DiagCloseing() + CloseActiveMenu() +} + +void function SetupPlaylistQuickSearch() +{ + array playlists = Servers_GetActivePlaylists() + playlists.insert(0, "Random Server") + + file.m_vPlaylists = playlists + + Hud_Hide( Hud_GetChild( file.menu, "PrevPageButton" ) ) + if( file.pageoffset != 0 && playlists.len() > 4) + Hud_Show( Hud_GetChild( file.menu, "PrevPageButton" ) ) + + Hud_Hide( Hud_GetChild( file.menu, "NextPageButton" ) ) + if( file.pageoffset < playlists.len() - 5 && playlists.len() > 4) + Hud_Show( Hud_GetChild( file.menu, "NextPageButton" ) ) + + //Hide all items + for(int j = 0; j < MAX_DISPLAYED_MODES; j++) + Hud_Hide( Hud_GetChild( file.menu, "GameModeButton" + j ) ) + + int offset = 0 + for(int j = 0; j < playlists.len() + 1; j++) + { + if( j > playlists.len() - 1 ) + break + + if( j > MAX_DISPLAYED_MODES - 1 ) + break + + Hud_Show( Hud_GetChild( file.menu, "GameModeButton" + j ) ) + + if(j != 0) + offset -= (Hud_GetWidth(Hud_GetChild( file.menu, "GameModeButton0" ))/2) + 5 + } + + Hud_SetX( Hud_GetChild( file.menu, "GameModeButton0" ), 0 ) + if( playlists.len() > 0 ) + Hud_SetX( Hud_GetChild( file.menu, "GameModeButton0" ), offset ) + + for(int i = 0; i < MAX_DISPLAYED_MODES; i++) + { + if(i + file.pageoffset >= playlists.len()) + break + + if(playlists[i + file.pageoffset] == "Random Server") + { + RuiSetString( Hud_GetRui( Hud_GetChild( file.menu, "GameModeButton" + i ) ), "modeNameText", "Random Server" ) + RuiSetString( Hud_GetRui( Hud_GetChild( file.menu, "GameModeButton" + i ) ), "modeDescText", "Quickly Join any kind of server" ) + RuiSetImage( Hud_GetRui( Hud_GetChild( file.menu, "GameModeButton" + i ) ), "modeImage", $"rui/menu/gamemode/ranked_1" ) + } + else + { + RuiSetString( Hud_GetRui( Hud_GetChild( file.menu, "GameModeButton" + i ) ), "modeNameText", GetUIPlaylistName(playlists[i + file.pageoffset]) ) + RuiSetString( Hud_GetRui( Hud_GetChild( file.menu, "GameModeButton" + i ) ), "modeDescText", "" ) + RuiSetImage( Hud_GetRui( Hud_GetChild( file.menu, "GameModeButton" + i ) ), "modeImage", $"rui/menu/gamemode/play_apex" ) + } + RuiSetBool( Hud_GetRui( Hud_GetChild( file.menu, "GameModeButton" + i )), "alwaysShowDesc", false ) + } +} + +//////////////////////////////////////////////////////////////////////////////////////// +// +// Top Servers +// +//////////////////////////////////////////////////////////////////////////////////////// + +void function SetupTopServers() +{ + foreach ( btn in GetElementsByClassname( file.menu, "TopServerButtons" ) ) + Hud_Hide( btn ) + + file.m_vTopServers.clear() + for(int i = 0; i < MAX_TOP_SERVERS; i++) + { + if(i >= global_m_vServerList.len()) + break + + TopServer server + server.svServerID = global_m_vServerList[i].svServerID + server.svServerName = global_m_vServerList[i].svServerName + server.svMapName = global_m_vServerList[i].svMapName + server.svPlaylist = global_m_vServerList[i].svPlaylist + server.svDescription = global_m_vServerList[i].svDescription + server.svMaxPlayers = global_m_vServerList[i].svMaxPlayers + server.svCurrentPlayers = global_m_vServerList[i].svCurrentPlayers + file.m_vTopServers.append(server) + } + + int btnid = 2 + foreach(int i, TopServer server in file.m_vTopServers) + { + string servername = file.m_vTopServers[i].svServerName + if(file.m_vTopServers[i].svServerName.len() > 30) + servername = file.m_vTopServers[i].svServerName.slice(0, 30) + "..." + + var TopServer = Hud_GetChild( file.menu, "TopServerButton" + btnid ) + Hud_Show( TopServer ) + RuiSetString( Hud_GetRui( TopServer ), "modeNameText", servername ) + RuiSetString( Hud_GetRui( TopServer ), "modeDescText", "Players " + file.m_vTopServers[i].svCurrentPlayers + "/" + file.m_vTopServers[i].svMaxPlayers ) + RuiSetBool( Hud_GetRui( TopServer ), "alwaysShowDesc", false ) + RuiSetImage( Hud_GetRui( TopServer ), "modeImage", GetUIMapAsset(file.m_vTopServers[i].svMapName ) ) + Hud_SetLocked( TopServer, false ) + RuiSetString( Hud_GetRui( TopServer ), "modeLockedReason", "" ) + RuiSetBool( Hud_GetRui( TopServer ), "showLockedIcon", false ) + + if( file.m_vTopServers[i].svCurrentPlayers == file.m_vTopServers[i].svMaxPlayers ) + { + Hud_SetLocked( TopServer, true ) + RuiSetString( Hud_GetRui( TopServer ), "modeLockedReason", "Server is full" ) + RuiSetBool( Hud_GetRui( TopServer ), "showLockedIcon", true ) + } + + btnid-- + } +} + +void function TopServerButton_Activated(var button) +{ + if ( Hud_IsLocked( button ) ) + return + + int id = Hud_GetScriptID( button ).tointeger() + + g_SelectedTopServer.svServerID = file.m_vTopServers[id].svServerID + g_SelectedTopServer.svServerName = file.m_vTopServers[id].svServerName + g_SelectedTopServer.svMapName = file.m_vTopServers[id].svMapName + g_SelectedTopServer.svPlaylist = file.m_vTopServers[id].svPlaylist + g_SelectedTopServer.svDescription = file.m_vTopServers[id].svDescription + g_SelectedTopServer.svMaxPlayers = file.m_vTopServers[id].svMaxPlayers + g_SelectedTopServer.svCurrentPlayers = file.m_vTopServers[id].svCurrentPlayers + + R5RPlay_SetSelectedPlaylist(JoinType.TopServerJoin) + DiagCloseing() + CloseActiveMenu() +} + +//////////////////////////////////////////////////////////////////////////////////////// +// +// Quick Play +// +//////////////////////////////////////////////////////////////////////////////////////// + +void function FiringRange_Activated(var button) +{ + g_SelectedQuickPlay = "survival_firingrange" + g_SelectedQuickPlayMap = "mp_rr_canyonlands_staging" + g_SelectedQuickPlayImage = $"rui/menu/gamemode/firing_range" + R5RPlay_SetSelectedPlaylist(JoinType.QuickPlay) + DiagCloseing() + CloseActiveMenu() +} + +//////////////////////////////////////////////////////////////////////////////////////// +// +// Free Roam +// +//////////////////////////////////////////////////////////////////////////////////////// + +void function SetupFreeRoamButtons() +{ + file.m_vMaps = GetPlaylistMaps("survival_dev") + for(int i = 0; i < MAX_FREEROAM_MAPS; i++) + { + RuiSetString( Hud_GetRui( Hud_GetChild( file.menu, "FreeRoamButton" + i ) ), "modeNameText", GetUIMapName(file.m_vMaps[i + file.freeroamscroll]) ) + RuiSetString( Hud_GetRui( Hud_GetChild( file.menu, "FreeRoamButton" + i ) ), "modeDescText", "" ) + RuiSetImage( Hud_GetRui( Hud_GetChild( file.menu, "FreeRoamButton" + i ) ), "modeImage", GetUIMapAsset(file.m_vMaps[i + file.freeroamscroll]) ) + } +} + +void function FreeRoam_Activated(var button) +{ + if(file.showfreeroam) + { + foreach ( var uielem in GetElementsByClassname( file.menu, "FreeRoamUI" ) ) + Hud_Hide( uielem ) + + RemoveCallback_OnMouseWheelUp( FreeRoam_ScrollUp ) + RemoveCallback_OnMouseWheelDown( FreeRoam_ScrollDown ) + file.showfreeroam = false + return + } + + foreach ( var uielem in GetElementsByClassname( file.menu, "FreeRoamUI" ) ) + Hud_Show( uielem ) + + AddCallback_OnMouseWheelUp( FreeRoam_ScrollUp ) + AddCallback_OnMouseWheelDown( FreeRoam_ScrollDown ) + file.showfreeroam = true + file.freeroamscroll = 0 +} + +void function FreeRoam_ScrollUp() +{ + if(file.freeroamscroll > 0) + file.freeroamscroll -= 1 + + SetupFreeRoamButtons() +} + +void function FreeRoam_ScrollDown() +{ + int max = file.m_vMaps.len() + + if(file.freeroamscroll + 6 < max) + file.freeroamscroll += 1 + + SetupFreeRoamButtons() +} + +void function FreeRoamButton_Activated(var button) +{ + int id = Hud_GetScriptID( button ).tointeger() + + g_SelectedQuickPlay = "survival_dev" + g_SelectedQuickPlayMap = file.m_vMaps[id + file.freeroamscroll] + g_SelectedQuickPlayImage = GetUIMapAsset( g_SelectedQuickPlayMap ) + + R5RPlay_SetSelectedPlaylist(JoinType.QuickPlay) + DiagCloseing() + CloseActiveMenu() +} \ No newline at end of file diff --git a/vscripts/ui/CustomLobby/menu_lobby.nut b/vscripts/ui/CustomLobby/menu_lobby.nut new file mode 100644 index 000000000..cdd7479d6 --- /dev/null +++ b/vscripts/ui/CustomLobby/menu_lobby.nut @@ -0,0 +1,283 @@ +global function InitR5RLobbyMenu +global function GetUIPlaylistName +global function GetUIMapName +global function GetUIMapAsset +global function GetUIVisibilityName +global function ActivateNav + +struct NavButton { + var button + var panel + int index + int presentationType +} + +struct +{ + var menu + + var HomePanel + var CreateServerPanel + var ServerBrowserPanel + + bool initialisedHomePanel = false + + int currentpanel = 0 + int CurrentNavIndex = 0 + array TopButtons + + table BtnToNav +} file + +// do not change this enum without modifying it in code at gameui/IBrowser.h +global enum eServerVisibility +{ + OFFLINE, + HIDDEN, + PUBLIC +} + +global int CurrentPresentationType = ePresentationType.PLAY + +//Map to asset +global table MapAssets = { + [ "mp_rr_canyonlands_staging" ] = $"rui/menu/maps/mp_rr_canyonlands_staging", + [ "mp_rr_aqueduct" ] = $"rui/menu/maps/mp_rr_aqueduct", + [ "mp_rr_aqueduct_night" ] = $"rui/menu/maps/mp_rr_aqueduct_night", + [ "mp_rr_ashs_redemption" ] = $"rui/menu/maps/mp_rr_ashs_redemption", + [ "mp_rr_canyonlands_64k_x_64k" ] = $"rui/menu/maps/mp_rr_canyonlands_64k_x_64k", + [ "mp_rr_canyonlands_mu1" ] = $"rui/menu/maps/mp_rr_canyonlands_mu1", + [ "mp_rr_canyonlands_mu1_night" ] = $"rui/menu/maps/mp_rr_canyonlands_mu1_night", + [ "mp_rr_desertlands_64k_x_64k" ] = $"rui/menu/maps/mp_rr_desertlands_64k_x_64k", + [ "mp_rr_desertlands_64k_x_64k_nx" ] = $"rui/menu/maps/mp_rr_desertlands_64k_x_64k_nx", + [ "mp_rr_desertlands_64k_x_64k_tt" ] = $"rui/menu/maps/mp_rr_desertlands_64k_x_64k_tt", + [ "mp_rr_arena_composite" ] = $"rui/menu/maps/mp_rr_arena_composite", + [ "mp_rr_arena_skygarden" ] = $"rui/menu/maps/mp_rr_arena_skygarden", + [ "mp_rr_party_crasher" ] = $"rui/menu/maps/mp_rr_party_crasher", + [ "mp_lobby" ] = $"rui/menu/maps/mp_lobby" +} + +//Map to readable name +global table MapNames = { + [ "mp_rr_canyonlands_staging" ] = "Firing Range", + [ "mp_rr_aqueduct" ] = "Overflow", + [ "mp_rr_aqueduct_night" ] = "Overflow After Dark", + [ "mp_rr_ashs_redemption" ] = "Ash's Redemption", + [ "mp_rr_canyonlands_64k_x_64k" ] = "Kings Canyon S1", + [ "mp_rr_canyonlands_mu1" ] = "Kings Canyon S2", + [ "mp_rr_canyonlands_mu1_night" ] = "Kings Canyon S2 After Dark", + [ "mp_rr_desertlands_64k_x_64k" ] = "Worlds Edge", + [ "mp_rr_desertlands_64k_x_64k_nx" ] = "Worlds Edge After Dark", + [ "mp_rr_desertlands_64k_x_64k_tt" ] = "Worlds Edge Mirage Voyage", + [ "mp_rr_arena_composite" ] = "Drop Off", + [ "mp_rr_arena_skygarden" ] = "Encore", + [ "mp_rr_party_crasher" ] = "Party Crasher", + [ "mp_lobby" ] = "Lobby" +} + +//Vis to readable name +global table VisibilityNames = { + [ eServerVisibility.OFFLINE ] = "Offline", + [ eServerVisibility.HIDDEN ] = "Hidden", + [ eServerVisibility.PUBLIC ] = "Public" +} + +void function InitR5RLobbyMenu( var newMenuArg ) +{ + var menu = GetMenu( "R5RLobbyMenu" ) + file.menu = menu + + //Add menu event handlers + AddMenuEventHandler( menu, eUIEvent.MENU_SHOW, OnR5RLobby_Show ) + AddMenuEventHandler( menu, eUIEvent.MENU_OPEN, OnR5RLobby_Open ) + AddMenuEventHandler( menu, eUIEvent.MENU_CLOSE, OnR5RLobby_Close ) + AddMenuEventHandler( menu, eUIEvent.MENU_NAVIGATE_BACK, OnR5RLobby_Back ) + + file.TopButtons = GetElementsByClassname( file.menu, "TopButtons" ) + foreach ( elem in file.TopButtons ) + Hud_SetVisible( elem, false ) + + CreateNavButtons() + ToolTips_AddMenu( menu ) +} + +void function OnR5RLobby_Open() +{ + ServerBrowser_UpdateFilterLists() + SetupLobby() + + //Show Home Panel + ActivateNav( 0 ) + + ToolTips_MenuOpened( file.menu ) + RegisterServerBrowserButtonPressedCallbacks() +} + +void function OnR5RLobby_Close() +{ + ToolTips_MenuClosed( file.menu ) + UnRegisterServerBrowserButtonPressedCallbacks() +} + +void function OnR5RLobby_Show() +{ + +} + +void function OnR5RLobby_Back() +{ + if(pmatch_MenuOpen) + { + foreach(var p in GetElementsByClassnameForMenus( "CustomPrivateMatchMenu", uiGlobal.allMenus)) + Hud_SetVisible( p, false ) + + pmatch_MenuOpen = false + return + } + + if(file.currentpanel != 0) + { + ActivateNav( 0 ) + return + } + + AdvanceMenu( GetMenu( "SystemMenu" ) ) +} + +void function SetupLobby() +{ + // Setup Lobby Stuff + UI_SetPresentationType( CurrentPresentationType ) + thread TryRunDialogFlowThread() + + Play_SetupUI() + + if ( !file.initialisedHomePanel ) + { + ItemFlavor character = GetItemFlavorByHumanReadableRef( GetCurrentPlaylistVarString( "set_legend", "character_wraith" ) ) + RequestSetItemFlavorLoadoutSlot( LocalClientEHI(), Loadout_CharacterClass(), character ) + + file.initialisedHomePanel = true + } + +} + +//////////////////////////////////////////////////////////////////////////////////////// +// +// Nav Buttons +// +//////////////////////////////////////////////////////////////////////////////////////// + +void function CreateNavButtons() +{ + file.CurrentNavIndex = 0 + + //Max size of 6 tabs + + AddNavButton("Play", Hud_GetChild(file.menu, "HomePanel"), ePresentationType.PLAY, void function( var button ) { + Play_SetupUI() + } ) + + AddNavButton("Legends", Hud_GetChild(file.menu, "LegendsPanel"), ePresentationType.CHARACTER_SELECT, void function( var button ) { + R5RCharactersPanel_Show() + } ) + + //Item flavor bugged, disable for now + AddNavButton("Loadout", Hud_GetChild(file.menu, "LoadoutPanel"), ePresentationType.WEAPON_CATEGORY, void function( var button ) { + ShowLoadoutPanel() + }, false ) + + AddNavButton("Create", Hud_GetChild(file.menu, "CreatePanel"), ePresentationType.CHARACTER_SELECT, void function( var button ) { + OnCreateMatchOpen() + } ) + + AddNavButton("Servers", Hud_GetChild(file.menu, "ServerBrowserPanel"), ePresentationType.COLLECTION_EVENT, void function( var button ) { } ) + + /*AddNavButton("Settings", null, void function( var button ) { + AdvanceMenu( GetMenu( "MiscMenu" ) ) + } )*/ +} + +void function AddNavButton(string title, var panel, int presentationType, void functionref(var button) Click = null, bool enabled = true) +{ + NavButton navbtn + navbtn.button = file.TopButtons[file.CurrentNavIndex] + navbtn.panel = panel + navbtn.index = file.CurrentNavIndex + navbtn.presentationType = presentationType + file.BtnToNav[file.TopButtons[file.CurrentNavIndex]] <- navbtn + + RuiSetString( Hud_GetRui(file.TopButtons[file.CurrentNavIndex]), "buttonText", title ) + Hud_SetVisible( file.TopButtons[file.CurrentNavIndex], true ) + Hud_SetEnabled( file.TopButtons[file.CurrentNavIndex], enabled) + + Hud_AddEventHandler( file.TopButtons[file.CurrentNavIndex], UIE_CLICK, NavPressed ) + Hud_AddEventHandler( file.TopButtons[file.CurrentNavIndex], UIE_CLICK, Click ) + file.CurrentNavIndex++ +} + +void function ActivateNav(int index) +{ + NavPressed(file.TopButtons[index]) +} + +void function NavPressed(var button) +{ + NavButton navbtn = file.BtnToNav[button] + + if(navbtn.panel == null) + return + + UI_SetPresentationType( navbtn.presentationType ) + CurrentPresentationType = navbtn.presentationType + + //Hide all panels + foreach ( var btn, NavButton nav in file.BtnToNav) { + if(nav.panel != null) + Hud_SetVisible( nav.panel, false ) + + RuiSetBool( Hud_GetRui( nav.button ) ,"isSelected", false ) + } + + RuiSetBool( Hud_GetRui( button ) ,"isSelected", true ) + Hud_SetVisible( navbtn.panel, true ) + file.currentpanel = navbtn.index +} + +//////////////////////////////////////////////////////////////////////////////////////// +// +// Extra Functions +// +//////////////////////////////////////////////////////////////////////////////////////// + +string function GetUIPlaylistName(string playlist) +{ + if(!IsLobby() || !IsConnected()) + return "" + + return GetPlaylistVarString( playlist, "name", playlist ) +} + +string function GetUIMapName(string map) +{ + if(map in MapNames) + return MapNames[map] + + return map +} + +string function GetUIVisibilityName(int vis) +{ + if(vis in VisibilityNames) + return VisibilityNames[vis] + + return "" +} + +asset function GetUIMapAsset(string map) +{ + if(map in MapAssets) + return MapAssets[map] + + return $"rui/menu/maps/map_not_found" +} \ No newline at end of file diff --git a/vscripts/ui/R5RMenus/menu_main.nut b/vscripts/ui/CustomLobby/menu_main.nut similarity index 89% rename from vscripts/ui/R5RMenus/menu_main.nut rename to vscripts/ui/CustomLobby/menu_main.nut index 4f35e03ad..6b0f07d06 100644 --- a/vscripts/ui/R5RMenus/menu_main.nut +++ b/vscripts/ui/CustomLobby/menu_main.nut @@ -1,8 +1,6 @@ global function InitR5RMainMenu global function SetMainMenuBlackScreenVisible -global bool g_isAtMainMenu = false - struct { var menu @@ -32,20 +30,6 @@ void function InitR5RMainMenu( var newMenuArg ) RuiSetString( subtitleRui, "subtitleText", Localize( "Reloaded" ).toupper() ) } -void function ActivatePanel( var panel ) -{ - Assert( panel != null ) - - array elems = GetElementsByClassname( file.menu, "MainMenuPanelClass" ) - foreach ( elem in elems ) - { - if ( elem != panel && Hud_IsVisible( elem ) ) - HidePanel( elem ) - } - - ShowPanel( panel ) -} - void function OnR5RSB_Show() { thread SetAtMainMenu() @@ -59,33 +43,40 @@ void function OnR5RSB_Show() Chroma_MainMenu() } +void function OnR5RSB_Close() +{ + HidePanel( GetPanel( "R5RMainMenuPanel" ) ) +} + +void function OnR5RSB_NavigateBack() +{ + OpenConfirmExitToDesktopDialog() +} + void function SetAtMainMenu() { - //You are at the main menu - g_isAtMainMenu = true + WaitFrame() - //Wait a extra 1.5 before showing the main menu - wait 1.5 - //Hide the fullscreen black panel SetMainMenuBlackScreenVisible(false) - - //Refresh Server Browser - ServerBrowser_RefreshServerListing(false) } -void function SetMainMenuBlackScreenVisible(bool show) +void function ActivatePanel( var panel ) { - //Hide/show full black screen - Hud_SetVisible(Hud_GetChild( file.menu, "FullBlackScreen" ), show) -} + Assert( panel != null ) -void function OnR5RSB_Close() -{ - HidePanel( GetPanel( "R5RMainMenuPanel" ) ) + array elems = GetElementsByClassname( file.menu, "MainMenuPanelClass" ) + foreach ( elem in elems ) + { + if ( elem != panel && Hud_IsVisible( elem ) ) + HidePanel( elem ) + } + + ShowPanel( panel ) } -void function OnR5RSB_NavigateBack() +void function SetMainMenuBlackScreenVisible(bool show) { - OpenConfirmExitToDesktopDialog() + //Hide/show full black screen + Hud_SetVisible(Hud_GetChild( file.menu, "FullBlackScreen" ), show) } \ No newline at end of file diff --git a/vscripts/ui/CustomLobby/menu_news.nut b/vscripts/ui/CustomLobby/menu_news.nut new file mode 100644 index 000000000..0fd82f8c0 --- /dev/null +++ b/vscripts/ui/CustomLobby/menu_news.nut @@ -0,0 +1,235 @@ +global function InitR5RNews + +const MAX_NEWS_ITEMS = 1 + +struct NewsPage +{ + string title + string desc + asset image +} + +struct +{ + var menu + var prevPageButton + var nextPageButton + + int activePageIndex + + array newspages + + bool navInputCallbacksRegistered = false + +} file + +void function InitR5RNews( var newMenuArg ) // +{ + var menu = GetMenu( "R5RNews" ) + file.menu = menu + + file.prevPageButton = Hud_GetChild( menu, "PrevPageButton" ) + HudElem_SetRuiArg( file.prevPageButton, "flipHorizontal", true ) + Hud_AddEventHandler( file.prevPageButton, UIE_CLICK, Page_NavLeft ) + + file.nextPageButton = Hud_GetChild( menu, "NextPageButton" ) + Hud_AddEventHandler( file.nextPageButton, UIE_CLICK, Page_NavRight ) + + for(int i = 0; i < MAX_NEWS_ITEMS; i++) + { + var button = Hud_GetChild( menu, "NewsItem" + (i + 1) ) + Hud_AddEventHandler( button, UIE_CLICK, NewsItem_Activated ) + } + + SetGamepadCursorEnabled( menu, false ) + + AddMenuEventHandler( menu, eUIEvent.MENU_OPEN, PromoDialog_OnOpen ) + //AddMenuEventHandler( menu, eUIEvent.MENU_CLOSE, PromoDialog_OnClose ) + AddMenuEventHandler( menu, eUIEvent.MENU_NAVIGATE_BACK, PromoDialog_OnNavigateBack ) + + AddMenuFooterOption( menu, LEFT, BUTTON_B, true, "#B_BUTTON_CLOSE", "#B_BUTTON_CLOSE" ) +} + +void function NewsItem_Activated(var button) +{ + int id = Hud_GetScriptID( button ).tointeger() + + file.activePageIndex = id + UpdatePageRui( file.activePageIndex ) + + Hud_SetSelected( button, true ) + Hud_SetFocused( button ) +} + +void function Page_NavRight(var button) +{ + NavRight(true) +} + +void function Page_NavLeft(var button) +{ + NavLeft(true) +} + +void function Page_NavRightScrollWheel() +{ + NavRight(false) +} + +void function Page_NavLeftScrollWheel() +{ + NavLeft(false) +} + +void function NavRight(bool isbutton = false) +{ + file.activePageIndex++ + if ( file.activePageIndex > file.newspages.len() - 1 ) + file.activePageIndex = 0 + + UpdatePageRui( file.activePageIndex ) + + if(!isbutton) + EmitUISound("UI_Menu_MOTD_Tab") +} + +void function NavLeft(bool isbutton = false) +{ + file.activePageIndex-- + if ( file.activePageIndex < 0 ) + file.activePageIndex = file.newspages.len() - 1 + + UpdatePageRui( file.activePageIndex ) + + if(!isbutton) + EmitUISound("UI_Menu_MOTD_Tab") +} + +void function PromoDialog_OnNavigateBack() +{ + if(file.navInputCallbacksRegistered) + { + RemoveCallback_OnMouseWheelUp( Page_NavLeftScrollWheel ) + RemoveCallback_OnMouseWheelDown( Page_NavRightScrollWheel ) + file.navInputCallbacksRegistered = false + } + + CloseActiveMenu() +} + +void function PromoDialog_OnOpen() +{ + if(!file.navInputCallbacksRegistered) + { + AddCallback_OnMouseWheelUp( Page_NavLeftScrollWheel ) + AddCallback_OnMouseWheelDown( Page_NavRightScrollWheel ) + file.navInputCallbacksRegistered = true + } + + //Get the news from the endpoint + GetR5RNews() + + file.activePageIndex = 0 + UpdatePageRui( file.activePageIndex ) + UpdatePromoButtons() +} + +void function GetR5RNews() +{ + //INFO FOR LATER + //MAX PAGES = 6 + //TEMPOARY NEWS FOR TESTING + //WILL BE REPLACED WITH A CALL TO THE NEWS ENDPOINT + file.newspages.clear() + + for(int i = 0; i < 1; i++) + { + NewsPage page + page.title = "Welcome to R5Reloaded!" + page.desc = "This news panel isnt currently used for much, but maybe one day." + page.image = GetAssetFromString( $"rui/promo/S3_General_" + (i + 1).tostring() ) + file.newspages.append(page) + } +} + +void function UpdatePageRui( int pageIndex ) +{ + int nextpage = pageIndex + 1 + if ( nextpage > file.newspages.len() - 1 ) + nextpage = 0 + + int lastpage = pageIndex - 1 + if ( lastpage < 0 ) + lastpage = file.newspages.len() - 1 + + RuiSetImage(Hud_GetRui( Hud_GetChild( file.menu, "CenterNewsImage" ) ), "loadscreenImage", file.newspages[pageIndex].image ) + Hud_SetText(Hud_GetChild( file.menu, "TitleText" ), file.newspages[pageIndex].title ) + Hud_SetText(Hud_GetChild( file.menu, "DescText" ), file.newspages[pageIndex].desc ) + + Hud_SetPinSibling( Hud_GetChild( file.menu, "NewsItemSelected" ), Hud_GetHudName( Hud_GetChild( file.menu, "NewsItem" + (pageIndex + 1) ) ) ) + + Hud_Hide(Hud_GetChild( file.menu, "RightNewsImage" )) + Hud_Hide(Hud_GetChild( file.menu, "LeftNewsImage" )) + + if(file.newspages.len() > 1) + { + Hud_Show(Hud_GetChild( file.menu, "RightNewsImage" )) + Hud_Show(Hud_GetChild( file.menu, "LeftNewsImage" )) + RuiSetImage(Hud_GetRui( Hud_GetChild( file.menu, "RightNewsImage" ) ), "loadscreenImage", file.newspages[nextpage].image ) + RuiSetImage(Hud_GetRui( Hud_GetChild( file.menu, "LeftNewsImage" ) ), "loadscreenImage", file.newspages[lastpage].image ) + } + + SetSmallPreviewItems( pageIndex ) +} + +void function SetSmallPreviewItems( int pageIndex ) +{ + int offset = 0 + //Hide all items + for(int j = 0; j < 5; j++) + { + Hud_Hide( Hud_GetChild( file.menu, "NewsItem" + (j + 1) ) ) + } + + //Show only the ones we need + for(int j = 0; j < file.newspages.len(); j++) + { + Hud_Show( Hud_GetChild( file.menu, "NewsItem" + (j + 1) ) ) + + if(j != 0) + offset -= (Hud_GetWidth(Hud_GetChild( file.menu, "NewsItem1" ))/2) + 5 + } + + Hud_SetX( Hud_GetChild( file.menu, "NewsItem1" ), 0 ) + + if( file.newspages.len() > 1 ) + Hud_SetX( Hud_GetChild( file.menu, "NewsItem1" ), offset ) + + int i = 1 + foreach( NewsPage page in file.newspages ) + { + RuiSetString( Hud_GetRui( Hud_GetChild( file.menu, "NewsItem" + i ) ), "modeNameText", page.title ) + RuiSetString( Hud_GetRui( Hud_GetChild( file.menu, "NewsItem" + i ) ), "modeDescText", "" ) + RuiSetBool( Hud_GetRui( Hud_GetChild( file.menu, "NewsItem" + i )), "alwaysShowDesc", false ) + RuiSetImage( Hud_GetRui( Hud_GetChild( file.menu, "NewsItem" + i ) ), "modeImage", page.image ) + + i++ + + if(i > MAX_NEWS_ITEMS) + break + } +} + +void function UpdatePromoButtons() +{ + Hud_Hide( file.prevPageButton ) + Hud_Hide( file.nextPageButton ) + + if ( file.newspages.len() > 1 ) + { + Hud_Show( file.prevPageButton ) + Hud_Show( file.nextPageButton ) + } + + Hud_SetWidth( Hud_GetChild( file.menu, "FooterButtons" ), ContentScaledXAsInt( 200 ) ) +} \ No newline at end of file diff --git a/vscripts/ui/R5RMenus/panel_createserver.nut b/vscripts/ui/CustomLobby/panel_create.nut similarity index 73% rename from vscripts/ui/R5RMenus/panel_createserver.nut rename to vscripts/ui/CustomLobby/panel_create.nut index 53eaa22f7..589f164f8 100644 --- a/vscripts/ui/R5RMenus/panel_createserver.nut +++ b/vscripts/ui/CustomLobby/panel_create.nut @@ -1,23 +1,18 @@ -global function InitR5RCreateServerPanel +global function InitCreatePanel global function InitR5RNamePanel global function InitR5RDescPanel global function SetSelectedServerMap global function SetSelectedServerPlaylist global function SetSelectedServerVis -global function HideAllCreateServerPanels +global function OnCreateMatchOpen struct { var menu var panel - - string tempservername - string tempserverdesc - var namepanel var descpanel - array panels } file @@ -31,24 +26,21 @@ global struct ServerStruct } global ServerStruct ServerSettings +global bool pmatch_MenuOpen = false void function InitR5RNamePanel( var panel ) { file.namepanel = panel - AddButtonEventHandler( Hud_GetChild( panel, "BtnSaveName"), UIE_CLICK, UpdateServerName ) - AddButtonEventHandler( Hud_GetChild( panel, "BtnServerName"), UIE_CHANGE, TempSaveNameChanges ) } void function InitR5RDescPanel( var panel ) { file.descpanel = panel - AddButtonEventHandler( Hud_GetChild( panel, "BtnSaveDesc"), UIE_CLICK, UpdateServerDesc ) - AddButtonEventHandler( Hud_GetChild( panel, "BtnServerDesc"), UIE_CHANGE, TempSaveDescChanges ) } -void function InitR5RCreateServerPanel( var panel ) +void function InitCreatePanel( var panel ) { file.panel = panel file.menu = GetParentMenu( file.panel ) @@ -71,18 +63,19 @@ void function InitR5RCreateServerPanel( var panel ) //Setup Default Server Config ServerSettings.svServerName = "My custom server" ServerSettings.svServerDesc = "A R5Reloaded server" - ServerSettings.svMapName = "mp_rr_aqueduct" - ServerSettings.svPlaylist = "fs_dm" + ServerSettings.svMapName = "mp_rr_canyonlands_64k_x_64k" + ServerSettings.svPlaylist = "survival_dev" ServerSettings.svVisibility = eServerVisibility.OFFLINE +} - file.tempservername = ServerSettings.svServerName - file.tempserverdesc = ServerSettings.svServerDesc +void function OnCreateMatchOpen() +{ + RefreshUIPlaylists() + RefreshUIMaps() - //Setup Default Server Config Hud_SetText(Hud_GetChild( file.panel, "PlaylistInfoEdit" ), GetUIPlaylistName(ServerSettings.svPlaylist)) RuiSetImage( Hud_GetRui( Hud_GetChild( file.panel, "ServerMapImg" ) ), "loadscreenImage", GetUIMapAsset( ServerSettings.svMapName ) ) Hud_SetText(Hud_GetChild( file.panel, "VisInfoEdit" ), GetUIVisibilityName(ServerSettings.svVisibility)) - Hud_SetText(Hud_GetChild( file.panel, "MapServerNameInfoEdit" ), ServerSettings.svServerName) } @@ -90,22 +83,28 @@ void function OpenSelectedPanel( var button ) { //Show panel depending on script id ShowSelectedPanel( file.panels[Hud_GetScriptID( button ).tointeger()] ) - - if(Hud_GetScriptID( button ).tointeger() == 3 || Hud_GetScriptID( button ).tointeger() == 4) - { - Hud_SetText( Hud_GetChild( file.namepanel, "BtnServerName" ), ServerSettings.svServerName ) - Hud_SetText( Hud_GetChild( file.descpanel, "BtnServerDesc" ), ServerSettings.svServerDesc ) - } + pmatch_MenuOpen = true + + switch (Hud_GetScriptID( button ).tointeger()) + { + case 3: + Hud_SetText( Hud_GetChild( file.namepanel, "BtnServerName" ), ServerSettings.svServerName ) + break; + case 4: + Hud_SetText( Hud_GetChild( file.descpanel, "BtnServerDesc" ), ServerSettings.svServerDesc ) + break; + } } void function StartNewGame( var button ) { - //Start thread for starting the server CreateServer(ServerSettings.svServerName, ServerSettings.svServerDesc, ServerSettings.svMapName, ServerSettings.svPlaylist, ServerSettings.svVisibility) } void function SetSelectedServerMap( string map ) { + pmatch_MenuOpen = false + //set map ServerSettings.svMapName = map @@ -118,6 +117,8 @@ void function SetSelectedServerMap( string map ) void function SetSelectedServerPlaylist( string playlist ) { + pmatch_MenuOpen = false + //set playlist ServerSettings.svPlaylist = playlist @@ -130,8 +131,7 @@ void function SetSelectedServerPlaylist( string playlist ) //Set the new playlist text Hud_SetText(Hud_GetChild( file.panel, "PlaylistInfoEdit" ), GetUIPlaylistName( ServerSettings.svPlaylist ) ) - //This should ever really be triggered but here just incase - //The way this would be triggered is if there are no maps in put in the selected playlist + //This should never really be triggered but here just incase if(playlist_maps.len() == 0) { SetSelectedServerMap("mp_rr_canyonlands_64k_x_64k") RefreshUIMaps() @@ -148,6 +148,8 @@ void function SetSelectedServerPlaylist( string playlist ) void function SetSelectedServerVis( int vis ) { + pmatch_MenuOpen = false + //set visibility ServerSettings.svVisibility = vis @@ -169,36 +171,22 @@ void function ShowSelectedPanel(var panel) Hud_SetVisible( panel, true ) } -void function HideAllCreateServerPanels() -{ - //Hide all panels - foreach ( p in file.panels ) { - Hud_SetVisible( p, false ) - } -} - void function UpdateServerName( var button ) { - ServerSettings.svServerName = file.tempservername + pmatch_MenuOpen = false + + ServerSettings.svServerName = Hud_GetUTF8Text( Hud_GetChild( file.namepanel, "BtnServerName" ) ) Hud_SetVisible( file.namepanel, false ) Hud_SetText(Hud_GetChild( file.panel, "MapServerNameInfoEdit" ), ServerSettings.svServerName) } -void function TempSaveNameChanges( var button ) -{ - file.tempservername = Hud_GetUTF8Text( Hud_GetChild( file.namepanel, "BtnServerName" ) ) -} - void function UpdateServerDesc( var button ) { - ServerSettings.svServerDesc = file.tempserverdesc + pmatch_MenuOpen = false - Hud_SetVisible( file.descpanel, false ) -} + ServerSettings.svServerDesc = Hud_GetUTF8Text( Hud_GetChild( file.descpanel, "BtnServerDesc" ) ) -void function TempSaveDescChanges( var button ) -{ - file.tempserverdesc = Hud_GetUTF8Text( Hud_GetChild( file.descpanel, "BtnServerDesc" ) ) + Hud_SetVisible( file.descpanel, false ) } \ No newline at end of file diff --git a/vscripts/ui/CustomLobby/panel_home.nut b/vscripts/ui/CustomLobby/panel_home.nut new file mode 100644 index 000000000..87f56d112 --- /dev/null +++ b/vscripts/ui/CustomLobby/panel_home.nut @@ -0,0 +1,606 @@ +global function InitHomePanel +global function Play_SetupUI +global function R5RPlay_SetSelectedPlaylist + +const MAX_PROMO_ITEMS = 0 + +struct ServerListing +{ + int svServerID + string svServerName + string svMapName + string svPlaylist + string svDescription + int svMaxPlayers + int svCurrentPlayers +} + +struct SelectedServerInfo +{ + int svServerID = -1 + string svServerName = "" + string svMapName = "" + string svPlaylist = "" + string svDescription = "" +} + +struct PromoItem +{ + asset promoImage + string promoText1 + string promoText2 +} + +global enum JoinType +{ + TopServerJoin = 0, + QuickPlay = 1, + QuickServerJoin = 2, + None = 3 +} + +struct +{ + int quickPlayType = JoinType.None + string TopServerSelectedName = "" + int TopServerSelectedID = -1 + string TopServerMapName = "" +} quickplay + +struct +{ + var menu + var panel + var gamemodeSelectV2Button + + bool searching = false + bool foundserver = false + bool noservers = false + bool usercancled = false + bool firststart = false + bool navInputCallbacksRegistered = false + + SelectedServerInfo m_vSelectedServer + array m_vServerList + array m_vFilteredServerList + + array matchStatusRuis +} file + +struct +{ + array Items + int pageCount = 3 + int currentPage = 0 + bool shouldAutoAdvance = true + bool IsAutoAdvance = false + bool HasPages = false +} promo + +global table SearchStages = { + [ 0 ] = "Searching.", + [ 1 ] = "Searching..", + [ 2 ] = "Searching..." +} + +global table CreatingStages = { + [ 0 ] = "Creating.", + [ 1 ] = "Creating..", + [ 2 ] = "Creating..." +} + +global table ConnectingStages = { + [ 0 ] = "Connecting.", + [ 1 ] = "Connecting..", + [ 2 ] = "Connecting..." +} + +void function InitHomePanel( var panel ) +{ + file.panel = panel + file.menu = GetParentMenu( file.panel ) + + var gameMenuButton = Hud_GetChild( panel, "GameMenuButton" ) + ToolTipData gameMenuToolTip + gameMenuToolTip.descText = "#GAME_MENU" + Hud_SetToolTipData( gameMenuButton, gameMenuToolTip ) + HudElem_SetRuiArg( gameMenuButton, "icon", $"rui/menu/lobby/settings_icon" ) + HudElem_SetRuiArg( gameMenuButton, "shortcutText", "%[START|ESCAPE]%" ) + Hud_AddEventHandler( gameMenuButton, UIE_CLICK, SettingsPressed ) + + var playersButton = Hud_GetChild( panel, "PlayersButton" ) + HudElem_SetRuiArg( playersButton, "icon", $"rui/menu/lobby/friends_icon" ) + HudElem_SetRuiArg( playersButton, "buttonText", "" ) + + var serversButton = Hud_GetChild( panel, "ServersButton" ) + HudElem_SetRuiArg( serversButton, "icon", $"rui/hud/gamestate/net_latency" ) + HudElem_SetRuiArg( serversButton, "buttonText", "" ) + + var newsButton = Hud_GetChild( panel, "NewsButton" ) + ToolTipData newsToolTip + newsToolTip.descText = "#NEWS" + Hud_SetToolTipData( newsButton, newsToolTip ) + HudElem_SetRuiArg( newsButton, "icon", $"rui/menu/lobby/news_icon" ) + Hud_AddEventHandler( newsButton, UIE_CLICK, NewsPressed ) + + Hud_AddEventHandler( Hud_GetChild(file.panel, "SelfButton"), UIE_CLICK, SelfButtonPressed ) + + file.gamemodeSelectV2Button = Hud_GetChild( panel, "GamemodeSelectV2Button" ) + RuiSetString( Hud_GetRui( file.gamemodeSelectV2Button ), "modeNameText", "Random" ) + RuiSetString( Hud_GetRui( file.gamemodeSelectV2Button ), "modeDescText", "Not Ready" ) + RuiSetBool( Hud_GetRui( file.gamemodeSelectV2Button ), "alwaysShowDesc", true ) + RuiSetImage( Hud_GetRui( file.gamemodeSelectV2Button ), "modeImage", $"rui/menu/gamemode/ranked_1" ) + HudElem_SetRuiArg( file.gamemodeSelectV2Button, "isPartyLeader", true ) + Hud_AddEventHandler( file.gamemodeSelectV2Button, UIE_CLICK, GamemodeSelect_OnActivate ) + + var readyButton = Hud_GetChild( panel, "ReadyButton" ) + Hud_AddEventHandler( readyButton, UIE_CLICK, ReadyButton_OnActivate ) + HudElem_SetRuiArg( readyButton, "isLeader", true ) + HudElem_SetRuiArg( readyButton, "isReady", false ) + HudElem_SetRuiArg( readyButton, "buttonText", Localize( "#READY" ) ) + + var miniPromo = Hud_GetChild( file.panel, "MiniPromo" ) + Hud_AddEventHandler( miniPromo, UIE_GET_FOCUS, MiniPromoButton_OnGetFocus ) + Hud_AddEventHandler( miniPromo, UIE_LOSE_FOCUS, MiniPromoButton_OnLoseFocus ) + + file.matchStatusRuis = GetElementsByClassnameForMenus( "MatchmakingStatusRui", uiGlobal.allMenus ) +} + +void function Play_SetupUI() +{ + HudElem_SetRuiArg( Hud_GetChild( file.panel, "R5RVersionButton" ), "buttonText", Localize( "#BETA_BUILD_WATERMARK" ) ) + RuiSetString( Hud_GetRui( Hud_GetChild( file.panel, "SelfButton" ) ), "playerName", GetPlayerName() ) + RuiSetString( Hud_GetRui( Hud_GetChild( file.panel, "SelfButton" ) ), "accountLevel", GetAccountDisplayLevel( 100 ) ) + RuiSetImage( Hud_GetRui( Hud_GetChild( file.panel, "SelfButton" ) ), "accountBadge", $"rui/gladiator_cards/badges/account_t21" ) + RuiSetFloat( Hud_GetRui( Hud_GetChild( file.panel, "SelfButton" ) ), "accountXPFrac", 1.0 ) + + var playersButton = Hud_GetChild( file.panel, "PlayersButton" ) + ToolTipData playersToolTip + playersToolTip.titleText = "Players Online" + playersToolTip.descText = MS_GetPlayerCount() + " Players Online" + Hud_SetToolTipData( playersButton, playersToolTip ) + HudElem_SetRuiArg( playersButton, "buttonText", "" + MS_GetPlayerCount() ) + Hud_SetWidth( playersButton, Hud_GetBaseWidth( playersButton ) * 2 ) + + var serversButton = Hud_GetChild( file.panel, "ServersButton" ) + ToolTipData serversToolTip + serversToolTip.titleText = "Servers Running" + serversToolTip.descText = MS_GetServerCount() + " Servers Running" + Hud_SetToolTipData( serversButton, serversToolTip ) + HudElem_SetRuiArg( serversButton, "buttonText", "" + MS_GetServerCount() ) + Hud_SetWidth( serversButton, Hud_GetBaseWidth( serversButton ) * 2 ) + + Hud_SetText( Hud_GetChild( file.panel, "Info" ), "#MOTD" ) + + //GetR5RPromos() + SetPromoPage() + if(!promo.IsAutoAdvance && promo.HasPages) + thread AutoAdvancePages() + + if(!file.firststart) + { + g_SelectedPlaylist = "Random Server" + R5RPlay_SetSelectedPlaylist(JoinType.QuickServerJoin) + file.firststart = true + } +} + +void function SettingsPressed(var button) +{ + AdvanceMenu( GetMenu( "SystemMenu" ) ) +} + +void function NewsPressed(var button) +{ + AdvanceMenu( GetMenu( "R5RNews" ) ) +} + +void function SelfButtonPressed(var button) +{ + Friend friend + friend.status = eFriendStatus.ONLINE_INGAME + friend.name = GetPlayerName() + friend.hardware = "" + friend.ingame = true + friend.id = GetPlayerUID() + + Party party = GetParty() + friend.presence = Localize( "#PARTY_N_N", party.numClaimedSlots, party.numSlots ) + friend.inparty = party.numClaimedSlots > 0 + + InspectFriend( friend ) +} + +// ==================================================================================================== +// Quick Play +// ==================================================================================================== + +void function SetGamemodeButtonRUI(string modeNameText, string modeDescText, bool alwaysShowDesc, asset modeImage) +{ + RuiSetString( Hud_GetRui( file.gamemodeSelectV2Button ), "modeNameText", modeNameText ) + RuiSetString( Hud_GetRui( file.gamemodeSelectV2Button ), "modeDescText", modeDescText ) + RuiSetBool( Hud_GetRui( file.gamemodeSelectV2Button ), "alwaysShowDesc", alwaysShowDesc ) + RuiSetImage( Hud_GetRui( file.gamemodeSelectV2Button ), "modeImage", modeImage ) +} + +void function GamemodeSelect_OnActivate(var button) +{ + if(file.searching) + return + + AdvanceMenu( GetMenu( "R5RGamemodeSelectV2Dialog" ) ) +} + +void function R5RPlay_SetSelectedPlaylist(int quickPlayType) +{ + switch(quickPlayType) + { + case JoinType.TopServerJoin: + quickplay.quickPlayType = JoinType.TopServerJoin + string servername = g_SelectedTopServer.svServerName + if(g_SelectedTopServer.svServerName.len() > 30) + servername = g_SelectedTopServer.svServerName.slice(0, 30) + "..." + + SetGamemodeButtonRUI(servername, "Not Ready", true, GetUIMapAsset(g_SelectedTopServer.svMapName )) + break; + case JoinType.QuickServerJoin: + quickplay.quickPlayType = JoinType.QuickServerJoin + + asset image = $"rui/menu/gamemode/play_apex" + if(g_SelectedPlaylist == "Random Server") + image = $"rui/menu/gamemode/ranked_1" + + SetGamemodeButtonRUI(GetUIPlaylistName(g_SelectedPlaylist), "Not Ready", true, image) + break; + case JoinType.QuickPlay: + quickplay.quickPlayType = JoinType.QuickPlay + SetGamemodeButtonRUI(GetUIMapName(g_SelectedQuickPlayMap), "Not Ready", true, g_SelectedQuickPlayImage) + break; + } +} + +void function GamemodeButtonSetSearching(bool searching) +{ + HudElem_SetRuiArg( file.gamemodeSelectV2Button, "isReady", searching ) + RuiSetBool( Hud_GetRui(file.gamemodeSelectV2Button), "statusVisible", searching ) + RuiSetBool( Hud_GetRui(file.gamemodeSelectV2Button), "statusHasText", true ) +} + +void function SetSearchingText(string text) +{ + RuiSetString( Hud_GetRui(file.gamemodeSelectV2Button), "statusText", text ) +} + +void function ReadyButton_OnActivate(var button) +{ + if(file.searching) { + file.usercancled = true + file.searching = false + return; + } + + file.searching = true + EmitUISound( "UI_Menu_ReadyUp_1P" ) + RuiSetBool(Hud_GetRui(Hud_GetChild(file.panel, "SelfButton")), "isReady", true) + + GamemodeButtonSetSearching(true) + + switch(quickplay.quickPlayType) + { + case JoinType.TopServerJoin: + thread JoinMatch(button, ConnectingStages) + break; + case JoinType.QuickServerJoin: + thread FindMatch( button ) + break; + case JoinType.QuickPlay: + thread JoinMatch(button, CreatingStages) + break; + } +} + +void function JoinMatch(var button, table StringStages) +{ + HudElem_SetRuiArg(button, "buttonText", Localize("#CANCEL")) + + for (int i = 0; i < 6; i++) + { + if(file.usercancled) + break; + + SetSearchingText(StringStages[i % 3]) + wait 0.5 + } + + if (!file.usercancled) + { + EmitUISound("UI_Menu_Apex_Launch") + switch(quickplay.quickPlayType) + { + case JoinType.QuickPlay: + SetSearchingText("Starting Match") + wait 2 + CreateServer(GetUIMapName(g_SelectedQuickPlayMap), "", g_SelectedQuickPlayMap, g_SelectedQuickPlay, eServerVisibility.OFFLINE) + break; + case JoinType.TopServerJoin: + SetSearchingText("Joining Match") + wait 2 + ConnectToListedServer(g_SelectedTopServer.svServerID) + break; + } + } + + if(file.usercancled) + EmitUISound("UI_Menu_Deny") + + file.usercancled = false + file.searching = false; + RuiSetBool(Hud_GetRui(Hud_GetChild(file.panel, "SelfButton")), "isReady", false) + HudElem_SetRuiArg(button, "buttonText", Localize("#READY")) + SetSearchingText("") + GamemodeButtonSetSearching(false) +} + +void function FindMatch(var button) +{ + HudElem_SetRuiArg( button, "buttonText", Localize( "#CANCEL" ) ) + + thread FindServer() + + int i = 0; + while(!file.foundserver) + { + if(file.usercancled) { + file.foundserver = true + file.noservers = true + continue + } + + SetSearchingText(SearchStages[i]) + + i++ + if(i > 2) + i = 0 + + wait 0.5 + } + + UpdateQuickJoinButtons(button) +} + +void function UpdateQuickJoinButtons(var button) +{ + float waittime = 2 + + if(file.usercancled) + { + EmitUISound( "UI_Menu_Deny" ) + file.noservers = true + RuiSetString( Hud_GetRui( file.gamemodeSelectV2Button ), "modeDescText", "Not Ready" ) + waittime = 0 + } + else if(file.noservers) + { + EmitUISound( "UI_Menu_Deny" ) + RuiSetString( Hud_GetRui( file.gamemodeSelectV2Button ), "modeDescText", "No servers found" ) + } + else if(!file.noservers) + { + EmitUISound( "UI_Menu_Apex_Launch" ) + RuiSetString( Hud_GetRui( file.gamemodeSelectV2Button ), "modeDescText", "Joining Match" ) + } + + wait waittime + + if(!file.noservers) { + ConnectToListedServer(file.m_vSelectedServer.svServerID) + } + + HudElem_SetRuiArg( button, "buttonText", Localize( "#READY" ) ) + RuiSetBool( Hud_GetRui( Hud_GetChild( file.panel, "SelfButton" ) ), "isReady", false ) + SetSearchingText("") + GamemodeButtonSetSearching(false) + + file.searching = false + file.noservers = false + file.foundserver = false + file.usercancled = false +} + +void function FindServer(bool refresh = false) +{ + wait 0.5 + + if(!file.searching) + return + + if(refresh) + RefreshServerList() + + file.m_vServerList.clear() + if(GetServerCount() == 0) { + file.noservers = true + file.foundserver = true + return + } + + // Add each server to the array + for (int i=0, j=GetServerCount(); i < j; i++) { + ServerListing Server + Server.svServerID = i + Server.svServerName = GetServerName(i) + Server.svPlaylist = GetServerPlaylist(i) + Server.svMapName = GetServerMap(i) + Server.svDescription = GetServerDescription(i) + Server.svMaxPlayers = GetServerMaxPlayers(i) + Server.svCurrentPlayers = GetServerCurrentPlayers(i) + file.m_vServerList.append(Server) + } + + //First try non empty or full servers + file.m_vFilteredServerList.clear() + for ( int i = 0, j = file.m_vServerList.len(); i < j; i++ ) + { + // Filters + if ( file.m_vServerList[i].svCurrentPlayers == 0 ) + continue; + + if ( file.m_vServerList[i].svCurrentPlayers == file.m_vServerList[i].svMaxPlayers ) + continue; + + if(file.m_vServerList[i].svPlaylist != g_SelectedPlaylist && g_SelectedPlaylist != "Random Server") + continue; + + // Server fits our requirements, add it to the list + file.m_vFilteredServerList.append(file.m_vServerList[i]) + } + + //if non are found, include empty servers + if(file.m_vFilteredServerList.len() == 0) { + file.m_vFilteredServerList.clear() + for ( int i = 0, j = file.m_vServerList.len(); i < j; i++ ) + { + if ( file.m_vServerList[i].svCurrentPlayers == file.m_vServerList[i].svMaxPlayers ) + continue; + + if(file.m_vServerList[i].svPlaylist != g_SelectedPlaylist && g_SelectedPlaylist != "Random Server") + continue; + + // Server fits our requirements, add it to the list + file.m_vFilteredServerList.append(file.m_vServerList[i]) + } + } + + if(file.m_vFilteredServerList.len() > 1) + { + int randomserver = RandomIntRange( 0, file.m_vFilteredServerList.len() - 1 ) + file.m_vSelectedServer.svServerID = file.m_vFilteredServerList[randomserver].svServerID + file.m_vSelectedServer.svServerName = file.m_vFilteredServerList[randomserver].svServerName + file.m_vSelectedServer.svMapName = file.m_vFilteredServerList[randomserver].svMapName + file.m_vSelectedServer.svPlaylist = file.m_vFilteredServerList[randomserver].svPlaylist + file.m_vSelectedServer.svDescription = file.m_vFilteredServerList[randomserver].svDescription + } + else + { + file.noservers = true + file.foundserver = true + return + } + + for(int i = 0; i < 4; i++) + { + wait 1 + + if(!file.searching) + return + } + + file.foundserver = true +} + + +// ================================================================================================= +// Promos +// ================================================================================================= +void function MiniPromoButton_OnGetFocus( var button ) +{ + if ( file.navInputCallbacksRegistered ) + return + + AddCallback_OnMouseWheelUp( ChangePromoPageToLeft ) + AddCallback_OnMouseWheelDown( ChangePromoPageToRight ) + file.navInputCallbacksRegistered = true + promo.shouldAutoAdvance = false +} + + +void function MiniPromoButton_OnLoseFocus( var button ) +{ + if ( !file.navInputCallbacksRegistered ) + return + + RemoveCallback_OnMouseWheelUp( ChangePromoPageToLeft ) + RemoveCallback_OnMouseWheelDown( ChangePromoPageToRight ) + file.navInputCallbacksRegistered = false + promo.shouldAutoAdvance = true + + if(!promo.IsAutoAdvance) + thread AutoAdvancePages() +} + +void function ChangePromoPageToLeft() +{ + promo.currentPage-- + if(promo.currentPage < 0) + promo.currentPage = promo.Items.len() - 1 + + SetPromoPage() +} + +void function ChangePromoPageToRight() +{ + promo.currentPage++ + if(promo.currentPage > promo.Items.len() - 1) + promo.currentPage = 0 + + SetPromoPage() +} + +void function AutoAdvancePages() +{ + promo.IsAutoAdvance = true + int i = 0 + while(promo.shouldAutoAdvance) + { + wait 1 + + if(!promo.shouldAutoAdvance) + continue + + if(i >= 10) { + i = 0 + ChangePromoPageToRight() + } + + i++ + } + + promo.IsAutoAdvance = false +} + +void function SetPromoPage() +{ + if(promo.Items.len() == 0) { + var miniPromo = Hud_GetChild( file.panel, "MiniPromo" ) + Hud_Hide( miniPromo ) + return + } + + var miniPromo = Hud_GetChild( file.panel, "MiniPromo" ) + Hud_Show( miniPromo) + RuiSetString( Hud_GetRui( miniPromo ), "lastText1", promo.Items[promo.currentPage].promoText1 ) + RuiSetString( Hud_GetRui( miniPromo ), "lastText2", promo.Items[promo.currentPage].promoText2 ) + RuiSetImage( Hud_GetRui( miniPromo ), "lastImageAsset", promo.Items[promo.currentPage].promoImage ) + RuiSetBool( Hud_GetRui( miniPromo ), "lastFormat", true ) + RuiSetInt( Hud_GetRui( miniPromo ), "activePageIndex", promo.currentPage ) +} + +void function GetR5RPromos() +{ + //INFO FOR LATER + //MAX PAGES = 5 + //TEMPORARY PROMO DATA + //WILL BE REPLACED WITH A CALL TO THE PROMO ENDPOINT + promo.Items.clear() + + for(int i = 0; i < MAX_PROMO_ITEMS; i++) + { + PromoItem item + item.promoText1 = "Temp Promo " + (i + 1) + item.promoText2 = "Temp Promo " + (i + 1) + item.promoImage = GetAssetFromString( $"rui/promo/S3_General_" + (i + 1).tostring() ) + promo.Items.append(item) + } + + RuiSetInt( Hud_GetRui( Hud_GetChild( file.panel, "MiniPromo" ) ), "pageCount", promo.Items.len() ) +} \ No newline at end of file diff --git a/vscripts/ui/CustomLobby/panel_legends.nut b/vscripts/ui/CustomLobby/panel_legends.nut new file mode 100644 index 000000000..8e810b5e4 --- /dev/null +++ b/vscripts/ui/CustomLobby/panel_legends.nut @@ -0,0 +1,184 @@ +global function InitR5RLegendsPanel +global function R5RCharactersPanel_Show + +struct +{ + var menu + var panel + var characterSelectInfoRui + array buttons + var actionLabel + table buttonToCharacter + ItemFlavor ornull presentedCharacter +} file + +global bool g_InLegendsMenu = false + +void function InitR5RLegendsPanel( var panel ) +{ + file.panel = panel + file.menu = GetParentMenu( file.panel ) + file.characterSelectInfoRui = Hud_GetRui( Hud_GetChild( file.panel, "CharacterSelectInfo" ) ) + file.buttons = GetPanelElementsByClassname( panel, "CharacterButtonClass" ) + + file.actionLabel = Hud_GetChild( panel, "ActionLabel" ) + Hud_SetText( file.actionLabel, "#X_BUTTON_TOGGLE_LOADOUT" ) +} + +void function CharacterButton_OnMiddleClick( var button ) +{ + SetFeaturedCharacterFromButton( button ) +} + +void function SetFeaturedCharacterFromButton( var button ) +{ + if ( button in file.buttonToCharacter ) + SetFeaturedCharacter( file.buttonToCharacter[button] ) +} + +void function CharacterButton_OnActivate( var button ) +{ + ItemFlavor character = file.buttonToCharacter[button] + CustomizeCharacterMenu_SetCharacter( character ) + PresentCharacter( character ) + RequestSetItemFlavorLoadoutSlot( LocalClientEHI(), Loadout_CharacterClass(), character ) // TEMP, Some menu state is broken without this. Need Declan to look at why RefreshLoadoutSlotInternal doesn't run when editing a loadout that isn't the featured one before removing this. + + SetFeaturedCharacter( character ) + + SetTopLevelCustomizeContext( LoadoutSlot_GetItemFlavor( LocalClientEHI(), Loadout_CharacterClass() ) ) + EmitUISound( "UI_Menu_Legend_Select" ) + AdvanceMenu( GetMenu( "CustomizeCharacterMenu" ) ) + g_InLegendsMenu = true +} + +void function CharacterButton_OnRightClick( var button ) +{ + OpenCharacterSkillsDialog( file.buttonToCharacter[button] ) +} + +void function SetFeaturedCharacter( ItemFlavor character ) +{ + foreach ( button in file.buttons ) + if ( button in file.buttonToCharacter ) + Hud_SetSelected( button, file.buttonToCharacter[button] == character ) + + RequestSetItemFlavorLoadoutSlot( LocalClientEHI(), Loadout_CharacterClass(), character ) + + EmitUISound( "UI_Menu_Legend_SetFeatured" ) +} + +table WORKAROUND_LegendButtonToClickHandlerMap1 = {} +table WORKAROUND_LegendButtonToClickHandlerMap2 = {} +table WORKAROUND_LegendButtonToClickHandlerMap3 = {} +void function InitCharacterButtons() +{ + file.buttonToCharacter.clear() + + array allCharacters + foreach ( ItemFlavor itemFlav in GetAllCharacters() ) + allCharacters.append( itemFlav ) + + //Shit fix, was registering event handlers every lobby load + foreach ( button in file.buttons ) + { + Hud_SetVisible( button, false ) + + if ( button in WORKAROUND_LegendButtonToClickHandlerMap1 ) + { + Hud_RemoveEventHandler( button, UIE_CLICK, WORKAROUND_LegendButtonToClickHandlerMap1[button] ) + delete WORKAROUND_LegendButtonToClickHandlerMap1[button] + } + + if( button in WORKAROUND_LegendButtonToClickHandlerMap2 ) + { + Hud_RemoveEventHandler( button, UIE_CLICKRIGHT, WORKAROUND_LegendButtonToClickHandlerMap2[button] ) + delete WORKAROUND_LegendButtonToClickHandlerMap2[button] + } + + if( button in WORKAROUND_LegendButtonToClickHandlerMap3 ) + { + Hud_RemoveEventHandler( button, UIE_MIDDLECLICK, WORKAROUND_LegendButtonToClickHandlerMap3[button] ) + delete WORKAROUND_LegendButtonToClickHandlerMap3[button] + } + + void functionref(var) clickHandler1 = CharacterButton_OnActivate + void functionref(var) clickHandler2 = CharacterButton_OnRightClick + void functionref(var) clickHandler3 = CharacterButton_OnMiddleClick + + Hud_AddEventHandler( button, UIE_CLICK, clickHandler1 ) + Hud_AddEventHandler( button, UIE_CLICKRIGHT, clickHandler2 ) + Hud_AddEventHandler( button, UIE_MIDDLECLICK, clickHandler3 ) + + WORKAROUND_LegendButtonToClickHandlerMap1[button] <- clickHandler1 + WORKAROUND_LegendButtonToClickHandlerMap2[button] <- clickHandler2 + WORKAROUND_LegendButtonToClickHandlerMap3[button] <- clickHandler3 + } + + + + table mappingTable = GetCharacterButtonMapping( allCharacters, file.buttons.len() ) + foreach ( int buttonIndex, ItemFlavor itemFlav in mappingTable ) + { + CharacterButton_Init( file.buttons[ buttonIndex ], itemFlav ) + Hud_SetVisible( file.buttons[ buttonIndex ], true ) + } + + array rowSizes = GetCharacterButtonRowSizes( allCharacters.len() ) + array< array > buttonRows + + int buttonIndex = 0 + foreach ( rowSize in rowSizes ) + { + array buttons + int last = buttonIndex + rowSize + + while ( buttonIndex < last ) + { + buttons.append( file.buttons[buttonIndex] ) + buttonIndex++ + } + + buttonRows.append( buttons ) + } + LayoutCharacterButtons( buttonRows ) +} + + +void function CharacterButton_Init( var button, ItemFlavor character ) +{ + file.buttonToCharacter[button] <- character + + bool isSelected = LoadoutSlot_GetItemFlavor( LocalClientEHI(), Loadout_CharacterClass() ) == character + + Hud_SetVisible( button, true ) + Hud_SetLocked( button, !IsItemFlavorUnlockedForLoadoutSlot( LocalClientEHI(), Loadout_CharacterClass(), character ) ) + Hud_SetSelected( button, isSelected ) + + RuiSetString( Hud_GetRui( button ), "buttonText", Localize( ItemFlavor_GetLongName( character ) ).toupper() ) + RuiSetImage( Hud_GetRui( button ), "buttonImage", CharacterClass_GetGalleryPortrait( character ) ) + RuiSetImage( Hud_GetRui( button ), "bgImage", CharacterClass_GetGalleryPortraitBackground( character ) ) + RuiSetImage( Hud_GetRui( button ), "roleImage", CharacterClass_GetCharacterRoleImage( character ) ) +} + +void function R5RCharactersPanel_Show() +{ + UI_SetPresentationType( ePresentationType.CHARACTER_SELECT ) + + ItemFlavor character = LoadoutSlot_GetItemFlavor( LocalClientEHI(), Loadout_CharacterClass() ) + SetTopLevelCustomizeContext( character ) + PresentCharacter( character ) + + InitCharacterButtons() +} + +void function PresentCharacter( ItemFlavor character ) +{ + if ( file.presentedCharacter == character ) + return + + RuiSetString( file.characterSelectInfoRui, "nameText", Localize( ItemFlavor_GetLongName( character ) ).toupper() ) + RuiSetString( file.characterSelectInfoRui, "subtitleText", Localize( CharacterClass_GetCharacterSelectSubtitle( character ) ) ) + RuiSetGameTime( file.characterSelectInfoRui, "initTime", Time() ) + + file.presentedCharacter = character +} \ No newline at end of file diff --git a/vscripts/ui/CustomLobby/panel_loadout.nut b/vscripts/ui/CustomLobby/panel_loadout.nut new file mode 100644 index 000000000..919a2680f --- /dev/null +++ b/vscripts/ui/CustomLobby/panel_loadout.nut @@ -0,0 +1,153 @@ +global function InitLoadoutPanel +global function ShowLoadoutPanel + +struct +{ + var panel + array buttons + table buttonToCategory + + var miscCustomizeButton +} file + +global bool g_InLoutoutPanel = false + +void function InitLoadoutPanel( var panel ) +{ + file.panel = panel + file.buttons = GetPanelElementsByClassname( panel, "WeaponCategoryButtonClass" ) + Assert( file.buttons.len() == 6 ) + + SetPanelTabTitle( panel, "#ARMORY" ) + SetPanelTabTitle( panel, "#LOADOUT" ) + Hud_SetY( file.buttons[0], 120 ) + + AddPanelEventHandler( panel, eUIEvent.PANEL_HIDE, ArmoryPanel_OnHide ) + AddPanelEventHandler_FocusChanged( panel, ArmoryPanel_OnFocusChanged ) + + file.miscCustomizeButton = Hud_GetChild( panel, "MiscCustomizeButton" ) + Hud_AddEventHandler( file.miscCustomizeButton, UIE_CLICK, MiscCustomizeButton_OnActivate ) + Hud_SetVisible( file.miscCustomizeButton, true ) + + AddPanelFooterOption( panel, LEFT, BUTTON_B, true, "#B_BUTTON_BACK", "#B_BUTTON_BACK" ) + AddPanelFooterOption( panel, LEFT, BUTTON_A, false, "#A_BUTTON_CUSTOMIZE_WEAPON", "", null, IsButtonFocused ) +} + + +bool function IsButtonFocused() +{ + if ( file.buttons.contains( GetFocus() ) ) + return true + + if ( GetFocus() == file.miscCustomizeButton ) + return true + + return false +} + +table WORKAROUND_LegendButtonToClickHandlerMap1 = {} +table WORKAROUND_LegendButtonToClickHandlerMap2 = {} +void function ShowLoadoutPanel() +{ + file.buttonToCategory.clear() + + UI_SetPresentationType( ePresentationType.WEAPON_CATEGORY ) + + foreach ( button in file.buttons ) + { + if ( button in WORKAROUND_LegendButtonToClickHandlerMap1 ) + { + Hud_RemoveEventHandler( button, UIE_GET_FOCUS, WORKAROUND_LegendButtonToClickHandlerMap1[button] ) + delete WORKAROUND_LegendButtonToClickHandlerMap1[button] + } + + if( button in WORKAROUND_LegendButtonToClickHandlerMap2 ) + { + Hud_RemoveEventHandler( button, UIE_CLICK, WORKAROUND_LegendButtonToClickHandlerMap2[button] ) + delete WORKAROUND_LegendButtonToClickHandlerMap2[button] + } + + void functionref(var) clickHandler1 = CategoryButton_OnGetFocus + void functionref(var) clickHandler2 = CategoryButton_OnActivate + + Hud_AddEventHandler( button, UIE_GET_FOCUS, clickHandler1 ) + Hud_AddEventHandler( button, UIE_CLICK, clickHandler2 ) + + WORKAROUND_LegendButtonToClickHandlerMap1[button] <- clickHandler1 + WORKAROUND_LegendButtonToClickHandlerMap2[button] <- clickHandler2 + } + + array categories = GetAllWeaponCategories() + + foreach ( index, button in file.buttons ) + CategoryButton_Init( button, categories[index] ) + + MiscCustomizeButton_Init( file.miscCustomizeButton ) +} + +void function ArmoryPanel_OnHide( var panel ) +{ + file.buttonToCategory.clear() +} + + +void function ArmoryPanel_OnFocusChanged( var panel, var oldFocus, var newFocus ) +{ + if ( !IsValid( panel ) ) // uiscript_reset + return + + if ( !newFocus || GetParentMenu( panel ) != GetActiveMenu() ) + return + + UpdateFooterOptions() +} + + +void function CategoryButton_Init( var button, ItemFlavor category ) +{ + bool isNew = (Newness_ReverseQuery_GetNewCount( NEWNESS_QUERIES.WeaponCategoryButton[category] ) > 0) + Hud_SetNew( button, isNew ) + + var rui = Hud_GetRui( button ) + RuiSetString( rui, "buttonText", Localize( ItemFlavor_GetLongName( category ) ).toupper() ) + RuiSetImage( rui, "buttonImage", ItemFlavor_GetIcon( category ) ) + RuiSetInt( rui, "numPips", GetWeaponsInCategory( category ).len() ) + + file.buttonToCategory[button] <- category +} + + +void function MiscCustomizeButton_Init( var button ) +{ + bool isNew = (Newness_ReverseQuery_GetNewCount( NEWNESS_QUERIES.GameCustomizationButton ) > 0) + Hud_SetNew( button, isNew ) + + var rui = Hud_GetRui( button ) + RuiSetString( rui, "buttonText", Localize( "#MISC_CUSTOMIZATION" ).toupper() ) + RuiSetInt( rui, "numPips", 3 ) +} + + +void function CategoryButton_OnGetFocus( var button ) +{ + ItemFlavor category = file.buttonToCategory[button] + + printt( ItemFlavor_GetHumanReadableRef( category ) ) +} + + +void function CategoryButton_OnActivate( var button ) +{ + ItemFlavor category = file.buttonToCategory[button] + SetTopLevelCustomizeContext( category ) + + g_InLoutoutPanel = true + + AdvanceMenu( GetMenu( "CustomizeWeaponMenu" ) ) +} + + +void function MiscCustomizeButton_OnActivate( var button ) +{ + AdvanceMenu( GetMenu( "MiscCustomizeMenu" ) ) +} diff --git a/vscripts/ui/CustomLobby/panel_mainmenu.nut b/vscripts/ui/CustomLobby/panel_mainmenu.nut new file mode 100644 index 000000000..6d63db2ad --- /dev/null +++ b/vscripts/ui/CustomLobby/panel_mainmenu.nut @@ -0,0 +1,81 @@ +global function InitR5RMainMenuPanel + +struct +{ + var menu + var panel + var launchButton + var status + + bool is_working = false +} file + +void function InitR5RMainMenuPanel( var panel ) +{ + file.panel = GetPanel( "R5RMainMenuPanel" ) + file.menu = GetParentMenu( file.panel ) + file.launchButton = Hud_GetChild( panel, "LaunchButton" ) + + file.status = Hud_GetRui( Hud_GetChild( panel, "Status" ) ) + + AddPanelEventHandler( file.panel, eUIEvent.PANEL_SHOW, OnMainMenuPanel_Show ) + Hud_AddEventHandler( file.launchButton, UIE_CLICK, LaunchButton_OnActivate ) + + AddPanelFooterOption( panel, LEFT, BUTTON_B, true, "#B_BUTTON_EXIT_TO_DESKTOP", "#B_BUTTON_EXIT_TO_DESKTOP", null, null ) + AddPanelFooterOption( panel, LEFT, KEY_TAB, false, "", "#DATACENTER_DOWNLOADING", OpenDataCenterDialog, IsDataCenterFooterVisible, UpdateDataCenterFooter ) +} + +void function UpdateDataCenterFooter( InputDef footerData ) +{ + string label = "Data Center: ms.r5reloaded.com" + footerData.clickable = false + + var elem = footerData.vguiElem + Hud_SetText( elem, label ) + Hud_Show( elem ) +} + +bool function IsDataCenterFooterVisible() +{ + return true +} + +void function LaunchButton_OnActivate( var button ) +{ + if(file.is_working) + return + + thread LaunchCustomLobby() +} + +void function LaunchCustomLobby() +{ + file.is_working = true + + ShowSpinner(true) + + wait 1 + + CreateServer("Lobby", "", "mp_lobby", "menufall", eServerVisibility.OFFLINE) + ShowSpinner(false) + + file.is_working = false +} + +void function ShowSpinner(bool show) +{ + RuiSetBool( file.status, "showSpinner", show ) + RuiSetBool( file.status, "showPrompt", !show ) +} + +void function OnMainMenuPanel_Show( var panel ) +{ + var statusDetailsRui = Hud_GetRui( Hud_GetChild( file.panel, "StatusDetails" ) ) + var statusRui = Hud_GetRui( Hud_GetChild( file.panel, "Status" ) ) + + RuiSetGameTime( statusDetailsRui, "initTime", Time() ) + RuiSetString( statusRui, "prompt", Localize("#MAINMENU_CONTINUE") ) + RuiSetBool( statusRui, "showPrompt", true ) + RuiSetBool( statusRui, "showSpinner", false ) + Hud_SetVisible( file.launchButton, true ) +} \ No newline at end of file diff --git a/vscripts/ui/R5RMenus/panel_map.nut b/vscripts/ui/CustomLobby/panel_map.nut similarity index 91% rename from vscripts/ui/R5RMenus/panel_map.nut rename to vscripts/ui/CustomLobby/panel_map.nut index 8e27f7ba8..78a29099c 100644 --- a/vscripts/ui/R5RMenus/panel_map.nut +++ b/vscripts/ui/CustomLobby/panel_map.nut @@ -6,30 +6,23 @@ struct var menu var panel var listPanel - table map_button_table } file void function InitR5RMapPanel( var panel ) { file.panel = panel - file.menu = GetPanel( "R5RPrivateMatchPanel" ) + file.menu = GetPanel( "CreatePanel" ) file.listPanel = Hud_GetChild( panel, "MapList" ) } void function RefreshUIMaps() { - //GetUIMapAsset(m_vMaps[i]) - - array m_vMaps = GetPlaylistMaps(ServerSettings.svPlaylist) - - int m_vMaps_count = m_vMaps.len() - var scrollPanel = Hud_GetChild( file.listPanel, "ScrollPanel" ) - Hud_InitGridButtons( file.listPanel, m_vMaps_count ) - + array m_vMaps = GetPlaylistMaps(ServerSettings.svPlaylist) + Hud_InitGridButtons( file.listPanel, m_vMaps.len() ) foreach ( int id, string map in m_vMaps ) { var button = Hud_GetChild( scrollPanel, "GridButton" + id ) @@ -58,9 +51,8 @@ void function RefreshUIMaps() void function SelectServerMap( var button ) { - EmitUISound( "menu_accept" ) - //Set selected server map + EmitUISound( "menu_accept" ) SetSelectedServerMap(file.map_button_table[button]) } diff --git a/vscripts/ui/R5RMenus/panel_playlist.nut b/vscripts/ui/CustomLobby/panel_playlist.nut similarity index 87% rename from vscripts/ui/R5RMenus/panel_playlist.nut rename to vscripts/ui/CustomLobby/panel_playlist.nut index 215427c98..c23b436d3 100644 --- a/vscripts/ui/R5RMenus/panel_playlist.nut +++ b/vscripts/ui/CustomLobby/panel_playlist.nut @@ -13,24 +13,16 @@ struct void function InitR5RPlaylistPanel( var panel ) { file.panel = panel - file.menu = GetPanel( "R5RPrivateMatchPanel" ) - + file.menu = GetPanel( "CreatePanel" ) file.listPanel = Hud_GetChild( panel, "PlaylistList" ) } -table WORKAROUND_PlaylistButtonToClickHandlerMap = {} void function RefreshUIPlaylists() { - //Get Playlists Array - array m_vPlaylists = GetPlaylists() - - //Get Number Of Playlists - int m_vPlaylists_count = m_vPlaylists.len() - var scrollPanel = Hud_GetChild( file.listPanel, "ScrollPanel" ) - Hud_InitGridButtons( file.listPanel, m_vPlaylists_count ) - + array m_vPlaylists = GetPlaylists() + Hud_InitGridButtons( file.listPanel, m_vPlaylists.len() ) foreach ( int id, string playlist in m_vPlaylists ) { var button = Hud_GetChild( scrollPanel, "GridButton" + id ) @@ -45,7 +37,7 @@ void function RefreshUIPlaylists() delete file.playlist_button_table[button] } - //Add the Even handler for the button + //Add the Event handler for the button Hud_AddEventHandler( button, UIE_CLICK, SelectServerPlaylist ) Hud_AddEventHandler( button, UIE_GET_FOCUS, OnPlaylistHover ) Hud_AddEventHandler( button, UIE_LOSE_FOCUS, OnPlaylistUnHover ) @@ -77,9 +69,8 @@ array function GetPlaylists() void function SelectServerPlaylist( var button ) { - EmitUISound( "menu_accept" ) - //Set selected server playlist + EmitUISound( "menu_accept" ) thread SetSelectedServerPlaylist(file.playlist_button_table[button]) } diff --git a/vscripts/ui/CustomLobby/panel_serverbrowser.nut b/vscripts/ui/CustomLobby/panel_serverbrowser.nut new file mode 100644 index 000000000..b7ad1e6d1 --- /dev/null +++ b/vscripts/ui/CustomLobby/panel_serverbrowser.nut @@ -0,0 +1,630 @@ +untyped +// Only way to get Hud_GetPos(sliderButton) working was to use untyped + +global function InitServerBrowserPanel +global function InitR5RConnectingPanel + +global function ServerBrowser_RefreshServerListing +global function RegisterServerBrowserButtonPressedCallbacks +global function UnRegisterServerBrowserButtonPressedCallbacks +global function ServerBrowser_UpdateFilterLists + +global function MS_GetPlayerCount +global function MS_GetServerCount +global function Servers_GetActivePlaylists +global function Servers_GetCurrentServerListing + +//Used for max items for page +//Changing this requires a bit of work to get more to show correctly +const SB_MAX_SERVER_PER_PAGE = 15 + +// Stores mouse delta used for scroll bar +struct { + int deltaX = 0 + int deltaY = 0 +} mouseDeltaBuffer + +struct +{ + int Offset = 0 + int Start = 0 + int End = 0 +} m_vScroll + +//Struct for selected server +struct SelectedServerInfo +{ + int svServerID = -1 + string svServerName = "" + string svMapName = "" + string svPlaylist = "" + string svDescription = "" +} + +//Struct for server listing +global struct ServerListing +{ + int svServerID + string svServerName + string svMapName + string svPlaylist + string svDescription + int svMaxPlayers + int svCurrentPlayers +} + +struct { + bool hideEmpty = false + bool useSearch = false + string searchTerm + array filterMaps + string filterMap = "Any" + array filterGamemodes + string filterGamemode = "Any" +} filterArguments + +struct +{ + var menu + var panel + var connectingpanel + + int m_vAllPlayers + int m_vAllServers + + SelectedServerInfo m_vSelectedServer + array m_vServerList + array m_vFilteredServerList +} file + +global array global_m_vServerList + +void function InitR5RConnectingPanel( var panel ) +{ + file.connectingpanel = panel +} + +void function InitServerBrowserPanel( var panel ) +{ + file.panel = panel + file.menu = GetParentMenu( file.panel ) + + AddMouseMovementCaptureHandler( Hud_GetChild(file.panel, "MouseMovementCapture"), UpdateMouseDeltaBuffer ) + Hud_AddEventHandler( Hud_GetChild( file.panel, "ConnectButton" ), UIE_CLICK, ServerBrowser_ConnectBtnClicked ) + Hud_AddEventHandler( Hud_GetChild( file.panel, "RefreshServers" ), UIE_CLICK, ServerBrowser_RefreshBtnClicked ) + Hud_AddEventHandler( Hud_GetChild( file.panel, "ClearFliters" ), UIE_CLICK, ClearFilterServer_Activate ) + Hud_AddEventHandler( Hud_GetChild( file.panel, "BtnServerListDownArrow" ), UIE_CLICK, OnScrollDown ) + Hud_AddEventHandler( Hud_GetChild( file.panel, "BtnServerListUpArrow" ), UIE_CLICK, OnScrollUp ) + AddButtonEventHandler( Hud_GetChild( file.panel, "BtnServerSearch"), UIE_CHANGE, FilterServer_Activate ) + + Hud_AddEventHandler( Hud_GetChild( Hud_GetChild( file.panel, "SwtBtnHideEmpty" ), "LeftButton" ), UIE_CLICK, FilterServer_Activate ) + Hud_AddEventHandler( Hud_GetChild( Hud_GetChild( file.panel, "SwtBtnHideEmpty" ), "RightButton" ), UIE_CLICK, FilterServer_Activate ) + Hud_AddEventHandler( Hud_GetChild( Hud_GetChild( file.panel, "SwtBtnSelectGamemode" ), "LeftButton" ), UIE_CLICK, FilterServer_Activate ) + Hud_AddEventHandler( Hud_GetChild( Hud_GetChild( file.panel, "SwtBtnSelectGamemode" ), "RightButton" ), UIE_CLICK, FilterServer_Activate ) + Hud_AddEventHandler( Hud_GetChild( Hud_GetChild( file.panel, "SwtBtnSelectMap" ), "LeftButton" ), UIE_CLICK, FilterServer_Activate ) + Hud_AddEventHandler( Hud_GetChild( Hud_GetChild( file.panel, "SwtBtnSelectMap" ), "RightButton" ), UIE_CLICK, FilterServer_Activate ) + + foreach ( var elem in GetElementsByClassname( file.menu, "ServBtn" ) ) { + RuiSetString( Hud_GetRui( elem ), "buttonText", "") + Hud_AddEventHandler( elem, UIE_CLICK, ServerBrowser_ServerBtnClicked ) + Hud_AddEventHandler( elem, UIE_DOUBLECLICK, ServerBrowser_ServerBtnDoubleClicked ) + } + + ServerBrowser_UpdateSelectedServerUI() + ServerBrowser_UpdateServerPlayerCount() + ServerBrowser_NoServersFound(false) + ServerBrowser_UpdateFilterLists() + OnBtnFiltersClear() +} + +void function RegisterServerBrowserButtonPressedCallbacks() +{ + RegisterButtonPressedCallback( MOUSE_WHEEL_UP , OnScrollUp ) + RegisterButtonPressedCallback( MOUSE_WHEEL_DOWN , OnScrollDown ) +} + +void function UnRegisterServerBrowserButtonPressedCallbacks() +{ + DeregisterButtonPressedCallback( MOUSE_WHEEL_UP , OnScrollUp ) + DeregisterButtonPressedCallback( MOUSE_WHEEL_DOWN , OnScrollDown ) +} + +//////////////////////////////////// +// +// Button Functions +// +//////////////////////////////////// + +void function ClearFilterServer_Activate(var button) +{ + OnBtnFiltersClear() + thread ServerBrowser_FilterServerList() +} + +void function FilterServer_Activate(var button) +{ + thread ServerBrowser_FilterServerList() +} + +void function ServerBrowser_RefreshBtnClicked(var button) +{ + thread ServerBrowser_RefreshServerListing() +} + +void function ServerBrowser_ConnectBtnClicked(var button) +{ + //If server isnt selected return + if(file.m_vSelectedServer.svServerID == -1) + return + + //Connect to server + printf("Connecting to server: (Server ID: " + file.m_vSelectedServer.svServerID + " | Server Name: " + file.m_vSelectedServer.svServerName + " | Map: " + file.m_vSelectedServer.svMapName + " | Playlist: " + file.m_vSelectedServer.svPlaylist + ")") + thread ServerBrowser_StartConnection(file.m_vSelectedServer.svServerID) +} + +void function ServerBrowser_ServerBtnClicked(var button) +{ + //Get the button id and add it to the scroll offset to get the correct server id + int id = Hud_GetScriptID( button ).tointeger() + m_vScroll.Offset + ServerBrowser_SelectServer(file.m_vFilteredServerList[id].svServerID) +} + +void function ServerBrowser_ServerBtnDoubleClicked(var button) +{ + //Get the button id and add it to the scroll offset to get the correct server id + int id = Hud_GetScriptID( button ).tointeger() + m_vScroll.Offset + ServerBrowser_SelectServer(file.m_vFilteredServerList[id].svServerID) + thread ServerBrowser_StartConnection(id) +} + +//////////////////////////////////// +// +// General Functions +// +//////////////////////////////////// + +void function ServerBrowser_StartConnection(int id) +{ + Hud_SetVisible(Hud_GetChild( file.menu, "R5RConnectingPanel"), true) + Hud_SetText(Hud_GetChild( GetPanel( "R5RConnectingPanel" ), "ServerName" ), file.m_vServerList[id].svServerName ) + + wait 2 + + Hud_SetVisible(Hud_GetChild( file.menu, "R5RConnectingPanel"), false) + ConnectToListedServer(id) +} + +void function ServerBrowser_UpdateSelectedServerUI() +{ + Hud_SetText(Hud_GetChild( file.panel, "ServerCurrentPlaylist" ), "Current Playlist" ) + Hud_SetText(Hud_GetChild( file.panel, "ServerCurrentMap" ), "Current Map" ) + Hud_SetText(Hud_GetChild( file.panel, "ServerNameInfoEdit" ), file.m_vSelectedServer.svServerName ) + Hud_SetText(Hud_GetChild( file.panel, "ServerCurrentMapEdit" ), GetUIMapName(file.m_vSelectedServer.svMapName) ) + Hud_SetText(Hud_GetChild( file.panel, "PlaylistInfoEdit" ), GetUIPlaylistName(file.m_vSelectedServer.svPlaylist) ) + Hud_SetText(Hud_GetChild( file.panel, "ServerDesc" ), file.m_vSelectedServer.svDescription ) + RuiSetImage( Hud_GetRui( Hud_GetChild( file.panel, "ServerMapImg" ) ), "loadscreenImage", GetUIMapAsset(file.m_vSelectedServer.svMapName) ) +} + +void function ServerBrowser_NoServersLabel(bool show) +{ + //Set no servers found ui based on bool + Hud_SetVisible(Hud_GetChild( file.panel, "PlayerCountLine" ), !show ) + Hud_SetVisible(Hud_GetChild( file.panel, "PlaylistLine" ), !show ) + Hud_SetVisible(Hud_GetChild( file.panel, "MapLine" ), !show ) + Hud_SetVisible(Hud_GetChild( file.panel, "NoServersLbl" ), show ) +} + +void function ServerBrowser_UpdateServerPlayerCount() +{ + Hud_SetText( Hud_GetChild( file.panel, "PlayersCount"), "Players: " + file.m_vAllPlayers) + Hud_SetText( Hud_GetChild( file.panel, "ServersCount"), "Servers: " + file.m_vAllServers) +} + +void function OnBtnFiltersClear() +{ + Hud_SetText( Hud_GetChild( file.panel, "BtnServerSearch" ), "" ) + filterArguments.useSearch = false + filterArguments.searchTerm = "" + filterArguments.filterGamemode = "Any" + filterArguments.filterMap = "Any" + filterArguments.hideEmpty = false + + SetConVarBool( "serverbrowser_hideEmptyServers", false ) + SetConVarInt( "serverbrowser_mapFilter", 0 ) + SetConVarInt( "serverbrowser_gamemodeFilter", 0 ) +} + +void function ServerBrowser_SelectServer(int id) +{ + if(file.m_vFilteredServerList.len() == 0) + id = -1 + + + if(id == -1) { + file.m_vSelectedServer.svServerID = -1 + file.m_vSelectedServer.svServerName = "Please select a server from the list" + file.m_vSelectedServer.svMapName = "error" + file.m_vSelectedServer.svPlaylist = "error" + file.m_vSelectedServer.svDescription = "" + ServerBrowser_UpdateSelectedServerUI() + return + } + + file.m_vSelectedServer.svServerID = file.m_vServerList[id].svServerID + file.m_vSelectedServer.svServerName = file.m_vServerList[id].svServerName + file.m_vSelectedServer.svMapName = file.m_vServerList[id].svMapName + file.m_vSelectedServer.svPlaylist = file.m_vServerList[id].svPlaylist + file.m_vSelectedServer.svDescription = file.m_vServerList[id].svDescription + ServerBrowser_UpdateSelectedServerUI() +} + +void function ServerBrowser_ResetLabels() +{ + //Hide all server buttons + array serverbuttons = GetElementsByClassname( file.menu, "ServBtn" ) + foreach ( var elem in serverbuttons ) + Hud_SetVisible(elem, false) + + //Clear all server labels + array serverlabels = GetElementsByClassname( file.menu, "ServerLabels" ) + foreach ( var elem in serverlabels ) + Hud_SetText(elem, "") +} + +void function ServerBrowser_NoServersFound(bool showlabel) +{ + ServerBrowser_NoServersLabel(showlabel) + ServerBrowser_SelectServer(-1) + ServerBrowser_ResetLabels() + + if(showlabel) + Hud_SetText( Hud_GetChild( file.panel, "PlayersCount"), "Players: 0") + Hud_SetText( Hud_GetChild( file.panel, "ServersCount"), "Servers: 0") +} + +//////////////////////////////////// +// +// ServerListing Functions +// +//////////////////////////////////// + +void function ServerBrowser_RefreshServerListing(bool refresh = true) +{ + if (refresh) + RefreshServerList() + + file.m_vServerList.clear() + + // Add each server to the array + for (int i=0, j=GetServerCount(); i < j; i++) { + ServerListing Server + Server.svServerID = i + Server.svServerName = GetServerName(i) + Server.svPlaylist = GetServerPlaylist(i) + Server.svMapName = GetServerMap(i) + Server.svDescription = GetServerDescription(i) + Server.svMaxPlayers = GetServerMaxPlayers(i) + Server.svCurrentPlayers = GetServerCurrentPlayers(i) + file.m_vServerList.append(Server) + } + + thread ServerBrowser_FilterServerList() +} + +void function ServerBrowser_FilterServerList() +{ + if(!IsLobby()) + return + + ServerBrowser_UpdateFilterLists() + + if(GetConVarInt( "serverbrowser_mapFilter" ) > (filterArguments.filterMaps.len() - 1) || GetConVarInt( "serverbrowser_gamemodeFilter" ) > (filterArguments.filterGamemodes.len() - 1)) + OnBtnFiltersClear() + + //Must wait for convars to actually set + wait 0.1 + + ServerBrowser_NoServersFound(false) + + m_vScroll.Offset = 0 + file.m_vAllPlayers = 0 + + filterArguments.hideEmpty = GetConVarBool( "serverbrowser_hideEmptyServers" ) + filterArguments.filterMap = filterArguments.filterMaps[GetConVarInt( "serverbrowser_mapFilter" )] + filterArguments.filterGamemode = filterArguments.filterGamemodes[GetConVarInt( "serverbrowser_gamemodeFilter" )] + filterArguments.searchTerm = Hud_GetUTF8Text( Hud_GetChild( file.panel, "BtnServerSearch" ) ) + filterArguments.useSearch = filterArguments.searchTerm != "" + + file.m_vFilteredServerList.clear() + for ( int i = 0, j = file.m_vServerList.len(); i < j; i++ ) + { + // Filters + if ( filterArguments.hideEmpty && file.m_vServerList[i].svCurrentPlayers == 0 ) + continue; + + if ( filterArguments.filterMap != "Any" && filterArguments.filterMap != file.m_vServerList[i].svMapName ) + continue; + + if ( filterArguments.filterGamemode != "Any" && filterArguments.filterGamemode != file.m_vServerList[i].svPlaylist ) + continue; + + // Search + if ( filterArguments.useSearch ) + { + array sName + sName.append( file.m_vServerList[i].svServerName.tolower() ) + sName.append( file.m_vServerList[i].svMapName.tolower() ) + sName.append( GetUIMapName(file.m_vServerList[i].svMapName).tolower() ) + sName.append( file.m_vServerList[i].svPlaylist.tolower() ) + sName.append( GetUIPlaylistName(file.m_vServerList[i].svPlaylist).tolower() ) + + string sTerm = filterArguments.searchTerm.tolower() + + bool found = false + for( int l = 0, k = sName.len(); l < k; l++ ) + if ( sName[l].find( sTerm ) >= 0 ) + found = true + + if ( !found ) + continue; + } + + // Server fits our requirements, add it to the list + file.m_vFilteredServerList.append(file.m_vServerList[i]) + } + + // Get Server Count + file.m_vAllServers = file.m_vFilteredServerList.len() + + // If no servers then set no servers found ui and return + if(file.m_vAllServers == 0) { + ServerBrowser_NoServersFound(true) + return + } + + // Setup Buttons and labels + for( int i=0, j=file.m_vAllServers, l=SB_MAX_SERVER_PER_PAGE; i < j && i < l; i++ ) + { + Hud_SetText( Hud_GetChild( file.panel, "ServerName" + i ), file.m_vFilteredServerList[i].svServerName) + Hud_SetText( Hud_GetChild( file.panel, "Playlist" + i ), GetUIPlaylistName(file.m_vFilteredServerList[i].svPlaylist)) + Hud_SetText( Hud_GetChild( file.panel, "Map" + i ), GetUIMapName(file.m_vFilteredServerList[i].svMapName)) + Hud_SetText( Hud_GetChild( file.panel, "PlayerCount" + i ), file.m_vFilteredServerList[i].svCurrentPlayers + "/" + file.m_vFilteredServerList[i].svMaxPlayers) + Hud_SetVisible(Hud_GetChild( file.panel, "ServerButton" + i ), true) + file.m_vAllPlayers += file.m_vFilteredServerList[i].svCurrentPlayers + } + + UpdateListSliderHeight( float( file.m_vFilteredServerList.len() ) ) + UpdateListSliderPosition( file.m_vFilteredServerList.len() ) + ServerBrowser_SelectServer(file.m_vFilteredServerList[0].svServerID) + ServerBrowser_UpdateServerPlayerCount() +} + +void function ServerBrowser_UpdateFilterLists() +{ + if(!IsLobby()) + return + + if(Hud_GetDialogListItemCount(Hud_GetChild( file.panel, "SwtBtnSelectMap" )) == 0) + { + array maps = ["Any"] + maps.extend(GetAvailableMaps()) + filterArguments.filterMaps = maps + foreach ( int id, string map in maps ) + Hud_DialogList_AddListItem( Hud_GetChild( file.panel, "SwtBtnSelectMap" ) , map, string( id ) ) + } + + if(Hud_GetDialogListItemCount(Hud_GetChild( file.panel, "SwtBtnSelectGamemode" )) == 0) + { + array playlists = ["Any"] + playlists.extend(GetVisiblePlaylists()) + filterArguments.filterGamemodes = playlists + foreach( int id, string mode in playlists ) + Hud_DialogList_AddListItem( Hud_GetChild( file.panel, "SwtBtnSelectGamemode" ) , mode, string( id ) ) + } +} + +//////////////////////////////////// +// +// Scrolling +// +//////////////////////////////////// + +//Used scroll code from northstar. +void function OnScrollDown( var button ) +{ + m_vScroll.Offset += 1 + if (m_vScroll.Offset + SB_MAX_SERVER_PER_PAGE > file.m_vFilteredServerList.len()) + m_vScroll.Offset = file.m_vFilteredServerList.len() - SB_MAX_SERVER_PER_PAGE + + if ( m_vScroll.Offset < 0 ) + m_vScroll.Offset = 0 + + UpdateShownPage() + UpdateListSliderPosition( file.m_vFilteredServerList.len() ) +} + +void function OnScrollUp( var button ) +{ + m_vScroll.Offset -= 1 + if ( m_vScroll.Offset < 0 ) + m_vScroll.Offset = 0 + + UpdateShownPage() + UpdateListSliderPosition( file.m_vFilteredServerList.len() ) +} + +void function UpdateShownPage() +{ + if(file.m_vFilteredServerList.len() == 0) + return + + // Reset Server Labels + ServerBrowser_ResetLabels() + + m_vScroll.End = m_vScroll.Offset + SB_MAX_SERVER_PER_PAGE + + if(file.m_vFilteredServerList.len() < SB_MAX_SERVER_PER_PAGE) + m_vScroll.End = file.m_vFilteredServerList.len() + + for( int i=m_vScroll.Offset, id=0; i < m_vScroll.End; i++, id++ ) { + Hud_SetText( Hud_GetChild( file.panel, "ServerName" + id ), file.m_vFilteredServerList[i].svServerName) + Hud_SetText( Hud_GetChild( file.panel, "Playlist" + id ), GetUIPlaylistName(file.m_vFilteredServerList[i].svPlaylist)) + Hud_SetText( Hud_GetChild( file.panel, "Map" + id ), GetUIMapName(file.m_vFilteredServerList[i].svMapName)) + Hud_SetText( Hud_GetChild( file.panel, "PlayerCount" + id ), file.m_vFilteredServerList[i].svCurrentPlayers + "/" + file.m_vFilteredServerList[i].svMaxPlayers) + Hud_SetVisible(Hud_GetChild( file.panel, "ServerButton" + id ), true) + } + + UpdateListSliderHeight( float( file.m_vFilteredServerList.len() ) ) +} + +void function UpdateListSliderPosition( int servers ) +{ + var sliderButton = Hud_GetChild( file.panel , "BtnServerListSlider" ) + var sliderPanel = Hud_GetChild( file.panel , "BtnServerListSliderPanel" ) + var movementCapture = Hud_GetChild( file.panel , "MouseMovementCapture" ) + + float minYPos = 0.0 * ( GetScreenSize().height / 1080.0 ) + float useableSpace = (550.0 * ( GetScreenSize().height / 1080.0 ) - Hud_GetHeight( sliderPanel ) ) + + float jump = minYPos - ( useableSpace / ( float( servers ) - SB_MAX_SERVER_PER_PAGE ) * m_vScroll.Offset ) + + if ( jump > minYPos ) jump = minYPos + + Hud_SetPos( sliderButton , 2, jump ) + Hud_SetPos( sliderPanel , 2, jump ) + Hud_SetPos( movementCapture , 2, jump ) +} + + +void function UpdateListSliderHeight( float servers ) +{ + var sliderButton = Hud_GetChild( file.panel , "BtnServerListSlider" ) + var sliderPanel = Hud_GetChild( file.panel , "BtnServerListSliderPanel" ) + var movementCapture = Hud_GetChild( file.panel , "MouseMovementCapture" ) + + float maxHeight = 550.0 * ( GetScreenSize().height / 1080.0 ) + float minHeight = 80.0 * ( GetScreenSize().height / 1080.0 ) + + float height = maxHeight * ( SB_MAX_SERVER_PER_PAGE / servers ) + + if ( height > maxHeight ) height = maxHeight + if ( height < minHeight ) height = minHeight + + Hud_SetHeight( sliderButton , height ) + Hud_SetHeight( sliderPanel , height ) + Hud_SetHeight( movementCapture , height ) +} + +void function UpdateMouseDeltaBuffer( int x, int y ) +{ + mouseDeltaBuffer.deltaX += x + mouseDeltaBuffer.deltaY += y + + SliderBarUpdate() +} + +void function FlushMouseDeltaBuffer() +{ + mouseDeltaBuffer.deltaX = 0 + mouseDeltaBuffer.deltaY = 0 +} + + +void function SliderBarUpdate() +{ + if ( file.m_vFilteredServerList.len() <= SB_MAX_SERVER_PER_PAGE ) { + FlushMouseDeltaBuffer() + return + } + + var sliderButton = Hud_GetChild( file.panel , "BtnServerListSlider" ) + var sliderPanel = Hud_GetChild( file.panel , "BtnServerListSliderPanel" ) + var movementCapture = Hud_GetChild( file.panel , "MouseMovementCapture" ) + + Hud_SetFocused( sliderButton ) + + float minYPos = 0.0 * ( GetScreenSize().height / 1080.0 ) + float maxHeight = 550.0 * ( GetScreenSize().height / 1080.0 ) + float maxYPos = minYPos - ( maxHeight - Hud_GetHeight( sliderPanel ) ) + float useableSpace = ( maxHeight - Hud_GetHeight( sliderPanel ) ) + + float jump = minYPos - ( useableSpace / ( float( file.m_vFilteredServerList.len() ) ) ) + + // got local from official respaw scripts, without untyped throws an error + local pos = Hud_GetPos( sliderButton )[1] + local newPos = pos - mouseDeltaBuffer.deltaY + FlushMouseDeltaBuffer() + + if ( newPos < maxYPos ) newPos = maxYPos + if ( newPos > minYPos ) newPos = minYPos + + Hud_SetPos( sliderButton , 2, newPos ) + Hud_SetPos( sliderPanel , 2, newPos ) + Hud_SetPos( movementCapture , 2, newPos ) + + m_vScroll.Offset = -int( ( ( newPos - minYPos ) / useableSpace ) * ( file.m_vFilteredServerList.len() - SB_MAX_SERVER_PER_PAGE ) ) + UpdateShownPage() +} + +int function MS_GetPlayerCount() +{ + if(file.m_vServerList.len() == 0) + ServerBrowser_RefreshServerListing() + + int count = 0 + for (int i=0, j=GetServerCount(); i < j; i++) { + count += GetServerCurrentPlayers(i) + } + + return count +} + +int function MS_GetServerCount() +{ + if(file.m_vServerList.len() == 0) + ServerBrowser_RefreshServerListing() + + return file.m_vServerList.len() +} + +array function Servers_GetActivePlaylists() +{ + if(file.m_vServerList.len() == 0) + ServerBrowser_RefreshServerListing() + + array playlists + + for (int i=0, j=GetServerCount(); i < j; i++) { + string playlist = GetServerPlaylist(i) + if (!playlists.contains(playlist)) + playlists.append(playlist) + } + + return playlists +} + +void function Servers_GetCurrentServerListing() +{ + if(file.m_vServerList.len() == 0) + ServerBrowser_RefreshServerListing() + + global_m_vServerList = file.m_vServerList +} + +array function GetVisiblePlaylists() +{ + array m_vPlaylists + + //Setup available playlists array + foreach( string playlist in GetAvailablePlaylists()) + { + //Check playlist visibility + if(!GetPlaylistVarBool( playlist, "visible", false )) + continue + + //Add playlist to the array + m_vPlaylists.append(playlist) + } + + return m_vPlaylists +} \ No newline at end of file diff --git a/vscripts/ui/R5RMenus/panel_visibility.nut b/vscripts/ui/CustomLobby/panel_visibility.nut similarity index 88% rename from vscripts/ui/R5RMenus/panel_visibility.nut rename to vscripts/ui/CustomLobby/panel_visibility.nut index 85be45fbd..9c989a917 100644 --- a/vscripts/ui/R5RMenus/panel_visibility.nut +++ b/vscripts/ui/CustomLobby/panel_visibility.nut @@ -18,23 +18,19 @@ array visibility = [ void function InitR5RVisPanel( var panel ) { file.panel = panel - file.menu = GetPanel( "R5RPrivateMatchPanel" ) - + file.menu = GetPanel( "CreatePanel" ) file.listPanel = Hud_GetChild( panel, "VisList" ) - + var scrollPanel = Hud_GetChild( file.listPanel, "ScrollPanel" ) - int m_vis_count = visibility.len() - - Hud_InitGridButtons( file.listPanel, m_vis_count ) - + Hud_InitGridButtons( file.listPanel, visibility.len() ) foreach ( int id, int vis in visibility ) { var button = Hud_GetChild( scrollPanel, "GridButton" + id ) var rui = Hud_GetRui( button ) RuiSetString( rui, "buttonText", GetUIVisibilityName(vis) ) - //Add the Even handler for the button + //Add the Event handler for the button Hud_AddEventHandler( button, UIE_CLICK, SelectServerVis ) Hud_AddEventHandler( button, UIE_GET_FOCUS, OnVisHover ) Hud_AddEventHandler( button, UIE_LOSE_FOCUS, OnVisUnHover ) @@ -46,9 +42,8 @@ void function InitR5RVisPanel( var panel ) void function SelectServerVis( var button ) { - EmitUISound( "menu_accept" ) - //Set selected server vis + EmitUISound( "menu_accept" ) SetSelectedServerVis(file.vis_button_table[button]) } diff --git a/vscripts/ui/R5RMenus/menu_lobby.nut b/vscripts/ui/R5RMenus/menu_lobby.nut deleted file mode 100644 index 6f858c353..000000000 --- a/vscripts/ui/R5RMenus/menu_lobby.nut +++ /dev/null @@ -1,271 +0,0 @@ -global function InitR5RLobbyMenu -global function GetUIPlaylistName -global function GetUIMapName -global function GetUIMapAsset -global function GetUIVisibilityName -global function InPlayersLobby - -struct -{ - var menu - array buttons - array panels - - var HomePanel - var CreateServerPanel - var ServerBrowserPanel -} file - -// do not change this enum without modifying it in code at gameui/IBrowser.h -global enum eServerVisibility -{ - OFFLINE, - HIDDEN, - PUBLIC -} - -global int CurrentPresentationType = ePresentationType.PLAY - -//Map to asset -global table MapAssets = { - [ "mp_rr_canyonlands_staging" ] = $"rui/menu/maps/mp_rr_canyonlands_staging", - [ "mp_rr_aqueduct" ] = $"rui/menu/maps/mp_rr_aqueduct", - [ "mp_rr_aqueduct_night" ] = $"rui/menu/maps/mp_rr_aqueduct_night", - [ "mp_rr_ashs_redemption" ] = $"rui/menu/maps/mp_rr_ashs_redemption", - [ "mp_rr_canyonlands_64k_x_64k" ] = $"rui/menu/maps/mp_rr_canyonlands_64k_x_64k", - [ "mp_rr_canyonlands_mu1" ] = $"rui/menu/maps/mp_rr_canyonlands_mu1", - [ "mp_rr_canyonlands_mu1_night" ] = $"rui/menu/maps/mp_rr_canyonlands_mu1_night", - [ "mp_rr_desertlands_64k_x_64k" ] = $"rui/menu/maps/mp_rr_desertlands_64k_x_64k", - [ "mp_rr_desertlands_64k_x_64k_nx" ] = $"rui/menu/maps/mp_rr_desertlands_64k_x_64k_nx", - [ "mp_rr_desertlands_64k_x_64k_tt" ] = $"rui/menu/maps/mp_rr_desertlands_64k_x_64k_tt", - [ "mp_rr_arena_composite" ] = $"rui/menu/maps/mp_rr_arena_composite", - [ "mp_rr_arena_skygarden" ] = $"rui/menu/maps/mp_rr_arena_skygarden", - [ "mp_rr_party_crasher" ] = $"rui/menu/maps/mp_rr_party_crasher", - [ "mp_lobby" ] = $"rui/menu/maps/mp_lobby" -} - -//Map to readable name -global table MapNames = { - [ "mp_rr_canyonlands_staging" ] = "Firing Range", - [ "mp_rr_ashs_redemption" ] = "Ash's Redemption", - [ "mp_rr_canyonlands_64k_x_64k" ] = "Kings Canyon S1", - [ "mp_rr_canyonlands_mu1" ] = "Kings Canyon S2", - [ "mp_rr_canyonlands_mu1_night" ] = "Kings Canyon S2 After Dark", - [ "mp_rr_desertlands_64k_x_64k" ] = "Worlds Edge", - [ "mp_rr_desertlands_64k_x_64k_nx" ] = "Worlds Edge After Dark", - [ "mp_rr_desertlands_64k_x_64k_tt" ] = "Worlds Edge Mirage Voyage", - [ "mp_rr_aqueduct" ] = "Arena: Overflow", - [ "mp_rr_aqueduct_night" ] = "Arena: Overflow AD", - [ "mp_rr_arena_composite" ] = "Arena: Drop Off", - [ "mp_rr_arena_skygarden" ] = "Arena: Encore", - [ "mp_rr_party_crasher" ] = "Arena: Party Crasher", - [ "mp_lobby" ] = "Lobby" -} - -//Playlist to readable name -global table playlisttoname = { - [ fs_aimtrainer ] = "Flowstate Aim Trainer", - [ "firingrange" ] = "Firing Range (Beta)", - [ "survival" ] = "Battle Royale (Beta)", - [ "FallLTM" ] = "ShadowFall", - [ "duos" ] = "Duos (Beta)", - [ "fs_dm" ] = "Flowstate TDM/FFA", - [ "movement_gym"] = "Movement Gym", - [ "custom_ctf" ] = "Capture The Flag", - [ "survival_dev" ] = "Survival Dev", - [ "custom_tdm_fiesta" ] = "Flowstate Fiesta", - [ "custom_tdm_gungame" ] = "Flowstate Gungame (Beta)", - [ "custom_prophunt" ] = "Flowstate Prophunt (Beta)", - [ "custom_surf" ] = "Flowstate SURF", - [ "map_editor_deprecated" ] = "Map Editor", - [ "dev_default" ] = "Dev Default" -} - -//Vis to readable name -global table VisibilityNames = { - [ eServerVisibility.OFFLINE ] = "Offline", - [ eServerVisibility.HIDDEN ] = "Hidden", - [ eServerVisibility.PUBLIC ] = "Public" -} - -void function InitR5RLobbyMenu( var newMenuArg ) -{ - var menu = GetMenu( "R5RLobbyMenu" ) - file.menu = menu - - //Add menu event handlers - AddMenuEventHandler( menu, eUIEvent.MENU_SHOW, OnR5RLobby_Open ) - AddMenuEventHandler( menu, eUIEvent.MENU_OPEN, OnR5RLobby_Open ) - AddMenuEventHandler( menu, eUIEvent.MENU_NAVIGATE_BACK, OnR5RLobby_Back ) - - //Button event handlers - Hud_AddEventHandler( Hud_GetChild(menu, "SettingsBtn"), UIE_CLICK, SettingsPressed ) - Hud_AddEventHandler( Hud_GetChild(menu, "QuitBtn"), UIE_CLICK, QuitPressed ) - array buttons = GetElementsByClassname( file.menu, "TopButtons" ) - foreach ( var elem in buttons ) { - Hud_AddEventHandler( elem, UIE_CLICK, OpenSelectedPanel ) - } - - //Setup panel array - file.panels.append(Hud_GetChild(menu, "R5RHomePanel")) - file.panels.append(Hud_GetChild(menu, "R5RPrivateMatchPanel")) - file.panels.append(Hud_GetChild(menu, "R5RServerBrowserPanel")) - - //Setup Button Vars - file.buttons.append(Hud_GetChild(menu, "HomeBtn")) - file.buttons.append(Hud_GetChild(menu, "CreateServerBtn")) - file.buttons.append(Hud_GetChild(menu, "ServerBrowserBtn")) -} - -void function OpenSelectedPanel(var button) -{ - //Get the script id, and show the panel acording to that id - int scriptid = Hud_GetScriptID( button ).tointeger() - ShowSelectedPanel( file.panels[scriptid], button ) - - switch(scriptid) - { - case 0: - UI_SetPresentationType( ePresentationType.PLAY ) - CurrentPresentationType = ePresentationType.PLAY - break; - case 1: - PrivateMatchMenuOpened() - UI_SetPresentationType( ePresentationType.CHARACTER_SELECT ) - CurrentPresentationType = ePresentationType.CHARACTER_SELECT - break; - case 2: - //thread ServerBrowser_RefreshServersForEveryone() - UI_SetPresentationType( ePresentationType.COLLECTION_EVENT ) - CurrentPresentationType = ePresentationType.COLLECTION_EVENT - break; - } -} - -void function SettingsPressed(var button) -{ - //Open Settings Menu - AdvanceMenu( GetMenu( "MiscMenu" ) ) -} - -void function QuitPressed(var button) -{ - //Open confirm exit diologe - OpenConfirmExitToDesktopDialog() -} - -void function OnR5RLobby_Open() -{ - //needed on both show and open - SetupLobby() - - //Show Home Panel - ShowSelectedPanel( file.panels[0], file.buttons[0] ) - UI_SetPresentationType( ePresentationType.PLAY ) - CurrentPresentationType = ePresentationType.PLAY - - //Set back to default for next time - g_isAtMainMenu = false - - server_host_name = "" - - RunClientScript("UICallback_SetHostName", GetPlayerName() + "'s Lobby") -} - -void function SetupLobby() -{ - //Setup Lobby Stuff - UI_SetPresentationType( CurrentPresentationType ) - thread TryRunDialogFlowThread() - - //Set Version - SetUIVersion() - - //Set selected legend from playlist - ItemFlavor character = GetItemFlavorByHumanReadableRef( GetCurrentPlaylistVarString( "set_legend", "character_wraith" ) ) - RequestSetItemFlavorLoadoutSlot( LocalClientEHI(), Loadout_CharacterClass(), character ) -} - -void function ShowSelectedPanel(var panel, var button) -{ - //Hide all panels - foreach ( p in file.panels ) { - Hud_SetVisible( p, false ) - } - - //Unselect all buttons - foreach ( btn in file.buttons ) { - RuiSetBool( Hud_GetRui( btn ) ,"isSelected", false ) - } - - //Select button - RuiSetBool( Hud_GetRui( button ) ,"isSelected", true ) - - //Show selected panel - Hud_SetVisible( panel, true ) -} - -string function GetUIPlaylistName(string playlist) -{ - //Set default playlist string - string playlistname = playlist - - //If playlist in the table set it to the readable name - if(playlist in playlisttoname) - playlistname = playlisttoname[playlist] - - //return the playlist name - return playlistname -} - -string function GetUIMapName(string map) -{ - if(map in MapNames) - return MapNames[map] - - return map -} - -string function GetUIVisibilityName(int vis) -{ - if(vis in VisibilityNames) - return VisibilityNames[vis] - - return "" -} - -asset function GetUIMapAsset(string map) -{ - if(map in MapAssets) - return MapAssets[map] - - return $"rui/menu/maps/map_not_found" -} - -void function OnR5RLobby_Back() -{ - if(PMMenusOpen.maps_open || PMMenusOpen.playlists_open || PMMenusOpen.vis_open || PMMenusOpen.name_open || PMMenusOpen.desc_open || PMMenusOpen.kick_open) - { - var pmpanel = GetPanel( "R5RPrivateMatchPanel" ) - Hud_SetVisible( Hud_GetChild(pmpanel, "R5RMapPanel"), false ) - Hud_SetVisible( Hud_GetChild(pmpanel, "R5RPlaylistPanel"), false ) - Hud_SetVisible( Hud_GetChild(pmpanel, "R5RVisPanel"), false ) - Hud_SetVisible( Hud_GetChild(file.menu, "R5RNamePanel"), false ) - Hud_SetVisible( Hud_GetChild(file.menu, "R5RDescPanel"), false ) - Hud_SetVisible( Hud_GetChild(file.menu, "R5RKickPanel"), false ) - - PMMenusOpen.maps_open = false - PMMenusOpen.playlists_open = false - PMMenusOpen.vis_open = false - PMMenusOpen.name_open = false - PMMenusOpen.desc_open = false - PMMenusOpen.kick_open = false - } -} - -void function InPlayersLobby(bool show, string host) -{ - Hud_SetVisible( Hud_GetChild(GetPanel( "R5RHomePanel" ), "InPlayersLobby"), show ) - Hud_SetVisible( Hud_GetChild(GetPanel( "R5RHomePanel" ), "InPlayersLobbyText"), show ) - Hud_SetText( Hud_GetChild(GetPanel( "R5RHomePanel" ), "InPlayersLobbyText"), "You are in " + host + "'s lobby" ) -} diff --git a/vscripts/ui/R5RMenus/menu_private_match.nut b/vscripts/ui/R5RMenus/menu_private_match.nut deleted file mode 100644 index 3c5374013..000000000 --- a/vscripts/ui/R5RMenus/menu_private_match.nut +++ /dev/null @@ -1,436 +0,0 @@ -global function InitR5RPrivateMatchMenu -global function InitR5RNamePanel -global function InitR5RDescPanel -global function InitR5RKickPanel -global function InitR5RStartingPanel - -global function SetSelectedServerMap -global function SetSelectedServerPlaylist -global function SetSelectedServerVis - -global function UpdatePlayersList -global function AddPlayerToUIArray -global function ClearPlayerUIArray -global function EnableCreateMatchUI -global function UI_SetServerInfo -global function UpdateHostName -global function ShowMatchStartingScreen -global function PrivateMatchMenuOpened - -struct -{ - var menu - var listPanel - - var namepanel - var descpanel - var kickpanel - var startingpanel - - array panels - - string tempservername - string tempserverdesc - string tempplayertokick - - bool inputsRegistered = false - bool startingmatch = false - - var realMenu -} file - -global struct privatematchmenusopen -{ - bool maps_open = false - bool playlists_open = false - bool vis_open = false - bool name_open = false - bool desc_open = false - bool kick_open = false -} - -struct PM_PlayerData -{ - string name -} - -array playerdata - -global struct ServerStruct -{ - string svServerName - string svServerDesc - string svMapName - string svPlaylist - int svVisibility -} - -global ServerStruct ServerSettings -global privatematchmenusopen PMMenusOpen - -global string server_host_name = "" - -void function InitR5RNamePanel( var panel ) -{ - file.namepanel = panel - - AddButtonEventHandler( Hud_GetChild( panel, "BtnSaveName"), UIE_CLICK, UpdateServerName ) - AddButtonEventHandler( Hud_GetChild( panel, "BtnServerName"), UIE_CHANGE, TempSaveNameChanges ) -} - -void function UpdateServerName( var button ) -{ - ServerSettings.svServerName = file.tempservername - RunClientScript("UICodeCallback_UpdateServerInfo", 0, file.tempservername) - - Hud_SetVisible( file.namepanel, false ) - - PMMenusOpen.name_open = false -} - -void function TempSaveNameChanges( var button ) -{ - file.tempservername = Hud_GetUTF8Text( Hud_GetChild( file.namepanel, "BtnServerName" ) ) -} - -void function InitR5RDescPanel( var panel ) -{ - file.descpanel = panel - - AddButtonEventHandler( Hud_GetChild( panel, "BtnSaveDesc"), UIE_CLICK, UpdateServerDesc ) - AddButtonEventHandler( Hud_GetChild( panel, "BtnServerDesc"), UIE_CHANGE, TempSaveDescChanges ) -} - -void function UpdateServerDesc( var button ) -{ - ServerSettings.svServerDesc = file.tempserverdesc - - Hud_SetVisible( file.descpanel, false ) - - PMMenusOpen.desc_open = false -} - -void function TempSaveDescChanges( var button ) -{ - file.tempserverdesc = Hud_GetUTF8Text( Hud_GetChild( file.descpanel, "BtnServerDesc" ) ) -} - -void function InitR5RKickPanel( var panel ) -{ - file.kickpanel = panel - - AddButtonEventHandler( Hud_GetChild( panel, "BtnKick"), UIE_CLICK, KickOrBanPlayer ) - AddButtonEventHandler( Hud_GetChild( panel, "BtnBan"), UIE_CLICK, KickOrBanPlayer ) - AddButtonEventHandler( Hud_GetChild( panel, "BtnCancel"), UIE_CLICK, DontKickOrBanPlayer ) -} - -void function KickOrBanPlayer(var button) -{ - RunClientScript("UICodeCallback_KickOrBanPlayer", Hud_GetScriptID( button ).tointeger(), file.tempplayertokick) - - Hud_SetVisible( file.kickpanel, false ) - - PMMenusOpen.kick_open = false - file.tempplayertokick = "" -} - -void function InitR5RStartingPanel( var panel ) -{ - file.startingpanel = panel -} - -void function DontKickOrBanPlayer(var button) -{ - Hud_SetVisible( file.kickpanel, false ) - - PMMenusOpen.kick_open = false - file.tempplayertokick = "" -} - -void function InitR5RPrivateMatchMenu( var panel ) -{ - var menu = panel - file.menu = panel - - file.realMenu = GetParentMenu( menu ) - - file.listPanel = Hud_GetChild( menu, "PlayerList" ) - - //Setup Button EventHandlers - Hud_AddEventHandler( Hud_GetChild( file.menu, "BtnStartGame" ), UIE_CLICK, StartNewGame ) - - array buttons = GetElementsByClassname( file.realMenu, "createserverbuttons" ) - foreach ( var elem in buttons ) { - Hud_AddEventHandler( elem, UIE_CLICK, OpenSelectedPanel ) - } - - //Setup panel array - file.panels.append(Hud_GetChild(menu, "R5RMapPanel")) - file.panels.append(Hud_GetChild(menu, "R5RPlaylistPanel")) - file.panels.append(Hud_GetChild(menu, "R5RVisPanel")) - file.panels.append(Hud_GetChild(file.realMenu, "R5RNamePanel")) - file.panels.append(Hud_GetChild(file.realMenu, "R5RDescPanel")) -} - -void function OpenSelectedPanel( var button ) -{ - //Refresh Maps - RefreshUIMaps() - RefreshUIPlaylists() - - //Show panel depending on script id - ShowSelectedPanel( file.panels[Hud_GetScriptID( button ).tointeger()] ) - - switch (Hud_GetScriptID( button ).tointeger()) - { - case 0: - PMMenusOpen.maps_open = true - break; - case 1: - PMMenusOpen.playlists_open = true - break; - case 2: - PMMenusOpen.vis_open = true - break; - case 3: - PMMenusOpen.name_open = true - Hud_SetText( Hud_GetChild( file.namepanel, "BtnServerName" ), ServerSettings.svServerName ) - break; - case 4: - PMMenusOpen.desc_open = true - Hud_SetText( Hud_GetChild( file.descpanel, "BtnServerDesc" ), ServerSettings.svServerDesc ) - break; - - } -} - -void function StartNewGame( var button ) -{ - RunClientScript("UICallback_StartMatch") - //CreateServer(ServerSettings.svServerName, ServerSettings.svServerDesc, ServerSettings.svMapName, ServerSettings.svPlaylist, ServerSettings.svVisibility) -} - -void function SetSelectedServerMap( string map ) -{ - ServerSettings.svMapName = map - - RunClientScript("UICodeCallback_UpdateServerInfo", 1, map) - Hud_SetVisible( file.panels[0], false ) - - PMMenusOpen.maps_open = false -} - -void function SetSelectedServerPlaylist( string playlist ) -{ - ServerSettings.svPlaylist = playlist - - RunClientScript("UICodeCallback_UpdateServerInfo", 2, playlist) - - array playlist_maps = GetPlaylistMaps(ServerSettings.svPlaylist) - //This should ever really be triggered but here just incase - if(playlist_maps.len() == 0) { - SetSelectedServerMap("mp_rr_canyonlands_64k_x_64k") - RefreshUIMaps() - return - } - - //Check to see if the current map is allowed on the new selected playlist - if(!playlist_maps.contains(ServerSettings.svMapName)) - SetSelectedServerMap(playlist_maps[0]) - - RefreshUIMaps() - Hud_SetVisible( file.panels[1], false ) - - PMMenusOpen.playlists_open = false -} - -void function SetSelectedServerVis( int vis ) -{ - ServerSettings.svVisibility = vis - - RunClientScript("UICodeCallback_UpdateServerInfo", 3, vis.tostring()) - Hud_SetVisible( file.panels[2], false ) - - PMMenusOpen.vis_open = false -} - -void function ShowSelectedPanel(var panel) -{ - //Hide all panels - foreach ( p in file.panels ) { - Hud_SetVisible( p, false ) - } - - //Show selected panel - Hud_SetVisible( panel, true ) -} - -void function PrivateMatchMenuOpened() -{ - - array privatematchui = GetElementsByClassname( file.realMenu, "CreateServerUI" ) - foreach ( var elem in privatematchui ) { - Hud_SetVisible(elem, false) - } - - array buttons = GetElementsByClassname( file.realMenu, "createserverbuttons" ) - foreach ( var elem in buttons ) { - Hud_SetVisible(elem, false) - } - - Hud_SetVisible(Hud_GetChild( file.menu, "HostSettingUpGamePanel" ), true) - Hud_SetVisible(Hud_GetChild( file.menu, "HostSettingUpGamePanelText" ), true) - Hud_SetVisible( file.startingpanel, false ) - - if(!file.startingmatch) - RunClientScript("ServerCallback_LobbyVM_UpdateUI") - else - UpdatePlayersList() - - g_isAtMainMenu = false -} - -///////////////////////////////////////////////////// -// -// Client to UI -// -///////////////////////////////////////////////////// - -void function EnableCreateMatchUI() -{ - array privatematchui = GetElementsByClassname( file.realMenu, "CreateServerUI" ) - foreach ( var elem in privatematchui ) - { - Hud_SetVisible(elem, true) - } - - array buttons = GetElementsByClassname( file.realMenu, "createserverbuttons" ) - foreach ( var elem in buttons ) { - Hud_SetVisible(elem, true) - } - - Hud_SetVisible(Hud_GetChild( file.menu, "HostSettingUpGamePanel" ), false) - Hud_SetVisible(Hud_GetChild( file.menu, "HostSettingUpGamePanelText" ), false) -} - -void function AddPlayerToUIArray(string name) -{ - PM_PlayerData p - p.name = name - - playerdata.append(p) -} - -table WORKAROUND_PlayerButtonToClickHandlerMap = {} -void function ClearPlayerUIArray() -{ - playerdata.clear() -} - -void function UpdateHostName(string name) -{ - server_host_name = name -} - -void function UpdatePlayersList() -{ - var scrollPanel = Hud_GetChild( file.listPanel, "ScrollPanel" ) - - Hud_InitGridButtons( file.listPanel, playerdata.len() ) - foreach ( int id, PM_PlayerData p in playerdata ) - { - var button = Hud_GetChild( scrollPanel, "GridButton" + id ) - var rui = Hud_GetRui( button ) - RuiSetString( rui, "buttonText", p.name ) - - if ( button in WORKAROUND_PlayerButtonToClickHandlerMap ) - { - Hud_RemoveEventHandler( button, UIE_DOUBLECLICK, WORKAROUND_PlayerButtonToClickHandlerMap[button] ) - delete WORKAROUND_PlayerButtonToClickHandlerMap[button] - } - - void functionref(var) clickHandler = (void function( var button ) : ( p) { - if(p.name != playerdata[0].name) - { - EmitUISound( "menu_accept" ) - Hud_SetText( Hud_GetChild( file.kickpanel, "SetPlayerKickMessage" ), "What do you want todo with " + p.name + "?" ) - Hud_SetVisible( file.kickpanel, true ) - file.tempplayertokick = p.name - PMMenusOpen.kick_open = true - } - }) - - if(server_host_name == GetPlayerName()) - { - Hud_AddEventHandler( button, UIE_DOUBLECLICK, clickHandler ) - WORKAROUND_PlayerButtonToClickHandlerMap[button] <- clickHandler - } - } - - if(!file.startingmatch) - RunClientScript("UICallback_CheckForHost") - - if(playerdata.len() > 1) { - Hud_SetVisible( Hud_GetChild( file.menu, "PlayersListTop" ), true ) - Hud_SetVisible( Hud_GetChild( file.menu, "CurrentPlayersText" ), true ) - Hud_SetVisible( Hud_GetChild( file.menu, "PlayerList" ), true ) - } else { - Hud_SetVisible( Hud_GetChild( file.menu, "PlayersListTop" ), false ) - Hud_SetVisible( Hud_GetChild( file.menu, "CurrentPlayersText" ), false ) - Hud_SetVisible( Hud_GetChild( file.menu, "PlayerList" ), false ) - } - -} - -void function UI_SetServerInfo( int type, string text ) -{ - switch( type ) - { - case 0: - ServerSettings.svServerName = text - Hud_SetText(Hud_GetChild( file.menu, "MapServerNameInfoEdit" ), text) - break; - case 1: - ServerSettings.svMapName = text - RuiSetImage( Hud_GetRui( Hud_GetChild( file.menu, "ServerMapImg" ) ), "loadscreenImage", GetUIMapAsset( text ) ) - break; - case 2: - ServerSettings.svPlaylist = text - Hud_SetText(Hud_GetChild( file.menu, "PlaylistInfoEdit" ), GetUIPlaylistName( text ) ) - break; - case 3: - ServerSettings.svVisibility = text.tointeger() - Hud_SetText(Hud_GetChild( file.menu, "VisInfoEdit" ), GetUIVisibilityName(text.tointeger())) - break; - } -} - -void function ShowMatchStartingScreen() -{ - file.startingmatch = true - - thread StartMatch() -} - -void function StartMatch() -{ - Hud_SetVisible( file.startingpanel, true ) - Hud_SetText( Hud_GetChild( file.startingpanel, "MapAndGamemode" ), GetUIPlaylistName(ServerSettings.svPlaylist) + " - " + GetUIMapName(ServerSettings.svMapName)) - - int timer = 5 - while( timer > -1) - { - EmitUISound( "menu_accept" ) - Hud_SetText( Hud_GetChild( file.startingpanel, "Timer" ), timer.tostring() ) - - timer-- - wait 1 - } - - Hud_SetVisible( file.startingpanel, false ) - - file.startingmatch = false - - if(GetPlayerName() == server_host_name) - CreateServer(ServerSettings.svServerName, ServerSettings.svServerDesc, ServerSettings.svMapName, ServerSettings.svPlaylist, ServerSettings.svVisibility) -} \ No newline at end of file diff --git a/vscripts/ui/R5RMenus/panel_home.nut b/vscripts/ui/R5RMenus/panel_home.nut deleted file mode 100644 index ed6730833..000000000 --- a/vscripts/ui/R5RMenus/panel_home.nut +++ /dev/null @@ -1,35 +0,0 @@ -global function InitR5RHomePanel -global function SetUIVersion - -struct -{ - var menu - var panel -} file - -void function InitR5RHomePanel( var panel ) -{ - file.panel = panel - file.menu = GetParentMenu( file.panel ) - - //Set info box image - RuiSetImage( Hud_GetRui( Hud_GetChild( file.panel, "R5RPicBox" ) ), "basicImage", $"rui/menu/home/bg" ) -} - -void function SetUIVersion() -{ - /*array tierDataList - - try{ - tierDataList = GladiatorCardBadge_GetTierDataList( GetItemFlavorByHumanReadableRef( GetCurrentPlaylistVarString( "set_badge", "gcard_badge_account_dev_badge" ) ) ) - } catch(e0) { - tierDataList = GladiatorCardBadge_GetTierDataList( GetItemFlavorByHumanReadableRef( "gcard_badge_account_dev_badge" ) ) - }*/ - - //Set SDK version text - Hud_SetText( Hud_GetChild( file.panel, "VersionNumber" ), "#BETA_BUILD_WATERMARK" ) - RuiSetString( Hud_GetRui( Hud_GetChild( file.panel, "SelfButton" ) ), "playerName", GetPlayerName() ) - RuiSetString( Hud_GetRui( Hud_GetChild( file.panel, "SelfButton" ) ), "accountLevel", GetAccountDisplayLevel( 100 ) ) - RuiSetImage( Hud_GetRui( Hud_GetChild( file.panel, "SelfButton" ) ), "accountBadge", $"rui/hud/custom_badges/r5r_badge" ) - RuiSetFloat( Hud_GetRui( Hud_GetChild( file.panel, "SelfButton" ) ), "accountXPFrac", 1.0 ) -} \ No newline at end of file diff --git a/vscripts/ui/R5RMenus/panel_mainmenu.nut b/vscripts/ui/R5RMenus/panel_mainmenu.nut deleted file mode 100644 index 7e83c22af..000000000 --- a/vscripts/ui/R5RMenus/panel_mainmenu.nut +++ /dev/null @@ -1,52 +0,0 @@ -global function InitR5RMainMenuPanel - -struct -{ - var menu - var panel - var launchButton -} file - -void function InitR5RMainMenuPanel( var panel ) -{ - file.panel = GetPanel( "R5RMainMenuPanel" ) - file.menu = GetParentMenu( file.panel ) - file.launchButton = Hud_GetChild( panel, "LaunchButton" ) - - // mainmenu handler - AddPanelEventHandler( file.panel, eUIEvent.PANEL_SHOW, OnMainMenuPanel_Show ) - - // launchbutton handler - Hud_AddEventHandler( file.launchButton, UIE_CLICK, LaunchButton_OnActivate ) -} - -void function OnMainMenuPanel_Show( var panel ) -{ - SetupRUI() -} - -void function LaunchButton_OnActivate( var button ) -{ - // create local lobby server - LaunchR5RLobby() -} - -void function SetupRUI() -{ - var statusDetailsRui = Hud_GetRui( Hud_GetChild( file.panel, "StatusDetails" ) ) - var statusRui = Hud_GetRui( Hud_GetChild( file.panel, "Status" ) ) - - // setup StatusDetails ui - // RuiSetString( statusDetailsRui, "details", "Press Enter to continue" ) - // RuiSetBool( statusDetailsRui, "isVisible", true ) - RuiSetGameTime( statusDetailsRui, "initTime", Time() ) - - // setup Status ui - RuiSetString( statusRui, "prompt", Localize("#MAINMENU_CONTINUE") ) - RuiSetBool( statusRui, "showPrompt", true ) - RuiSetBool( statusRui, "showSpinner", false ) - - // setup launch button - Hud_SetVisible( file.launchButton, true ) - -} \ No newline at end of file diff --git a/vscripts/ui/R5RMenus/panel_serverbrowser.nut b/vscripts/ui/R5RMenus/panel_serverbrowser.nut deleted file mode 100644 index 9c8607005..000000000 --- a/vscripts/ui/R5RMenus/panel_serverbrowser.nut +++ /dev/null @@ -1,480 +0,0 @@ -global function InitR5RServerBrowserPanel -global function InitR5RConnectingPanel - -global function ServerBrowser_EnableRefreshButton -global function ServerBrowser_RefreshServerListing -global function ServerBrowser_JoinServer -global function ServerBrowser_RefreshServersForEveryone - -//Used for max items for page -//Changing this requires a bit of work to get more to show correctly -//So keep at 19 -const SB_MAX_SERVER_PER_PAGE = 19 - -struct -{ - var menu - var panel - var connectingpanel - - bool IsFiltered = false -} file - -//Struct for page system -struct -{ - int pAmount - int pCurrent - int pOffset - int pStart - int pEnd -} m_vPages - -//Struct for selected server -struct SelectedServerInfo -{ - int svServerID = -1 - string svServerName = "" - string svMapName = "" - string svPlaylist = "" - string svDescription -} - -//Struct for server listing -struct ServerListing -{ - int svServerID - string svServerName - string svMapName - string svPlaylist - string svDescription - int svMaxPlayers - int svCurrentPlayers -} - -//Arrays for server listing -array m_vServerList -array m_vFilteredServerList -//Used for what server you selected -SelectedServerInfo m_vSelectedServer -//Used for all player count -int m_vAllPlayers - -void function InitR5RConnectingPanel( var panel ) -{ - file.connectingpanel = panel -} - -void function InitR5RServerBrowserPanel( var panel ) -{ - file.panel = panel - file.menu = GetParentMenu( file.panel ) - - //Setup Page Nav Buttons - Hud_AddEventHandler( Hud_GetChild( file.panel, "BtnServerListRightArrow" ), UIE_CLICK, ServerBrowser_NextPage ) - Hud_AddEventHandler( Hud_GetChild( file.panel, "BtnServerListLeftArrow" ), UIE_CLICK, ServerBrowser_PrevPage ) - //Setup Connect Button - Hud_AddEventHandler( Hud_GetChild( file.panel, "ConnectButton" ), UIE_CLICK, ServerBrowser_ConnectBtnClicked ) - //Setup Refresh Button - Hud_AddEventHandler( Hud_GetChild( file.panel, "RefreshServers" ), UIE_CLICK, ServerBrowser_RefreshBtnClicked ) - - AddButtonEventHandler( Hud_GetChild( file.panel, "BtnFilterServers"), UIE_CHANGE, ServerBrowser_FilterTextChanged ) - - //Add event handlers for the server buttons - //Clear buttontext - //No need to remove them as they are hidden if not in use - array serverbuttons = GetElementsByClassname( file.menu, "ServBtn" ) - foreach ( var elem in serverbuttons ) { - RuiSetString( Hud_GetRui( elem ), "buttonText", "") - Hud_AddEventHandler( elem, UIE_CLICK, ServerBrowser_ServerBtnClicked ) - } - - //Reset Server Panel - ServerBrowser_NoServers(false) - ServerBrowser_SelectServer(-1, "", "", "", "") - ServerBrowser_ResetLabels() - - // Set servercount, playercount, pages to none - Hud_SetText( Hud_GetChild( file.panel, "PlayersCount"), "Players: 0") - Hud_SetText( Hud_GetChild( file.panel, "ServersCount"), "Servers: 0") - Hud_SetText (Hud_GetChild( file.panel, "Pages" ), " Page: 0/0 ") - - Hud_SetText(Hud_GetChild( file.panel, "ServerCurrentPlaylist" ), "" ) - Hud_SetText(Hud_GetChild( file.panel, "ServerCurrentMap" ), "" ) -} - -//////////////////////////////////// -// -// Button Functions -// -//////////////////////////////////// - -void function ServerBrowser_RefreshBtnClicked(var button) -{ - RunClientScript("UICallback_RefreshServer") -} - -void function ServerBrowser_FilterTextChanged( var button ) -{ - string filter = Hud_GetUTF8Text( Hud_GetChild( file.panel, "BtnFilterServers" ) ) - - if(filter != "") { - file.IsFiltered = true - ServerBrowser_FilterServerList(filter) - } else { - file.IsFiltered = false - ServerBrowser_RefreshServerListing(false) - } -} - -void function ServerBrowser_ConnectBtnClicked(var button) -{ - //If server isnt selected return - if(m_vSelectedServer.svServerID == -1) - return - - //Connect to server - printf("Connecting to server: (Server ID: " + m_vSelectedServer.svServerID + " | Server Name: " + m_vSelectedServer.svServerName + " | Map: " + m_vSelectedServer.svMapName + " | Playlist: " + m_vSelectedServer.svPlaylist + ")") - ConnectToListedServer(m_vSelectedServer.svServerID) - RunClientScript("UICallback_ServerBrowserJoinServer", m_vSelectedServer.svServerID) -} - -void function ServerBrowser_ServerBtnClicked(var button) -{ - //Get the button id and add it to the pageoffset to get the correct server id - int id = Hud_GetScriptID( button ).tointeger() + m_vPages.pOffset - - if(file.IsFiltered) - ServerBrowser_SelectServer(m_vFilteredServerList[id].svServerID, m_vFilteredServerList[id].svServerName, m_vFilteredServerList[id].svMapName, m_vFilteredServerList[id].svPlaylist, m_vFilteredServerList[id].svDescription) - else - ServerBrowser_SelectServer(m_vServerList[id].svServerID, m_vServerList[id].svServerName, m_vServerList[id].svMapName, m_vServerList[id].svPlaylist, m_vServerList[id].svDescription) -} - -//////////////////////////////////// -// -// General Functions -// -//////////////////////////////////// - -void function ServerBrowser_FilterServerList(string filter) -{ - m_vFilteredServerList.clear() - - for( int i=0; i < m_vServerList.len() && i < SB_MAX_SERVER_PER_PAGE; i++ ) - { - if(m_vServerList[i].svServerName.tolower().find( filter.tolower() ) >= 0) - m_vFilteredServerList.append(m_vServerList[i]) - } - - //Clear Server List Text, Hide no servers found ui, Reset pages - ServerBrowser_ResetLabels() - ServerBrowser_NoServers(false) - m_vPages.pAmount = 0 - - // Get Server Count - int svServerCount = m_vFilteredServerList.len() - - // If no servers then set no servers found ui and return - if(svServerCount == 0) { - // Show no servers found ui - ServerBrowser_NoServers(true) - - // Set selected server to none - ServerBrowser_SelectServer(-1, "", "", "", "") - - // Set servercount, playercount, pages to none - Hud_SetText( Hud_GetChild( file.panel, "PlayersCount"), "Players: 0") - Hud_SetText( Hud_GetChild( file.panel, "ServersCount"), "Servers: 0") - Hud_SetText (Hud_GetChild( file.panel, "Pages" ), " Page: 0/0 ") - - // Return as it dosnt need togo past this if no servers are found - return - } - - // Setup Buttons and labels - for( int i=0; i < m_vFilteredServerList.len() && i < SB_MAX_SERVER_PER_PAGE; i++ ) - { - Hud_SetText( Hud_GetChild( file.panel, "ServerName" + i ), m_vFilteredServerList[i].svServerName) - Hud_SetText( Hud_GetChild( file.panel, "Playlist" + i ), m_vFilteredServerList[i].svPlaylist) - Hud_SetText( Hud_GetChild( file.panel, "Map" + i ), GetUIMapName(m_vFilteredServerList[i].svMapName)) - Hud_SetText( Hud_GetChild( file.panel, "PlayerCount" + i ), m_vFilteredServerList[i].svCurrentPlayers + "/" + m_vFilteredServerList[i].svMaxPlayers) - Hud_SetVisible(Hud_GetChild( file.panel, "ServerButton" + i ), true) - } - - // Select first server in the list - ServerBrowser_SelectServer(m_vFilteredServerList[0].svServerID, m_vFilteredServerList[0].svServerName, m_vFilteredServerList[0].svMapName, m_vFilteredServerList[0].svPlaylist, m_vFilteredServerList[0].svDescription) - - // Set UI Labels - Hud_SetText( Hud_GetChild( file.panel, "PlayersCount"), "Players: " + m_vAllPlayers) - Hud_SetText( Hud_GetChild( file.panel, "ServersCount"), "Servers: " + m_vServerList.len()) - Hud_SetText (Hud_GetChild( file.panel, "Pages" ), " Page: 1/" + (m_vPages.pAmount + 1) + " ") -} - -void function ServerBrowser_RefreshServerListing(bool refresh = true) -{ - if (refresh) - RefreshServerList() - - //Clear Server List Text, Hide no servers found ui, Reset pages - ServerBrowser_ResetLabels() - ServerBrowser_NoServers(false) - m_vPages.pAmount = 0 - m_vAllPlayers = 0 - - // Get Server Count - int svServerCount = GetServerCount() - - // If no servers then set no servers found ui and return - if(svServerCount == 0) { - // Show no servers found ui - ServerBrowser_NoServers(true) - - // Set selected server to none - ServerBrowser_SelectServer(-1, "", "", "", "") - - // Set servercount, playercount, pages to none - Hud_SetText( Hud_GetChild( file.panel, "PlayersCount"), "Players: 0") - Hud_SetText( Hud_GetChild( file.panel, "ServersCount"), "Servers: 0") - Hud_SetText (Hud_GetChild( file.panel, "Pages" ), " Page: 0/0 ") - - // Return as it dosnt need togo past this if no servers are found - return - } - - // Get Server Array - m_vServerList = ServerBrowser_GetArray(svServerCount) - - // Setup Buttons and labels - for( int i=0; i < m_vServerList.len() && i < SB_MAX_SERVER_PER_PAGE; i++ ) - { - Hud_SetText( Hud_GetChild( file.panel, "ServerName" + i ), m_vServerList[i].svServerName) - Hud_SetText( Hud_GetChild( file.panel, "Playlist" + i ), m_vServerList[i].svPlaylist) - Hud_SetText( Hud_GetChild( file.panel, "Map" + i ), GetUIMapName(m_vServerList[i].svMapName)) - Hud_SetText( Hud_GetChild( file.panel, "PlayerCount" + i ), m_vServerList[i].svCurrentPlayers + "/" + m_vServerList[i].svMaxPlayers) - Hud_SetVisible(Hud_GetChild( file.panel, "ServerButton" + i ), true) - - m_vAllPlayers += m_vServerList[i].svCurrentPlayers - } - - // Select first server in the list - ServerBrowser_SelectServer(m_vServerList[0].svServerID, m_vServerList[0].svServerName, m_vServerList[0].svMapName, m_vServerList[0].svPlaylist, m_vServerList[0].svDescription) - - // Set UI Labels - Hud_SetText( Hud_GetChild( file.panel, "PlayersCount"), "Players: " + m_vAllPlayers) - Hud_SetText( Hud_GetChild( file.panel, "ServersCount"), "Servers: " + svServerCount) - Hud_SetText (Hud_GetChild( file.panel, "Pages" ), " Page: 1/" + (m_vPages.pAmount + 1) + " ") - - string filter = Hud_GetUTF8Text( Hud_GetChild( file.panel, "BtnFilterServers" ) ) - if(filter != "") { - file.IsFiltered = true - ServerBrowser_FilterServerList(filter) - } -} - -void function ServerBrowser_NextPage(var button) -{ - //If Pages is 0 then return - //or if is on the last page - if(m_vPages.pAmount == 0 || m_vPages.pCurrent == m_vPages.pAmount ) - return - - // Reset Server Labels - ServerBrowser_ResetLabels() - - // Set current page to next page - m_vPages.pCurrent++ - - // If current page is greater then last page set to last page - if(m_vPages.pCurrent > m_vPages.pAmount) - m_vPages.pCurrent = m_vPages.pAmount - - //Set Start ID / End ID / and ID Offset - m_vPages.pStart = m_vPages.pCurrent * SB_MAX_SERVER_PER_PAGE - m_vPages.pEnd = m_vPages.pStart + SB_MAX_SERVER_PER_PAGE - m_vPages.pOffset = m_vPages.pCurrent * SB_MAX_SERVER_PER_PAGE - - // Check if m_vPages.pEnd is greater then actual amount of servers - if(m_vPages.pEnd > m_vServerList.len()) - m_vPages.pEnd = m_vServerList.len() - - // "id" is diffrent from "i" and is used for setting UI elements - // "i" is used for server id - int id = 0 - for( int i=m_vPages.pStart; i < m_vPages.pEnd; i++ ) { - Hud_SetText( Hud_GetChild( file.panel, "ServerName" + id ), m_vServerList[i].svServerName) - Hud_SetText( Hud_GetChild( file.panel, "Playlist" + id ), m_vServerList[i].svPlaylist) - Hud_SetText( Hud_GetChild( file.panel, "Map" + id ), GetUIMapName(m_vServerList[i].svMapName)) - Hud_SetText( Hud_GetChild( file.panel, "PlayerCount" + id ), m_vServerList[i].svCurrentPlayers + "/" + m_vServerList[i].svMaxPlayers) - Hud_SetVisible(Hud_GetChild( file.panel, "ServerButton" + id ), true) - id++ - } - - // Set current page ui - Hud_SetText(Hud_GetChild( file.panel, "Pages" ), " Page:" + (m_vPages.pCurrent + 1) + "/" + (m_vPages.pAmount + 1) + " ") -} - -void function ServerBrowser_PrevPage(var button) -{ - //If Pages is 0 then return - //or if is one the first page - if(m_vPages.pAmount == 0 || m_vPages.pCurrent == 0) - return - - // Reset Server Labels - ServerBrowser_ResetLabels() - - // Set current page to prev page - m_vPages.pCurrent-- - - // If current page is less then first page set to first page - if(m_vPages.pCurrent < 0) - m_vPages.pCurrent = 0 - - //Set Start ID / End ID / and ID Offset - m_vPages.pStart = m_vPages.pCurrent * SB_MAX_SERVER_PER_PAGE - m_vPages.pEnd = m_vPages.pStart + SB_MAX_SERVER_PER_PAGE - m_vPages.pOffset = m_vPages.pCurrent * SB_MAX_SERVER_PER_PAGE - - // Check if m_vPages.pEnd is greater then actual amount of servers - if(m_vPages.pEnd > m_vServerList.len()) - m_vPages.pEnd = m_vServerList.len() - - // "id" is diffrent from "i" and is used for setting UI elements - // "i" is used for server id - int id = 0 - for( int i=m_vPages.pStart; i < m_vPages.pEnd; i++ ) { - Hud_SetText( Hud_GetChild( file.panel, "ServerName" + id ), m_vServerList[i].svServerName) - Hud_SetText( Hud_GetChild( file.panel, "Playlist" + id ), m_vServerList[i].svPlaylist) - Hud_SetText( Hud_GetChild( file.panel, "Map" + id ), GetUIMapName(m_vServerList[i].svMapName)) - Hud_SetText( Hud_GetChild( file.panel, "PlayerCount" + id ), m_vServerList[i].svCurrentPlayers + "/" + m_vServerList[i].svMaxPlayers) - Hud_SetVisible(Hud_GetChild( file.panel, "ServerButton" + id ), true) - id++ - } - - // Set current page ui - Hud_SetText(Hud_GetChild( file.panel, "Pages" ), " Page:" + (m_vPages.pCurrent + 1) + "/" + (m_vPages.pAmount + 1) + " ") -} - -array function ServerBrowser_GetArray(int svServerCount) -{ - //Create array for servers to be returned - array ServerList - - //No servers so just return - if(svServerCount == 0) - return ServerList - - //Set on first row - int m_vCurrentRow = 0 - - // Add each server to the array - for( int i=0; i < svServerCount; i++ ) { - //Add Server to array - ServerBrowser_AddServerToArray(i, GetServerName(i), GetServerPlaylist(i), GetServerMap(i), GetServerDescription(i), GetServerMaxPlayers(i), GetServerCurrentPlayers(i), ServerList) - - // If server is on final row add a new page - if(m_vCurrentRow == SB_MAX_SERVER_PER_PAGE) { - m_vPages.pAmount++ - m_vCurrentRow = 0 - } - m_vCurrentRow++ - } - - //Return Server Listing - return ServerList -} - -string function ServerBrowser_NameColored(string name) -{ - return StringReplace( name, "--", "^" ) -} - -void function ServerBrowser_NoServers(bool show) -{ - //Set no servers found ui based on bool - Hud_SetVisible(Hud_GetChild( file.panel, "PlayerCountLine" ), !show ) - Hud_SetVisible(Hud_GetChild( file.panel, "PlaylistLine" ), !show ) - Hud_SetVisible(Hud_GetChild( file.panel, "MapLine" ), !show ) - Hud_SetVisible(Hud_GetChild( file.panel, "NoServersLbl" ), show ) -} - -void function ServerBrowser_SelectServer(int id, string name, string map, string playlist, string desc) -{ - //Set selected server info - m_vSelectedServer.svServerID = id - m_vSelectedServer.svServerName = name - m_vSelectedServer.svMapName = map - m_vSelectedServer.svPlaylist = playlist - m_vSelectedServer.svDescription = desc - - //Set selected server ui - Hud_SetText(Hud_GetChild( file.panel, "ServerCurrentPlaylist" ), "Current Playlist" ) - Hud_SetText(Hud_GetChild( file.panel, "ServerCurrentMap" ), "Current Map" ) - - Hud_SetText(Hud_GetChild( file.panel, "ServerNameInfoEdit" ), name ) - Hud_SetText(Hud_GetChild( file.panel, "ServerCurrentMapEdit" ), GetUIMapName(map) ) - Hud_SetText(Hud_GetChild( file.panel, "PlaylistInfoEdit" ), playlist ) - Hud_SetText(Hud_GetChild( file.panel, "ServerDesc" ), desc ) - RuiSetImage( Hud_GetRui( Hud_GetChild( file.panel, "ServerMapImg" ) ), "loadscreenImage", GetUIMapAsset(map) ) -} - -void function ServerBrowser_ResetLabels() -{ - //Hide all server buttons - array serverbuttons = GetElementsByClassname( file.menu, "ServBtn" ) - foreach ( var elem in serverbuttons ) - { - Hud_SetVisible(elem, false) - } - - //Clear all server labels - array serverlabels = GetElementsByClassname( file.menu, "ServerLabels" ) - foreach ( var elem in serverlabels ) - { - Hud_SetText(elem, "") - } -} - -void function ServerBrowser_AddServerToArray(int id, string name, string playlist, string map, string desc, int max, int current, array ServerList) -{ - //Setup new server - ServerListing Server - Server.svServerID = id - Server.svServerName = name - Server.svPlaylist = playlist - Server.svMapName = map - Server.svDescription = desc - Server.svMaxPlayers = max - Server.svCurrentPlayers = current - - //Add new server to array - ServerList.append(Server) -} - -void function ServerBrowser_RefreshServersForEveryone() -{ - RunClientScript("UICallback_RefreshServer") -} - -void function ServerBrowser_EnableRefreshButton( bool show) -{ - Hud_SetVisible(Hud_GetChild( file.panel, "RefreshServers" ), show) - Hud_SetVisible(Hud_GetChild( file.panel, "RefreshServersText" ), show) -} - -void function ServerBrowser_JoinServer(int id) -{ - thread ServerBrowser_StartConnection(id) -} - -void function ServerBrowser_StartConnection(int id) -{ - Hud_SetVisible(Hud_GetChild( file.menu, "R5RConnectingPanel"), true) - Hud_SetText(Hud_GetChild( GetPanel( "R5RConnectingPanel" ), "ServerName" ), m_vServerList[id].svServerName ) - - wait 2 - - Hud_SetVisible(Hud_GetChild( file.menu, "R5RConnectingPanel"), false) - - ConnectToListedServer(id) -} \ No newline at end of file diff --git a/vscripts/ui/_grid_panel.gnut b/vscripts/ui/_grid_panel.gnut index 14f685713..0f8c0847d 100644 --- a/vscripts/ui/_grid_panel.gnut +++ b/vscripts/ui/_grid_panel.gnut @@ -628,8 +628,8 @@ void function GridPanel_InitStatic( var panel, int tileWidth, int tileHeight ) int paddingHorz = ((panelWidth - (tileWidth * gridData.columns)) / columnPaddingCount) int paddingVert = ((panelHeight - (tileHeight * gridData.rows)) / rowPaddingCount) - gridData.paddingHorz = int( paddingHorz / GetContentScaleFactor( GetMenu( "MainMenu" ) ).x ) - gridData.paddingVert = int( paddingVert / GetContentScaleFactor( GetMenu( "MainMenu" ) ).y ) + gridData.paddingHorz = int( paddingHorz / GetContentScaleFactor( GetMenu( "R5RMainMenu" ) ).x ) + gridData.paddingVert = int( paddingVert / GetContentScaleFactor( GetMenu( "R5RMainMenu" ) ).y ) InitPanelLayout( gridData ) UpdateTileElements( gridData ) diff --git a/vscripts/ui/_menu_utility.nut b/vscripts/ui/_menu_utility.nut index e29cf24be..e0f09feba 100644 --- a/vscripts/ui/_menu_utility.nut +++ b/vscripts/ui/_menu_utility.nut @@ -592,14 +592,14 @@ void function PlotKDPointsOnGraph( var menu, int graphIndex, array values float function GetXScale() { - float xScale = float( GetMenu( "MainMenu" ).GetWidth() ) / 1920.0 + float xScale = float( GetMenu( "R5RMainMenu" ).GetWidth() ) / 1920.0 return xScale } float function GetYScale() { - float yScale = float( GetMenu( "MainMenu" ).GetHeight() ) / 1080.0 + float yScale = float( GetMenu( "R5RMainMenu" ).GetHeight() ) / 1080.0 return yScale } diff --git a/vscripts/ui/_menus.nut b/vscripts/ui/_menus.nut index 2b74526a2..c99172feb 100644 --- a/vscripts/ui/_menus.nut +++ b/vscripts/ui/_menus.nut @@ -103,6 +103,7 @@ global function SetTopLevelCustomizeContext global function SetGamepadCursorEnabled global function IsGamepadCursorEnabled global function IsCommsMenuOpen +global function GetCurrentLobbyMenu global function ButtonClass_AddMenu @@ -187,6 +188,16 @@ void function UICodeCallback_CloseAllMenus() // This is usually followed by a call to UICodeCallback_ActivateMenus(). } +string function GetCurrentLobbyMenu() +{ + string menuName = "R5RLobbyMenu" + + if(IsLobby()) + menuName = GetPlaylistVarBool("menufall", "r5reloaded_lobby", true) ? "R5RLobbyMenu" : "LobbyMenu" + + return menuName +} + // Bringing up the console will cause this, and it probably shouldn't void function UICodeCallback_ActivateMenus() { @@ -194,10 +205,10 @@ void function UICodeCallback_ActivateMenus() return //Old MainMenu - var mainMenu = GetMenu( "MainMenu" ) + //var mainMenu = GetMenu( "MainMenu" ) //New R5RMainMenu - //var mainMenu = GetMenu( "R5RMainMenu" ) + var mainMenu = GetMenu( "R5RMainMenu" ) printt( "UICodeCallback_ActivateMenus:", GetActiveMenu() && Hud_GetHudName( GetActiveMenu() ) != "" ) if ( uiGlobal.menuStack.len() == 0 ) @@ -221,11 +232,12 @@ void function UICodeCallback_ToggleInGameMenu() var activeMenu = GetActiveMenu() bool isLobby = IsLobby() + string playlistName = GetCurrentPlaylistName() if ( isLobby ) { if ( activeMenu == null ) - AdvanceMenu( GetMenu( "R5RLobbyMenu" ) ) + AdvanceMenu( GetMenu( GetCurrentLobbyMenu() ) ) else if ( activeMenu == GetMenu( "SystemMenu" ) ) CloseActiveMenu() return @@ -1055,10 +1067,12 @@ void function UpdateMenusOnConnectThread( string levelname ) Assert( GetActiveMenu() != null || uiGlobal.menuStack.len() == 0 ) bool isLobby = IsLobbyMapName( levelname ) + string playlistName = GetCurrentPlaylistName() if ( isLobby ) { - AdvanceMenu( GetMenu( "R5RLobbyMenu" ) ) + AdvanceMenu( GetMenu( GetCurrentLobbyMenu() ) ) + UIMusicUpdate() if ( IsFullyConnected() ) @@ -1162,9 +1176,6 @@ bool function TryDialogFlowPersistenceQuery( string persistenceVar ) void function DialogFlow() { - if ( !IsPlayPanelCurrentlyTopLevel() ) - return - bool persistenceAvailable = IsPersistenceAvailable() string earliestRankedPeriod = Ranked_EarliestRankedPeriodWithRewardsNotAcknowledged() @@ -1523,22 +1534,26 @@ void function InitMenus() AddMenu( "EliteIntroMenu", $"resource/ui/menus/elite_intro.menu", InitEliteIntroMenu ) //R5Reloaded UI - var r5rmainMenu = AddMenu( "R5RMainMenu", $"scripts/resource/ui/menus/R5R/main.res", InitR5RMainMenu, "#MAIN" ) + var r5rmainMenu = AddMenu( "R5RMainMenu", $"scripts/resource/ui/menus/CustomLobby/main.res", InitR5RMainMenu, "#MAIN" ) AddPanel( r5rmainMenu, "R5RMainMenuPanel", InitR5RMainMenuPanel ) - var r5rlobbymenu = AddMenu( "R5RLobbyMenu", $"scripts/resource/ui/menus/R5R/lobbymenu.res", InitR5RLobbyMenu ) - AddPanel( r5rlobbymenu, "R5RHomePanel", InitR5RHomePanel ) - AddPanel( r5rlobbymenu, "R5RServerBrowserPanel", InitR5RServerBrowserPanel ) + var r5rlobbymenu = AddMenu( "R5RLobbyMenu", $"scripts/resource/ui/menus/CustomLobby/lobbymenu.res", InitR5RLobbyMenu ) + AddPanel( r5rlobbymenu, "HomePanel", InitHomePanel ) AddPanel( r5rlobbymenu, "R5RNamePanel", InitR5RNamePanel ) AddPanel( r5rlobbymenu, "R5RDescPanel", InitR5RDescPanel ) - AddPanel( r5rlobbymenu, "R5RKickPanel", InitR5RKickPanel ) - AddPanel( r5rlobbymenu, "R5RStartingPanel", InitR5RStartingPanel ) - AddPanel( r5rlobbymenu, "R5RConnectingPanel", InitR5RConnectingPanel ) - var privatematchmenu = AddPanel( r5rlobbymenu, "R5RPrivateMatchPanel", InitR5RPrivateMatchMenu ) + var privatematchmenu = AddPanel( r5rlobbymenu, "CreatePanel", InitCreatePanel ) AddPanel( privatematchmenu, "R5RPlaylistPanel", InitR5RPlaylistPanel ) AddPanel( privatematchmenu, "R5RMapPanel", InitR5RMapPanel ) AddPanel( privatematchmenu, "R5RVisPanel", InitR5RVisPanel ) + + AddPanel( r5rlobbymenu, "ServerBrowserPanel", InitServerBrowserPanel ) + AddPanel( r5rlobbymenu, "LegendsPanel", InitR5RLegendsPanel ) + AddPanel( r5rlobbymenu, "LoadoutPanel", InitLoadoutPanel ) + AddPanel( r5rlobbymenu, "R5RConnectingPanel", InitR5RConnectingPanel ) + + AddMenu( "R5RNews", $"scripts/resource/ui/menus/CustomLobby/news.res", InitR5RNews ) + AddMenu( "R5RGamemodeSelectV2Dialog", $"scripts/resource/ui/menus/CustomLobby/gamemode_select.res", InitR5RGamemodeSelectDialog ) //////// //CTF UI @@ -1575,6 +1590,10 @@ void function InitMenus() AddMenu( "StatisticsUI", $"scripts/resource/ui/menus/FlowstateDM/flowstate_statistics.menu", InitStatisticsUI ) AddMenu( "FSDMVoteMenu", $"scripts/resource/ui/menus/FlowstateDM/flowstate_menu_vote.menu", Init_FSDM_VoteMenu ) AddMenu( "FSProphuntScoreboardMenu", $"scripts/resource/ui/menus/FlowstateDM/fs_prophunt_scoreboard.menu", Init_FSDM_ProphuntScoreboardMenu ) + + //Custom Weapon Mods Menu + var weaponmodsmenu = AddMenu( "WeaponMods", $"scripts/resource/ui/menus/weaponmods.menu", InitWeaponModsMenu ) + /////// var lobbyMenu = AddMenu( "LobbyMenu", $"resource/ui/menus/lobby.menu", InitLobbyMenu ) AddPanel( lobbyMenu, "PlayPanel", InitPlayPanel ) @@ -1607,7 +1626,7 @@ void function InitMenus() AddPanel( settingsPanel, "SoundPanel", InitSoundPanel ) AddPanel( settingsPanel, "HudOptionsPanel", InitHudOptionsPanel ) - var customizeCharacterMenu = AddMenu( "CustomizeCharacterMenu", $"resource/ui/menus/customize_character.menu", InitCustomizeCharacterMenu ) + var customizeCharacterMenu = AddMenu( "CustomizeCharacterMenu", $"scripts/resource/ui/menus/CustomLobby/customize_character.menu", InitCustomizeCharacterMenu ) AddPanel( customizeCharacterMenu, "CharacterSkinsPanel", InitCharacterSkinsPanel ) var cardPanel = AddPanel( customizeCharacterMenu, "CharacterCardsPanelV2", InitCharacterCardsPanel ) @@ -1624,21 +1643,14 @@ void function InitMenus() AddPanel( customizeCharacterMenu, "CharacterExecutionsPanel", InitCharacterExecutionsPanel ) - var customizeModelMenu = AddMenu( "CustomizeModelMenu", $"resource/ui/menus/customize_weapon.menu", InitCustomizeModelMenu ) - AddPanel( customizeModelMenu, "WeaponSkinsPanel0", InitModelsPanel ) - AddPanel( customizeModelMenu, "WeaponSkinsPanel1", InitModelsPanel ) - AddPanel( customizeModelMenu, "WeaponSkinsPanel2", InitModelsPanel ) - AddPanel( customizeModelMenu, "WeaponSkinsPanel3", InitModelsPanel ) - AddPanel( customizeModelMenu, "WeaponSkinsPanel4", InitModelsPanel ) - - var customizeWeaponMenu = AddMenu( "CustomizeWeaponMenu", $"resource/ui/menus/customize_weapon.menu", InitCustomizeWeaponMenu ) + var customizeWeaponMenu = AddMenu( "CustomizeWeaponMenu", $"scripts/resource/ui/menus/CustomLobby/customize_weapon.menu", InitCustomizeWeaponMenu ) AddPanel( customizeWeaponMenu, "WeaponSkinsPanel0", InitWeaponSkinsPanel ) AddPanel( customizeWeaponMenu, "WeaponSkinsPanel1", InitWeaponSkinsPanel ) AddPanel( customizeWeaponMenu, "WeaponSkinsPanel2", InitWeaponSkinsPanel ) AddPanel( customizeWeaponMenu, "WeaponSkinsPanel3", InitWeaponSkinsPanel ) AddPanel( customizeWeaponMenu, "WeaponSkinsPanel4", InitWeaponSkinsPanel ) - var miscCustomizeMenu = AddMenu( "MiscCustomizeMenu", $"resource/ui/menus/misc_customize.menu", InitMiscCustomizeMenu ) + var miscCustomizeMenu = AddMenu( "MiscCustomizeMenu", $"scripts/resource/ui/menus/CustomLobby/misc_customize.menu", InitMiscCustomizeMenu ) AddPanel( miscCustomizeMenu, "LoadscreenPanel", InitLoadscreenPanel ) AddPanel( miscCustomizeMenu, "MusicPackPanel", InitMusicPackPanel ) AddPanel( miscCustomizeMenu, "SkydiveTrailPanel", InitSkydiveTrailPanel ) diff --git a/vscripts/ui/customize_common.gnut b/vscripts/ui/customize_common.gnut index 2f8154bb5..a6abd3130 100644 --- a/vscripts/ui/customize_common.gnut +++ b/vscripts/ui/customize_common.gnut @@ -205,25 +205,27 @@ void function CustomizeButton_UpdateAndMarkForUpdating( var button, UpdateCustomizeItemButton( cbc, true ) } - void function CustomizeButton_UnmarkForUpdating( var button ) { Assert( button in fileLevel.activeCustomizeButtons ) - CustomizeButtonContext cbc = fileLevel.activeCustomizeButtons[button] - - delete fileLevel.activeCustomizeButtons[button] - if ( fileLevel.activeCustomizeButtons.len() == 0 ) + if(button in fileLevel.activeCustomizeButtons) { - foreach ( loadoutEntry in cbc.loadoutEntries ) - RemoveCallback_ItemFlavorLoadoutSlotDidChange_SpecificPlayer( LocalClientEHI(), loadoutEntry, OnLoadoutSlotContentsChanged ) - } + CustomizeButtonContext cbc = fileLevel.activeCustomizeButtons[button] - Hud_RemoveEventHandler( button, UIE_CLICK, CustomizeButton_OnClick ) - Hud_RemoveEventHandler( button, UIE_CLICKRIGHT, CustomizeButton_OnRightClick ) - Hud_RemoveEventHandler( button, UIE_DOUBLECLICK, CustomizeButton_OnRightOrDoubleClick ) -} + delete fileLevel.activeCustomizeButtons[button] + if ( fileLevel.activeCustomizeButtons.len() == 0 ) + { + foreach ( loadoutEntry in cbc.loadoutEntries ) + RemoveCallback_ItemFlavorLoadoutSlotDidChange_SpecificPlayer( LocalClientEHI(), loadoutEntry, OnLoadoutSlotContentsChanged ) + } + + Hud_RemoveEventHandler( button, UIE_CLICK, CustomizeButton_OnClick ) + Hud_RemoveEventHandler( button, UIE_CLICKRIGHT, CustomizeButton_OnRightClick ) + Hud_RemoveEventHandler( button, UIE_DOUBLECLICK, CustomizeButton_OnRightOrDoubleClick ) + } +} ItemFlavor function CustomizeButton_GetItemFlavor( var button ) { diff --git a/vscripts/ui/dialogs/error.nut b/vscripts/ui/dialogs/error.nut index 54b0eb379..d2bf15b2e 100644 --- a/vscripts/ui/dialogs/error.nut +++ b/vscripts/ui/dialogs/error.nut @@ -1,5 +1,6 @@ global function InitErrorDialog global function OpenErrorDialogThread +global function OpenErrorDialog struct { @@ -49,6 +50,11 @@ void function ErrorDialog_OnNavigateBack() CloseActiveMenu() } +void function OpenErrorDialog( string errorMessage ) +{ + thread OpenErrorDialogThread( errorMessage ) +} + void function OpenErrorDialogThread( string errorMessage ) { bool isIdleDisconnect = errorMessage.find( Localize( "#DISCONNECT_IDLE" ) ) == 0 @@ -57,7 +63,7 @@ void function OpenErrorDialogThread( string errorMessage ) file.headerText = ( isIdleDisconnect ? Localize( "#DISCONNECTED_HEADER" ) : Localize( "#ERROR" ) ).toupper() file.messageText = errorMessage - while ( GetActiveMenu() != GetMenu( "MainMenu" ) ) + while ( GetActiveMenu() != GetMenu( "R5RMainMenu" ) ) WaitSignal( uiGlobal.signalDummy, "OpenErrorDialog", "ActiveMenuChanged" ) AdvanceMenu( file.menu ) diff --git a/vscripts/ui/menu_customize_character.nut b/vscripts/ui/menu_customize_character.nut index 3a795f317..b769e0c64 100644 --- a/vscripts/ui/menu_customize_character.nut +++ b/vscripts/ui/menu_customize_character.nut @@ -56,6 +56,8 @@ void function CustomizeCharacterMenu_OnOpen() if ( !file.tabsInitialized ) { array panels = GetMenuTabBodyPanels( file.menu ) + panels.remove(0) + panels.remove(1) foreach ( panel in panels ) AddTab( file.menu, panel, GetPanelTabTitle( panel ) ) @@ -77,7 +79,7 @@ void function CustomizeCharacterMenu_OnOpen() RuiSetString( file.titleRui, "title", Localize( ItemFlavor_GetLongName( character ) ).toupper() ) RuiSetGameTime( file.decorationRui, "initTime", Time() ) - RegisterNewnessCallbacks( character ) + //RegisterNewnessCallbacks( character ) } @@ -85,7 +87,7 @@ void function CustomizeCharacterMenu_OnOpen() void function CustomizeCharacterMenu_OnClose() { ItemFlavor character = expect ItemFlavor( file.characterOrNull ) - DeregisterNewnessCallbacks( character ) + //DeregisterNewnessCallbacks( character ) file.characterOrNull = null SetTopLevelCustomizeContext( null ) @@ -118,6 +120,8 @@ void function CustomizeCharacterMenu_OnNavigateBack() { Assert( GetActiveMenu() == file.menu ) + UI_SetPresentationType( ePresentationType.CHARACTER_SELECT ) + CloseActiveMenu() } diff --git a/vscripts/ui/menu_customize_weapon.nut b/vscripts/ui/menu_customize_weapon.nut index 3e68dd77e..7b96db2de 100644 --- a/vscripts/ui/menu_customize_weapon.nut +++ b/vscripts/ui/menu_customize_weapon.nut @@ -22,14 +22,6 @@ void function InitCustomizeWeaponMenu( var newMenuArg ) file.decorationRui = Hud_GetRui( Hud_GetChild( menu, "Decoration" ) ) file.titleRui = Hud_GetRui( Hud_GetChild( menu, "Title" ) ) - file.weaponTabBodyPanelList = [ - Hud_GetChild( menu, "WeaponSkinsPanel0" ) - Hud_GetChild( menu, "WeaponSkinsPanel1" ) - Hud_GetChild( menu, "WeaponSkinsPanel2" ) - Hud_GetChild( menu, "WeaponSkinsPanel3" ) - Hud_GetChild( menu, "WeaponSkinsPanel4" ) - ] - AddMenuEventHandler( menu, eUIEvent.MENU_OPEN, CustomizeWeaponMenu_OnOpen ) AddMenuEventHandler( menu, eUIEvent.MENU_SHOW, CustomizeWeaponMenu_OnShow ) AddMenuEventHandler( menu, eUIEvent.MENU_CLOSE, CustomizeWeaponMenu_OnClose ) @@ -38,7 +30,7 @@ void function InitCustomizeWeaponMenu( var newMenuArg ) AddMenuFooterOption( menu, LEFT, BUTTON_B, true, "#B_BUTTON_BACK", "#B_BUTTON_BACK" ) AddMenuFooterOption( menu, LEFT, BUTTON_A, true, "#A_BUTTON_SELECT", "" ) AddMenuFooterOption( menu, LEFT, BUTTON_X, true, "#X_BUTTON_EQUIP", "#X_BUTTON_EQUIP", null, CustomizeMenus_IsFocusedItemEquippable ) - AddMenuFooterOption( menu, LEFT, BUTTON_X, true, "#X_BUTTON_UNLOCK", "#X_BUTTON_UNLOCK", null, CustomizeMenus_IsFocusedItemLocked ) + //AddMenuFooterOption( menu, LEFT, BUTTON_X, true, "#X_BUTTON_UNLOCK", "#X_BUTTON_UNLOCK", null, CustomizeMenus_IsFocusedItemLocked ) } @@ -49,7 +41,7 @@ void function CustomizeWeaponMenu_OnOpen() RuiSetGameTime( file.decorationRui, "initTime", Time() ) RuiSetString( file.titleRui, "title", Localize( ItemFlavor_GetLongName( GetTopLevelCustomizeContext() ) ).toupper() ) - AddCallback_OnTopLevelCustomizeContextChanged( file.menu, CustomizeWeaponMenu_Update ) + //AddCallback_OnTopLevelCustomizeContextChanged( file.menu, CustomizeWeaponMenu_Update ) CustomizeWeaponMenu_Update( file.menu ) if ( uiGlobal.lastMenuNavDirection == MENU_NAV_FORWARD ) @@ -70,13 +62,21 @@ void function CustomizeWeaponMenu_OnShow() void function CustomizeWeaponMenu_OnClose() { - RemoveCallback_OnTopLevelCustomizeContextChanged( file.menu, CustomizeWeaponMenu_Update ) + //RemoveCallback_OnTopLevelCustomizeContextChanged( file.menu, CustomizeWeaponMenu_Update ) CustomizeWeaponMenu_Update( file.menu ) } void function CustomizeWeaponMenu_Update( var menu ) { + file.weaponTabBodyPanelList = [ + Hud_GetChild( menu, "WeaponSkinsPanel0" ) + Hud_GetChild( menu, "WeaponSkinsPanel1" ) + Hud_GetChild( menu, "WeaponSkinsPanel2" ) + Hud_GetChild( menu, "WeaponSkinsPanel3" ) + Hud_GetChild( menu, "WeaponSkinsPanel4" ) + ] + for ( int panelIdx = 0; panelIdx < file.weaponTabBodyPanelList.len(); panelIdx++ ) { var tabBodyPanel = file.weaponTabBodyPanelList[panelIdx] @@ -84,7 +84,7 @@ void function CustomizeWeaponMenu_Update( var menu ) if ( panelIdx < file.weaponList.len() ) { ItemFlavor weapon = file.weaponList[panelIdx] - Newness_RemoveCallback_OnRerverseQueryUpdated( NEWNESS_QUERIES.WeaponTab[weapon], OnNewnessQueryChangedUpdatePanelTab, tabBodyPanel ) + //Newness_RemoveCallback_OnRerverseQueryUpdated( NEWNESS_QUERIES.WeaponTab[weapon], OnNewnessQueryChangedUpdatePanelTab, tabBodyPanel ) } } file.weaponList.clear() @@ -107,7 +107,7 @@ void function CustomizeWeaponMenu_Update( var menu ) AddTab( menu, tabBodyPanel, Localize( ItemFlavor_GetShortName( weapon ) ).toupper(), false, tabBarLeftOffsetFracIfVisible ) WeaponSkinsPanel_SetWeapon( tabBodyPanel, weapon ) - Newness_AddCallbackAndCallNow_OnRerverseQueryUpdated( NEWNESS_QUERIES.WeaponTab[weapon], OnNewnessQueryChangedUpdatePanelTab, tabBodyPanel ) + //Newness_AddCallbackAndCallNow_OnRerverseQueryUpdated( NEWNESS_QUERIES.WeaponTab[weapon], OnNewnessQueryChangedUpdatePanelTab, tabBodyPanel ) } } diff --git a/vscripts/ui/menu_matchmaking_utility.nut b/vscripts/ui/menu_matchmaking_utility.nut index 10be5b9c5..613ed9204 100644 --- a/vscripts/ui/menu_matchmaking_utility.nut +++ b/vscripts/ui/menu_matchmaking_utility.nut @@ -19,20 +19,35 @@ void function LeaveMatch() Durango_LeaveParty() #endif // #if DURANGO_PROG - CancelMatchmaking() - ClientCommand( "disconnect" ) // also disconnect on client - ClientCommand( "LeaveMatch" ) - - //load new lobbyvm - //ty amos for the idea of loading it on leave match + // Disconnect and load the lobby in a thread thread LoadLobbyAfterLeave() } void function LoadLobbyAfterLeave() { - isLeavingMatch = true - - ShutdownHostGame() + // Wait a second for a smoother transition + wait 1 + + // Only execute these if we aren't running the listen server + if ( !IsServerActive() ) + { + CancelMatchmaking() + ClientCommand( "disconnect" ) // also disconnect on client + ClientCommand( "LeaveMatch" ) + } + else + { + // Shutdown and wait a frame so the state machine could shut the + // server down properly, else we crash in CClient::SendSnapshot. + ShutdownHostGame() + WaitFrame() + } + + // Set the main menus blackscreen visibility to true to cover it + SetMainMenuBlackScreenVisible(true) + + // Create the lobby server + CreateServer("Lobby VM", "", "mp_lobby", "menufall", eServerVisibility.OFFLINE) } void function LeaveParty() diff --git a/vscripts/ui/menu_misc.nut b/vscripts/ui/menu_misc.nut index e13efcf52..8b2a11c2a 100644 --- a/vscripts/ui/menu_misc.nut +++ b/vscripts/ui/menu_misc.nut @@ -50,6 +50,7 @@ void function OnMiscMenu_Open() void function OnMiscMenu_Close() { HidePanel( Hud_GetChild( file.menu, "SettingsPanel" ) ) + RefreshCustomGamepadBinds_UI() //TabData tabData = GetTabDataForPanel( file.menu ) //DeactivateTab( tabData ) @@ -68,7 +69,13 @@ void function OnMiscMenu_NavigateBack() CloseActiveMenu() if ( IsLobby() ) + { + if (GetActiveMenu() != GetMenu( GetCurrentLobbyMenu() ) ) + AdvanceMenu( GetMenu( GetCurrentLobbyMenu() ) ) + UI_SetPresentationType( CurrentPresentationType ) + } + if(ISAIMTRAINER){ CloseAllMenus() diff --git a/vscripts/ui/menu_social.nut b/vscripts/ui/menu_social.nut index 250fed7b1..edd9b5c17 100644 --- a/vscripts/ui/menu_social.nut +++ b/vscripts/ui/menu_social.nut @@ -1100,6 +1100,8 @@ void function InspectMenu_OnClose() RunMenuClientFunction( "ClearAllCharacterPreview" ) RemoveCallback_UserInfoUpdated( OnUserInfoUpdated ) + + ActivateNav(0) } diff --git a/vscripts/ui/menu_system.nut b/vscripts/ui/menu_system.nut index 2bf8eb433..2c038574e 100644 --- a/vscripts/ui/menu_system.nut +++ b/vscripts/ui/menu_system.nut @@ -368,7 +368,7 @@ void function OpenSettingsMenu() void function HostEndMatch() { - LaunchR5RLobby() + CreateServer( GetPlayerName() + " Lobby", "", "mp_lobby", "menufall", eServerVisibility.OFFLINE) } void function RunSpectateCommand() diff --git a/vscripts/ui/menu_weaponmods.nut b/vscripts/ui/menu_weaponmods.nut new file mode 100644 index 000000000..d13749df8 --- /dev/null +++ b/vscripts/ui/menu_weaponmods.nut @@ -0,0 +1,629 @@ +global function InitWeaponModsMenu +global function OpenWeaponModsMenu +global function SetCurrentModsMenuWeapon +global function OnWeaponsMenuOpen +global function UpdateBlacklistedWeaponMenuMods + +const MAX_ATTACHMENT_ITEMS = 12 + +const array ModsButtons = [ + "Optic", + "Barrel", + "Magazine", + "Stock", + "Bolt", + "HopUp" +] + +const array catanames = [ + "OpticCata", + "BarrelCata", + "MagsCata", + "StocksCata", + "BoltsCata", + "HopUpCata" +] + +const array ButtonNames = [ + "OpticsButton", + "BarrelButton", + "MagazineButton", + "StockButton", + "BoltButton", + "HopupButton" +] + +table ModToName = { + ["optic_cq_hcog_classic"] = "x1 HCOG Classic", + ["optic_cq_hcog_bruiser"] = "x2 HCOG Bruiser", + ["optic_cq_holosight"] = "x1 Holosight", + ["optic_cq_threat"] = "x1 Digital Threat", + ["optic_cq_holosight_variable"] = "x1-2 Holosight Variable", + ["optic_ranged_hcog"] = "x3 HCOG Ranger", + ["optic_ranged_aog_variable"] = "x2-4 AOG Variable", + ["optic_sniper"] = "x6 Sniper", + ["optic_sniper_variable"] = "x4-8 Sniper Variable", + ["optic_sniper_threat"] = "x4-10 Sniper Digital Threat", + ["barrel_stabilizer_l1"] = "Barrel Stabilizer Lvl 1", + ["barrel_stabilizer_l2"] = "Barrel Stabilizer Lvl 2", + ["barrel_stabilizer_l3"] = "Barrel Stabilizer Lvl 3", + ["barrel_stabilizer_l4_flash_hider"] = "Barrel Stabilizer Lvl 4", + ["stock_tactical_l1"] = "Tactical Stock Lvl 1", + ["stock_tactical_l2"] = "Tactical Stock Lvl 2", + ["stock_tactical_l3"] = "Tactical Stock Lvl 3", + ["stock_sniper_l1"] = "Sniper Stock Lvl 1", + ["stock_sniper_l2"] = "Sniper Stock Lvl 2", + ["stock_sniper_l3"] = "Sniper Stock Lvl 3", + ["shotgun_bolt_l1"] = "Shotgun Bolt Lvl 1", + ["shotgun_bolt_l2"] = "Shotgun Bolt Lvl 2", + ["shotgun_bolt_l3"] = "Shotgun Bolt Lvl 3", + ["bullets_mag_l1"] = "Light Mag Lvl 1", + ["bullets_mag_l2"] = "Light Mag Lvl 2", + ["bullets_mag_l3"] = "Light Mag Lvl 3", + ["highcal_mag_l1"] = "Heavy Mag Lvl 1", + ["highcal_mag_l2"] = "Heavy Mag Lvl 2", + ["highcal_mag_l3"] = "Heavy Mag Lvl 3", + ["energy_mag_l1"] = "Energy Mag Lvl 1", + ["energy_mag_l2"] = "Energy Mag Lvl 2", + ["energy_mag_l3"] = "Energy Mag Lvl 3", + ["sniper_mag_l1"] = "Sniper Mag Lvl 1", + ["sniper_mag_l2"] = "Sniper Mag Lvl 2", + ["sniper_mag_l3"] = "Sniper Mag Lvl 3", + ["hopup_turbocharger"] = "Turbocharger", + ["hopup_selectfire"] = "Selectfire Receiver", + ["hopup_energy_choke"] = "Precision Choke", + ["hopup_unshielded_dmg"] = "Hammerpoint Rounds", + ["hopup_highcal_rounds"] = "Anvil Receiver", + ["hopup_double_tap"] = "Double Tap" +} + +const table emptyAttachmenttoImage = { + ["sight"] = $"rui/pilot_loadout/mods/empty_sight", + ["barrel"] = $"rui/pilot_loadout/mods/empty_barrel_stabilizer", + ["lightmag"] = $"rui/pilot_loadout/mods/empty_mag_straight", + ["heavymag"] = $"rui/pilot_loadout/mods/empty_mag", + ["energymag"] = $"rui/pilot_loadout/mods/empty_energy_mag", + ["stock_tactical"] = $"rui/pilot_loadout/mods/empty_stock_tactical", + ["stock_sniper"] = $"rui/pilot_loadout/mods/empty_stock_sniper", + ["sniper"] = $"rui/pilot_loadout/mods/empty_stock", + ["bolt"] = $"rui/pilot_loadout/mods/empty_mag_shotgun", + ["hopup"] = $"rui/pilot_loadout/mods/empty_hopup" +} + +struct +{ + var menu + + string weaponclassname + + string OpenButtonName + array blacklistedmods +} file + +array weaponOptics +array weaponBarrels +array weaponMagazines +array weaponStocks +array weaponBolts +array weaponHopup + +struct +{ + string optic = "" + string barrel = "" + string magazine = "" + string stock = "" + string bolt = "" + string hopup = "" +} selectedMods + +struct +{ + int optic = 0 + int barrel = 0 + int magazine = 0 + int stock = 0 + int bolt = 0 + int hopup = 0 +} modcount + +//Opens vote menu +void function OpenWeaponModsMenu() +{ + if(GetActiveMenu() != file.menu) + file.OpenButtonName = "" + + CloseAllMenus() + AdvanceMenu( file.menu ) +} + +void function UpdateBlacklistedWeaponMenuMods(string mods) +{ + file.blacklistedmods = split( mods, " " ) +} + +void function SetCurrentModsMenuWeapon(string weaponclassname, string mods) +{ + file.weaponclassname = weaponclassname + + selectedMods.optic = "" + selectedMods.barrel = "" + selectedMods.magazine = "" + selectedMods.stock = "" + selectedMods.bolt = "" + selectedMods.hopup = "" + + array splitmods = split( mods, " " ) + foreach(string mod in splitmods) + { + if(mod.find( "optic" ) > -1) + selectedMods.optic = mod + + if(mod.find( "barrel" ) > -1) + selectedMods.barrel = mod + + if(mod.find( "_mag_" ) > -1) + selectedMods.magazine = mod + + if(mod.find( "stock" ) > -1) + selectedMods.stock = mod + + if(mod.find( "shotgun_bolt" ) > -1) + selectedMods.bolt = mod + + if(mod.find( "hopup" ) > -1) + selectedMods.hopup = mod + } +} +//Inits vote menu +void function InitWeaponModsMenu( var newMenuArg ) +{ + var menu = GetMenu( "WeaponMods" ) + file.menu = menu + + AddMenuEventHandler( menu, eUIEvent.MENU_OPEN, OnWeaponsMenuOpen ) + AddMenuEventHandler( menu, eUIEvent.MENU_CLOSE, OnWeaponsMenuClose ) + + table ButtonNameToFunction = { + [ButtonNames[0]] = OpticButtonPressed, + [ButtonNames[1]] = BarrelButtonPressed, + [ButtonNames[2]] = MagazineButtonPressed, + [ButtonNames[3]] = StockButtonPressed, + [ButtonNames[4]] = BoltButtonPressed, + [ButtonNames[5]] = HopupButtonPressed + } + + foreach(name in ButtonNames) + { + foreach ( button in GetElementsByClassname( file.menu, name ) ) + { + Hud_AddEventHandler( button, UIE_CLICK, ButtonNameToFunction[name] ) + Hud_SetVisible( button, false ) + } + } + + foreach( button in GetElementsByClassname( file.menu, "CataButton" ) ) + Hud_AddEventHandler( button, UIE_CLICK, CataPressed ) +} + +void function OnWeaponsMenuClose() +{ + RunClientScript("CL_OnCloseWeaponModsMenu") +} + +void function CataPressed(var button) +{ + int id = Hud_GetScriptID( button ).tointeger() + + table ButtonToCount= { + [0] = modcount.optic, + [1] = modcount.barrel, + [2] = modcount.magazine, + [3] = modcount.stock, + [4] = modcount.bolt, + [5] = modcount.hopup + } + + foreach(name in ButtonNames) + foreach ( buttons in GetElementsByClassname( file.menu, name ) ) + Hud_SetVisible( buttons, false ) + + foreach( int i, buttons in GetElementsByClassname( file.menu, ButtonNames[id] ) ) + { + Hud_SetVisible( buttons, true ) + if(i > ButtonToCount[id]) + Hud_SetVisible( buttons, false ) + } + + file.OpenButtonName = ButtonNames[id] +} + +void function HopupButtonPressed( var button ) +{ + int id = Hud_GetScriptID( button ).tointeger() + if(weaponHopup[id] == selectedMods.hopup) + selectedMods.hopup = "" + else + selectedMods.hopup = weaponHopup[id] + SendWeaponMods() +} + +void function BoltButtonPressed( var button ) +{ + int id = Hud_GetScriptID( button ).tointeger() + if(weaponBolts[id] == selectedMods.bolt) + selectedMods.bolt = "" + else + selectedMods.bolt = weaponBolts[id] + SendWeaponMods() +} + +void function StockButtonPressed( var button ) +{ + int id = Hud_GetScriptID( button ).tointeger() + if(weaponStocks[id] == selectedMods.stock) + selectedMods.stock = "" + else + selectedMods.stock = weaponStocks[id] + SendWeaponMods() +} + +void function MagazineButtonPressed( var button ) +{ + int id = Hud_GetScriptID( button ).tointeger() + if(weaponMagazines[id] == selectedMods.magazine) + selectedMods.magazine = "" + else + selectedMods.magazine = weaponMagazines[id] + SendWeaponMods() +} + +void function BarrelButtonPressed( var button ) +{ + int id = Hud_GetScriptID( button ).tointeger() + if(weaponBarrels[id] == selectedMods.barrel) + selectedMods.barrel = "" + else + selectedMods.barrel = weaponBarrels[id] + SendWeaponMods() +} + +void function OpticButtonPressed( var button ) +{ + int id = Hud_GetScriptID( button ).tointeger() + if(weaponOptics[id] == selectedMods.optic) + selectedMods.optic = "" + else + selectedMods.optic = weaponOptics[id] + SendWeaponMods() +} + +void function SendWeaponMods() +{ + string WeaponMods = "" + + WeaponMods += selectedMods.optic + " " + WeaponMods += selectedMods.barrel + " " + WeaponMods += selectedMods.magazine + " " + WeaponMods += selectedMods.stock + " " + WeaponMods += selectedMods.bolt + " " + WeaponMods += selectedMods.hopup + " " + + RunClientScript( "UpdateWeaponMods", rstrip( WeaponMods ) ) +} + +void function OnWeaponsMenuOpen() +{ + HideAllButtons() + SetupModCatagorys() + + table ButtonToSelected = { + [0] = selectedMods.optic, + [1] = selectedMods.barrel, + [2] = selectedMods.magazine, + [3] = selectedMods.stock, + [4] = selectedMods.bolt, + [5] = selectedMods.hopup + } + + array > allWeaponMods = [ weaponOptics, weaponBarrels, weaponMagazines, weaponStocks, weaponBolts, weaponHopup ] + foreach(int i, array modsarray in allWeaponMods) + { + foreach(int j, string mod in modsarray) + { + if(j > MAX_ATTACHMENT_ITEMS) + break + + if(file.OpenButtonName == ButtonNames[i]) + Hud_SetVisible( Hud_GetChild( file.menu, ModsButtons[i] + j ), true ) + + if(SURVIVAL_Loot_IsRefValid( mod )) + { + LootData data = SURVIVAL_Loot_GetLootDataByRef( mod ) + RuiSetImage( Hud_GetRui(Hud_GetChild( file.menu, ModsButtons[i] + j )), "iconImage", data.hudIcon ) + RuiSetInt( Hud_GetRui(Hud_GetChild( file.menu, ModsButtons[i] + j )), "lootTier", data.tier ) + } + else + { + switch(mod) + { + case "hopup_headshot_dmg": + RuiSetImage( Hud_GetRui(Hud_GetChild( file.menu, ModsButtons[i] + j )), "iconImage", $"rui/pilot_loadout/mods/empty_hopup_skullpiercer" ) + RuiSetInt( Hud_GetRui(Hud_GetChild( file.menu, ModsButtons[i] + j )), "lootTier", 4 ) + break + case "energy_mag_l4": + RuiSetImage( Hud_GetRui(Hud_GetChild( file.menu, ModsButtons[i] + j )), "iconImage", $"rui/pilot_loadout/mods/energy_mag" ) + RuiSetInt( Hud_GetRui(Hud_GetChild( file.menu, ModsButtons[i] + j )), "lootTier", 4 ) + break + default: + RuiSetImage( Hud_GetRui(Hud_GetChild( file.menu, ModsButtons[i] + j )), "iconImage", $"rui/pilot_loadout/mods/empty_hopup" ) + RuiSetInt( Hud_GetRui(Hud_GetChild( file.menu, ModsButtons[i] + j )), "lootTier", 4 ) + break + } + } + + switch(i) + { + case 0: + modcount.optic = j + break + case 1: + modcount.barrel = j + break + case 2: + modcount.magazine = j + break + case 3: + modcount.stock = j + break + case 4: + modcount.bolt = j + break + case 5: + modcount.hopup = j + break + } + } + } +} + +void function HideAllButtons() +{ + array > allbuttons = [ GetElementsByClassname( file.menu, "CataButton" ), GetElementsByClassname( file.menu, "OpticsButton" ), GetElementsByClassname( file.menu, "BarrelButton" ), GetElementsByClassname( file.menu, "MagazineButton" ), GetElementsByClassname( file.menu, "StockButton" ), GetElementsByClassname( file.menu, "BoltButton" ), GetElementsByClassname( file.menu, "HopUpButton" )] + + foreach(array buttons in allbuttons) + foreach(var button in buttons) + Hud_SetVisible( button, false ) +} + +void function SetupModCatagorys() +{ + weaponOptics.clear() + weaponBarrels.clear() + weaponMagazines.clear() + weaponStocks.clear() + weaponBolts.clear() + weaponHopup.clear() + + array weaponMods = GetWeaponMods_Global( file.weaponclassname ) + foreach(string mod in weaponMods) + { + if(mod.find( "optic" ) > -1) + weaponOptics.append( mod ) + + if(mod.find( "barrel" ) > -1) + weaponBarrels.append( mod ) + + if(mod.find( "_mag_" ) > -1 && mod.find( "sniper_mag" ) == -1) + weaponMagazines.append( mod ) + + if(mod.find( "stock" ) > -1) + weaponStocks.append( mod ) + + if(mod.find( "shotgun_bolt" ) > -1 && mod.find( "_double_tap" ) == -1) + weaponBolts.append( mod ) + + if(mod.find( "hopup" ) > -1) + weaponHopup.append( mod ) + } + + //weird bug with eva8 where lvl 3 bolt is not in the list + if(weaponBolts.len() > 0) + { + bool lvl3boltinarry = false + foreach(string mod in weaponBolts) + if(mod.find( "shotgun_bolt_l3" ) > -1) + lvl3boltinarry = true + + if(!lvl3boltinarry) + weaponBolts.append( "shotgun_bolt_l3" ) + } + + //Remove Blacklisted Items + array > allWeaponMods = [ weaponOptics, weaponBarrels, weaponMagazines, weaponStocks, weaponBolts, weaponHopup ] + foreach(array modsarray in allWeaponMods) + foreach(int i, string mod in modsarray) + foreach(string blacklistedmod in file.blacklistedmods) + if(blacklistedmod.find( mod ) > -1) + modsarray.remove(i) + + table > CatagoryToArray = { + [catanames[0]] = weaponOptics, + [catanames[1]] = weaponBarrels, + [catanames[2]] = weaponMagazines, + [catanames[3]] = weaponStocks, + [catanames[4]] = weaponBolts, + [catanames[5]] = weaponHopup + } + + table ButtonToSelected = { + [0] = selectedMods.optic, + [1] = selectedMods.barrel, + [2] = selectedMods.magazine, + [3] = selectedMods.stock, + [4] = selectedMods.bolt, + [5] = selectedMods.hopup + } + + int bgwidth = 0 + int bgheight = 0 + var previousPanelForPinning + foreach(int i, string cata in catanames) + { + if(CatagoryToArray[cata].len() == 0) + continue + + var button = Hud_GetChild( file.menu, cata ) + Hud_SetVisible( button, true ) + + RuiSetImage( Hud_GetRui(button), "iconImage", $"" ) + RuiSetInt( Hud_GetRui(button), "lootTier", 0 ) + + SetupEquipedWeaponMods(i, button) + + if(i == 0) { + bgwidth += Hud_GetWidth(button) + Hud_SetY( button, -10 ) + Hud_SetX( button, -10 ) + } else { + bgwidth += Hud_GetWidth(button) + 15 + Hud_SetPinSibling( button, Hud_GetHudName( previousPanelForPinning ) ) + Hud_SetX( button, -(Hud_GetWidth(previousPanelForPinning)) - 15 ) + } + + bgheight = Hud_GetHeight(button) + previousPanelForPinning = button + } + + Hud_SetY( Hud_GetChild( file.menu, "ModsBG" ), -10 ) + Hud_SetX( Hud_GetChild( file.menu, "ModsBG" ), -10 ) + Hud_SetWidth( Hud_GetChild( file.menu, "ModsBG" ), bgwidth ) + Hud_SetHeight( Hud_GetChild( file.menu, "ModsBG" ), bgheight ) +} + +void function SetupEquipedWeaponMods(int i, var button) +{ + switch(i) + { + case 0: + RuiSetImage( Hud_GetRui(button), "iconImage", emptyAttachmenttoImage["sight"] ) + RuiSetInt( Hud_GetRui(button), "lootTier", 0 ) + + if(selectedMods.optic != "") { + LootData data = SURVIVAL_Loot_GetLootDataByRef( selectedMods.optic ) + RuiSetImage( Hud_GetRui(button), "iconImage", data.hudIcon ) + RuiSetInt( Hud_GetRui(button), "lootTier", data.tier ) + } + break + case 1: + RuiSetImage( Hud_GetRui(button), "iconImage", emptyAttachmenttoImage["barrel"] ) + RuiSetInt( Hud_GetRui(button), "lootTier", 0 ) + + if(selectedMods.barrel != "") { + LootData data = SURVIVAL_Loot_GetLootDataByRef( selectedMods.barrel ) + RuiSetImage( Hud_GetRui(button), "iconImage", data.hudIcon ) + RuiSetInt( Hud_GetRui(button), "lootTier", data.tier ) + } + break + case 2: + string ammoType = GetWeaponInfoFileKeyField_GlobalString( file.weaponclassname, "ammo_pool_type" ) + asset ammoTypeAsset = $"" + switch(ammoType) + { + case "bullet": + ammoTypeAsset = emptyAttachmenttoImage["lightmag"] + break + case "highcal": + ammoTypeAsset = emptyAttachmenttoImage["heavymag"] + break + case "special": + ammoTypeAsset = emptyAttachmenttoImage["energymag"] + break + } + + RuiSetImage( Hud_GetRui(button), "iconImage", ammoTypeAsset ) + RuiSetInt( Hud_GetRui(button), "lootTier", 0 ) + + if(selectedMods.magazine != "") { + if(SURVIVAL_Loot_IsRefValid( selectedMods.magazine )) + { + LootData data = SURVIVAL_Loot_GetLootDataByRef( selectedMods.magazine ) + RuiSetImage( Hud_GetRui(button), "iconImage", data.hudIcon ) + RuiSetInt( Hud_GetRui(button), "lootTier", data.tier ) + } + else + { + switch(selectedMods.magazine) + { + case "energy_mag_l4": + RuiSetImage( Hud_GetRui(button), "iconImage", $"rui/pilot_loadout/mods/energy_mag" ) + RuiSetInt( Hud_GetRui(button), "lootTier", 4 ) + break + default: + RuiSetImage( Hud_GetRui(button), "iconImage", $"rui/pilot_loadout/mods/empty_mag_straight" ) + RuiSetInt( Hud_GetRui(button), "lootTier", 4 ) + break + } + } + } + break + case 3: + RuiSetImage( Hud_GetRui(button), "iconImage", emptyAttachmenttoImage["stock_tactical"] ) + RuiSetInt( Hud_GetRui(button), "lootTier", 0 ) + + switch(file.weaponclassname) + { + case "mp_weapon_doubletake": + case "mp_weapon_dmr": + case "mp_weapon_sniper": + case "mp_weapon_sentinel": + case "mp_weapon_defender": + case "mp_weapon_g2": + RuiSetImage( Hud_GetRui(button), "iconImage", emptyAttachmenttoImage["stock_sniper"] ) + } + + if(selectedMods.stock != "") { + LootData data = SURVIVAL_Loot_GetLootDataByRef( selectedMods.stock ) + RuiSetImage( Hud_GetRui(button), "iconImage", data.hudIcon ) + RuiSetInt( Hud_GetRui(button), "lootTier", data.tier ) + } + break + case 4: + RuiSetImage( Hud_GetRui(button), "iconImage", emptyAttachmenttoImage["bolt"] ) + RuiSetInt( Hud_GetRui(button), "lootTier", 0 ) + + if(selectedMods.bolt != "") { + LootData data = SURVIVAL_Loot_GetLootDataByRef( selectedMods.bolt ) + RuiSetImage( Hud_GetRui(button), "iconImage", data.hudIcon ) + RuiSetInt( Hud_GetRui(button), "lootTier", data.tier ) + } + break + case 5: + RuiSetImage( Hud_GetRui(button), "iconImage", emptyAttachmenttoImage["hopup"] ) + RuiSetInt( Hud_GetRui(button), "lootTier", 0 ) + + if(selectedMods.hopup != "") { + if(SURVIVAL_Loot_IsRefValid( selectedMods.hopup )) + { + LootData data = SURVIVAL_Loot_GetLootDataByRef( selectedMods.hopup ) + RuiSetImage( Hud_GetRui(button), "iconImage", data.hudIcon ) + RuiSetInt( Hud_GetRui(button), "lootTier", data.tier ) + } + else + { + switch(selectedMods.hopup) + { + case "hopup_headshot_dmg": + RuiSetImage( Hud_GetRui(button), "iconImage", $"rui/pilot_loadout/mods/empty_hopup_skullpiercer" ) + RuiSetInt( Hud_GetRui(button), "lootTier", 4 ) + break + default: + RuiSetImage( Hud_GetRui(button), "iconImage", $"rui/pilot_loadout/mods/empty_hopup" ) + RuiSetInt( Hud_GetRui(button), "lootTier", 4 ) + break + } + } + } + break + } +} \ No newline at end of file diff --git a/vscripts/ui/panel_banner_badges_v2.nut b/vscripts/ui/panel_banner_badges_v2.nut index 79b4e2e6e..2dd2f20d3 100644 --- a/vscripts/ui/panel_banner_badges_v2.nut +++ b/vscripts/ui/panel_banner_badges_v2.nut @@ -19,13 +19,13 @@ void function InitCardBadgesPanel( var panel ) AddPanelFooterOption( panel, LEFT, BUTTON_B, true, "#B_BUTTON_BACK", "#B_BUTTON_BACK" ) // - AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_UNLOCK_LEGEND", "#X_BUTTON_UNLOCK_LEGEND", null, CustomizeMenus_IsFocusedItemParentItemLocked ) + //AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_UNLOCK_LEGEND", "#X_BUTTON_UNLOCK_LEGEND", null, CustomizeMenus_IsFocusedItemParentItemLocked ) AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_EQUIP", "#X_BUTTON_EQUIP", null, CustomizeMenus_IsFocusedItemEquippable ) AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_CLEAR", "#X_BUTTON_CLEAR", null, bool function () : () { return ( CustomizeMenus_IsFocusedItemUnlocked() && !CustomizeMenus_IsFocusedItemEquippable() ) } ) - AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_UNLOCK", "#X_BUTTON_UNLOCK", null, CustomizeMenus_IsFocusedItemLocked ) + //AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_UNLOCK", "#X_BUTTON_UNLOCK", null, CustomizeMenus_IsFocusedItemLocked ) // // // @@ -147,7 +147,19 @@ void function CardBadgesPanel_Update( var panel ) } } } - toolTipData.descText = Localize( ItemFlavor_GetShortDescription( flav ) ) + + //R5Reloaded Temp + if(ItemFlavor_GetHumanReadableRef(flav) == "gcard_badge_account_dev_badge") + { + toolTipData.titleText = "R5Reloaded Badge" + toolTipData.descText = "Play R5Reloaded" + } + else + toolTipData.descText = Localize( ItemFlavor_GetShortDescription( flav ) ) + ////////////////////////////////////////////////////////////// + + //Original Code + //toolTipData.descText = Localize( ItemFlavor_GetShortDescription( flav ) ) toolTipData.actionHint2 = badgeHint } @@ -228,6 +240,8 @@ void function PreviewCardBadge( ItemFlavor flav ) int function CanEquipCanBuyBadgeCheck( ItemFlavor unused ) { + return eItemCanEquipCanBuyStatus.CAN_EQUIP_CAN_BUY + int status = CanEquipCanBuyCharacterItemCheck( unused ) if ( status == eItemCanEquipCanBuyStatus.CAN_EQUIP_CAN_BUY ) return eItemCanEquipCanBuyStatus.CAN_EQUIP_CANNOT_BUY @@ -268,14 +282,14 @@ void function SortBadgesAndFilter( ItemFlavor character, array badge bool function ShouldDisplayBadge( ItemFlavor badge, table equippedBadgeSet, ItemFlavor character ) { - if ( GladiatorCardBadge_ShouldHideIfLocked( badge ) ) + /*if ( GladiatorCardBadge_ShouldHideIfLocked( badge ) ) { if ( !IsItemFlavorUnlockedForLoadoutSlot( LocalClientEHI(), Loadout_GladiatorCardBadge( character, 0 ), badge ) )// return false } if ( GladiatorCardBadge_IsTheEmpty( badge ) ) - return false + return false*/ return true } \ No newline at end of file diff --git a/vscripts/ui/panel_banner_frames.nut b/vscripts/ui/panel_banner_frames.nut index a0160c28e..4537b3f45 100644 --- a/vscripts/ui/panel_banner_frames.nut +++ b/vscripts/ui/panel_banner_frames.nut @@ -19,9 +19,9 @@ void function InitCardFramesPanel( var panel ) AddPanelFooterOption( panel, LEFT, BUTTON_B, true, "#B_BUTTON_BACK", "#B_BUTTON_BACK" ) AddPanelFooterOption( panel, LEFT, BUTTON_A, false, "#A_BUTTON_SELECT", "", null, CustomizeMenus_IsFocusedItem ) - AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_UNLOCK_LEGEND", "#X_BUTTON_UNLOCK_LEGEND", null, CustomizeMenus_IsFocusedItemParentItemLocked ) + //AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_UNLOCK_LEGEND", "#X_BUTTON_UNLOCK_LEGEND", null, CustomizeMenus_IsFocusedItemParentItemLocked ) AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_EQUIP", "#X_BUTTON_EQUIP", null, CustomizeMenus_IsFocusedItemEquippable ) - AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_UNLOCK", "#X_BUTTON_UNLOCK", null, CustomizeMenus_IsFocusedItemLocked ) + //AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_UNLOCK", "#X_BUTTON_UNLOCK", null, CustomizeMenus_IsFocusedItemLocked ) //AddPanelFooterOption( panel, LEFT, BUTTON_DPAD_LEFT, false, "#TRIGGERS_CHANGE_LEGEND", "", CustomizeCharacterMenu_PrevButton_OnActivate ) //AddPanelFooterOption( panel, LEFT, BUTTON_DPAD_RIGHT, false, "", "", CustomizeCharacterMenu_NextButton_OnActivate ) //AddPanelFooterOption( panel, LEFT, BUTTON_TRIGGER_LEFT, false, "", "", CustomizeCharacterMenu_PrevButton_OnActivate ) @@ -66,6 +66,8 @@ void function CardFramesPanel_Update( var panel ) file.cardFrameList = GetLoadoutItemsSortedForMenu( entry, GladiatorCardFrame_GetSortOrdinal ) FilterFrameList( file.cardFrameList ) + file.cardFrameList = [file.cardFrameList[0]] + Hud_InitGridButtons( file.listPanel, file.cardFrameList.len() ) foreach ( int flavIdx, ItemFlavor flav in file.cardFrameList ) { diff --git a/vscripts/ui/panel_banner_poses.nut b/vscripts/ui/panel_banner_poses.nut index a553c93f4..3f89944d0 100644 --- a/vscripts/ui/panel_banner_poses.nut +++ b/vscripts/ui/panel_banner_poses.nut @@ -19,9 +19,9 @@ void function InitCardPosesPanel( var panel ) AddPanelFooterOption( panel, LEFT, BUTTON_B, true, "#B_BUTTON_BACK", "#B_BUTTON_BACK" ) AddPanelFooterOption( panel, LEFT, BUTTON_A, false, "#A_BUTTON_SELECT", "", null, CustomizeMenus_IsFocusedItem ) - AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_UNLOCK_LEGEND", "#X_BUTTON_UNLOCK_LEGEND", null, CustomizeMenus_IsFocusedItemParentItemLocked ) + //AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_UNLOCK_LEGEND", "#X_BUTTON_UNLOCK_LEGEND", null, CustomizeMenus_IsFocusedItemParentItemLocked ) AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_EQUIP", "#X_BUTTON_EQUIP", null, CustomizeMenus_IsFocusedItemEquippable ) - AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_UNLOCK", "#X_BUTTON_UNLOCK", null, CustomizeMenus_IsFocusedItemLocked ) + //AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_UNLOCK", "#X_BUTTON_UNLOCK", null, CustomizeMenus_IsFocusedItemLocked ) //AddPanelFooterOption( panel, LEFT, BUTTON_DPAD_LEFT, false, "#TRIGGERS_CHANGE_LEGEND", "", CustomizeCharacterMenu_PrevButton_OnActivate ) //AddPanelFooterOption( panel, LEFT, BUTTON_DPAD_RIGHT, false, "", "", CustomizeCharacterMenu_NextButton_OnActivate ) //AddPanelFooterOption( panel, LEFT, BUTTON_TRIGGER_LEFT, false, "", "", CustomizeCharacterMenu_PrevButton_OnActivate ) @@ -65,6 +65,8 @@ void function CardPosesPanel_Update( var panel ) LoadoutEntry entry = Loadout_GladiatorCardStance( GetTopLevelCustomizeContext() ) file.cardPoseList = GetLoadoutItemsSortedForMenu( entry, GladiatorCardStance_GetSortOrdinal ) + file.cardPoseList = [file.cardPoseList[0]] + Hud_InitGridButtons( file.listPanel, file.cardPoseList.len() ) foreach ( int flavIdx, ItemFlavor flav in file.cardPoseList ) { diff --git a/vscripts/ui/panel_banner_trackers_v2.nut b/vscripts/ui/panel_banner_trackers_v2.nut index 7dcabbaaa..13a515c06 100644 --- a/vscripts/ui/panel_banner_trackers_v2.nut +++ b/vscripts/ui/panel_banner_trackers_v2.nut @@ -19,13 +19,13 @@ void function InitCardTrackersPanel( var panel ) AddPanelFooterOption( panel, LEFT, BUTTON_B, true, "#B_BUTTON_BACK", "#B_BUTTON_BACK" ) AddPanelFooterOption( panel, LEFT, BUTTON_A, false, "#A_BUTTON_SELECT", "", null, CustomizeMenus_IsFocusedItem ) - AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_UNLOCK_LEGEND", "#X_BUTTON_UNLOCK_LEGEND", null, CustomizeMenus_IsFocusedItemParentItemLocked ) + //AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_UNLOCK_LEGEND", "#X_BUTTON_UNLOCK_LEGEND", null, CustomizeMenus_IsFocusedItemParentItemLocked ) AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_EQUIP", "#X_BUTTON_EQUIP", null, CustomizeMenus_IsFocusedItemEquippable ) AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_CLEAR", "#X_BUTTON_CLEAR", null, bool function () : () { return ( CustomizeMenus_IsFocusedItemUnlocked() && !CustomizeMenus_IsFocusedItemEquippable() ) } ) - AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_UNLOCK", "#X_BUTTON_UNLOCK", null, CustomizeMenus_IsFocusedItemLocked ) + //AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_UNLOCK", "#X_BUTTON_UNLOCK", null, CustomizeMenus_IsFocusedItemLocked ) // // // diff --git a/vscripts/ui/panel_character_executions.nut b/vscripts/ui/panel_character_executions.nut index 7671e7880..f186a9edb 100644 --- a/vscripts/ui/panel_character_executions.nut +++ b/vscripts/ui/panel_character_executions.nut @@ -28,9 +28,9 @@ void function InitCharacterExecutionsPanel( var panel ) AddPanelFooterOption( panel, LEFT, BUTTON_B, true, "#B_BUTTON_BACK", "#B_BUTTON_BACK" ) AddPanelFooterOption( panel, LEFT, BUTTON_A, false, "#A_BUTTON_SELECT", "", null, CustomizeMenus_IsFocusedItem ) - AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_UNLOCK_LEGEND", "#X_BUTTON_UNLOCK_LEGEND", null, CustomizeMenus_IsFocusedItemParentItemLocked ) + //AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_UNLOCK_LEGEND", "#X_BUTTON_UNLOCK_LEGEND", null, CustomizeMenus_IsFocusedItemParentItemLocked ) AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_EQUIP", "#X_BUTTON_EQUIP", null, CustomizeMenus_IsFocusedItemEquippable ) - AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_UNLOCK", "#X_BUTTON_UNLOCK", null, CustomizeMenus_IsFocusedItemLocked ) + //AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_UNLOCK", "#X_BUTTON_UNLOCK", null, CustomizeMenus_IsFocusedItemLocked ) //AddPanelFooterOption( panel, LEFT, BUTTON_DPAD_LEFT, false, "#TRIGGERS_CHANGE_LEGEND", "", CustomizeCharacterMenu_PrevButton_OnActivate ) //AddPanelFooterOption( panel, LEFT, BUTTON_DPAD_RIGHT, false, "", "", CustomizeCharacterMenu_NextButton_OnActivate ) //AddPanelFooterOption( panel, LEFT, BUTTON_TRIGGER_LEFT, false, "", "", CustomizeCharacterMenu_PrevButton_OnActivate ) @@ -79,6 +79,8 @@ void function CharacterExecutionsPanel_Update( var panel ) LoadoutEntry entry = Loadout_CharacterExecution( character ) file.characterExecutionList = GetLoadoutItemsSortedForMenu( entry, CharacterExecution_GetSortOrdinal ) + file.characterExecutionList = [file.characterExecutionList[0]] + Hud_InitGridButtons( file.listPanel, file.characterExecutionList.len() ) foreach ( int flavIdx, ItemFlavor flav in file.characterExecutionList ) { @@ -86,7 +88,7 @@ void function CharacterExecutionsPanel_Update( var panel ) CustomizeButton_UpdateAndMarkForUpdating( button, [entry], flav, PreviewCharacterExecution, CanEquipCanBuyCharacterItemCheck ) } - RuiSetString( file.headerRui, "collected", CustomizeMenus_GetCollectedString( entry, file.characterExecutionList, false ) ) + RuiSetString( file.headerRui, "collected", "1/1" ) } } diff --git a/vscripts/ui/panel_character_skins.nut b/vscripts/ui/panel_character_skins.nut index 340ae0e99..742170b45 100644 --- a/vscripts/ui/panel_character_skins.nut +++ b/vscripts/ui/panel_character_skins.nut @@ -26,9 +26,9 @@ void function InitCharacterSkinsPanel( var panel ) AddPanelFooterOption( panel, LEFT, BUTTON_B, true, "#B_BUTTON_BACK", "#B_BUTTON_BACK" ) AddPanelFooterOption( panel, LEFT, BUTTON_A, false, "#A_BUTTON_SELECT", "", null, CustomizeMenus_IsFocusedItem ) - AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_UNLOCK_LEGEND", "#X_BUTTON_UNLOCK_LEGEND", null, CustomizeMenus_IsFocusedItemParentItemLocked ) + //AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_UNLOCK_LEGEND", "#X_BUTTON_UNLOCK_LEGEND", null, CustomizeMenus_IsFocusedItemParentItemLocked ) AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_EQUIP", "#X_BUTTON_EQUIP", null, CustomizeMenus_IsFocusedItemEquippable ) - AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_UNLOCK", "#X_BUTTON_UNLOCK", null, CustomizeMenus_IsFocusedItemLocked ) + //AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_UNLOCK", "#X_BUTTON_UNLOCK", null, CustomizeMenus_IsFocusedItemLocked ) AddPanelFooterOption( panel, LEFT, BUTTON_STICK_LEFT, false, "#MENU_ZOOM_CONTROLS_GAMEPAD", "#MENU_ZOOM_CONTROLS" ) //AddPanelFooterOption( panel, LEFT, BUTTON_DPAD_LEFT, false, "#TRIGGERS_CHANGE_LEGEND", "", CustomizeCharacterMenu_PrevButton_OnActivate ) //AddPanelFooterOption( panel, LEFT, BUTTON_DPAD_RIGHT, false, "", "", CustomizeCharacterMenu_NextButton_OnActivate ) @@ -40,6 +40,9 @@ void function InitCharacterSkinsPanel( var panel ) HudElem_SetRuiArg( file.heirloomButton, "buttonText", "" ) HudElem_SetRuiArg( file.heirloomButton, "descText", "" ) Hud_AddEventHandler( file.heirloomButton, UIE_CLICK, CustomizeCharacterMenu_HeirloomButton_OnActivate ) + + Hud_SetVisible(file.heirloomButton, false) + Hud_SetVisible(Hud_GetChild( panel, "ActionButton" ), false) //RegisterSignal( "PROTO_StopButtonThumbnailsThink" ) } @@ -48,32 +51,32 @@ void function CharacterSkinsPanel_OnShow( var panel ) { UI_SetPresentationType( ePresentationType.CHARACTER_SKIN ) - AddCallback_OnTopLevelCustomizeContextChanged( panel, CharacterSkinsPanel_Update ) + //AddCallback_OnTopLevelCustomizeContextChanged( panel, CharacterSkinsPanel_Update ) RunClientScript( "EnableModelTurn" ) - thread TrackIsOverScrollBar( file.listPanel ) + //thread TrackIsOverScrollBar( file.listPanel ) CharacterSkinsPanel_Update( panel ) // - AddCallback_ItemFlavorLoadoutSlotDidChange_SpecificPlayer( LocalClientEHI(), Loadout_MeleeSkin( GetTopLevelCustomizeContext() ), OnMeleeSkinChanged ) - CustomizeCharacterMenu_UpdateHeirloomButton() + //AddCallback_ItemFlavorLoadoutSlotDidChange_SpecificPlayer( LocalClientEHI(), Loadout_MeleeSkin( GetTopLevelCustomizeContext() ), OnMeleeSkinChanged ) + //CustomizeCharacterMenu_UpdateHeirloomButton() } void function CharacterSkinsPanel_OnHide( var panel ) { - RemoveCallback_OnTopLevelCustomizeContextChanged( panel, CharacterSkinsPanel_Update ) - Signal( uiGlobal.signalDummy, "TrackIsOverScrollBar" ) + //RemoveCallback_OnTopLevelCustomizeContextChanged( panel, CharacterSkinsPanel_Update ) + //Signal( uiGlobal.signalDummy, "TrackIsOverScrollBar" ) RunClientScript( "EnableModelTurn" ) CharacterSkinsPanel_Update( panel ) //Signal( panel, "PROTO_StopButtonThumbnailsThink" ) - RemoveCallback_ItemFlavorLoadoutSlotDidChange_SpecificPlayer( LocalClientEHI(), Loadout_MeleeSkin( GetTopLevelCustomizeContext() ), OnMeleeSkinChanged ) + //RemoveCallback_ItemFlavorLoadoutSlotDidChange_SpecificPlayer( LocalClientEHI(), Loadout_MeleeSkin( GetTopLevelCustomizeContext() ), OnMeleeSkinChanged ) } void function CharacterSkinsPanel_Update( var panel ) { - var scrollPanel = Hud_GetChild( file.listPanel, "ScrollPanel" ) + /*var scrollPanel = Hud_GetChild( file.listPanel, "ScrollPanel" ) // cleanup foreach ( int flavIdx, ItemFlavor unused in file.characterSkinList ) @@ -83,14 +86,14 @@ void function CharacterSkinsPanel_Update( var panel ) } file.characterSkinList.clear() - CustomizeMenus_SetActionButton( null ) + CustomizeMenus_SetActionButton( null )*/ RunMenuClientFunction( "ClearAllCharacterPreview" ) // setup, but only if we're active - if ( IsPanelActive( file.panel ) && IsTopLevelCustomizeContextValid() ) + //if ( IsPanelActive( file.panel ) && IsTopLevelCustomizeContextValid() ) { - LoadoutEntry entry = Loadout_CharacterSkin( GetTopLevelCustomizeContext() ) + /*LoadoutEntry entry = Loadout_CharacterSkin( GetTopLevelCustomizeContext() ) file.characterSkinList = GetLoadoutItemsSortedForMenu( entry, CharacterSkin_GetSortOrdinal ) FilterCharacterSkinList( file.characterSkinList ) @@ -101,9 +104,9 @@ void function CharacterSkinsPanel_Update( var panel ) CustomizeButton_UpdateAndMarkForUpdating( button, [entry], flav, PreviewCharacterSkin, CanEquipCanBuyCharacterItemCheck ) } - CustomizeMenus_SetActionButton( Hud_GetChild( panel, "ActionButton" ) ) + CustomizeMenus_SetActionButton( Hud_GetChild( panel, "ActionButton" ) )*/ - RuiSetString( file.headerRui, "collected", CustomizeMenus_GetCollectedString( entry, file.characterSkinList , false ) ) + RuiSetString( file.headerRui, "collected", "0/0" ) //CustomizeMenus_GetCollectedString( entry, file.characterSkinList , false ) } } diff --git a/vscripts/ui/panel_mainmenu.nut b/vscripts/ui/panel_mainmenu.nut index 81e29d722..e005d4c5c 100644 --- a/vscripts/ui/panel_mainmenu.nut +++ b/vscripts/ui/panel_mainmenu.nut @@ -18,10 +18,6 @@ global function UICodeCallback_OnUserSignOut const bool SPINNER_DEBUG_INFO = PC_PROG -// r5r -global function LaunchR5RLobby -global bool isLeavingMatch = false - struct { var menu @@ -162,12 +158,6 @@ void function UpdateDataCenterFooter( InputDef footerData ) void function OnMainMenuPanel_Show( var panel ) { - if( isLeavingMatch ) - { - LaunchR5RLobby() - return - } - file.startTime = Time() AccessibilityHintReset() @@ -207,8 +197,304 @@ void function PrelaunchValidation( bool autoContinue = false ) SetLaunchState( eLaunchState.WORKING ) - if( !autoContinue ) - wait 1.0 + SetLaunchState( eLaunchState.CANT_CONTINUE, "Press F10 to access the Server Browser" ) + + return +#if SPINNER_DEBUG_INFO + SetSpinnerDebugInfo( "PrelaunchValidation" ) +#endif + #if PC_PROG + bool isOriginEnabled = true//Origin_IsEnabled() + PrintLaunchDebugVal( "isOriginEnabled", isOriginEnabled ) + if ( !isOriginEnabled ) + { + #if DEVELOPER + if ( autoContinue ) + LaunchMP() + else + SetLaunchState( eLaunchState.WAIT_TO_CONTINUE, "", Localize( "#MAINMENU_CONTINUE" ) ) + + return + #endif // DEVELOPER + + SetLaunchState( eLaunchState.WAIT_TO_CONTINUE, Localize( "#ORIGIN_IS_OFFLINE" ), Localize( "#MAINMENU_RETRY" ) ) + return + } + + bool isOriginConnected = true//isOriginEnabled ? Origin_IsOnline() : true + PrintLaunchDebugVal( "isOriginConnected", isOriginConnected ) + if ( !isOriginConnected ) + { + SetLaunchState( eLaunchState.WAIT_TO_CONTINUE, Localize( "#ORIGIN_IS_OFFLINE" ), Localize( "#MAINMENU_RETRY" ) ) + return + } + + bool isOriginLatest = true//Origin_IsUpToDate() + PrintLaunchDebugVal( "isOriginLatest", isOriginLatest ) + if ( !isOriginLatest ) + { + SetLaunchState( eLaunchState.CANT_CONTINUE, Localize( "#TITLE_UPDATE_AVAILABLE" ) ) + return + } + #endif // PC_PROG + + #if CONSOLE_PROG + bool isOnline = Console_IsOnline() + PrintLaunchDebugVal( "isOnline", isOnline ) + if ( !isOnline ) + { + SetLaunchState( eLaunchState.WAIT_TO_CONTINUE, Localize( "#INTERNET_NOT_FOUND" ), Localize( "#MAINMENU_RETRY" ) ) + return + } + #endif // CONSOLE_PROG + + bool hasLatestPatch = HasLatestPatch() + PrintLaunchDebugVal( "hasLatestPatch", hasLatestPatch ) + if ( !hasLatestPatch ) + { + SetLaunchState( eLaunchState.CANT_CONTINUE, Localize( "#TITLE_UPDATE_AVAILABLE" ) ) + return + } + + #if PC_PROG + bool isOriginAccountAvailable = true // ??? + PrintLaunchDebugVal( "isOriginAccountAvailable", isOriginAccountAvailable ) + if ( !isOriginAccountAvailable ) + { + SetLaunchState( eLaunchState.WAIT_TO_CONTINUE, Localize( "#ORIGIN_ACCOUNT_IN_USE" ), Localize( "#MAINMENU_RETRY" ) ) + return + } + + bool isOriginLoggedIn = true // ??? + PrintLaunchDebugVal( "isOriginLoggedIn", isOriginLoggedIn ) + if ( !isOriginLoggedIn ) + { + SetLaunchState( eLaunchState.WAIT_TO_CONTINUE, Localize( "#ORIGIN_NOT_LOGGED_IN" ), Localize( "#MAINMENU_RETRY" ) ) + return + } + + bool isOriginAgeApproved = MeetsAgeRequirements() + PrintLaunchDebugVal( "isOriginAgeApproved", isOriginAgeApproved ) + if ( !isOriginAgeApproved ) + { + SetLaunchState( eLaunchState.CANT_CONTINUE, Localize( "#MULTIPLAYER_AGE_RESTRICTED" ) ) + return + } + +#if SPINNER_DEBUG_INFO + SetSpinnerDebugInfo( "isOriginReady" ) +#endif + while ( true ) + { + bool isOriginReady = true//Origin_IsReady() + PrintLaunchDebugVal( "isOriginReady", isOriginReady ) + if ( isOriginReady ) + break + WaitFrame() + } + #endif // PC_PROG + + #if PS4_PROG + WaitFrame() // ???: doesn't work without a wait + + if ( PS4_isNetworkingDown() ) + { + printt( "PS4 - networking is down" ) + SetLaunchState( eLaunchState.WAIT_TO_CONTINUE, Localize( "#PSN_CANNOT_CONNECT" ), Localize( "#MAINMENU_RETRY" ) ) + return + } + + if ( !PS4_isUserNetworkingEnabled() ) + { + PS4_ScheduleUserNetworkingEnabledTest() +#if SPINNER_DEBUG_INFO + SetSpinnerDebugInfo( "PS4_isUserNetworkingResolved" ) +#endif + WaitFrame() + if ( !PS4_isUserNetworkingResolved() ) + { + printt( "PS4 - networking isn't resolved yet" ) + while ( !PS4_isUserNetworkingResolved() ) + WaitFrame() + } + } + + int netStatus = PS4_getUserNetworkingResolution() + + bool isPSNConnected + if ( netStatus == PS4_NETWORK_STATUS_NOT_LOGGED_IN ) + isPSNConnected = false + else + isPSNConnected = Ps4_PSN_Is_Loggedin() + PrintLaunchDebugVal( "isPSNConnected", isPSNConnected ) + if ( !isPSNConnected ) + { + if ( autoContinue ) + thread PS4_PSNSignIn() + else + SetLaunchState( eLaunchState.WAIT_TO_CONTINUE, "", Localize( "#MAINMENU_CONTINUE" ) ) + return + } + + bool isAgeApproved + if ( netStatus == PS4_NETWORK_STATUS_AGE_RESTRICTION ) + isAgeApproved = false + else + isAgeApproved = !PS4_is_NetworkStatusAgeRestriction() + PrintLaunchDebugVal( "isAgeApproved", isAgeApproved ) + if ( !isAgeApproved ) + { + SetLaunchState( eLaunchState.CANT_CONTINUE, Localize( "#MULTIPLAYER_AGE_RESTRICTED" ) ) + return + } + + bool isPSNError = netStatus == PS4_NETWORK_STATUS_IN_ERROR + PrintLaunchDebugVal( "isPSNError", isPSNError ) + if ( isPSNError ) + { + SetLaunchState( eLaunchState.WAIT_TO_CONTINUE, Localize( "#PSN_HAD_ERROR" ), Localize( "#MAINMENU_RETRY" ) ) + return + } + + // Moved till later because some of the above PS4 checks cause PS4_isUserNetworkingEnabled() to return false so anything past checking PS4_isUserNetworkingEnabled() couldn't be reached + if ( !PS4_isUserNetworkingEnabled() ) + { + SetLaunchState( eLaunchState.CANT_CONTINUE, Localize( "#PSN_NOT_ALLOWED" ) ) + return + } + #endif // PS4_PROG + + #if DURANGO_PROG + bool isSignedIn = Console_IsSignedIn() // This call is weird. Seems like this is our game's concept of signed in, instead of xbox's. Also not used on PS4 because code always returns true + bool isProfileSelectRequired = file.forceProfileSelect + PrintLaunchDebugVal( "isSignedIn", isSignedIn ) + PrintLaunchDebugVal( "isProfileSelectRequired", isProfileSelectRequired ) + PrintLaunchDebugVal( "autoContinue", autoContinue ) + if ( !isSignedIn || isProfileSelectRequired ) + { + file.forceProfileSelect = false + + if ( autoContinue ) + { + Durango_ShowAccountPicker() + } + else + { + SetLaunchState( eLaunchState.WAIT_TO_CONTINUE, "", Localize( "#MAINMENU_SIGN_IN" ) ) + } + return + } + + bool isGuest = Durango_IsGuest() + PrintLaunchDebugVal( "isGuest", isGuest ) + if ( isGuest ) + { + if ( autoContinue ) + { + Durango_ShowAccountPicker() + } + else + { + SetLaunchState( eLaunchState.WAIT_TO_CONTINUE, Localize( "#GUESTS_NOT_SUPPORTED" ), Localize( "#MAINMENU_SIGN_IN" ) ) + } + return + } + #endif // DURANGO_PROG + + bool hasPermission = HasPermission() + PrintLaunchDebugVal( "hasPermission", hasPermission ) + if ( !hasPermission ) + { + #if DURANGO_PROG + if ( autoContinue ) + { + thread XB1_PermissionsDialog() + SetLaunchState( eLaunchState.WAIT_TO_CONTINUE, Localize( "#MULTIPLAYER_NOT_AVAILABLE" ), Localize( "#MAINMENU_CONTINUE" ) ) // TEMP + } + else + { + SetLaunchState( eLaunchState.WAIT_TO_CONTINUE, "", Localize( "#MAINMENU_SIGN_IN" ) ) + } + #else + SetLaunchState( eLaunchState.CANT_CONTINUE, Localize( "#MULTIPLAYER_NOT_AVAILABLE" ) ) + #endif + return + } + + //#if PS4_PROG + // bool hasPlus = Ps4_CheckPlus_Allowed() + // PrintLaunchDebugVal( "hasPlus", hasPlus ) + // + // if ( !hasPlus ) + // { + // Ps4_CheckPlus_Schedule() + // #if SPINNER_DEBUG_INFO + // SetSpinnerDebugInfo( "Ps4_CheckPlus_Running" ) + // #endif + // while ( Ps4_CheckPlus_Running() ) + // WaitFrame() + // hasPlus = Ps4_CheckPlus_Allowed() + // PrintLaunchDebugVal( "hasPlus", hasPlus ) + // + // if ( !hasPlus ) + // { + // if ( Ps4_CheckPlus_GetLastRequestResults() != 0 ) + // { + // SetLaunchState( eLaunchState.WAIT_TO_CONTINUE, Localize( "#PSN_HAD_ERROR" ), Localize( "#MAINMENU_RETRY" ) ) + // return + // } + // + // if ( autoContinue ) + // thread PS4_PlusSignUp() + // else + // SetLaunchState( eLaunchState.WAIT_TO_CONTINUE, "", Localize( "#MAINMENU_CONTINUE" ) ) + // return + // } + // } + //#endif // PS4_PROG + +#if SPINNER_DEBUG_INFO + SetSpinnerDebugInfo( "isAuthenticatedByStryder" ) +#endif + float startTime = Time() + while ( true ) + { + bool isAuthenticatedByStryder = IsStryderAuthenticated() + //PrintLaunchDebugVal( "isAuthenticatedByStryder", isAuthenticatedByStryder ) + + if ( isAuthenticatedByStryder ) + break + if ( Time() - startTime > 10.0 ) + { + SetLaunchState( eLaunchState.WAIT_TO_CONTINUE, Localize( "#ORIGIN_IS_OFFLINE" ), Localize( "#MAINMENU_RETRY" ) ) + return + } + + WaitFrame() + } + + bool isMPAllowedByStryder = IsStryderAllowingMP() + PrintLaunchDebugVal( "isMPAllowedByStryder", isMPAllowedByStryder ) + if ( !isMPAllowedByStryder ) + { + SetLaunchState( eLaunchState.WAIT_TO_CONTINUE, Localize( "#MULTIPLAYER_NOT_AVAILABLE" ), Localize( "#MAINMENU_RETRY" ) ) + return + } + + #if CONSOLE_PROG + bool isNucleusRequired = Nucleussdk_is_required() + bool isNucleusLoggedIn = Nucleussdk_is_loggedin() + PrintLaunchDebugVal( "isNucleusRequired", isNucleusRequired ) + PrintLaunchDebugVal( "isNucleusLoggedIn", isNucleusLoggedIn ) + if ( isNucleusRequired && !isNucleusLoggedIn ) + { + if ( autoContinue ) + thread NucleusLogin() + else + SetLaunchState( eLaunchState.WAIT_TO_CONTINUE, "", Localize( "#MAINMENU_CONTINUE" ) ) + return + } + #endif // CONSOLE_PROG if ( autoContinue ) LaunchMP() @@ -328,18 +614,6 @@ void function StartSearchForPartyServer() UpdateFooterOptions() thread SearchForPartyServerTimeout() - - thread LaunchR5RLobby( isLeavingMatch ? 0.0 : 1.0 ) -} - -void function LaunchR5RLobby( float delay = 0.0 ) -{ - if( delay > 0 ) - wait delay - - CreateServer( "Lobby VM", "", "mp_lobby", "menufall", eServerVisibility.OFFLINE ) - - isLeavingMatch = false } diff --git a/vscripts/ui/panel_quip_intro.nut b/vscripts/ui/panel_quip_intro.nut index 7495dd442..85d3d058c 100644 --- a/vscripts/ui/panel_quip_intro.nut +++ b/vscripts/ui/panel_quip_intro.nut @@ -21,9 +21,9 @@ void function InitIntroQuipsPanel( var panel ) AddPanelFooterOption( panel, LEFT, BUTTON_B, true, "#B_BUTTON_BACK", "#B_BUTTON_BACK" ) AddPanelFooterOption( panel, LEFT, BUTTON_A, false, "#A_BUTTON_SELECT", "", null, CustomizeMenus_IsFocusedItem ) - AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_UNLOCK_LEGEND", "#X_BUTTON_UNLOCK_LEGEND", null, CustomizeMenus_IsFocusedItemParentItemLocked ) + //AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_UNLOCK_LEGEND", "#X_BUTTON_UNLOCK_LEGEND", null, CustomizeMenus_IsFocusedItemParentItemLocked ) AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_EQUIP", "#X_BUTTON_EQUIP", null, CustomizeMenus_IsFocusedItemEquippable ) - AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_UNLOCK", "#X_BUTTON_UNLOCK", null, CustomizeMenus_IsFocusedItemLocked ) + //AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_UNLOCK", "#X_BUTTON_UNLOCK", null, CustomizeMenus_IsFocusedItemLocked ) //AddPanelFooterOption( panel, LEFT, BUTTON_DPAD_LEFT, false, "#TRIGGERS_CHANGE_LEGEND", "", CustomizeCharacterMenu_PrevButton_OnActivate ) //AddPanelFooterOption( panel, LEFT, BUTTON_DPAD_RIGHT, false, "", "", CustomizeCharacterMenu_NextButton_OnActivate ) //AddPanelFooterOption( panel, LEFT, BUTTON_TRIGGER_LEFT, false, "", "", CustomizeCharacterMenu_PrevButton_OnActivate ) @@ -67,6 +67,8 @@ void function IntroQuipsPanel_Update( var panel ) LoadoutEntry entry = Loadout_CharacterIntroQuip( GetTopLevelCustomizeContext() ) file.quipList = GetLoadoutItemsSortedForMenu( entry, CharacterIntroQuip_GetSortOrdinal ) + file.quipList = [file.quipList[0]] + Hud_InitGridButtons( file.listPanel, file.quipList.len() ) foreach ( int flavIdx, ItemFlavor flav in file.quipList ) { diff --git a/vscripts/ui/panel_quip_kill.nut b/vscripts/ui/panel_quip_kill.nut index e77d3076d..84fc385ca 100644 --- a/vscripts/ui/panel_quip_kill.nut +++ b/vscripts/ui/panel_quip_kill.nut @@ -21,9 +21,9 @@ void function InitKillQuipsPanel( var panel ) AddPanelFooterOption( panel, LEFT, BUTTON_B, true, "#B_BUTTON_BACK", "#B_BUTTON_BACK" ) AddPanelFooterOption( panel, LEFT, BUTTON_A, false, "#A_BUTTON_SELECT", "", null, CustomizeMenus_IsFocusedItem ) - AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_UNLOCK_LEGEND", "#X_BUTTON_UNLOCK_LEGEND", null, CustomizeMenus_IsFocusedItemParentItemLocked ) + //AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_UNLOCK_LEGEND", "#X_BUTTON_UNLOCK_LEGEND", null, CustomizeMenus_IsFocusedItemParentItemLocked ) AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_EQUIP", "#X_BUTTON_EQUIP", null, CustomizeMenus_IsFocusedItemEquippable ) - AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_UNLOCK", "#X_BUTTON_UNLOCK", null, CustomizeMenus_IsFocusedItemLocked ) + //AddPanelFooterOption( panel, LEFT, BUTTON_X, false, "#X_BUTTON_UNLOCK", "#X_BUTTON_UNLOCK", null, CustomizeMenus_IsFocusedItemLocked ) //AddPanelFooterOption( panel, LEFT, BUTTON_DPAD_LEFT, false, "#TRIGGERS_CHANGE_LEGEND", "", CustomizeCharacterMenu_PrevButton_OnActivate ) //AddPanelFooterOption( panel, LEFT, BUTTON_DPAD_RIGHT, false, "", "", CustomizeCharacterMenu_NextButton_OnActivate ) //AddPanelFooterOption( panel, LEFT, BUTTON_TRIGGER_LEFT, false, "", "", CustomizeCharacterMenu_PrevButton_OnActivate ) @@ -67,6 +67,8 @@ void function KillQuipsPanel_Update( var panel ) LoadoutEntry entry = Loadout_CharacterKillQuip( GetTopLevelCustomizeContext() ) file.quipList = GetLoadoutItemsSortedForMenu( entry, CharacterIntroQuip_GetSortOrdinal ) + file.quipList = [file.quipList[0]] + Hud_InitGridButtons( file.listPanel, file.quipList.len() ) foreach ( int flavIdx, ItemFlavor flav in file.quipList ) { diff --git a/vscripts/ui/panel_weapon_skins.nut b/vscripts/ui/panel_weapon_skins.nut index 4360b40ef..e430fd219 100644 --- a/vscripts/ui/panel_weapon_skins.nut +++ b/vscripts/ui/panel_weapon_skins.nut @@ -287,6 +287,7 @@ void function WeaponSkinsPanel_Update( var panel )// TODO: IMPLEMENT entry = Loadout_WeaponSkin( file.currentWeapon ) pd.weaponSkinList = GetLoadoutItemsSortedForMenu( entry, WeaponSkin_GetSortOrdinal ) FilterWeaponSkinList( pd.weaponSkinList ) + pd.weaponSkinList = [pd.weaponSkinList[0]] itemList = pd.weaponSkinList previewFunc = PreviewWeaponSkin confirmationFunc = null diff --git a/vscripts/ui/sh_tooltips.nut b/vscripts/ui/sh_tooltips.nut index da9eee575..439178768 100644 --- a/vscripts/ui/sh_tooltips.nut +++ b/vscripts/ui/sh_tooltips.nut @@ -281,6 +281,7 @@ void function UpdateToolTipElement( var toolTipElement, var focusElement ) case eCommsAction.INVENTORY_NEED_AMMO_SPECIAL: case eCommsAction.INVENTORY_NEED_AMMO_HIGHCAL: case eCommsAction.INVENTORY_NEED_AMMO_SHOTGUN: + case eCommsAction.INVENTORY_NEED_AMMO_SNIPER: dt.commsPromptDefault = IsControllerModeActive() ? "#PING_PROMPT_REQUEST_AMMO_GAMEPAD" : "#PING_PROMPT_REQUEST_AMMO" } diff --git a/vscripts/ui/ui_utility.gnut b/vscripts/ui/ui_utility.gnut index dc6e17818..ea293d187 100644 --- a/vscripts/ui/ui_utility.gnut +++ b/vscripts/ui/ui_utility.gnut @@ -63,26 +63,26 @@ void function UtilityUI_Init() float function ContentScaledX( int val ) { - return (val * GetContentScaleFactor( GetMenu( "MainMenu" ) ).x) + return (val * GetContentScaleFactor( GetMenu( "R5RMainMenu" ) ).x) } float function ContentScaledY( int val ) { - return (val * GetContentScaleFactor( GetMenu( "MainMenu" ) ).y) + return (val * GetContentScaleFactor( GetMenu( "R5RMainMenu" ) ).y) } int function ContentScaledXAsInt( int val ) { - float fVal = val * GetContentScaleFactor( GetMenu( "MainMenu" ) ).x + float fVal = val * GetContentScaleFactor( GetMenu( "R5RMainMenu" ) ).x return int( fVal + 0.5 ) } int function ContentScaledYAsInt( int val ) { - float fVal = val * GetContentScaleFactor( GetMenu( "MainMenu" ) ).y + float fVal = val * GetContentScaleFactor( GetMenu( "R5RMainMenu" ) ).y return int( fVal + 0.5 ) } From 510e2da0460872f3a813fed7d4a7a028403f9b4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caf=C3=A9DeColombiaFPS?= <92343247+ColombianGuy@users.noreply.github.com> Date: Wed, 3 May 2023 18:58:19 -0500 Subject: [PATCH 07/17] Update _bleedout.gnut --- vscripts/mp/_bleedout.gnut | 86 ++++++++++++++++++++++++++------------ 1 file changed, 59 insertions(+), 27 deletions(-) diff --git a/vscripts/mp/_bleedout.gnut b/vscripts/mp/_bleedout.gnut index f529b1aaf..168b639f4 100644 --- a/vscripts/mp/_bleedout.gnut +++ b/vscripts/mp/_bleedout.gnut @@ -52,7 +52,9 @@ void function Bleedout_Init() AddCallback_OnClientConnected( Bleedout_OnClientConnected ) AddCallback_OnClientDisconnected( Bleedout_OnClientDisconnected ) - AddCallback_OnPlayerKilled( Bleedout_OnPlayerKilled ) + + if(GameRules_GetGameMode() == SURVIVAL) //FIXME + AddCallback_OnPlayerKilled( Bleedout_OnPlayerKilled ) PrecacheParticleSystem( FX_BLOODTRAIL ) PrecacheParticleSystem( $"P_drone_medic_shield_beam" ) @@ -133,12 +135,12 @@ void function Bleedout_StartPlayerBleedout( entity player, entity attacker ) file.lastAttacker[ player ] = attacker thread Bleedout_DeathProtection( player ) - SetPlayerEliminated( player ) + + if(GameRules_GetGameMode() != "fs_duckhunt") + SetPlayerEliminated( player ) + player.SetPlayerNetInt( "bleedoutType", EquipmentSlot_GetEquipmentTier( player, "incapshield" ) ) player.SetHealth( 100 ) - - if( PlayerHasPassive( player, ePassives.PAS_SELF_REVIVE ) ) - player.SetPlayerNetBool( "usedSelfRevive", false ) if( IsValid( attacker ) && attacker.IsPlayer() ) EmitSoundOnEntityExceptToPlayer( player, attacker, "flesh_bulletimpact_downedshot_3p_vs_3p" ) @@ -158,7 +160,7 @@ void function Bleedout_StartPlayerBleedout( entity player, entity attacker ) if ( Bleedout_GetSelfResEnabled( player ) ) thread EnablePlayerSelfRes( player ) - if ( Bleedout_GetDeathOnTeamBleedout( player ) ) + if ( Bleedout_GetDeathOnTeamBleedout( player ) && GameRules_GetGameMode() != "fs_duckhunt" ) //FIXME thread Bleedout_CheckForTeamBleedout( player ) TrackingVision_CreatePOI( eTrackingVisionNetworkedPOITypes.PLAYER_STARTBLEEDOUT, player, player.GetOrigin(), player.GetTeam(), player ) @@ -168,9 +170,10 @@ void function Bleedout_StartPlayerBleedout( entity player, entity attacker ) void function Bleedout_DeathProtection( entity player ) { - MakeInvincible(player) + if (IsValid(player)) + MakeInvincible(player) wait 1.05 - if(IsValid(player)) + if (IsValid(player)) ClearInvincible(player) } @@ -224,13 +227,10 @@ void function PlayerDying( entity player ) player.SetUseDoomedAnims(true) player.ForceCrouch() player.SetOneHandedWeaponUsageOn() - float bleedoutEndTime = Time() + bleedoutTime - - WaitFrame() //This is needed so we can change killshot damage to remaining health (bleethrough perfection) - if(!IsValid(player)) return - - player.SetHealth( 100 ) BleedoutState_SetPlayerBleedoutState( player, BS_BLEEDING_OUT ) + + float bleedoutEndTime = Time() + bleedoutTime + entity bleedoutWp = CreateWaypoint_Bleedout( player, bleedoutEndTime ) player.SetPlayerNetTime( "bleedoutEndTime", bleedoutEndTime ) @@ -259,8 +259,6 @@ void function PlayerDying( entity player ) { if ( IsValid( player ) ) { - BleedoutState_SetPlayerBleedoutState( player, BS_NOT_BLEEDING_OUT ) - foreach ( id in ids ) StatusEffect_Stop( player, id ) @@ -278,6 +276,8 @@ void function PlayerDying( entity player ) player.SetOneHandedWeaponUsageOff() //Remote_CallFunction_NonReplay( player, "ServerCallback_BLEEDOUT_PlayerRevivedDOF" ) + BleedoutState_SetPlayerBleedoutState( player, BS_NOT_BLEEDING_OUT ) + DeleteWaypoint_Safe( player, bleedoutWp ) if ( forceHolster ) @@ -522,8 +522,18 @@ void function PlayerAttemptRes( entity playerHealer, entity playerToRes ) if ( selfRes ) healerAnimation = "mp_pt_" + toResRigWeight + "_self_revive_crouch" - + + float playbackRate = 1.0 + + float firstAidTime = playerHealer.GetSequenceDuration( healerAnimation ) + + if(GameRules_GetGameMode() == "fs_duckhunt") + { + playbackRate = 1.35 + firstAidTime = firstAidTime*0.65 + } + float firstAidHealPercent = Bleedout_GetFirstAidHealPercent( playerHealer ) float endTime = Time() + firstAidTime @@ -560,8 +570,7 @@ void function PlayerAttemptRes( entity playerHealer, entity playerToRes ) file.IsGivingFirstAidTo[ playerHealer ] = null DestroyPlayAnimationEntityBlocker( playerHealer ) playerHealer.Anim_Stop() - playerHealer.ClearParent() - // playerHealer.SnapEyesToFeet() //idk + playerHealer.ClearParent() ClearPlayerAnimViewEntity( playerHealer ) DeployAndEnableWeapons( playerHealer ) playerHealer.MovementEnable() @@ -581,13 +590,21 @@ void function PlayerAttemptRes( entity playerHealer, entity playerToRes ) if ( !file.isBleeding[ playerToRes ] ) { - playerToRes.ForceStand() - // hack thread function() : ( playerToRes ) { - wait 0.1 + if(!IsValid(playerToRes)) return + playerToRes.ForceStand() + WaitFrame() + if(!IsValid(playerToRes)) return playerToRes.UnforceStand() + + if(GameRules_GetGameMode() == "fs_duckhunt") + { + Highlight_SetFriendlyHighlight( playerToRes, "prophunt_teammate" ) + GivePassive(playerToRes, ePassives.PAS_PILOT_BLOOD) + } + BleedoutState_SetPlayerBleedoutState( playerToRes, BS_NOT_BLEEDING_OUT ) }() } } @@ -605,7 +622,7 @@ void function PlayerAttemptRes( entity playerHealer, entity playerToRes ) reviverSequence.useAnimatedRefAttachment = false reviverSequence.thirdPersonCameraAttachments = ["VDU"] reviverSequence.thirdPersonCameraVisibilityChecks = true - reviverSequence.playerPushable = false + reviverSequence.playerPushable = true reviverSequence.snapPlayerFeetToEyes = false FirstPersonSequenceStruct toResSequence @@ -631,14 +648,19 @@ void function PlayerAttemptRes( entity playerHealer, entity playerToRes ) PlayBattleChatterLineToSpeakerAndTeam( playerHealer, "bc_revivingPlayer" ) thread FirstPersonSequence( toResSequence, playerToRes, playerHealer ) } - + + if(playbackRate != 1.0) + { + playerHealer.Anim_SetPlaybackRate(playbackRate) + playerToRes.Anim_SetPlaybackRate(playbackRate) + } waitthread TrackContinuousUse( playerHealer, playerToRes, firstAidTime, true ) //Heal player health playerToRes.SetHealth( playerToRes.GetMaxHealth() * firstAidHealPercent ) file.isBleeding[ playerToRes ] = false file.lastAttacker[ playerToRes ] = svGlobal.worldspawn - if ( IsPilotEliminationBased() ) + if ( IsPilotEliminationBased() && GameRules_GetGameMode() != "fs_duckhunt" ) ClearPlayerEliminated( playerToRes ) if ( IsValid( file.Callback_OnPlayerGiveFirstAid ) ) @@ -684,12 +706,22 @@ void function PlayerDiesFromBleedout( entity player, entity attacker ) { if ( IsValid( attacker ) ) { - player.Die( attacker, attacker, { damageSourceId = eDamageSourceId.bleedout } ) + try{ + player.Die( attacker, attacker, { damageSourceId = eDamageSourceId.bleedout } ) //player.BecomeRagdoll( Vector(0,0,0), false ) + }catch(e420) + { + printt("Was not fixed, debug this asap") + } } else { - player.Die( svGlobal.worldspawn, svGlobal.worldspawn, { damageSourceId = eDamageSourceId.bleedout } ) + try{ + player.Die( svGlobal.worldspawn, svGlobal.worldspawn, { damageSourceId = eDamageSourceId.bleedout } ) + }catch(e420) + { + printt("Was not fixed, debug this asap 2") + } //player.BecomeRagdoll( Vector(0,0,0), false ) } From 7f1850086ce1961457a67707b5bbe4e551857e07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caf=C3=A9DeColombiaFPS?= <92343247+ColombianGuy@users.noreply.github.com> Date: Thu, 4 May 2023 11:40:41 -0500 Subject: [PATCH 08/17] merge movement gym client modifications and update gamemodes ui --- vscripts/_entitystructs.gnut | 3 + vscripts/_remote_functions_mp.gnut | 15 +- vscripts/cl_mapspawn.gnut | 7 +- vscripts/client/cl_gamestate.gnut | 20 +- vscripts/client/cl_utility.gnut | 2 +- .../fs_movementgym}/_movement_gym.nut | 643 +++++++----------- .../fs_movementgym/cl_movement_gym.nut | 354 ++++++++++ vscripts/gamemodes/fs_tdm/_gamemode_fsdm.nut | 394 ++++++----- .../gamemodes/fs_tdm/sh_gamemode_fsdm.nut | 162 ++--- vscripts/scripts.rson | 3 +- vscripts/sh_playlists.gnut | 16 +- vscripts/ui/CustomLobby/menu_main.nut | 2 +- vscripts/ui/menu_system.nut | 2 +- 13 files changed, 924 insertions(+), 699 deletions(-) rename vscripts/{custom_maps => gamemodes/fs_movementgym}/_movement_gym.nut (98%) create mode 100644 vscripts/gamemodes/fs_movementgym/cl_movement_gym.nut diff --git a/vscripts/_entitystructs.gnut b/vscripts/_entitystructs.gnut index 2a3a161c5..56dc90e89 100644 --- a/vscripts/_entitystructs.gnut +++ b/vscripts/_entitystructs.gnut @@ -737,6 +737,9 @@ global struct ServerPlayerStruct int currentMelee = 0 + bool speedometerVisible = true + bool movementOverlayVisible = true + //DeathRecap DeathRecapDamageData DeathRecap_DataToSend entity DeathRecap_PreviousShotWeapon = null diff --git a/vscripts/_remote_functions_mp.gnut b/vscripts/_remote_functions_mp.gnut index c397763f2..c7e8f9816 100644 --- a/vscripts/_remote_functions_mp.gnut +++ b/vscripts/_remote_functions_mp.gnut @@ -17,11 +17,24 @@ void function RemoteFunctions_Init_Begin() //Custom KillReplay Remote_RegisterClientFunction("ServerCallback_KillReplayHud_Activate") Remote_RegisterClientFunction("ServerCallback_KillReplayHud_Deactivate") - + //Custom gamemodes switch ( GameRules_GetGameMode() ) { case fs_dm: + //Movement Gym + if( FlowState_EnableMovementGym() ) + { + Remote_RegisterClientFunction("Cl_MovementGym_Init") + Remote_RegisterClientFunction("MG_StopWatch_toggle", "bool") + Remote_RegisterClientFunction("MG_StopWatch_Obituary", "int", 0, 9999, "entity", "int", 0, 9999) + Remote_RegisterClientFunction("MG_Speedometer_toggle", "bool") + Remote_RegisterClientFunction("MG_Checkpoint_Msg") + Remote_RegisterClientFunction("MG_MovementOverlay_toggle", "bool") + Remote_RegisterClientFunction("MG_Ultrakill_styleemeter_toggle", "bool") + break + } + Remote_RegisterClientFunction("ServerCallback_ToggleDotForHitscanWeapons", "bool") Remote_RegisterClientFunction("ServerCallback_SetLaserSightsOnSMGWeapon", "entity") Remote_RegisterClientFunction("ServerCallback_StopLaserSightsOnSMGWeapon", "entity") diff --git a/vscripts/cl_mapspawn.gnut b/vscripts/cl_mapspawn.gnut index 9c6d3290a..2e26ce163 100644 --- a/vscripts/cl_mapspawn.gnut +++ b/vscripts/cl_mapspawn.gnut @@ -129,8 +129,11 @@ void function ClientCodeCallback_MapSpawn() SV_CL_Shared_Init() - //for custom ui/textures - RequestPakFile( "ui_flowstate" ) + //for custom ui/textures by @CafeFPS + if(!IsLobby()) + { + RequestPakFile( "ui_flowstate" ) + } } diff --git a/vscripts/client/cl_gamestate.gnut b/vscripts/client/cl_gamestate.gnut index 69ca382b1..bddc65c88 100644 --- a/vscripts/client/cl_gamestate.gnut +++ b/vscripts/client/cl_gamestate.gnut @@ -148,7 +148,7 @@ void function SetCommonScoreRUIVars( var rui ) switch( GameRules_GetGameMode() ) { case "flowstate_infection": - RuiSetString( rui, "gameModeString", "APEX INFECTION" ) + RuiSetString( rui, "gameModeString", "FS INFECTED" ) RuiSetBool( rui, "shouldDisplayLivingPlayerCount", false ) RuiSetString( rui, "squadsRemainingTextSingular", "#SHADOW_SQUAD_PLAYERS_REMAIN" ) RuiSetString( rui, "squadsRemainingTextPlural", "#SHADOW_SQUAD_PLAYERS_REMAIN" ) @@ -157,7 +157,7 @@ void function SetCommonScoreRUIVars( var rui ) return case "fs_prophunt": - RuiSetString( rui, "gameModeString", "APEX PROPHUNT" ) + RuiSetString( rui, "gameModeString", "FS PROPHUNT" ) RuiSetBool( rui, "shouldDisplayLivingPlayerCount", false ) RuiSetString( rui, "squadsRemainingTextSingular", "PROP ALIVE" ) RuiSetString( rui, "squadsRemainingTextPlural", "PROPS ALIVE" ) @@ -165,7 +165,7 @@ void function SetCommonScoreRUIVars( var rui ) return case "fs_duckhunt": - RuiSetString( rui, "gameModeString", "APEX DUCK HUNT" ) + RuiSetString( rui, "gameModeString", "FS DUCKHUNT" ) RuiSetBool( rui, "shouldDisplayLivingPlayerCount", false ) RuiSetString( rui, "squadsRemainingTextSingular", "DUCK ALIVE" ) RuiSetString( rui, "squadsRemainingTextPlural", "DUCKS ALIVE" ) @@ -173,7 +173,7 @@ void function SetCommonScoreRUIVars( var rui ) return case "flowstate_snd": - RuiSetString( rui, "gameModeString", "SEARCH AND DESTROY" ) + RuiSetString( rui, "gameModeString", "FS SEARCH AND DESTROY" ) RuiSetBool( rui, "shouldDisplayLivingPlayerCount", false ) RuiSetString( rui, "squadsRemainingTextSingular", "ENEMY ALIVE" ) RuiSetString( rui, "squadsRemainingTextPlural", "ENEMIES ALIVE" ) @@ -203,11 +203,15 @@ void function SetCommonScoreRUIVars( var rui ) // if( GetCurrentPlaylistVarBool("flowstate_1v1mode", false) ) // RuiSetString( rui, "gameModeString", "APEX 1v1" ) - if(GameRules_GetGameMode() == "fs_dm" && !GetCurrentPlaylistVarBool( "flowstate_hackersVsPros", false )) - RuiSetString( rui, "gameModeString", "APEX DM" ) - else if(GameRules_GetGameMode() == "fs_dm" && GetCurrentPlaylistVarBool( "flowstate_hackersVsPros", false )) + if(GameRules_GetGameMode() == "fs_dm" && !GetCurrentPlaylistVarBool( "flowstate_hackersVsPros", false ) && GetCurrentPlaylistName() != "fs_movementgym" && GetCurrentPlaylistName() != "fs_1v1") + RuiSetString( rui, "gameModeString", "FS DEATHMATCH" ) + else if(GameRules_GetGameMode() == "fs_dm" && GetCurrentPlaylistVarBool( "flowstate_hackersVsPros", false ) && GetCurrentPlaylistName() != "fs_movementgym" && GetCurrentPlaylistName() != "fs_1v1") RuiSetString( rui, "gameModeString", "HACKERS VS PROS" ) - + else if(GetCurrentPlaylistName() == "fs_movementgym") + RuiSetString( rui, "gameModeString", "FS MOVEMENT GYM" ) + else if(GetCurrentPlaylistName() == "fs_1v1") + RuiSetString( rui, "gameModeString", "FS 1v1" ) + if(GameRules_GetGameMode() == "flowstate_pkknockback") { RuiSetString( rui, "squadsRemainingTextSingular", "PLAYER ALIVE" ) diff --git a/vscripts/client/cl_utility.gnut b/vscripts/client/cl_utility.gnut index caa38908c..2fddaeb4f 100644 --- a/vscripts/client/cl_utility.gnut +++ b/vscripts/client/cl_utility.gnut @@ -661,7 +661,7 @@ void function Dev_PrintClientMessage( float duration ) Announcement_SetTitleColor( announcement, Vector(0,0,0) ) } - if( GetCurrentPlaylistName() == "movement_gym" ) + if( GetCurrentPlaylistName() == "fs_movementgym" ) { Announcement_SetStyle(announcement, ANNOUNCEMENT_STYLE_SWEEP) Announcement_SetTitleColor( announcement, Vector(0,0,1) ) diff --git a/vscripts/custom_maps/_movement_gym.nut b/vscripts/gamemodes/fs_movementgym/_movement_gym.nut similarity index 98% rename from vscripts/custom_maps/_movement_gym.nut rename to vscripts/gamemodes/fs_movementgym/_movement_gym.nut index 0618e4dea..3cff2b641 100644 --- a/vscripts/custom_maps/_movement_gym.nut +++ b/vscripts/gamemodes/fs_movementgym/_movement_gym.nut @@ -16,6 +16,10 @@ function MovementGym() { // Commands AddClientCommandCallback("hub", ClientCommand_Hub) AddClientCommandCallback("invis", ClientCommand_invis) + AddClientCommandCallback("meter", ClientCommand_meter) + AddClientCommandCallback("keys", ClientCommand_keys) + + AddClientCommandCallback("spectate", ClientCommand_Spec) //Map init //PrecacheMovementGymProps() @@ -167,6 +171,9 @@ function PrecacheMovementGymProps() { PrecacheModel( $"mdl/desertlands/fence_large_concrete_metal_dirty_192_01.rmdl" ) PrecacheModel( $"mdl/desertlands/fence_large_concrete_metal_dirty_64_01.rmdl" ) PrecacheModel( $"mdl/industrial/landing_mat_metal_03_large.rmdl" ) + + PrecacheModel( $"mdl/fx/core_energy.rmdl" ) + } @@ -210,6 +217,7 @@ function ClientCommand_Hub(entity user, array < string > args) { user.p.allowCheckpoint = false user.p.currentCheckpoint = 0 //Reset Timer + Remote_CallFunction_NonReplay( user, "MG_StopWatch_toggle", false) user.p.isTimerActive = false user.p.startTime = 0 @@ -249,6 +257,72 @@ function ClientCommand_invis(entity user, array < string > args) { return true } + +//speedometer on/off +bool +function ClientCommand_meter(entity user, array < string > args) { + if( !IsValid(user) || args.len() == 0 ) + return false + + if(args[0] == "off"){ + if(user.p.speedometerVisible == true){ + Remote_CallFunction_NonReplay( user, "MG_Speedometer_toggle", false) + user.p.speedometerVisible = false + } + } + + if(args[0] == "on"){ + if(user.p.speedometerVisible == false){ + Remote_CallFunction_NonReplay( user, "MG_Speedometer_toggle", true) + user.p.speedometerVisible = true + } + } + + return true +} + + +//Movement Overlay on/off +bool +function ClientCommand_keys(entity user, array < string > args) { + if( !IsValid(user) || args.len() == 0 ) + return false + + if(args[0] == "off"){ + if(user.p.movementOverlayVisible == true){ + Remote_CallFunction_NonReplay( user, "MG_MovementOverlay_toggle", false) + user.p.movementOverlayVisible = false + } + } + + if(args[0] == "on"){ + if(user.p.movementOverlayVisible == false){ + Remote_CallFunction_NonReplay( user, "MG_MovementOverlay_toggle", true) + user.p.movementOverlayVisible = true + } + } + return true +} + +bool +function ClientCommand_Spec(entity user, array < string > args) { + if( !IsValid(user) || args.len() == 0 ) + return false + + if(args[0] == "off"){ + user.RemoveFromAllRealms() + user.AddToRealm(1) + ClientCommand_SpectateEnemies(user, args) + } + + if(args[0] == "on"){ + user.AddToAllRealms() + ClientCommand_SpectateEnemies(user, args) + + } + return true +} + //whacky glowy button entity function CreateSurfButton(vector pos, vector ang, string prompt) { @@ -266,6 +340,8 @@ function CreateSurfButton(vector pos, vector ang, string prompt) { return button } + + // ███ ███ █████ ██████ ███████ ███████ ██████ ███ ███ ███████ ███ ██ ████████ ███████ // ████ ████ ██ ██ ██ ██ ██ ██ ██ ████ ████ ██ ████ ██ ██ ██ // ██ ████ ██ ███████ ██████ ███████ █████ ██ ███ ██ ████ ██ █████ ██ ██ ██ ██ ███████ @@ -410,6 +486,9 @@ function MovementGym_Hub_Buttons() { MapEditor_CreateProp($"mdl/industrial/screwdriver_octane.rmdl", < 10517, 10181.96, -4230.4 > , < 0, -180, -90 > , true, 5000, -1, 4.98262) MapEditor_CreateProp($"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 10509, 10076.96, -4217.5 > , < 90, 0, 0 > , true, 5000, -1, 1.367478) MapEditor_CreateProp($"mdl/props/lifeline_needle/lifeline_needle.rmdl", < 10517.2, 9993.263, -4230.4 > , < 0, -90, -90 > , true, 5000, -1, 6.85924) + + MapEditor_CreateProp( $"mdl/fx/core_energy.rmdl", < -21600, 400, -26500 >, < 0, 0, 0 >, true, 50000, -1, 5.1 ) + foreach(entity ent in NoCollisionArray) ent.kv.solid = 0 @@ -927,44 +1006,50 @@ function MovementGym_Map1() { // Buttons AddCallback_OnUseEntity( CreateFRButton(< 5500.9, 9208.609, -688.353 >, < 0, -89.9998, 0 >, "%use% Back to start"), void function(entity panel, entity user, int input) { -EmitSoundOnEntityOnlyToPlayer( user, user, FIRINGRANGE_BUTTON_SOUND ) -TeleportFRPlayer(user,< 6961, 1147.7710, -1453 >,< 0, -89.9998, 0 >) -user.p.isTimerActive = false -user.p.startTime = 0 -user.p.currentCheckpoint = 1 + EmitSoundOnEntityOnlyToPlayer( user, user, FIRINGRANGE_BUTTON_SOUND ) + TeleportFRPlayer(user,< 6961, 1147.7710, -1453 >,< 0, -89.9998, 0 >) + user.p.isTimerActive = false + user.p.startTime = 0 + user.p.currentCheckpoint = 1 + Remote_CallFunction_NonReplay( user, "MG_StopWatch_toggle", false) }) AddCallback_OnUseEntity( CreateFRButton(< 5500.9, 9096.609, -688.353 >, < 0, -89.9998, 0 >, "%use% Back to Hub"), void function(entity panel, entity user, int input) { -EmitSoundOnEntityOnlyToPlayer( user, user, FIRINGRANGE_BUTTON_SOUND ) -TeleportFRPlayer(user,< 10646, 9925, -4283 >,< 0, -89.9998, 0 >) -Message(user, "Hub") -user.p.isTimerActive = false -user.p.startTime = 0 -user.p.allowCheckpoint = false + EmitSoundOnEntityOnlyToPlayer( user, user, FIRINGRANGE_BUTTON_SOUND ) + TeleportFRPlayer(user,< 10646, 9925, -4283 >,< 0, -89.9998, 0 >) + Message(user, "Hub") + user.p.isTimerActive = false + user.p.startTime = 0 + user.p.allowCheckpoint = false + Remote_CallFunction_NonReplay( user, "MG_StopWatch_toggle", false) }) AddCallback_OnUseEntity( CreateFRButton(< 6900.8, 1258.493, -1457 >, < 0, 0, 0 >, "%use% Back to Hub"), void function(entity panel, entity user, int input) { -EmitSoundOnEntityOnlyToPlayer( user, user, FIRINGRANGE_BUTTON_SOUND ) -TeleportFRPlayer(user,< 10646, 9925, -4283 >,< 0, -89.9998, 0 >) -Message(user, "Hub") -int reset = 0 -user.SetPersistentVar("gen", reset) + EmitSoundOnEntityOnlyToPlayer( user, user, FIRINGRANGE_BUTTON_SOUND ) + TeleportFRPlayer(user,< 10646, 9925, -4283 >,< 0, -89.9998, 0 >) + Message(user, "Hub") + user.p.isTimerActive = false + user.p.startTime = 0 + user.p.allowCheckpoint = false + Remote_CallFunction_NonReplay( user, "MG_StopWatch_toggle", false) }) AddCallback_OnUseEntity( CreateFRButton(< 6902.018, 1045, -1457 >, < 0, 179.9997, 0 >, "%use% Start Timer"), void function(entity panel, entity user, int input) { -//Start Timer Button + //Start Timer Button user.p.isTimerActive = true user.p.startTime = floor( Time() ).tointeger() + Remote_CallFunction_NonReplay( user, "MG_StopWatch_toggle", false) + Remote_CallFunction_NonReplay( user, "MG_StopWatch_toggle", true) Message(user, "Timer Started!" ) }) AddCallback_OnUseEntity( CreateFRButton(< 5330, 9154.7, -688.353 >, < 0, -89.9998, 0 >, "%use% Stop Timer"), void function(entity panel, entity user, int input) { -//Stop timer Button + //Stop timer Button if (user.p.isTimerActive == true) { user.p.finalTime = floor( Time() ).tointeger() - user.p.startTime @@ -986,6 +1071,12 @@ user.SetPersistentVar("gen", reset) user.p.isTimerActive = false user.p.startTime = 0 + Remote_CallFunction_NonReplay( user, "MG_StopWatch_toggle", false) + + //Send time to killfeed + foreach(entity sPlayer in GetPlayerArray()) + Remote_CallFunction_NonReplay( sPlayer, "MG_StopWatch_Obituary", seconds, user, 1) + } else { //Display player Time @@ -998,7 +1089,13 @@ user.SetPersistentVar("gen", reset) //Reset Timer user.p.isTimerActive = false user.p.startTime = 0 - } + + Remote_CallFunction_NonReplay( user, "MG_StopWatch_toggle", false) + + //Send time to killfeed + foreach(entity sPlayer in GetPlayerArray()) + Remote_CallFunction_NonReplay( sPlayer, "MG_StopWatch_Obituary", seconds, user, 1) + } } }) @@ -1108,18 +1205,10 @@ user.SetPersistentVar("gen", reset) if (IsValid(ent)){ if (ent.IsPlayer() && ent.GetPhysics() != MOVETYPE_NOCLIP){ int checkpointInThisTrigger = 2 - //show current time - if(ent.p.isTimerActive == true){ - ent.p.currentTime = floor( Time() ).tointeger() - ent.p.startTime - int seconds = ent.p.currentTime - if (seconds > 59){ - int minutes = seconds / 60 - int realseconds = seconds - (minutes * 60) - Message(ent, "Current Time: " + minutes + " minutes " + realseconds + " seconds " ) - } else { - Message(ent, "Current Time: " + seconds + " seconds" ) - } - } + + //show checkpoint msg + if(ent.p.currentCheckpoint != checkpointInThisTrigger) + Remote_CallFunction_NonReplay( ent, "MG_Checkpoint_Msg") //set checkpoint ent.p.currentCheckpoint = checkpointInThisTrigger @@ -1134,18 +1223,9 @@ if (IsValid(ent)){ if (IsValid(ent)){ if (ent.IsPlayer() && ent.GetPhysics() != MOVETYPE_NOCLIP){ int checkpointInThisTrigger = 3 - //show current time - if(ent.p.isTimerActive == true){ - ent.p.currentTime = floor( Time() ).tointeger() - ent.p.startTime - int seconds = ent.p.currentTime - if (seconds > 59){ - int minutes = seconds / 60 - int realseconds = seconds - (minutes * 60) - Message(ent, "Current Time: " + minutes + " minutes " + realseconds + " seconds " ) - } else { - Message(ent, "Current Time: " + seconds + " seconds" ) - } - } + //show checkpoint msg + if(ent.p.currentCheckpoint != checkpointInThisTrigger) + Remote_CallFunction_NonReplay( ent, "MG_Checkpoint_Msg") //set checkpoint ent.p.currentCheckpoint = checkpointInThisTrigger @@ -1160,18 +1240,9 @@ if (IsValid(ent)){ if (IsValid(ent)){ if (ent.IsPlayer() && ent.GetPhysics() != MOVETYPE_NOCLIP){ int checkpointInThisTrigger = 4 - //show current time - if(ent.p.isTimerActive == true){ - ent.p.currentTime = floor( Time() ).tointeger() - ent.p.startTime - int seconds = ent.p.currentTime - if (seconds > 59){ - int minutes = seconds / 60 - int realseconds = seconds - (minutes * 60) - Message(ent, "Current Time: " + minutes + " minutes " + realseconds + " seconds " ) - } else { - Message(ent, "Current Time: " + seconds + " seconds" ) - } - } + //show checkpoint msg + if(ent.p.currentCheckpoint != checkpointInThisTrigger) + Remote_CallFunction_NonReplay( ent, "MG_Checkpoint_Msg") //set checkpoint ent.p.currentCheckpoint = checkpointInThisTrigger @@ -1186,18 +1257,9 @@ if (IsValid(ent)){ if (IsValid(ent)){ if (ent.IsPlayer() && ent.GetPhysics() != MOVETYPE_NOCLIP){ int checkpointInThisTrigger = 1 - //show current time - if(ent.p.isTimerActive == true){ - ent.p.currentTime = floor( Time() ).tointeger() - ent.p.startTime - int seconds = ent.p.currentTime - if (seconds > 59){ - int minutes = seconds / 60 - int realseconds = seconds - (minutes * 60) - Message(ent, "Current Time: " + minutes + " minutes " + realseconds + " seconds " ) - } else { - Message(ent, "Current Time: " + seconds + " seconds" ) - } - } + //show checkpoint msg + if(ent.p.currentCheckpoint != checkpointInThisTrigger) + Remote_CallFunction_NonReplay( ent, "MG_Checkpoint_Msg") //set checkpoint ent.p.currentCheckpoint = checkpointInThisTrigger @@ -1212,18 +1274,9 @@ if (IsValid(ent)){ if (IsValid(ent)){ if (ent.IsPlayer() && ent.GetPhysics() != MOVETYPE_NOCLIP){ int checkpointInThisTrigger = 5 - //show current time - if(ent.p.isTimerActive == true){ - ent.p.currentTime = floor( Time() ).tointeger() - ent.p.startTime - int seconds = ent.p.currentTime - if (seconds > 59){ - int minutes = seconds / 60 - int realseconds = seconds - (minutes * 60) - Message(ent, "Current Time: " + minutes + " minutes " + realseconds + " seconds " ) - } else { - Message(ent, "Current Time: " + seconds + " seconds" ) - } - } + //show checkpoint msg + if(ent.p.currentCheckpoint != checkpointInThisTrigger) + Remote_CallFunction_NonReplay( ent, "MG_Checkpoint_Msg") //set checkpoint ent.p.currentCheckpoint = checkpointInThisTrigger @@ -1238,18 +1291,9 @@ if (IsValid(ent)){ if (IsValid(ent)){ if (ent.IsPlayer() && ent.GetPhysics() != MOVETYPE_NOCLIP){ int checkpointInThisTrigger = 8 - //show current time - if(ent.p.isTimerActive == true){ - ent.p.currentTime = floor( Time() ).tointeger() - ent.p.startTime - int seconds = ent.p.currentTime - if (seconds > 59){ - int minutes = seconds / 60 - int realseconds = seconds - (minutes * 60) - Message(ent, "Current Time: " + minutes + " minutes " + realseconds + " seconds " ) - } else { - Message(ent, "Current Time: " + seconds + " seconds" ) - } - } + //show checkpoint msg + if(ent.p.currentCheckpoint != checkpointInThisTrigger) + Remote_CallFunction_NonReplay( ent, "MG_Checkpoint_Msg") //set checkpoint ent.p.currentCheckpoint = checkpointInThisTrigger @@ -1264,18 +1308,9 @@ if (IsValid(ent)){ if (IsValid(ent)){ if (ent.IsPlayer() && ent.GetPhysics() != MOVETYPE_NOCLIP){ int checkpointInThisTrigger = 11 - //show current time - if(ent.p.isTimerActive == true){ - ent.p.currentTime = floor( Time() ).tointeger() - ent.p.startTime - int seconds = ent.p.currentTime - if (seconds > 59){ - int minutes = seconds / 60 - int realseconds = seconds - (minutes * 60) - Message(ent, "Current Time: " + minutes + " minutes " + realseconds + " seconds " ) - } else { - Message(ent, "Current Time: " + seconds + " seconds" ) - } - } + //show checkpoint msg + if(ent.p.currentCheckpoint != checkpointInThisTrigger) + Remote_CallFunction_NonReplay( ent, "MG_Checkpoint_Msg") //set checkpoint ent.p.currentCheckpoint = checkpointInThisTrigger @@ -1290,18 +1325,9 @@ if (IsValid(ent)){ if (IsValid(ent)){ if (ent.IsPlayer() && ent.GetPhysics() != MOVETYPE_NOCLIP){ int checkpointInThisTrigger = 12 - //show current time - if(ent.p.isTimerActive == true){ - ent.p.currentTime = floor( Time() ).tointeger() - ent.p.startTime - int seconds = ent.p.currentTime - if (seconds > 59){ - int minutes = seconds / 60 - int realseconds = seconds - (minutes * 60) - Message(ent, "Current Time: " + minutes + " minutes " + realseconds + " seconds " ) - } else { - Message(ent, "Current Time: " + seconds + " seconds" ) - } - } + //show checkpoint msg + if(ent.p.currentCheckpoint != checkpointInThisTrigger) + Remote_CallFunction_NonReplay( ent, "MG_Checkpoint_Msg") //set checkpoint ent.p.currentCheckpoint = checkpointInThisTrigger @@ -1316,18 +1342,9 @@ if (IsValid(ent)){ if (IsValid(ent)){ if (ent.IsPlayer() && ent.GetPhysics() != MOVETYPE_NOCLIP){ int checkpointInThisTrigger = 6 - //show current time - if(ent.p.isTimerActive == true){ - ent.p.currentTime = floor( Time() ).tointeger() - ent.p.startTime - int seconds = ent.p.currentTime - if (seconds > 59){ - int minutes = seconds / 60 - int realseconds = seconds - (minutes * 60) - Message(ent, "Current Time: " + minutes + " minutes " + realseconds + " seconds " ) - } else { - Message(ent, "Current Time: " + seconds + " seconds" ) - } - } + //show checkpoint msg + if(ent.p.currentCheckpoint != checkpointInThisTrigger) + Remote_CallFunction_NonReplay( ent, "MG_Checkpoint_Msg") //set checkpoint ent.p.currentCheckpoint = checkpointInThisTrigger @@ -1342,18 +1359,9 @@ if (IsValid(ent)){ if (IsValid(ent)){ if (ent.IsPlayer() && ent.GetPhysics() != MOVETYPE_NOCLIP){ int checkpointInThisTrigger = 7 - //show current time - if(ent.p.isTimerActive == true){ - ent.p.currentTime = floor( Time() ).tointeger() - ent.p.startTime - int seconds = ent.p.currentTime - if (seconds > 59){ - int minutes = seconds / 60 - int realseconds = seconds - (minutes * 60) - Message(ent, "Current Time: " + minutes + " minutes " + realseconds + " seconds " ) - } else { - Message(ent, "Current Time: " + seconds + " seconds" ) - } - } + //show checkpoint msg + if(ent.p.currentCheckpoint != checkpointInThisTrigger) + Remote_CallFunction_NonReplay( ent, "MG_Checkpoint_Msg") //set checkpoint ent.p.currentCheckpoint = checkpointInThisTrigger @@ -1368,18 +1376,9 @@ if (IsValid(ent)){ if (IsValid(ent)){ if (ent.IsPlayer() && ent.GetPhysics() != MOVETYPE_NOCLIP){ int checkpointInThisTrigger = 9 - //show current time - if(ent.p.isTimerActive == true){ - ent.p.currentTime = floor( Time() ).tointeger() - ent.p.startTime - int seconds = ent.p.currentTime - if (seconds > 59){ - int minutes = seconds / 60 - int realseconds = seconds - (minutes * 60) - Message(ent, "Current Time: " + minutes + " minutes " + realseconds + " seconds " ) - } else { - Message(ent, "Current Time: " + seconds + " seconds" ) - } - } + //show checkpoint msg + if(ent.p.currentCheckpoint != checkpointInThisTrigger) + Remote_CallFunction_NonReplay( ent, "MG_Checkpoint_Msg") //set checkpoint ent.p.currentCheckpoint = checkpointInThisTrigger @@ -1394,18 +1393,9 @@ if (IsValid(ent)){ if (IsValid(ent)){ if (ent.IsPlayer() && ent.GetPhysics() != MOVETYPE_NOCLIP){ int checkpointInThisTrigger = 10 - //show current time - if(ent.p.isTimerActive == true){ - ent.p.currentTime = floor( Time() ).tointeger() - ent.p.startTime - int seconds = ent.p.currentTime - if (seconds > 59){ - int minutes = seconds / 60 - int realseconds = seconds - (minutes * 60) - Message(ent, "Current Time: " + minutes + " minutes " + realseconds + " seconds " ) - } else { - Message(ent, "Current Time: " + seconds + " seconds" ) - } - } + //show checkpoint msg + if(ent.p.currentCheckpoint != checkpointInThisTrigger) + Remote_CallFunction_NonReplay( ent, "MG_Checkpoint_Msg") //set checkpoint ent.p.currentCheckpoint = checkpointInThisTrigger @@ -2011,6 +2001,10 @@ function MovementGym_Map2() { EmitSoundOnEntityOnlyToPlayer(user, user, FIRINGRANGE_BUTTON_SOUND) TeleportFRPlayer(user, < 10646, 9925, -4283 > , < 0, -89.9998, 0 > ) Message(user, "HUB", "\n You now recieved Phase Walk Tactical") + user.p.isTimerActive = false + user.p.startTime = 0 + user.p.allowCheckpoint = false + Remote_CallFunction_NonReplay( user, "MG_StopWatch_toggle", false) }) AddCallback_OnUseEntity( CreateFRButton(< 19589.47, -25748.59, 21876.2 >, < 0, -89.9992, 0 >, "%use% Start Timer"), void function(entity panel, entity user, int input) @@ -2019,6 +2013,8 @@ function MovementGym_Map2() { user.p.isTimerActive = true user.p.startTime = floor( Time() ).tointeger() Message(user, "Timer Started!" ) + Remote_CallFunction_NonReplay( user, "MG_StopWatch_toggle", false) + Remote_CallFunction_NonReplay( user, "MG_StopWatch_toggle", true) }) AddCallback_OnUseEntity( CreateFRButton(< 29284.57, -19512.01, 24886.57 >, < 0, 0, 0 >, "%use% Back to Hub"), void function(entity panel, entity user, int input) @@ -2029,16 +2025,18 @@ Message(user, "Hub") user.p.isTimerActive = false user.p.startTime = 0 user.p.allowCheckpoint = false +Remote_CallFunction_NonReplay( user, "MG_StopWatch_toggle", false) }) AddCallback_OnUseEntity( CreateFRButton(< 29172.57, -19512.01, 24886.57 >, < 0, 0, 0 >, "%use% Back to start"), void function(entity panel, entity user, int input) { -EmitSoundOnEntityOnlyToPlayer( user, user, FIRINGRANGE_BUTTON_SOUND ) -TeleportFRPlayer(user,< 19500.3000, -25867.7000, 21940 > , < 0, -89.9998, 0 >) -user.p.isTimerActive = false -user.p.startTime = 0 -user.p.currentCheckpoint = 1 + EmitSoundOnEntityOnlyToPlayer( user, user, FIRINGRANGE_BUTTON_SOUND ) + TeleportFRPlayer(user,< 19500.3000, -25867.7000, 21940 > , < 0, -89.9998, 0 >) + user.p.isTimerActive = false + user.p.startTime = 0 + user.p.currentCheckpoint = 1 + Remote_CallFunction_NonReplay( user, "MG_StopWatch_toggle", false) }) AddCallback_OnUseEntity( CreateFRButton(< 29226.47, -19618.21, 24886.57 >, < 0, 0, 0 >, "%use% Stop Timer"), void function(entity panel, entity user, int input) @@ -2065,6 +2063,12 @@ user.p.currentCheckpoint = 1 user.p.isTimerActive = false user.p.startTime = 0 + Remote_CallFunction_NonReplay( user, "MG_StopWatch_toggle", false) + + //Send time to killfeed + foreach(entity sPlayer in GetPlayerArray()) + Remote_CallFunction_NonReplay( sPlayer, "MG_StopWatch_Obituary", seconds, user, 1) + } else { //Display player Time @@ -2077,8 +2081,14 @@ user.p.currentCheckpoint = 1 //Reset Timer user.p.isTimerActive = false user.p.startTime = 0 + + Remote_CallFunction_NonReplay( user, "MG_StopWatch_toggle", false) + + //Send time to killfeed + foreach(entity sPlayer in GetPlayerArray()) + Remote_CallFunction_NonReplay( sPlayer, "MG_StopWatch_Obituary", seconds, user, 1) } -} + } }) @@ -2188,18 +2198,9 @@ user.p.currentCheckpoint = 1 if (IsValid(ent)){ if (ent.IsPlayer() && ent.GetPhysics() != MOVETYPE_NOCLIP){ int checkpointInThisTrigger = 2 - //show current time - if(ent.p.isTimerActive == true){ - ent.p.currentTime = floor( Time() ).tointeger() - ent.p.startTime - int seconds = ent.p.currentTime - if (seconds > 59){ - int minutes = seconds / 60 - int realseconds = seconds - (minutes * 60) - Message(ent, "Current Time: " + minutes + " minutes " + realseconds + " seconds " ) - } else { - Message(ent, "Current Time: " + seconds + " seconds" ) - } - } + //show checkpoint msg + if(ent.p.currentCheckpoint != checkpointInThisTrigger) + Remote_CallFunction_NonReplay( ent, "MG_Checkpoint_Msg") //set checkpoint ent.p.currentCheckpoint = checkpointInThisTrigger @@ -2533,18 +2534,9 @@ if (IsValid(ent)){ if (IsValid(ent)){ if (ent.IsPlayer() && ent.GetPhysics() != MOVETYPE_NOCLIP){ int checkpointInThisTrigger = 3 - //show current time - if(ent.p.isTimerActive == true){ - ent.p.currentTime = floor( Time() ).tointeger() - ent.p.startTime - int seconds = ent.p.currentTime - if (seconds > 59){ - int minutes = seconds / 60 - int realseconds = seconds - (minutes * 60) - Message(ent, "Current Time: " + minutes + " minutes " + realseconds + " seconds " ) - } else { - Message(ent, "Current Time: " + seconds + " seconds" ) - } - } + //show checkpoint msg + if(ent.p.currentCheckpoint != checkpointInThisTrigger) + Remote_CallFunction_NonReplay( ent, "MG_Checkpoint_Msg") //set checkpoint ent.p.currentCheckpoint = checkpointInThisTrigger @@ -2559,18 +2551,9 @@ if (IsValid(ent)){ if (IsValid(ent)){ if (ent.IsPlayer() && ent.GetPhysics() != MOVETYPE_NOCLIP){ int checkpointInThisTrigger = 4 - //show current time - if(ent.p.isTimerActive == true){ - ent.p.currentTime = floor( Time() ).tointeger() - ent.p.startTime - int seconds = ent.p.currentTime - if (seconds > 59){ - int minutes = seconds / 60 - int realseconds = seconds - (minutes * 60) - Message(ent, "Current Time: " + minutes + " minutes " + realseconds + " seconds " ) - } else { - Message(ent, "Current Time: " + seconds + " seconds" ) - } - } + //show checkpoint msg + if(ent.p.currentCheckpoint != checkpointInThisTrigger) + Remote_CallFunction_NonReplay( ent, "MG_Checkpoint_Msg") //set checkpoint ent.p.currentCheckpoint = checkpointInThisTrigger @@ -2585,18 +2568,9 @@ if (IsValid(ent)){ if (IsValid(ent)){ if (ent.IsPlayer() && ent.GetPhysics() != MOVETYPE_NOCLIP){ int checkpointInThisTrigger = 6 - //show current time - if(ent.p.isTimerActive == true){ - ent.p.currentTime = floor( Time() ).tointeger() - ent.p.startTime - int seconds = ent.p.currentTime - if (seconds > 59){ - int minutes = seconds / 60 - int realseconds = seconds - (minutes * 60) - Message(ent, "Current Time: " + minutes + " minutes " + realseconds + " seconds " ) - } else { - Message(ent, "Current Time: " + seconds + " seconds" ) - } - } + //show checkpoint msg + if(ent.p.currentCheckpoint != checkpointInThisTrigger) + Remote_CallFunction_NonReplay( ent, "MG_Checkpoint_Msg") //set checkpoint ent.p.currentCheckpoint = checkpointInThisTrigger @@ -2611,18 +2585,9 @@ if (IsValid(ent)){ if (IsValid(ent)){ if (ent.IsPlayer() && ent.GetPhysics() != MOVETYPE_NOCLIP){ int checkpointInThisTrigger = 7 - //show current time - if(ent.p.isTimerActive == true){ - ent.p.currentTime = floor( Time() ).tointeger() - ent.p.startTime - int seconds = ent.p.currentTime - if (seconds > 59){ - int minutes = seconds / 60 - int realseconds = seconds - (minutes * 60) - Message(ent, "Current Time: " + minutes + " minutes " + realseconds + " seconds " ) - } else { - Message(ent, "Current Time: " + seconds + " seconds" ) - } - } + //show checkpoint msg + if(ent.p.currentCheckpoint != checkpointInThisTrigger) + Remote_CallFunction_NonReplay( ent, "MG_Checkpoint_Msg") //set checkpoint ent.p.currentCheckpoint = checkpointInThisTrigger @@ -2637,18 +2602,9 @@ if (IsValid(ent)){ if (IsValid(ent)){ if (ent.IsPlayer() && ent.GetPhysics() != MOVETYPE_NOCLIP){ int checkpointInThisTrigger = 9 - //show current time - if(ent.p.isTimerActive == true){ - ent.p.currentTime = floor( Time() ).tointeger() - ent.p.startTime - int seconds = ent.p.currentTime - if (seconds > 59){ - int minutes = seconds / 60 - int realseconds = seconds - (minutes * 60) - Message(ent, "Current Time: " + minutes + " minutes " + realseconds + " seconds " ) - } else { - Message(ent, "Current Time: " + seconds + " seconds" ) - } - } + //show checkpoint msg + if(ent.p.currentCheckpoint != checkpointInThisTrigger) + Remote_CallFunction_NonReplay( ent, "MG_Checkpoint_Msg") //set checkpoint ent.p.currentCheckpoint = checkpointInThisTrigger @@ -2692,18 +2648,9 @@ if (IsValid(ent)){ if (IsValid(ent)){ if (ent.IsPlayer() && ent.GetPhysics() != MOVETYPE_NOCLIP){ int checkpointInThisTrigger = 10 - //show current time - if(ent.p.isTimerActive == true){ - ent.p.currentTime = floor( Time() ).tointeger() - ent.p.startTime - int seconds = ent.p.currentTime - if (seconds > 59){ - int minutes = seconds / 60 - int realseconds = seconds - (minutes * 60) - Message(ent, "Current Time: " + minutes + " minutes " + realseconds + " seconds " ) - } else { - Message(ent, "Current Time: " + seconds + " seconds" ) - } - } + //show checkpoint msg + if(ent.p.currentCheckpoint != checkpointInThisTrigger) + Remote_CallFunction_NonReplay( ent, "MG_Checkpoint_Msg") //set checkpoint ent.p.currentCheckpoint = checkpointInThisTrigger @@ -2800,18 +2747,9 @@ if (IsValid(ent)){ if (IsValid(ent)){ if (ent.IsPlayer() && ent.GetPhysics() != MOVETYPE_NOCLIP){ int checkpointInThisTrigger = 11 - //show current time - if(ent.p.isTimerActive == true){ - ent.p.currentTime = floor( Time() ).tointeger() - ent.p.startTime - int seconds = ent.p.currentTime - if (seconds > 59){ - int minutes = seconds / 60 - int realseconds = seconds - (minutes * 60) - Message(ent, "Current Time: " + minutes + " minutes " + realseconds + " seconds " ) - } else { - Message(ent, "Current Time: " + seconds + " seconds" ) - } - } + //show checkpoint msg + if(ent.p.currentCheckpoint != checkpointInThisTrigger) + Remote_CallFunction_NonReplay( ent, "MG_Checkpoint_Msg") //set checkpoint ent.p.currentCheckpoint = checkpointInThisTrigger @@ -2959,18 +2897,9 @@ if (IsValid(ent)){ if (IsValid(ent)){ if (ent.IsPlayer() && ent.GetPhysics() != MOVETYPE_NOCLIP){ int checkpointInThisTrigger = 5 - //show current time - if(ent.p.isTimerActive == true){ - ent.p.currentTime = floor( Time() ).tointeger() - ent.p.startTime - int seconds = ent.p.currentTime - if (seconds > 59){ - int minutes = seconds / 60 - int realseconds = seconds - (minutes * 60) - Message(ent, "Current Time: " + minutes + " minutes " + realseconds + " seconds " ) - } else { - Message(ent, "Current Time: " + seconds + " seconds" ) - } - } + //show checkpoint msg + if(ent.p.currentCheckpoint != checkpointInThisTrigger) + Remote_CallFunction_NonReplay( ent, "MG_Checkpoint_Msg") //set checkpoint ent.p.currentCheckpoint = checkpointInThisTrigger @@ -2985,18 +2914,9 @@ if (IsValid(ent)){ if (IsValid(ent)){ if (ent.IsPlayer() && ent.GetPhysics() != MOVETYPE_NOCLIP){ int checkpointInThisTrigger = 8 - //show current time - if(ent.p.isTimerActive == true){ - ent.p.currentTime = floor( Time() ).tointeger() - ent.p.startTime - int seconds = ent.p.currentTime - if (seconds > 59){ - int minutes = seconds / 60 - int realseconds = seconds - (minutes * 60) - Message(ent, "Current Time: " + minutes + " minutes " + realseconds + " seconds " ) - } else { - Message(ent, "Current Time: " + seconds + " seconds" ) - } - } + //show checkpoint msg + if(ent.p.currentCheckpoint != checkpointInThisTrigger) + Remote_CallFunction_NonReplay( ent, "MG_Checkpoint_Msg") //set checkpoint ent.p.currentCheckpoint = checkpointInThisTrigger @@ -3011,18 +2931,9 @@ if (IsValid(ent)){ if (IsValid(ent)){ if (ent.IsPlayer() && ent.GetPhysics() != MOVETYPE_NOCLIP){ int checkpointInThisTrigger = 12 - //show current time - if(ent.p.isTimerActive == true){ - ent.p.currentTime = floor( Time() ).tointeger() - ent.p.startTime - int seconds = ent.p.currentTime - if (seconds > 59){ - int minutes = seconds / 60 - int realseconds = seconds - (minutes * 60) - Message(ent, "Current Time: " + minutes + " minutes " + realseconds + " seconds " ) - } else { - Message(ent, "Current Time: " + seconds + " seconds" ) - } - } + //show checkpoint msg + if(ent.p.currentCheckpoint != checkpointInThisTrigger) + Remote_CallFunction_NonReplay( ent, "MG_Checkpoint_Msg") //set checkpoint ent.p.currentCheckpoint = checkpointInThisTrigger @@ -3037,18 +2948,9 @@ if (IsValid(ent)){ if (IsValid(ent)){ if (ent.IsPlayer() && ent.GetPhysics() != MOVETYPE_NOCLIP){ int checkpointInThisTrigger = 2 - //show current time - if(ent.p.isTimerActive == true){ - ent.p.currentTime = floor( Time() ).tointeger() - ent.p.startTime - int seconds = ent.p.currentTime - if (seconds > 59){ - int minutes = seconds / 60 - int realseconds = seconds - (minutes * 60) - Message(ent, "Current Time: " + minutes + " minutes " + realseconds + " seconds " ) - } else { - Message(ent, "Current Time: " + seconds + " seconds" ) - } - } + //show checkpoint msg + if(ent.p.currentCheckpoint != checkpointInThisTrigger) + Remote_CallFunction_NonReplay( ent, "MG_Checkpoint_Msg") //set checkpoint ent.p.currentCheckpoint = checkpointInThisTrigger @@ -6129,6 +6031,8 @@ function MovementGym_Surf_Kitsune_lvl1() { user.p.isTimerActive = true user.p.startTime = floor(Time()).tointeger() Message(user, "Timer Started!") + Remote_CallFunction_NonReplay( user, "MG_StopWatch_toggle", false) + Remote_CallFunction_NonReplay( user, "MG_StopWatch_toggle", true) }) AddCallback_OnUseEntity(CreateSurfButton( < -38593.7, -10285.93, 21306.73 > , < 0, 179.9999, 0 > , "%use% Back to Hub"), void @@ -6147,6 +6051,8 @@ function MovementGym_Surf_Kitsune_lvl1() { //Reset Timer user.p.isTimerActive = false user.p.startTime = 0 + + Remote_CallFunction_NonReplay( user, "MG_StopWatch_toggle", false) //Re-enable invis after surf user.p.isPlayerInvisAllowed = true @@ -6234,18 +6140,9 @@ function MovementGym_Surf_Kitsune_lvl1() { int previousCheckpoint = 3 int checkpointInThisTrigger = 4 - //show current time - if (ent.p.isTimerActive == true) { - ent.p.currentTime = floor(Time()).tointeger() - ent.p.startTime - int seconds = ent.p.currentTime - if (seconds > 59) { - int minutes = seconds / 60 - int realseconds = seconds - (minutes * 60) - Message(ent, "Current Time: " + minutes + " minutes " + realseconds + " seconds ") - } else { - Message(ent, "Current Time: " + seconds + " seconds") - } - } + //show checkpoint msg + if(ent.p.currentCheckpoint != checkpointInThisTrigger) + Remote_CallFunction_NonReplay( ent, "MG_Checkpoint_Msg") if (ent.p.currentCheckpoint == previousCheckpoint) { //set checkpoint @@ -6383,18 +6280,9 @@ function MovementGym_Surf_Kitsune_lvl2() { int previousCheckpoint = 4 int checkpointInThisTrigger = 5 - //show current time - if (ent.p.isTimerActive == true) { - ent.p.currentTime = floor(Time()).tointeger() - ent.p.startTime - int seconds = ent.p.currentTime - if (seconds > 59) { - int minutes = seconds / 60 - int realseconds = seconds - (minutes * 60) - Message(ent, "Current Time: " + minutes + " minutes " + realseconds + " seconds ") - } else { - Message(ent, "Current Time: " + seconds + " seconds") - } - } + //show checkpoint msg + if(ent.p.currentCheckpoint != checkpointInThisTrigger) + Remote_CallFunction_NonReplay( ent, "MG_Checkpoint_Msg") if (ent.p.currentCheckpoint == previousCheckpoint) { //set checkpoint @@ -6543,18 +6431,9 @@ function MovementGym_Surf_Kitsune_lvl3() { int previousCheckpoint = 5 int checkpointInThisTrigger = 6 - //show current time - if (ent.p.isTimerActive == true) { - ent.p.currentTime = floor(Time()).tointeger() - ent.p.startTime - int seconds = ent.p.currentTime - if (seconds > 59) { - int minutes = seconds / 60 - int realseconds = seconds - (minutes * 60) - Message(ent, "Current Time: " + minutes + " minutes " + realseconds + " seconds ") - } else { - Message(ent, "Current Time: " + seconds + " seconds") - } - } + //show checkpoint msg + if(ent.p.currentCheckpoint != checkpointInThisTrigger) + Remote_CallFunction_NonReplay( ent, "MG_Checkpoint_Msg") if (ent.p.currentCheckpoint == previousCheckpoint) { //set checkpoint @@ -6734,18 +6613,9 @@ function MovementGym_Surf_Kitsune_lvl4() { int previousCheckpoint = 6 int checkpointInThisTrigger = 7 - //show current time - if (ent.p.isTimerActive == true) { - ent.p.currentTime = floor(Time()).tointeger() - ent.p.startTime - int seconds = ent.p.currentTime - if (seconds > 59) { - int minutes = seconds / 60 - int realseconds = seconds - (minutes * 60) - Message(ent, "Current Time: " + minutes + " minutes " + realseconds + " seconds ") - } else { - Message(ent, "Current Time: " + seconds + " seconds") - } - } + //show checkpoint msg + if(ent.p.currentCheckpoint != checkpointInThisTrigger) + Remote_CallFunction_NonReplay( ent, "MG_Checkpoint_Msg") if (ent.p.currentCheckpoint == previousCheckpoint) { //set checkpoint @@ -6924,18 +6794,9 @@ function MovementGym_Surf_Kitsune_lvl5() { int previousCheckpoint = 7 int checkpointInThisTrigger = 8 - //show current time - if (ent.p.isTimerActive == true) { - ent.p.currentTime = floor(Time()).tointeger() - ent.p.startTime - int seconds = ent.p.currentTime - if (seconds > 59) { - int minutes = seconds / 60 - int realseconds = seconds - (minutes * 60) - Message(ent, "Current Time: " + minutes + " minutes " + realseconds + " seconds ") - } else { - Message(ent, "Current Time: " + seconds + " seconds") - } - } + //show checkpoint msg + if(ent.p.currentCheckpoint != checkpointInThisTrigger) + Remote_CallFunction_NonReplay( ent, "MG_Checkpoint_Msg") if (ent.p.currentCheckpoint == previousCheckpoint) { //set checkpoint @@ -7230,18 +7091,9 @@ function MovementGym_Surf_Kitsune_lvl6() { int previousCheckpoint = 8 int checkpointInThisTrigger = 9 - //show current time - if (ent.p.isTimerActive == true) { - ent.p.currentTime = floor(Time()).tointeger() - ent.p.startTime - int seconds = ent.p.currentTime - if (seconds > 59) { - int minutes = seconds / 60 - int realseconds = seconds - (minutes * 60) - Message(ent, "Current Time: " + minutes + " minutes " + realseconds + " seconds ") - } else { - Message(ent, "Current Time: " + seconds + " seconds") - } - } + //show checkpoint msg + if(ent.p.currentCheckpoint != checkpointInThisTrigger) + Remote_CallFunction_NonReplay( ent, "MG_Checkpoint_Msg") if (ent.p.currentCheckpoint == previousCheckpoint) { //set checkpoint @@ -7265,9 +7117,9 @@ function MovementGym_Surf_Kitsune_lvl7() { float rampr = 0.5 float rampg = 0.0 float rampb = 1.0 - float darkrampr = 1.0 - float darkrampg = 1.0 - float darkrampb = 1.0 + float darkrampr = 0.13 + float darkrampg = 0.0 + float darkrampb = 0.25 // Props Array array < entity > ClipArray; @@ -7857,6 +7709,12 @@ function MovementGym_Surf_Kitsune_lvl7() { //Reset Timer user.p.isTimerActive = false user.p.startTime = 0 + + Remote_CallFunction_NonReplay( user, "MG_StopWatch_toggle", false) + + //Send time to killfeed + foreach(entity sPlayer in GetPlayerArray()) + Remote_CallFunction_NonReplay( sPlayer, "MG_StopWatch_Obituary", seconds, user, 1) } else { @@ -7870,6 +7728,12 @@ function MovementGym_Surf_Kitsune_lvl7() { //Reset Timer user.p.isTimerActive = false user.p.startTime = 0 + + Remote_CallFunction_NonReplay( user, "MG_StopWatch_toggle", false) + + //Send time to killfeed + foreach(entity sPlayer in GetPlayerArray()) + Remote_CallFunction_NonReplay( sPlayer, "MG_StopWatch_Obituary", seconds, user, 1) } } }) @@ -7892,6 +7756,8 @@ function MovementGym_Surf_Kitsune_lvl7() { //Reset Timer ent.p.isTimerActive = false ent.p.startTime = 0 + + Remote_CallFunction_NonReplay( ent, "MG_StopWatch_toggle", false) //Re-enable invis after surf ent.p.isPlayerInvisAllowed = true @@ -7908,3 +7774,4 @@ function MovementGym_Surf_Kitsune_lvl7() { DispatchSpawn(trigger_0) } + diff --git a/vscripts/gamemodes/fs_movementgym/cl_movement_gym.nut b/vscripts/gamemodes/fs_movementgym/cl_movement_gym.nut new file mode 100644 index 000000000..064107dc0 --- /dev/null +++ b/vscripts/gamemodes/fs_movementgym/cl_movement_gym.nut @@ -0,0 +1,354 @@ +untyped + +globalize_all_functions + +bool kmh +float speedometer_hz +string time = "" + +// init +void function Cl_MovementGym_Init() +{ + entity player = GetLocalClientPlayer() + + // Get Movement Gym User Settings + speedometer_hz = 0.05 + kmh = true + + // Register Signals + RegisterSignal("StopStopWatch") + RegisterSignal("StopSpeedometer") + + // Hud + MG_Speedometer_toggle(true) + MG_MovementOverlay_toggle(true) +} + + +// StopWatch +void function MG_StopWatch_toggle(bool visible){ + if(visible == true) + thread MG_StopWatch() + else + MG_StopWatch_destroy() +} + +void function MG_StopWatch(){ + int startTime = floor( Time() ).tointeger() + entity player = GetLocalClientPlayer() + EndSignal(player, "StopStopWatch") + + Hud_SetVisible(HudElement( "MG_StopWatch_Frame" ), true) + Hud_SetVisible(HudElement( "MG_StopWatch_Icon" ), true) + Hud_SetVisible(HudElement( "MG_StopWatch_Label" ), true) + Hud_SetVisible(HudElement( "MG_StopWatch" ), true) + + while(true) + { + int currentTime = floor( Time() ).tointeger() - startTime + int seconds = currentTime + if (seconds > 59){ + int minutes = seconds / 60 + int realseconds = seconds - (minutes * 60) + if(realseconds > 9){ + time = minutes + ":" + realseconds + Hud_SetText( HudElement( "MG_StopWatch" ), time) + } else { + time = minutes + ":0" + realseconds + Hud_SetText( HudElement( "MG_StopWatch" ), time) + } + } else if (seconds > 9) { + time = "0:" + seconds + Hud_SetText( HudElement( "MG_StopWatch" ), time) + } else { + time = "0:0" + seconds + Hud_SetText( HudElement( "MG_StopWatch" ), time) + } + + wait 1 + } + +} + +void function MG_StopWatch_Obituary(int seconds, entity name, int map){ + if ( !GetLocalViewPlayer() ) + return + + int usertime = seconds + if (usertime > 59){ + int minutes = usertime / 60 + int realseconds = usertime - (minutes * 60) + if(realseconds > 9){ + time = minutes + ":" + realseconds + Obituary_Print_Localized( "%$rui/menu/store/feature_timer% " + name.GetPlayerName() + " has finished" + " Map " + map + " in " + time, GetChatTitleColorForPlayer( GetLocalViewPlayer() ), BURN_COLOR ) + } else { + time = minutes + ":0" + realseconds + Obituary_Print_Localized( "%$rui/menu/store/feature_timer% " + name.GetPlayerName() + " has finished" + " Map " + map + " in " + time, GetChatTitleColorForPlayer( GetLocalViewPlayer() ), BURN_COLOR ) + } + } else if (usertime > 9) { + time = "0:" + usertime + Obituary_Print_Localized( "%$rui/menu/store/feature_timer% " + name.GetPlayerName() + " has finished" + " Map " + map + " in " + time, GetChatTitleColorForPlayer( GetLocalViewPlayer() ), BURN_COLOR ) + } else { + time = "0:0" + usertime + Obituary_Print_Localized( "%$rui/menu/store/feature_timer% " + name.GetPlayerName() + " has finished" + " Map " + map + " in " + time, GetChatTitleColorForPlayer( GetLocalViewPlayer() ), BURN_COLOR ) + } +} + +void function MG_StopWatch_destroy(){ + entity player = GetLocalClientPlayer() + player.Signal("StopStopWatch") + Hud_SetVisible(HudElement( "MG_StopWatch" ), false) + Hud_SetVisible(HudElement( "MG_StopWatch_Frame" ), false) + Hud_SetVisible(HudElement( "MG_StopWatch_Icon" ), false) + Hud_SetVisible(HudElement( "MG_StopWatch_Label" ), false) +} + + +// Speedometer +void function MG_Speedometer_toggle(bool visible){ + if(visible == true) + thread MG_Speedometer() + else + MG_Speedometer_destroy() +} + +void function MG_Speedometer(){ + wait 5 + entity player = GetLocalClientPlayer() + EndSignal(player, "StopSpeedometer") + Hud_SetVisible(HudElement( "MG_Speedometer_Icon" ), true) + Hud_SetVisible(HudElement( "MG_Speedometer_kmh" ), true) + Hud_SetVisible(HudElement( "MG_Speedometer_mph" ), true) + + + switch (kmh) { + case true: + while(true){ + // Refresh every .2s + wait speedometer_hz + entity playerr = GetLocalClientPlayer() + if( !playerr.IsObserver()){ + if (IsValid(playerr)){ + //Speedometer + float playerVel + vector playerVelV = playerr.GetVelocity() + + playerVel = sqrt(playerVelV.x * playerVelV.x + playerVelV.y * playerVelV.y + playerVelV.z * playerVelV.z) + + float playerVelNormal = playerVel * (0.091392) //KM/H + + int playerVelNormalInt = playerVelNormal.tointeger() + + //Display Speed + Hud_SetText( HudElement( "MG_Speedometer_kmh" ), playerVelNormalInt.tostring() + " km/h") + } + } else if( playerr.IsObserver()){ + if (IsValid(playerr)){ + entity spectarget = playerr.GetObserverTarget() + if (IsValid(spectarget)){ + //Speedometer + float playerVel + vector playerVelV = spectarget.GetVelocity() + + playerVel = sqrt(playerVelV.x * playerVelV.x + playerVelV.y * playerVelV.y + playerVelV.z * playerVelV.z) + + float playerVelNormal = playerVel * (0.091392) //KM/H + + int playerVelNormalInt = playerVelNormal.tointeger() + + //Display Speed + Hud_SetText( HudElement( "MG_Speedometer_kmh" ), playerVelNormalInt.tostring() + " km/h") + } + } + } + } + break + case false: + while(true){ + // Refresh every .2s + wait speedometer_hz + entity playerr = GetLocalClientPlayer() + if( !playerr.IsObserver()){ + if (IsValid(playerr)){ + //Speedometer + float playerVel + vector playerVelV = playerr.GetVelocity() + + playerVel = sqrt(playerVelV.x * playerVelV.x + playerVelV.y * playerVelV.y + playerVelV.z * playerVelV.z) + + float playerVelNormal = playerVel * (0.091392) //KM/H + float playerVelBigMac = playerVelNormal * (0.621371) //MPH + + int playerVelNormalInt = playerVelNormal.tointeger() + int playerVelBigMacInt = playerVelBigMac.tointeger() + + //Display Speed + Hud_SetText( HudElement( "MG_Speedometer_kmh" ), playerVelBigMacInt.tostring() + " mph") + } + } else if( playerr.IsObserver()){ + if (IsValid(playerr)){ + entity spectarget = playerr.GetObserverTarget() + if (IsValid(spectarget)){ + //Speedometer + float playerVel + vector playerVelV = spectarget.GetVelocity() + + playerVel = sqrt(playerVelV.x * playerVelV.x + playerVelV.y * playerVelV.y + playerVelV.z * playerVelV.z) + + float playerVelNormal = playerVel * (0.091392) //KM/H + float playerVelBigMac = playerVelNormal * (0.621371) //MPH + + int playerVelNormalInt = playerVelNormal.tointeger() + int playerVelBigMacInt = playerVelBigMac.tointeger() + + //Display Speed + Hud_SetText( HudElement( "MG_Speedometer_kmh" ), playerVelBigMacInt.tostring() + " mph") + } + } + } + } + } +} + +void function MG_Speedometer_destroy(){ + entity player = GetLocalClientPlayer() + player.Signal("StopSpeedometer") + + Hud_SetVisible(HudElement( "MG_Speedometer_Icon" ), false) + Hud_SetVisible(HudElement( "MG_Speedometer_kmh" ), false) + Hud_SetVisible(HudElement( "MG_Speedometer_mph" ), false) +} + + + +// Send Checkpoint Set message +void function MG_Checkpoint_Msg(){ + + entity player = GetLocalClientPlayer() + AnnouncementData announcement = Announcement_Create( "Checkpoint!" ) + Announcement_SetHideOnDeath( announcement, false ) + Announcement_SetDuration( announcement, 3 ) + Announcement_SetPurge( announcement, true ) + + Announcement_SetStyle(announcement, ANNOUNCEMENT_STYLE_QUICK) + Announcement_SetTitleColor( announcement, Vector(0,0,1) ) + + AnnouncementFromClass( player, announcement ) +} + + + +//Movement WASD overlay +void function MG_MovementOverlay_toggle(bool visible){ + if(visible == true){ + Hud_SetVisible(HudElement( "MG_MO_W" ), true) + Hud_SetVisible(HudElement( "MG_MO_A" ), true) + Hud_SetVisible(HudElement( "MG_MO_S" ), true) + Hud_SetVisible(HudElement( "MG_MO_D" ), true) + Hud_SetVisible(HudElement( "MG_MO_CTRL" ), true) + Hud_SetVisible(HudElement( "MG_MO_SPACE" ), true) + + // W + RegisterButtonPressedCallback(KEY_W, MG_MovementOverlay_W_Pressed) + RegisterButtonReleasedCallback(KEY_W, MG_MovementOverlay_W_Released) + // A + RegisterButtonPressedCallback(KEY_A, MG_MovementOverlay_A_Pressed) + RegisterButtonReleasedCallback(KEY_A, MG_MovementOverlay_A_Released) + // S + RegisterButtonPressedCallback(KEY_S, MG_MovementOverlay_S_Pressed) + RegisterButtonReleasedCallback(KEY_S, MG_MovementOverlay_S_Released) + // D + RegisterButtonPressedCallback(KEY_D, MG_MovementOverlay_D_Pressed) + RegisterButtonReleasedCallback(KEY_D, MG_MovementOverlay_D_Released) + // CTRL + RegisterButtonPressedCallback(KEY_LCONTROL, MG_MovementOverlay_CTRL_Pressed) + RegisterButtonReleasedCallback(KEY_LCONTROL, MG_MovementOverlay_CTRL_Released) + // SPACE + RegisterButtonPressedCallback(KEY_SPACE, MG_MovementOverlay_SPACE_Pressed) + RegisterButtonReleasedCallback(KEY_SPACE, MG_MovementOverlay_SPACE_Released) + } else { + Hud_SetVisible(HudElement( "MG_MO_W" ), false) + Hud_SetVisible(HudElement( "MG_MO_A" ), false) + Hud_SetVisible(HudElement( "MG_MO_S" ), false) + Hud_SetVisible(HudElement( "MG_MO_D" ), false) + Hud_SetVisible(HudElement( "MG_MO_CTRL" ), false) + Hud_SetVisible(HudElement( "MG_MO_SPACE" ), false) + + // W + DeregisterButtonPressedCallback(KEY_W, MG_MovementOverlay_W_Pressed) + DeregisterButtonReleasedCallback(KEY_W, MG_MovementOverlay_W_Released) + // A + DeregisterButtonPressedCallback(KEY_A, MG_MovementOverlay_A_Pressed) + DeregisterButtonReleasedCallback(KEY_A, MG_MovementOverlay_A_Released) + // S + DeregisterButtonPressedCallback(KEY_S, MG_MovementOverlay_S_Pressed) + DeregisterButtonReleasedCallback(KEY_S, MG_MovementOverlay_S_Released) + // D + DeregisterButtonPressedCallback(KEY_D, MG_MovementOverlay_D_Pressed) + DeregisterButtonReleasedCallback(KEY_D, MG_MovementOverlay_D_Released) + // CTRL + DeregisterButtonPressedCallback(KEY_LCONTROL, MG_MovementOverlay_CTRL_Pressed) + DeregisterButtonReleasedCallback(KEY_LCONTROL, MG_MovementOverlay_CTRL_Released) + // SPACE + DeregisterButtonPressedCallback(KEY_SPACE, MG_MovementOverlay_SPACE_Pressed) + DeregisterButtonReleasedCallback(KEY_SPACE, MG_MovementOverlay_SPACE_Released) + } +} + +void function MG_MovementOverlay_W_Pressed(var button){ + Hud_SetText(HudElement( "MG_MO_W" ), "%W%") +} + +void function MG_MovementOverlay_W_Released(var button){ + Hud_SetText(HudElement( "MG_MO_W" ), "%$vgui/fonts/buttons/icon_unbound%") +} + +void function MG_MovementOverlay_A_Pressed(var button){ + Hud_SetText(HudElement( "MG_MO_A" ), "%A%") +} + +void function MG_MovementOverlay_A_Released(var button){ + Hud_SetText(HudElement( "MG_MO_A" ), "%$vgui/fonts/buttons/icon_unbound%") +} + +void function MG_MovementOverlay_S_Pressed(var button){ + Hud_SetText(HudElement( "MG_MO_S" ), "%S%") +} + +void function MG_MovementOverlay_S_Released(var button){ + Hud_SetText(HudElement( "MG_MO_S" ), "%$vgui/fonts/buttons/icon_unbound%") +} + +void function MG_MovementOverlay_D_Pressed(var button){ + Hud_SetText(HudElement( "MG_MO_D" ), "%D%") +} + +void function MG_MovementOverlay_D_Released(var button){ + Hud_SetText(HudElement( "MG_MO_D" ), "%$vgui/fonts/buttons/icon_unbound%") +} + +void function MG_MovementOverlay_CTRL_Pressed(var button){ + Hud_SetText(HudElement( "MG_MO_CTRL" ), "%LCTRL%") +} + +void function MG_MovementOverlay_CTRL_Released(var button){ + Hud_SetText(HudElement( "MG_MO_CTRL" ), " ") +} + +void function MG_MovementOverlay_SPACE_Pressed(var button){ + Hud_SetText(HudElement( "MG_MO_SPACE" ), "%SPACE%") +} + +void function MG_MovementOverlay_SPACE_Released(var button){ + Hud_SetText(HudElement( "MG_MO_SPACE" ), " ") +} + + +//Ultrakill stylemeter +void function MG_Ultrakill_styleemeter_toggle(bool visible){ + if(visible == true){ + //placeholder + } else { + //placeholder + } +} diff --git a/vscripts/gamemodes/fs_tdm/_gamemode_fsdm.nut b/vscripts/gamemodes/fs_tdm/_gamemode_fsdm.nut index dbd4cef96..d634dd712 100644 --- a/vscripts/gamemodes/fs_tdm/_gamemode_fsdm.nut +++ b/vscripts/gamemodes/fs_tdm/_gamemode_fsdm.nut @@ -31,6 +31,7 @@ global function GiveRandomSecondaryWeaponMetagame global function LoadCustomWeapon global function getkd +global function ClientCommand_SpectateEnemies global function ClientCommand_RebalanceTeams global function ClientCommand_FlowstateKick global function ClientCommand_ShowLatency @@ -44,6 +45,7 @@ global function SendScoreboardToClient const string WHITE_SHIELD = "armor_pickup_lv1" const string BLUE_SHIELD = "armor_pickup_lv2" const string PURPLE_SHIELD = "armor_pickup_lv3" +global bool VOTING_PHASE_ENABLE = true //TDM Saved Weapon List global table weaponlist @@ -97,7 +99,7 @@ struct { bool mapSkyToggle = false array allChatLines array battlelog - string authkey = "" + string authkey = "123" } file struct @@ -125,14 +127,22 @@ void function _CustomTDM_Init() else SetConVarBool("sv_forceChatToTeamOnly", true) - if (GetCurrentPlaylistName() != "movement_gym") + if (GetCurrentPlaylistName() != "fs_movementgym") SurvivalFreefall_Init() //Enables freefall/skydive PrecacheCustomMapsProps() PrecacheZeesMapProps() - if (GetCurrentPlaylistName() == "movement_gym") + if (GetCurrentPlaylistName() == "fs_movementgym") + { + VOTING_PHASE_ENABLE = false PrecacheMovementGymProps() + } + + if( GetCurrentPlaylistVarBool("flowstate_1v1mode", false) ) + { + VOTING_PHASE_ENABLE = false + } PrecacheDEAFPSMapProps() @@ -162,7 +172,7 @@ void function _CustomTDM_Init() } else{ AddClientCommandCallback("scoreboard", ClientCommand_Scoreboard) - if( GetCurrentPlaylistName() != "movement_gym" ){ + if( GetCurrentPlaylistName() != "fs_movementgym" ){ AddClientCommandCallback("spectate", ClientCommand_SpectateEnemies) } @@ -444,6 +454,7 @@ void function _OnPlayerConnected(entity player) Message(player, "Movement Gym", "Type 'commands' in console to see the available console commands. ", 10) player.SetPlayerNetBool( "pingEnabled", false ) player.AddToRealm(1) + Remote_CallFunction_NonReplay( player, "Cl_MovementGym_Init") } else Message(player, "FLOWSTATE: DM", "Type 'commands' in console to see the available console commands. ", 10) @@ -884,11 +895,22 @@ void function CheckForObservedTarget(entity player) player.p.lastFrameObservedTarget.SetPlayerNetInt( "playerObservedCount", max(0, player.p.lastFrameObservedTarget.GetPlayerNetInt( "playerObservedCount" ) - 1) ) player.p.lastFrameObservedTarget = null } + + if(!IsValid( player.GetObserverTarget() ) && GetGameState() == eGameState.Playing ) + { + player.p.isSpectating = false + player.SetPlayerNetInt( "spectatorTargetCount", 0 ) + player.SetSpecReplayDelay( 0 ) + player.SetObserverTarget( null ) + player.StopObserverMode() + player.p.lastTimeSpectateUsed = Time() + _HandleRespawn( player ) + } } ) entity observerTarget - while(IsValid(player) && player.IsObserver() && player.GetObserverTarget() != null ) + while(IsValid(player) && player.IsObserver() && IsValid( player.GetObserverTarget() ) ) { observerTarget = player.GetObserverTarget() if(observerTarget != player.p.lastFrameObservedTarget) @@ -2011,8 +2033,8 @@ void function SimpleChampionUI() { //printt("Flowstate DEBUG - Game is starting.") - foreach(player in GetPlayerArray()) - if(IsValid(player)) ScreenFade( player, 0, 0, 0, 255, 1.5, 1.5, FFADE_IN | FFADE_PURGE ) //let's do this before destroy player props so it looks good in custom maps + // foreach(player in GetPlayerArray()) + // if(IsValid(player)) ScreenFade( player, 0, 0, 0, 255, 1.5, 1.5, FFADE_IN | FFADE_PURGE ) //let's do this before destroy player props so it looks good in custom maps DestroyPlayerProps() isBrightWaterByZer0 = false @@ -2046,7 +2068,14 @@ void function SimpleChampionUI() int choice = file.nextMapIndex file.mapIndexChanged = false + file.selectedLocation = file.locationSettings[ FS_DM.mappicked ] + + if( FlowState_EnableMovementGym() ) + { + file.selectedLocation = file.locationSettings[ choice ] + } + file.thisroundDroppodSpawns = GetNewFFADropShipLocations( file.selectedLocation.name, GetMapName() ) //printt("Flowstate DEBUG - Next round location is: " + file.selectedLocation.name) @@ -2450,8 +2479,9 @@ void function SimpleChampionUI() player.SetThirdPersonShoulderModeOn() HolsterAndDisableWeapons( player ) } - - thread SendScoreboardToClient() + + if( VOTING_PHASE_ENABLE ) + thread SendScoreboardToClient() wait 1 @@ -2471,229 +2501,247 @@ void function SimpleChampionUI() { if( !IsValid( player ) ) continue RemoveCinematicFlag( player, CE_FLAG_HIDE_MAIN_HUD | CE_FLAG_EXECUTION ) + if( GetCurrentPlaylistName() == "movement_gym" ) { + Message( player,"Movement Gym", "\n\n Made by twitter.com/DEAFPS_ \n\n With help from AyeZee#6969, Julefox#0050 & @CafeFPS", 7, "UI_Menu_RoundSummary_Results" ) + } player.SetThirdPersonShoulderModeOff() player.FreezeControlsOnServer() } - int TeamWon = 69 - - if(GetPlayerArray().len() == 1) - TeamWon = gp()[0].GetTeam() //DEBUG VALUE - - if(IsValid(GetBestPlayer())) - TeamWon = GetBestPlayer().GetTeam() - + if( !VOTING_PHASE_ENABLE ) + wait 7 + + if( file.currentRound == Flowstate_AutoChangeLevelRounds() && Flowstate_EnableAutoChangeLevel() ) + { + // foreach( player in GetPlayerArray() ) + // Message( player, "We have reached the round to change levels.", "Total Round: " + file.currentRound, 6.0 ) - // Only do voting for maps with multi locations - // if ( file.locationSettings.len() >= NUMBER_OF_MAP_SLOTS_FSDM ) - // { + foreach( player in GetPlayerArray() ) + Message( player, "Server clean up incoming", "Don't leave. Server is going to reload to avoid lag.", 6.0 ) + + wait 6.0 + + if(FlowState_EnableMovementGymLogs() && FlowState_EnableMovementGym()) + MovementGymSaveTimesToFile() - // for each player, open the vote menu and set it to the winning team screen - // foreach( player in GetPlayerArray() ) + GameRules_ChangeMap( GetMapName(), GameRules_GetGameMode() ) + } + + if( VOTING_PHASE_ENABLE ) + { + int TeamWon = 69 + + if(GetPlayerArray().len() == 1) + TeamWon = gp()[0].GetTeam() //DEBUG VALUE + + if(IsValid(GetBestPlayer())) + TeamWon = GetBestPlayer().GetTeam() + + + // Only do voting for maps with multi locations + // if ( file.locationSettings.len() >= NUMBER_OF_MAP_SLOTS_FSDM ) // { - // if( !IsValid( player ) ) - // continue - - // Remote_CallFunction_Replay(player, "ServerCallback_FSDM_OpenVotingPhase", true) - // Remote_CallFunction_Replay(player, "ServerCallback_FSDM_ChampionScreenHandle", true, TeamWon, skinIndexForChampion) - // Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.WinnerScreen, TeamWon, eFSDMScreen.NotUsed, eFSDMScreen.NotUsed) - // } - foreach( player in GetPlayerArray() ) - { - if( !IsValid( player ) ) - continue + + // for each player, open the vote menu and set it to the winning team screen + // foreach( player in GetPlayerArray() ) + // { + // if( !IsValid( player ) ) + // continue + + // Remote_CallFunction_Replay(player, "ServerCallback_FSDM_OpenVotingPhase", true) + // Remote_CallFunction_Replay(player, "ServerCallback_FSDM_ChampionScreenHandle", true, TeamWon, skinIndexForChampion) + // Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.WinnerScreen, TeamWon, eFSDMScreen.NotUsed, eFSDMScreen.NotUsed) + // } + foreach( player in GetPlayerArray() ) + { + if( !IsValid( player ) ) + continue + + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_OpenVotingPhase", true) + Remote_CallFunction_NonReplay(player, "ServerCallback_FSDM_CoolCamera") + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.ScoreboardUI, TeamWon, eFSDMScreen.NotUsed, eFSDMScreen.NotUsed) + EmitSoundOnEntityOnlyToPlayer(player, player, "UI_Menu_RoundSummary_Results") + } - Remote_CallFunction_Replay(player, "ServerCallback_FSDM_OpenVotingPhase", true) - Remote_CallFunction_NonReplay(player, "ServerCallback_FSDM_CoolCamera") - Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.ScoreboardUI, TeamWon, eFSDMScreen.NotUsed, eFSDMScreen.NotUsed) - EmitSoundOnEntityOnlyToPlayer(player, player, "UI_Menu_RoundSummary_Results") - } - - thread function() : () - { - for( int i = 0; i < NUMBER_OF_MAP_SLOTS_FSDM; ++i ) + thread function() : () { - while( true ) + for( int i = 0; i < NUMBER_OF_MAP_SLOTS_FSDM; ++i ) { - // Get a random location id from the available locations - int randomId = RandomIntRange(0, file.locationSettings.len()) - - // If the map already isnt picked for voting then append it to the array, otherwise keep looping till it finds one that isnt picked yet - if( !FS_DM.mapIds.contains( randomId ) ) + while( true ) { - FS_DM.mapIds.append( randomId ) - break + // Get a random location id from the available locations + int randomId = RandomIntRange(0, file.locationSettings.len()) + + // If the map already isnt picked for voting then append it to the array, otherwise keep looping till it finds one that isnt picked yet + if( !FS_DM.mapIds.contains( randomId ) ) + { + FS_DM.mapIds.append( randomId ) + break + } } } - } - }() - - wait 7 + }() + + wait 7 - // foreach( player in GetPlayerArray() ) - // { - // if( !IsValid( player ) ) - // continue + // foreach( player in GetPlayerArray() ) + // { + // if( !IsValid( player ) ) + // continue + + // Remote_CallFunction_NonReplay(player, "ServerCallback_FSDM_CoolCamera") + // Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.ScoreboardUI, TeamWon, eFSDMScreen.NotUsed, eFSDMScreen.NotUsed) + // EmitSoundOnEntityOnlyToPlayer(player, player, "UI_Menu_RoundSummary_Results") + // } - // Remote_CallFunction_NonReplay(player, "ServerCallback_FSDM_CoolCamera") - // Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.ScoreboardUI, TeamWon, eFSDMScreen.NotUsed, eFSDMScreen.NotUsed) - // EmitSoundOnEntityOnlyToPlayer(player, player, "UI_Menu_RoundSummary_Results") - // } + //wait 7 - wait 7 - - // Set voting to be allowed - FS_DM.votingtime = true + // Set voting to be allowed + FS_DM.votingtime = true - // For each player, set voting screen and update maps that are picked for voting - foreach( player in GetPlayerArray() ) - { - if( !IsValid( player ) ) - continue - - Remote_CallFunction_Replay(player, "ServerCallback_FSDM_UpdateVotingMaps", FS_DM.mapIds[0], FS_DM.mapIds[1], FS_DM.mapIds[2], FS_DM.mapIds[3]) - Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.VoteScreen, eFSDMScreen.NotUsed, eFSDMScreen.NotUsed, eFSDMScreen.NotUsed) - } + // For each player, set voting screen and update maps that are picked for voting + foreach( player in GetPlayerArray() ) + { + if( !IsValid( player ) ) + continue + + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_UpdateVotingMaps", FS_DM.mapIds[0], FS_DM.mapIds[1], FS_DM.mapIds[2], FS_DM.mapIds[3]) + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.VoteScreen, eFSDMScreen.NotUsed, eFSDMScreen.NotUsed, eFSDMScreen.NotUsed) + } - wait 16 + wait 16 - FS_DM.votestied = false - bool anyVotes = false + FS_DM.votestied = false + bool anyVotes = false - // Make voting not allowed - FS_DM.votingtime = false + // Make voting not allowed + FS_DM.votingtime = false - // See if there was any votes in the first place - foreach( int votes in FS_DM.mapVotes ) - { - if( votes > 0 ) + // See if there was any votes in the first place + foreach( int votes in FS_DM.mapVotes ) { - anyVotes = true - break + if( votes > 0 ) + { + anyVotes = true + break + } } - } - if ( anyVotes ) - { - // store the highest vote count for any of the maps - int highestVoteCount = -1 + if ( anyVotes ) + { + // store the highest vote count for any of the maps + int highestVoteCount = -1 - // store the last map id of the map that has the highest vote count - int highestVoteId = -1 + // store the last map id of the map that has the highest vote count + int highestVoteId = -1 - // store map ids of all the maps with the highest vote count - array mapsWithHighestVoteCount + // store map ids of all the maps with the highest vote count + array mapsWithHighestVoteCount - for(int i = 0; i < NUMBER_OF_MAP_SLOTS_FSDM; ++i) - { - int votes = FS_DM.mapVotes[i] - if( votes > highestVoteCount ) + for(int i = 0; i < NUMBER_OF_MAP_SLOTS_FSDM; ++i) { - highestVoteCount = votes - highestVoteId = FS_DM.mapIds[i] + int votes = FS_DM.mapVotes[i] + if( votes > highestVoteCount ) + { + highestVoteCount = votes + highestVoteId = FS_DM.mapIds[i] - // we have a new highest, so clear the array - mapsWithHighestVoteCount.clear() - mapsWithHighestVoteCount.append(FS_DM.mapIds[i]) + // we have a new highest, so clear the array + mapsWithHighestVoteCount.clear() + mapsWithHighestVoteCount.append(FS_DM.mapIds[i]) + } + else if( votes == highestVoteCount ) // if this map also has the highest vote count, add it to the array + { + mapsWithHighestVoteCount.append(FS_DM.mapIds[i]) + } } - else if( votes == highestVoteCount ) // if this map also has the highest vote count, add it to the array + + // if there are multiple maps with the highest vote count then it's a tie + if( mapsWithHighestVoteCount.len() > 1 ) { - mapsWithHighestVoteCount.append(FS_DM.mapIds[i]) + FS_DM.votestied = true } - } - - // if there are multiple maps with the highest vote count then it's a tie - if( mapsWithHighestVoteCount.len() > 1 ) - { - FS_DM.votestied = true - } - else // else pick the map with the highest vote count - { - // Set the vote screen for each player to show the chosen location - foreach( player in GetPlayerArray() ) + else // else pick the map with the highest vote count { - if( !IsValid( player ) ) - continue + // Set the vote screen for each player to show the chosen location + foreach( player in GetPlayerArray() ) + { + if( !IsValid( player ) ) + continue - Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.SelectedScreen, eFSDMScreen.NotUsed, highestVoteId, eFSDMScreen.NotUsed) + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.SelectedScreen, eFSDMScreen.NotUsed, highestVoteId, eFSDMScreen.NotUsed) + } + + // Set the location to the location that won + FS_DM.mappicked = highestVoteId } - // Set the location to the location that won - FS_DM.mappicked = highestVoteId - } + if ( FS_DM.votestied ) + { + foreach( player in GetPlayerArray() ) + { + if( !IsValid( player ) ) + continue - if ( FS_DM.votestied ) + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.TiedScreen, eFSDMScreen.NotUsed, 42069, eFSDMScreen.NotUsed) + } + + mapsWithHighestVoteCount.randomize() + waitthread RandomizeTiedLocations(mapsWithHighestVoteCount) + } + } + else // No one voted so pick random map { + // Pick a random location id from the aviable locations + FS_DM.mappicked = RandomIntRange(0, file.locationSettings.len() - 1) + + // Set the vote screen for each player to show the chosen location foreach( player in GetPlayerArray() ) { if( !IsValid( player ) ) continue - Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.TiedScreen, eFSDMScreen.NotUsed, 42069, eFSDMScreen.NotUsed) + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.SelectedScreen, eFSDMScreen.NotUsed, FS_DM.mappicked, eFSDMScreen.NotUsed) } - - mapsWithHighestVoteCount.randomize() - waitthread RandomizeTiedLocations(mapsWithHighestVoteCount) } - } - else // No one voted so pick random map - { - // Pick a random location id from the aviable locations - FS_DM.mappicked = RandomIntRange(0, file.locationSettings.len() - 1) - // Set the vote screen for each player to show the chosen location + //wait for timing + wait 5 + + // Close the votemenu for each player foreach( player in GetPlayerArray() ) { if( !IsValid( player ) ) continue - - Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.SelectedScreen, eFSDMScreen.NotUsed, FS_DM.mappicked, eFSDMScreen.NotUsed) + + ScreenCoverTransition_Player(player, Time() + 1) + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_OpenVotingPhase", false) } - } - - //wait for timing - wait 5 - - // Close the votemenu for each player - foreach( player in GetPlayerArray() ) - { - if( !IsValid( player ) ) - continue - - ScreenCoverTransition_Player(player, Time() + 1) - Remote_CallFunction_Replay(player, "ServerCallback_FSDM_OpenVotingPhase", false) - } - wait 2 - // } - - // Clear players the voted for next voting - FS_DM.votedPlayers.clear() + wait 2 + // } + + // Clear players the voted for next voting + FS_DM.votedPlayers.clear() - // Clear mapids for next voting - FS_DM.mapIds.clear() + // Clear mapids for next voting + FS_DM.mapIds.clear() + } - // if( file.currentRound == Flowstate_AutoChangeLevelRounds() && Flowstate_EnableAutoChangeLevel() ) - // { - // // foreach( player in GetPlayerArray() ) - // // Message( player, "We have reached the round to change levels.", "Total Round: " + file.currentRound, 6.0 ) - - // foreach( player in GetPlayerArray() ) - // Message( player, "Server clean up incoming", "Don't leave. Server is going to reload to avoid lag.", 6.0 ) - - // wait 6.0 - - // GameRules_ChangeMap( GetMapName(), GameRules_GetGameMode() ) - // } - foreach( player in GetPlayerArray() ) { if( !IsValid( player ) ) continue ClearInvincible( player ) + RemoveCinematicFlag( player, CE_FLAG_HIDE_MAIN_HUD | CE_FLAG_EXECUTION ) + player.SetThirdPersonShoulderModeOff() player.UnfreezeControlsOnServer() } - + + if( IsValid( file.ringBoundary ) ) + file.ringBoundary.Destroy() + + SetDeathFieldParams( <0,0,0>, 100000, 0, 90000, 99999 ) file.currentRound++ } @@ -2865,7 +2913,7 @@ entity function CreateRingBoundary(LocationSettings location) SetDeathFieldParams( ringCenter, ringRadius, ringRadius, 90000, 99999 ) // This function from the API allows client to read ringRadius from server so we can use visual effects in shared function. Colombia //Audio thread for ring - if( GetCurrentPlaylistName() != "movement_gym" ){ + if( GetCurrentPlaylistName() != "fs_movementgym" ){ foreach(sPlayer in GetPlayerArray()) thread AudioThread(circle, sPlayer, ringRadius) } @@ -4352,4 +4400,4 @@ bool function ClientCommand_setspecplayer( entity player, array args ) UpdatePlayerCounts() Remote_CallFunction_NonReplay( player, "UpdateRUITest") return true -} \ No newline at end of file +} diff --git a/vscripts/gamemodes/fs_tdm/sh_gamemode_fsdm.nut b/vscripts/gamemodes/fs_tdm/sh_gamemode_fsdm.nut index 4db70af2b..fbd5f30cc 100644 --- a/vscripts/gamemodes/fs_tdm/sh_gamemode_fsdm.nut +++ b/vscripts/gamemodes/fs_tdm/sh_gamemode_fsdm.nut @@ -934,52 +934,54 @@ void function Sh_CustomTDM_Init() if(FlowState_EnableMovementGym()){ - Shared_RegisterLocation( - NewLocationSettings( - "Movement Gym", - [ - NewLocPair(< 10726.9000, 10287, -4283 >, < 0, -90.0001, 0 >), - ], - <0, 0, 3000> + Shared_RegisterLocation( + NewLocationSettings( + "Movement Gym", + [ + NewLocPair(< 10726.9000, 10287, -4283 >, < 0, -90.0001, 0 >), + ], + <0, 0, 3000> + ) ) - ) + + return } if(!GetCurrentPlaylistVarBool("flowstateCapitolCityReplacesTTVLocation", false )) { - Shared_RegisterLocation( - NewLocationSettings( - "TTV Building", - [ - NewLocPair(<11360, 6151, -4079>, <0, 102, 0>), - NewLocPair(<11407, 6778, -4295>, <0, 88, 0>), - NewLocPair(<11973, 4158, -4220>, <0, 82, 0>), - NewLocPair(<9956, 3435, -4239>, <0, 0, 0>), - NewLocPair(<9038, 3800, -4120>, <0, -88, 0>), - NewLocPair(<7933, 6692, -4250>, <0, 76, 0>), - NewLocPair(<8990, 5380, -4250>, <0, 145, 0>), - NewLocPair(<8200, 5463, -3815>, <0, 0, 0>), - NewLocPair(<9789, 5363, -3480>, <0, 174, 0>), - NewLocPair(<9448, 5804, -4000>, <0, 0, 0>), - NewLocPair(<8135, 4087, -4233>, <0, 90, 0>), - NewLocPair(<9761, 5980, -4250>, <0, 135, 0>) - NewLocPair(<11393, 5477, -4289>, <0, 90, 0>), - NewLocPair(<12027, 7121, -4290>, <0, -120, 0>), - NewLocPair(<8105, 6156, -4300>, <0, -45, 0>), - NewLocPair(<9420, 5528, -4236>, <0, 90, 0>), - NewLocPair(<8277, 6304, -3940>, <0, 0, 0>), - NewLocPair(<8186, 5513, -3828>, <0, 0, 0>), - NewLocPair(<8243, 4537, -4235>, <-13, 32, 0>), - NewLocPair(<11700, 6207, -4435>, <-10, 90, 0>), - NewLocPair(<11181, 5862, -3900>, <0, -180, 0>), - NewLocPair(<9043, 5866, -4171>, <0, 90, 0>), - NewLocPair(<11210, 4164, -4235>, <0, 90, 0>), - NewLocPair(<12775, 4446, -4235>, <0, 150, 0>), - NewLocPair(<9012, 5386, -4242>, <0, 90, 0>) - ], - <0, 0, 3000> + Shared_RegisterLocation( + NewLocationSettings( + "TTV Building", + [ + NewLocPair(<11360, 6151, -4079>, <0, 102, 0>), + NewLocPair(<11407, 6778, -4295>, <0, 88, 0>), + NewLocPair(<11973, 4158, -4220>, <0, 82, 0>), + NewLocPair(<9956, 3435, -4239>, <0, 0, 0>), + NewLocPair(<9038, 3800, -4120>, <0, -88, 0>), + NewLocPair(<7933, 6692, -4250>, <0, 76, 0>), + NewLocPair(<8990, 5380, -4250>, <0, 145, 0>), + NewLocPair(<8200, 5463, -3815>, <0, 0, 0>), + NewLocPair(<9789, 5363, -3480>, <0, 174, 0>), + NewLocPair(<9448, 5804, -4000>, <0, 0, 0>), + NewLocPair(<8135, 4087, -4233>, <0, 90, 0>), + NewLocPair(<9761, 5980, -4250>, <0, 135, 0>) + NewLocPair(<11393, 5477, -4289>, <0, 90, 0>), + NewLocPair(<12027, 7121, -4290>, <0, -120, 0>), + NewLocPair(<8105, 6156, -4300>, <0, -45, 0>), + NewLocPair(<9420, 5528, -4236>, <0, 90, 0>), + NewLocPair(<8277, 6304, -3940>, <0, 0, 0>), + NewLocPair(<8186, 5513, -3828>, <0, 0, 0>), + NewLocPair(<8243, 4537, -4235>, <-13, 32, 0>), + NewLocPair(<11700, 6207, -4435>, <-10, 90, 0>), + NewLocPair(<11181, 5862, -3900>, <0, -180, 0>), + NewLocPair(<9043, 5866, -4171>, <0, 90, 0>), + NewLocPair(<11210, 4164, -4235>, <0, 90, 0>), + NewLocPair(<12775, 4446, -4235>, <0, 150, 0>), + NewLocPair(<9012, 5386, -4242>, <0, 90, 0>) + ], + <0, 0, 3000>,$"rui/flowstatelocations/ttvbuilding" + ) ) - ) } else{ Shared_RegisterLocation( @@ -1440,87 +1442,7 @@ void function Sh_CustomTDM_Init() ) ) } - /////////////////////////////////// - //PROPHUNT LOCATIONS/////////////// - RegisterLocationPROPHUNT( - NewLocationSettings( - "TTV Building", - [ - NewLocPair(<8779, 5154, -4092>, <0, 90, 0>), - NewLocPair(<9351,6319,-4095>, <0, -120, 0>), - NewLocPair(<10462,6128,-4163>, <0, -45, 0>), - NewLocPair(<9635,4868,-4073>, <0, -135, 0>) - ], - <0, 0, 3000> - ) - ) - RegisterLocationPROPHUNT( - NewLocationSettings( - "Skill trainer By CafeFPS", - [ - NewLocPair(<15008, 30040, -680>, <20, 50, 0>), - NewLocPair(<19265, 30022, -680>, <11, 132, 0>), - NewLocPair(<19267, 33522, -680>, <10, -138, 0>), - NewLocPair(<14995, 33566, -680>, <16, -45, 0>) - ], - <0, 0, 3000> - ) - ) - RegisterLocationPROPHUNT( - NewLocationSettings( - "TTV Building 2", - [ - NewLocPair(<1313, 4450, -2990>, <0, 50, 0>), - NewLocPair(<2300, 6571, -4490>, <0, -96, 0>), - NewLocPair(<2617, 4668, -4250>, <0, 85, 0>), - NewLocPair(<1200, 4471, -4150>, <0, 50, 0>) - ], - <0, 0, 2000> - ) - ) - RegisterLocationPROPHUNT( - NewLocationSettings( - "Overlook", - [ - NewLocPair(<32774, 6031, -3239>, <0, 117, 0>), - NewLocPair(<28381, 8963, -3224>, <0, 48, 0>), - NewLocPair(<26327, 11857, -2477>, <0, -43, 0>), - NewLocPair(<27303, 14528, -3047>, <0, -42, 0>) - ], - <0, 0, 2000> - ) - ) - - RegisterLocationPROPHUNT( - NewLocationSettings( - "Train yard", - [ - NewLocPair(<-11956,3021,-2988>, <0, 87, 0>), - NewLocPair(<-13829,2836,-3037>, <0, 122, 0>), - NewLocPair(<-12883,4502,-3340>, <0, 177, 0>), - NewLocPair(<-11412,3692,-3405>, <0, 3, 0>), - NewLocPair(<-14930,2065,-3140>, <0, 3, 0>) - ], - <0, 0, 2000> - ) - ) - // RegisterLocationPROPHUNT( - // NewLocationSettings( - // "Thermal Station", - // [ - // NewLocPair(<-20091, -17683, -3984>, <0, -90, 0>), - // NewLocPair(<-22919, -20528, -4010>, <0, 0, 0>), - // NewLocPair(<-17140, -20710, -3973>, <0, -180, 0>), - // NewLocPair(<-21054, -23399, -3850>, <0, 90, 0>) - // ], - // <0, 0, 11000> - // ) - // ) - - /////////////////////////////////// - //END PROPHUNT LOCATIONS/////////////// - /////////////////////////////////////////////////// //EXCLUSIVE SURF LOCATIONS FOR WORLD'S EDGE//////// diff --git a/vscripts/scripts.rson b/vscripts/scripts.rson index ed92f915b..0b8c9bcda 100644 --- a/vscripts/scripts.rson +++ b/vscripts/scripts.rson @@ -961,7 +961,7 @@ Scripts: custom_maps/_custom_maps_3.nut custom_maps/_custom_maps_4.nut custom_maps/_custom_deafps_maps.nut - custom_maps/_movement_gym.nut + gamemodes/fs_movementgym/_movement_gym.nut custom_maps/_custom_doormap.nut //map editor props _place_map_editor_props_here.nut @@ -975,6 +975,7 @@ Scripts: When: "CLIENT" Scripts: [ + gamemodes/fs_movementgym/cl_movement_gym.nut gamemodes/fs_tdm/cl_gamemode_fsdm.nut gamemodes/custom_ctf/cl_gamemode_custom_ctf.nut gamemodes/fs_aimtrainer/cl_gamemode_aimtrainer.nut diff --git a/vscripts/sh_playlists.gnut b/vscripts/sh_playlists.gnut index 90db78356..db83aa632 100644 --- a/vscripts/sh_playlists.gnut +++ b/vscripts/sh_playlists.gnut @@ -334,9 +334,9 @@ asset function GetModeEmblemImage( string playlistName ) emblemImage = $"rui/flowstatecustom/duckhunt" break - // case "fs_dm": - // emblemImage = $"rui/flowstatecustom/dm" - // break + case "fs_dm": + emblemImage = $"rui/flowstatecustom/dm" + break case "flowstate_pkknockback": emblemImage = $"rui/flowstatecustom/pkpushback2" @@ -350,6 +350,16 @@ asset function GetModeEmblemImage( string playlistName ) // emblemImage = $"rui/flowstatecustom/infection" // break } + + if( GetCurrentPlaylistName() == "fs_movementgym" ) + { + emblemImage = $"rui/flowstatecustom/movementgym" + } + + if( GetCurrentPlaylistName() == "fs_1v1" ) + { + emblemImage = $"rui/flowstatecustom/1v1" + } #endif return emblemImage diff --git a/vscripts/ui/CustomLobby/menu_main.nut b/vscripts/ui/CustomLobby/menu_main.nut index 6b0f07d06..ac38d0d5d 100644 --- a/vscripts/ui/CustomLobby/menu_main.nut +++ b/vscripts/ui/CustomLobby/menu_main.nut @@ -27,7 +27,7 @@ void function InitR5RMainMenu( var newMenuArg ) //Setup subtitle file.subtitle = Hud_GetChild( file.menu, "Subtitle" ) var subtitleRui = Hud_GetRui( file.subtitle ) - RuiSetString( subtitleRui, "subtitleText", Localize( "Reloaded" ).toupper() ) + RuiSetString( subtitleRui, "subtitleText", "Flowstate ".toupper() + FLOWSTATE_VERSION ) } void function OnR5RSB_Show() diff --git a/vscripts/ui/menu_system.nut b/vscripts/ui/menu_system.nut index 2c038574e..e6d03de90 100644 --- a/vscripts/ui/menu_system.nut +++ b/vscripts/ui/menu_system.nut @@ -263,7 +263,7 @@ void function UpdateSystemPanel( var panel ) SetButtonData( panel, buttonIndex++, file.spectateButtonData[ panel ] ) SetButtonData( panel, buttonIndex++, file.respawnButtonData[ panel ] ) } - if( GetCurrentPlaylistName() == "movement_gym" ) + if( GetCurrentPlaylistName() == "fs_movementgym" ) { SetButtonData( panel, buttonIndex++, file.invisButtonData[ panel ] ) SetButtonData( panel, buttonIndex++, file.hubButtonData[ panel ] ) From 74e4cb74651c0e767552be507f229ab3c2ed5c58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caf=C3=A9DeColombiaFPS?= <92343247+ColombianGuy@users.noreply.github.com> Date: Mon, 8 May 2023 07:44:37 -0500 Subject: [PATCH 09/17] almost final changes :) --- impacts/default_nosound_nowhizby.txt | 277 +++++++++++++ impacts/exp_gravity_grenade.txt | 178 +++++++++ impacts/exp_plasma_sm.txt | 192 +++++++++ impacts/impact_throwing_knife.txt | 212 ++++++++++ levels/settings/mp_lobby.kv | 8 + levels/settings/mp_rr_aqueduct.kv | 1 + levels/settings/mp_rr_aqueduct_night.kv | 1 + levels/settings/mp_rr_arena_composite.kv | 1 + levels/settings/mp_rr_arena_phase_runner.kv | 1 + levels/settings/mp_rr_arena_skygarden.kv | 1 + levels/settings/mp_rr_ashs_redemption.kv | 1 + .../settings/mp_rr_canyonlands_64k_x_64k.kv | 11 + levels/settings/mp_rr_canyonlands_mu1.kv | 10 + levels/settings/mp_rr_canyonlands_mu2_tt.kv | 1 + levels/settings/mp_rr_canyonlands_staging.kv | 11 + .../settings/mp_rr_desertlands_64k_x_64k.kv | 10 + .../mp_rr_desertlands_64k_x_64k_nx.kv | 1 + .../mp_rr_desertlands_64k_x_64k_tt.kv | 1 + levels/settings/mp_rr_desertlands_mu1.kv | 1 + levels/settings/mp_rr_party_crasher.kv | 1 + .../ui/menus/CustomLobby/gamemode_select.res | 8 +- resource/ui/menus/CustomLobby/panels/home.res | 11 +- .../FRChallenges/challengesSelectMenu.menu | 58 --- .../menus/FRChallenges/mainmenu_history.menu | 2 +- .../ui/menus/FRChallenges/mainmenu_main.menu | 184 ++++++--- .../menus/FRChallenges/mainmenu_settings.menu | 2 +- .../mainmenu_settings_weaponselector.menu | 2 +- .../FlowstateDM/flowstate_menu_vote.menu | 2 +- .../flowstate_prophunt_scoreboard.menu | 6 +- .../FlowstateDM/flowstate_statistics.menu | 2 +- vscripts/_mapeditor.gnut | 41 +- vscripts/_mapspawn.gnut | 7 + vscripts/_remote_functions_mp.gnut | 2 + vscripts/_utility_shared.nut | 2 +- vscripts/ai/sh_dev_npc_settings.gnut | 2 +- vscripts/cl_mapspawn.gnut | 5 +- vscripts/cl_survival_inventory.nut | 14 +- vscripts/cl_survival_loot.nut | 4 +- vscripts/client/cl_gamestate.gnut | 3 - vscripts/client/cl_main_hud.nut | 4 +- vscripts/client/cl_minimap.gnut | 57 +-- vscripts/client/cl_utility.gnut | 2 +- vscripts/feature_flags_script.gnut | 2 + vscripts/gamemodes/fs_1v1/_gamemode_1v1.nut | 59 ++- .../fs_aimtrainer/_gamemode_aimtrainer.nut | 100 +++-- .../fs_aimtrainer/cl_gamemode_aimtrainer.nut | 15 +- .../fs_duckhunt/_gamemode_duckhunt.nut | 116 ++---- .../fs_prophunt/_gamemode_prophunt.nut | 56 +-- vscripts/gamemodes/fs_tdm/_gamemode_fsdm.nut | 369 +++++++++++------- .../gamemodes/fs_tdm/cl_gamemode_fsdm.nut | 15 + vscripts/lobby/cl_lobby.gnut | 7 + vscripts/mp/_codecallbacks.gnut | 10 +- vscripts/mp/_score.nut | 8 + vscripts/mp/_titan_transfer.nut | 2 +- vscripts/scripts.rson | 1 + vscripts/sh_consts.gnut | 16 + vscripts/sh_damage_types.nut | 4 +- vscripts/sh_menu_models.gnut | 12 +- vscripts/sh_onboarding.gnut | 9 +- vscripts/sh_ping.gnut | 2 - vscripts/sh_stats.gnut | 2 +- vscripts/sh_survival_loot.gnut | 2 +- vscripts/sh_survival_loot_all.gnut | 177 ++++++++- vscripts/survival_loot.gnut | 36 +- .../ui/CustomLobby/menu_gamemodeselect.nut | 4 +- vscripts/ui/CustomLobby/menu_lobby.nut | 18 +- .../ui/FRChallenges/mainmenu_challenges.nut | 4 +- vscripts/ui/KillReplay/menu_killreplay.nut | 110 +++++- vscripts/ui/menu_dev.nut | 8 +- vscripts/ui/menu_system.nut | 24 +- vscripts/weapons/mp_ability_phase_rewind.nut | 4 + vscripts/weapons/mp_weapon_throwingknife.nut | 100 +++++ weapons/melee_boxing_ring.txt | 34 ++ weapons/mp_ability_consumable.txt | 44 +-- weapons/mp_ability_space_elevator_tac.txt | 2 +- weapons/mp_weapon_dmr.txt | 8 +- weapons/mp_weapon_melee_boxing_ring.txt | 30 ++ weapons/mp_weapon_sentinel.txt | 2 +- weapons/mp_weapon_throwingknife.txt | 369 ++++++++++++++++++ weapons/mp_weapon_wingman.txt | 8 +- 80 files changed, 2537 insertions(+), 592 deletions(-) create mode 100644 impacts/default_nosound_nowhizby.txt create mode 100644 impacts/exp_gravity_grenade.txt create mode 100644 impacts/exp_plasma_sm.txt create mode 100644 impacts/impact_throwing_knife.txt create mode 100644 levels/settings/mp_lobby.kv create mode 100644 levels/settings/mp_rr_canyonlands_64k_x_64k.kv create mode 100644 levels/settings/mp_rr_canyonlands_mu1.kv create mode 100644 levels/settings/mp_rr_canyonlands_staging.kv create mode 100644 levels/settings/mp_rr_desertlands_64k_x_64k.kv create mode 100644 vscripts/weapons/mp_weapon_throwingknife.nut create mode 100644 weapons/melee_boxing_ring.txt create mode 100644 weapons/mp_weapon_melee_boxing_ring.txt create mode 100644 weapons/mp_weapon_throwingknife.txt diff --git a/impacts/default_nosound_nowhizby.txt b/impacts/default_nosound_nowhizby.txt new file mode 100644 index 000000000..29e884e97 --- /dev/null +++ b/impacts/default_nosound_nowhizby.txt @@ -0,0 +1,277 @@ +ImpactTable +{ + Info + { + "whizby_sound_from_player" "none" + "whizby_sound_from_AI" "none" + "whizby_maxDistancePilot" "000" + "whizby_maxDistanceTitan" "000" + "ricochet_sound_1P" "none" + "ricochet_sound_3P" "none" + } + + FX + { + + "C" "impact_concrete" //Concrete, rock, porcelain, boulder, gravel, asphalt, brick, concrete_block, plaster + "D" "impact_dirt" //Dirt, slippery, carpet, cardboard, floatingstandable, ceiling_tile, papercup, lava_rock + "E" "impact_metal" // metal_titan + "F" "impact_flesh" //flesh + "G" "impact_metal" //metalgrate, chainlink, chain + "H" "impact_alienflesh" //alienflesh + + "J" "impact_grass" //grass + "K" "impact_mud" //Mud + "L" "impact_plastic" //plastic_barrel, plastic_box, item, rubber, rubbertire, jeeptire, slidingrubbertire, brakingrubbertire, slidingrubbertire_front, slidingrubbertire_rear + "M" "impact_metal" //Default, metal, metal_box, solidmetal, armorflesh, metal_bouncy, slippery_metal, shellcasing_small, shellcasing_large, metal_barrel, floating_metal_barrel, weapon + "N" "P_impact_slime" //Slime + "O" "impact_leaves" //Foliage + "P" "P_impact_metal_spectre" //metal_spectre + "Q" "P_impact_snow" //Snow + "R" "P_impact_snow" //Ice + "S" "P_impact_water" //water + "T" "impact_tile" //tile + "U" "impact_glass" // glass_breakable + "V" "impact_metal" //Metal Vent + "W" "impact_wood"//Wood, Wood_lowdensity, Wood_Box, Wood_Crate, Wood_Plank, Wood_Solid, Wood_Furniture, Wood_Panel watermelon + "X" "P_impact_xo_shield_cp" //xo_shield + "Y" "impact_glass" //glass, brokenglass, glassbottle, pottery + "Z" "impact_sand" //sand + +// "0" "openslot" + "1" "P_impact_lava_nodecal" //lava_flow + "2" "P_impact_lava" //lava_rock_hot +// "3" "openslot" +// "4" "openslot" +// "5" "openslot" +// "6" "openslot" +// "7" "openslot" +// "8" "openslot" +// "9" "openslot" + + "splash" "P_impact_water" //brush water + "slime_splash" "P_impact_slime" + "airburst" "P_impact_exp_smll_air" //No Surface + "shieldhit" "P_armor_impact" + "shadowhit" "P_impact_shadow" + "holohit" "P_holohit_impact" + "critical_hit" "impact_metal" + + "headshot_flesh" "P_impact_flesh" + "headshot_mechanical" "P_armor_impact" + + "pass_through" "P_rampart_impact_amp" + } + + Sound + { + "C" "none" + "D" "none" + "E" "none" + "F" "none" + "G" "none" // "ChainLink.BulletImpact" + "H" "none" + + "J" "none" + "K" "none" // mud? + "L" "none" // "Plastic_Box.BulletImpact" + "M" "none" //"ArmorFlesh.BulletImpact" + "N" "none" // sand? + "O" "none" + "P" "none" + "Q" "none" + "R" "none" + "S" "none" + "T" "none" + "U" "none" + "V" "none" + "W" "none" + "X" "none" // Titan bubble shield + "Y" "none" + "Z" "none" + + "0" "none" + "1" "none" //lava_flow + "2" "none" //lava_rock_hot + "3" "none" + "4" "none" + "5" "none" + "6" "none" + "7" "none" + "8" "none" + "9" "none" + + + "splash" "none" //brush water + "slime_splash" "none" + "airburst" "none" //No Surface + "shieldhit" "none" + "holohit" "none" + "critical_hit" "none" + + "headshot_flesh" "none" + "headshot_mechanical" "none" + + "pass_through" "none" + } + + Sound_attacker + { + "C" "none" + "D" "none" + "E" "none" + "F" "none" + "G" "none" // "ChainLink.BulletImpact" + "H" "none" + + "J" "none" + "K" "none" // mud? + "L" "none" // "Plastic_Box.BulletImpact" + "M" "none" //"ArmorFlesh.BulletImpact" + "N" "none" // sand? + "O" "none" + "P" "none" + "Q" "none" + "R" "none" + "S" "none" + "T" "none" + "U" "none" + "V" "none" + "W" "none" + "X" "none" // Titan bubble shield + "Y" "none" + "Z" "none" + + "0" "none" + "1" "none" //lava_flow + "2" "none" //lava_rock_hot + "3" "none" + "4" "none" + "5" "none" + "6" "none" + "7" "none" + "8" "none" + "9" "none" + + + "splash" "none" //brush water + "slime_splash" "none" + "airburst" "none" //No Surface + "shieldhit" "none" + "holohit" "none" + "critical_hit" "none" + + "headshot_flesh" "none" + "headshot_mechanical" "none" + + "pass_through" "none" + } + + Sound_victim + { + "C" "none" + "D" "none" + "E" "none" + "F" "none" + "G" "none" // "ChainLink.BulletImpact" + "H" "none" + + "J" "none" + "K" "none" // mud? + "L" "none" // "Plastic_Box.BulletImpact" + "M" "none" //"ArmorFlesh.BulletImpact" + "N" "none" // sand? + "O" "none" + "P" "none" + "Q" "none" + "R" "none" + "S" "none" + "T" "none" + "U" "none" + "V" "none" + "W" "none" + "X" "none" // Titan bubble shield + "Y" "none" + "Z" "none" + + "0" "none" + "1" "none" //lava_flow + "2" "none" //lava_rock_hot + "3" "none" + "4" "none" + "5" "none" + "6" "none" + "7" "none" + "8" "none" + "9" "none" + + + "splash" "none" //brush water + "slime_splash" "none" + "airburst" "none" //No Surface + "shieldhit" "none" + "holohit" "none" + "critical_hit" "none" + + "headshot_flesh" "none" + "headshot_mechanical" "none" + + "pass_through" "none" + } + + Sound_victim_from_AI + { + "C" "none" + "D" "none" + "E" "none" + "F" "none" + "G" "none" // "ChainLink.BulletImpact" + "H" "none" + + "J" "none" + "K" "none" // mud? + "L" "none" // "Plastic_Box.BulletImpact" + "M" "none" //"ArmorFlesh.BulletImpact" + "N" "none" // sand? + "O" "none" + "P" "none" + "Q" "none" + "R" "none" + "S" "none" + "T" "none" + "U" "none" + "V" "none" + "W" "none" + "X" "none" // Titan bubble shield + "Y" "none" + "Z" "none" + + "0" "none" + "1" "none" //lava_flow + "2" "none" //lava_rock_hot + "3" "none" + "4" "none" + "5" "none" + "6" "none" + "7" "none" + "8" "none" + "9" "none" + + + "splash" "none" //brush water + "slime_splash" "none" + "airburst" "none" //No Surface + "shieldhit" "none" + "holohit" "none" + "critical_hit" "none" + + "headshot_flesh" "none" + "headshot_mechanical" "none" + + "pass_through" "none" + + // Victim headshot sounds taken care of in PlayVictimHeadshotConfirmation(): + //"headshot_flesh" "Flesh.BulletImpact_3P_vs_1P" + //"headshot_mechanical" "Android.Light.BulletImpact_3P_vs_1P" + } +} diff --git a/impacts/exp_gravity_grenade.txt b/impacts/exp_gravity_grenade.txt new file mode 100644 index 000000000..4d724e960 --- /dev/null +++ b/impacts/exp_gravity_grenade.txt @@ -0,0 +1,178 @@ +// "Gamematerial" "effect_name" + + +ImpactTable +{ + Info + { + "whizby_sound_from_player" "none" // set up in mp_weapon_grenade_gravity.txt + "whizby_sound_from_AI" "none" // set up in mp_weapon_grenade_gravity.txt + + } + + FX + { + "C" "P_plasma_exp_LG" //Concrete, rock, porcelain, boulder, gravel, asphalt, brick, concrete_block, plaster + "D" "P_plasma_exp_LG" //Dirt, slipperyslime, snow, carpet, cardboard, floatingstandable, ceiling_tile, papercup + "E" "P_plasma_exp_LG" // metal_titan + + "F" "P_plasma_exp_LG" //flesh + "G" "P_plasma_exp_LG" //metalgrate, chainlink, chain + "H" "P_plasma_exp_LG" //alienflesh + + "J" "P_plasma_exp_LG" //grass + "K" "P_plasma_exp_LG" //Mud + "L" "P_plasma_exp_LG" //plastic_barrel, plastic_box, item, rubber, rubbertire, jeeptire, slidingrubbertire, brakingrubbertire, slidingrubbertire_front, slidingrubbertire_rear + "M" "P_plasma_exp_LG" //Default, metal, metal_box, solidmetal, armorflesh, metal_bouncy, slippery_metal, shellcasing_small, shellcasing_large, metal_barrel, floating_metal_barrel, weapon + "N" "P_plasma_exp_LG" + "O" "P_plasma_exp_LG" //Foliage + "P" "P_plasma_exp_LG" //Computer + + "R" "P_plasma_exp_LG" //metalpanel, grenade, canister + "S" "P_plasma_exp_LG" //water, slime + "T" "P_plasma_exp_LG" //tile + "U" "P_plasma_exp_LG" //glass_breakable + + "V" "P_plasma_exp_LG" //Metal Vent + "W" "P_plasma_exp_LG" //Wood, Wood_lowdensity, Wood_Box, Wood_Crate, Wood_Plank, Wood_Solid, Wood_Furniture, Wood_Panel watermelon + + "Y" "P_plasma_exp_LG" //glass, brokenglass, glassbottle, pottery + "Z" "P_plasma_exp_LG" //sand + + "0" "P_plasma_exp_LG" + "1" "P_plasma_exp_LG" + "2" "P_plasma_exp_LG" + "3" "P_plasma_exp_LG" + "4" "P_plasma_exp_LG" + "5" "P_plasma_exp_LG" + "6" "P_plasma_exp_LG" + "7" "P_plasma_exp_LG" + "8" "P_plasma_exp_LG" + "9" "P_plasma_exp_LG" //puddle + + "airburst" "P_plasma_exp_LG" + "critical_hit" "P_plasma_exp_LG" + + "headshot_flesh" "P_plasma_exp_LG" + "headshot_mechanical" "P_plasma_exp_LG" + } + + Sound + { + "C" "gravitystar_explo_3P" + "D" "gravitystar_explo_3P" + "E" "gravitystar_explo_3P" + + "F" "gravitystar_explo_3P" + "G" "gravitystar_explo_3P" + "H" "gravitystar_explo_3P" + + "J" "gravitystar_explo_3P" + "K" "gravitystar_explo_3P" + "L" "gravitystar_explo_3P" + "M" "gravitystar_explo_3P" + "N" "gravitystar_explo_3P" + "O" "gravitystar_explo_3P" + "P" "gravitystar_explo_3P" + + "R" "gravitystar_explo_3P" + "S" "gravitystar_explo_3P" + "T" "gravitystar_explo_3P" + "U" "gravitystar_explo_3P" + + "V" "gravitystar_explo_3P" + "W" "gravitystar_explo_3P" + "X" "gravitystar_explo_3P" + "Y" "gravitystar_explo_3P" + "Z" "gravitystar_explo_3P" + + //"splash" "Water.BulletImpact" + //"slime_splash" "Water.BulletImpact" + + "airburst" "gravitystar_explo_3P" + "shieldhit" "gravitystar_explo_3P" + + "headshot_flesh" "gravitystar_explo_3P" + "headshot_mechanical" "gravitystar_explo_3P" + } + + Sound_attacker + { + "C" "gravitystar_explo_3p" + "D" "gravitystar_explo_3p" + "E" "gravitystar_explo_3p" + + "F" "gravitystar_explo_3p" + "G" "gravitystar_explo_3p" + "H" "gravitystar_explo_3p" + + "J" "gravitystar_explo_3p" + "K" "gravitystar_explo_3p" // mud? + "L" "gravitystar_explo_3p" + "M" "gravitystar_explo_3p" + "N" "gravitystar_explo_3p" // sand? + "O" "gravitystar_explo_3p" + "P" "gravitystar_explo_3p" + + "R" "gravitystar_explo_3p" + "S" "gravitystar_explo_3p" + "T" "gravitystar_explo_3p" + "U" "gravitystar_explo_3p" + + "V" "gravitystar_explo_3p" + "W" "gravitystar_explo_3p" + "X" "gravitystar_explo_3P" + "Y" "gravitystar_explo_3p" + "Z" "gravitystar_explo_3p" + + //"splash" "Water.BulletImpact" + //"slime_splash" "Water.BulletImpact" + + "airburst" "gravitystar_explo_3p" + "shieldhit" "gravitystar_explo_3P" + + "headshot_flesh" "gravitystar_explo_3p" + "headshot_mechanical" "gravitystar_explo_3p" + } + + Sound_victim + { + "C" "gravitystar_explo_3P" + "D" "gravitystar_explo_3P" + "E" "gravitystar_explo_3P" + + "F" "gravitystar_explo_3P" + "G" "gravitystar_explo_3P" + "H" "gravitystar_explo_3P" + + "J" "gravitystar_explo_3P" + "K" "gravitystar_explo_3P" + "L" "gravitystar_explo_3P" + "M" "gravitystar_explo_3P" + "N" "gravitystar_explo_3P" + "O" "gravitystar_explo_3P" + "P" "gravitystar_explo_3P" + + "R" "gravitystar_explo_3P" + "S" "gravitystar_explo_3P" + "T" "gravitystar_explo_3P" + "U" "gravitystar_explo_3P" + + "V" "gravitystar_explo_3P" + "W" "gravitystar_explo_3P" + "X" "gravitystar_explo_3P" + "Y" "gravitystar_explo_3P" + "Z" "gravitystar_explo_3P" + + //"splash" "Water.BulletImpact" + //"slime_splash" "Water.BulletImpact" + + "airburst" "gravitystar_explo_3P" + "shieldhit" "gravitystar_explo_3P" + + "headshot_flesh" "gravitystar_explo_3P" + "headshot_mechanical" "gravitystar_explo_3P" + } + + +} diff --git a/impacts/exp_plasma_sm.txt b/impacts/exp_plasma_sm.txt new file mode 100644 index 000000000..1d7839b16 --- /dev/null +++ b/impacts/exp_plasma_sm.txt @@ -0,0 +1,192 @@ +// "Gamematerial" "effect_name" + + +ImpactTable +{ + Info + { + "whizby_sound_from_player" "rockets_droneplasmanearmiss" + "whizby_sound_from_AI" "rockets_droneplasmanearmiss" + "whizby_maxDistancePilot" "500" + "whizby_maxDistanceTitan" "500" + } + + FX + { + "C" "P_plasma_exp_SM" //Concrete, rock, porcelain, boulder, gravel, asphalt, brick, concrete_block, plaster + "D" "P_plasma_exp_SM" //Dirt, slipperyslime, snow, carpet, cardboard, floatingstandable, ceiling_tile, papercup + "E" "P_plasma_exp_SM" // metal_titan + + "F" "P_plasma_exp_SM" //flesh + "G" "P_plasma_exp_SM" //metalgrate, chainlink, chain + "H" "P_plasma_exp_SM" //alienflesh + + "J" "P_plasma_exp_SM" //grass + "K" "P_plasma_exp_SM" //Mud + "L" "P_plasma_exp_SM" //plastic_barrel, plastic_box, item, rubber, rubbertire, jeeptire, slidingrubbertire, brakingrubbertire, slidingrubbertire_front, slidingrubbertire_rear + "M" "P_plasma_exp_SM" //Default, metal, metal_box, solidmetal, armorflesh, metal_bouncy, slippery_metal, shellcasing_small, shellcasing_large, metal_barrel, floating_metal_barrel, weapon + "N" "P_plasma_exp_SM" + "O" "P_plasma_exp_SM" //Foliage + "P" "P_plasma_exp_SM" //Computer + + "R" "P_plasma_exp_SM" //metalpanel, grenade, canister + "S" "P_impact_exp_med_water" //water, slime + "T" "P_plasma_exp_SM" //tile + "U" "P_plasma_exp_SM" //glass_breakable + + "V" "P_plasma_exp_SM" //Metal Vent + "W" "P_plasma_exp_SM" //Wood, Wood_lowdensity, Wood_Box, Wood_Crate, Wood_Plank, Wood_Solid, Wood_Furniture, Wood_Panel watermelon + + "X" "P_plasma_exp_SM" //xo_shield + + "Y" "P_plasma_exp_SM" //glass, brokenglass, glassbottle, pottery + "Z" "P_plasma_exp_SM" //sand + + "0" "P_plasma_exp_SM" + "1" "P_plasma_exp_SM" + "2" "P_plasma_exp_SM" + "3" "P_plasma_exp_SM" + "4" "P_plasma_exp_SM" + "5" "P_plasma_exp_SM" + "6" "P_plasma_exp_SM" + "7" "P_plasma_exp_SM" + "8" "P_plasma_exp_SM" + "9" "P_plasma_exp_SM" //puddle + + "airburst" "P_plasma_exp_SM" + "shieldhit" "P_plasma_exp_SM" + "critical_hit" "P_plasma_exp_SM" + } + + ///This is 2nd set of impacts for shield fx to play with explosion + FX + { + "shieldhit" "P_xo_armor_impact_EXP" + } + + + FX_victim + { + "shieldhit" "P_plasma_exp_SM" + "F" "P_plasma_exp_SM_victim" //flesh + } + + Sound + { + "C" "explo_plasma_small" + "D" "explo_plasma_small" + "E" "explo_plasma_small" + + "F" "explo_plasma_small" + "G" "explo_plasma_small" + "H" "explo_plasma_small" + + "J" "explo_plasma_small" + "K" "explo_plasma_small" // mud? + "L" "explo_plasma_small" + "M" "explo_plasma_small" + "N" "explo_plasma_small" // sand? + "O" "explo_plasma_small" + "P" "explo_plasma_small" + + "R" "explo_plasma_small" + "S" "explo_plasma_small" + "T" "explo_plasma_small" + "U" "explo_plasma_small" + + "V" "explo_plasma_small" + "W" "explo_plasma_small" + "X" "TitanBubbleShield.Explosive.BulletImpact_3P_vs_3P" + "Y" "explo_plasma_small" + "Z" "explo_plasma_small" + + //"splash" "Water.BulletImpact" + //"slime_splash" "Water.BulletImpact" + + "airburst" "explo_plasma_small" + "shieldhit" "TitanShield.Explosive.BulletImpact_3P_vs_3P" + } + + Sound_attacker + { + "C" "Explo_TRL_Impact_1P" + "D" "Explo_TRL_Impact_1P" + "E" "Explo_TRL_Impact_1P" + + "F" "Explo_TRL_Impact_1P" + "G" "Explo_TRL_Impact_1P" + "H" "Explo_TRL_Impact_1P" + + "J" "Explo_TRL_Impact_1P" + "K" "Explo_TRL_Impact_1P" // mud? + "L" "Explo_TRL_Impact_1P" + "M" "Explo_TRL_Impact_1P" + "N" "Explo_TRL_Impact_1P" // sand? + "O" "Explo_TRL_Impact_1P" + "P" "Explo_TRL_Impact_1P" + + "R" "Explo_TRL_Impact_1P" + "S" "Explo_TRL_Impact_1P" + "T" "Explo_TRL_Impact_1P" + "U" "Explo_TRL_Impact_1P" + + "V" "Explo_TRL_Impact_1P" + "W" "Explo_TRL_Impact_1P" + "X" "TitanBubbleShield.Explosive.BulletImpact_1P_vs_3P" + "Y" "Explo_TRL_Impact_1P" + "Z" "Explo_TRL_Impact_1P" + + //"splash" "Water.BulletImpact" + //"slime_splash" "Water.BulletImpact" + + "airburst" "Explo_TRL_Impact_1P" + "shieldhit" "TitanShield.Explosive.BulletImpact_1P_vs_3P" + } + + Sound_victim + { + "C" "explo_plasma_small" + "D" "explo_plasma_small" + "E" "Titan.TRL_Impact_3P_vs_1P" + + "F" "Flesh.LSTAR.BulletImpact_3P_vs_1P" + "G" "explo_plasma_small" + "H" "explo_plasma_small" + + "J" "explo_plasma_small" + "K" "explo_plasma_small" // mud? + "L" "explo_plasma_small" + "M" "explo_plasma_small" + "N" "explo_plasma_small" // sand? + "O" "explo_plasma_small" + "P" "explo_plasma_small" + + "R" "explo_plasma_small" + "S" "explo_plasma_small" + "T" "explo_plasma_small" + "U" "explo_plasma_small" + + "V" "explo_plasma_small" + "W" "explo_plasma_small" + "X" "TitanBubbleShield.Explosive.BulletImpact_3P_vs_3P" + "Y" "explo_plasma_small" + "Z" "explo_plasma_small" + + //"splash" "Water.BulletImpact" + //"slime_splash" "Water.BulletImpact" + + "airburst" "explo_plasma_small" + "shieldhit" "TitanShield.Explosive.BulletImpact_3P_vs_1P" + } + +Sound_victim_from_AI + { + "F" "Flesh.LSTAR.BulletImpact_3P_vs_1P" + "P" "Android.Light.BulletImpact_3P_vs_1P" + + // Victim headshot sounds taken care of in PlayVictimHeadshotConfirmation(): + //"headshot_flesh" "Flesh.BulletImpact_3P_vs_1P" + //"headshot_mechanical" "Android.Light.BulletImpact_3P_vs_1P" + } + +} \ No newline at end of file diff --git a/impacts/impact_throwing_knife.txt b/impacts/impact_throwing_knife.txt new file mode 100644 index 000000000..c87511919 --- /dev/null +++ b/impacts/impact_throwing_knife.txt @@ -0,0 +1,212 @@ +ImpactTable +{ + Info + { + "whizby_sound_from_player" "ThrowingKnife_nearmiss" + "whizby_sound_from_AI" "ThrowingKnife_nearmiss" + "whizby_maxDistancePilot" "500" + "whizby_maxDistanceTitan" "300" + "ricochet_sound_1P" "none" + "ricochet_sound_3P" "none" + } + + FX + { + "C" "P_bhaxe_impact_base" //Concrete, rock, porcelain, boulder, gravel, asphalt, brick, concrete_block, plaster + "D" "P_bhaxe_impact_base" //Dirt, slipperyslime, snow, carpet, cardboard, floatingstandable, ceiling_tile, papercup, lava_rock + "E" "P_bhaxe_impact_base" // metal_titan + + "F" "P_bhaxe_impact_base" //flesh + "G" "P_bhaxe_impact_base" //metalgrate, chainlink, chain + "H" "P_bhaxe_impact_base" //alienflesh + + "J" "P_bhaxe_impact_base" //grass + "K" "P_bhaxe_impact_base" //Mud + "L" "P_bhaxe_impact_base" //plastic_barrel, plastic_box, item, rubber, rubbertire, jeeptire, slidingrubbertire, brakingrubbertire, slidingrubbertire_front, slidingrubbertire_rear + "M" "P_bhaxe_impact_base" //Default, metal, metal_box, solidmetal, armorflesh, metal_bouncy, slippery_metal, shellcasing_small, shellcasing_large, metal_barrel, floating_metal_barrel, weapon + "N" "P_bhaxe_impact_base" //slime + "O" "P_bhaxe_impact_base" //Foliage + "P" "P_bhaxe_impact_base" //metal_spectre + + "Q" "P_bhaxe_impact_base" //metalpanel, grenade, canister + "R" "P_bhaxe_impact_base" //metalpanel, grenade, canister + "S" "P_bhaxe_impact_base" //water, slime + "T" "P_bhaxe_impact_base" //tile + "U" "P_bhaxe_impact_base" // glass_breakable + "V" "P_bhaxe_impact_base" //Metal Vent + "W" "P_bhaxe_impact_base"//Wood, Wood_lowdensity, Wood_Box, Wood_Crate, Wood_Plank, Wood_Solid, Wood_Furniture, Wood_Panel watermelon + + "X" "P_bhaxe_impact_base" //xo_shield + + "Y" "P_bhaxe_impact_base" //glass, brokenglass, glassbottle, pottery + "Z" "P_bhaxe_impact_base" //sand + + "0" "P_bhaxe_impact_base" + "1" "P_bhaxe_impact_base" //lava_flow + "2" "P_bhaxe_impact_base" //lava_rock_hot + "3" "P_bhaxe_impact_base" + "4" "P_bhaxe_impact_base" + "5" "P_bhaxe_impact_base" + "6" "P_bhaxe_impact_base" + "7" "P_bhaxe_impact_base" + "8" "P_bhaxe_impact_base" + "9" "P_bhaxe_impact_base" + + "splash" "P_bhaxe_impact_base" //brush water + "slime_splash" "P_bhaxe_impact_base" + "airburst" "" + "shieldhit" "P_bhaxe_impact_base" + "critical_hit" "P_bhaxe_impact_base" + } + + FX_victim + { + "F" "impact_empty" + "shieldhit" "impact_empty" + "holohit" "impact_empty" + } + + FX_attacker_replace + { + //"F" "impact_empty" + } + + FX_attacker_layered_MP + { + "F" "impact_empty" + } + + FX_attacker_layered_SP + { + "F" "impact_empty" + } + +Sound + { + "C" "PulseBlade_concrete_SurfaceImpact_3p_vs_3p" + "D" "PulseBlade_dirt_SurfaceImpact_3p_vs_3p" + "E" "PulseBlade_metalgrate_SurfaceImpact_3p_vs_3p" + + "F" "PulseBlade_flesh_SurfaceImpact_3p_vs_3p" + "G" "PulseBlade_solidmetal_SurfaceImpact_3p_vs_3p" // "ChainLink.BulletImpact" + "H" "PulseBlade_flesh_SurfaceImpact_3p_vs_3p" + + "J" "PulseBlade_dirt_SurfaceImpact_3p_vs_3p" + "K" "PulseBlade_mud_SurfaceImpact_3p_vs_3p" // mud? + "L" "PulseBlade_concrete_SurfaceImpact_3p_vs_3p" // "Plastic_Box.BulletImpact" + "M" "PulseBlade_metalgrate_SurfaceImpact_3p_vs_3p" //"ArmorFlesh.BulletImpact" + "N" "PulseBlade_water_SurfaceImpact_3p_vs_3p" // sand? + "O" "PulseBlade_dirt_SurfaceImpact_3p_vs_3p" + "P" "PulseBlade_metalgrate_SurfaceImpact_3p_vs_3p" + + "R" "PulseBlade_concrete_SurfaceImpact_3p_vs_3p" + "S" "PulseBlade_water_SurfaceImpact_3p_vs_3p" + "T" "PulseBlade_concrete_SurfaceImpact_3p_vs_3p" + + "V" "PulseBlade_metalgrate_SurfaceImpact_3p_vs_3p" + "W" "PulseBlade_wood_SurfaceImpact_3p_vs_3p" + "X" "PulseBlade_SurfaceImpact_BubbleShield_3P" // Titan bubble shield + "Y" "PulseBlade_glass_SurfaceImpact_3p_vs_3p" + "Z" "PulseBlade_dirt_SurfaceImpact_3p_vs_3p" + + "splash" "Water.BulletImpact" + "slime_splash" "Water.BulletImpact" + + "airburst" "" + "shieldhit" "PulseBlade_SurfaceImpact_BubbleShield_3P" + "holohit" "HoloPilot_light_bulletimpact_holo_3p_vs_3p" + + "headshot_flesh" "PulseBlade_SurfaceImpact_Flesh_3P" + "headshot_mechanical" "PulseBlade_SurfaceImpact_Metal_3P" + } + + Sound_attacker + { + "C" "PulseBlade_concrete_SurfaceImpact_1p_vs_3p" + "D" "PulseBlade_dirt_SurfaceImpact_1p_vs_3p" + "E" "PulseBlade_metalgrate_SurfaceImpact_1p_vs_3p" + + "F" "PulseBlade_flesh_SurfaceImpact_1p_vs_3p" + "G" "PulseBlade_solidmetal_SurfaceImpact_1p_vs_3p" + "H" "PulseBlade_flesh_SurfaceImpact_1p_vs_3p" + + "J" "PulseBlade_dirt_SurfaceImpact_1p_vs_3p" + "K" "PulseBlade_mud_SurfaceImpact_1p_vs_3p" + "L" "PulseBlade_concrete_SurfaceImpact_1p_vs_3p" + "M" "PulseBlade_metalgrate_SurfaceImpact_1p_vs_3p" + "N" "PulseBlade_water_SurfaceImpact_1p_vs_3p" + "O" "PulseBlade_dirt_SurfaceImpact_1p_vs_3p" + "P" "PulseBlade_metalgrate_SurfaceImpact_1p_vs_3p" + + "R" "PulseBlade_concrete_SurfaceImpact_1p_vs_3p" + "S" "PulseBlade_water_SurfaceImpact_1p_vs_3p" + "T" "PulseBlade_concrete_SurfaceImpact_1p_vs_3p" + + "V" "PulseBlade_metalgrate_SurfaceImpact_1p_vs_3p" + "W" "PulseBlade_wood_SurfaceImpact_1p_vs_3p" + "X" "PulseBlade_SurfaceImpact_BubbleShield_3P" + "Y" "PulseBlade_glass_SurfaceImpact_1p_vs_3p" + "Z" "PulseBlade_dirt_SurfaceImpact_1p_vs_3p" + + "splash" "Water.BulletImpact" + "slime_splash" "Water.BulletImpact" + + "airburst" "" + "shieldhit" "TitanShield.Light.BulletImpact_1P_vs_3P" + "holohit" "HoloPilot_light_bulletimpact_holo_1p_vs_3p_V2" + + "headshot_flesh" "PulseBlade_SurfaceImpact_Flesh_3P" + "headshot_mechanical" "PulseBlade_SurfaceImpact_Metal_3P" + } + + Sound_victim + { + "C" "PulseBlade_concrete_SurfaceImpact_1p_vs_3p" + "D" "PulseBlade_dirt_SurfaceImpact_1p_vs_3p" + "E" "PulseBlade_metalgrate_SurfaceImpact_1p_vs_3p" + + "F" "PulseBlade_flesh_SurfaceImpact_1p_vs_3p" + "G" "PulseBlade_solidmetal_SurfaceImpact_1p_vs_3p" + "H" "PulseBlade_flesh_SurfaceImpact_1p_vs_3p" + + "J" "PulseBlade_dirt_SurfaceImpact_1p_vs_3p" + "K" "PulseBlade_mud_SurfaceImpact_1p_vs_3p" + "L" "PulseBlade_concrete_SurfaceImpact_1p_vs_3p" + "M" "PulseBlade_metalgrate_SurfaceImpact_1p_vs_3p" + "N" "PulseBlade_water_SurfaceImpact_1p_vs_3p" + "O" "PulseBlade_dirt_SurfaceImpact_1p_vs_3p" + "P" "PulseBlade_metalgrate_SurfaceImpact_1p_vs_3p" + + "R" "PulseBlade_concrete_SurfaceImpact_1p_vs_3p" + "S" "PulseBlade_water_SurfaceImpact_1p_vs_3p" + "T" "PulseBlade_concrete_SurfaceImpact_1p_vs_3p" + + "V" "PulseBlade_metalgrate_SurfaceImpact_1p_vs_3p" + "W" "PulseBlade_wood_SurfaceImpact_1p_vs_3p" + "X" "PulseBlade_SurfaceImpact_BubbleShield_3P" + "Y" "PulseBlade_glass_SurfaceImpact_1p_vs_3p" + "Z" "PulseBlade_dirt_SurfaceImpact_1p_vs_3p" + + "splash" "Water.BulletImpact" + "slime_splash" "Water.BulletImpact" + + "airburst" "" + "shieldhit" "PulseBlade_SurfaceImpact_BubbleShield_3P" + "holohit" "holopilot_impacts" + + // Victim headshot sounds taken care of in PlayVictimHeadshotConfirmation(): + //"headshot_flesh" "Flesh.BulletImpact_3P_vs_1P" + //"headshot_mechanical" "Android.Light.BulletImpact_3P_vs_1P" + } + + Sound_victim_from_AI + { + "F" "PulseBlade_SurfaceImpact_Flesh_3P" + "P" "PulseBlade_SurfaceImpact_Metal_3P" + + // Victim headshot sounds taken care of in PlayVictimHeadshotConfirmation(): + //"headshot_flesh" "Flesh.BulletImpact_3P_vs_1P" + //"headshot_mechanical" "Android.Light.BulletImpact_3P_vs_1P" + } +} + diff --git a/levels/settings/mp_lobby.kv b/levels/settings/mp_lobby.kv new file mode 100644 index 000000000..e3a8bbdeb --- /dev/null +++ b/levels/settings/mp_lobby.kv @@ -0,0 +1,8 @@ +"LevelSet" +{ + "PakList" + { + } + + "StreamDB" "mp_lobby" +} diff --git a/levels/settings/mp_rr_aqueduct.kv b/levels/settings/mp_rr_aqueduct.kv index 7b4e29e13..065c725ee 100644 --- a/levels/settings/mp_rr_aqueduct.kv +++ b/levels/settings/mp_rr_aqueduct.kv @@ -4,6 +4,7 @@ { "mp_rr_canyonlands_mu1" "1" "mp_rr_desertlands_64k_x_64k" "1" + "common_flowstate_small" "1" } "StreamDB" "mp_rr_desertlands_64k_x_64k" diff --git a/levels/settings/mp_rr_aqueduct_night.kv b/levels/settings/mp_rr_aqueduct_night.kv index 674d02781..ea39348ae 100644 --- a/levels/settings/mp_rr_aqueduct_night.kv +++ b/levels/settings/mp_rr_aqueduct_night.kv @@ -4,6 +4,7 @@ { "mp_rr_desertlands_64k_x_64k" "1" "mp_rr_canyonlands_mu1" "1" + "common_flowstate_small" "1" } "StreamDB" "mp_rr_desertlands_64k_x_64k" diff --git a/levels/settings/mp_rr_arena_composite.kv b/levels/settings/mp_rr_arena_composite.kv index a1e44c21e..2c457c839 100644 --- a/levels/settings/mp_rr_arena_composite.kv +++ b/levels/settings/mp_rr_arena_composite.kv @@ -5,6 +5,7 @@ "mp_rr_desertlands_64k_x_64k" "1" "mp_rr_canyonlands_mu1" "1" "mp_rr_canyonlands_mu1_night" "1" + "common_flowstate_small" "1" } "StreamDB" "mp_rr_desertlands_64k_x_64k" diff --git a/levels/settings/mp_rr_arena_phase_runner.kv b/levels/settings/mp_rr_arena_phase_runner.kv index 674d02781..ea39348ae 100644 --- a/levels/settings/mp_rr_arena_phase_runner.kv +++ b/levels/settings/mp_rr_arena_phase_runner.kv @@ -4,6 +4,7 @@ { "mp_rr_desertlands_64k_x_64k" "1" "mp_rr_canyonlands_mu1" "1" + "common_flowstate_small" "1" } "StreamDB" "mp_rr_desertlands_64k_x_64k" diff --git a/levels/settings/mp_rr_arena_skygarden.kv b/levels/settings/mp_rr_arena_skygarden.kv index df86f2611..1eb1ca419 100644 --- a/levels/settings/mp_rr_arena_skygarden.kv +++ b/levels/settings/mp_rr_arena_skygarden.kv @@ -6,6 +6,7 @@ "mp_rr_canyonlands_mu1_night" "1" "mp_rr_canyonlands_mu1" "1" "mp_rr_canyonlands_64k_x_64k" "1" + "common_flowstate_small" "1" } "StreamDB" "mp_rr_desertlands_64k_x_64k" diff --git a/levels/settings/mp_rr_ashs_redemption.kv b/levels/settings/mp_rr_ashs_redemption.kv index 848c8405b..eb031111b 100644 --- a/levels/settings/mp_rr_ashs_redemption.kv +++ b/levels/settings/mp_rr_ashs_redemption.kv @@ -3,6 +3,7 @@ "PakList" { "mp_rr_canyonlands_mu1" "1" + "common_flowstate_small" "1" } "StreamDB" "mp_rr_canyonlands_staging" diff --git a/levels/settings/mp_rr_canyonlands_64k_x_64k.kv b/levels/settings/mp_rr_canyonlands_64k_x_64k.kv new file mode 100644 index 000000000..5938f0948 --- /dev/null +++ b/levels/settings/mp_rr_canyonlands_64k_x_64k.kv @@ -0,0 +1,11 @@ +"LevelSet" +{ + "PakList" + { + "mp_rr_desertlands_64k_x_64k" "1" + "mp_rr_canyonlands_mu1" "1" + "common_flowstate_small" "1" + } + + "StreamDB" "mp_rr_canyonlands_64k_x_64k" +} diff --git a/levels/settings/mp_rr_canyonlands_mu1.kv b/levels/settings/mp_rr_canyonlands_mu1.kv new file mode 100644 index 000000000..6dd540337 --- /dev/null +++ b/levels/settings/mp_rr_canyonlands_mu1.kv @@ -0,0 +1,10 @@ +"LevelSet" +{ + "PakList" + { + "mp_rr_desertlands_64k_x_64k" "1" + "common_flowstate_small" "1" + } + + "StreamDB" "mp_rr_canyonlands_mu1" +} diff --git a/levels/settings/mp_rr_canyonlands_mu2_tt.kv b/levels/settings/mp_rr_canyonlands_mu2_tt.kv index 8cacec44b..afad8217b 100644 --- a/levels/settings/mp_rr_canyonlands_mu2_tt.kv +++ b/levels/settings/mp_rr_canyonlands_mu2_tt.kv @@ -4,6 +4,7 @@ { "mp_rr_desertlands_64k_x_64k" "1" "mp_rr_canyonlands_mu1" "1" + "common_flowstate_small" "1" } "StreamDB" "mp_rr_canyonlands_mu1" diff --git a/levels/settings/mp_rr_canyonlands_staging.kv b/levels/settings/mp_rr_canyonlands_staging.kv new file mode 100644 index 000000000..b58af619f --- /dev/null +++ b/levels/settings/mp_rr_canyonlands_staging.kv @@ -0,0 +1,11 @@ +"LevelSet" +{ + "PakList" + { + "mp_rr_desertlands_64k_x_64k" "1" + "mp_rr_canyonlands_mu1" "1" + "common_flowstate_small" "1" + } + + "StreamDB" "mp_rr_canyonlands_staging" +} diff --git a/levels/settings/mp_rr_desertlands_64k_x_64k.kv b/levels/settings/mp_rr_desertlands_64k_x_64k.kv new file mode 100644 index 000000000..2692b161e --- /dev/null +++ b/levels/settings/mp_rr_desertlands_64k_x_64k.kv @@ -0,0 +1,10 @@ +"LevelSet" +{ + "PakList" + { + "mp_rr_canyonlands_mu1" "1" + "common_flowstate_small" "1" + } + + "StreamDB" "mp_rr_desertlands_64k_x_64k" +} diff --git a/levels/settings/mp_rr_desertlands_64k_x_64k_nx.kv b/levels/settings/mp_rr_desertlands_64k_x_64k_nx.kv index ae1e4498e..b95f4c33e 100644 --- a/levels/settings/mp_rr_desertlands_64k_x_64k_nx.kv +++ b/levels/settings/mp_rr_desertlands_64k_x_64k_nx.kv @@ -3,6 +3,7 @@ "PakList" { "mp_rr_desertlands_64k_x_64k" "1" + "common_flowstate_small" "1" } "StreamDB" "mp_rr_desertlands_64k_x_64k" diff --git a/levels/settings/mp_rr_desertlands_64k_x_64k_tt.kv b/levels/settings/mp_rr_desertlands_64k_x_64k_tt.kv index ae1e4498e..b95f4c33e 100644 --- a/levels/settings/mp_rr_desertlands_64k_x_64k_tt.kv +++ b/levels/settings/mp_rr_desertlands_64k_x_64k_tt.kv @@ -3,6 +3,7 @@ "PakList" { "mp_rr_desertlands_64k_x_64k" "1" + "common_flowstate_small" "1" } "StreamDB" "mp_rr_desertlands_64k_x_64k" diff --git a/levels/settings/mp_rr_desertlands_mu1.kv b/levels/settings/mp_rr_desertlands_mu1.kv index 674d02781..ea39348ae 100644 --- a/levels/settings/mp_rr_desertlands_mu1.kv +++ b/levels/settings/mp_rr_desertlands_mu1.kv @@ -4,6 +4,7 @@ { "mp_rr_desertlands_64k_x_64k" "1" "mp_rr_canyonlands_mu1" "1" + "common_flowstate_small" "1" } "StreamDB" "mp_rr_desertlands_64k_x_64k" diff --git a/levels/settings/mp_rr_party_crasher.kv b/levels/settings/mp_rr_party_crasher.kv index e1e2f8ad3..47367cc9a 100644 --- a/levels/settings/mp_rr_party_crasher.kv +++ b/levels/settings/mp_rr_party_crasher.kv @@ -5,6 +5,7 @@ "mp_rr_desertlands_64k_x_64k" "1" "mp_rr_canyonlands_mu1_night" "1" "mp_rr_canyonlands_mu1" "1" + "common_flowstate_small" "1" } "StreamDB" "mp_rr_desertlands_64k_x_64k" diff --git a/resource/ui/menus/CustomLobby/gamemode_select.res b/resource/ui/menus/CustomLobby/gamemode_select.res index c5b497786..9b8a21187 100644 --- a/resource/ui/menus/CustomLobby/gamemode_select.res +++ b/resource/ui/menus/CustomLobby/gamemode_select.res @@ -168,7 +168,7 @@ resource/ui/menus/dialog_gamemode_select_v2.menu ControlName RuiButton classname "MenuButton" wide 280 - tall 120 + tall 130 ypos -150 xpos -120 zpos 10 @@ -182,8 +182,8 @@ resource/ui/menus/dialog_gamemode_select_v2.menu ruiArgs { lockIconEnabled 0 - modeNameText "Firing Range" - modeDescText "Run around in the custom Firing Range" + modeNameText "Aim Trainer" + modeDescText "Challenge yourself in the Flowstate Aim Trainer" modeImage "rui/menu/gamemode/firing_range" } @@ -197,7 +197,7 @@ resource/ui/menus/dialog_gamemode_select_v2.menu ControlName RuiButton classname "MenuButton" wide 280 - tall 120 + tall 130 ypos 0 xpos 10 zpos 10 diff --git a/resource/ui/menus/CustomLobby/panels/home.res b/resource/ui/menus/CustomLobby/panels/home.res index 412e4268a..bd19d816a 100644 --- a/resource/ui/menus/CustomLobby/panels/home.res +++ b/resource/ui/menus/CustomLobby/panels/home.res @@ -42,7 +42,7 @@ ruiArgs { headerText "Welcome To" - subText "R5Reloaded" + subText "R5Reloaded - Flowstate" } pin_to_sibling TopRightContentAnchor @@ -198,8 +198,9 @@ ControlName RuiButton wide 340 tall 88 - xpos 0 - ypos -70 + xpos -70 + ypos -450 + zpos 10 rui "ui/lobby_friend_button.rpak" labelText "" visible 1 @@ -217,8 +218,8 @@ } pin_to_sibling DarkenBackground - pin_corner_to_sibling TOP - pin_to_sibling_corner TOP + pin_corner_to_sibling BOTTOM_LEFT + pin_to_sibling_corner BOTTOM_LEFT } GameMenuButton diff --git a/resource/ui/menus/FRChallenges/challengesSelectMenu.menu b/resource/ui/menus/FRChallenges/challengesSelectMenu.menu index 92dc019e1..1a28ecbc3 100644 --- a/resource/ui/menus/FRChallenges/challengesSelectMenu.menu +++ b/resource/ui/menus/FRChallenges/challengesSelectMenu.menu @@ -1113,63 +1113,5 @@ scripts/resource/ui/menus/FRChallenges/challengesSelectMenu.menu pin_corner_to_sibling CENTER pin_to_sibling_corner CENTER } - Challenge8NewC - { - "ControlName" "RuiButton" - wide 260 - tall 55 - "rui" "ui/invisible.rpak" - "labelText" "" - "visible" "1" - sound_focus "UI_Menu_Focus" - "sound_accept" "UI_Menu_Accept" - "cursorPriority" "-1" - - xpos 0 - ypos %7 - zpos 3 - visible 0 - - pin_to_sibling Challenge7NewC - pin_corner_to_sibling BOTTOM - pin_to_sibling_corner BOTTOM - } - - Challenge8NewCText - { - ControlName Label - auto_wide_tocontents 1 - labelText "Dummies Survival" - visible 0 - zpos 3 - tall 55 - fontHeight 30 - font Default - fgcolor_override "255 255 255 255" - - ypos 0 - xpos -12 - pin_to_sibling Challenge8NewC - pin_corner_to_sibling BOTTOM_LEFT - pin_to_sibling_corner BOTTOM_LEFT - } - - Challenge8NewCDialogFrame - { - ControlName ImagePanel - wide 260 - tall 55 - xpos 0 - ypos 0 - zpos 1 - visible 0 - scaleImage 1 - fillColor "30 30 30 200" - drawColor "30 30 30 200" - - pin_to_sibling Challenge8NewC - pin_corner_to_sibling CENTER - pin_to_sibling_corner CENTER - } } } \ No newline at end of file diff --git a/resource/ui/menus/FRChallenges/mainmenu_history.menu b/resource/ui/menus/FRChallenges/mainmenu_history.menu index 07f892c9d..1afa38c8f 100644 --- a/resource/ui/menus/FRChallenges/mainmenu_history.menu +++ b/resource/ui/menus/FRChallenges/mainmenu_history.menu @@ -173,7 +173,7 @@ scripts/resource/ui/menus/FRChallenges/mainmenu_history.menu tall 25 visible 1 fontHeight 25 - labelText "v1.25 | Made by @CafeFPS" + labelText "v1.3 | Made by @CafeFPS" font DefaultBold_41 allcaps 0 fgcolor_override "255 255 255 255" diff --git a/resource/ui/menus/FRChallenges/mainmenu_main.menu b/resource/ui/menus/FRChallenges/mainmenu_main.menu index f0fc8c35d..775a16fe1 100644 --- a/resource/ui/menus/FRChallenges/mainmenu_main.menu +++ b/resource/ui/menus/FRChallenges/mainmenu_main.menu @@ -226,7 +226,7 @@ scripts/resource/ui/menus/FRChallenges/mainmenu_main.menu tall 25 visible 1 fontHeight 25 - labelText "v1.25 | Made by @CafeFPS" + labelText "v1.3 | Made by @CafeFPS" font DefaultBold_41 allcaps 0 fgcolor_override "255 255 255 255" @@ -921,63 +921,133 @@ scripts/resource/ui/menus/FRChallenges/mainmenu_main.menu pin_to_sibling_corner CENTER } - // Challenge8NewC - // { - // "ControlName" "RuiButton" - // wide 260 - // tall 55 - // "rui" "ui/invisible.rpak" - // "labelText" "" - // "visible" "1" - // sound_focus "UI_Menu_Focus" - // "sound_accept" "UI_Menu_Accept" - // "cursorPriority" "-1" - - // xpos 0 - // ypos %7.5 - // zpos 3 - // visible 0 + Challenge8NewC + { + "ControlName" "RuiButton" + "rui" "ui/footer_button.rpak" + ruiArgs + { + buttonText "Armor Swap Trainer" + } + wide 270 + tall 50 + "labelText" "" + "visible" "1" + sound_focus "UI_Menu_Focus" + "sound_accept" "UI_Menu_Accept" + "cursorPriority" "-1" + + xpos 0 + ypos %7.5 + zpos 3 + visible 1 - // pin_to_sibling Challenge7NewC - // pin_corner_to_sibling BOTTOM - // pin_to_sibling_corner BOTTOM - // } - - // Challenge8NewCText - // { - // ControlName Label - // auto_wide_tocontents 1 - // labelText "Dummies Survival" - // visible 0 - // zpos 3 - // tall 55 - // fontHeight 30 - // font Default - // fgcolor_override "255 255 255 255" - - // ypos 0 - // xpos -12 - // pin_to_sibling Challenge8NewC - // pin_corner_to_sibling BOTTOM_LEFT - // pin_to_sibling_corner BOTTOM_LEFT - // } + pin_to_sibling Challenge7NewC + pin_corner_to_sibling BOTTOM + pin_to_sibling_corner BOTTOM + } + + Challenge8NewCDialogFrame + { + ControlName ImagePanel + wide 270 + tall 50 + xpos 0 + ypos 0 + zpos 1 + visible 1 + scaleImage 1 + fillColor "105 63 1 200" + drawColor "105 63 1 200" + + pin_to_sibling Challenge8NewC + pin_corner_to_sibling CENTER + pin_to_sibling_corner CENTER + } + + Challenge8NewC_IsNewChallenge + { + ControlName Label + auto_wide_tocontents 1 + labelText "New!" + visible 1 + xpos 45 + zpos 3 + tall 55 + fontHeight 20 + font TitleBoldFont + fgcolor_override "255 255 255 255" + + ypos 0 + xpos -12 + pin_to_sibling Challenge8NewC + pin_corner_to_sibling RIGHT + pin_to_sibling_corner RIGHT + } - // Challenge8NewCDialogFrame - // { - // ControlName ImagePanel - // wide 260 - // tall 55 - // xpos 0 - // ypos 0 - // zpos 1 - // visible 0 - // scaleImage 1 - // fillColor "30 30 30 200" - // drawColor "30 30 30 200" - - // pin_to_sibling Challenge8NewC - // pin_corner_to_sibling CENTER - // pin_to_sibling_corner CENTER - // } + Challenge8 + { + "ControlName" "RuiButton" + "rui" "ui/footer_button.rpak" + ruiArgs + { + buttonText "Bounces Simulator" + } + wide 270 + tall 50 + "labelText" "" + "visible" "1" + sound_focus "UI_Menu_Focus" + "sound_accept" "UI_Menu_Accept" + "cursorPriority" "-1" + + xpos 0 + ypos %7.5 + zpos 3 + visible 1 + + pin_to_sibling Challenge7 + pin_corner_to_sibling BOTTOM + pin_to_sibling_corner BOTTOM + } + + Challenge8_IsNewChallenge + { + ControlName Label + auto_wide_tocontents 1 + labelText "New!" + visible 1 + xpos 45 + zpos 3 + tall 55 + fontHeight 20 + font TitleBoldFont + fgcolor_override "255 255 255 255" + + ypos 0 + xpos -12 + pin_to_sibling Challenge8 + pin_corner_to_sibling RIGHT + pin_to_sibling_corner RIGHT + } + Challenge8DialogFrame + { + ControlName ImagePanel + wide 270 + tall 50 + xpos 0 + ypos 0 + zpos 1 + visible 1 + scaleImage 1 + fillColor "105 63 1 200" + drawColor "105 63 1 200" + + pin_to_sibling Challenge8 + pin_corner_to_sibling CENTER + pin_to_sibling_corner CENTER + } + + } } \ No newline at end of file diff --git a/resource/ui/menus/FRChallenges/mainmenu_settings.menu b/resource/ui/menus/FRChallenges/mainmenu_settings.menu index 7c69779de..3e9a5262c 100644 --- a/resource/ui/menus/FRChallenges/mainmenu_settings.menu +++ b/resource/ui/menus/FRChallenges/mainmenu_settings.menu @@ -173,7 +173,7 @@ scripts/resource/ui/menus/FRChallenges/mainmenu_settings.menu tall 25 visible 1 fontHeight 25 - labelText "v1.25 | Made by @CafeFPS" + labelText "v1.3 | Made by @CafeFPS" font DefaultBold_41 allcaps 0 fgcolor_override "255 255 255 255" diff --git a/resource/ui/menus/FRChallenges/mainmenu_settings_weaponselector.menu b/resource/ui/menus/FRChallenges/mainmenu_settings_weaponselector.menu index 006a687c8..f33563de4 100644 --- a/resource/ui/menus/FRChallenges/mainmenu_settings_weaponselector.menu +++ b/resource/ui/menus/FRChallenges/mainmenu_settings_weaponselector.menu @@ -55,7 +55,7 @@ scripts/resource/ui/menus/FRChallenges/mainmenu_settings_weaponselector.menu tall 25 visible 1 fontHeight 25 - labelText "v1.25 | Made by @CafeFPS" + labelText "v1.3 | Made by @CafeFPS" font DefaultBold_41 allcaps 0 fgcolor_override "255 255 255 255" diff --git a/resource/ui/menus/FlowstateDM/flowstate_menu_vote.menu b/resource/ui/menus/FlowstateDM/flowstate_menu_vote.menu index 8a8938a5c..9c327a98a 100644 --- a/resource/ui/menus/FlowstateDM/flowstate_menu_vote.menu +++ b/resource/ui/menus/FlowstateDM/flowstate_menu_vote.menu @@ -153,7 +153,7 @@ "tall" "40" "visible" "1" "fontHeight" "50" - "labelText" "Current Scoreboard" + "labelText" "Game Scoreboard" "font" "DefaultBold_41" "allcaps" "1" "fgcolor_override" "255 255 255 155" diff --git a/resource/ui/menus/FlowstateDM/flowstate_prophunt_scoreboard.menu b/resource/ui/menus/FlowstateDM/flowstate_prophunt_scoreboard.menu index 9c3d9dbe4..abc7cddab 100644 --- a/resource/ui/menus/FlowstateDM/flowstate_prophunt_scoreboard.menu +++ b/resource/ui/menus/FlowstateDM/flowstate_prophunt_scoreboard.menu @@ -1,4 +1,4 @@ -"scripts/resource/ui/menus/FlowstateDM/flowstate_prophunt_scoreboard.menu" +"scripts/resource/ui/menus/FlowstateDM/fs_prophunt_scoreboard.menu" { "menu" { @@ -117,8 +117,8 @@ "ypos" "%-70" "tall" "50" "wide" "530" - "fillColor" "34 34 34 100" - "drawColor" "30 30 30 100" + "fillColor" "34 34 34 230" + "drawColor" "30 30 30 230" "wrap" "1" "visible" "1" "zpos" "3" diff --git a/resource/ui/menus/FlowstateDM/flowstate_statistics.menu b/resource/ui/menus/FlowstateDM/flowstate_statistics.menu index 459fae857..e2ec96564 100644 --- a/resource/ui/menus/FlowstateDM/flowstate_statistics.menu +++ b/resource/ui/menus/FlowstateDM/flowstate_statistics.menu @@ -173,7 +173,7 @@ scripts/resource/ui/menus/FlowstateDM/flowstate_statistics.menu tall 25 visible 1 fontHeight 25 - labelText "v1.25 | Made by @CafeFPS" + labelText "v1.3 | Made by @CafeFPS" font DefaultBold_41 allcaps 0 fgcolor_override "255 255 255 255" diff --git a/vscripts/_mapeditor.gnut b/vscripts/_mapeditor.gnut index d8afe0cab..4258826f5 100644 --- a/vscripts/_mapeditor.gnut +++ b/vscripts/_mapeditor.gnut @@ -196,11 +196,48 @@ entity function MapEditor_CreateProp(asset a, vector pos, vector ang, bool mantl e.SetScriptName("editor_placed_prop") e.e.gameModeId = realm e.SetModelScale( float02 ) - + e.kv.contents = CONTENTS_PLAYERCLIP | CONTENTS_HITBOX | CONTENTS_OCCLUDESOUND | CONTENTS_BULLETCLIP | CONTENTS_MONSTERCLIP | CONTENTS_SOLID + if(addToArray) MapEditorEnts.append(e) - return e + if(GameRules_GetGameMode() != "fs_duckhunt") + return e + + if( a == $"mdl/foliage/plant_leafy_02.rmdl" && IsValid(e) || a == $"mdl/foliage/plant_tropical_green_large_02.rmdl" && IsValid(e) ) + { + //printt("Disabled solid plant") + e.kv.solid = 0 + } else + { + e.kv.solid = 6 + } + + if( a == $"mdl/imc_base/imc_fan_large_case_01.rmdl" ) + CreateFanPusher(e.GetOrigin()+Vector(0,0,56), e.GetAngles()) + + if( a == $"mdl/industrial/traffic_cone_01.rmdl" ) + { + SpawnKillerWalls(e.GetOrigin()) + e.Destroy() + return null + } + + if( a == $"mdl/industrial/traffic_tube_01.rmdl" ) + { + SpawnMovingPlatform(e.GetOrigin()) + e.Destroy() + return null + } + + if( a == $"mdl/industrial/traffic_barrel_01.rmdl" ) + { + SpawnMovingPlatformWithFanPusher(e.GetOrigin()) + e.Destroy() + return null + } + + return e } array < entity > function MapEditor_SpawnDoor( vector org, vector ang, int type, bool gold = false, bool spawnOpen = false, bool addToArray = false ) diff --git a/vscripts/_mapspawn.gnut b/vscripts/_mapspawn.gnut index 3c807c677..c869311fb 100644 --- a/vscripts/_mapspawn.gnut +++ b/vscripts/_mapspawn.gnut @@ -247,6 +247,8 @@ void function CodeCallback_MapSpawn() // original script entry point PrecacheModel( $"mdl/menu/xp_badge.rmdl" ) PrecacheModel( $"mdl/menu/coin.rmdl" ) PrecacheModel( $"mdl/currency/crafting/currency_crafting_epic.rmdl" ) + PrecacheModel( $"mdl/weapons_r5/loot/_master/w_loot_wep_ammo_sniper.rmdl" ) + //PrecacheModel( $"mdl/weapons_r5/loot/_master/w_loot_wep_ammo_exp.rmdl" ) //Weapons PrecacheWeapon( $"mp_weapon_melee_survival" ) @@ -297,9 +299,14 @@ void function CodeCallback_MapSpawn() // original script entry point PrecacheWeapon( $"mp_weapon_grenade_sonar" ) PrecacheWeapon( $"mp_weapon_grenade_electric_smoke" ) PrecacheWeapon( $"mp_weapon_deployable_cover" ) + PrecacheWeapon( $"mp_weapon_melee_boxing_ring") + PrecacheWeapon( $"melee_boxing_ring") + PrecacheWeapon( $"mp_weapon_throwingknife" ) PrecacheWeapon( $"melee_data_knife" ) PrecacheWeapon( $"melee_bolo_sword" ) PrecacheWeapon( $"mp_weapon_bolo_sword_primary" ) + PrecacheWeapon( $"melee_shadowsquad_hands" ) + PrecacheWeapon( $"mp_weapon_shadow_squad_hands_primary" ) PrecacheWeapon( $"mp_weapon_volt_smg" ) PrecacheWeapon( $"mp_weapon_frag_drone" ) PrecacheWeapon( $"npc_weapon_energy_shotgun" ) diff --git a/vscripts/_remote_functions_mp.gnut b/vscripts/_remote_functions_mp.gnut index c7e8f9816..981f1cc63 100644 --- a/vscripts/_remote_functions_mp.gnut +++ b/vscripts/_remote_functions_mp.gnut @@ -17,6 +17,8 @@ void function RemoteFunctions_Init_Begin() //Custom KillReplay Remote_RegisterClientFunction("ServerCallback_KillReplayHud_Activate") Remote_RegisterClientFunction("ServerCallback_KillReplayHud_Deactivate") + //Update teammates rui + Remote_RegisterClientFunction("UpdateRUITest") //Custom gamemodes switch ( GameRules_GetGameMode() ) diff --git a/vscripts/_utility_shared.nut b/vscripts/_utility_shared.nut index 8e5497727..3a2822763 100644 --- a/vscripts/_utility_shared.nut +++ b/vscripts/_utility_shared.nut @@ -5379,7 +5379,7 @@ bool function IsFallLTM() bool function IsLobbyFallLTM() { - return false //GetCurrentPlaylistVarInt( "menu_fall_ltm", 0 ) == 1 + return GetCurrentPlaylistVarInt( "menu_fall_ltm", 0 ) == 1 } diff --git a/vscripts/ai/sh_dev_npc_settings.gnut b/vscripts/ai/sh_dev_npc_settings.gnut index 250348db4..7d3f81790 100644 --- a/vscripts/ai/sh_dev_npc_settings.gnut +++ b/vscripts/ai/sh_dev_npc_settings.gnut @@ -100,7 +100,7 @@ void function SetupWeapons() SetupDevCommand( "Dev: Dev Cubemap ", "give weapon_cubemap" ) SetupDevCommand( "Dev: Car SMG", "give mp_weapon_car" ) SetupDevCommand( "Dev: Rampage LMG", "give mp_weapon_dragon_lmg" ) - SetupDevCommand( "Dev: 30-30 Repeater", "give mp_weapon_3030" ) + SetupDevCommand( "Dev: Throwing Knife", "give mp_weapon_throwingknife" ) #endif } diff --git a/vscripts/cl_mapspawn.gnut b/vscripts/cl_mapspawn.gnut index 2e26ce163..7927cb654 100644 --- a/vscripts/cl_mapspawn.gnut +++ b/vscripts/cl_mapspawn.gnut @@ -130,10 +130,7 @@ void function ClientCodeCallback_MapSpawn() SV_CL_Shared_Init() //for custom ui/textures by @CafeFPS - if(!IsLobby()) - { - RequestPakFile( "ui_flowstate" ) - } + RequestPakFile( "ui_flowstate" ) } diff --git a/vscripts/cl_survival_inventory.nut b/vscripts/cl_survival_inventory.nut index 7905a26dd..cda4dc3c5 100644 --- a/vscripts/cl_survival_inventory.nut +++ b/vscripts/cl_survival_inventory.nut @@ -384,7 +384,7 @@ void function GroundAction( int lootAction, string guid, bool isAltAction, bool if ( lootEnt.GetNetworkedClassName() != "prop_survival" ) return - if( GameRules_GetGameMode() == "flowstate_aimtrainer" ) //&& + if( GameRules_GetGameMode() == "fs_aimtrainer" ) //&& { LootData lootData = SURVIVAL_Loot_GetLootDataByIndex( lootEnt.GetSurvivalInt() ) @@ -616,7 +616,7 @@ void function SurvivalMenu_Internal( entity player, string uiScript, entity deat if ( IsValid( deathBox ) ) { - if(GameRules_GetGameMode() == "flowstate_aimtrainer") + if(GameRules_GetGameMode() == "fs_aimtrainer") thread StartUpdatingArmorSwapLastTime() thread TrackDistanceFromDeathBox( player, deathBox ) @@ -650,7 +650,7 @@ void function TrackDistanceFromDeathBox( entity player, entity deathBox ) OnThreadEnd( function() : (player) { - if(GameRules_GetGameMode() == "flowstate_aimtrainer") + if(GameRules_GetGameMode() == "fs_aimtrainer") Signal(player, "StopArmorSwapStopwatch") if ( Survival_IsGroundlistOpen() ) @@ -1911,7 +1911,7 @@ void function GroundItemsInit( entity player, array loot ) bool showUpgrades = !sortByType && GetCurrentPlaylistVarBool( "deathbox_show_upgrades", true ) bool splitUnusable = !sortByType && GetCurrentPlaylistVarBool( "deathbox_split_unusable", true ) - if(GameRules_GetGameMode() == "flowstate_aimtrainer") + if(GameRules_GetGameMode() == "fs_aimtrainer") { sortByType = false showUpgrades = false @@ -1920,7 +1920,7 @@ void function GroundItemsInit( entity player, array loot ) foreach ( gd in allItems ) { - if(GameRules_GetGameMode() == "flowstate_aimtrainer") + if(GameRules_GetGameMode() == "fs_aimtrainer") { if ( gd.lootData.ref == "armor_pickup_lv4_all_fast" || gd.lootData.ref == "armor_pickup_lv3" || gd.lootData.ref == "armor_pickup_lv2" || gd.lootData.ref == "armor_pickup_lv1") { @@ -1980,9 +1980,9 @@ void function GroundItemsInit( entity player, array loot ) } file.filteredGroundItems.extend( relevantItems ) - if(GameRules_GetGameMode() == "flowstate_aimtrainer") + if(GameRules_GetGameMode() == "fs_aimtrainer") { - file.filteredGroundItems.append( CreateHeaderData( "SWAP HERE", $"rui/customemotes/amogusred" ) ) + file.filteredGroundItems.append( CreateHeaderData( "SWAP HERE", $"" ) ) file.filteredGroundItems.extend( swapItem ) } diff --git a/vscripts/cl_survival_loot.nut b/vscripts/cl_survival_loot.nut index c978cd52b..76ab01ed4 100644 --- a/vscripts/cl_survival_loot.nut +++ b/vscripts/cl_survival_loot.nut @@ -413,7 +413,7 @@ void function CreateDeathBoxRui( entity deathBox ) expect EHI( ehi ) - if( GameRules_GetGameMode() != "flowstate_aimtrainer" ) + if( GameRules_GetGameMode() != "fs_aimtrainer" ) { clGlobal.levelEnt.Signal( "CreateDeathBoxRui" ) clGlobal.levelEnt.EndSignal( "CreateDeathBoxRui" ) @@ -644,7 +644,7 @@ void function Sur_OnUseEntGainFocus( entity ent ) } else if ( ent.GetTargetName() == DEATH_BOX_TARGETNAME ) { - if( GameRules_GetGameMode() != "flowstate_aimtrainer" ) + if( GameRules_GetGameMode() != "fs_aimtrainer" ) { thread CreateDeathBoxRui( ent ) } diff --git a/vscripts/client/cl_gamestate.gnut b/vscripts/client/cl_gamestate.gnut index bddc65c88..a2c0f8ae3 100644 --- a/vscripts/client/cl_gamestate.gnut +++ b/vscripts/client/cl_gamestate.gnut @@ -199,9 +199,6 @@ void function SetCommonScoreRUIVars( var rui ) RuiSetBool( rui, "shouldDisplayLivingPlayerCount", false ) RuiSetString( rui, "squadsRemainingTextSingular", "PLAYER ONLINE" ) RuiSetString( rui, "squadsRemainingTextPlural", "PLAYERS ONLINE" ) - - // if( GetCurrentPlaylistVarBool("flowstate_1v1mode", false) ) - // RuiSetString( rui, "gameModeString", "APEX 1v1" ) if(GameRules_GetGameMode() == "fs_dm" && !GetCurrentPlaylistVarBool( "flowstate_hackersVsPros", false ) && GetCurrentPlaylistName() != "fs_movementgym" && GetCurrentPlaylistName() != "fs_1v1") RuiSetString( rui, "gameModeString", "FS DEATHMATCH" ) diff --git a/vscripts/client/cl_main_hud.nut b/vscripts/client/cl_main_hud.nut index 41ccb3d2a..447bd3cd3 100644 --- a/vscripts/client/cl_main_hud.nut +++ b/vscripts/client/cl_main_hud.nut @@ -87,8 +87,8 @@ void function ClMainHud_Init() RegisterServerVarChangeCallback( "gameState", UpdateMainHudFromGameState ) AddCallback_OnPlayerLifeStateChanged( UpdateMainHudFromLifeState ) - if(GameRules_GetGameMode() == SURVIVAL ) - RegisterServerVarChangeCallback( "minimapState", UpdateMinimapVisibility ) + + RegisterServerVarChangeCallback( "minimapState", UpdateMinimapVisibility ) AddCinematicEventFlagChangedCallback( CE_FLAG_EMBARK, CinematicEventUpdateDoF ) AddCinematicEventFlagChangedCallback( CE_FLAG_EXECUTION, CinematicEventUpdateDoF ) diff --git a/vscripts/client/cl_minimap.gnut b/vscripts/client/cl_minimap.gnut index 9dd92c546..75f02f68a 100644 --- a/vscripts/client/cl_minimap.gnut +++ b/vscripts/client/cl_minimap.gnut @@ -39,11 +39,8 @@ global function GetMinimapBackgroundTileImage global function SetMapFeatureItem global function RemoveMapFeatureItemByName - global function Minimap_EnableDraw_Internal global function Minimap_DisableDraw_Internal -global function UpdateImageAndScaleOnMinimapRUI - #if DEVELOPER global function DumpMinimapHandles #endif @@ -127,6 +124,8 @@ const int OF_NO_TEAM_COLOR = 1 << 9 void function RegisterMinimapPackage( string entityClassname, int customStateIndex, asset minimapAsset, void functionref( entity, var ) initFunction, asset fullmapAsset = $"", void functionref( entity, var ) fullmapInitFunction = null ) { + if(GetCurrentPlaylistVarBool( "r5reloaded_aimtrainer", false )) return + Assert( (entityClassname in minimapAssetMap), "minimap is not currently setup to handle this type of entity: " + entityClassname ) MinmapPackage minimapPackage @@ -324,15 +323,9 @@ void function ClMinimap_Init() // create unitframe ruis for the fullmap screen // Taking off one of these to save memory. If we ever need to go above a 3 person team, add it back. //file.fullmap_unitframesRui.append( RuiCreate( $"ui/unitframe_survival_v3.rpak", clGlobal.topoFullscreenFullMap, FULLMAP_RUI_DRAW_LAYER, 20 ) ) - if(GameRules_GetGameMode() == "flowstate_snd") - { - file.fullmap_unitframesRui.append( RuiCreate( $"ui/unitframe_survival_v3.rpak", clGlobal.topoFullscreenFullMap, FULLMAP_RUI_DRAW_LAYER, 20 ) ) - file.fullmap_unitframesRui.append( RuiCreate( $"ui/unitframe_survival_v3.rpak", clGlobal.topoFullscreenFullMap, FULLMAP_RUI_DRAW_LAYER, 20 ) ) - } file.fullmap_unitframesRui.append( RuiCreate( $"ui/unitframe_survival_v3.rpak", clGlobal.topoFullscreenFullMap, FULLMAP_RUI_DRAW_LAYER, 20 ) ) file.fullmap_unitframesRui.append( RuiCreate( $"ui/unitframe_survival_v3.rpak", clGlobal.topoFullscreenFullMap, FULLMAP_RUI_DRAW_LAYER, 20 ) ) file.fullmap_unitframesRui.append( RuiCreate( $"ui/unitframe_survival_v3.rpak", clGlobal.topoFullscreenFullMap, FULLMAP_RUI_DRAW_LAYER, 20 ) ) - foreach( rui in file.fullmap_unitframesRui ) { InitHUDRui( rui, false ) @@ -432,9 +425,6 @@ asset function GetFullmapAsset( string className, int customState ) asset function GetMinimapBackgroundTileImage() { - if(GetMapName() == "mp_rr_party_crasher_new") - return $"overviews/mp_rr_canyonlands_bg" - //return $"overviews/mp_rr_canyonlands_64k_x_64k_bg_tile" return file.minimapBackgroundTileImage } @@ -749,7 +739,7 @@ var function Minimap_AddCustomLayer( asset ruiAsset, int sortKey = MINIMAP_Z_LAY void function OnPlayerCreate( entity player ) { entity viewPlayer = GetLocalViewPlayer() - if ( IsValid( viewPlayer ) && viewPlayer.GetTeam() == player.GetTeam() && GameRules_GetGameMode() == SURVIVAL) + if ( IsValid( viewPlayer ) && viewPlayer.GetTeam() == player.GetTeam() ) UpdateFullmapRuiTracks() if ( player != GetLocalClientPlayer() ) @@ -843,7 +833,7 @@ void function OnPlayerCreate( entity player ) RuiSetFloat3( file.minimap_base, "mapCorner", ) RuiSetFloat( file.minimap_base, "displayDist", file.threatMaxDist ) - + RuiSetFloat( file.minimap_base, "mapScale", mapScale ) RuiSetBool( file.minimap_base, "isNorthFacing", !GetConVarBool( "hud_setting_minimapRotate" ) ) RuiSetFloat( file.minimap_base, "minimapSizeScale", file.minimapSizeScale ) RuiSetFloat( file.minimap_frame, "minimapSizeScale", file.minimapSizeScale ) @@ -852,24 +842,6 @@ void function OnPlayerCreate( entity player ) UpdatePlayerRuiTracking( player ) } -void function UpdateImageAndScaleOnMinimapRUI(asset image, float scale) -{ - try{ - if(file.minimap_base != null) - { - RuiSetImage( file.minimap_base, "mapImage", image ) - RuiSetFloat( file.minimap_base, "mapScale", scale ) - - //RuiSetFloat( file.minimap_base, "displayDist", file.threatMaxDist ) - - // if( file.minimap_base != null) - // RuiSetBool( file.minimap_base, "isNorthFacing", true ) - - // if( file.minimap_you != null) - // RuiSetBool( file.minimap_you, "isNorthFacing", true ) - } - }catch(e420){} -} void function Minimap_OnPlayerTeamChanged( entity player, int oldTeam, int newTeam ) { @@ -882,14 +854,9 @@ void function UpdatePlayerRuiTracking( entity player ) Assert( player == GetLocalClientPlayer() ) entity viewPlayer = GetLocalViewPlayer() - - //if(GameRules_GetGameMode() != "flowstate_snd") - //{ - RuiTrackFloat3( file.minimap_base, "playerPos", viewPlayer, RUI_TRACK_ABSORIGIN_FOLLOW ) - RuiTrackFloat3( file.minimap_base, "playerAngles", viewPlayer, RUI_TRACK_CAMANGLES_FOLLOW ) - //} else - // thread HACK_TrackPlayerPositionOnScript( file.minimap_base, viewPlayer, false ) + RuiTrackFloat3( file.minimap_base, "playerPos", viewPlayer, RUI_TRACK_ABSORIGIN_FOLLOW ) + RuiTrackFloat3( file.minimap_base, "playerAngles", viewPlayer, RUI_TRACK_CAMANGLES_FOLLOW ) RuiTrackFloat( file.minimap_base, "minimapZoomScale", player, RUI_TRACK_MINIMAP_ZOOM_SCALE ) RuiSetFloat( file.minimap_base, "minimapSizeScale", file.minimapSizeScale ) RuiSetFloat( file.minimap_frame, "minimapSizeScale", file.minimapSizeScale ) @@ -1368,6 +1335,8 @@ void function Minimap_SetBlankBackground( bool doBlank ) void function Minimap_SetSizeScale( float scale ) { + if(GetCurrentPlaylistVarBool( "r5reloaded_aimtrainer", false )) return + file.minimapSizeScale = scale RuiSetFloat( file.minimap_base, "minimapSizeScale", scale ) @@ -1468,6 +1437,8 @@ void function Minimap_EnableDraw() void function Minimap_DisableDraw_Internal() { + if(GetCurrentPlaylistVarBool( "r5reloaded_aimtrainer", false )) return + file.minimapEnabled = false RuiSetVisible( file.minimap_base, false ) @@ -1489,6 +1460,8 @@ void function Minimap_DisableDraw_Internal() void function Minimap_EnableDraw_Internal() { + if(GetCurrentPlaylistVarBool( "r5reloaded_aimtrainer", false )) return + file.minimapEnabled = true RuiSetVisible( file.minimap_base, true ) @@ -1548,8 +1521,7 @@ void function Fullmap_RemoveRui( var rui ) void function Fullmap_SetVisible( bool state ) { FullMap_UpdateTopologies() - UpdateSurveyBeaconHint() - + UpdateSurveyBeaconHint() // TODO: meh UpdateMapFeatures() UpdateCameraVisibility() @@ -1569,7 +1541,6 @@ void function Fullmap_SetVisible_MapOnly( bool state ) } - bool function Fullmap_IsVisible() { return file.fullmapVisible @@ -1819,4 +1790,4 @@ void function Minimap_UpdateNorthFacingOnSettingChange() { if ( file.minimap_base && file.minimap_you ) Minimap_SetNorthFacing( !GetConVarBool( "hud_setting_minimapRotate" ) ) -} +} \ No newline at end of file diff --git a/vscripts/client/cl_utility.gnut b/vscripts/client/cl_utility.gnut index 2fddaeb4f..b5799ea6b 100644 --- a/vscripts/client/cl_utility.gnut +++ b/vscripts/client/cl_utility.gnut @@ -661,7 +661,7 @@ void function Dev_PrintClientMessage( float duration ) Announcement_SetTitleColor( announcement, Vector(0,0,0) ) } - if( GetCurrentPlaylistName() == "fs_movementgym" ) + if( GetCurrentPlaylistName() == "fs_movementgym" || GetCurrentPlaylistName() == "fs_1v1") { Announcement_SetStyle(announcement, ANNOUNCEMENT_STYLE_SWEEP) Announcement_SetTitleColor( announcement, Vector(0,0,1) ) diff --git a/vscripts/feature_flags_script.gnut b/vscripts/feature_flags_script.gnut index 7ba241265..0b0f2b823 100644 --- a/vscripts/feature_flags_script.gnut +++ b/vscripts/feature_flags_script.gnut @@ -25,6 +25,8 @@ global const table FEATURE_FLAGS_TBL = { HAS_WEAPON_DEFENDER = true, HAS_HALLOWEEN = true, HAS_ENERGY_MAGS = true, + HAS_SKULLPIERCER = true, + HAS_DISRUPTOR_ROUNDS = true, HAS_HIGHCAL_ROUNDS = true, HAS_DOUBLE_TAP = true, HAS_S3_GOLD_GEAR = true, diff --git a/vscripts/gamemodes/fs_1v1/_gamemode_1v1.nut b/vscripts/gamemodes/fs_1v1/_gamemode_1v1.nut index dbfe1abf1..beeb79fc4 100644 --- a/vscripts/gamemodes/fs_1v1/_gamemode_1v1.nut +++ b/vscripts/gamemodes/fs_1v1/_gamemode_1v1.nut @@ -597,10 +597,14 @@ void function giveWeaponInRandomWeaponPool(entity player) GiveRandomPrimaryWeaponMetagame(player) GiveRandomSecondaryWeaponMetagame(player) - player.GiveWeapon( "mp_weapon_bolo_sword_primary", WEAPON_INVENTORY_SLOT_PRIMARY_2, [] ) + player.GiveWeapon( "mp_weapon_melee_boxing_ring", WEAPON_INVENTORY_SLOT_PRIMARY_2, [] ) if(!isPlayerInRestingList(player)) - player.GiveOffhandWeapon( "melee_bolo_sword", OFFHAND_MELEE, [] ) - // group.player2.SetActiveWeaponBySlot(eActiveInventorySlot.mainHand, WEAPON_INVENTORY_SLOT_PRIMARY_0) + player.GiveOffhandWeapon( "melee_boxing_ring", OFFHAND_MELEE, [] ) + + //hack to fix first reload + player.SetActiveWeaponBySlot(eActiveInventorySlot.mainHand, WEAPON_INVENTORY_SLOT_PRIMARY_1) + player.SetActiveWeaponBySlot(eActiveInventorySlot.mainHand, WEAPON_INVENTORY_SLOT_PRIMARY_0) + player.ClearFirstDeployForAllWeapons() } catch (e) {} @@ -648,7 +652,7 @@ void function respawnInSoloMode(entity player, int respawnSlotIndex = -1) //复 TakeAllWeapons(player) thread LoadCustomWeapon(player) } - player.GiveWeapon( "mp_weapon_bolo_sword_primary", WEAPON_INVENTORY_SLOT_PRIMARY_2, [] ) + player.GiveWeapon( "mp_weapon_melee_boxing_ring", WEAPON_INVENTORY_SLOT_PRIMARY_2, [] ) } catch (erroree) { @@ -1099,6 +1103,10 @@ void function soloModeThread(LocPair waitingRoomLocation) while(true) { WaitFrame() + + if( GetScoreboardShowingState() ) + continue + //遍历等待队列 foreach (playerInWatingSctruct in soloPlayersWaiting ) { @@ -1309,6 +1317,10 @@ void function soloModeThread(LocPair waitingRoomLocation) thread respawnInSoloMode(eachPlayer, index) } newGroup.ring = CreateSmallRingBoundary(soloLocations[newGroup.slotIndex].Center) + + if(IsValid(GetMainRingBoundary())) + newGroup.ring.SetParent(GetMainRingBoundary()) + setRealms_1v1(newGroup.ring,newGroup.slotIndex+1) //realms = 0 means visible for everyone,so it should be more than 1 setRealms_1v1(newGroup.player1,newGroup.slotIndex+1) //to ensure realms is more than 0 @@ -1324,4 +1336,41 @@ void function soloModeThread(LocPair waitingRoomLocation) } ) -}//thread \ No newline at end of file +}//thread + +void function ForceAllRoundsToFinish_solomode() +{ + foreach(player in GetPlayerArray()) + { + if(!IsValid(player)) continue + + try{ + if(player.p.isSpectating) + { + player.SetPlayerNetInt( "spectatorTargetCount", 0 ) + player.p.isSpectating = false + player.SetSpecReplayDelay( 0 ) + player.SetObserverTarget( null ) + player.StopObserverMode() + Remote_CallFunction_NonReplay(player, "ServerCallback_KillReplayHud_Deactivate") + player.MakeVisible() + player.ClearInvulnerable() + player.SetTakeDamageType( DAMAGE_YES ) + } + }catch(e420){} + + if(isPlayerInWatingList(player)) + return + + soloGroupStruct group = returnSoloGroupOfPlayer(player) + destroyRingsForGroup(group) + + if(!group.IsKeep) + group.IsFinished = true //tell solo thread this round has finished + + soloModePlayerToWaitingList( player ) + setRealms_1v1(player,64) + } + + soloPlayersInProgress.clear() +} \ No newline at end of file diff --git a/vscripts/gamemodes/fs_aimtrainer/_gamemode_aimtrainer.nut b/vscripts/gamemodes/fs_aimtrainer/_gamemode_aimtrainer.nut index e99b9ccf9..bf6289e77 100644 --- a/vscripts/gamemodes/fs_aimtrainer/_gamemode_aimtrainer.nut +++ b/vscripts/gamemodes/fs_aimtrainer/_gamemode_aimtrainer.nut @@ -485,7 +485,7 @@ void function StartFloatingTargetChallenge(entity player) } //CHALLENGE "Popcorn targets" -void function StartPopcornChallenge(entity player) +void function StartPopcornChallenge(entity player, bool secondvariant = false) { if(!IsValid(player)) return @@ -508,9 +508,12 @@ void function StartPopcornChallenge(entity player) float endtime = Time() + AimTrainer_CHALLENGE_DURATION thread ChallengeWatcherThread(endtime, player) + if(secondvariant) + thread MakePlayerBounce(player) + while(true){ if(!AimTrainer_INFINITE_CHALLENGE && Time() > endtime) break - if(ChallengesEntities.dummies.len()<4) + if(ChallengesEntities.dummies.len()<7) thread CreateDummyPopcornChallenge(player) WaitFrame() } @@ -519,7 +522,7 @@ void function StartPopcornChallenge(entity player) void function CreateDummyPopcornChallenge(entity player) { float r = float(RandomInt(6)) / float(6) * 2 * PI - entity dummy = CreateDummy( 99, player.GetOrigin() + 100 * AimTrainer_SPAWN_DISTANCE * , <0,90,0> ) + entity dummy = CreateDummy( 99, player.GetOrigin() + 50 * AimTrainer_SPAWN_DISTANCE * , <0,90,0> ) EndSignal(dummy, "OnDeath") StartParticleEffectInWorld( GetParticleSystemIndex( FIRINGRANGE_ITEM_RESPAWN_PARTICLE ), dummy.GetOrigin(), dummy.GetAngles() ) @@ -544,12 +547,56 @@ void function CreateDummyPopcornChallenge(entity player) int enemyID = GetParticleSystemIndex( $"P_enemy_jump_jet_ON_trails" ) entity enemyFX = StartParticleEffectOnEntity_ReturnEntity( dummy, enemyID, FX_PATTACH_POINT_FOLLOW, dummy.LookupAttachment( attachment ) ) } + thread CheckDistanceFromPlayer(player, dummy) + while(IsValid(ai)){ + if( ai.GetOrigin().z - floorLocation.z < 50) + { + vector angles2 = VectorToAngles( Vector(player.GetOrigin().x, player.GetOrigin().y, floorCenterForPlayer.z) - ai.GetOrigin()) + ai.SetAngles(Vector(0, angles2.y, 0)) + + if(CoinFlip()) + random = 1 + else + random = -1 + + int random2 = RandomIntRangeInclusive(1,5) + if(random2 == 5 || random2 == 4) + ai.SetVelocity(AnglesToForward( angles2 ) * 128 + AnglesToUp(angles2)*RandomFloatRange(512,1024)) + else + ai.SetVelocity((AnglesToRight( angles2 ) * RandomFloatRange(128,256) * random ) + AnglesToUp(angles2)*RandomFloatRange(512,1024)) + + EmitSoundOnEntity( ai, "JumpPad_LaunchPlayer_3p" ) + } + WaitFrame() + } +} +void function CheckDistanceFromPlayer(entity player, entity ai) +{ + while( IsValid(ai) ) + { + if( Distance( player.GetOrigin(), ai.GetOrigin() ) > 1500) + { + ChallengesEntities.dummies.removebyvalue(ai) + ai.Destroy() + break + } + + WaitFrame() + } +} + +void function MakePlayerBounce(entity player) +{ + EndSignal(player, "ChallengeTimeOver") + + entity ai = player + int random = 1 + if(CoinFlip()) random = -1 while(IsValid(ai)){ if( ai.GetOrigin().z - floorLocation.z < 50) { - vector angles2 = VectorToAngles( player.GetOrigin() - ai.GetOrigin()) - ai.SetAngles(angles2) + vector angles2 = player.GetAngles() if(CoinFlip()) random = 1 @@ -565,7 +612,7 @@ void function CreateDummyPopcornChallenge(entity player) EmitSoundOnEntity( ai, "JumpPad_LaunchPlayer_3p" ) } WaitFrame() - } + } } //CHALLENGE "Shooting Valk's ult" @@ -2090,7 +2137,12 @@ void function DummyRunningTargetsMovement(entity ai, entity player) void function StartArmorSwapChallenge(entity player) { if(!IsValid(player)) return - player.SetOrigin(onGroundLocationPos) + + if( GetMapName() == "mp_rr_desertlands_64k_x_64k" || GetMapName() == "mp_rr_desertlands_64k_x_64k_nx" || GetMapName() == "mp_rr_desertlands_64k_x_64k_tt" ) + player.SetOrigin(<10377.2695, 6253.86523, -4303.90625>) + else + player.SetOrigin(onGroundLocationPos) + player.SetAngles(onGroundLocationAngs) EndSignal(player, "ChallengeTimeOver") @@ -2107,9 +2159,6 @@ void function StartArmorSwapChallenge(entity player) array circleLocations = NavMesh_RandomPositions( player.GetOrigin(), HULL_HUMAN, 10, 20*AimTrainer_SPAWN_DISTANCE, 50*AimTrainer_SPAWN_DISTANCE ) - float endtime = Time() + AimTrainer_CHALLENGE_DURATION - thread ChallengeWatcherThread(endtime, player) - WaitFrame() while(true){ array NewcircleLocations = NavMesh_RandomPositions( AimTrainerOriginToGround( ), HULL_HUMAN, 10, 20*AimTrainer_SPAWN_DISTANCE, 50*AimTrainer_SPAWN_DISTANCE ) @@ -2118,25 +2167,20 @@ void function StartArmorSwapChallenge(entity player) circleLocations.clear() circleLocations = NewcircleLocations } - if(!AimTrainer_INFINITE_CHALLENGE && Time() > endtime) break foreach(deathbox in ChallengesEntities.dummies) if(!IsValid(deathbox)) ChallengesEntities.dummies.removebyvalue(deathbox) - while(ChallengesEntities.dummies.len()<5){ + while(ChallengesEntities.dummies.len()<4){ vector org1 = player.GetOrigin() int locationindex = RandomInt(circleLocations.len()) - vector org2 = circleLocations[locationindex] - vector vec2 = org1 - org2 - - int random = 1 - if(CoinFlip()) random = -1 - vector angles2 = AnglesToRight(VectorToAngles(vec2))*90*random - + vector circleoriginfordeathbox = circleLocations[locationindex] + NewcircleLocations.removebyvalue( circleoriginfordeathbox ) + entity deathbox = CreateAimtrainerDeathbox( player, circleoriginfordeathbox) ChallengesEntities.dummies.append(deathbox) @@ -2192,7 +2236,8 @@ entity function CreateAimtrainerDeathbox( entity player, vector origin) entity function FlowState_CreateDeathBox( entity player, vector origin) { - entity box = CreatePropDeathBox_NoDispatchSpawn( DEATH_BOX, origin, <0, 45, 0>, 6 ) + int randomyaw = RandomIntRange(-360,360) + entity box = CreatePropDeathBox_NoDispatchSpawn( DEATH_BOX, origin, <0, randomyaw, 0>, 6 ) box.kv.fadedist = 10000 SetTargetName( box, DEATH_BOX_TARGETNAME ) @@ -2203,9 +2248,8 @@ entity function FlowState_CreateDeathBox( entity player, vector origin) box.SetUsableValue( USABLE_BY_ALL | USABLE_CUSTOM_HINTS ) box.SetOwner( player ) box.SetNetInt( "ownerEHI", player.GetEncodedEHandle() ) - //box.AllowMantle() - box.SetNetBool( "overrideRUI", false ) + box.SetNetBool( "overrideRUI", true ) array coolDevs = [ "R5R_CafeFPS", @@ -2222,7 +2266,7 @@ entity function FlowState_CreateDeathBox( entity player, vector origin) ] box.SetCustomOwnerName( coolDevs.getrandom() ) - box.SetNetInt( "characterIndex", ConvertItemFlavorToLoadoutSlotContentsIndex( Loadout_CharacterClass() , LoadoutSlot_GetItemFlavor( ToEHI( player ) , Loadout_CharacterClass() ) ) ) + box.SetNetInt( "characterIndex", RandomInt(10) ) Highlight_SetNeutralHighlight( box, "sp_objective_entity" ) Highlight_ClearNeutralHighlight( box ) @@ -2230,7 +2274,8 @@ entity function FlowState_CreateDeathBox( entity player, vector origin) vector restPos = box.GetOrigin() vector fallPos = restPos + < 0, 0, 54 > - thread (void function( entity box , vector restPos , vector fallPos) { + thread function() : (box , restPos , fallPos, randomyaw) + { entity mover = CreateScriptMover( restPos, box.GetAngles(), 0 ) if ( IsValid( box ) ) { @@ -2241,12 +2286,13 @@ entity function FlowState_CreateDeathBox( entity player, vector origin) if ( IsValid( box ) ) mover.NonPhysicsMoveTo( restPos, 0.5, 0.5, 0.0 ) wait 0.5 + // mover.NonPhysicsRotateTo( Vector(0, randomyaw, anglesonground.z), 0.5, 0.5, 0.0 ) + // wait 0.5 if ( IsValid( box ) ) box.ClearParent() if ( IsValid( mover ) ) mover.Destroy() - - }) ( box , restPos , fallPos) + } () return box } @@ -2819,7 +2865,7 @@ bool function CC_StartChallenge7( entity player, array args ) bool function CC_StartChallenge8( entity player, array args ) { PreChallengeStart(player, 13) - // thread StartTapyDuckStrafesChallenge(player) + thread StartPopcornChallenge(player, true) return false } bool function CC_StartChallenge1NewC( entity player, array args ) diff --git a/vscripts/gamemodes/fs_aimtrainer/cl_gamemode_aimtrainer.nut b/vscripts/gamemodes/fs_aimtrainer/cl_gamemode_aimtrainer.nut index 0da85dc9b..8e4cd8fee 100644 --- a/vscripts/gamemodes/fs_aimtrainer/cl_gamemode_aimtrainer.nut +++ b/vscripts/gamemodes/fs_aimtrainer/cl_gamemode_aimtrainer.nut @@ -305,7 +305,7 @@ string function ReturnChallengeName(int index) final = "SMOOTHBOT" break case 13: - final = "TODO" + final = "BOUNCES SIMULATOR" break case 14: final = "GRENADES PRACTICE" @@ -317,7 +317,7 @@ string function ReturnChallengeName(int index) final = "RUNNING TARGETS" break case 17: - final = "TODO" + final = "ARMOR SWAP" break case 0: default: @@ -535,6 +535,15 @@ void function ToggleArmorSwapUI(bool toggle) Hud_SetVisible(HudElement( "BestTimeValue" ), toggle) Hud_SetVisible(HudElement( "AverageTime" ), toggle) Hud_SetVisible(HudElement( "AverageTimeValue" ), toggle) + + if(toggle) + { + thread function():() + { + wait 3 + AimTrainer_QuickHint( "Move to spawn new deathboxes", true, 5 ) + }() + } } void function StartUpdatingArmorSwapLastTime() //create a new struct and function to calculate the elapsed times @@ -885,7 +894,7 @@ void function StartChallenge8Client() { entity player = GetLocalClientPlayer() ScreenFade( player, 0, 0, 0, 255, 1, 1, FFADE_IN | FFADE_PURGE ) - thread CreateDescriptionRUI("Hitscan auto weapon recommended. Hit the dummies to get points.") + thread CreateDescriptionRUI("Hit the dummies to get points.") thread CreateTimerRUIandSTATS() player.ClientCommand("CC_StartChallenge8") } diff --git a/vscripts/gamemodes/fs_duckhunt/_gamemode_duckhunt.nut b/vscripts/gamemodes/fs_duckhunt/_gamemode_duckhunt.nut index 045ed6ec0..5e115e651 100644 --- a/vscripts/gamemodes/fs_duckhunt/_gamemode_duckhunt.nut +++ b/vscripts/gamemodes/fs_duckhunt/_gamemode_duckhunt.nut @@ -10,6 +10,8 @@ global function SpawnKillerWalls global function SpawnMovingPlatform global function SpawnMovingPlatformWithFanPusher +const int MAX_DUCKS_PLAYERS = 2 + struct { float endTime = 0 bool InProgress = false @@ -77,10 +79,6 @@ void function _GamemodeDuckhunt_Init() AddCallback_EntitiesDidLoad( _OnEntitiesDidLoad ) - AddClientCommandCallback("next_round", ClientCommand_NextRoundDUCKHUNT) - AddClientCommandCallback("sethunter", ClientCommand_AskForHunterTemp) - AddClientCommandCallback("kickplayer", ClientCommand_DuckHuntKick) - PrecacheParticleSystem( $"P_s2s_flap_wind" ) PrecacheParticleSystem($"P_impact_shieldbreaker_sparks") RegisterSignal("EndLobbyDistanceThread") @@ -104,17 +102,17 @@ void function _OnPlayerConnected(entity player) AddEntityCallback_OnDamaged( player, OnPlayerDamaged ) - // int maxplayers = GetPlayerArray().len() - // int idealImc = int(min(ceil(float(maxplayers) / float(4)), 2.0)) - // int idealMilitia = maxplayers - idealImc + int maxplayers = GetPlayerArray().len() + int idealImc = int(min(ceil(float(maxplayers) / float(4)), float(MAX_DUCKS_PLAYERS))) + int idealMilitia = maxplayers - idealImc - // if(GetPlayerArrayOfTeam(TEAM_MILITIA).len() < idealMilitia) - // { - SetTeam(player, TEAM_MILITIA ) - // }else - // { - // SetTeam(player, TEAM_IMC ) - // } + if(GetPlayerArrayOfTeam(TEAM_MILITIA).len() < idealMilitia) + { + SetTeam(player, TEAM_MILITIA ) + }else + { + SetTeam(player, TEAM_IMC ) + } switch(GetGameState()) { @@ -206,6 +204,7 @@ void function _OnPlayerConnected(entity player) break } + Remote_CallFunction_NonReplay( player, "UpdateRUITest") UpdatePlayerCounts() } @@ -533,14 +532,14 @@ void function StartSpectatingDuckhunt( entity player, entity attacker, bool From void function _HandleTeamForAllPlayers() { - // int maxplayers = GetPlayerArray().len() - // int idealImc = int(min(ceil(float(maxplayers) / float(4)), 2.0)) - // int idealMilitia = maxplayers - idealImc + int maxplayers = GetPlayerArray().len() + int idealImc = int(min(ceil(float(maxplayers) / float(4)), float(MAX_DUCKS_PLAYERS))) + int idealMilitia = maxplayers - idealImc - // printt("Ideal IMC and MILITIA count for this round: " + idealImc + " " + idealMilitia) + printt("Ideal IMC and MILITIA count for this round: " + idealImc + " " + idealMilitia) - // int imc = 0 - // int mil = 0 + int imc = 0 + int mil = 0 array players = GetPlayerArray() players.randomize() @@ -549,21 +548,23 @@ void function _HandleTeamForAllPlayers() { if(!IsValid(player)) continue - if(player.p.askedForHunter) - SetTeam(player, TEAM_IMC ) + // if(player.p.askedForHunter) + // SetTeam(player, TEAM_IMC ) + + // if(!player.p.askedForHunter) + // SetTeam(player, TEAM_MILITIA ) - if(!player.p.askedForHunter) + if(mil < idealMilitia) + { SetTeam(player, TEAM_MILITIA ) + mil++ + }else + { + SetTeam(player, TEAM_IMC ) + imc++ + } - // if(mil < idealMilitia) - // { - // SetTeam(player, TEAM_MILITIA ) - // mil++ - // }else - // { - // SetTeam(player, TEAM_IMC ) - // imc++ - // } + Remote_CallFunction_NonReplay( player, "UpdateRUITest") } } @@ -642,7 +643,7 @@ void function DUCKHUNT_Lobby() thread CheckDistanceWhileInLobby(player) Remote_CallFunction_NonReplay(player, "DUCKHUNT_Timer", false, 0) - Remote_CallFunction_NonReplay(player, "ToggleSetHunterClient", true) + //Remote_CallFunction_NonReplay(player, "ToggleSetHunterClient", true) } Signal(svGlobal.levelEnt, "EndScriptedPropsThread") @@ -686,7 +687,7 @@ void function DUCKHUNT_GameLoop() { if(!IsValid(player)) continue - Remote_CallFunction_NonReplay(player, "ToggleSetHunterClient", false) + //Remote_CallFunction_NonReplay(player, "ToggleSetHunterClient", false) if(player.GetTeam() == TEAM_IMC) Remote_CallFunction_NonReplay( player, "DUCKHUNT_CustomHint", 4, 0) @@ -1270,51 +1271,4 @@ void function SpawnMovingPlatformWithFanPusher(vector origin) // wait timemoving // } // }() -} - -bool function ClientCommand_NextRoundDUCKHUNT(entity player, array args) -{ - if( player.GetPlayerName() != FlowState_Hoster() ) return false - - SetGameState(eGameState.MapVoting) - - return true -} - -bool function ClientCommand_AskForHunterTemp(entity player, array < string > args) -{ - if( !IsValid(player) || IsValid(player) && player.p.askedForHunter || GetGameState() != eGameState.MapVoting ) return false - - player.p.askedForHunter = true - Message(player, "You're a hunter now", "") - Remote_CallFunction_NonReplay(player, "ToggleSetHunterClient", false) - - foreach( sPlayer in GetPlayerArray() ) - { - if(!IsValid(sPlayer)) continue - - Remote_CallFunction_NonReplay( sPlayer, "DUCKHUNT_CustomHint", 2, player.GetEncodedEHandle()) - } - - return true -} - -bool function ClientCommand_DuckHuntKick(entity player, array < string > args) -{ - if (player.GetPlayerName() != "AeonFMC" && player.GetPlayerName() != "r5r_ColombiaFPS" || args.len() == 0) return false - - thread function () : (args, player) - { - foreach(sPlayer in GetPlayerArray()) { - if (sPlayer.GetPlayerName() == args[0]) { - Warning("[Flowstate] -> Kicking " + sPlayer.GetPlayerName() + " from flowstate.") - - SetPlayerEliminated( sPlayer ) - - if(IsValid(sPlayer)) - ClientCommand( sPlayer, "disconnect" ) - } - } - }() - return false } \ No newline at end of file diff --git a/vscripts/gamemodes/fs_prophunt/_gamemode_prophunt.nut b/vscripts/gamemodes/fs_prophunt/_gamemode_prophunt.nut index 080e46bcf..f7565aadd 100644 --- a/vscripts/gamemodes/fs_prophunt/_gamemode_prophunt.nut +++ b/vscripts/gamemodes/fs_prophunt/_gamemode_prophunt.nut @@ -1805,33 +1805,39 @@ void function RingDamage( entity circle, float currentRadius) bool function ClientCommand_NextRoundPROPHUNT(entity player, array args) { - if(player.GetPlayerName() == FlowState_Hoster() || player.GetPlayerName() == FlowState_Admin1() || player.GetPlayerName() == FlowState_Admin2() || player.GetPlayerName() == FlowState_Admin3() || player.GetPlayerName() == FlowState_Admin4()) - { - if (args.len()) { - string now = args[0] - if (now == "now") - { - SetTdmStateToNextRound() - } + // if(player.GetPlayerName() == FlowState_Hoster() || player.GetPlayerName() == FlowState_Admin1() || player.GetPlayerName() == FlowState_Admin2() || player.GetPlayerName() == FlowState_Admin3() || player.GetPlayerName() == FlowState_Admin4()) + // { + // if (args.len()) { + // string now = args[0] + // if (now == "now") + // { + // SetTdmStateToNextRound() + // } - if(args.len() > 1){ - now = args[1] - if (now == "now") - { - SetTdmStateToNextRound() - } - } - } - } - else { - return false - } + // if(args.len() > 1){ + // now = args[1] + // if (now == "now") + // { + // SetTdmStateToNextRound() + // } + // } + // } + // } + // else { + // return false + // } return true } bool function ClientCommand_VoteForMap_PROPHUNT(entity player, array args) { + if( !IsValid(player) ) + return false + + if( args.len() != 1 ) + return false + // don't allow multiple votes if ( FS_PROPHUNT.votedPlayers.contains( player ) ) return false @@ -2170,9 +2176,9 @@ bool function ClientCommand_PROPHUNT_AskForTeam(entity player, array < string > bool function ClientCommand_PROPHUNT_debugProphuntModels(entity player, array < string > args) { - player.SetBodyModelOverride( prophuntAssets[int(args[0])] ) - player.SetArmsModelOverride( prophuntAssets[int(args[0])] ) - player.p.PROPHUNT_LastPropEntity.SetModel( prophuntAssets[int(args[0])] ) + // player.SetBodyModelOverride( prophuntAssets[int(args[0])] ) + // player.SetArmsModelOverride( prophuntAssets[int(args[0])] ) + // player.p.PROPHUNT_LastPropEntity.SetModel( prophuntAssets[int(args[0])] ) return true } @@ -2184,10 +2190,10 @@ void function PROPHUNT_GiveRandomPrimaryWeapon(entity player) int slot = WEAPON_INVENTORY_SLOT_PRIMARY_0 array Weapons = [ - "mp_weapon_wingman optic_cq_hcog_classic highcal_mag_l2", + "mp_weapon_wingman optic_cq_hcog_classic sniper_mag_l2", "mp_weapon_r97 optic_cq_hcog_classic bullets_mag_l2 stock_tactical_l2 barrel_stabilizer_l1", "mp_weapon_pdw optic_cq_hcog_classic highcal_mag_l3 stock_tactical_l3", - "mp_weapon_wingman optic_cq_hcog_classic highcal_mag_l3", + "mp_weapon_wingman optic_cq_hcog_classic sniper_mag_l3", "mp_weapon_vinson stock_tactical_l2 highcal_mag_l3", "mp_weapon_hemlok optic_cq_hcog_classic stock_tactical_l2 highcal_mag_l2 barrel_stabilizer_l2", "mp_weapon_lmg barrel_stabilizer_l1 stock_tactical_l3", diff --git a/vscripts/gamemodes/fs_tdm/_gamemode_fsdm.nut b/vscripts/gamemodes/fs_tdm/_gamemode_fsdm.nut index d634dd712..30c1de306 100644 --- a/vscripts/gamemodes/fs_tdm/_gamemode_fsdm.nut +++ b/vscripts/gamemodes/fs_tdm/_gamemode_fsdm.nut @@ -41,11 +41,16 @@ global function WpnAutoReload global function ReCheckGodMode global function GetBestPlayer global function SendScoreboardToClient +global function GetMainRingBoundary +global function GetScoreboardShowingState +global function is1v1EnabledAndAllowed const string WHITE_SHIELD = "armor_pickup_lv1" const string BLUE_SHIELD = "armor_pickup_lv2" const string PURPLE_SHIELD = "armor_pickup_lv3" + global bool VOTING_PHASE_ENABLE = true +global bool SCOREBOARD_ENABLE = true //TDM Saved Weapon List global table weaponlist @@ -65,7 +70,7 @@ enum eTDMState } struct { - string scriptversion = "v3.5" + string scriptversion = "" int tdmState = eTDMState.IN_PROGRESS int nextMapIndex = 0 bool mapIndexChanged = true @@ -107,6 +112,7 @@ struct // Voting array votedPlayers // array of players that have already voted (bad var name idc) bool votingtime = false + bool scoreboardShowing = false bool votestied = false array mapVotes array mapIds @@ -121,6 +127,8 @@ struct void function _CustomTDM_Init() { + file.scriptversion = FLOWSTATE_VERSION + RegisterSignal("NewKillOnPlayerStreak") if(GetCurrentPlaylistVarBool("enable_global_chat", true)) SetConVarBool("sv_forceChatToTeamOnly", false) //thanks rexx @@ -136,12 +144,14 @@ void function _CustomTDM_Init() if (GetCurrentPlaylistName() == "fs_movementgym") { VOTING_PHASE_ENABLE = false + SCOREBOARD_ENABLE = false PrecacheMovementGymProps() } - if( GetCurrentPlaylistVarBool("flowstate_1v1mode", false) ) + if( GetCurrentPlaylistVarBool("flowstate_1v1mode", false) || FlowState_LockPOI() ) { VOTING_PHASE_ENABLE = false + SCOREBOARD_ENABLE = true } PrecacheDEAFPSMapProps() @@ -737,7 +747,9 @@ void function _OnPlayerDied(entity victim, entity attacker, var damageInfo) if(!group.IsKeep) group.IsFinished = true //tell solo thread this round has finished + ClearInvincible(victim) + int invscore = victim.GetPlayerGameStat( PGS_DEATHS ) invscore++ victim.SetPlayerGameStat( PGS_DEATHS, invscore) @@ -986,9 +998,17 @@ void function _HandleRespawn(entity player, bool isDroppodSpawn = false) if( IsValid( player ) && IsAlive(player)) { - if(!isDroppodSpawn) + if( !isDroppodSpawn && !is1v1EnabledAndAllowed() ) TpPlayerToSpawnPoint(player) + + if( is1v1EnabledAndAllowed() ) + { + LocPair waitingRoomLocation = getWaitingRoomLocation(GetMapName()) + if (!IsValid(waitingRoomLocation)) return + maki_tp_player(player, waitingRoomLocation) + } + player.UnfreezeControlsOnServer() if(FlowState_RandomGunsEverydie() && FlowState_FIESTAShieldsStreak()) @@ -1098,7 +1118,8 @@ void function _HandleRespawn(entity player, bool isDroppodSpawn = false) player.GiveOffhandWeapon("mp_ability_grapple", OFFHAND_TACTICAL, []) } - + WpnPulloutOnRespawn(player, 0) + player.SetActiveWeaponBySlot(eActiveInventorySlot.mainHand, WEAPON_INVENTORY_SLOT_PRIMARY_2) thread Flowstate_GrantSpawnImmunity(player, 2.5) thread LoadCustomWeapon(player) ///TDM Auto-Reloaded Saved Weapons at Respawn @@ -1130,7 +1151,7 @@ void function TpPlayerToSpawnPoint(entity player) void function Flowstate_GrantSpawnImmunity(entity player, float duration) { - if(!IsValid(player) || !IsValid(player) && !player.IsPlayer()) return + if(!IsValid(player) || !IsValid(player) && !player.IsPlayer() || is1v1EnabledAndAllowed() ) return // thread WpnPulloutOnRespawn(player, duration) @@ -1219,7 +1240,10 @@ void function WpnPulloutOnRespawn(entity player, float duration) weapon.SetWeaponCharm( $"mdl/props/charm/charm_nessy.rmdl", "CHARM") player.SetActiveWeaponBySlot(eActiveInventorySlot.mainHand, WEAPON_INVENTORY_SLOT_PRIMARY_0) } - + + player.SetActiveWeaponBySlot(eActiveInventorySlot.mainHand, WEAPON_INVENTORY_SLOT_PRIMARY_1) + player.SetActiveWeaponBySlot(eActiveInventorySlot.mainHand, WEAPON_INVENTORY_SLOT_PRIMARY_0) + player.ClearFirstDeployForAllWeapons() //maki script // HolsterAndDisableWeapons(player) // wait duration-0.2 @@ -1313,6 +1337,7 @@ void function __GiveWeapon( entity player, array WeaponData, int slot, i { player.ReplaceActiveWeapon(slot, weaponclass, Mods) player.SetActiveWeaponBySlot(eActiveInventorySlot.mainHand, WEAPON_INVENTORY_SLOT_PRIMARY_0) + player.ClearFirstDeployForAllWeapons() } }catch(e420){ printt("Invalid weapon name for tgive command.") @@ -1365,14 +1390,14 @@ void function GiveRandomSecondaryWeaponMetagame(entity player) int slot = WEAPON_INVENTORY_SLOT_PRIMARY_1 array Weapons = [ - "mp_weapon_wingman optic_cq_hcog_classic highcal_mag_l2", + "mp_weapon_wingman optic_cq_hcog_classic sniper_mag_l2", // "mp_weapon_rspn101 optic_cq_hcog_bruiser barrel_stabilizer_l4_flash_hider stock_tactical_l1 bullets_mag_l2", "mp_weapon_rspn101 optic_cq_hcog_classic stock_tactical_l1 bullets_mag_l2", "mp_weapon_vinson optic_cq_hcog_classic stock_tactical_l1 highcal_mag_l1", - "mp_weapon_wingman optic_cq_hcog_classic highcal_mag_l2", + "mp_weapon_wingman optic_cq_hcog_classic sniper_mag_l2", "mp_weapon_rspn101 optic_cq_hcog_classic stock_tactical_l1 bullets_mag_l2", "mp_weapon_vinson optic_cq_hcog_classic stock_tactical_l2 highcal_mag_l1", - "mp_weapon_wingman optic_cq_hcog_classic highcal_mag_l2", + "mp_weapon_wingman optic_cq_hcog_classic sniper_mag_l2", "mp_weapon_rspn101 optic_cq_hcog_classic stock_tactical_l1 bullets_mag_l2", "mp_weapon_vinson optic_cq_hcog_classic stock_tactical_l1 highcal_mag_l1", //"mp_weapon_esaw optic_cq_hcog_bruiser energy_mag_l1 hopup_turbocharger", @@ -1395,10 +1420,10 @@ void function GiveRandomPrimaryWeapon(entity player) int slot = WEAPON_INVENTORY_SLOT_PRIMARY_0 array Weapons = [ - "mp_weapon_wingman optic_cq_hcog_classic highcal_mag_l2", + "mp_weapon_wingman optic_cq_hcog_classic sniper_mag_l2", "mp_weapon_r97 optic_cq_threat bullets_mag_l2 stock_tactical_l2 barrel_stabilizer_l1", "mp_weapon_pdw optic_cq_threat highcal_mag_l3 stock_tactical_l3", - "mp_weapon_wingman optic_cq_hcog_classic highcal_mag_l3", + "mp_weapon_wingman optic_cq_hcog_classic sniper_mag_l3", "mp_weapon_vinson stock_tactical_l2 highcal_mag_l3", "mp_weapon_hemlok optic_cq_hcog_classic stock_tactical_l2 highcal_mag_l2 barrel_stabilizer_l2", "mp_weapon_lmg barrel_stabilizer_l1 stock_tactical_l3", @@ -1454,7 +1479,7 @@ void function GiveActualGungameWeapon(int index, entity player) array Weapons = [ "mp_weapon_r97 optic_cq_hcog_classic barrel_stabilizer_l4_flash_hider stock_tactical_l3 bullets_mag_l2", - "mp_weapon_wingman optic_cq_hcog_classic highcal_mag_l1", + "mp_weapon_wingman optic_cq_hcog_classic sniper_mag_l1", "mp_weapon_rspn101 optic_cq_hcog_bruiser barrel_stabilizer_l4_flash_hider stock_tactical_l3 bullets_mag_l2", "mp_weapon_energy_shotgun shotgun_bolt_l1", "mp_weapon_vinson optic_cq_hcog_bruiser stock_tactical_l3 highcal_mag_l3", @@ -1473,13 +1498,13 @@ void function GiveActualGungameWeapon(int index, entity player) //"mp_weapon_esaw optic_cq_hcog_bruiser energy_mag_l1 barrel_stabilizer_l2", "mp_weapon_doubletake energy_mag_l3", "mp_weapon_rspn101 optic_cq_hcog_classic bullets_mag_l1 barrel_stabilizer_l1 stock_tactical_l1", - "mp_weapon_wingman highcal_mag_l1", + "mp_weapon_wingman sniper_mag_l1", "mp_weapon_shotgun", "mp_weapon_energy_shotgun", "mp_weapon_vinson stock_tactical_l1 highcal_mag_l2", "mp_weapon_r97 optic_cq_threat bullets_mag_l1 barrel_stabilizer_l3 stock_tactical_l1", "mp_weapon_autopistol", - "mp_weapon_dmr optic_cq_hcog_bruiser highcal_mag_l2 barrel_stabilizer_l2 stock_sniper_l3", + "mp_weapon_dmr optic_cq_hcog_bruiser sniper_mag_l2 barrel_stabilizer_l2 stock_sniper_l3", "mp_weapon_pdw stock_tactical_l1 highcal_mag_l1", //"mp_weapon_esaw optic_cq_hcog_classic energy_mag_l1 barrel_stabilizer_l4_flash_hider", "mp_weapon_alternator_smg optic_cq_hcog_classic barrel_stabilizer_l2", @@ -2068,8 +2093,9 @@ void function SimpleChampionUI() int choice = file.nextMapIndex file.mapIndexChanged = false - - file.selectedLocation = file.locationSettings[ FS_DM.mappicked ] + + if( !FlowState_LockPOI() ) + file.selectedLocation = file.locationSettings[ FS_DM.mappicked ] if( FlowState_EnableMovementGym() ) { @@ -2106,13 +2132,16 @@ void function SimpleChampionUI() DestroyPlayerProps() CreateFlowStateGroundMedKit( <17247,31823,-310>, ZERO_VECTOR , 3 , FlowState_ExtrashieldsSpawntime() ) thread SkillTrainerLoad() - } else if(file.selectedLocation.name == "Skill trainer By CafeFPS" ) + } + + switch(file.selectedLocation.name) { - //printt("Flowstate DEBUG - creating props for Skill Trainer.") + case "Skill trainer By CafeFPS": DestroyPlayerProps() thread SkillTrainerLoad() - } else if(file.selectedLocation.name == "Brightwater By Zer0bytes" ) - { + break + + case "Brightwater By Zer0bytes": //printt("Flowstate DEBUG - creating props for Brightwater.") isBrightWaterByZer0 = true DestroyPlayerProps() @@ -2123,71 +2152,82 @@ void function SimpleChampionUI() thread BrightwaterLoad2() wait 1.5 thread BrightwaterLoad3() - } else if(file.selectedLocation.name == "Cave By BlessedSeal" ) - { - //printt("Flowstate DEBUG - creating props for Cave.") + break + + case "Cave By BlessedSeal": DestroyPlayerProps() thread SpawnEditorPropsSeal() - } else if( file.selectedLocation.name == "Gaunlet" && FlowState_ExtrashieldsEnabled() ) - { - DestroyPlayerProps() - //printt("Flowstate DEBUG - creating Gaunlet Extrashield.") - CreateFlowStateGroundMedKit( <-21289, -12030, 3060>, ZERO_VECTOR, 3 , FlowState_ExtrashieldsSpawntime() ) - } else if ( file.selectedLocation.name == "White Forest By Zer0Bytes" ) - { + break + + case "Gaunlet": + if(FlowState_ExtrashieldsEnabled()) + CreateFlowStateGroundMedKit( <-21289, -12030, 3060>, ZERO_VECTOR, 3 , FlowState_ExtrashieldsSpawntime() ) + break + + case "White Forest By Zer0Bytes": DestroyPlayerProps() - //printt("Flowstate DEBUG - creating props for White Forest.") thread SpawnWhiteForestProps() - } else if ( file.selectedLocation.name == "Custom map by Biscutz" ) - { + break + + case "Custom map by Biscutz": DestroyPlayerProps() - //printt("Flowstate DEBUG - creating props for Map by Biscutz.") thread LoadMapByBiscutz1() thread LoadMapByBiscutz2() - } else if ( file.selectedLocation.name == "Shipment By AyeZee" ) - { + break + + case "Shipment By AyeZee": DestroyPlayerProps() wait 1 thread Shipment() - } else if ( file.selectedLocation.name == "Killhouse By AyeZee" ) - { + break + + case "Killhouse By AyeZee": DestroyPlayerProps() wait 1 thread Killhouse() - } else if (file.selectedLocation.name == "Nuketown By AyeZee") - { + break + + case "Nuketown By AyeZee": DestroyPlayerProps() wait 1 thread nuketown() - } else if (file.selectedLocation.name == "Killyard") - { + break + + case "Killyard": DestroyPlayerProps() wait 1 thread Killyard() - } else if (file.selectedLocation.name == "Dustment by DEAFPS") - { + break + + case "Dustment by DEAFPS": DestroyPlayerProps() wait 1 thread Dustment() - } else if (file.selectedLocation.name == "Shoothouse by DEAFPS") - { + break + + case "Shoothouse by DEAFPS": DestroyPlayerProps() wait 1 thread Shoothouse() - } else if (file.selectedLocation.name == "Rust By DEAFPS") - { + break + + case "Rust By DEAFPS": DestroyPlayerProps() wait 1 thread Rust() - } else if (file.selectedLocation.name == "Noshahr Canals by DEAFPS") - { + break + + case "Noshahr Canals by DEAFPS": DestroyPlayerProps() wait 1 thread NCanals() - } else if (file.selectedLocation.name == "Movement Gym") { + break + + case "Movement Gym": DestroyPlayerProps() wait 1 thread MovementGym() + break } foreach( player in GetPlayerArray() ) @@ -2243,27 +2283,26 @@ void function SimpleChampionUI() //printt("Flowstate DEBUG - Clearing last round stats.") foreach( player in GetPlayerArray() ) { - if( IsValidPlayer(player) ) + if( !IsValid(player) ) continue + + player.p.playerDamageDealt = 0.0 + if ( FlowState_ResetKillsEachRound() || is1v1EnabledAndAllowed() ) { - player.p.playerDamageDealt = 0.0 - if ( FlowState_ResetKillsEachRound() && IsValidPlayer( player ) ) - { - player.SetPlayerNetInt( "kills", 0 ) //Reset for kills - player.SetPlayerNetInt( "assists", 0 ) //Reset for deaths - } - - if( FlowState_Gungame() ) - { - player.SetPlayerGameStat( PGS_TITAN_KILLS, 0 ) - // KillStreakAnnouncer(player, true) - } + player.SetPlayerNetInt( "kills", 0 ) //Reset for kills + player.SetPlayerNetInt( "assists", 0 ) //Reset for deaths + } - if( FlowState_RandomGunsEverydie() ) - { - player.SetPlayerGameStat( PGS_TITAN_KILLS, 0 ) - UpgradeShields(player, true) - } + if( FlowState_Gungame() ) + { + player.SetPlayerGameStat( PGS_TITAN_KILLS, 0 ) + // KillStreakAnnouncer(player, true) } + + if( FlowState_RandomGunsEverydie() ) + { + player.SetPlayerGameStat( PGS_TITAN_KILLS, 0 ) + UpgradeShields(player, true) + } } ResetAllPlayerStats() ResetMapVotes() @@ -2276,6 +2315,9 @@ void function SimpleChampionUI() foreach( player in GetPlayerArray() ) { thread Flowstate_GrantSpawnImmunity(player, 2.5) + + // if( !is1v1EnabledAndAllowed() ) + Remote_CallFunction_NonReplay(player, "Minimap_EnableDraw_Internal") } if(GetCurrentPlaylistVarBool( "flowstate_hackersVsPros", false )) @@ -2290,9 +2332,7 @@ void function SimpleChampionUI() foreach (entity p in allplayers) { if (!IsValid(p)) continue - - Remote_CallFunction_NonReplay(p, "Minimap_EnableDraw_Internal") - + // if(i >= maxHackers) // { // SetTeam(p, TEAM_MILITIA) @@ -2348,7 +2388,19 @@ void function SimpleChampionUI() { foreach (eachPlayer in GetPlayerArray() ) { - thread soloModefixDelayStart(eachPlayer) + ResetPlayerStats( eachPlayer ) + if(!isPlayerInRestingList(eachPlayer)) + { + soloModePlayerToWaitingList(eachPlayer) + } + + try + { + eachPlayer.p.lastKiller = null + eachPlayer.Die( null, null, { damageSourceId = eDamageSourceId.damagedef_suicide } ) + } + catch (error) + {} } } @@ -2480,7 +2532,7 @@ void function SimpleChampionUI() HolsterAndDisableWeapons( player ) } - if( VOTING_PHASE_ENABLE ) + if( SCOREBOARD_ENABLE ) thread SendScoreboardToClient() wait 1 @@ -2509,7 +2561,35 @@ void function SimpleChampionUI() } if( !VOTING_PHASE_ENABLE ) - wait 7 + { + wait 2 + } else{ + thread function() : () + { + if(file.locationSettings.len() < NUMBER_OF_MAP_SLOTS_FSDM) + { + VOTING_PHASE_ENABLE = false + return + } + + for( int i = 0; i < NUMBER_OF_MAP_SLOTS_FSDM; ++i ) + { + while( true ) + { + // Get a random location id from the available locations + int randomId = RandomIntRange(0, file.locationSettings.len()) + + // If the map already isnt picked for voting then append it to the array, otherwise keep looping till it finds one that isnt picked yet + if( !FS_DM.mapIds.contains( randomId ) ) + { + FS_DM.mapIds.append( randomId ) + break + } + } + } + }() + + } if( file.currentRound == Flowstate_AutoChangeLevelRounds() && Flowstate_EnableAutoChangeLevel() ) { @@ -2526,87 +2606,72 @@ void function SimpleChampionUI() GameRules_ChangeMap( GetMapName(), GameRules_GetGameMode() ) } + + int TeamWon = 69 - if( VOTING_PHASE_ENABLE ) + if(GetPlayerArray().len() == 1 && IsValid(gp()[0])) + TeamWon = gp()[0].GetTeam() //DEBUG VALUE + + if(IsValid(GetBestPlayer())) + TeamWon = GetBestPlayer().GetTeam() + + if( IsValid( file.ringBoundary ) ) + file.ringBoundary.Destroy() + + SetDeathFieldParams( <0,0,0>, 100000, 0, 90000, 99999 ) + + FS_DM.scoreboardShowing = true + + if( is1v1EnabledAndAllowed() ) + ForceAllRoundsToFinish_solomode() + + if( SCOREBOARD_ENABLE ) { - int TeamWon = 69 - - if(GetPlayerArray().len() == 1) - TeamWon = gp()[0].GetTeam() //DEBUG VALUE - - if(IsValid(GetBestPlayer())) - TeamWon = GetBestPlayer().GetTeam() - - - // Only do voting for maps with multi locations - // if ( file.locationSettings.len() >= NUMBER_OF_MAP_SLOTS_FSDM ) - // { + foreach( player in GetPlayerArray() ) + { + if( !IsValid( player ) ) + continue + + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_OpenVotingPhase", true) + Remote_CallFunction_NonReplay(player, "ServerCallback_FSDM_CoolCamera") + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.ScoreboardUI, TeamWon, eFSDMScreen.NotUsed, eFSDMScreen.NotUsed) + EmitSoundOnEntityOnlyToPlayer(player, player, "UI_Menu_RoundSummary_Results") + } - // for each player, open the vote menu and set it to the winning team screen - // foreach( player in GetPlayerArray() ) - // { - // if( !IsValid( player ) ) - // continue - - // Remote_CallFunction_Replay(player, "ServerCallback_FSDM_OpenVotingPhase", true) - // Remote_CallFunction_Replay(player, "ServerCallback_FSDM_ChampionScreenHandle", true, TeamWon, skinIndexForChampion) - // Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.WinnerScreen, TeamWon, eFSDMScreen.NotUsed, eFSDMScreen.NotUsed) - // } + wait 7 + + if(!VOTING_PHASE_ENABLE) + { + // Close the votemenu for each player foreach( player in GetPlayerArray() ) { if( !IsValid( player ) ) continue - Remote_CallFunction_Replay(player, "ServerCallback_FSDM_OpenVotingPhase", true) - Remote_CallFunction_NonReplay(player, "ServerCallback_FSDM_CoolCamera") - Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.ScoreboardUI, TeamWon, eFSDMScreen.NotUsed, eFSDMScreen.NotUsed) - EmitSoundOnEntityOnlyToPlayer(player, player, "UI_Menu_RoundSummary_Results") - } - - thread function() : () - { - for( int i = 0; i < NUMBER_OF_MAP_SLOTS_FSDM; ++i ) - { - while( true ) - { - // Get a random location id from the available locations - int randomId = RandomIntRange(0, file.locationSettings.len()) - - // If the map already isnt picked for voting then append it to the array, otherwise keep looping till it finds one that isnt picked yet - if( !FS_DM.mapIds.contains( randomId ) ) - { - FS_DM.mapIds.append( randomId ) - break - } - } - } - }() - - wait 7 - - // foreach( player in GetPlayerArray() ) - // { - // if( !IsValid( player ) ) - // continue - - // Remote_CallFunction_NonReplay(player, "ServerCallback_FSDM_CoolCamera") - // Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.ScoreboardUI, TeamWon, eFSDMScreen.NotUsed, eFSDMScreen.NotUsed) - // EmitSoundOnEntityOnlyToPlayer(player, player, "UI_Menu_RoundSummary_Results") - // } - - //wait 7 + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_OpenVotingPhase", false) + } + } + } + + FS_DM.scoreboardShowing = false + + if( VOTING_PHASE_ENABLE ) + { // Set voting to be allowed FS_DM.votingtime = true - + float endtimeVotingTime = Time() + 16 + // For each player, set voting screen and update maps that are picked for voting foreach( player in GetPlayerArray() ) { if( !IsValid( player ) ) continue + //reset votes + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_UpdateMapVotesClient", FS_DM.mapVotes[0], FS_DM.mapVotes[1], FS_DM.mapVotes[2], FS_DM.mapVotes[3]) Remote_CallFunction_Replay(player, "ServerCallback_FSDM_UpdateVotingMaps", FS_DM.mapIds[0], FS_DM.mapIds[1], FS_DM.mapIds[2], FS_DM.mapIds[3]) - Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.VoteScreen, eFSDMScreen.NotUsed, eFSDMScreen.NotUsed, eFSDMScreen.NotUsed) + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.VoteScreen, endtimeVotingTime, eFSDMScreen.NotUsed, eFSDMScreen.NotUsed) } wait 16 @@ -2715,10 +2780,10 @@ void function SimpleChampionUI() if( !IsValid( player ) ) continue - ScreenCoverTransition_Player(player, Time() + 1) + //ScreenCoverTransition_Player(player, Time() + 1) Remote_CallFunction_Replay(player, "ServerCallback_FSDM_OpenVotingPhase", false) } - wait 2 + //wait 2 // } // Clear players the voted for next voting @@ -2727,7 +2792,7 @@ void function SimpleChampionUI() // Clear mapids for next voting FS_DM.mapIds.clear() } - + foreach( player in GetPlayerArray() ) { if( !IsValid( player ) ) continue @@ -2737,14 +2802,15 @@ void function SimpleChampionUI() player.SetThirdPersonShoulderModeOff() player.UnfreezeControlsOnServer() } - - if( IsValid( file.ringBoundary ) ) - file.ringBoundary.Destroy() - - SetDeathFieldParams( <0,0,0>, 100000, 0, 90000, 99999 ) + file.currentRound++ } +entity function GetMainRingBoundary() +{ + return file.ringBoundary +} + // purpose: display the UI for randomization of tied maps at the end of voting void function RandomizeTiedLocations(array maps) { @@ -3364,6 +3430,7 @@ void function ResetPlayerStats(entity player) player.SetPlayerGameStat( PGS_ASSAULT_SCORE, 0) player.SetPlayerGameStat( PGS_DEFENSE_SCORE, 0) player.SetPlayerGameStat( PGS_ELIMINATED, 0) + player.p.playerDamageDealt = 0 } void function PlayAnnounce( string sound ) @@ -3423,7 +3490,10 @@ bool function ClientCommand_VoteForMap(entity player, array args) { if(!IsValid(player)) return false - + + if( args.len() != 1 ) + return false + // don't allow multiple votes if ( FS_DM.votedPlayers.contains( player ) ) return false @@ -4401,3 +4471,8 @@ bool function ClientCommand_setspecplayer( entity player, array args ) Remote_CallFunction_NonReplay( player, "UpdateRUITest") return true } + +bool function GetScoreboardShowingState() +{ + return FS_DM.scoreboardShowing +} diff --git a/vscripts/gamemodes/fs_tdm/cl_gamemode_fsdm.nut b/vscripts/gamemodes/fs_tdm/cl_gamemode_fsdm.nut index 52fdf3e73..bdc2026c7 100644 --- a/vscripts/gamemodes/fs_tdm/cl_gamemode_fsdm.nut +++ b/vscripts/gamemodes/fs_tdm/cl_gamemode_fsdm.nut @@ -116,6 +116,7 @@ void function CoolCamera() break case "mp_rr_canyonlands_staging": + case "mp_rr_ashs_redemption": cutsceneSpawns.append(NewCameraPair(<32645.04,-9575.77,-25911.94>, <7.71,91.67,0.00>)) cutsceneSpawns.append(NewCameraPair(<49180.1055, -6836.14502, -23461.8379>, <0, -55.7723808, 0>)) cutsceneSpawns.append(NewCameraPair(<43552.3203, -1023.86182, -25270.9766>, <0, 20.9528542, 0>)) @@ -137,11 +138,23 @@ void function CoolCamera() cutsceneSpawns.append(NewCameraPair(<32170.3008, -1944.38562, 3590.89258>,<0, 27.8040161, 0>)) break + case "mp_rr_party_crasher": case "mp_rr_party_crasher_new": cutsceneSpawns.append(NewCameraPair(<-1363.75867, -2183.58081, 1354.65466>, <0, 72.5054092, 0>)) cutsceneSpawns.append(NewCameraPair(<2378.75439, 1177.52783, 1309.69019>, <0, 146.118546, 0>)) break + case "mp_rr_arena_composite": + cutsceneSpawns.append(NewCameraPair(<2343.25171, 4311.43896, 829.289917>, <0, -139.293152, 0>)) + cutsceneSpawns.append(NewCameraPair(<-1661.23608, 2852.71924, 657.674316>, <0, -56.0820427, 0>)) + cutsceneSpawns.append(NewCameraPair(<-640.810059, 1039.97424, 514.500793>, <0, -23.5162239, 0>)) + break + + case "mp_rr_aqueduct": + case "mp_rr_aqueduct_night": + cutsceneSpawns.append(NewCameraPair(<1593.85205, -3274.99365, 1044.39099>, <0, -126.270805, 0>)) + cutsceneSpawns.append(NewCameraPair(<1489.99255, -6570.93262, 741.996887>, <0, 133.833832, 0>)) + break } @@ -399,6 +412,8 @@ void function ServerCallback_OpenStatisticsUI() void function ServerCallback_FSDM_OpenVotingPhase(bool shouldOpen) { + if( GetLocalViewPlayer() != GetLocalClientPlayer() ) return + if(shouldOpen) { //try { GetLocalClientPlayer().ClearMenuCameraEntity(); GetWinnerPropCameraEntities()[0].ClearParent(); GetWinnerPropCameraEntities()[0].Destroy(); GetWinnerPropCameraEntities()[1].Destroy() } catch (exceptio2n){ } diff --git a/vscripts/lobby/cl_lobby.gnut b/vscripts/lobby/cl_lobby.gnut index 210cdee79..c249e68a5 100644 --- a/vscripts/lobby/cl_lobby.gnut +++ b/vscripts/lobby/cl_lobby.gnut @@ -14,6 +14,13 @@ void function Lobby_AddLocalPlayer() SetStandardAbilityBindingsForPilot( player ) RefreshPresentationType() + + foreach ( model in GetEntArrayByScriptName( "lobby_background_character" ) ) + { + if(IsValid(model)) + model.Destroy() + } + } void function UICallback_ChangeLobbyCameraPosition(int tabIndex) diff --git a/vscripts/mp/_codecallbacks.gnut b/vscripts/mp/_codecallbacks.gnut index 2db1fda19..712aa814b 100644 --- a/vscripts/mp/_codecallbacks.gnut +++ b/vscripts/mp/_codecallbacks.gnut @@ -463,8 +463,16 @@ void function CodeCallback_DamagePlayerOrNPC( entity ent, var damageInfo ) DamageInfo_AddCustomDamageType( damageInfo, DF_KILLSHOT ) EmitSoundOnEntityOnlyToPlayer( attacker, attacker, "flesh_bulletimpact_downedshot_1p_vs_3p" ) - if(GetCurrentPlaylistVarBool( "register_dummie_kill_as_actual_kill", false ) && !GetCurrentPlaylistVarBool( "firingrange_aimtrainerbycolombia", false )) + if(GetCurrentPlaylistVarBool( "register_dummie_kill_as_actual_kill", false ) && !GetCurrentPlaylistVarBool( "firingrange_aimtrainerbycolombia", false ) ) { + if( is1v1EnabledAndAllowed() ) + { + int sourceId = DamageInfo_GetDamageSourceIdentifier( damageInfo ) + + if ( sourceId == eDamageSourceId.damagedef_suicide ) + return + } + if( IsValid( ent ) ) AddPlayerScore( attacker, "Sur_DownedPilot", ent ) diff --git a/vscripts/mp/_score.nut b/vscripts/mp/_score.nut index 76026aae2..b9f3d6d99 100644 --- a/vscripts/mp/_score.nut +++ b/vscripts/mp/_score.nut @@ -69,6 +69,14 @@ void function AddPlayerScore( entity targetPlayer, string scoreEventName, entity void function ScoreEvent_PlayerKilled( entity victim, entity attacker, var damageInfo, bool downed = false) { + if( is1v1EnabledAndAllowed() ) + { + int sourceId = DamageInfo_GetDamageSourceIdentifier( damageInfo ) + + if ( sourceId == eDamageSourceId.damagedef_suicide ) + return + } + if ( downed && GetGameState() >= eGameState.Playing) AddPlayerScore( attacker, "Sur_DownedPilot", victim ) else if( !downed && GetGameState() >= eGameState.Playing ) diff --git a/vscripts/mp/_titan_transfer.nut b/vscripts/mp/_titan_transfer.nut index 5d2cb557a..e401dd8a0 100644 --- a/vscripts/mp/_titan_transfer.nut +++ b/vscripts/mp/_titan_transfer.nut @@ -175,7 +175,7 @@ void function GiveWeaponsFromStoredArray( entity player, array sto // UpdateProScreen( player, weapon ) // } - string weaponCategory = GetWeaponInfoFileKeyField_GlobalString( weapon.GetWeaponClassName(), "menu_category" ) + string weaponCategory = expect string( weapon.GetWeaponInfoFileKeyField( "menu_category" ) ) if ( weaponCategory == "at" || weaponCategory == "special" ) // refill AT/grenadier ammo stockpile { int defaultTotal = weapon.GetWeaponSettingInt( eWeaponVar.ammo_default_total ) diff --git a/vscripts/scripts.rson b/vscripts/scripts.rson index 0b8c9bcda..2aa21a564 100644 --- a/vscripts/scripts.rson +++ b/vscripts/scripts.rson @@ -894,6 +894,7 @@ Scripts: weapons/sh_care_package.nut mp/sh_weapon_inspect.gnut + weapons/mp_weapon_throwingknife.nut ] When: "SERVER || CLIENT" diff --git a/vscripts/sh_consts.gnut b/vscripts/sh_consts.gnut index 4a0db366a..061f6a013 100644 --- a/vscripts/sh_consts.gnut +++ b/vscripts/sh_consts.gnut @@ -1701,18 +1701,30 @@ global enum eCommsAction PING_WEAPON_AUTOPISTOL, PING_WEAPON_DEFENDER, PING_WEAPON_VOLT, + PING_WEAPON_ARCHER, + PING_WEAPON_SOFTBALL, + PING_WEAPON_SMR, + PING_WEAPON_EPG, + PING_WEAPON_WINGMAN_ELITE, PING_WEAPON_SMART_PISTOL, PING_WEAPON_SENTINEL, + PING_WEAPON_THROWINGKNIFE, + PING_WEAPON_SHEILA_HMG, + PING_WEAPON_CAR, + // PING_OFFHAND_GRENADE_FIRESTAR, PING_OFFHAND_GRENADE_FRAG, PING_OFFHAND_GRENADE_ARC, + PING_OFFHAND_GRENADE_GRAV, + // PING_AMMO_BULLET, PING_AMMO_SPECIAL, PING_AMMO_SHOTGUN, PING_AMMO_HIGHCAL, PING_AMMO_SNIPER, + PING_AMMO_EXPLOSIVE // PING_EQUIPMENT_ARMOR_1, PING_EQUIPMENT_ARMOR_2, @@ -1847,6 +1859,8 @@ global enum eCommsAction PING_ENEMY_NPC_SPIDER, PING_ENEMY_NPC_PROWLER, PING_ENEMY_NPC_GOLIATH, + PING_ENEMY_NPC_GUNSHIP, + PING_ENEMY_NPC_TURRET, // PING_NPC_LOOT_TICK, // @@ -1907,6 +1921,7 @@ global enum eCommsAction INVENTORY_NEED_AMMO_HIGHCAL, INVENTORY_NEED_AMMO_SHOTGUN, INVENTORY_NEED_AMMO_SNIPER, + INVENTORY_NEED_AMMO_EXPLOSIVE, INVENTORY_NEED_FIRST_WEAPON, INVENTORY_NEED_ANOTHER_WEAPON, INVENTORY_NEED_ARMOR, @@ -1921,6 +1936,7 @@ global enum eCommsAction INVENTORY_NEED_ATTACHMENT_MAG_SHOTGUN, INVENTORY_NEED_ATTACHMENT_MAG_HIGHCAL, INVENTORY_NEED_ATTACHMENT_MAG_SNIPER, + INVENTORY_NEED_ATTACHMENT_MAG_EXPLOSIVE, INVENTORY_NEED_ATTACHMENT_SIGHT_PISTOL, INVENTORY_NEED_ATTACHMENT_SIGHT_SMG, diff --git a/vscripts/sh_damage_types.nut b/vscripts/sh_damage_types.nut index f05d2e1cd..21dd449e4 100644 --- a/vscripts/sh_damage_types.nut +++ b/vscripts/sh_damage_types.nut @@ -106,7 +106,7 @@ global enum eDamageSourceId mp_weapon_dragon_lmg //mp_weapon_energysword //mp_ability_birds - //mp_weapon_throwingknife + mp_weapon_throwingknife //mp_weapon_softball //mp_weapon_epg //mp_weapon_smr @@ -605,7 +605,7 @@ void function DamageTypes_Init() [ eDamageSourceId.mp_weapon_melee_boxing_ring ] = "Boxing Hands", //[ eDamageSourceId.melee_data_knife ] = "Dataknife", //[ eDamageSourceId.mp_weapon_data_knife_primary ] = "Dataknife", - //[ eDamageSourceId.mp_weapon_throwingknife ] = "Throwing Knife", + [ eDamageSourceId.mp_weapon_throwingknife ] = "Throwing Knife", //[ eDamageSourceId.mp_weapon_satchel ] = "Satchel", //[ eDamageSourceId.mp_weapon_wingman_n ] = "Wingman Elite", [ eDamageSourceId.mp_weapon_sentinel ] = "Sentinel", diff --git a/vscripts/sh_menu_models.gnut b/vscripts/sh_menu_models.gnut index bef6f8e44..2a53318cb 100644 --- a/vscripts/sh_menu_models.gnut +++ b/vscripts/sh_menu_models.gnut @@ -1210,13 +1210,19 @@ void function InitMenuEntities() ModelData_SetBaseOrigin( file.playCharacter, <0, 523, 0>) ModelData_SetBaseAngles( file.playCharacter, <0, -90, 0>) } - + model = CreateMenuModel( file.playCharacter, $"mdl/dev/empty_model.rmdl" ) ItemFlavor character = LoadoutSlot_WaitForItemFlavor( localPlayerEHI, Loadout_CharacterClass() ) ItemFlavor characterSkin = LoadoutSlot_WaitForItemFlavor( localPlayerEHI, Loadout_CharacterSkin( character ) ) CharacterSkin_Apply( model, characterSkin ) model.SetAlive( true ) - + + entity lobbyLight = CreateClientSideDynamicLight( Vector(file.playCharacter.model.GetOrigin().x, file.playCharacter.model.GetOrigin().y, file.playCharacter.model.GetOrigin().z + 80) + file.playCharacter.model.GetForwardVector() * 40, < 0, 0, 0 >, DLIGHT_WHITE, 200 ) + lobbyLight.SetLightExponent( 2 ) + + entity lobbyLight2 = CreateClientSideDynamicLight( Vector(file.playCharacter.model.GetOrigin().x, file.playCharacter.model.GetOrigin().y, file.playCharacter.model.GetOrigin().z) + file.playCharacter.model.GetRightVector() * 50 + file.playCharacter.model.GetForwardVector() * 50, < 0, 0, 0 >, DLIGHT_RICH_BROWN, 200 ) + lobbyLight2.SetLightExponent( 4 ) + if(GameRules_GetGameMode() != "map_editor_deprecated") { refEnt = GetEntByScriptName( "customize_character_ref" ) @@ -1729,7 +1735,7 @@ void function DisplayPartyMemberModelThread( PartyMemberDisplayThreadData data ) data.body.MakeSafeForUIScriptHack() data.body.Anim_Play( data.idleActivity ) - + /* data.rui = CreateFullscreenRui( $"ui/lobby_player_info.rpak" ) diff --git a/vscripts/sh_onboarding.gnut b/vscripts/sh_onboarding.gnut index 34276ea3e..2c4d3b067 100644 --- a/vscripts/sh_onboarding.gnut +++ b/vscripts/sh_onboarding.gnut @@ -575,7 +575,14 @@ void function OnPlayerKilled( entity victim, entity attacker, var damageInfo ) { if ( !IsValid( victim ) || !IsValid( attacker ) ) return - + + if( is1v1EnabledAndAllowed() ) + { + int sourceId = DamageInfo_GetDamageSourceIdentifier( damageInfo ) + + if ( sourceId == eDamageSourceId.damagedef_suicide ) + return + } UpdatePlayerCounts() if ( attacker.IsPlayer() && victim.IsPlayer() && attacker != victim ) diff --git a/vscripts/sh_ping.gnut b/vscripts/sh_ping.gnut index a3732e2cc..b7eadcefd 100644 --- a/vscripts/sh_ping.gnut +++ b/vscripts/sh_ping.gnut @@ -929,8 +929,6 @@ bool function PingIsAllowed( entity player ) return false if ( GetGameState() == eGameState.PickLoadout ) return false - if ( GetGameState() == eGameState.WaitingForPlayers && !GetCurrentPlaylistVarBool( "survival_staging_area_enabled", false ) ) - return false if ( player.GetPlayerNetBool( "pingEnabled" ) == false ) return false diff --git a/vscripts/sh_stats.gnut b/vscripts/sh_stats.gnut index a46f674e1..7f6c86dd4 100644 --- a/vscripts/sh_stats.gnut +++ b/vscripts/sh_stats.gnut @@ -1874,7 +1874,7 @@ StatCalcFuncInfo function SetupGetAccountLevelForStat( StatEntry calcEntry, arra info.calcFunc_Int = (int function ( entity player, array sourceEntries, int when ) { int xpProgress = GetPlayerAccountXPProgress( ToEHI( player ) ) - int accountLevel = GetAccountLevelForXP( xpProgress ) + int accountLevel = RandomIntRange(5,100) //GetAccountLevelForXP( xpProgress )//TODO: IMPLEMENT A REAL XP SYSTEM return minint( accountLevel, 100 ) }) diff --git a/vscripts/sh_survival_loot.gnut b/vscripts/sh_survival_loot.gnut index 083cf25c6..db2142e64 100644 --- a/vscripts/sh_survival_loot.gnut +++ b/vscripts/sh_survival_loot.gnut @@ -722,7 +722,7 @@ bool function IsAttachmentCompatibleWithCustomWeapon(LootData weapon, Attachment // Means that certain weapons will have barrels added to them if a custom barrel is compatible. // still won't allow them to equip vanilla attachments, however. // Default OFF. - if (GetCurrentPlaylistVarBool("custom_hopup_override_weapon_attachments", false) && att.attachPoint != "") + if (att.attachPoint != "") // GetCurrentPlaylistVarBool("custom_hopup_override_weapon_attachments", false) && { weapon.supportedAttachments.append( att.attachPoint ) //if (weapon.attachmentStyle == "") weapon.attachmentStyle = "hopup" diff --git a/vscripts/sh_survival_loot_all.gnut b/vscripts/sh_survival_loot_all.gnut index b309c5269..1ba735aae 100644 --- a/vscripts/sh_survival_loot_all.gnut +++ b/vscripts/sh_survival_loot_all.gnut @@ -249,19 +249,22 @@ void function SURVIVAL_Loot_All_InitShared() file.disabledRefs.clear() file.disabledRefs = split( GetCurrentPlaylistVarString( "survival_disabled_loot", " " ), " " ) - + + SURVIVAL_Loot_RegFromDataTable( GetDataTable( $"datatable/survival_loot.rpak" ) ) + //if(!IsLobby()) + // SURVIVAL_Loot_RegFromDataTable( GetDataTable( $"datatable/survival_loot_sdk.rpak" )) #if CLIENT || SERVER if(GameRules_GetGameMode() == "flowstate_snd") SURVIVAL_Loot_RegFromDataTable( GetDataTable( $"datatable/flowstate_custom_loot.rpak" )) #endif - //SURVIVAL_Loot_RegFromDataTable( GetDataTable( $"datatable/survival_loot_sdk.rpak" )) - - //RegisterCustomAmmos() - RegisterCustomWeapons() - + RegisterCustomAmmos() + RegisterNewCustomAttachments() + RegisterNewCustomWeapons() + + RegisterCustomWeapons() //from playlist #if(UI) RegisterSignal( "GatherFriendInfo" ) RegisterSignal( "GatheredEnoughFriendInfo" ) @@ -663,25 +666,157 @@ void function RegisterCustomAmmos() chance = 10.0 } - CustomAmmoData ExplosiveAmmo = { - printname = "Explosive Ammo", - className = "explosive", - - desc = "", - icon = $"rui/hud/gametype_icons/survival/sur_ammo_explosive", - model = $"mdl/weapons_r5/loot/_master/w_loot_wep_ammo_explosive.rmdl", - sound = "survival_loot_pickup_titan_ammo", - sound3p = "survival_loot_pickup_3p_titan_ammo", - pingCommsAction = "BLANK", - countPerDrop = 5, - stackSize = 10, - chance = 10.0 - } + // CustomAmmoData ExplosiveAmmo = { + // printname = "Explosive Ammo", + // className = "explosive", + + // desc = "", + // icon = $"rui/hud/gametype_icons/survival/sur_ammo_explosive", + // model = $"mdl/weapons_r5/loot/_master/w_loot_wep_ammo_exp.rmdl", + // sound = "survival_loot_pickup_titan_ammo", + // sound3p = "survival_loot_pickup_3p_titan_ammo", + // pingCommsAction = "BLANK", + // countPerDrop = 5, + // stackSize = 10, + // chance = 10.0 + // } RegisterCustomAmmo(SniperAmmo) - RegisterCustomAmmo(ExplosiveAmmo) + // RegisterCustomAmmo(ExplosiveAmmo) } +void function RegisterNewCustomAttachments() +{ + CustomHopupData sniper_mag_l1 + sniper_mag_l1.className = "sniper_mag_l1" + sniper_mag_l1.displayName = "Sniper Mag level 1" + sniper_mag_l1.desc = "Sniper Mag level 1" + sniper_mag_l1.tier = 1 + #if !UI + sniper_mag_l1.icon = $"rui/flowstatecustom/sniper_mag" + sniper_mag_l1.model = $"mdl/weapons_r5/loot/_master/w_loot_wep_mods_chip.rmdl" //todo change model + #endif + sniper_mag_l1.lowWeight = 5.0 + sniper_mag_l1.medWeight = 10.0 + sniper_mag_l1.highWeight = 25.0 + sniper_mag_l1.attachmentSlot = "mag" + + CustomHopupData sniper_mag_l2 + sniper_mag_l2.className = "sniper_mag_l2" + sniper_mag_l2.displayName = "Sniper Mag level 2" + sniper_mag_l2.desc = "Sniper Mag level 2" + sniper_mag_l2.tier = 2 + #if !UI + sniper_mag_l2.icon = $"rui/flowstatecustom/sniper_mag" + sniper_mag_l2.model = $"mdl/weapons_r5/loot/_master/w_loot_wep_mods_chip.rmdl" //todo change model + #endif + sniper_mag_l2.lowWeight = 5.0 + sniper_mag_l2.medWeight = 10.0 + sniper_mag_l2.highWeight = 25.0 + sniper_mag_l2.attachmentSlot = "mag" + + CustomHopupData sniper_mag_l3 + sniper_mag_l3.className = "sniper_mag_l3" + sniper_mag_l3.displayName = "Sniper Mag level 3" + sniper_mag_l3.desc = "Sniper Mag level 3" + sniper_mag_l3.tier = 3 + #if !UI + sniper_mag_l3.icon = $"rui/flowstatecustom/sniper_mag" + sniper_mag_l3.model = $"mdl/weapons_r5/loot/_master/w_loot_wep_mods_chip.rmdl" //todo change model + #endif + sniper_mag_l3.lowWeight = 5.0 + sniper_mag_l3.medWeight = 10.0 + sniper_mag_l3.highWeight = 25.0 + sniper_mag_l3.attachmentSlot = "mag" + + CustomHopupData skull_piercer + skull_piercer.className = "hopup_headshot_dmg" + skull_piercer.displayName = "Skull Piercer" + skull_piercer.desc = "Skull Piercer" + skull_piercer.tier = 4 + #if !UI + skull_piercer.icon = $"rui/pilot_loadout/mods/hopup_skullpiercer" + skull_piercer.model = $"mdl/weapons_r5/loot/_master/w_loot_wep_mods_chip.rmdl" + #endif + skull_piercer.lowWeight = 5.0 + skull_piercer.medWeight = 10.0 + skull_piercer.highWeight = 25.0 + skull_piercer.attachmentSlot = "hopup" + + CreateCustomHopup(sniper_mag_l1) + CreateCustomHopup(sniper_mag_l2) + CreateCustomHopup(sniper_mag_l3) + CreateCustomHopup(skull_piercer) +} + +void function RegisterNewCustomWeapons() +{ + CustomWeaponData volt + volt.className = "mp_weapon_volt_smg" + volt.tier = 1 + volt.baseMods = [] + volt.supportedAttachments = ["barrel", "mag", "sight", "grip"] + volt.pickupSound1p = "survival_loot_pickup_weapon_rspn101" + volt.pickupSound3p = "survival_loot_pickup_3p_weapon_rspn101" + volt.weaponType = "smg" + volt.lowWeaponChance = 5.0 + volt.medWeaponChance = 10.0 + volt.highWeaponChance = 25.0 + volt.isCP = false + + CustomWeaponData sentinel + sentinel.className = "mp_weapon_sentinel" + sentinel.tier = 1 + sentinel.baseMods = [] + sentinel.supportedAttachments = ["mag", "sight", "grip"] + sentinel.pickupSound1p = "survival_loot_pickup_weapon_rspn101" + sentinel.pickupSound3p = "survival_loot_pickup_3p_weapon_rspn101" + sentinel.weaponType = "sniper" + sentinel.lowWeaponChance = 5.0 + sentinel.medWeaponChance = 10.0 + sentinel.highWeaponChance = 25.0 + sentinel.isCP = false + + CustomWeaponData kraber + kraber.className = "mp_weapon_sniper" + kraber.tier = 5 + kraber.baseMods = [] + kraber.supportedAttachments = [] + kraber.pickupSound1p = "survival_loot_pickup_weapon_rspn101" + kraber.pickupSound3p = "survival_loot_pickup_3p_weapon_rspn101" + kraber.weaponType = "sniper" + kraber.lowWeaponChance = 0 + kraber.medWeaponChance = 0 + kraber.highWeaponChance = 0 + kraber.isCP = true + + CustomWeaponData throwingknife + throwingknife.className = "mp_weapon_throwingknife" + throwingknife.tier = 5 + throwingknife.baseMods = [] + throwingknife.supportedAttachments = [] + throwingknife.pickupSound1p = "survival_loot_pickup_weapon_rspn101" + throwingknife.pickupSound3p = "survival_loot_pickup_3p_weapon_rspn101" + throwingknife.weaponType = "pistol" + throwingknife.lowWeaponChance = 0 + throwingknife.medWeaponChance = 0 + throwingknife.highWeaponChance = 0 + throwingknife.isCP = true + + RegisterWeapon(volt) + RegisterCustomAttachments(GetCustomHopupsForWeapon(volt.className)) + + RegisterWeapon(sentinel) + RegisterCustomAttachments(GetCustomHopupsForWeapon(sentinel.className)) + + RegisterWeapon(kraber) + RegisterCustomAttachments(GetCustomHopupsForWeapon(kraber.className)) + + RegisterWeapon(throwingknife) + RegisterCustomAttachments(GetCustomHopupsForWeapon(throwingknife.className)) +} + + void function RegisterCustomGrenade(CustomGrenadeData grenadeData) { LootData data data.ref = grenadeData.className diff --git a/vscripts/survival_loot.gnut b/vscripts/survival_loot.gnut index 34f2a70c9..b1cf87155 100644 --- a/vscripts/survival_loot.gnut +++ b/vscripts/survival_loot.gnut @@ -411,7 +411,7 @@ bool function ClientCommand_PickupSurvivalItem( entity player, array arg if ( lootEnt.GetNetworkedClassName() != "prop_survival" ) return true - if ( !SURVIVAL_CanPlayerPickup( player, lootEnt ) ) + if ( !SURVIVAL_CanPlayerPickup( player, lootEnt ) && GameRules_GetGameMode() != "fs_aimtrainer") return true entity deathBox = null @@ -430,6 +430,17 @@ bool function ClientCommand_PickupSurvivalItem( entity player, array arg if ( !deathBox.GetLinkEntArray().contains( lootEnt ) ) return true + + if( GameRules_GetGameMode() == "fs_aimtrainer" ) + { + thread function() : (deathBox) + { + wait 1 + if(IsValid(deathBox)) + deathBox.Destroy() + }() + return true + } } Survival_PickupItem( lootEnt, player, pickupFlags, deathBox ) @@ -1423,10 +1434,24 @@ void function SURVIVAL_GiveMainWeapon( entity player, entity pickup, entity acti mods.append( mod ) } } - - entity weapon = player.GiveWeapon( newEquipData.baseWeapon, WEAPON_INVENTORY_SLOT_ANY, mods ) + + entity weapon = player.GiveWeapon( newEquipData.baseWeapon, WEAPON_INVENTORY_SLOT_ANY, [] ) + + try{ + if(IsValid(weapon)) + { + foreach(mod in mods) + { + weapon.AddMod(mod) + } + } + }catch(e420){} + player.SetActiveWeaponBySlot( eActiveInventorySlot.mainHand, GetSlotForWeapon( player, weapon ) ) - + + if(GameRules_GetGameMode() == "fs_duckhunt" && weapon.GetWeaponClassName() == "mp_weapon_sniper" ) + weapon.AddMod("duckhunt") + int clipCount = pickup.GetClipCount() if ( clipCount > 0 ) { @@ -1545,7 +1570,8 @@ entity function SURVIVAL_CreateDeathBox( entity player, bool hasCard ) box.SetOwner( player ) box.SetNetInt( "ownerEHI", player.GetEncodedEHandle() ) - + box.AllowMantle() + if ( hasCard ) { box.SetNetBool( "overrideRUI", false ) diff --git a/vscripts/ui/CustomLobby/menu_gamemodeselect.nut b/vscripts/ui/CustomLobby/menu_gamemodeselect.nut index 32b18da1f..6528587aa 100644 --- a/vscripts/ui/CustomLobby/menu_gamemodeselect.nut +++ b/vscripts/ui/CustomLobby/menu_gamemodeselect.nut @@ -277,8 +277,8 @@ void function TopServerButton_Activated(var button) void function FiringRange_Activated(var button) { - g_SelectedQuickPlay = "survival_firingrange" - g_SelectedQuickPlayMap = "mp_rr_canyonlands_staging" + g_SelectedQuickPlay = "fs_aimtrainer" + g_SelectedQuickPlayMap = "mp_rr_desertlands_64k_x_64k" g_SelectedQuickPlayImage = $"rui/menu/gamemode/firing_range" R5RPlay_SetSelectedPlaylist(JoinType.QuickPlay) DiagCloseing() diff --git a/vscripts/ui/CustomLobby/menu_lobby.nut b/vscripts/ui/CustomLobby/menu_lobby.nut index cdd7479d6..d6cf39611 100644 --- a/vscripts/ui/CustomLobby/menu_lobby.nut +++ b/vscripts/ui/CustomLobby/menu_lobby.nut @@ -178,20 +178,20 @@ void function CreateNavButtons() Play_SetupUI() } ) - AddNavButton("Legends", Hud_GetChild(file.menu, "LegendsPanel"), ePresentationType.CHARACTER_SELECT, void function( var button ) { - R5RCharactersPanel_Show() - } ) - - //Item flavor bugged, disable for now - AddNavButton("Loadout", Hud_GetChild(file.menu, "LoadoutPanel"), ePresentationType.WEAPON_CATEGORY, void function( var button ) { - ShowLoadoutPanel() - }, false ) + AddNavButton("Servers", Hud_GetChild(file.menu, "ServerBrowserPanel"), ePresentationType.COLLECTION_EVENT, void function( var button ) { } ) AddNavButton("Create", Hud_GetChild(file.menu, "CreatePanel"), ePresentationType.CHARACTER_SELECT, void function( var button ) { OnCreateMatchOpen() } ) - AddNavButton("Servers", Hud_GetChild(file.menu, "ServerBrowserPanel"), ePresentationType.COLLECTION_EVENT, void function( var button ) { } ) + AddNavButton("Legends", Hud_GetChild(file.menu, "LegendsPanel"), ePresentationType.CHARACTER_SELECT, void function( var button ) { + R5RCharactersPanel_Show() + } ) + + //Item flavor bugged, disable for now + // AddNavButton("Loadout", Hud_GetChild(file.menu, "LoadoutPanel"), ePresentationType.WEAPON_CATEGORY, void function( var button ) { + // ShowLoadoutPanel() + // }, false ) /*AddNavButton("Settings", null, void function( var button ) { AdvanceMenu( GetMenu( "MiscMenu" ) ) diff --git a/vscripts/ui/FRChallenges/mainmenu_challenges.nut b/vscripts/ui/FRChallenges/mainmenu_challenges.nut index 2b95270a5..f02e3d3a1 100644 --- a/vscripts/ui/FRChallenges/mainmenu_challenges.nut +++ b/vscripts/ui/FRChallenges/mainmenu_challenges.nut @@ -58,7 +58,7 @@ void function InitFRChallengesMainMenu( var newMenuArg ) AddEventHandlerToButton( menu, "Challenge5", UIE_CLICK, Challenge5Funct ) AddEventHandlerToButton( menu, "Challenge6", UIE_CLICK, Challenge6Funct ) AddEventHandlerToButton( menu, "Challenge7", UIE_CLICK, Challenge7Funct ) - //AddEventHandlerToButton( menu, "Challenge8", UIE_CLICK, Challenge8Funct ) + AddEventHandlerToButton( menu, "Challenge8", UIE_CLICK, Challenge8Funct ) //Second column AddEventHandlerToButton( menu, "Challenge1NewC", UIE_CLICK, Challenge1NewCFunct ) AddEventHandlerToButton( menu, "Challenge2NewC", UIE_CLICK, Challenge2NewCFunct ) @@ -67,7 +67,7 @@ void function InitFRChallengesMainMenu( var newMenuArg ) AddEventHandlerToButton( menu, "Challenge5NewC", UIE_CLICK, Challenge5NewCFunct ) AddEventHandlerToButton( menu, "Challenge6NewC", UIE_CLICK, Challenge6NewCFunct ) AddEventHandlerToButton( menu, "Challenge7NewC", UIE_CLICK, Challenge7NewCFunct ) - //AddEventHandlerToButton( menu, "Challenge8NewC", UIE_CLICK, Challenge8NewCFunct ) + AddEventHandlerToButton( menu, "Challenge8NewC", UIE_CLICK, Challenge8NewCFunct ) var gameMenuButton = Hud_GetChild( menu, "GameMenuButton" ) ToolTipData gameMenuToolTip diff --git a/vscripts/ui/KillReplay/menu_killreplay.nut b/vscripts/ui/KillReplay/menu_killreplay.nut index 19f8489d1..afacb2617 100644 --- a/vscripts/ui/KillReplay/menu_killreplay.nut +++ b/vscripts/ui/KillReplay/menu_killreplay.nut @@ -1,26 +1,42 @@ global function InitKillReplayHud global function OpenKillReplayHud global function CloseKillReplayHud -global function ReplayHud_UpdatePlayerHealthAndSheild +global function ReplayHud_UpdatePlayerData +global function UI_FlowstateCustomSetSpectateTargetCount struct { var menu int basehealthwidth int basesheildwidth + int spectateTargetCount + string spectatorTarget + int currentSpectateTarget = 1 + bool ObserverReverse } file -void function OpenKillReplayHud(asset image, string killedby, int tier, bool islocalclient) +void function OpenKillReplayHud(asset image, string killedby, int tier, bool islocalclient, bool isProphunt) { + file.spectatorTarget = killedby + try{ RegisterButtonPressedCallback( KEY_ENTER, FocusChat ) + if( IsConnected() && GetCurrentPlaylistName() != "flowstate_snd" ) + { + RegisterButtonPressedCallback( MOUSE_LEFT, SpecPrev ) + RegisterButtonPressedCallback( MOUSE_RIGHT, SpecNext ) + } }catch(e420){} for(int i = 0; i < 5; i++) { Hud_SetVisible( Hud_GetChild( file.menu, "PlayerSheild" + i ), false ) } - + Hud_SetText(Hud_GetChild( file.menu, "KillReplayText" ), "Spectating") + + if( IsConnected() && GetCurrentPlaylistName() == "flowstate_snd" ) + Hud_SetText(Hud_GetChild( file.menu, "KillReplayText" ), "Spectating Teammate") + Hud_SetText(Hud_GetChild( file.menu, "KillReplayPlayerName" ), "") RuiSetImage(Hud_GetRui(Hud_GetChild(file.menu, "PlayerImage")), "basicImage", $"") @@ -38,8 +54,11 @@ void function OpenKillReplayHud(asset image, string killedby, int tier, bool isl Hud_SetVisible( Hud_GetChild( file.menu, "PlayerCard" ), true ) Hud_SetVisible( Hud_GetChild( file.menu, "PlayerCardTopLine" ), true ) Hud_SetVisible( Hud_GetChild( file.menu, "PlayerCardBottomLine" ), true ) - Hud_SetVisible( Hud_GetChild( file.menu, "KillReplayKilledBy" ), true ) - Hud_SetVisible( Hud_GetChild( file.menu, "PlayerImage" ), true ) + + if( IsConnected() && GetCurrentPlaylistName() != "flowstate_snd" ) + Hud_SetVisible( Hud_GetChild( file.menu, "KillReplayKilledBy" ), true ) + + Hud_SetVisible( Hud_GetChild( file.menu, "PlayerImage" ), true ) Hud_SetVisible( Hud_GetChild( file.menu, "KillReplayPlayerName" ), true ) Hud_SetVisible( Hud_GetChild( file.menu, "PlayerHealth" ), true ) @@ -54,23 +73,61 @@ void function OpenKillReplayHud(asset image, string killedby, int tier, bool isl Hud_SetVisible( Hud_GetChild( file.menu, "KillReplayChatBox"), true ) Hud_SetAboveBlur( Hud_GetChild( file.menu, "KillReplayChatBox"), true ) Hud_SetEnabled( Hud_GetChild( Hud_GetChild( file.menu, "KillReplayChatBox"), "ChatInputLine" ), false) + + //todo make it show only if there is more than 1 player to spectate + if( IsConnected() && GetCurrentPlaylistName() != "flowstate_snd" ) + { + Hud_SetText(Hud_GetChild( file.menu, "ControlsText" ), "%attack% Previous Player") + Hud_SetText(Hud_GetChild( file.menu, "ControlsText2" ), "%zoom% Next Player") + } + + if(GetCurrentPlaylistName() == "flowstate_snd") + { + Hud_SetText(Hud_GetChild( file.menu, "ControlsText" ), "") + Hud_SetText(Hud_GetChild( file.menu, "ControlsText2" ), "") + } + + if(isProphunt) + { + Hud_SetText(Hud_GetChild( file.menu, "KillReplayText" ), "APEX PROPHUNT - YOU WILL SPAWN THE NEXT ROUND") + Hud_SetVisible( Hud_GetChild( file.menu, "PlayerCard" ), true ) + Hud_SetVisible( Hud_GetChild( file.menu, "PlayerCardTopLine" ), true ) + Hud_SetVisible( Hud_GetChild( file.menu, "PlayerCardBottomLine" ), true ) + Hud_SetVisible( Hud_GetChild( file.menu, "KillReplayKilledBy" ), false ) + Hud_SetVisible( Hud_GetChild( file.menu, "PlayerImage" ), true ) + Hud_SetVisible( Hud_GetChild( file.menu, "KillReplayPlayerName" ), true ) + Hud_SetVisible( Hud_GetChild( file.menu, "PlayerHealth" ), true ) + } } -void function ReplayHud_UpdatePlayerHealthAndSheild(float health, float sheild, int tier) +void function ReplayHud_UpdatePlayerData(float health, float sheild, int tier, string name, asset image) { Hud_SetWidth( Hud_GetChild( file.menu, "PlayerSheild" + tier ), file.basesheildwidth * sheild ) Hud_SetWidth( Hud_GetChild( file.menu, "PlayerHealth" ), file.basehealthwidth * health ) + Hud_SetText( Hud_GetChild( file.menu, "KillReplayPlayerName" ), name) + RuiSetImage(Hud_GetRui(Hud_GetChild(file.menu, "PlayerImage")), "basicImage", image) } -void function CloseKillReplayHud() +void function CloseKillReplayHud(bool isProphunt) { try{ DeregisterButtonPressedCallback( KEY_ENTER, FocusChat ) + if( IsConnected() && GetCurrentPlaylistName() == "flowstate_snd" ) + { + DeregisterButtonPressedCallback( MOUSE_LEFT, SpecPrev ) + DeregisterButtonPressedCallback( MOUSE_RIGHT, SpecNext ) + } }catch(e420){} + Hud_StopMessageMode( Hud_GetChild( file.menu, "KillReplayChatBox") ) Hud_SetEnabled( Hud_GetChild( Hud_GetChild( file.menu, "KillReplayChatBox"), "ChatInputLine" ), false) Hud_SetVisible( Hud_GetChild( Hud_GetChild( file.menu, "KillReplayChatBox"), "ChatInputLine" ), false ) Hud_SetVisible( Hud_GetChild( file.menu, "KillReplayChatBox"), false ) + + if(isProphunt) + { + + } CloseAllMenus() } @@ -85,6 +142,45 @@ void function InitKillReplayHud( var newMenuArg ) AddMenuEventHandler( menu, eUIEvent.MENU_NAVIGATE_BACK, On_NavigateBack ) } +void function UI_FlowstateCustomSetSpectateTargetCount( int targetCount, bool reverse ) +{ + file.ObserverReverse = reverse + file.spectateTargetCount = targetCount +} + +bool function FlowstateCustomCanChangeSpectateTarget() +{ + return file.spectateTargetCount > 1 +} + +void function SpecNext( var panel ) +{ + printt("trying to change spectate target. Max Targets " + file.spectateTargetCount + " | Target Count " + file.currentSpectateTarget ) + + // if( FlowstateCustomCanChangeSpectateTarget() && file.currentSpectateTarget < file.spectateTargetCount) + // { + // if(file.ObserverReverse) + // ClientCommand( "spec_prev" ) + // else + ClientCommand( "spec_next" ) + + // file.currentSpectateTarget++ + // } +} + +void function SpecPrev( var panel ) +{ + // if( FlowstateCustomCanChangeSpectateTarget() && file.currentSpectateTarget > 1) + // { + // if(file.ObserverReverse) + ClientCommand( "spec_next" ) + // else + // ClientCommand( "spec_prev" ) + + // file.currentSpectateTarget-- + // } +} + void function FocusChat( var panel ) { if(!Hud_IsFocused( Hud_GetChild( Hud_GetChild( file.menu, "KillReplayChatBox"), "ChatInputLine" ) )) diff --git a/vscripts/ui/menu_dev.nut b/vscripts/ui/menu_dev.nut index 9fb5b0f18..4522a1cb0 100644 --- a/vscripts/ui/menu_dev.nut +++ b/vscripts/ui/menu_dev.nut @@ -397,7 +397,7 @@ void function SetupDefaultDevCommandsMP() } else { - SetupDevCommand( "sv_cheats is false, type 'sv_cheats 1' in console to enable dev menu if you're the server admin.", "empty" ) + SetupDevCommand( "Cheats are disabled! Type 'sv_cheats 1' in console to enable dev menu if you're the server admin.", "empty" ) } } @@ -759,14 +759,14 @@ void function SetupTDMPrimaryWeapsons() //Pistols SetupDevCommand( "RE-45", "tgive p mp_weapon_autopistol optic_cq_hcog_classic barrel_stabilizer_l3 bullets_mag_l3" ) SetupDevCommand( "P2020", "tgive p mp_weapon_semipistol optic_cq_hcog_classic bullets_mag_l3 hopup_unshielded_dmg" ) - SetupDevCommand( "Wingman", "tgive p mp_weapon_wingman optic_cq_hcog_classic highcal_mag_l3" ) + SetupDevCommand( "Wingman", "tgive p mp_weapon_wingman optic_cq_hcog_classic sniper_mag_l3" ) //Shotguns SetupDevCommand( "EVA-8", "tgive p mp_weapon_shotgun shotgun_bolt_l3 optic_cq_threat hopup_double_tap" ) SetupDevCommand( "Mozambique", "tgive p mp_weapon_shotgun_pistol shotgun_bolt_l3 optic_cq_threat hopup_unshielded_dmg" ) SetupDevCommand( "Peacekeeper", "tgive p mp_weapon_energy_shotgun shotgun_bolt_l3 optic_cq_threat hopup_energy_choke" ) //SetupDevCommand( "Mastiff","tgive p mp_weapon_mastiff shotgun_bolt_l3") //Sniper Rifles - SetupDevCommand( "Longbow", "tgive p mp_weapon_dmr optic_sniper_variable barrel_stabilizer_l3 stock_sniper_l3 highcal_mag_l3" ) + SetupDevCommand( "Longbow", "tgive p mp_weapon_dmr optic_sniper_variable barrel_stabilizer_l3 stock_sniper_l3 sniper_mag_l3" ) SetupDevCommand( "Charge Rifle", "tgive p mp_weapon_defender optic_sniper_threat stock_sniper_l3" ) //SetupDevCommand( "Kraber", "tgive p mp_weapon_sniper" ) @@ -800,7 +800,7 @@ void function SetupTDMSecondaryWeapsons() //Pistols SetupDevCommand( "RE-45", "tgive s mp_weapon_autopistol optic_cq_hcog_classic barrel_stabilizer_l3 bullets_mag_l3" ) SetupDevCommand( "P2020", "tgive s mp_weapon_semipistol optic_cq_hcog_classic bullets_mag_l3 hopup_unshielded_dmg" ) - SetupDevCommand( "Wingman", "tgive s mp_weapon_wingman optic_cq_hcog_classic highcal_mag_l3" ) + SetupDevCommand( "Wingman", "tgive s mp_weapon_wingman optic_cq_hcog_classic sniper_mag_l3" ) //Shotguns SetupDevCommand( "EVA-8", "tgive s mp_weapon_shotgun shotgun_bolt_l3 optic_cq_threat hopup_double_tap" ) SetupDevCommand( "Mozambique", "tgive s mp_weapon_shotgun_pistol shotgun_bolt_l3 optic_cq_threat hopup_unshielded_dmg" ) diff --git a/vscripts/ui/menu_system.nut b/vscripts/ui/menu_system.nut index e6d03de90..af6a614b1 100644 --- a/vscripts/ui/menu_system.nut +++ b/vscripts/ui/menu_system.nut @@ -216,9 +216,9 @@ void function OnSystemMenu_Open() void function UpdateSystemPanel( var panel ) { //temp workaround, not the best place for this tbh - if( IsConnected() && GetCurrentPlaylistName() != "flowstate_aimtrainer" ) + if( IsConnected() && GetCurrentPlaylistName() != "fs_aimtrainer" ) file.lobbyReturnButtonData[ panel ].label = "#RETURN_TO_LOBBY" - else if( IsConnected() && GetCurrentPlaylistName() == "flowstate_aimtrainer" ) + else if( IsConnected() && GetCurrentPlaylistName() == "fs_aimtrainer" ) file.lobbyReturnButtonData[ panel ].label = "EXIT AIM TRAINER" file.lobbyReturnButtonData[ panel ].activateFunc = LeaveDialog @@ -232,12 +232,12 @@ void function UpdateSystemPanel( var panel ) SetCursorPosition( <1920.0 * 0.5, 1080.0 * 0.5, 0> ) SetButtonData( panel, buttonIndex++, file.settingsButtonData[ panel ] ) - if( GetCurrentPlaylistName() == "flowstate_snd" && IsConnected() ) + if( GetCurrentPlaylistName() == "flowstate_snd" && IsConnected() || GetCurrentPlaylistName() == "fs_dm" && IsConnected()) { SetButtonData( panel, buttonIndex++, file.ToggleScoreboardFocus[ panel ] ) } - if( GetCurrentPlaylistName() != "flowstate_aimtrainer" ) + if( GetCurrentPlaylistName() != "fs_aimtrainer" ) { if ( IsSurvivalTraining() || IsFiringRangeGameMode() ) SetButtonData( panel, buttonIndex++, file.lobbyReturnButtonData[ panel ] ) @@ -269,10 +269,10 @@ void function UpdateSystemPanel( var panel ) SetButtonData( panel, buttonIndex++, file.hubButtonData[ panel ] ) } - if( GetCurrentPlaylistName() == "fs_duckhunt" && IsConnected() && file.SETHUNTERALLOWED ) - { - SetButtonData( panel, buttonIndex++, file.SetHunterButtonData[ panel ] ) - } + // if( GetCurrentPlaylistName() == "fs_duckhunt" && IsConnected() && file.SETHUNTERALLOWED ) + // { + // SetButtonData( panel, buttonIndex++, file.SetHunterButtonData[ panel ] ) + // } } else { @@ -284,7 +284,7 @@ void function UpdateSystemPanel( var panel ) #endif } - const int maxNumButtons = 4; + const int maxNumButtons = 5; for( int i = 0; i < maxNumButtons; i++ ) { if( i > 0 && i < buttonIndex) @@ -299,7 +299,7 @@ void function UpdateSystemPanel( var panel ) } var dataCenterElem = Hud_GetChild( panel, "DataCenter" ) - if(IsConnected() && GetCurrentPlaylistName() == "flowstate_aimtrainer") + if(IsConnected() && GetCurrentPlaylistName() == "fs_aimtrainer") Hud_SetText( dataCenterElem, "Flowstate Aim Trainer by @CafeFPS") else Hud_SetText( dataCenterElem, "R5Reloaded Server: " + MyPing() + " ms.") @@ -326,7 +326,7 @@ void function SetButtonData( var panel, int buttonIndex, ButtonData buttonData ) void function OnSystemMenu_Close() { - if(ISAIMTRAINER && IsConnected() && GetCurrentPlaylistName() == "flowstate_aimtrainer"){ + if(ISAIMTRAINER && IsConnected() && GetCurrentPlaylistName() == "fs_aimtrainer"){ CloseAllMenus() RunClientScript("ServerCallback_OpenFRChallengesMainMenu", PlayerKillsForChallengesUI) } @@ -337,7 +337,7 @@ void function OnSystemMenu_NavigateBack() { Assert( GetActiveMenu() == file.menu ) CloseActiveMenu() - if(ISAIMTRAINER && IsConnected() && GetCurrentPlaylistName() == "flowstate_aimtrainer"){ + if(ISAIMTRAINER && IsConnected() && GetCurrentPlaylistName() == "fs_aimtrainer"){ CloseAllMenus() RunClientScript("ServerCallback_OpenFRChallengesMainMenu", PlayerKillsForChallengesUI) } diff --git a/vscripts/weapons/mp_ability_phase_rewind.nut b/vscripts/weapons/mp_ability_phase_rewind.nut index a210cdeed..b17307c74 100644 --- a/vscripts/weapons/mp_ability_phase_rewind.nut +++ b/vscripts/weapons/mp_ability_phase_rewind.nut @@ -15,6 +15,10 @@ var function OnWeaponPrimaryAttack_ability_phase_rewind( entity weapon, WeaponPr { timetest = Time() entity player = weapon.GetWeaponOwner() + + if ( player.IsPhaseShifted() ) + return weapon.GetWeaponSettingInt( eWeaponVar.ammo_per_shot ) + #if SERVER thread RewindPlayer(player) #endif diff --git a/vscripts/weapons/mp_weapon_throwingknife.nut b/vscripts/weapons/mp_weapon_throwingknife.nut new file mode 100644 index 000000000..14493f30e --- /dev/null +++ b/vscripts/weapons/mp_weapon_throwingknife.nut @@ -0,0 +1,100 @@ +untyped + +global function ThrowingKnife_Init +global function OnProjectileCollision_weapon_throwingknife + +const int KNIFE_DESPAWN_TIME = 5 +const float FLT_EPSILON = 1.0e-6 + +void function ThrowingKnife_Init() +{ + PrecacheModel( $"mdl/weapons/throwingknife/ptpov_throwing_knife.rmdl" ) + PrecacheModel( $"mdl/weapons/throwingknife/w_throwing_knife.rmdl" ) +} + +void function OnProjectileCollision_weapon_throwingknife( entity projectile, vector pos, vector normal, entity hitEnt, int hitBox, bool isCritical ) +{ + + if ( !IsValid( projectile ) ) + return + + if ( !IsValid( hitEnt ) ) + { + #if SERVER + projectile.Destroy() + #endif + return + } + + bool ignoreTarget = false + + if ( IsValid( projectile.GetOwner() ) && hitEnt == projectile.GetOwner() ) + ignoreTarget = true + + + if ( hitEnt.IsPlayer() && IsFriendlyTeam( hitEnt.GetTeam(), projectile.GetTeam() ) ) + ignoreTarget = true + + //if ( hitEnt.IsPlayerVehicle() ) + // ignoreTarget = true + + //if ( hitEnt.IsPlayer() && StatusEffect_GetTimeRemaining (hitEnt, eStatusEffect.death_totem_recall) ) + // ignoreTarget = true + + vector forward = AnglesToForward( VectorToAngles( projectile.GetVelocity() ) ) + vector stickNormal + + if ( LengthSqr( forward ) > FLT_EPSILON ) + stickNormal = forward + else + stickNormal = normal + + + vector plantpos = pos + (projectile.proj.savedDir) + table collisionParams = + { + pos = pos + (projectile.proj.savedDir), + normal = stickNormal, + hitEnt = hitEnt, + hitbox = hitBox + } + + projectile.kv.solid = 0 + //projectile.SetDoesExplode( false ) + + vector plantAngles = AnglesCompose( VectorToAngles( collisionParams.normal ), <90,0,0> ) + + if ( !PlantStickyEntity( projectile, collisionParams, <90,0,0> ) || ignoreTarget ) + { + + projectile.StopPhysics() + projectile.SetVelocity( <0, 0, 0> ) + + projectile.SetOrigin( plantpos ) + projectile.SetAngles( plantAngles ) + } + else + { + if ( IsValid( projectile ) ) + { + #if CLIENT + projectile.SetOrigin( plantpos ) + projectile.SetAngles( plantAngles ) + #endif + + if ( IsValid( projectile.GetWeaponSource() ) && GetGrenadeProjectileSound( projectile.GetWeaponSource() ) != "" ) + StopSoundOnEntity( projectile, GetGrenadeProjectileSound( projectile.GetWeaponSource() ) ) + + #if SERVER + thread function(entity projectile, entity hitEnt, int KNIFE_DESPAWN_TIME) : () + { + wait KNIFE_DESPAWN_TIME + + if(IsValid(projectile)) + projectile.Destroy() + + }(projectile, hitEnt, KNIFE_DESPAWN_TIME) + #endif + } + } +} \ No newline at end of file diff --git a/weapons/melee_boxing_ring.txt b/weapons/melee_boxing_ring.txt new file mode 100644 index 000000000..dc7db5c82 --- /dev/null +++ b/weapons/melee_boxing_ring.txt @@ -0,0 +1,34 @@ +#base "melee_pilot_emptyhanded.txt" + +WeaponData +{ + + // General + "printname" "Melee" + "shortprintname" "Melee" + "description" "Description needed" + "longdesc" "Description needed" + + "menu_icon" "rui/hud/common/melee_icon" + "hud_icon" "rui/hud/common/melee_icon" + + // Models + "viewmodel" "mdl/weapons/empty_handed/ptpov_boxinghand.rmdl" + "playermodel" "mdl/weapons/empty_handed/w_empty_handed_human.rmdl" + + //"OnWeaponActivate" "OnWeaponActivate_melee_boxing_ring" + //"OnWeaponDeactivate" "OnWeaponDeactivate_melee_boxing_ring" + + // FX + "impact_effect_table" "melee_human" + + // Behavior + "melee_raise_recovery_animtime_normal" "0.75" + "melee_raise_recovery_animtime_quick" "0.75" + + // More punchy knockback compared to normal BR melee + "melee_knockback_velocity_magnitude" "600" + + // Animation + "activitymodifier3P" "boxer" +} diff --git a/weapons/mp_ability_consumable.txt b/weapons/mp_ability_consumable.txt index 8c6672cab..ce9ea7015 100644 --- a/weapons/mp_ability_consumable.txt +++ b/weapons/mp_ability_consumable.txt @@ -183,29 +183,29 @@ WeaponData "fx_muzzle_flash_attach" "muzzle_flash" } - snd_bomb - { - "viewmodel" "mdl/Weapons/bomb/ptpov_bomb.rmdl" - "playermodel" "mdl/Weapons/bomb/w_bomb.rmdl" - "printname" "Planting Bomb" - "charge_time" "4.0" - "raise_time" "1.8" - "hud_icon" "rui/hud/loot/loot_stim_shield_large" - "activitymodifier" "snd_bomb" - "viewmodel_offset_hip" "0 3 2" + // snd_bomb + // { + // "viewmodel" "mdl/Weapons/bomb/ptpov_bomb.rmdl" + // "playermodel" "mdl/Weapons/bomb/w_bomb.rmdl" + // "printname" "Planting Bomb" + // "charge_time" "4.0" + // "raise_time" "1.8" + // "hud_icon" "rui/hud/loot/loot_stim_shield_large" + // "activitymodifier" "snd_bomb" + // "viewmodel_offset_hip" "0 3 2" - // "charge_effect_1p" "P_shield_battery_LRG_FP" - // "charge_effect_3p" "" - // "charge_effect_attachment" "FX_CENTER" - - // "charge_effect2_1p" "P_shield_battery_glow_FP" - // "charge_effect2_3p" "P_shield_battery_glow" - // "charge_effect2_attachment" "muzzle_flash" - - // "fx_muzzle_flash_view" "P_shield_battery_flash_FP" - // "fx_muzzle_flash_world" "P_shield_battery_flash" - // "fx_muzzle_flash_attach" "muzzle_flash" - } + // // "charge_effect_1p" "P_shield_battery_LRG_FP" + // // "charge_effect_3p" "" + // // "charge_effect_attachment" "FX_CENTER" + + // // "charge_effect2_1p" "P_shield_battery_glow_FP" + // // "charge_effect2_3p" "P_shield_battery_glow" + // // "charge_effect2_attachment" "muzzle_flash" + + // // "fx_muzzle_flash_view" "P_shield_battery_flash_FP" + // // "fx_muzzle_flash_world" "P_shield_battery_flash" + // // "fx_muzzle_flash_attach" "muzzle_flash" + // } phoenix_kit { diff --git a/weapons/mp_ability_space_elevator_tac.txt b/weapons/mp_ability_space_elevator_tac.txt index f9ec45712..9382edf8e 100644 --- a/weapons/mp_ability_space_elevator_tac.txt +++ b/weapons/mp_ability_space_elevator_tac.txt @@ -28,7 +28,7 @@ WeaponData "OnWeaponRegenEnd" "OnWeaponRegenEndGeneric" // Models - "viewmodel" "mdl/weapons/shuriken/ptpov_shuriken_held.rmdl" + "viewmodel" "mdl/Weapons/ptpov_repulsor_held/ptpov_repulsor_held.rmdl" "playermodel" "mdl/dev/empty_model.rmdl" "projectilemodel" "mdl/dev/empty_model.rmdl" "offhand_default_inventory_slot" "1" diff --git a/weapons/mp_weapon_dmr.txt b/weapons/mp_weapon_dmr.txt index cf1ae71bd..07c00355f 100644 --- a/weapons/mp_weapon_dmr.txt +++ b/weapons/mp_weapon_dmr.txt @@ -78,7 +78,7 @@ // Ammo // - "ammo_pool_type" "highcal" + "ammo_pool_type" "sniper" "ammo_clip_size" "6" "ammo_stockpile_max" "60" "ammo_default_total" "60" @@ -237,15 +237,15 @@ "viewmodel_offset_hip" "0 0 -0.6" } - highcal_mag_l1 + sniper_mag_l1 { "ammo_clip_size" "8" } - highcal_mag_l2 + sniper_mag_l2 { "ammo_clip_size" "10" } - highcal_mag_l3 + sniper_mag_l3 { "ammo_clip_size" "12" } diff --git a/weapons/mp_weapon_melee_boxing_ring.txt b/weapons/mp_weapon_melee_boxing_ring.txt new file mode 100644 index 000000000..8eccbc6da --- /dev/null +++ b/weapons/mp_weapon_melee_boxing_ring.txt @@ -0,0 +1,30 @@ +#base "mp_weapon_melee_survival.txt" + +WeaponData +{ + // General + "printname" "MELEE_SKIN_PATHFINDER_GLOVES_NAME" + "shortprintname" "MELEE_SKIN_PATHFINDER_GLOVES_NAME" + "description" "MELEE_SKIN_PATHFINDER_GLOVES_NAME" + "longdesc" "MELEE_SKIN_PATHFINDER_GLOVES_NAME" + + // UI/HUD + "menu_icon" "rui/menu/dpad_comms/emoji/fist" + "hud_icon" "rui/menu/dpad_comms/emoji/fist" + + // Models + "viewmodel" "mdl/weapons/empty_handed/ptpov_boxinghand.rmdl" + "playermodel" "mdl/weapons/empty_handed/w_empty_handed_human.rmdl" + + //"OnWeaponActivate" "OnWeaponActivate_weapon_melee_boxing_ring" + //"OnWeaponDeactivate" "OnWeaponDeactivate_weapon_melee_boxing_ring" + + "dof_nearDepthStart" "0.5" + "dof_nearDepthEnd" "6.4" + + // Behavior + "deployfirst_time" "1" + + // Animation + "activitymodifier3P" "boxer" +} diff --git a/weapons/mp_weapon_sentinel.txt b/weapons/mp_weapon_sentinel.txt index fec26caed..bf53c4487 100644 --- a/weapons/mp_weapon_sentinel.txt +++ b/weapons/mp_weapon_sentinel.txt @@ -102,7 +102,7 @@ // Ammo // - "ammo_pool_type" "highcal" + "ammo_pool_type" "sniper" diff --git a/weapons/mp_weapon_throwingknife.txt b/weapons/mp_weapon_throwingknife.txt new file mode 100644 index 000000000..b0b749d4d --- /dev/null +++ b/weapons/mp_weapon_throwingknife.txt @@ -0,0 +1,369 @@ +WeaponData +{ + // General + "printname" "Throwing Knife" + "shortprintname" "Throwing Knife" + "description" "Throwing Knife" + "longdesc" "Throwing Knife" + + "menu_icon" "rui/weapon_icons/r5/weapon_throwingknife" + "hud_icon" "rui/weapon_icons/r5/weapon_throwingknife" + + "weapon_type_flags" "WPT_PRIMARY" + "is_toss_weapon" "1" + "menu_category" "pistol" + "menu_anim_class" "small" + "ammo_pool_type" "" + "holster_type" "pistol" + "secondary_ammo_pool_type" "" + + "trophy_system_ignores" "always" + "minimap_reveal_distance" "32000" + "leveled_pickup" "1" + "show_grenade_indicator" "1" + "show_grenade_indicator_to_owner" "1" + "hide_when_holstered" "0" + "deploy_allow_ads" "1" + + "does_not_interrupt_cloak" "1" + "ads_dof_disable" "1" + "allow_gibraltar_shield" "0" + "activitymodifier3p" "ordnance" + + "OnWeaponTossReleaseAnimEvent" "Grenade_OnWeaponTossReleaseAnimEvent" + "OnWeaponTossPrep" "Grenade_OnWeaponTossPrep" + "OnWeaponTossCancel" "Grenade_OnWeaponTossCancelDrop" + "OnWeaponDeactivate" "Grenade_OnWeaponDeactivate" + //"OnWeaponActivate" "OnWeaponActivate_weapon_throwingknife" + "OnProjectileCollision" "OnProjectileCollision_weapon_throwingknife" + + // Menu Stats + + // Models + "viewmodel" "mdl/weapons/throwingknife/ptpov_throwing_knife.rmdl" + "playermodel" "mdl/weapons/throwingknife/w_throwing_knife.rmdl" + "projectilemodel" "mdl/weapons/throwingknife/w_throwing_knife.rmdl" + "projectile_lifetime" "15" + //"grenade_mover_destroy_when_planted" "1" + + "zoom_effects" "0" + "ads_move_speed_scale" "1" + + // Effects + "bounce_effect_table" "pulse_blade" + "impact_effect_table" "impact_throwing_knife" + + "projectile_trail_effect_0" "P_tracer_proj_sniper_piercer" + + "vortex_impact_effect" "P_impact_exp_emp_med_default" + "vortex_absorb_effect" "wpn_vortex_projectile_rifle_FP" + "vortex_absorb_effect_third_person" "wpn_vortex_projectile_rifle" + "vortex_absorb_sound" "Vortex_Shield_AbsorbBulletSmall" + "vortex_absorb_sound_1P_VS_3P" "Vortex_Shield_AbsorbBulletSmall_1P_VS_3P" + "projectile_adjust_to_gun_barrel" "0" + "projectile_adjust_to_hand" "1" + + //"grenade_arc_indicator_show_from_hip" "1" + //"grenade_arc_indicator_bounce_count" "1" + //"grenade_arc_indicator_effect" "P_arc_red" + //"grenade_arc_indicator_effect_first" "P_arc_red" + //"grenade_arc_impact_indicator_effect" "P_arc_red_end" + + "critical_hit" "1" + + "damage_headshot_scale" "3" + + // Sounds + "sound_throw_1p" "weapon_gravitystar_throw_1p" + "sound_deploy_1p" "weapon_firestar_draw_1p" + "sound_throw_3p" "weapon_gravitystar_throw_3p" + "sound_deploy_3p" "weapon_firestar_draw_3p" + "sound_dryfire" "Survival_UI_Ability_NotReady" + //"sound_cook_warning" "weapon_arcstar_explosivewarningbeep" + //"sound_grenade_projectile" "Pilot_PulseBlade_Throw_1P" + + + "projectile_ricochet_max_count" "999" + "bolt_bounce_frac" "0.1" + + // Damage - When Used by Players + "damage_type" "burn" + "damage_near_distance" "1000" + "damage_far_distance" "3000" + "damage_near_value" "100" + "damage_far_value" "100" + "damage_near_value_titanarmor" "100" + "damage_far_value_titanarmor" "100" + "impulse_force" "0" + "damage_flags" "DF_BULLET" + + "projectile_killreplay_enabled" "1" + + "fire_mode" "automatic" + "is_semi_auto" "1" + + "dof_zoom_nearDepthStart" "0.0" + "dof_zoom_nearDepthEnd" "0.0" + "dof_nearDepthStart" "0.0" + "dof_nearDepthEnd" "0.0" + + // Behavior + + "cooldown_type" "ammo_instant" + "max_cook_time" "-1" + "grenade_fuse_time" "0.0" + "start_fuse_on_launch" "0" + "grenade_ignition_time" "2.8" + "fire_rate" "1.0" + "deploy_time" "0" //Driven by animation + "vortex_refire_behavior" "grenade" + + "reload_enabled" "0" + "allow_empty_click" "0" + "empty_reload_only" "0" + "trigger_snipercam" "0" + "allow_headshots" "1" + "headshot_distance" "2500" + + "grenade_bounce_vel_frac_shallow" "0" + "grenade_bounce_vel_frac_sharp" "0" + "grenade_bounce_vel_frac_along_normal" "0" + "grenade_bounce_randomness" "0" + "grenade_bounce_extra_vertical_randomness" "0" + "grenade_roll_vel_frac_per_second" "0" + "grenade_touch_triggers_on_impact" "1" + + "aimassist_disable_hipfire" "1" + "aimassist_disable_ads" "1" + + "toss_pullout_time" "0.2" + "toss_time" "0.4" + "toss_overhead_time" "0.7" + + "projectile_launch_speed" "3700" + "projectile_launch_pitch_offset" "2" + "projectile_first_person_offset_fraction" "0.5" + "projectile_muzzle_offset_decay_max_time" "0.1" + "projectile_predict_move_to_impact" "false" + "projectile_gravity_scale" "1.6" + "grenade_ignore_planted_grenades" "1" + + "grenade_disc_throw" "0" + "grenade_death_drop_velocity_scale" "0.05" + "grenade_death_drop_velocity_extraUp" "0.10" + + "projectile_inherit_owner_velocity_scale" "0" + + "stick_pilot" "1" + "stick_titan" "1" + "stick_npc" "1" + "stick_drone" "1" + + // Spread + + "ammo_suck_behavior" "primary_weapons" + + // View Kick + "viewkick_spring" "pistol" + + + // Bob + "bob_cycle_time" "0.4" + "bob_vert_dist" "0.19" + "bob_horz_dist" "0.1" + "bob_max_speed" "150" + //"bob_pitch" "0.75" + //"bob_yaw" "-1.7" + //"bob_roll" "1.2" + + // Bob zoomed + "bob_cycle_time_zoomed" "0.4" + "bob_vert_dist_zoomed" "0.19" + "bob_horz_dist_zoomed" "0.1" + "bob_max_speed_zoomed" "150" + + // View Drift + //"viewdrift_hipfire_stand_scale_pitch" "0.325" + //"viewdrift_hipfire_crouch_scale_pitch" "0.275" + //"viewdrift_hipfire_air_scale_pitch" "0.5" + //"viewdrift_hipfire_stand_scale_yaw" "0.12" + //"viewdrift_hipfire_crouch_scale_yaw" "0.10" + //"viewdrift_hipfire_air_scale_yaw" "0.22" + //"viewdrift_hipfire_speed_pitch" "0.6" + //"viewdrift_hipfire_speed_yaw" "1.22" + + // Rumble + "fire_rumble" "rumble_grenadier" + + // Sway + "sway_rotate_attach" "jx_c_pov" + "sway_min_x" "-0.3" + "sway_min_y" "-0.5" + "sway_min_z" "-0.5" + "sway_max_x" "0.3" + "sway_max_y" "0.5" + "sway_max_z" "0.1" + "sway_min_pitch" "-3" + "sway_min_yaw" "-3.5" + "sway_min_roll" "-1" + "sway_max_pitch" "3" + "sway_max_yaw" "3.5" + "sway_max_roll" "2" + "sway_translate_gain" "4" + "sway_rotate_gain" "7" + "sway_move_forward_translate_x" "0" + "sway_move_forward_translate_z" "-0.5" + "sway_move_back_translate_x" "-2" + "sway_move_back_translate_z" "-1" + "sway_move_left_translate_y" "-1" + "sway_move_left_translate_z" "-0.5" + "sway_move_left_rotate_roll" "-1" + "sway_move_right_translate_y" "1" + "sway_move_right_translate_z" "-0.5" + "sway_move_right_rotate_roll" "2" + "sway_move_up_translate_z" "-1" + "sway_move_down_translate_z" "1" + "sway_turn_left_rotate_yaw" "-2" + "sway_turn_right_rotate_yaw" "2" + "sway_turn_up_rotate_pitch" "2" + "sway_turn_down_rotate_pitch" "-2" + "sway_turn_angle_factor" "-0.5" + "sway_turn_origin_factor" "0" + "sway_turn_angle_factor_zoomed" "0" + "sway_turn_origin_factor_zoomed" "0.05" + "sway_move_angle_factor" "0.5" + "sway_move_origin_factor" "0.5" + "sway_move_angle_factor_zoomed" "0" + "sway_move_origin_factor_zoomed" "0.03" + "sway_gain" "15.0" + + "sway_rotate_attach_zoomed" "jx_c_pov" + "sway_min_x_zoomed" "-0.3" + "sway_min_y_zoomed" "-0.5" + "sway_min_z_zoomed" "-0.5" + "sway_max_x_zoomed" "0.3" + "sway_max_y_zoomed" "0.5" + "sway_max_z_zoomed" "0.1" + "sway_min_pitch_zoomed" "-3" + "sway_min_yaw_zoomed" "-3.5" + "sway_min_roll_zoomed" "-1" + "sway_max_pitch_zoomed" "3" + "sway_max_yaw_zoomed" "3.5" + "sway_max_roll_zoomed" "2" + "sway_translate_gain_zoomed" "4" + "sway_rotate_gain_zoomed" "7" + "sway_move_forward_translate_x_zoomed" "0" + "sway_move_forward_translate_z_zoomed" "-0.5" + "sway_move_back_translate_x_zoomed" "-2" + "sway_move_back_translate_z_zoomed" "-1" + "sway_move_left_translate_y_zoomed" "-1" + "sway_move_left_translate_z_zoomed" "-0.5" + "sway_move_left_rotate_roll_zoomed" "-1" + "sway_move_right_translate_y_zoomed" "1" + "sway_move_right_translate_z_zoomed" "-0.5" + "sway_move_right_rotate_roll_zoomed" "2" + "sway_move_up_translate_z_zoomed" "-1" + "sway_move_down_translate_z_zoomed" "1" + "sway_turn_left_rotate_yaw_zoomed" "-2" + "sway_turn_right_rotate_yaw_zoomed" "2" + "sway_turn_up_rotate_pitch_zoomed" "2" + "sway_turn_down_rotate_pitch_zoomed" "-2" + "sway_turn_angle_factor_zoomed" "-0.5" + "sway_turn_origin_factor_zoomed" "0" + "sway_move_angle_factor_zoomed" "0.5" + "sway_move_origin_factor_zoomed" "0.5" + "sway_gain_zoomed" "15.0" + "sway_turn_angle_factor_zoomed" "0" + "sway_turn_origin_factor_zoomed" "0.05" + "sway_move_angle_factor_zoomed" "0" + "sway_move_origin_factor_zoomed" "0.03" + + // NPC + "npc_min_range" "600" + "npc_max_range" "1200" + + + // WeaponED Unhandled Key/Values and custom script Key/Values + "fire_anim_rate" "1" + //"sprintcycle_time" ".55" + + + "ammo_clip_size" "1" + //"ammo_default_total" "1" + "ammo_display" "count" + + //Infinite Ammo + "uses_ammo_pool" "0" + "ammo_min_to_fire" "1" + "ammo_per_shot" "1" + //"ammo_stockpile_max" "1" + "ammo_no_remove_from_stockpile" "1" + + "allow_empty_fire" "1" + "regen_ammo_refill_rate" "1" + "regen_ammo_refill_start_delay" "0.0" + + "ammo_default_total" "500" + "ammo_stockpile_max" "420" + + Mods + { + survival_finite_ammo + { + } + + infinite_ammo_clips + { + } + + seer_passive_throwingknife + { + "zoom_effects" "1" + "zoom_fov" "60" + "zoom_time_in" "0.1" + "zoom_time_out" "0.1" + } + + sp_disable_arc_indicator + { + grenade_arc_indicator_bounce_count "0" + } + + survival_finite_ordnance + { + } + + prophunt + { + "red_crosshair_range" "1" + } + } + + + active_crosshair_count "1" + rui_crosshair_index "0" + + RUI_CrosshairData + { + DefaultArgs + { + adjustedSpread weapon_spread + isSprinting player_is_sprinting + isReloading weapon_is_reloading + teamColor crosshair_team_color + isAmped weapon_is_amped + crosshairMovementX crosshair_movement_x + crosshairMovementY crosshair_movement_y + } + + Crosshair_1 + { + "ui" "ui/crosshair_dot" + "base_spread" "0" + Args + { + isFiring weapon_is_firing + } + } + } +} diff --git a/weapons/mp_weapon_wingman.txt b/weapons/mp_weapon_wingman.txt index 70181d847..515c89af5 100644 --- a/weapons/mp_weapon_wingman.txt +++ b/weapons/mp_weapon_wingman.txt @@ -9,7 +9,7 @@ WeaponData "description" "#WPN_WINGMAN_DESC" "longdesc" "#WPN_WINGMAN_LONGDESC" - "ammo_pool_type" "highcal" + "ammo_pool_type" "sniper" "menu_icon" "rui/weapon_icons/r5/weapon_wingman" "hud_icon" "rui/weapon_icons/r5/weapon_wingman" @@ -252,15 +252,15 @@ WeaponData "fire_sound_1_npc" "weapon_wingman_fire_skull_3p" } - highcal_mag_l1 + sniper_mag_l1 { "ammo_clip_size" "7" } - highcal_mag_l2 + sniper_mag_l2 { "ammo_clip_size" "8" } - highcal_mag_l3 + sniper_mag_l3 { "ammo_clip_size" "9" } From c442791cf9d46ba1503db9dae6e73bf257e73b58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caf=C3=A9DeColombiaFPS?= <92343247+ColombianGuy@users.noreply.github.com> Date: Mon, 8 May 2023 07:51:34 -0500 Subject: [PATCH 10/17] update movement gym --- .../fs_movementgym/_movement_gym.nut | 90 +++++++++++++------ .../fs_movementgym/cl_movement_gym.nut | 85 +++++++++++------- 2 files changed, 115 insertions(+), 60 deletions(-) diff --git a/vscripts/gamemodes/fs_movementgym/_movement_gym.nut b/vscripts/gamemodes/fs_movementgym/_movement_gym.nut index 3cff2b641..7ebc98b57 100644 --- a/vscripts/gamemodes/fs_movementgym/_movement_gym.nut +++ b/vscripts/gamemodes/fs_movementgym/_movement_gym.nut @@ -11,15 +11,14 @@ globalize_all_functions //Init Movement Gym With Map 1 void function MovementGym() { - if (GetMapName() == "mp_rr_desertlands_64k_x_64k" || GetMapName() == "mp_rr_desertlands_64k_x_64k_nx" || GetMapName() == "mp_rr_arena_skygarden") { - + if (GetMapName() == "mp_rr_desertlands_64k_x_64k" || GetMapName() == "mp_rr_desertlands_64k_x_64k_nx" || GetMapName() == "mp_rr_arena_composite") { + // Commands AddClientCommandCallback("hub", ClientCommand_Hub) AddClientCommandCallback("invis", ClientCommand_invis) AddClientCommandCallback("meter", ClientCommand_meter) AddClientCommandCallback("keys", ClientCommand_keys) - - AddClientCommandCallback("spectate", ClientCommand_Spec) + //AddClientCommandCallback("spectate", _MG_Spectate_by_name) //99% ready will update via pull after release //Map init //PrecacheMovementGymProps() @@ -171,9 +170,6 @@ function PrecacheMovementGymProps() { PrecacheModel( $"mdl/desertlands/fence_large_concrete_metal_dirty_192_01.rmdl" ) PrecacheModel( $"mdl/desertlands/fence_large_concrete_metal_dirty_64_01.rmdl" ) PrecacheModel( $"mdl/industrial/landing_mat_metal_03_large.rmdl" ) - - PrecacheModel( $"mdl/fx/core_energy.rmdl" ) - } @@ -304,25 +300,70 @@ function ClientCommand_keys(entity user, array < string > args) { return true } -bool -function ClientCommand_Spec(entity user, array < string > args) { - if( !IsValid(user) || args.len() == 0 ) - return false - - if(args[0] == "off"){ - user.RemoveFromAllRealms() - user.AddToRealm(1) - ClientCommand_SpectateEnemies(user, args) - } - - if(args[0] == "on"){ - user.AddToAllRealms() - ClientCommand_SpectateEnemies(user, args) +bool function _MG_Spectate_by_name(entity player, array name){ + if( !IsValid(player) || name.len() == 0 ){ + Message(player, "Incorrect Usage", "Try: spectate playername\n Or to stop spectating try: spectate stop") + return false + } - } - return true + if( Time() - player.p.lastTimeSpectateUsed < 3 ) + { + Message( player, "Spam Protection", "It is in cool down. Please try again later." ) + return false + } + + + if(name[0] == "stop"){ + if(IsValid(player) && player.p.isSpectating){ + player.p.isSpectating = false + player.SetPlayerNetInt( "spectatorTargetCount", 0 ) + player.SetObserverTarget( null ) + player.StopObserverMode() + player.p.lastTimeSpectateUsed = Time() + DecideRespawnPlayer(player, true) + if(IsValid(player)){ + player.RemoveFromAllRealms() + player.AddToRealm(1) + } + return true + } + } + + if(name[0] != "stop" && player.GetPlayerName() != name[0] && !player.p.isSpectating && player.IsInRealm(1)){ + foreach(target in GetPlayerArray_Alive()) { + if( target.GetPlayerName() == name[0] ){ + player.AddToAllRealms() + if(IsValid(target) && target.IsInRealm(1)){ + player.p.isSpectating = true + player.Die( null, null, { damageSourceId = eDamageSourceId.damagedef_suicide } ) + player.SetPlayerNetInt( "spectatorTargetCount", 1 ) + player.SetObserverTarget( target ) + player.SetSpecReplayDelay( 5 ) + player.StartObserverMode( OBS_MODE_IN_EYE ) + player.p.lastTimeSpectateUsed = Time() + //thread _MG_Spectate_checker(player, target) + return true + } else { + Message(player, "Player is hidden", "or is surfing :)") + player.RemoveFromAllRealms() + player.AddToRealm(1) + return false + } + + } else { + Message(player, "Invalid Player Name", "or player are already spectating someone") + return false + } + } + } else { + Message(player, "Invalid Parameters", "Possible Reasons:\n wrong username\n you are already spectating someone\n unhide players\n exit surf\n ") + return false + } + + return false } + //whacky glowy button entity function CreateSurfButton(vector pos, vector ang, string prompt) { @@ -486,8 +527,6 @@ function MovementGym_Hub_Buttons() { MapEditor_CreateProp($"mdl/industrial/screwdriver_octane.rmdl", < 10517, 10181.96, -4230.4 > , < 0, -180, -90 > , true, 5000, -1, 4.98262) MapEditor_CreateProp($"mdl/props/octane_jump_pad/octane_jump_pad.rmdl", < 10509, 10076.96, -4217.5 > , < 90, 0, 0 > , true, 5000, -1, 1.367478) MapEditor_CreateProp($"mdl/props/lifeline_needle/lifeline_needle.rmdl", < 10517.2, 9993.263, -4230.4 > , < 0, -90, -90 > , true, 5000, -1, 6.85924) - - MapEditor_CreateProp( $"mdl/fx/core_energy.rmdl", < -21600, 400, -26500 >, < 0, 0, 0 >, true, 50000, -1, 5.1 ) foreach(entity ent in NoCollisionArray) ent.kv.solid = 0 @@ -7774,4 +7813,3 @@ function MovementGym_Surf_Kitsune_lvl7() { DispatchSpawn(trigger_0) } - diff --git a/vscripts/gamemodes/fs_movementgym/cl_movement_gym.nut b/vscripts/gamemodes/fs_movementgym/cl_movement_gym.nut index 064107dc0..b9a89be05 100644 --- a/vscripts/gamemodes/fs_movementgym/cl_movement_gym.nut +++ b/vscripts/gamemodes/fs_movementgym/cl_movement_gym.nut @@ -5,6 +5,7 @@ globalize_all_functions bool kmh float speedometer_hz string time = "" +bool s4lighting // init void function Cl_MovementGym_Init() @@ -14,6 +15,7 @@ void function Cl_MovementGym_Init() // Get Movement Gym User Settings speedometer_hz = 0.05 kmh = true + s4lighting = false // Register Signals RegisterSignal("StopStopWatch") @@ -22,6 +24,7 @@ void function Cl_MovementGym_Init() // Hud MG_Speedometer_toggle(true) MG_MovementOverlay_toggle(true) + thread MG_ForceLighting() } @@ -88,10 +91,12 @@ void function MG_StopWatch_Obituary(int seconds, entity name, int map){ } else if (usertime > 9) { time = "0:" + usertime Obituary_Print_Localized( "%$rui/menu/store/feature_timer% " + name.GetPlayerName() + " has finished" + " Map " + map + " in " + time, GetChatTitleColorForPlayer( GetLocalViewPlayer() ), BURN_COLOR ) - } else { + } else if (usertime > 0) { time = "0:0" + usertime Obituary_Print_Localized( "%$rui/menu/store/feature_timer% " + name.GetPlayerName() + " has finished" + " Map " + map + " in " + time, GetChatTitleColorForPlayer( GetLocalViewPlayer() ), BURN_COLOR ) - } + } + + } void function MG_StopWatch_destroy(){ @@ -236,7 +241,19 @@ void function MG_Checkpoint_Msg(){ AnnouncementFromClass( player, announcement ) } - +void function MG_ForceLighting(){ + if(s4lighting){ + while(true){ + if(GetConVarFloat( "mat_sky_scale") != 0.5 || GetConVarFloat( "mat_sun_scale") != 2.5 || GetConVarString( "mat_sun_color") != "2.0 1.2 0.5 1.0"){ + // Force Client settings + SetConVarFloat( "mat_sky_scale", 0.5 ) + SetConVarFloat( "mat_sun_scale", 2.5 ) + SetConVarString( "mat_sun_color", "2.0 1.2 0.5 1.0" ) + } + WaitFrame() + } + } +} //Movement WASD overlay void function MG_MovementOverlay_toggle(bool visible){ @@ -249,23 +266,24 @@ void function MG_MovementOverlay_toggle(bool visible){ Hud_SetVisible(HudElement( "MG_MO_SPACE" ), true) // W - RegisterButtonPressedCallback(KEY_W, MG_MovementOverlay_W_Pressed) - RegisterButtonReleasedCallback(KEY_W, MG_MovementOverlay_W_Released) + RegisterConCommandTriggeredCallback("+forward", MG_MovementOverlay_W_Pressed) + RegisterConCommandTriggeredCallback("-forward", MG_MovementOverlay_W_Released) // A - RegisterButtonPressedCallback(KEY_A, MG_MovementOverlay_A_Pressed) - RegisterButtonReleasedCallback(KEY_A, MG_MovementOverlay_A_Released) + RegisterConCommandTriggeredCallback("+moveleft", MG_MovementOverlay_A_Pressed) + RegisterConCommandTriggeredCallback("-moveleft", MG_MovementOverlay_A_Released) // S - RegisterButtonPressedCallback(KEY_S, MG_MovementOverlay_S_Pressed) - RegisterButtonReleasedCallback(KEY_S, MG_MovementOverlay_S_Released) + RegisterConCommandTriggeredCallback("+backward", MG_MovementOverlay_S_Pressed) + RegisterConCommandTriggeredCallback("-backward", MG_MovementOverlay_S_Released) // D - RegisterButtonPressedCallback(KEY_D, MG_MovementOverlay_D_Pressed) - RegisterButtonReleasedCallback(KEY_D, MG_MovementOverlay_D_Released) + RegisterConCommandTriggeredCallback("+moveright", MG_MovementOverlay_D_Pressed) + RegisterConCommandTriggeredCallback("-moveright", MG_MovementOverlay_D_Released) // CTRL - RegisterButtonPressedCallback(KEY_LCONTROL, MG_MovementOverlay_CTRL_Pressed) - RegisterButtonReleasedCallback(KEY_LCONTROL, MG_MovementOverlay_CTRL_Released) + RegisterConCommandTriggeredCallback("+duck", MG_MovementOverlay_CTRL_Pressed) + RegisterConCommandTriggeredCallback("-duck", MG_MovementOverlay_CTRL_Released) // SPACE - RegisterButtonPressedCallback(KEY_SPACE, MG_MovementOverlay_SPACE_Pressed) - RegisterButtonReleasedCallback(KEY_SPACE, MG_MovementOverlay_SPACE_Released) + RegisterConCommandTriggeredCallback("+jump", MG_MovementOverlay_SPACE_Pressed) + RegisterConCommandTriggeredCallback("-jump", MG_MovementOverlay_SPACE_Released) + } else { Hud_SetVisible(HudElement( "MG_MO_W" ), false) Hud_SetVisible(HudElement( "MG_MO_A" ), false) @@ -275,28 +293,28 @@ void function MG_MovementOverlay_toggle(bool visible){ Hud_SetVisible(HudElement( "MG_MO_SPACE" ), false) // W - DeregisterButtonPressedCallback(KEY_W, MG_MovementOverlay_W_Pressed) - DeregisterButtonReleasedCallback(KEY_W, MG_MovementOverlay_W_Released) + DeregisterConCommandTriggeredCallback("+forward", MG_MovementOverlay_W_Pressed) + DeregisterConCommandTriggeredCallback("-forward", MG_MovementOverlay_W_Released) // A - DeregisterButtonPressedCallback(KEY_A, MG_MovementOverlay_A_Pressed) - DeregisterButtonReleasedCallback(KEY_A, MG_MovementOverlay_A_Released) + DeregisterConCommandTriggeredCallback("+moveleft", MG_MovementOverlay_A_Pressed) + DeregisterConCommandTriggeredCallback("-moveleft", MG_MovementOverlay_A_Released) // S - DeregisterButtonPressedCallback(KEY_S, MG_MovementOverlay_S_Pressed) - DeregisterButtonReleasedCallback(KEY_S, MG_MovementOverlay_S_Released) + DeregisterConCommandTriggeredCallback("+backward", MG_MovementOverlay_S_Pressed) + DeregisterConCommandTriggeredCallback("-backward", MG_MovementOverlay_S_Released) // D - DeregisterButtonPressedCallback(KEY_D, MG_MovementOverlay_D_Pressed) - DeregisterButtonReleasedCallback(KEY_D, MG_MovementOverlay_D_Released) + DeregisterConCommandTriggeredCallback("+moveright", MG_MovementOverlay_D_Pressed) + DeregisterConCommandTriggeredCallback("-moveright", MG_MovementOverlay_D_Released) // CTRL - DeregisterButtonPressedCallback(KEY_LCONTROL, MG_MovementOverlay_CTRL_Pressed) - DeregisterButtonReleasedCallback(KEY_LCONTROL, MG_MovementOverlay_CTRL_Released) + DeregisterConCommandTriggeredCallback("+duck", MG_MovementOverlay_CTRL_Pressed) + DeregisterConCommandTriggeredCallback("-duck", MG_MovementOverlay_CTRL_Released) // SPACE - DeregisterButtonPressedCallback(KEY_SPACE, MG_MovementOverlay_SPACE_Pressed) - DeregisterButtonReleasedCallback(KEY_SPACE, MG_MovementOverlay_SPACE_Released) + DeregisterConCommandTriggeredCallback("+jump", MG_MovementOverlay_SPACE_Pressed) + DeregisterConCommandTriggeredCallback("-jump", MG_MovementOverlay_SPACE_Released) } } void function MG_MovementOverlay_W_Pressed(var button){ - Hud_SetText(HudElement( "MG_MO_W" ), "%W%") + Hud_SetText(HudElement( "MG_MO_W" ), "%forward%") } void function MG_MovementOverlay_W_Released(var button){ @@ -304,7 +322,7 @@ void function MG_MovementOverlay_W_Released(var button){ } void function MG_MovementOverlay_A_Pressed(var button){ - Hud_SetText(HudElement( "MG_MO_A" ), "%A%") + Hud_SetText(HudElement( "MG_MO_A" ), "%moveleft%") } void function MG_MovementOverlay_A_Released(var button){ @@ -312,7 +330,7 @@ void function MG_MovementOverlay_A_Released(var button){ } void function MG_MovementOverlay_S_Pressed(var button){ - Hud_SetText(HudElement( "MG_MO_S" ), "%S%") + Hud_SetText(HudElement( "MG_MO_S" ), "%backward%") } void function MG_MovementOverlay_S_Released(var button){ @@ -320,7 +338,7 @@ void function MG_MovementOverlay_S_Released(var button){ } void function MG_MovementOverlay_D_Pressed(var button){ - Hud_SetText(HudElement( "MG_MO_D" ), "%D%") + Hud_SetText(HudElement( "MG_MO_D" ), "%moveright%") } void function MG_MovementOverlay_D_Released(var button){ @@ -328,7 +346,7 @@ void function MG_MovementOverlay_D_Released(var button){ } void function MG_MovementOverlay_CTRL_Pressed(var button){ - Hud_SetText(HudElement( "MG_MO_CTRL" ), "%LCTRL%") + Hud_SetText(HudElement( "MG_MO_CTRL" ), "%duck%") } void function MG_MovementOverlay_CTRL_Released(var button){ @@ -336,14 +354,13 @@ void function MG_MovementOverlay_CTRL_Released(var button){ } void function MG_MovementOverlay_SPACE_Pressed(var button){ - Hud_SetText(HudElement( "MG_MO_SPACE" ), "%SPACE%") + Hud_SetText(HudElement( "MG_MO_SPACE" ), "%jump%") } void function MG_MovementOverlay_SPACE_Released(var button){ Hud_SetText(HudElement( "MG_MO_SPACE" ), " ") } - //Ultrakill stylemeter void function MG_Ultrakill_styleemeter_toggle(bool visible){ if(visible == true){ From db7be04bdf8c2b82c440b2c3a54b4bd0b599ef2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caf=C3=A9DeColombiaFPS?= <92343247+ColombianGuy@users.noreply.github.com> Date: Mon, 8 May 2023 08:20:23 -0500 Subject: [PATCH 11/17] why would you do that --- weapons/_base_smg_optics.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/weapons/_base_smg_optics.txt b/weapons/_base_smg_optics.txt index 531564cbb..28ae7710a 100644 --- a/weapons/_base_smg_optics.txt +++ b/weapons/_base_smg_optics.txt @@ -1,7 +1,7 @@ #base "_base_optics.txt" #base "_base_optics_cq.txt" #base "_base_optics_cq_threat.txt" -#base "_base_optics_ranged.txt" +//#base "_base_optics_ranged.txt" WeaponData { From 0732422de417b5a2b5508bc84fe271bd8782ca4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caf=C3=A9DeColombiaFPS?= <92343247+ColombianGuy@users.noreply.github.com> Date: Mon, 8 May 2023 11:54:04 -0500 Subject: [PATCH 12/17] fix armor swap bug --- .../fs_aimtrainer/_gamemode_aimtrainer.nut | 14 +++++++++----- .../fs_aimtrainer/cl_gamemode_aimtrainer.nut | 2 +- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/vscripts/gamemodes/fs_aimtrainer/_gamemode_aimtrainer.nut b/vscripts/gamemodes/fs_aimtrainer/_gamemode_aimtrainer.nut index bf6289e77..23dfb8372 100644 --- a/vscripts/gamemodes/fs_aimtrainer/_gamemode_aimtrainer.nut +++ b/vscripts/gamemodes/fs_aimtrainer/_gamemode_aimtrainer.nut @@ -2159,15 +2159,19 @@ void function StartArmorSwapChallenge(entity player) array circleLocations = NavMesh_RandomPositions( player.GetOrigin(), HULL_HUMAN, 10, 20*AimTrainer_SPAWN_DISTANCE, 50*AimTrainer_SPAWN_DISTANCE ) - WaitFrame() while(true){ + WaitFrame() array NewcircleLocations = NavMesh_RandomPositions( AimTrainerOriginToGround( ), HULL_HUMAN, 10, 20*AimTrainer_SPAWN_DISTANCE, 50*AimTrainer_SPAWN_DISTANCE ) if(NewcircleLocations.len() > 0 ) { - circleLocations.clear() - circleLocations = NewcircleLocations + circleLocations.clear() } + circleLocations = NewcircleLocations + + if(circleLocations.len() == 0) + continue + foreach(deathbox in ChallengesEntities.dummies) if(!IsValid(deathbox)) ChallengesEntities.dummies.removebyvalue(deathbox) @@ -2188,8 +2192,7 @@ void function StartArmorSwapChallenge(entity player) thread EnableDeathboxMantleAfterSomeTime(deathbox) wait 0.2 - } - WaitFrame() + } } } @@ -2253,6 +2256,7 @@ entity function FlowState_CreateDeathBox( entity player, vector origin) array coolDevs = [ "R5R_CafeFPS", + "R5R_DEAFPS", "R5R_AyeZee", "R5R_Makimakima", "R5R_Endergreen12", diff --git a/vscripts/gamemodes/fs_aimtrainer/cl_gamemode_aimtrainer.nut b/vscripts/gamemodes/fs_aimtrainer/cl_gamemode_aimtrainer.nut index 8e4cd8fee..071fa639f 100644 --- a/vscripts/gamemodes/fs_aimtrainer/cl_gamemode_aimtrainer.nut +++ b/vscripts/gamemodes/fs_aimtrainer/cl_gamemode_aimtrainer.nut @@ -541,7 +541,7 @@ void function ToggleArmorSwapUI(bool toggle) thread function():() { wait 3 - AimTrainer_QuickHint( "Move to spawn new deathboxes", true, 5 ) + AimTrainer_QuickHint( "Move to spawn new deathboxes", true, 15 ) }() } } From c0e5063dfcf0b3376f09fa113542dbd99dcacf5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caf=C3=A9DeColombiaFPS?= <92343247+ColombianGuy@users.noreply.github.com> Date: Mon, 8 May 2023 12:52:22 -0500 Subject: [PATCH 13/17] latest gym updates --- vscripts/_entitystructs.gnut | 2 +- .../fs_movementgym/_movement_gym.nut | 39 ++- .../fs_movementgym/cl_movement_gym.nut | 248 +++++++++++++++++- 3 files changed, 277 insertions(+), 12 deletions(-) diff --git a/vscripts/_entitystructs.gnut b/vscripts/_entitystructs.gnut index 56dc90e89..a7dbc6afd 100644 --- a/vscripts/_entitystructs.gnut +++ b/vscripts/_entitystructs.gnut @@ -739,7 +739,7 @@ global struct ServerPlayerStruct bool speedometerVisible = true bool movementOverlayVisible = true - + bool stylemeterVisible = false //DeathRecap DeathRecapDamageData DeathRecap_DataToSend entity DeathRecap_PreviousShotWeapon = null diff --git a/vscripts/gamemodes/fs_movementgym/_movement_gym.nut b/vscripts/gamemodes/fs_movementgym/_movement_gym.nut index 7ebc98b57..003166320 100644 --- a/vscripts/gamemodes/fs_movementgym/_movement_gym.nut +++ b/vscripts/gamemodes/fs_movementgym/_movement_gym.nut @@ -18,6 +18,7 @@ function MovementGym() { AddClientCommandCallback("invis", ClientCommand_invis) AddClientCommandCallback("meter", ClientCommand_meter) AddClientCommandCallback("keys", ClientCommand_keys) + AddClientCommandCallback("style", ClientCommand_style) //AddClientCommandCallback("spectate", _MG_Spectate_by_name) //99% ready will update via pull after release //Map init @@ -300,6 +301,28 @@ function ClientCommand_keys(entity user, array < string > args) { return true } +//Stylemeter on/off +bool +function ClientCommand_style(entity user, array < string > args) { + if( !IsValid(user) || args.len() == 0 ) + return false + + if(args[0] == "off"){ + if(user.p.stylemeterVisible == true){ + Remote_CallFunction_NonReplay( user, "MG_Ultrakill_styleemeter_toggle", false) + user.p.stylemeterVisible = false + } + } + + if(args[0] == "on"){ + if(user.p.stylemeterVisible == false){ + Remote_CallFunction_NonReplay( user, "MG_Ultrakill_styleemeter_toggle", true) + user.p.stylemeterVisible = true + } + } + return true +} + bool function _MG_Spectate_by_name(entity player, array name){ if( !IsValid(player) || name.len() == 0 ){ Message(player, "Incorrect Usage", "Try: spectate playername\n Or to stop spectating try: spectate stop") @@ -458,8 +481,8 @@ function MovementGym_Hub() { //apply melee TakeAllWeapons(ent) - ent.GiveWeapon("mp_weapon_bolo_sword_primary", WEAPON_INVENTORY_SLOT_PRIMARY_2, []) - ent.GiveOffhandWeapon("melee_bolo_sword", OFFHAND_MELEE, []) + ent.GiveWeapon("mp_weapon_melee_boxing_ring", WEAPON_INVENTORY_SLOT_PRIMARY_2, []) + ent.GiveOffhandWeapon("melee_boxing_ring", OFFHAND_MELEE, []) ent.GiveOffhandWeapon("mp_ability_phase_walk", OFFHAND_TACTICAL) ent.SetPlayerNetBool("pingEnabled", false) @@ -490,8 +513,8 @@ function MovementGym_Hub() { //apply melee TakeAllWeapons(ent) - ent.GiveWeapon("mp_weapon_bolo_sword_primary", WEAPON_INVENTORY_SLOT_PRIMARY_2, []) - ent.GiveOffhandWeapon("melee_bolo_sword", OFFHAND_MELEE, []) + ent.GiveWeapon("mp_weapon_melee_boxing_ring", WEAPON_INVENTORY_SLOT_PRIMARY_2, []) + ent.GiveOffhandWeapon("melee_boxing_ring", OFFHAND_MELEE, []) ent.GiveOffhandWeapon("mp_ability_phase_walk", OFFHAND_TACTICAL) ent.SetPlayerNetBool("pingEnabled", false) @@ -613,8 +636,8 @@ function MovementGym_Hub_Buttons() { //apply melee TakeAllWeapons(user) - user.GiveWeapon("mp_weapon_bolo_sword_primary", WEAPON_INVENTORY_SLOT_PRIMARY_2, []) - user.GiveOffhandWeapon("melee_bolo_sword", OFFHAND_MELEE, []) + user.GiveWeapon("mp_weapon_melee_boxing_ring", WEAPON_INVENTORY_SLOT_PRIMARY_2, []) + user.GiveOffhandWeapon("melee_boxing_ring", OFFHAND_MELEE, []) user.SetPlayerNetBool("pingEnabled", false) Message(user, "Pathfinder Grapples", "You now recieved Grapple Tactical") @@ -665,8 +688,8 @@ function MovementGym_Map2_Button(){ //apply melee TakeAllWeapons(user) - user.GiveWeapon("mp_weapon_bolo_sword_primary", WEAPON_INVENTORY_SLOT_PRIMARY_2, []) - user.GiveOffhandWeapon("melee_bolo_sword", OFFHAND_MELEE, []) + user.GiveWeapon("mp_weapon_melee_boxing_ring", WEAPON_INVENTORY_SLOT_PRIMARY_2, []) + user.GiveOffhandWeapon("melee_boxing_ring", OFFHAND_MELEE, []) user.SetPlayerNetBool("pingEnabled", false) Message(user, "Map 2 by DEAFPS") diff --git a/vscripts/gamemodes/fs_movementgym/cl_movement_gym.nut b/vscripts/gamemodes/fs_movementgym/cl_movement_gym.nut index b9a89be05..eaf2c7e1a 100644 --- a/vscripts/gamemodes/fs_movementgym/cl_movement_gym.nut +++ b/vscripts/gamemodes/fs_movementgym/cl_movement_gym.nut @@ -7,6 +7,8 @@ float speedometer_hz string time = "" bool s4lighting +float stylepoints = 0 + // init void function Cl_MovementGym_Init() { @@ -16,18 +18,55 @@ void function Cl_MovementGym_Init() speedometer_hz = 0.05 kmh = true s4lighting = false + thread MG_Settings_listener() // Register Signals RegisterSignal("StopStopWatch") RegisterSignal("StopSpeedometer") + RegisterSignal("StopStylemeter") + RegisterSignal("StopS4") // Hud MG_Speedometer_toggle(true) MG_MovementOverlay_toggle(true) - thread MG_ForceLighting() + MG_Ultrakill_styleemeter_toggle(false) +} + +void function MG_Settings_listener(){ + string setting + entity player = GetLocalClientPlayer() + string playername = player.GetPlayerName() + + while(true){ + setting = GetConVarString("name") + + switch (setting) { + case "mph": + kmh = false + MG_Speedometer_destroy() + WaitFrame() + thread MG_Speedometer() + SetConVarString("name", playername) + break + case "kmh": + kmh = true + MG_Speedometer_destroy() + WaitFrame() + thread MG_Speedometer() + SetConVarString("name", playername) + break + case "s4": + s4lighting = true + thread MG_ForceLighting() + SetConVarString("name", playername) + break + } + WaitFrame() + } } + // StopWatch void function MG_StopWatch_toggle(bool visible){ if(visible == true) @@ -242,6 +281,9 @@ void function MG_Checkpoint_Msg(){ } void function MG_ForceLighting(){ + entity player = GetLocalClientPlayer() + EndSignal(player, "StopS4") + if(s4lighting){ while(true){ if(GetConVarFloat( "mat_sky_scale") != 0.5 || GetConVarFloat( "mat_sun_scale") != 2.5 || GetConVarString( "mat_sun_color") != "2.0 1.2 0.5 1.0"){ @@ -364,8 +406,208 @@ void function MG_MovementOverlay_SPACE_Released(var button){ //Ultrakill stylemeter void function MG_Ultrakill_styleemeter_toggle(bool visible){ if(visible == true){ - //placeholder + thread MG_Ultrakill_styleemeter() } else { - //placeholder + MG_Ultrakill_styleemeter_destroy() } } + +void function MG_Ultrakill_styleemeter(){ + + int timesUsedSlide + float slidetime + float lastslide + + int timesUsedWR + float wallruntime + float lastwallrun + + float lastmantle + bool wasmantle + + float sprinttime + float airtime + + int timesUsedSG + float lastSG + + float laststyletime + + float StyleBarWidth + + entity player = GetLocalClientPlayer() + EndSignal(player, "StopStylemeter") + + Hud_SetVisible(HudElement( "MG_Style_Bar" ), true) + + Hud_SetVisible(HudElement( "MG_Style_Label" ), true) + Hud_SetY( HudElement( "MG_Style_Label" ), -40 ) + + Hud_SetVisible(HudElement( "MG_Style_History_Wallrun" ), true) + Hud_SetVisible(HudElement( "MG_Style_History_Superglide" ), true) + Hud_SetVisible(HudElement( "MG_Style_History_Slide" ), true) + Hud_SetVisible(HudElement( "MG_Style_History_Speed" ), true) + + + + + while(true){ + + entity playerr = GetLocalClientPlayer() + if( !playerr.IsObserver()){ + if (IsValid(playerr)){ + + float TimeNow = Time() + float playerVel + vector playerVelV = playerr.GetVelocity() + + playerVel = sqrt(playerVelV.x * playerVelV.x + playerVelV.y * playerVelV.y + playerVelV.z * playerVelV.z) + + + //airtime--------------------------------------------------------- + if(!player.IsOnGround()){ + airtime += 0.025 + //if(airtime > 0.2 && airtime < 1){ + // stylepoints += 3.0 + //} + }else if(player.IsOnGround()){ + airtime = 0.0 + } + + + //slidetime--------------------------------------------------------- + if(player.IsSliding() && player.IsOnGround()){ + slidetime += 0.025 + //if(slidetime > 0.2 && slidetime < 1){ + // stylepoints += 3.0 + //} + }else if(!player.IsOnGround()){ + slidetime = 0.0 + } + + //slide + if(player.IsSliding() && player.IsOnGround() && TimeNow - slidetime > 1){ + float reward = 2.0 + stylepoints += reward + laststyletime = TimeNow + lastslide = TimeNow + timesUsedSlide++ + string msg = "%$rui/bullet_point% Slide ^002FFF00+" + (reward*timesUsedSlide).tostring() + Hud_SetText( HudElement( "MG_Style_History_Slide" ), msg) + Hud_FadeOverTime( HudElement( "MG_Style_History_Slide" ), 255, 0, 1 ) + EmitSoundOnEntity( player, RESPAWN_BEACON_LOOP_SOUND ) + StopSoundOnEntity( player, RESPAWN_BEACON_LOOP_SOUND ) + + } + + //walltime--------------------------------------------------------- + if(player.IsWallRunning() && !player.IsOnGround()){ + wallruntime += 0.025 + //if(wallruntime > 0.2 && wallruntime < 1){ + // stylepoints += 3.0 + //} + }else if(player.IsOnGround()){ + wallruntime = 0.0 + } + + //wallrun + if(player.IsWallRunning() && TimeNow - wallruntime > 5){ + float reward = 5.0 + stylepoints += reward + laststyletime = TimeNow + lastwallrun = TimeNow + timesUsedWR++ + string msg = "%$rui/bullet_point% Wallrun/Climb ^002FFF00+" + (reward*timesUsedWR).tostring() + Hud_SetText( HudElement( "MG_Style_History_Wallrun" ), msg) + Hud_FadeOverTime( HudElement( "MG_Style_History_Wallrun" ), 255, 0, 1 ) + EmitSoundOnEntity( player, RESPAWN_BEACON_LOOP_SOUND ) + StopSoundOnEntity( player, RESPAWN_BEACON_LOOP_SOUND ) + } + + + //SuperGlide------------------------------------------------------ + if(player.IsMantling()){ + wasmantle = true + lastmantle = TimeNow + } + + if(wasmantle == true && !player.IsOnGround() && playerVel > 500 && player.IsSliding() && airtime <= 0.05){ + float reward = 50.0 + stylepoints += reward + laststyletime = TimeNow + lastSG = TimeNow + timesUsedSG++ + string msg = "%$rui/bullet_point% Superglide ^002FFF00+" + (reward*timesUsedSG).tostring() + Hud_SetText( HudElement( "MG_Style_History_Superglide" ), msg) + Hud_FadeOverTime( HudElement( "MG_Style_History_Superglide" ), 255, 0, 1 ) + EmitSoundOnEntity( player, PING_SOUND_DEFAULT ) + } + + if (TimeNow - lastmantle > 0.25){ + lastmantle = 0.0 + wasmantle = false + } + + + + //reset if inactive------------------------------------------------- + if(TimeNow - laststyletime > 5.0){ + stylepoints = 0.0 + printf("lost combo") + } + + //constantly loose points + if(stylepoints >= 1.0){ + stylepoints -= 0.5 + } + + //reset times used------------------------------------------------- + if(TimeNow - lastSG > 1.5){ + timesUsedSG = 0 + Hud_FadeOverTime( HudElement( "MG_Style_History_Superglide" ), 0, 0.1, 1 ) + } + + if(TimeNow - lastwallrun > 1.5){ + timesUsedWR = 0 + //Hud_SetText( HudElement( "MG_Style_History_Wallrun" ), " ") + Hud_FadeOverTime( HudElement( "MG_Style_History_Wallrun" ), 0, 0.1, 1 ) + } + + if(TimeNow - lastslide > 1.5){ + timesUsedSlide = 0 + //Hud_SetText( HudElement( "MG_Style_History_Slide" ), " ") + Hud_FadeOverTime( HudElement( "MG_Style_History_Slide" ), 0, 0.1, 1 ) + } + + //prevent negative------------------------------------------------- + if(stylepoints < 0.0 || TimeNow - laststyletime > 5.0){ + stylepoints = 0.0 + } + + //update points----------------------------------------------------- + StyleBarWidth = (stylepoints/4.0) + if(StyleBarWidth > 500.0) + StyleBarWidth = 500.0 + + Hud_SetText( HudElement( "MG_Style_Label" ), "Stylepoints ^FFC83200" + stylepoints.tointeger()) + Hud_SetWidth( HudElement( "MG_Style_Bar" ), StyleBarWidth) + + } + } + + wait 0.025 + } + +} + +void function MG_Ultrakill_styleemeter_destroy(){ + entity player = GetLocalClientPlayer() + Signal(player, "StopStylemeter") + + Hud_SetVisible(HudElement( "MG_Style_Bar" ), false) + Hud_SetVisible(HudElement( "MG_Style_Label" ), false) + Hud_SetVisible(HudElement( "MG_Style_History_Wallrun" ), false) + Hud_SetVisible(HudElement( "MG_Style_History_Superglide" ), false) + Hud_SetVisible(HudElement( "MG_Style_History_Slide" ), false) + Hud_SetVisible(HudElement( "MG_Style_History_Speed" ), false) +} From ba711ae417bc467750d9ab3a98fa7fd552097701 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caf=C3=A9DeColombiaFPS?= <92343247+ColombianGuy@users.noreply.github.com> Date: Mon, 8 May 2023 13:22:44 -0500 Subject: [PATCH 14/17] Update cl_movement_gym.nut --- vscripts/gamemodes/fs_movementgym/cl_movement_gym.nut | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/vscripts/gamemodes/fs_movementgym/cl_movement_gym.nut b/vscripts/gamemodes/fs_movementgym/cl_movement_gym.nut index eaf2c7e1a..95230e2eb 100644 --- a/vscripts/gamemodes/fs_movementgym/cl_movement_gym.nut +++ b/vscripts/gamemodes/fs_movementgym/cl_movement_gym.nut @@ -551,9 +551,8 @@ void function MG_Ultrakill_styleemeter(){ //reset if inactive------------------------------------------------- - if(TimeNow - laststyletime > 5.0){ + if(TimeNow - laststyletime > 5.0 && stylepoints > 0.0){ stylepoints = 0.0 - printf("lost combo") } //constantly loose points From 4f43e17dd27da1c43ace24bf9fde29b1a1bf2b42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caf=C3=A9DeColombiaFPS?= <92343247+ColombianGuy@users.noreply.github.com> Date: Mon, 8 May 2023 18:27:17 -0500 Subject: [PATCH 15/17] fix some issues before public release --- .../flowstate_prophunt_scoreboard.menu | 2 +- vscripts/_mapeditor.gnut | 3 + .../fs_duckhunt/_gamemode_duckhunt.nut | 1 + .../fs_prophunt/_gamemode_prophunt.nut | 110 ++++++++++-------- .../gamemodes/fs_tdm/cl_gamemode_fsdm.nut | 1 + .../ui/FlowstateDM/flowstate_menu_vote.nut | 6 + vscripts/ui/_menus.nut | 8 +- weapons/mp_weapon_r97.txt | 8 +- 8 files changed, 81 insertions(+), 58 deletions(-) diff --git a/resource/ui/menus/FlowstateDM/flowstate_prophunt_scoreboard.menu b/resource/ui/menus/FlowstateDM/flowstate_prophunt_scoreboard.menu index abc7cddab..534466ef7 100644 --- a/resource/ui/menus/FlowstateDM/flowstate_prophunt_scoreboard.menu +++ b/resource/ui/menus/FlowstateDM/flowstate_prophunt_scoreboard.menu @@ -1,4 +1,4 @@ -"scripts/resource/ui/menus/FlowstateDM/fs_prophunt_scoreboard.menu" +"scripts/resource/ui/menus/FlowstateDM/flowstate_prophunt_scoreboard.menu" { "menu" { diff --git a/vscripts/_mapeditor.gnut b/vscripts/_mapeditor.gnut index 4258826f5..20ef66b4d 100644 --- a/vscripts/_mapeditor.gnut +++ b/vscripts/_mapeditor.gnut @@ -45,6 +45,9 @@ void function MapEditor_Init() void function MapTriggers_Init() { + if(GameRules_GetGameMode() == "fs_duckhunt") + return + switch (GetMapName()) { case "mp_rr_aqueduct_night": diff --git a/vscripts/gamemodes/fs_duckhunt/_gamemode_duckhunt.nut b/vscripts/gamemodes/fs_duckhunt/_gamemode_duckhunt.nut index 5e115e651..725cd6a33 100644 --- a/vscripts/gamemodes/fs_duckhunt/_gamemode_duckhunt.nut +++ b/vscripts/gamemodes/fs_duckhunt/_gamemode_duckhunt.nut @@ -39,6 +39,7 @@ void function _GamemodeDuckhunt_Init() { switch(GetMapName()) { + case "mp_rr_aqueduct_night": case "mp_rr_aqueduct": FS_DUCKHUNT.lobbyLocation = <-323.799377, -16008.7832, 11485.8652> FS_DUCKHUNT.lobbyAngles = <0, 24.2251167, 0> diff --git a/vscripts/gamemodes/fs_prophunt/_gamemode_prophunt.nut b/vscripts/gamemodes/fs_prophunt/_gamemode_prophunt.nut index f7565aadd..26f3c9182 100644 --- a/vscripts/gamemodes/fs_prophunt/_gamemode_prophunt.nut +++ b/vscripts/gamemodes/fs_prophunt/_gamemode_prophunt.nut @@ -64,7 +64,12 @@ void function _GamemodeProphunt_Init() default: entity startEnt = GetEnt( "info_player_start" ) - + + if(!IsValid(startEnt)) { + printt("error, you used the wrong map for this gamemode") + return + } + FS_PROPHUNT.lobbyLocation = startEnt.GetOrigin() FS_PROPHUNT.lobbyAngles = startEnt.GetAngles() break @@ -669,8 +674,8 @@ void function PROPHUNT_Lobby() if(FS_PROPHUNT.currentRound == 1) FS_PROPHUNT.selectedLocation = FS_PROPHUNT.locationSettings.getrandom() - if(FS_PROPHUNT.selectedLocation.name == "Skill trainer By CafeFPS") - SkillTrainerLoad() + // if(FS_PROPHUNT.selectedLocation.name == "Skill trainer By CafeFPS") + // SkillTrainerLoad() foreach(player in GetPlayerArray()) { @@ -693,37 +698,43 @@ void function PROPHUNT_Lobby() SetRealms(player, 64) } wait 2 - - if(!GetCurrentPlaylistVarBool("flowstatePROPHUNTDebug", false )) + + bool enteredwaitingidk = false + + if(GetPlayerArray().len() < 2) { - while(true) + enteredwaitingidk = true + + if(IsValid(FS_PROPHUNT.ringBoundary)) + FS_PROPHUNT.ringBoundary.Destroy() + + SetDeathFieldParams( <0,0,0>, 100000, 0, 90000, 99999 ) + + while( GetPlayerArray_Alive().len() < 2 ) { - array playersON = GetPlayerArray_Alive() - if(playersON.len() > 1 ) + foreach(player in GetPlayerArray()) { - foreach(player in GetPlayerArray()) - { - if(!IsValid(player)) continue - - // Remote_CallFunction_NonReplay( player, "PROPHUNT_CustomHint", 8, 0) - } - wait 5 - // break - - } else { + if(!IsValid(player)) continue - foreach(player in GetPlayerArray()) - { - if(!IsValid(player)) continue - - Remote_CallFunction_NonReplay( player, "PROPHUNT_CustomHint", 9, 0) - } - wait 5 + Message(player, "PROPHUNT", "Waiting another player to start", 2, "") } - WaitFrame() + + wait 5 } } - + + if(enteredwaitingidk) + { + foreach(player in GetPlayerArray()) + { + if(!IsValid(player)) continue + + Message(player, "PROPHUNT", "STARTING", 3, "") + } + + wait 5 + } + array IMCplayers = GetPlayerArrayOfTeam(TEAM_IMC) array MILITIAplayers = GetPlayerArrayOfTeam(TEAM_MILITIA) @@ -1175,7 +1186,8 @@ void function PROPHUNT_GameLoop() //printt("DEBUG MAX VOTES: " + FS_PROPHUNT.maxvotesallowedforTeamIMC + " " + FS_PROPHUNT.maxvotesallowedforTeamMILITIA) // Set voting to be allowed FS_PROPHUNT.votingtime = true - + float endtimeVotingTime = Time() + 16 + // For each player, set voting screen and update maps that are picked for voting foreach( player in GetPlayerArray() ) { @@ -1184,7 +1196,7 @@ void function PROPHUNT_GameLoop() Remote_CallFunction_NonReplay(player, "ServerCallback_FSDM_CoolCamera") Remote_CallFunction_Replay(player, "ServerCallback_FSDM_UpdateVotingMaps", FS_PROPHUNT.mapIds[0], FS_PROPHUNT.mapIds[1], FS_PROPHUNT.mapIds[2], FS_PROPHUNT.mapIds[3]) - Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.VoteScreen, eFSDMScreen.NotUsed, eFSDMScreen.NotUsed, eFSDMScreen.NotUsed) + Remote_CallFunction_Replay(player, "ServerCallback_FSDM_SetScreen", eFSDMScreen.VoteScreen, endtimeVotingTime, eFSDMScreen.NotUsed, eFSDMScreen.NotUsed) } wait 16 @@ -1805,27 +1817,27 @@ void function RingDamage( entity circle, float currentRadius) bool function ClientCommand_NextRoundPROPHUNT(entity player, array args) { - // if(player.GetPlayerName() == FlowState_Hoster() || player.GetPlayerName() == FlowState_Admin1() || player.GetPlayerName() == FlowState_Admin2() || player.GetPlayerName() == FlowState_Admin3() || player.GetPlayerName() == FlowState_Admin4()) - // { - // if (args.len()) { - // string now = args[0] - // if (now == "now") - // { - // SetTdmStateToNextRound() - // } + if(player.GetPlayerName() == FlowState_Hoster() || player.GetPlayerName() == FlowState_Admin1() || player.GetPlayerName() == FlowState_Admin2() || player.GetPlayerName() == FlowState_Admin3() || player.GetPlayerName() == FlowState_Admin4()) + { + if (args.len()) { + string now = args[0] + if (now == "now") + { + SetTdmStateToNextRound() + } - // if(args.len() > 1){ - // now = args[1] - // if (now == "now") - // { - // SetTdmStateToNextRound() - // } - // } - // } - // } - // else { - // return false - // } + if(args.len() > 1){ + now = args[1] + if (now == "now") + { + SetTdmStateToNextRound() + } + } + } + } + else { + return false + } return true } diff --git a/vscripts/gamemodes/fs_tdm/cl_gamemode_fsdm.nut b/vscripts/gamemodes/fs_tdm/cl_gamemode_fsdm.nut index bdc2026c7..4db936bdd 100644 --- a/vscripts/gamemodes/fs_tdm/cl_gamemode_fsdm.nut +++ b/vscripts/gamemodes/fs_tdm/cl_gamemode_fsdm.nut @@ -492,6 +492,7 @@ void function FSDM_CloseVotingPhase() void function UpdateUIVoteTimer(int team) { + RunUIScript( "UpdateVoteTimerHeader_FSDM" ) float time = team - Time() while(time > -1) { diff --git a/vscripts/ui/FlowstateDM/flowstate_menu_vote.nut b/vscripts/ui/FlowstateDM/flowstate_menu_vote.nut index 57fe6a0ce..710116a7a 100644 --- a/vscripts/ui/FlowstateDM/flowstate_menu_vote.nut +++ b/vscripts/ui/FlowstateDM/flowstate_menu_vote.nut @@ -22,6 +22,7 @@ global function ClearScoreboardOnUI global function ClearProphuntScoreboardOnUI global function Disable_MILITIAButton global function Disable_IMCButton +global function UpdateVoteTimerHeader_FSDM global struct PlayerInfo { @@ -308,6 +309,11 @@ void function UpdateVoteTimer_FSDM(int timeleft) Hud_SetText(Hud_GetChild( file.menu, "TimerText" ), timeleft.tostring()) } +void function UpdateVoteTimerHeader_FSDM() +{ + Hud_SetText(Hud_GetChild( file.menu, "TimerText2" ), "Voting Ends In") +} + //Update current votes for each map void function UpdateVotesUI_FSDM(int map1, int map2, int map3, int map4) { diff --git a/vscripts/ui/_menus.nut b/vscripts/ui/_menus.nut index c99172feb..390d8b19b 100644 --- a/vscripts/ui/_menus.nut +++ b/vscripts/ui/_menus.nut @@ -1586,10 +1586,10 @@ void function InitMenus() /////// //FLOWSTATE DM - //Statistics - AddMenu( "StatisticsUI", $"scripts/resource/ui/menus/FlowstateDM/flowstate_statistics.menu", InitStatisticsUI ) - AddMenu( "FSDMVoteMenu", $"scripts/resource/ui/menus/FlowstateDM/flowstate_menu_vote.menu", Init_FSDM_VoteMenu ) - AddMenu( "FSProphuntScoreboardMenu", $"scripts/resource/ui/menus/FlowstateDM/fs_prophunt_scoreboard.menu", Init_FSDM_ProphuntScoreboardMenu ) + //Statistics + AddMenu( "StatisticsUI", $"scripts/resource/ui/menus/FlowstateDM/flowstate_statistics.menu", InitStatisticsUI ) + AddMenu( "FSDMVoteMenu", $"scripts/resource/ui/menus/FlowstateDM/flowstate_menu_vote.menu", Init_FSDM_VoteMenu ) + AddMenu( "FSProphuntScoreboardMenu", $"scripts/resource/ui/menus/FlowstateDM/flowstate_prophunt_scoreboard.menu", Init_FSDM_ProphuntScoreboardMenu ) //Custom Weapon Mods Menu var weaponmodsmenu = AddMenu( "WeaponMods", $"scripts/resource/ui/menus/weaponmods.menu", InitWeaponModsMenu ) diff --git a/weapons/mp_weapon_r97.txt b/weapons/mp_weapon_r97.txt index 4ff1e6a27..819468b1f 100644 --- a/weapons/mp_weapon_r97.txt +++ b/weapons/mp_weapon_r97.txt @@ -71,7 +71,7 @@ WeaponData "damage_type" "bullet" // Ammo - "ammo_clip_size" "20" + "ammo_clip_size" "19" "ammo_default_total" "150" "ammo_stockpile_max" "150" @@ -255,15 +255,15 @@ WeaponData bullets_mag_l1 { - "ammo_clip_size" "22" + "ammo_clip_size" "21" } bullets_mag_l2 { - "ammo_clip_size" "25" + "ammo_clip_size" "24" } bullets_mag_l3 { - "ammo_clip_size" "28" + "ammo_clip_size" "27" } legendary1 From eb5b7fe0c5e33813e7c5f7b4f77a4ef4c6c46bb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caf=C3=A9DeColombiaFPS?= <92343247+ColombianGuy@users.noreply.github.com> Date: Mon, 8 May 2023 18:47:12 -0500 Subject: [PATCH 16/17] avoid black screen on waiting for players stage --- vscripts/gamemodes/survival/cl_gamemode_survival.nut | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/vscripts/gamemodes/survival/cl_gamemode_survival.nut b/vscripts/gamemodes/survival/cl_gamemode_survival.nut index 05976e626..bee2915b4 100644 --- a/vscripts/gamemodes/survival/cl_gamemode_survival.nut +++ b/vscripts/gamemodes/survival/cl_gamemode_survival.nut @@ -2961,7 +2961,9 @@ bool function GetWaitingForPlayersOverlayEnabled( entity player ) return false if ( GetCurrentPlaylistVarBool( "survival_staging_area_enabled", false ) ) return false - + if(GameRules_GetGameMode() != SURVIVAL) + return false + return true } From 09f55185261e92f550b7183eb2865255970cfcbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caf=C3=A9DeColombiaFPS?= <92343247+ColombianGuy@users.noreply.github.com> Date: Mon, 8 May 2023 18:54:38 -0500 Subject: [PATCH 17/17] rever boxing hands --- vscripts/gamemodes/fs_1v1/_gamemode_1v1.nut | 6 +++--- .../gamemodes/fs_movementgym/_movement_gym.nut | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/vscripts/gamemodes/fs_1v1/_gamemode_1v1.nut b/vscripts/gamemodes/fs_1v1/_gamemode_1v1.nut index beeb79fc4..4f0ee432c 100644 --- a/vscripts/gamemodes/fs_1v1/_gamemode_1v1.nut +++ b/vscripts/gamemodes/fs_1v1/_gamemode_1v1.nut @@ -597,9 +597,9 @@ void function giveWeaponInRandomWeaponPool(entity player) GiveRandomPrimaryWeaponMetagame(player) GiveRandomSecondaryWeaponMetagame(player) - player.GiveWeapon( "mp_weapon_melee_boxing_ring", WEAPON_INVENTORY_SLOT_PRIMARY_2, [] ) + player.GiveWeapon( "mp_weapon_melee_survival", WEAPON_INVENTORY_SLOT_PRIMARY_2, [] ) if(!isPlayerInRestingList(player)) - player.GiveOffhandWeapon( "melee_boxing_ring", OFFHAND_MELEE, [] ) + player.GiveOffhandWeapon( "melee_pilot_emptyhanded", OFFHAND_MELEE, [] ) //hack to fix first reload player.SetActiveWeaponBySlot(eActiveInventorySlot.mainHand, WEAPON_INVENTORY_SLOT_PRIMARY_1) @@ -652,7 +652,7 @@ void function respawnInSoloMode(entity player, int respawnSlotIndex = -1) //复 TakeAllWeapons(player) thread LoadCustomWeapon(player) } - player.GiveWeapon( "mp_weapon_melee_boxing_ring", WEAPON_INVENTORY_SLOT_PRIMARY_2, [] ) + player.GiveWeapon( "mp_weapon_melee_survival", WEAPON_INVENTORY_SLOT_PRIMARY_2, [] ) } catch (erroree) { diff --git a/vscripts/gamemodes/fs_movementgym/_movement_gym.nut b/vscripts/gamemodes/fs_movementgym/_movement_gym.nut index 003166320..fc7088b7f 100644 --- a/vscripts/gamemodes/fs_movementgym/_movement_gym.nut +++ b/vscripts/gamemodes/fs_movementgym/_movement_gym.nut @@ -481,8 +481,8 @@ function MovementGym_Hub() { //apply melee TakeAllWeapons(ent) - ent.GiveWeapon("mp_weapon_melee_boxing_ring", WEAPON_INVENTORY_SLOT_PRIMARY_2, []) - ent.GiveOffhandWeapon("melee_boxing_ring", OFFHAND_MELEE, []) + ent.GiveWeapon("mp_weapon_melee_survival", WEAPON_INVENTORY_SLOT_PRIMARY_2, []) + ent.GiveOffhandWeapon("melee_pilot_emptyhanded", OFFHAND_MELEE, []) ent.GiveOffhandWeapon("mp_ability_phase_walk", OFFHAND_TACTICAL) ent.SetPlayerNetBool("pingEnabled", false) @@ -513,8 +513,8 @@ function MovementGym_Hub() { //apply melee TakeAllWeapons(ent) - ent.GiveWeapon("mp_weapon_melee_boxing_ring", WEAPON_INVENTORY_SLOT_PRIMARY_2, []) - ent.GiveOffhandWeapon("melee_boxing_ring", OFFHAND_MELEE, []) + ent.GiveWeapon("mp_weapon_melee_survival", WEAPON_INVENTORY_SLOT_PRIMARY_2, []) + ent.GiveOffhandWeapon("melee_pilot_emptyhanded", OFFHAND_MELEE, []) ent.GiveOffhandWeapon("mp_ability_phase_walk", OFFHAND_TACTICAL) ent.SetPlayerNetBool("pingEnabled", false) @@ -636,8 +636,8 @@ function MovementGym_Hub_Buttons() { //apply melee TakeAllWeapons(user) - user.GiveWeapon("mp_weapon_melee_boxing_ring", WEAPON_INVENTORY_SLOT_PRIMARY_2, []) - user.GiveOffhandWeapon("melee_boxing_ring", OFFHAND_MELEE, []) + user.GiveWeapon("mp_weapon_melee_survival", WEAPON_INVENTORY_SLOT_PRIMARY_2, []) + user.GiveOffhandWeapon("melee_pilot_emptyhanded", OFFHAND_MELEE, []) user.SetPlayerNetBool("pingEnabled", false) Message(user, "Pathfinder Grapples", "You now recieved Grapple Tactical") @@ -688,8 +688,8 @@ function MovementGym_Map2_Button(){ //apply melee TakeAllWeapons(user) - user.GiveWeapon("mp_weapon_melee_boxing_ring", WEAPON_INVENTORY_SLOT_PRIMARY_2, []) - user.GiveOffhandWeapon("melee_boxing_ring", OFFHAND_MELEE, []) + user.GiveWeapon("mp_weapon_melee_survival", WEAPON_INVENTORY_SLOT_PRIMARY_2, []) + user.GiveOffhandWeapon("melee_pilot_emptyhanded", OFFHAND_MELEE, []) user.SetPlayerNetBool("pingEnabled", false) Message(user, "Map 2 by DEAFPS")