init
This commit is contained in:
commit
ce82bcb26a
2
.gitattributes
vendored
Normal file
2
.gitattributes
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
*.flac filter=lfs diff=lfs merge=lfs -text
|
||||
*.aggr filter=lfs diff=lfs merge=lfs -text
|
29
LICENSE
Normal file
29
LICENSE
Normal file
@ -0,0 +1,29 @@
|
||||
BSD 3-Clause License
|
||||
|
||||
Copyright (c) 2024, AlterWare
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
3. Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
7
README.md
Normal file
7
README.md
Normal file
@ -0,0 +1,7 @@
|
||||
# IW6 Rawfiles
|
||||
This repo contains the IW6 Rawfiles for iw6-mod.
|
||||
|
||||
Contributions are welcome! Please follow the guidelines below:
|
||||
|
||||
- Sign [AlterWare CLA](https://alterware.dev/cla) and send a pull request or email your patch at patches@alterware.dev
|
||||
- Make sure that PRs have only one commit, and deal with one issue only
|
2853
common_scripts/utility.gsc
Normal file
2853
common_scripts/utility.gsc
Normal file
File diff suppressed because it is too large
Load Diff
228
dw/entitlement_config_tu14.info
Normal file
228
dw/entitlement_config_tu14.info
Normal file
@ -0,0 +1,228 @@
|
||||
version 7
|
||||
|
||||
// Entitlement ID Ranges
|
||||
// 0 - 299 ???
|
||||
// 300 - 399 Clan Entitlements
|
||||
// 400 - 599 ???
|
||||
// 600 - 699 Clan War Entitlements
|
||||
// 700 - 799 Generic Elite Entitlements
|
||||
|
||||
// Number of keys to read from the key archive
|
||||
keys_to_read 16
|
||||
|
||||
// unlocks in game - type, key index, bit, name, payload...
|
||||
unlock 0 0 600 //clan wars demon_skull_p
|
||||
unlock 0 1 601 //clan wars dead_ninja_p
|
||||
unlock 0 2 602 //clan wars mummy_p
|
||||
unlock 0 3 603 //clan wars skull_bow_p
|
||||
unlock 0 4 604 //clan wars cyclops_skull_p
|
||||
unlock 0 5 605 //clan wars dead_gnome_p
|
||||
unlock 0 6 606 //clan wars gold_grill_p
|
||||
unlock 0 7 607 //clan wars pirate_skull_p
|
||||
unlock 0 8 608 //clan wars gargoyle_p
|
||||
unlock 0 9 609 //clan wars vulture_p
|
||||
unlock 0 10 610 //clan wars warrior_mask_p
|
||||
unlock 0 11 611 //clan wars yeti_p
|
||||
unlock 0 12 612 //clan wars dead_owl_p
|
||||
unlock 0 13 613 //clan wars money_bags_p
|
||||
unlock 0 14 614 //clan wars injured_octopus_p
|
||||
unlock 0 15 615 //clan wars hotdog_p
|
||||
unlock 0 16 616 //clan wars crab_p
|
||||
unlock 0 17 617 //clan wars angry_robot_p
|
||||
unlock 0 18 618 //clan wars triangle_dot_ret
|
||||
unlock 0 19 619 //clan wars gold_chain_emb
|
||||
unlock 0 20 620 //clan wars wing_emb
|
||||
unlock 0 21 621 //clan wars brass_knuck_emb
|
||||
unlock 0 22 622 //clan wars ninja_emb
|
||||
unlock 0 25 623 //clan wars reaper head
|
||||
unlock 0 26 624 //clan wars merc head
|
||||
unlock 0 27 625 //clan wars body
|
||||
unlock 0 28 460 //clan wars diamond division reticle
|
||||
unlock 0 29 401 //clan wars diamond division camo
|
||||
unlock 0 30 627 //clan wars diamond division assassin head
|
||||
unlock 0 31 626 //clan wars diamond division savage head
|
||||
unlock 0 32 628 //clan wars diamond division body
|
||||
|
||||
unlock 3 0 700 //Download the mobile app
|
||||
unlock 3 1 701 //Founder Skull
|
||||
|
||||
unlock 3 4 500 //NEVERSOFT
|
||||
unlock 3 3 501 //IW
|
||||
unlock 3 5 502 //RAVEN
|
||||
unlock 3 7 503 //HIGH_MOON
|
||||
unlock 3 6 504 //BEACHHEAD
|
||||
|
||||
unlock 13 0 209 //monster beast patch
|
||||
unlock 13 2 210 //monster beast playercard
|
||||
unlock 13 1 211 //monster viper patch
|
||||
unlock 13 3 212 //monster viper playercard
|
||||
|
||||
unlock 13 4 216 //riley / classic ghost head
|
||||
|
||||
unlock 13 30 217 //watcher patch
|
||||
unlock 13 31 213 //federation patch
|
||||
unlock 13 32 215 //into the deep patch
|
||||
unlock 13 33 214 //no man's land patch
|
||||
|
||||
//Platform Unlocks
|
||||
platform 200 255161 //team leader head
|
||||
platform 201 255161 //team leader playercard
|
||||
platform 202 255161 //team leader patch
|
||||
platform 403 255161 //team leader camo
|
||||
platform 451 255161 //team leader reticle
|
||||
|
||||
platform 200 255160 //team leader head
|
||||
platform 201 255160 //team leader playercard
|
||||
platform 202 255160 //team leader patch
|
||||
platform 403 255160 //team leader camo
|
||||
platform 451 255160 //team leader reticle
|
||||
|
||||
platform 206 255162 //insignia playercard
|
||||
platform 205 255162 //insignia patch
|
||||
|
||||
platform 216 255165 //classic ghost character
|
||||
|
||||
platform 213 255167 //federation patch
|
||||
platform 214 255168 //no mans land patch
|
||||
platform 215 255169 //into the deep patch
|
||||
|
||||
platform 207 255163 //digital hardened patch
|
||||
platform 208 255163 //digital hardened playercard
|
||||
|
||||
platform 217 255166 //Steam Patch - The Watcher
|
||||
|
||||
platform 222 268100 //festive playercard
|
||||
platform 221 268100 //festive patch
|
||||
platform 410 268100 //festive camo
|
||||
platform 453 268100 //festive reticle
|
||||
|
||||
platform 550 268101 //wolf
|
||||
|
||||
platform 551 277670 //extra slots
|
||||
|
||||
platform 552 277671 // hero character - elias
|
||||
platform 553 277672 // hero character - hesh
|
||||
platform 554 277673 // hero character - merrick
|
||||
platform 555 277674 // hero character - keegan
|
||||
platform 556 277675 // hero character - price
|
||||
|
||||
platform 557 281343 // Hazmat character
|
||||
platform 558 281340 // Makarov Legend Pack
|
||||
platform 559 281342 // Rorke Character
|
||||
platform 560 281341 // Zakhaev Character
|
||||
|
||||
platform 561 286632 // Soap Legend Pack
|
||||
platform 562 286633 // Extinction Squad
|
||||
platform 563 286634 // TF141
|
||||
|
||||
platform 490 277676 // Personalization pack 1 - Ducky
|
||||
platform 491 277677 // Personalization pack 2 - Blood
|
||||
platform 492 277678 // Personalization pack 3 - Inferno
|
||||
platform 493 277679 // Personalization pack 4 - Kittens
|
||||
|
||||
platform 494 281344 // Personalization pack 5
|
||||
platform 495 281345 // Personalization pack 6
|
||||
platform 496 281346 // Personalization pack 7
|
||||
platform 497 281347 // Personalization pack 8
|
||||
platform 498 286630 // Personalization pack 9
|
||||
platform 499 286631 // Personalization pack 10
|
||||
|
||||
platform 510 295430 // Personalization pack 11
|
||||
platform 511 295431 // Personalization pack 12
|
||||
platform 512 295432 // Personalization pack 13
|
||||
platform 513 295433 // Personalization pack 14
|
||||
platform 515 295434 // Personalization pack 15
|
||||
platform 516 295435 // Personalization pack 16
|
||||
|
||||
platform 517 295439 // Personalization pack 17
|
||||
platform 518 295440 // Personalization pack 18
|
||||
platform 519 301111 // Personalization pack 19
|
||||
platform 520 301112 // Personalization pack 20
|
||||
platform 521 301113 // Personalization pack 21
|
||||
platform 522 301114 // Personalization pack 22
|
||||
platform 523 301110 // Personalization pack Flags
|
||||
|
||||
platform 564 295436 // Spectrum Character
|
||||
platform 565 295437 // Astronaut Character
|
||||
platform 566 295438 // Resistance Squad
|
||||
|
||||
platform 567 309870 // Bluntforce Character
|
||||
platform 568 309871 // Inferno Character
|
||||
platform 569 309872 // Bling Character
|
||||
|
||||
platform 480 259250 //dlc gun 1
|
||||
platform 480 301116 //dlc gun 1
|
||||
platform 481 259250 //dlc gun 1
|
||||
platform 481 301116 //dlc gun 1
|
||||
|
||||
platform 482 259251 //Ripper from Devastation
|
||||
platform 482 255161 //Ripper from Season Pass
|
||||
platform 482 301115 //Ripper from mDLC
|
||||
|
||||
//Clan Entitlements - ID 300 - 399 - type, bit, entitlement id
|
||||
clan 0 300
|
||||
clan 0 301
|
||||
clan 1 302
|
||||
clan 2 303
|
||||
clan 3 304
|
||||
clan 3 305
|
||||
clan 3 306
|
||||
clan 4 307
|
||||
clan 4 308
|
||||
clan 4 309
|
||||
clan 5 310
|
||||
clan 5 311
|
||||
clan 6 312
|
||||
clan 7 313
|
||||
clan 8 314
|
||||
clan 8 315
|
||||
clan 8 316
|
||||
clan 9 317
|
||||
clan 10 318
|
||||
clan 10 319
|
||||
clan 10 320
|
||||
clan 10 321
|
||||
clan 10 322
|
||||
clan 11 323
|
||||
clan 12 324
|
||||
clan 13 325
|
||||
clan 13 326
|
||||
clan 13 327
|
||||
clan 13 328
|
||||
clan 13 329
|
||||
clan 14 330
|
||||
clan 15 331
|
||||
clan 15 332
|
||||
clan 15 333
|
||||
clan 16 334
|
||||
clan 16 335
|
||||
clan 16 336
|
||||
clan 16 337
|
||||
clan 16 338
|
||||
clan 17 339
|
||||
clan 18 340
|
||||
clan 19 341
|
||||
clan 19 342
|
||||
clan 19 343
|
||||
clan 19 344
|
||||
clan 20 345
|
||||
clan 20 346
|
||||
clan 21 347
|
||||
clan 21 348
|
||||
clan 21 349
|
||||
clan 22 350
|
||||
clan 23 351
|
||||
clan 24 352
|
||||
clan 25 353
|
||||
clan 26 354
|
||||
clan 26 355
|
||||
clan 26 356
|
||||
clan 26 357
|
||||
clan 27 358
|
||||
|
||||
//Clan Level Challenges - type, required level, challenge id
|
||||
clanlevelchallenge 23 ch_cam_clan_02 // Kiss of Death Camo
|
||||
|
||||
//Clan War Challenges - type, key index, bit offset, challenge id
|
||||
entitlementchallenge 0 18 ch_ret_clan // clan wars reticle - Triad
|
||||
entitlementchallenge 0 24 ch_cam_clan_01 // clan wars camo - Body Count
|
2
dw/mm.cfg
Normal file
2
dw/mm.cfg
Normal file
@ -0,0 +1,2 @@
|
||||
VERSION 5
|
||||
XX 0 D100 0 P50 0 G5 4 F 6 H 8 P75 16 P100 16 S 24 P120 32 P150 40 P-1 10 M192 20 M48
|
162
dw/newsfeed.txt
Normal file
162
dw/newsfeed.txt
Normal file
@ -0,0 +1,162 @@
|
||||
article 1
|
||||
header "FLAGS OF THE WORLD PACK"
|
||||
body "Show your national pride with individual patches, playercards, and backgrounds for England, France, Germany, Italy, Spain, Mexico, USA, Brazil, Australia, Japan, UK, Russia, Netherlands, Portugal, Colombia, Argentina, Canada, Ireland, and Sweden.
|
||||
|
||||
Plus, go international in any firefight with a unique reticle and flags of the world weapon camo.
|
||||
|
||||
Available now.
|
||||
|
||||
Visit the in-game store to find out more."
|
||||
type item
|
||||
image ui_mp/ingamestore/img_store_pers_pack_flags.jpg
|
||||
imagewidth 320
|
||||
imageheight 160
|
||||
data mdlc_pack40
|
||||
localJPEGImage
|
||||
|
||||
article 2
|
||||
header "CALL OF DUTY APP"
|
||||
body "The Call of Duty App is everything you need to keep track of your Ghosts experience on the go.
|
||||
|
||||
Get unique info on Clan Wars: A brand new game mode that connects directly to Call of Duty®: Ghosts multiplayer, where clans compete against each other for additional XP and in-game content.
|
||||
|
||||
Communicate via the Rally Up and Clan Chat features, to keep in touch with your friends and Clan members."
|
||||
type news
|
||||
image img_sf_generic_news2
|
||||
imagewidth 320
|
||||
imageheight 320
|
||||
|
||||
article 3
|
||||
header "PLAY HOW YOU WANT WITH EXTRA LOADOUT SLOTS"
|
||||
body "You can increase the number of loadout slots from 6 to 10, so you can take even more options into battle. Never get caught with the wrong gear and give yourself great flexibility by creating different loadouts for different situations.
|
||||
|
||||
Top Tip - Set up different characters for different game modes, that way you can select the right man for the job.
|
||||
|
||||
Another Top Tip - With all the extra loadouts, set up variations of your favorite loadout so you’re always ready for the unexpected.
|
||||
|
||||
Visit the in-game store to find out more."
|
||||
type item
|
||||
image ui_mp/ingamestore/img_store_extra_slots.jpg
|
||||
imagewidth 320
|
||||
imageheight 160
|
||||
data mdlc_pack2
|
||||
localJPEGImage
|
||||
|
||||
article 4
|
||||
header "DROP ZONE IS BACK!"
|
||||
body "We are bringing this fan favorite mode from Call of Duty: Modern Warfare 3 to Call of Duty: Ghosts Multiplayer.
|
||||
|
||||
Fight to take control of the Drop Zone marked with a red smoke grenade, a location where Care Packages are regularly delivered by air drops.
|
||||
|
||||
This mode gives you multiple chances to change the game with awesome killstreaks like the Gryphon, Juggernaut, or the earth shattering Loki.
|
||||
|
||||
Control the Drop Zone, collect killstreaks, and wreak havoc on the opposing team!"
|
||||
type news
|
||||
image img_squadmode_03
|
||||
imagewidth 320
|
||||
imageheight 176
|
||||
|
||||
article 5
|
||||
header "THE REAL ORIGINS OF EXTINCTION"
|
||||
body "Find out the origins of the Extinction story by collecting hidden intel items in Episode 1: Nightfall.
|
||||
|
||||
Find out the real story of Dr. Cross, Archer and discover more secrets from Project Nightfall.
|
||||
|
||||
Episode 1: Nightfall is part of DLC 1: Onslaught, available now.
|
||||
|
||||
Visit the in-game store to find out more."
|
||||
type item
|
||||
image bg_large_073
|
||||
imagewidth 320
|
||||
imageheight 320
|
||||
data dlc3
|
||||
|
||||
article 6
|
||||
header "NEW CUSTOMIZATION CONTENT"
|
||||
body "New content is being released all the time. Personalize your look and your loadout with customization items.
|
||||
|
||||
- Special Characters: Customize your look head-to-toe in Multiplayer, Squads and Extinction.
|
||||
|
||||
- Personalization Packs: Uniquely themed weapon camo, reticle, patch, playercard and background.
|
||||
|
||||
- Legend Packs: A Special Character and themed Personalization Pack for a legendary figure in Call of Duty lore.
|
||||
|
||||
Visit the in-game store to find out more."
|
||||
type item
|
||||
image ui_mp/ingamestore/img_store_pers_pack_07.jpg
|
||||
imagewidth 320
|
||||
imageheight 160
|
||||
data mdlc_pack17
|
||||
localJPEGImage
|
||||
|
||||
article 7
|
||||
header "NEW TO EXTINCTION - THE ARMORY"
|
||||
body "Spend Teeth in the Armory to purchase upgrades for classes and equipment.
|
||||
|
||||
Earn Teeth by completing Extinction missions. Bonus Teeth are awarded for completing with a relic, completing in Hardcore mode, or helping other players complete a mission for the first time.
|
||||
|
||||
You can also earn teeth by killing aliens in both Extinction and Chaos Mode.
|
||||
|
||||
Upgrades include the Weapon Specialist's Infinite Ammo Ability and the Medic's Energy Field, instantly heal and revive anyone within its perimeter!"
|
||||
type news
|
||||
image img_sf_extinction_armory
|
||||
imagewidth 320
|
||||
imageheight 320
|
||||
|
||||
article 8
|
||||
header "CAN YOU SURVIVE THE CHAOS?"
|
||||
body "Extinction's Chaos Mode is an all-new, adrenaline pumping game type that pits 1-4 players against a never ending alien onslaught.
|
||||
|
||||
Keep the combo meter filled by damaging aliens, collecting weaponry or upgrades, and making use of your abilities. Combos provide players with an ever-expanding set of perks such as Fast Health Regen, Gas Mask, and Stopping Power.
|
||||
|
||||
Special bonus drops provide new ability upgrades including the Tank Class Skill and the Venom-X that further your arsenal and overall score potential.
|
||||
|
||||
The aliens are ready, are you?"
|
||||
type news
|
||||
image img_sf_extinction_chaos
|
||||
imagewidth 320
|
||||
imageheight 320
|
||||
|
||||
article 9
|
||||
header "WHAT'S GOING ON WITH YOUR CLAN?"
|
||||
body "Check out what your Clan is up to in-game via Clan Details inside the Barracks. See what's going on with other players' Clans by checking out View Clan when you select them in the lobby.
|
||||
|
||||
Get even more details on your Clan via the Call of Duty App, available now on the App Store, Google Play and Windows Store.
|
||||
|
||||
Not in a Clan? Create one now via the Barracks and invite your friends straight from the game."
|
||||
type news
|
||||
image img_squadmode_02
|
||||
imagewidth 320
|
||||
imageheight 176
|
||||
|
||||
article 10
|
||||
header "DRILL INSTRUCTOR VOICE PACK"
|
||||
body "Multiplayer returns to boot camp with the all-new Drill Instructor Voice Pack voiced by the one and only R. Lee Ermey, aka The Gunny.
|
||||
|
||||
Swap out your in-game alerts with ones that will get you back into top combat shape.
|
||||
|
||||
Now, drop down and give me twenty!
|
||||
|
||||
Available now.
|
||||
|
||||
Visit the in-game store to find out more."
|
||||
type item
|
||||
image ui_mp/ingamestore/img_store_drill_sergeant.jpg
|
||||
imagewidth 320
|
||||
imageheight 160
|
||||
data dlc10
|
||||
localJPEGImage
|
||||
|
||||
article 11
|
||||
header "TRY REINFORCE"
|
||||
body "Reinforce is a new game mode where you annihilate the enemy team or capture points to win a match.
|
||||
|
||||
You only respawn if a teammate captures a point, so be careful out there!
|
||||
|
||||
This new game mode is now live in our Multiplayer playlist.
|
||||
|
||||
Enjoy!"
|
||||
type news
|
||||
image bg_large_045
|
||||
imagewidth 320
|
||||
imageheight 320
|
BIN
dw/playlists_tu14.aggr
Normal file
BIN
dw/playlists_tu14.aggr
Normal file
Binary file not shown.
139
dw/social_tu14.cfg
Normal file
139
dw/social_tu14.cfg
Normal file
@ -0,0 +1,139 @@
|
||||
// Demonware offline additions.
|
||||
|
||||
set netinfo_logging 0
|
||||
|
||||
set theater_active 1
|
||||
set prestige_shop_active 1
|
||||
set elite_clan_delay -1
|
||||
set elite_clan_division_icon_active 1
|
||||
set dw_presence_coop_join_active 1
|
||||
set dw_shared_presence_active 1
|
||||
set splitscreen_online_enabled 1
|
||||
set dw_leaderboard_write_active 1
|
||||
set matchdata_active 1
|
||||
set pm_gamesetup_mode_altmodes 1
|
||||
set pm_gamesetup_mode_altmodes_dropzone 1
|
||||
set pm_gamesetup_mode_altmodes_teamjug 1
|
||||
set pm_gamesetup_mode_altmodes_jug 1
|
||||
set pm_gamesetup_mode_altmodes_infected 1
|
||||
set pm_gamesetup_mode_altmodes_oneinthechamber 1
|
||||
set pm_gamesetup_mode_altmodes_mugger 1
|
||||
set pm_gamesetup_options_createdefaultclass 1
|
||||
set pm_gamesetup_options_customclassrestrictions 1
|
||||
set motd_store_link 0
|
||||
set livestreaming_active 0
|
||||
set screenshots_active 1
|
||||
set ca_intra_only 0
|
||||
set dc_lobbymerge 1
|
||||
|
||||
// DW Delay values
|
||||
set facebook_active 0
|
||||
set facebook_friends_active 0
|
||||
set facebook_upload_video_active 0
|
||||
set facebook_upload_photo_active 0
|
||||
set facebook_delay -1
|
||||
set facebook_max_retry_time 30000
|
||||
set facebook_retry_step 1000
|
||||
set facebook_friends_max_retry_time 30000
|
||||
set facebook_friends_retry_step 1000
|
||||
|
||||
set entitlements_active 1
|
||||
set entitlements_delay -1
|
||||
set entitlements_config_file_max_retry_time 30000
|
||||
set entitlements_config_file_retry_step 1000
|
||||
set entitlements_key_archive_max_retry_time 30000
|
||||
set entitlements_key_archive_retry_step 1000
|
||||
|
||||
set enable_eliteCACDownload 0
|
||||
set elite_edl 0
|
||||
set elite_edl_xl 0
|
||||
set elite_clan_set_private_member_profile_max_retry_time 30000
|
||||
|
||||
set userGroup_active 1
|
||||
set elite_clan_active 0
|
||||
set elite_clan_remote_view_active 0
|
||||
set allow_online_squads 1
|
||||
set allow_cod_anywhere 0
|
||||
|
||||
set allow_secondscreen 1
|
||||
set allow_secondscreen_ingame_send 1
|
||||
set allow_secondscreen_ingame_recv 1
|
||||
|
||||
set dw_presence_active 1
|
||||
set dw_presence_put_delay 5000
|
||||
set dw_presence_put_rate 60000
|
||||
set dw_presence_get_delay 5000
|
||||
set dw_presence_get_rate 120000
|
||||
set dw_shared_presence_put_rate 300000
|
||||
|
||||
set iotd_active 1
|
||||
set igs_swp 1
|
||||
set igs_shp 1
|
||||
set igs_svp 1
|
||||
set igs_sve 1
|
||||
set igs_svs 1
|
||||
set igs_svr 1
|
||||
set igs_fo 1
|
||||
set igs_s1 1
|
||||
set igs_td 1
|
||||
set igs_sosp 1
|
||||
set igs_swap 1
|
||||
set igs_crossgame 1
|
||||
set igs_announcer 3
|
||||
set igs_smappacks 1
|
||||
set extendedLoadoutsEnable 1
|
||||
set extinction_map_selection_enabled 1
|
||||
set igs_sripper 1
|
||||
|
||||
set num_available_map_packs 4
|
||||
|
||||
set mm_skill_enforcement 0
|
||||
|
||||
// set dsping_dc_0 "101,New,40.54,-74.47,108.61.88.37:10000,108.61.89.108:40000"
|
||||
// set dsping_dc_1 "102,Chi,41.88,-87.63,108.61.238.217:40000,108.61.238.138:40000"
|
||||
// set dsping_dc_2 "103,Dal,32.78,-96.8,108.61.239.113:40000,108.61.239.173:40000"
|
||||
// set dsping_dc_3 "104,Sea,47.61,-122.33,108.61.233.100:40000,108.61.233.106:40000"
|
||||
// set dsping_dc_4 "105,Los,34.05,-118.24,108.61.234.129:40000,108.61.234.204:40000"
|
||||
// set dsping_dc_5 "106,Atl,33.75,-84.39,108.61.236.152:40000,108.61.236.112:40000"
|
||||
// set dsping_dc_6 "107,Ams,52.37,4.9,173.199.64.6:40000,173.199.109.10:40000"
|
||||
// set dsping_dc_7 "108,Lon,51.51,-0.12,108.61.230.152:40000,108.61.230.145:40000"
|
||||
// set dsping_dc_8 "109,Fra,50.11,8.68,195.122.135.238:40000,195.122.135.97:40000"
|
||||
// set dsping_dc_9 "111,Tam,27.7,-82.58,4.79.145.189:40000,4.79.145.108:40000"
|
||||
// set dsping_dc_10 "112,San,37.34,-121.89,108.61.235.100:40000,108.61.235.179:40000"
|
||||
// set dsping_dc_11 "113,St.,38.63,-90.2,108.61.232.122:40000,108.61.232.110:40000"
|
||||
// set dsping_dc_12 "115,Mon,45.51,-73.55,108.61.231.117:40000,108.61.231.106:40000"
|
||||
// set dsping_dc_13 "119,Syd,-33.87,151.21,108.61.227.109:40000,108.61.227.115:40000"
|
||||
// set dsping_dc_14 "121,Den,56.04,9.93,108.61.106.31:40000,108.61.106.30:40000"
|
||||
// set dsping_dc_15 "124,Par,48.86,2.35,108.61.237.152:40000,108.61.237.150:40000"
|
||||
// set dsping_dc_16 "125,Tok,35.69,139.69,173.199.82.235:40000,173.199.82.237:40000"
|
||||
// set dsping_dc_17 "126,Mos,55.76,37.62,173.199.67.27:40000,173.199.67.29:40000"
|
||||
// set dsping_dc_18 "127,War,52.23,21.01,173.199.83.227:40000,173.199.83.236:40000"
|
||||
// set dsping_dc_19 "129,Mad,40.42,-3.7,93.93.65.202:40000,93.93.65.203:40000"
|
||||
// set dsping_dc_20 "130,Sao,-23.55,-46.64,189.1.174.20:40000,189.1.174.184:40000"
|
||||
// set dsping_dc_21 "131,Cap,-33.92,18.42,197.84.209.11:40000,197.84.209.12:40000"
|
||||
// set dsping_dc_22 "132,Joh,-26.2,28.05,197.80.212.5:40000,197.80.212.7:40000"
|
||||
// set dsping_dc_23 "133,Mil,45.47,9.19,95.141.40.109:40000,95.141.40.105:40000"
|
||||
|
||||
set ds_serverConnectTimeout 2000
|
||||
set ds_serverAcquireTimeout 2000
|
||||
set ds_introRequestTimeout 2000
|
||||
set ds_serverListExpiryPeriod 60000
|
||||
set ds_serverAcquisitionPeriod 7000
|
||||
|
||||
// Social Feed Controls
|
||||
set social_feed_news_active 1
|
||||
set social_feed_clans_active 1
|
||||
set social_feed_squads_active 1
|
||||
set social_feed_social_active 1
|
||||
set social_feed_motd_active 1
|
||||
|
||||
set extinction_cac_enabled 1
|
||||
set extinction_hardcore_enabled 1
|
||||
set extinction_intel_enabled 1
|
||||
set extinction_tokens_enabled 1
|
||||
|
||||
set past_title_data_active 1
|
||||
set past_title_data_read_failure_interval_hours 24
|
||||
set past_title_data_read_success_interval_hours 72
|
||||
|
||||
set live_voting_active 1
|
1727
maps/mp/alien/_drill.gsc
Normal file
1727
maps/mp/alien/_drill.gsc
Normal file
File diff suppressed because it is too large
Load Diff
3302
maps/mp/gametypes/_damage.gsc
Normal file
3302
maps/mp/gametypes/_damage.gsc
Normal file
File diff suppressed because it is too large
Load Diff
2770
maps/mp/gametypes/_gamelogic.gsc
Normal file
2770
maps/mp/gametypes/_gamelogic.gsc
Normal file
File diff suppressed because it is too large
Load Diff
727
maps/mp/gametypes/_menus.gsc
Normal file
727
maps/mp/gametypes/_menus.gsc
Normal file
@ -0,0 +1,727 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Dumped by https://github.com/xensik/gsc-tool
|
||||
|
||||
init()
|
||||
{
|
||||
if ( !isdefined( game["gamestarted"] ) )
|
||||
{
|
||||
game["menu_team"] = "team_marinesopfor";
|
||||
|
||||
if ( level.multiteambased )
|
||||
game["menu_team"] = "team_mt_options";
|
||||
|
||||
if ( maps\mp\_utility::bot_is_fireteam_mode() )
|
||||
{
|
||||
level.fireteam_menu = "class_commander_" + level.gametype;
|
||||
game["menu_class"] = level.fireteam_menu;
|
||||
game["menu_class_allies"] = level.fireteam_menu;
|
||||
game["menu_class_axis"] = level.fireteam_menu;
|
||||
}
|
||||
else
|
||||
{
|
||||
game["menu_class"] = "class";
|
||||
game["menu_class_allies"] = "class_marines";
|
||||
game["menu_class_axis"] = "class_opfor";
|
||||
}
|
||||
|
||||
game["menu_changeclass_allies"] = "changeclass_marines";
|
||||
game["menu_changeclass_axis"] = "changeclass_opfor";
|
||||
|
||||
if ( level.multiteambased )
|
||||
{
|
||||
for ( var_0 = 0; var_0 < level.teamnamelist.size; var_0++ )
|
||||
{
|
||||
var_1 = "menu_class_" + level.teamnamelist[var_0];
|
||||
var_2 = "menu_changeclass_" + level.teamnamelist[var_0];
|
||||
game[var_1] = game["menu_class_allies"];
|
||||
game[var_2] = "changeclass_marines";
|
||||
}
|
||||
}
|
||||
|
||||
game["menu_changeclass"] = "changeclass";
|
||||
|
||||
if ( level.console )
|
||||
{
|
||||
game["menu_controls"] = "ingame_controls";
|
||||
|
||||
if ( level.splitscreen )
|
||||
{
|
||||
if ( level.multiteambased )
|
||||
{
|
||||
for ( var_0 = 0; var_0 < level.teamnamelist.size; var_0++ )
|
||||
{
|
||||
var_1 = "menu_class_" + level.teamnamelist[var_0];
|
||||
var_2 = "menu_changeclass_" + level.teamnamelist[var_0];
|
||||
game[var_1] += "_splitscreen";
|
||||
game[var_2] += "_splitscreen";
|
||||
}
|
||||
}
|
||||
|
||||
game["menu_team"] += "_splitscreen";
|
||||
game["menu_class_allies"] += "_splitscreen";
|
||||
game["menu_class_axis"] += "_splitscreen";
|
||||
game["menu_changeclass_allies"] += "_splitscreen";
|
||||
game["menu_changeclass_axis"] += "_splitscreen";
|
||||
game["menu_controls"] += "_splitscreen";
|
||||
game["menu_changeclass_defaults_splitscreen"] = "changeclass_splitscreen_defaults";
|
||||
game["menu_changeclass_custom_splitscreen"] = "changeclass_splitscreen_custom";
|
||||
precachemenu( game["menu_changeclass_defaults_splitscreen"] );
|
||||
precachemenu( game["menu_changeclass_custom_splitscreen"] );
|
||||
}
|
||||
|
||||
precachemenu( game["menu_controls"] );
|
||||
}
|
||||
|
||||
precachemenu( game["menu_team"] );
|
||||
precachemenu( game["menu_class_allies"] );
|
||||
precachemenu( game["menu_class_axis"] );
|
||||
precachemenu( game["menu_changeclass"] );
|
||||
precachemenu( game["menu_changeclass_allies"] );
|
||||
precachemenu( game["menu_changeclass_axis"] );
|
||||
precachemenu( game["menu_class"] );
|
||||
precachestring( &"MP_HOST_ENDED_GAME" );
|
||||
precachestring( &"MP_HOST_ENDGAME_RESPONSE" );
|
||||
}
|
||||
|
||||
level thread onplayerconnect();
|
||||
}
|
||||
|
||||
onplayerconnect()
|
||||
{
|
||||
for (;;)
|
||||
{
|
||||
level waittill( "connected", var_0 );
|
||||
var_0 thread watchforclasschange();
|
||||
var_0 thread watchforteamchange();
|
||||
var_0 thread watchforleavegame();
|
||||
var_0 thread connectedmenus();
|
||||
}
|
||||
}
|
||||
|
||||
connectedmenus()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
getclasschoice( var_0 )
|
||||
{
|
||||
if ( var_0 > 10 )
|
||||
{
|
||||
if ( var_0 > 10 && var_0 < 17 )
|
||||
{
|
||||
var_0 -= 10;
|
||||
var_0 = "axis_recipe" + var_0;
|
||||
}
|
||||
else if ( var_0 > 16 && var_0 < 23 )
|
||||
{
|
||||
var_0 -= 16;
|
||||
var_0 = "allies_recipe" + var_0;
|
||||
}
|
||||
}
|
||||
else
|
||||
var_0 = "custom" + var_0;
|
||||
|
||||
return var_0;
|
||||
}
|
||||
|
||||
watchforclasschange()
|
||||
{
|
||||
self endon( "disconnect" );
|
||||
level endon( "game_ended" );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
self waittill( "luinotifyserver", var_0, var_1 );
|
||||
|
||||
if ( var_0 != "class_select" )
|
||||
continue;
|
||||
|
||||
if ( getdvarint( "systemlink" ) && getdvarint( "xblive_competitionmatch" ) && self ismlgspectator() )
|
||||
{
|
||||
self setclientomnvar( "ui_options_menu", 0 );
|
||||
continue;
|
||||
}
|
||||
|
||||
var_2 = isai( self ) || issubstr( self.name, "tcBot" );
|
||||
|
||||
if ( !var_2 )
|
||||
{
|
||||
if ( !isai( self ) && "" + var_1 != "callback" )
|
||||
self setclientomnvar( "ui_loadout_selected", var_1 );
|
||||
}
|
||||
|
||||
if ( isdefined( self.waitingtoselectclass ) && self.waitingtoselectclass )
|
||||
continue;
|
||||
|
||||
if ( !maps\mp\_utility::allowclasschoice() || maps\mp\_utility::showfakeloadout() )
|
||||
continue;
|
||||
|
||||
if ( "" + var_1 != "callback" )
|
||||
{
|
||||
if ( isdefined( self.pers["isBot"] ) && self.pers["isBot"] )
|
||||
{
|
||||
self.pers["class"] = var_1;
|
||||
self.class = var_1;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_3 = var_1 + 1;
|
||||
var_3 = getclasschoice( var_3 );
|
||||
|
||||
if ( !isdefined( self.pers["class"] ) || var_3 == self.pers["class"] )
|
||||
continue;
|
||||
|
||||
self.pers["class"] = var_3;
|
||||
self.class = var_3;
|
||||
|
||||
if ( level.ingraceperiod && !self.hasdonecombat )
|
||||
{
|
||||
maps\mp\gametypes\_class::setclass( self.pers["class"] );
|
||||
self.tag_stowed_back = undefined;
|
||||
self._id_7E62 = undefined;
|
||||
maps\mp\gametypes\_class::giveloadout( self.pers["team"], self.pers["class"] );
|
||||
}
|
||||
else if ( isalive( self ) )
|
||||
self iprintlnbold( game["strings"]["change_class"] );
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
menuclass( "callback" );
|
||||
}
|
||||
}
|
||||
|
||||
watchforleavegame()
|
||||
{
|
||||
self endon( "disconnect" );
|
||||
level endon( "game_ended" );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
self waittill( "luinotifyserver", var_0, var_1 );
|
||||
|
||||
if ( var_0 != "end_game" )
|
||||
continue;
|
||||
|
||||
if ( maps\mp\_utility::is_aliens() )
|
||||
{
|
||||
[[ level.forceendgame_alien ]]();
|
||||
continue;
|
||||
}
|
||||
|
||||
level thread maps\mp\gametypes\_gamelogic::forceend( var_1 );
|
||||
}
|
||||
}
|
||||
|
||||
watchforteamchange()
|
||||
{
|
||||
self endon( "disconnect" );
|
||||
level endon( "game_ended" );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
self waittill( "luinotifyserver", var_0, var_1 );
|
||||
|
||||
if ( var_0 != "team_select" )
|
||||
continue;
|
||||
|
||||
if ( maps\mp\_utility::matchmakinggame() && !getdvarint( "force_ranking" ) )
|
||||
continue;
|
||||
|
||||
if ( var_1 != 3 )
|
||||
thread showloadoutmenu();
|
||||
|
||||
if ( var_1 == 3 )
|
||||
{
|
||||
self setclientomnvar( "ui_spectator_selected", 1 );
|
||||
self setclientomnvar( "ui_loadout_selected", -1 );
|
||||
self.spectating_actively = 1;
|
||||
|
||||
if ( getdvarint( "systemlink" ) && getdvarint( "xblive_competitionmatch" ) )
|
||||
{
|
||||
self setmlgspectator( 1 );
|
||||
self.pers["mlgSpectator"] = 1;
|
||||
thread maps\mp\gametypes\_spectating::setmlgcamvisibility( 1 );
|
||||
thread maps\mp\gametypes\_spectating::setspectatepermissions();
|
||||
self setclientomnvar( "ui_options_menu", 2 );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
self setclientomnvar( "ui_spectator_selected", -1 );
|
||||
self.spectating_actively = 0;
|
||||
|
||||
if ( getdvarint( "systemlink" ) && getdvarint( "xblive_competitionmatch" ) )
|
||||
{
|
||||
self setmlgspectator( 0 );
|
||||
self.pers["mlgSpectator"] = 0;
|
||||
thread maps\mp\gametypes\_spectating::setmlgcamvisibility( 0 );
|
||||
}
|
||||
}
|
||||
|
||||
self setclientomnvar( "ui_team_selected", var_1 );
|
||||
|
||||
if ( var_1 == 0 )
|
||||
var_1 = "axis";
|
||||
else if ( var_1 == 1 )
|
||||
var_1 = "allies";
|
||||
else if ( var_1 == 2 )
|
||||
var_1 = "random";
|
||||
else
|
||||
var_1 = "spectator";
|
||||
|
||||
if ( isdefined( self.pers["team"] ) && var_1 == self.pers["team"] )
|
||||
{
|
||||
self notify( "selected_same_team" );
|
||||
continue;
|
||||
}
|
||||
|
||||
self setclientomnvar( "ui_loadout_selected", -1 );
|
||||
|
||||
if ( var_1 == "axis" )
|
||||
{
|
||||
thread setteam( "axis" );
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( var_1 == "allies" )
|
||||
{
|
||||
thread setteam( "allies" );
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( var_1 == "random" )
|
||||
{
|
||||
thread autoassign();
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( var_1 == "spectator" )
|
||||
thread setspectator();
|
||||
}
|
||||
}
|
||||
|
||||
showloadoutmenu()
|
||||
{
|
||||
self endon( "disconnect" );
|
||||
level endon( "game_ended" );
|
||||
common_scripts\utility::waittill_any( "joined_team", "selected_same_team" );
|
||||
self setclientomnvar( "ui_options_menu", 2 );
|
||||
}
|
||||
|
||||
autoassign()
|
||||
{
|
||||
if ( maps\mp\_utility::is_aliens() || level.gametype == "infect" )
|
||||
thread setteam( "allies" );
|
||||
else if ( ( getdvarint( "squad_match" ) == 1 || getdvarint( "squad_vs_squad" ) == 1 || getdvarint( "squad_use_hosts_squad" ) == 1 ) && isdefined( self.bot_team ) )
|
||||
thread setteam( self.bot_team );
|
||||
else if ( !isdefined( self.team ) )
|
||||
{
|
||||
if ( self ismlgspectator() )
|
||||
thread setspectator();
|
||||
else if ( level.teamcount["axis"] < level.teamcount["allies"] )
|
||||
thread setteam( "axis" );
|
||||
else if ( level.teamcount["allies"] < level.teamcount["axis"] )
|
||||
thread setteam( "allies" );
|
||||
else if ( getteamscore( "allies" ) > getteamscore( "axis" ) )
|
||||
thread setteam( "axis" );
|
||||
else
|
||||
thread setteam( "allies" );
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( self ismlgspectator() )
|
||||
{
|
||||
thread setspectator();
|
||||
return;
|
||||
}
|
||||
|
||||
if ( level.teamcount["axis"] < level.teamcount["allies"] && self.team != "axis" )
|
||||
{
|
||||
thread setteam( "axis" );
|
||||
return;
|
||||
}
|
||||
|
||||
if ( level.teamcount["allies"] < level.teamcount["axis"] && self.team != "allies" )
|
||||
{
|
||||
thread setteam( "allies" );
|
||||
return;
|
||||
}
|
||||
|
||||
if ( level.teamcount["allies"] == level.teamcount["axis"] )
|
||||
{
|
||||
if ( getteamscore( "allies" ) > getteamscore( "axis" ) && self.team != "axis" )
|
||||
thread setteam( "axis" );
|
||||
else if ( self.team != "allies" )
|
||||
thread setteam( "allies" );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
setteam( var_0 )
|
||||
{
|
||||
self endon( "disconnect" );
|
||||
|
||||
if ( !isai( self ) && level.teambased && !maps\mp\gametypes\_teams::getjointeampermissions( var_0 ) )
|
||||
return;
|
||||
|
||||
if ( level.ingraceperiod && !self.hasdonecombat )
|
||||
self.hasspawned = 0;
|
||||
|
||||
if ( self.sessionstate == "playing" )
|
||||
{
|
||||
self.switching_teams = 1;
|
||||
self.joining_team = var_0;
|
||||
self.leaving_team = self.pers["team"];
|
||||
}
|
||||
|
||||
addtoteam( var_0 );
|
||||
|
||||
if ( self.sessionstate == "playing" )
|
||||
self suicide();
|
||||
|
||||
waitforclassselect();
|
||||
endrespawnnotify();
|
||||
|
||||
if ( self.sessionstate == "spectator" )
|
||||
{
|
||||
if ( game["state"] == "postgame" )
|
||||
return;
|
||||
|
||||
if ( game["state"] == "playing" && !maps\mp\_utility::isinkillcam() )
|
||||
{
|
||||
if ( isdefined( self.waitingtospawnamortize ) && self.waitingtospawnamortize )
|
||||
return;
|
||||
|
||||
thread maps\mp\gametypes\_playerlogic::spawnclient();
|
||||
}
|
||||
|
||||
thread maps\mp\gametypes\_spectating::setspectatepermissions();
|
||||
}
|
||||
|
||||
self notify( "okToSpawn" );
|
||||
}
|
||||
|
||||
setspectator()
|
||||
{
|
||||
if ( isdefined( self.pers["team"] ) && self.pers["team"] == "spectator" )
|
||||
return;
|
||||
|
||||
if ( isalive( self ) )
|
||||
{
|
||||
self.switching_teams = 1;
|
||||
self.joining_team = "spectator";
|
||||
self.leaving_team = self.pers["team"];
|
||||
self suicide();
|
||||
}
|
||||
|
||||
self notify( "becameSpectator" );
|
||||
addtoteam( "spectator" );
|
||||
self.pers["class"] = undefined;
|
||||
self.class = undefined;
|
||||
thread maps\mp\gametypes\_playerlogic::spawnspectator();
|
||||
}
|
||||
|
||||
waitforclassselect()
|
||||
{
|
||||
self endon( "disconnect" );
|
||||
level endon( "game_ended" );
|
||||
self.waitingtoselectclass = 1;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
if ( level.gametype == "infect" )
|
||||
{
|
||||
bypassclasschoice();
|
||||
break;
|
||||
}
|
||||
|
||||
if ( maps\mp\_utility::allowclasschoice() || maps\mp\_utility::showfakeloadout() && !isai( self ) )
|
||||
self waittill( "luinotifyserver", var_0, var_1 );
|
||||
else
|
||||
{
|
||||
bypassclasschoice();
|
||||
break;
|
||||
}
|
||||
|
||||
if ( var_0 != "class_select" )
|
||||
continue;
|
||||
|
||||
if ( self.team == "spectator" )
|
||||
continue;
|
||||
|
||||
if ( "" + var_1 != "callback" )
|
||||
{
|
||||
if ( isdefined( self.pers["isBot"] ) && self.pers["isBot"] )
|
||||
{
|
||||
self.pers["class"] = var_1;
|
||||
self.class = var_1;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_1 += 1;
|
||||
self.pers["class"] = getclasschoice( var_1 );
|
||||
self.class = getclasschoice( var_1 );
|
||||
}
|
||||
|
||||
self.waitingtoselectclass = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
self.waitingtoselectclass = 0;
|
||||
menuclass( "callback" );
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
beginclasschoice( var_0 )
|
||||
{
|
||||
var_1 = self.pers["team"];
|
||||
|
||||
if ( maps\mp\_utility::allowclasschoice() || maps\mp\_utility::showfakeloadout() && !isai( self ) )
|
||||
{
|
||||
self setclientomnvar( "ui_options_menu", 2 );
|
||||
|
||||
if ( !self ismlgspectator() )
|
||||
waitforclassselect();
|
||||
|
||||
endrespawnnotify();
|
||||
|
||||
if ( self.sessionstate == "spectator" )
|
||||
{
|
||||
if ( game["state"] == "postgame" )
|
||||
return;
|
||||
|
||||
if ( game["state"] == "playing" && !maps\mp\_utility::isinkillcam() )
|
||||
{
|
||||
if ( isdefined( self.waitingtospawnamortize ) && self.waitingtospawnamortize )
|
||||
return;
|
||||
|
||||
thread maps\mp\gametypes\_playerlogic::spawnclient();
|
||||
}
|
||||
|
||||
thread maps\mp\gametypes\_spectating::setspectatepermissions();
|
||||
}
|
||||
|
||||
self.connecttime = gettime();
|
||||
self notify( "okToSpawn" );
|
||||
}
|
||||
else
|
||||
thread bypassclasschoice();
|
||||
|
||||
if ( !isalive( self ) )
|
||||
thread maps\mp\gametypes\_playerlogic::predictabouttospawnplayerovertime( 0.1 );
|
||||
}
|
||||
|
||||
bypassclasschoice()
|
||||
{
|
||||
self.selectedclass = 1;
|
||||
self.waitingtoselectclass = 0;
|
||||
|
||||
if ( isdefined( level.bypassclasschoicefunc ) )
|
||||
{
|
||||
var_0 = self [[ level.bypassclasschoicefunc ]]();
|
||||
self.class = var_0;
|
||||
}
|
||||
else
|
||||
self.class = "class0";
|
||||
}
|
||||
|
||||
beginteamchoice()
|
||||
{
|
||||
self setclientomnvar( "ui_options_menu", 1 );
|
||||
}
|
||||
|
||||
showmainmenuforteam()
|
||||
{
|
||||
var_0 = self.pers["team"];
|
||||
self openpopupmenu( game["menu_class_" + var_0] );
|
||||
}
|
||||
|
||||
menuspectator()
|
||||
{
|
||||
if ( isdefined( self.pers["team"] ) && self.pers["team"] == "spectator" )
|
||||
return;
|
||||
|
||||
if ( isalive( self ) )
|
||||
{
|
||||
self.switching_teams = 1;
|
||||
self.joining_team = "spectator";
|
||||
self.leaving_team = self.pers["team"];
|
||||
self suicide();
|
||||
}
|
||||
|
||||
addtoteam( "spectator" );
|
||||
self.pers["class"] = undefined;
|
||||
self.class = undefined;
|
||||
thread maps\mp\gametypes\_playerlogic::spawnspectator();
|
||||
}
|
||||
|
||||
menuclass( var_0 )
|
||||
{
|
||||
if ( var_0 == "demolitions_mp,0" && self getrankedplayerdata( "featureNew", "demolitions" ) )
|
||||
self setrankedplayerdata( "featureNew", "demolitions", 0 );
|
||||
|
||||
if ( var_0 == "sniper_mp,0" && self getrankedplayerdata( "featureNew", "sniper" ) )
|
||||
self setrankedplayerdata( "featureNew", "sniper", 0 );
|
||||
|
||||
var_1 = self.pers["team"];
|
||||
var_2 = maps\mp\gametypes\_class::getclasschoice( var_0 );
|
||||
var_3 = maps\mp\gametypes\_class::getweaponchoice( var_0 );
|
||||
|
||||
if ( var_2 == "restricted" )
|
||||
{
|
||||
beginclasschoice();
|
||||
return;
|
||||
}
|
||||
|
||||
if ( isdefined( self.pers["class"] ) && self.pers["class"] == var_2 && ( isdefined( self.pers["primary"] ) && self.pers["primary"] == var_3 ) )
|
||||
return;
|
||||
|
||||
if ( self.sessionstate == "playing" )
|
||||
{
|
||||
if ( isdefined( self.pers["lastClass"] ) && isdefined( self.pers["class"] ) )
|
||||
{
|
||||
self.pers["lastClass"] = self.pers["class"];
|
||||
self.lastclass = self.pers["lastClass"];
|
||||
}
|
||||
|
||||
self.pers["class"] = var_2;
|
||||
self.class = var_2;
|
||||
self.pers["primary"] = var_3;
|
||||
|
||||
if ( game["state"] == "postgame" )
|
||||
return;
|
||||
|
||||
if ( level.ingraceperiod && !self.hasdonecombat )
|
||||
{
|
||||
maps\mp\gametypes\_class::setclass( self.pers["class"] );
|
||||
self.tag_stowed_back = undefined;
|
||||
self._id_7E62 = undefined;
|
||||
maps\mp\gametypes\_class::giveloadout( self.pers["team"], self.pers["class"] );
|
||||
}
|
||||
else
|
||||
self iprintlnbold( game["strings"]["change_class"] );
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( isdefined( self.pers["lastClass"] ) && isdefined( self.pers["class"] ) )
|
||||
{
|
||||
self.pers["lastClass"] = self.pers["class"];
|
||||
self.lastclass = self.pers["lastClass"];
|
||||
}
|
||||
|
||||
self.pers["class"] = var_2;
|
||||
self.class = var_2;
|
||||
self.pers["primary"] = var_3;
|
||||
|
||||
if ( game["state"] == "postgame" )
|
||||
return;
|
||||
|
||||
if ( game["state"] == "playing" && !maps\mp\_utility::isinkillcam() )
|
||||
thread maps\mp\gametypes\_playerlogic::spawnclient();
|
||||
}
|
||||
|
||||
thread maps\mp\gametypes\_spectating::setspectatepermissions();
|
||||
}
|
||||
|
||||
update_wargame_after_migration()
|
||||
{
|
||||
foreach ( var_1 in level.players )
|
||||
{
|
||||
if ( !isai( var_1 ) && var_1 ishost() )
|
||||
level.wargame_client = var_1;
|
||||
}
|
||||
}
|
||||
|
||||
addtoteam( var_0, var_1, var_2 )
|
||||
{
|
||||
if ( isdefined( self.team ) )
|
||||
{
|
||||
maps\mp\gametypes\_playerlogic::removefromteamcount();
|
||||
|
||||
if ( isdefined( var_2 ) && var_2 )
|
||||
maps\mp\gametypes\_playerlogic::decrementalivecount( self.team );
|
||||
}
|
||||
|
||||
self.pers["team"] = var_0;
|
||||
self.team = var_0;
|
||||
|
||||
if ( getdvar( "squad_vs_squad" ) == "1" )
|
||||
{
|
||||
if ( !isai( self ) )
|
||||
{
|
||||
if ( var_0 == "allies" )
|
||||
{
|
||||
if ( !isdefined( level.squad_vs_squad_allies_client ) )
|
||||
level.squad_vs_squad_allies_client = self;
|
||||
}
|
||||
else if ( var_0 == "axis" )
|
||||
{
|
||||
if ( !isdefined( level.squad_vs_squad_axis_client ) )
|
||||
level.squad_vs_squad_axis_client = self;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( getdvar( "squad_match" ) == "1" )
|
||||
{
|
||||
if ( !isai( self ) && self ishost() )
|
||||
{
|
||||
if ( !isdefined( level.squad_match_client ) )
|
||||
level.squad_match_client = self;
|
||||
}
|
||||
}
|
||||
|
||||
if ( getdvar( "squad_use_hosts_squad" ) == "1" )
|
||||
{
|
||||
if ( !isai( self ) && self ishost() )
|
||||
{
|
||||
if ( !isdefined( level.wargame_client ) )
|
||||
level.wargame_client = self;
|
||||
}
|
||||
}
|
||||
|
||||
// session team is readonly in ranked matches if "teambased" is set on the playlist
|
||||
if ( level.teambased )
|
||||
self.sessionteam = var_0;
|
||||
else if ( var_0 == "spectator" )
|
||||
self.sessionteam = "spectator";
|
||||
else
|
||||
self.sessionteam = "none";
|
||||
|
||||
if ( game["state"] != "postgame" )
|
||||
{
|
||||
maps\mp\gametypes\_playerlogic::addtoteamcount();
|
||||
|
||||
if ( isdefined( var_2 ) && var_2 )
|
||||
maps\mp\gametypes\_playerlogic::incrementalivecount( self.team );
|
||||
}
|
||||
|
||||
maps\mp\_utility::updateobjectivetext();
|
||||
|
||||
if ( isdefined( var_1 ) && var_1 )
|
||||
waittillframeend;
|
||||
|
||||
maps\mp\_utility::updatemainmenu();
|
||||
|
||||
if ( var_0 == "spectator" )
|
||||
{
|
||||
self notify( "joined_spectators" );
|
||||
level notify( "joined_team", self );
|
||||
}
|
||||
else
|
||||
{
|
||||
self notify( "joined_team" );
|
||||
level notify( "joined_team", self );
|
||||
}
|
||||
}
|
||||
|
||||
endrespawnnotify()
|
||||
{
|
||||
self.waitingtospawn = 0;
|
||||
self notify( "end_respawn" );
|
||||
}
|
1885
maps/mp/gametypes/_playerlogic.gsc
Normal file
1885
maps/mp/gametypes/_playerlogic.gsc
Normal file
File diff suppressed because it is too large
Load Diff
2171
maps/mp/gametypes/aliens.gsc
Normal file
2171
maps/mp/gametypes/aliens.gsc
Normal file
File diff suppressed because it is too large
Load Diff
3154
maps/mp/mp_alien_beacon.gsc
Normal file
3154
maps/mp/mp_alien_beacon.gsc
Normal file
File diff suppressed because it is too large
Load Diff
33
scripts/_team_balance.gsc
Normal file
33
scripts/_team_balance.gsc
Normal file
@ -0,0 +1,33 @@
|
||||
init()
|
||||
{
|
||||
if (maps\mp\_utility::is_aliens())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (isdefined(level.ishorde) && level.ishorde)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// define onteamselection callback function used in balanceteams()
|
||||
level.onteamselection = ::set_team;
|
||||
}
|
||||
|
||||
set_team(team)
|
||||
{
|
||||
if (team != self.pers["team"])
|
||||
{
|
||||
self.switching_teams = true;
|
||||
self.joining_team = team;
|
||||
self.leaving_team = self.pers["team"];
|
||||
}
|
||||
|
||||
if (self.sessionstate == "playing")
|
||||
{
|
||||
self suicide();
|
||||
}
|
||||
|
||||
maps\mp\gametypes\_menus::addtoteam(team);
|
||||
maps\mp\gametypes\_menus::endrespawnnotify();
|
||||
}
|
BIN
sound/patch-3-music.flac
(Stored with Git LFS)
Normal file
BIN
sound/patch-3-music.flac
(Stored with Git LFS)
Normal file
Binary file not shown.
228
ui_scripts/end_game/__init__.lua
Normal file
228
ui_scripts/end_game/__init__.lua
Normal file
@ -0,0 +1,228 @@
|
||||
if (game:issingleplayer() or Engine.InFrontend()) then
|
||||
return
|
||||
end
|
||||
|
||||
f0_local0 = function ( f1_arg0, f1_arg1 )
|
||||
LUI.FlowManager.RequestLeaveMenu( f1_arg0 )
|
||||
end
|
||||
|
||||
f0_local1 = function ( f2_arg0, f2_arg1 )
|
||||
f2_arg0:setText( f2_arg1.message_text )
|
||||
f2_arg0:dispatchEventToRoot( {
|
||||
name = "resize_popup"
|
||||
} )
|
||||
end
|
||||
|
||||
f0_local2 = function ( f3_arg0 )
|
||||
Engine.ExecFirstClient( "xpartybackout" )
|
||||
Engine.ExecFirstClient( "disconnect" )
|
||||
end
|
||||
|
||||
local f0_local3 = function ( f4_arg0 )
|
||||
Engine.ExecFirstClient( "xpartydisbandafterround" )
|
||||
Engine.ExecFirstClient( "disconnect" )
|
||||
end
|
||||
|
||||
local f0_local4 = function ( f5_arg0 )
|
||||
return Engine.GetDvarBool( "onlinegame" )
|
||||
end
|
||||
|
||||
local f0_local5 = function ( f6_arg0 )
|
||||
if f0_local4( f6_arg0 ) then
|
||||
Engine.ExecFirstClient( "xstopprivateparty" )
|
||||
Engine.ExecFirstClient( "disconnect" )
|
||||
Engine.ExecFirstClient( "xblive_privatematch 0" )
|
||||
Engine.ExecFirstClient( "onlinegame 1" )
|
||||
Engine.ExecFirstClient( "xstartprivateparty" )
|
||||
else
|
||||
Engine.ExecFirstClient( "disconnect" )
|
||||
end
|
||||
end
|
||||
|
||||
local f0_local6 = function ( f7_arg0 )
|
||||
Engine.ExecFirstClient( "xstopprivateparty" )
|
||||
Engine.ExecFirstClient( "xpartydisbandafterround" )
|
||||
|
||||
if Engine.GetDvarBool( "sv_running" ) then
|
||||
Engine.NotifyServer( "end_game", 1 )
|
||||
Engine.ExecFirstClient( "xblive_privatematch 0" )
|
||||
Engine.ExecFirstClient( "onlinegame 1" )
|
||||
Engine.ExecFirstClient( "xstartprivateparty" )
|
||||
else
|
||||
f0_local5( f7_arg0 )
|
||||
end
|
||||
end
|
||||
|
||||
local f0_local7 = function ( f8_arg0, f8_arg1 )
|
||||
if Engine.GetDvarBool( "sv_running" ) then
|
||||
Engine.NotifyServer( "end_game", 1 )
|
||||
else
|
||||
f0_local5( f8_arg0 )
|
||||
end
|
||||
LUI.FlowManager.RequestCloseAllMenus( f8_arg0 )
|
||||
end
|
||||
|
||||
local f0_local8 = function ( f9_arg0, f9_arg1 )
|
||||
LUI.FlowManager.RequestLeaveMenu( f9_arg0 )
|
||||
Engine.Exec( "onPlayerQuit" )
|
||||
if Engine.GetDvarBool( "sv_running" ) then
|
||||
f0_local3( f9_arg0 )
|
||||
else
|
||||
f0_local2( f9_arg0 )
|
||||
end
|
||||
LUI.FlowManager.RequestCloseAllMenus( f9_arg0 )
|
||||
end
|
||||
|
||||
local f0_local9 = function ( f10_arg0, f10_arg1 )
|
||||
LUI.FlowManager.RequestLeaveMenu( f10_arg0 )
|
||||
Engine.Exec( "onPlayerQuit" )
|
||||
if Engine.GetDvarBool( "sv_running" ) then
|
||||
f0_local6( f10_arg0 )
|
||||
else
|
||||
f0_local5( f10_arg0 )
|
||||
end
|
||||
LUI.FlowManager.RequestCloseAllMenus( f10_arg0 )
|
||||
end
|
||||
|
||||
local f0_local10 = function ( f11_arg0 )
|
||||
local f11_local0 = Lobby.IsInPrivateParty()
|
||||
if f11_local0 then
|
||||
f11_local0 = Lobby.IsPrivatePartyHost()
|
||||
if f11_local0 then
|
||||
f11_local0 = not Lobby.IsAloneInPrivateParty()
|
||||
end
|
||||
end
|
||||
return f11_local0
|
||||
end
|
||||
|
||||
local f0_local11 = function ( f12_arg0, f12_arg1 )
|
||||
local f12_local0 = Engine.GetDvarBool( "squad_match" )
|
||||
local f12_local1 = Engine.GetDvarBool( "squad_use_hosts_squad" )
|
||||
if f12_local0 and Lobby.IsInPrivateParty() and Lobby.IsPrivatePartyHost() then
|
||||
Engine.NotifyServer( "end_game", 1 )
|
||||
elseif f12_local1 and Lobby.IsPrivatePartyHost() and Lobby.IsAloneInPrivateParty() and Lobby.IsAlone() then
|
||||
Engine.NotifyServer( "end_game", 1 )
|
||||
elseif f0_local10( f12_arg0 ) then
|
||||
LUI.FlowManager.RequestLeaveMenu( f12_arg0, true )
|
||||
LUI.FlowManager.RequestPopupMenu( f12_arg0, "popup_pull_party", false )
|
||||
else
|
||||
Engine.Exec( "onPlayerQuit" )
|
||||
if Engine.GetDvarBool( "sv_running" ) then
|
||||
f0_local6( f12_arg0 )
|
||||
else
|
||||
f0_local5( f12_arg0 )
|
||||
end
|
||||
LUI.FlowManager.RequestCloseAllMenus( f12_arg0 )
|
||||
end
|
||||
end
|
||||
|
||||
local f0_local12 = function ()
|
||||
local self = LUI.UIElement.new()
|
||||
self.id = "end_game_id"
|
||||
self:registerAnimationState( "default", {
|
||||
topAnchor = true,
|
||||
leftAnchor = true,
|
||||
bottomAnchor = true,
|
||||
rightAnchor = true,
|
||||
top = -50,
|
||||
left = 0,
|
||||
bottom = 0,
|
||||
right = 0,
|
||||
alpha = 1
|
||||
} )
|
||||
self:animateToState( "default", 0 )
|
||||
local f13_local1 = Engine.Localize( "@LUA_MENU_END_GAME_DESC" )
|
||||
local f13_local2 = Engine.Localize( "@LUA_MENU_LEAVE_GAME_TITLE" )
|
||||
if Engine.IsAliensMode() and Game.GetOmnvar( "ui_alien_is_solo" ) then
|
||||
f13_local1 = Engine.Localize( "@ALIENS_LEAVE_GAME_DESC" )
|
||||
f13_local2 = Engine.Localize( "@MENU_NOTICE" )
|
||||
end
|
||||
LUI.MenuBuilder.BuildAddChild( self, {
|
||||
type = "generic_yesno_popup",
|
||||
id = "privateGame_options_list_id",
|
||||
properties = {
|
||||
message_text_alignment = LUI.Alignment.Center,
|
||||
message_text = f13_local1,
|
||||
popup_title = f13_local2,
|
||||
padding_top = 12,
|
||||
yes_action = f0_local7
|
||||
}
|
||||
} )
|
||||
local f13_local3 = LUI.UIBindButton.new()
|
||||
f13_local3.id = "endBackToGameStartButton"
|
||||
f13_local3:registerEventHandler( "button_start", f0_local0 )
|
||||
self:addElement( f13_local3 )
|
||||
return self
|
||||
end
|
||||
|
||||
local f0_local13 = function ()
|
||||
local self = LUI.UIElement.new()
|
||||
self.id = "leave_game_id"
|
||||
self:registerAnimationState( "default", {
|
||||
topAnchor = true,
|
||||
leftAnchor = true,
|
||||
bottomAnchor = true,
|
||||
rightAnchor = true,
|
||||
top = -50,
|
||||
left = 0,
|
||||
bottom = 0,
|
||||
right = 0,
|
||||
alpha = 1
|
||||
} )
|
||||
self:animateToState( "default", 0 )
|
||||
LUI.MenuBuilder.BuildAddChild( self, {
|
||||
type = "generic_yesno_popup",
|
||||
id = "publicGame_options_list_id",
|
||||
properties = {
|
||||
message_text_alignment = LUI.Alignment.Center,
|
||||
message_text = Engine.IsAliensMode() and Engine.Localize( "@ALIENS_LEAVE_GAME_DESC" ) or Engine.Localize( "@LUA_MENU_LEAVE_GAME_DESC" ),
|
||||
popup_title = Engine.IsAliensMode() and Engine.Localize( "@MENU_NOTICE" ) or Engine.Localize( "@LUA_MENU_LEAVE_GAME_TITLE" ),
|
||||
padding_top = 12,
|
||||
yes_action = f0_local11
|
||||
}
|
||||
} )
|
||||
local f14_local1 = LUI.UIBindButton.new()
|
||||
f14_local1.id = "leaveBackToGameStartButton"
|
||||
f14_local1:registerEventHandler( "button_start", f0_local0 )
|
||||
self:addElement( f14_local1 )
|
||||
return self
|
||||
end
|
||||
|
||||
local f0_local14 = function ()
|
||||
local self = LUI.UIElement.new()
|
||||
self.id = "pull_party_out_id"
|
||||
self:registerAnimationState( "default", {
|
||||
topAnchor = true,
|
||||
leftAnchor = true,
|
||||
bottomAnchor = true,
|
||||
rightAnchor = true,
|
||||
top = -50,
|
||||
left = 0,
|
||||
bottom = 0,
|
||||
right = 0,
|
||||
alpha = 1
|
||||
} )
|
||||
self:animateToState( "default", 0 )
|
||||
LUI.MenuBuilder.BuildAddChild( self, {
|
||||
type = "generic_yesno_popup",
|
||||
id = "party_pullout_list_id",
|
||||
properties = {
|
||||
message_text_alignment = LUI.Alignment.Center,
|
||||
message_text = Engine.Localize( "@LUA_MENU_PULL_PARTY_DESC" ),
|
||||
popup_title = Engine.Localize( "@LUA_MENU_LEAVE_GAME_TITLE" ),
|
||||
padding_top = 12,
|
||||
yes_action = f0_local8,
|
||||
no_action = f0_local9,
|
||||
cancel_means_no = false
|
||||
}
|
||||
} )
|
||||
local f15_local1 = LUI.UIBindButton.new()
|
||||
f15_local1.id = "leavePullPartyButton"
|
||||
f15_local1:registerEventHandler( "button_start", f0_local0 )
|
||||
self:addElement( f15_local1 )
|
||||
return self
|
||||
end
|
||||
|
||||
LUI.MenuBuilder.m_types["popup_end_game"] = f0_local12
|
||||
LUI.MenuBuilder.m_types["popup_leave_game"] = f0_local13
|
||||
LUI.MenuBuilder.m_types["popup_pull_party"] = f0_local14
|
250
ui_scripts/main_menu/__init__.lua
Normal file
250
ui_scripts/main_menu/__init__.lua
Normal file
@ -0,0 +1,250 @@
|
||||
if (game:issingleplayer() or not Engine.InFrontend()) then
|
||||
return
|
||||
end
|
||||
|
||||
local SquadsModeButtonAction = function( f4_arg1 , f4_arg0)
|
||||
controller = f4_arg0.controller
|
||||
Engine.ExecNow( "forcenosplitscreencontrol main_XBOXLIVE_1", controller )
|
||||
local f4_local0, f4_local1 = Engine.UserCanPlayOnline( controller )
|
||||
if not f4_local0 then
|
||||
Engine.Exec( "xrequirelivesignin", controller )
|
||||
Engine.Exec( "forcenosplitscreencontrol main_XBOXLIVE_2", controller )
|
||||
else
|
||||
if SvS.IsSvS() then
|
||||
Engine.Exec( "profile_SetHasEverPlayed_SP", controller )
|
||||
end
|
||||
Engine.ExecNow( "resetSplitscreenSignIn", controller )
|
||||
Engine.ExecNow( "forcenosplitscreencontrol main_XBOXLIVE_3", controller )
|
||||
Engine.SetDvarBool( "systemlink", false )
|
||||
Engine.SetDvarBool( "splitscreen", false )
|
||||
Engine.SetDvarBool( "onlinegame", true )
|
||||
Engine.SetDvarBool( "xblive_privatematch", false )
|
||||
Engine.SetDvarBool( "ui_opensummary", false )
|
||||
Engine.SetDvarBool( "squad_match", false )
|
||||
Engine.SetDvarInt( "allow_online_squads", 1 )
|
||||
if Engine.GetDvarBool( "xblive_competitionmatch" ) then
|
||||
Engine.SetDvarBool( "xblive_competitionmatch", false )
|
||||
Engine.Exec( "set remove_mlg_rules 1" )
|
||||
end
|
||||
Engine.ExecNow( MPConfig.default_xboxlive, controller )
|
||||
if not SvS.IsSvS() then
|
||||
Engine.ExecNow( "xstartprivateparty", controller )
|
||||
end
|
||||
Engine.Exec( "startentitlements", controller )
|
||||
Engine.CacheUserDataForController( controller )
|
||||
if SvS.IsSvS() then
|
||||
LUI.FlowManager.RequestAddMenu( nil, "squads_mode_select_menu", false, controller, false )
|
||||
else
|
||||
LUI.FlowManager.RequestAddMenu( nil, "menu_xboxlive", false, controller, false )
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local main_menu_options_feeder = function( f17_arg0 )
|
||||
local f17_local0 = Engine.IsAliensMode()
|
||||
local f17_local1 = SvS.IsSvS()
|
||||
local f17_local2 = false
|
||||
if Engine.GetDvarInt( "allow_online_squads" ) == 1 or not Engine.IsConsoleGame() then
|
||||
f17_local2 = true
|
||||
end
|
||||
local f17_local3 = Engine.DoWeNeedCompatibilityPacks()
|
||||
if f17_local1 then
|
||||
local f17_local4 = f17_local2
|
||||
end
|
||||
local f17_local5 = f17_local4 or not f17_local1
|
||||
local f17_local6 = {}
|
||||
if Engine.AllowOnline() and f17_local5 then
|
||||
local f17_local7, f17_local8 = nil
|
||||
if f17_local1 then
|
||||
f17_local8 = Engine.Localize( "@PLATFORM_PLAY_ONLINE_SQUADS_CAPS" )
|
||||
f17_local7 = Engine.Localize( "@LUA_MENU_SQUADS_INTRO" )
|
||||
elseif f17_local0 then
|
||||
f17_local8 = Engine.Localize( "@PLATFORM_PLAY_ONLINE_CAPS" )
|
||||
f17_local7 = Engine.Localize( "@LUA_MENU_PLAY_EXTINCTION_ONLINE_DESC" )
|
||||
else
|
||||
f17_local8 = Engine.Localize( "@PLATFORM_PLAY_ONLINE_CAPS" )
|
||||
f17_local7 = Engine.Localize( "@PLATFORM_PLAY_ONLINE_DESC" )
|
||||
end
|
||||
f17_local6[#f17_local6 + 1] = {
|
||||
type = "UIGenericButton",
|
||||
id = "btn_MPMain_0",
|
||||
disabled = f17_local3,
|
||||
disabledFunc = Engine.DoWeNeedCompatibilityPacks,
|
||||
properties = {
|
||||
button_text = f17_local8,
|
||||
button_action_func = LUI.mp_menus.MPMainMenu.xboxLiveButtonAction,
|
||||
desc_text = f17_local7,
|
||||
button_over_func = function ( f18_arg0, f18_arg1 )
|
||||
PersistentBackground.SetToDefault()
|
||||
end
|
||||
}
|
||||
}
|
||||
end
|
||||
if SvS.IsSvS() then
|
||||
local f17_local7 = "@PLATFORM_PLAY_ONLINE_SQUADS_CAPS"
|
||||
local f17_local8 = #f17_local6 + 1
|
||||
local f17_local9 = {
|
||||
type = "UIGenericButton",
|
||||
id = "btn_MPMain_1",
|
||||
disabled = f17_local3,
|
||||
disabledFunc = Engine.DoWeNeedCompatibilityPacks
|
||||
}
|
||||
local f17_local10 = {
|
||||
button_text = Engine.Localize( f17_local7 ),
|
||||
button_action_func = SquadsModeButtonAction
|
||||
}
|
||||
local f17_local11
|
||||
if f17_local1 then
|
||||
f17_local11 = Engine.Localize( "@LUA_MENU_SQUADS_INTRO" )
|
||||
if not f17_local11 then
|
||||
|
||||
else
|
||||
f17_local10.desc_text = f17_local11
|
||||
f17_local10.button_over_func = function ( f19_arg0, f19_arg1 )
|
||||
PersistentBackground.SetToDefault()
|
||||
end
|
||||