diff options
Diffstat (limited to 'Northstar.Custom')
43 files changed, 13037 insertions, 0 deletions
diff --git a/Northstar.Custom/mod.json b/Northstar.Custom/mod.json new file mode 100644 index 00000000..87ce75e8 --- /dev/null +++ b/Northstar.Custom/mod.json @@ -0,0 +1,186 @@ +disabled{ + "ApiId" : "Northstar.Custom", + "Name" : "Northstar.Custom", + "Description" : "Additional content for coop and custom multiplayer servers", + "Authors" : [ + "BobTheBob" + ], + "Contacts" : [ + "BobTheBob#1150" + ], + "Version" : "0.1", + "CustomScripts": [ + { + "Path": "northstar_custom_autoprecache.gnut", + "RunOn": "( CLIENT || SERVER ) && MP", + "ClientCallback": "NorthstarCustomAutoprecache", + "ServerCallback": "NorthstarCustomAutoprecache", + }, + { + "Path": "_northstar_devcommands.gnut", + "RunOn": "SERVER && MP", + "ServerCallback": "NorthstarDevCommands_Init" + }, + + { + "Path": "weapons/mp_weapon_peacekraber.nut", + "RunOn": "( CLIENT || SERVER ) && MP", + }, + + { + "Path": "gamemodes/sh_gamemode_sbox.gnut", + "RunOn": "( CLIENT || SERVER ) && MP", + "ClientPreCallback": "Sh_GamemodeSbox_Init", + "ServerPreCallback": "Sh_GamemodeSbox_Init" + }, + { + "Path": "gamemodes/_gamemode_sbox.gnut", + "RunOn": "SERVER && MP" + }, + { + "Path": "weapons/mp_weapon_toolgun.nut", + "RunOn": "( CLIENT || SERVER ) && MP" + }, + { + "Path": "weapons/toolgun/sh_toolgun_tools.gnut", + "RunOn": "( CLIENT || SERVER ) && MP", + "ClientCallback": "ToolgunTools_Init", + "ServerCallback": "ToolgunTools_Init" + }, + { + "Path": "weapons/toolgun/sh_toolgun_tool_throw.nut", + "RunOn": "( CLIENT || SERVER ) && MP", + "ClientCallback": "ToolgunToolThrowEntity_Init", + "ServerCallback": "ToolgunToolThrowEntity_Init" + }, + { + "Path": "weapons/toolgun/sh_toolgun_tool_explode.nut", + "RunOn": "( CLIENT || SERVER ) && MP", + "ClientCallback": "ToolgunToolCreateExplosion_Init", + "ServerCallback": "ToolgunToolCreateExplosion_Init" + }, + + { + "Path": "gamemodes/sh_gamemode_fw_custom.nut", + "RunOn": "( CLIENT || SERVER ) && MP", + "ClientPreCallback": "SHCreateGamemodeFW_Init", + "ServerPreCallback": "SHCreateGamemodeFW_Init" + }, + + { + "Path": "gamemodes/sh_gamemode_gg.gnut", + "RunOn": "( CLIENT || SERVER ) && MP", + "ClientPreCallback": "Sh_GamemodeGG_Init", + "ServerPreCallback": "Sh_GamemodeGG_Init" + }, + { + "Path": "gamemodes/_gamemode_gg.gnut", + "RunOn": "SERVER && MP" + }, + { + "Path": "gamemodes/cl_gamemode_gg.gnut", + "RunOn": "CLIENT && MP" + }, + + { + "Path": "gamemodes/sh_gamemode_tt.gnut", + "RunOn": "( CLIENT || SERVER ) && MP", + "ClientPreCallback": "Sh_GamemodeTT_Init", + "ServerPreCallback": "Sh_GamemodeTT_Init" + }, + { + "Path": "gamemodes/_gamemode_tt.gnut", + "RunOn": "SERVER && MP" + }, + { + "Path": "gamemodes/cl_gamemode_tt.gnut", + "RunOn": "CLIENT && MP" + }, + + { + "Path": "gamemodes/sh_gamemode_inf.gnut", + "RunOn": "( CLIENT || SERVER ) && MP", + "ClientPreCallback": "Sh_GamemodeInfection_Init", + "ServerPreCallback": "Sh_GamemodeInfection_Init" + }, + { + "Path": "gamemodes/_gamemode_inf.gnut", + "RunOn": "SERVER && MP" + }, + { + "Path": "gamemodes/cl_gamemode_inf.gnut", + "RunOn": "CLIENT && MP" + }, + + { + "Path": "gamemodes/sh_gamemode_arena.gnut", + "RunOn": "( CLIENT || SERVER ) && MP", + "ClientPreCallback": "Sh_GamemodeArena_Init", + "ServerPreCallback": "Sh_GamemodeArena_Init" + }, + { + "Path": "gamemodes/_gamemode_arena.gnut", + "RunOn": "SERVER && MP" + }, + { + "Path": "gamemodes/cl_gamemode_arena.gnut", + "RunOn": "CLIENT && MP" + }, + + { + "Path": "gamemodes/sh_gamemode_kr.gnut", + "RunOn": "( CLIENT || SERVER ) && MP", + "ClientPreCallback": "Sh_GamemodeKR_Init", + "ServerPreCallback": "Sh_GamemodeKR_Init" + }, + { + "Path": "gamemodes/_gamemode_kr.gnut", + "RunOn": "SERVER && MP" + }, + { + "Path": "gamemodes/cl_gamemode_kr.gnut", + "RunOn": "CLIENT && MP" + }, + + { + "Path": "gamemodes/sh_gamemode_fastball.gnut", + "RunOn": "( CLIENT || SERVER ) && MP", + "ClientPreCallback": "Sh_GamemodeFastball_Init", + "ServerPreCallback": "Sh_GamemodeFastball_Init" + }, + { + "Path": "gamemodes/_gamemode_fastball.gnut", + "RunOn": "SERVER && MP" + }, + { + "Path": "gamemodes/_gamemode_fastball_intro.gnut", + "RunOn": "SERVER && MP" + }, + { + "Path": "gamemodes/cl_gamemode_fastball.gnut", + "RunOn": "CLIENT && MP" + }, + + { + "Path": "titan/sh_first_person_embark.gnut", + "RunOn": "( CLIENT || SERVER ) && MP", + "ClientPreCallback": "FirstPersonEmbark_Init", + "ServerPreCallback": "FirstPersonEmbark_Init" + }, + { + "Path": "gamemodes/_riff_instagib.gnut", + "RunOn": "SERVER && MP", + "ServerCallback": "RiffInstagib_Init" + }, + ], + "IncludeAdditionalPreexistingScripts": [ + { + "Path": "gamemodes/sh_gamemode_fw.nut", + "RunOn": "( CLIENT || SERVER ) && MP" + }, + { + "Path": "gamemodes/cl_gamemode_fw.nut", + "RunOn": "CLIENT && MP" + } + ] +}
\ No newline at end of file diff --git a/Northstar.Custom/playlists_v2.txt b/Northstar.Custom/playlists_v2.txt new file mode 100644 index 00000000..be938cc3 --- /dev/null +++ b/Northstar.Custom/playlists_v2.txt @@ -0,0 +1,5772 @@ +playlists +{ + version stable + versionNum 3246 + Gamemodes + { + defaults + { + vars + { + pve_menu 0 + enable_emotes 0 + boost_store_mode off + + enable_lts_style_loadout_select 0 + pick_loadout_extension 0 + pick_loadout_every_round 0 + pick_loadout_warp_sound 1 + tts_menu_join_in_progress 0 + tts_menu_show_score 1 + ingame_menu_fd_mode 0 + limited_editions_available 1 + + ai_attack_tethers 1 + enable_sun_flare_mp_thaw 0 + enable_sun_flare_mp_forwardbase_kodai 0 + enable_sun_flare_mp_colony02 0 + enable_coliseum_updates 1 + enable_coliseum_party 1 + enable_spectre_hacking 0 + maphack_on_minimap_only 0 + mp_angel_city_available 1 + angel_city_replacement groundwar + angel_city_replacement_index 8 + double_xp_enabled 0 + skyshow_enabled 0 + loadout_selection_enabled 1 + ai_kill_credit 3 + always_enable_autotitans 1 + at_turrets_enabled 1 + burn_meter_enabled 1 + classic_mp 1 + cmdlineMapLoad 0 + em_npc_fast_kills 20 + em_npc_kills 20 + em_player_fast_kills 5 + em_player_kills 8 + enable_titanfalls 1 + evac_dropship_kill_credit 60 + event_airdrops_enabled 0 + event_airdrops_respawnTime 180 + firstpersonspectate_enabled 1 + gamemode_uses_custom_countdown 0 + hud_score_enabled 1 + infinite_doomed_state 1 + loadout_grace_period 20.0 + lobby_countdown 60 + lobby_countdown_min 30 + max_players 16 + max_teams 2 + matchLossProtectionThreshold 10 + megaturret_kill_credit 20 + minimap_sonar_pulse_on_respawn 0 + player_embark_in_solid_checks 1 + player_kill_credit 10 + power_ups_enabled 0 + r2_titan_models 1 + ranked_wlpct_at 0.05 + ranked_wlpct_cp 0.15 + ranked_wlpct_ctf 0.15 + ranked_wlpct_def 0.1 + ranked_wlpct_lts 0.15 + ranked_wlpct_mfd 0.1 + ranked_wlpct_ps 0.05 + ranking_supported 1 + riff_ai_lethality 1 + riff_allow_npcs 2 + riff_ammo_limit 0 + riff_elimination 0 + riff_floorislava 0 + riff_minimap_state 0 + riff_osp 0 + riff_spawn_as_titan 0 + riff_titan_availability 0 + riff_titan_exit_enabled 0 + riff_titan_queue 0 + riff_wave_spawn 0 + rodeo_battery_disembark_to_pickup 1 + maxExtraRounds -1 + rts_style_health_bars 1 + run_evac 0 + script_leak 0 + spectre_kill_credit 9 + target_health_bar 1 + titan_build_credit_enabled 1 + titan_build_time 180 + titan_build_time_use_set_file 0 + titan_core_build_time 200 + titan_core_from_titan_damage 1 + titan_doomstate_variation default + titan_health_bar_display default + titan_health_chicklet_fx 0 + titan_kill_credit 30 + titan_mode_change_allowed 1 + titan_rebuild_time 180 + titan_shield_decay 0 + titan_shield_regen 0 + titan_spawn_deploy_enabled 1 + vortex_blocks_melee 0 + waiting_for_players_countdown_seconds 0 + waiting_for_players_percentage_desired 70 + waiting_for_players_timeout_seconds 45 + wait_before_restarting_matchmaking_time 20 + gm_hardcore_settings 0 + spawn_zone_enabled 0 + is_e3_mode 0 + fast_tdm 0 + arena_loadout 0 + fd_difficulty 0 + featured_mode_amped_tacticals 0 + featured_mode_tactikill 0 + featured_mode_all_grapple 0 + featured_mode_all_holopilot 0 + featured_mode_all_phase 0 + featured_mode_all_ticks 0 + featured_mode_rocket_arena 0 + featured_mode_turbo_titans 0 + featured_mode_shotguns_snipers 0 + + // defaults for private_match settings, as all gamemodes don't explicitly set their own + boosts_enabled 0 + respawn_delay 0.0 + + //No longer used? No references in script for these + xp2coins_modifier 0.1 + titan_shield_health 0 + titan_rodeo_variation 1 + titan_segmented_health 0 + titan_health_regen 0 + titan_burncard_rate 28 + shop_price_modifier 1.0 + show_enemy_death_icons 0 + show_friendly_icon 1 + rtdm_roundscorelimit 2 + rtdm_roundtimelimit 4 + rtdm_scorelimit 20 + prematch_time 30 + always_titan 0 + amped_capture_points 0 + nwrp_enabled 1 + pilot_burncard_rate 55 + kill_for_titan 6 + hud_weapons_enabled 1 + grunt_burncard_rate 95 + bc_base_cards 46 + bc_stash_bonus_per_gen 6 + burncards_enabled 0 + cinematic_mode 0 + coins_bc_sale_modifier 1.0 + coins_earn_modifier 1.0 + em_decay_hold 10 + force_quick_play 0 + //End of list + + faq_patchnotes_version 11 + faq_patchnotes_count 10 + + faq_community_version 10 + faq_community_url_00 "https://www.youtube.com/embed/SbdQPdaPme4?autoplay=1" + faq_community_url_01 "https://forums.titanfall.com/en-us/discussion/14073/postcards-from-the-frontier-the-patch-notes#latest" + faq_community_url_02 "https://www.youtube.com/embed/KyywlZHh3-Q?autoplay=1" + faq_community_url_03 "https://www.youtube.com/embed/1LAlKi6E8DY?autoplay=1" + faq_community_url_04 "https://www.youtube.com/embed/pzmrZBiLyhE?autoplay=1" + faq_community_url_05 "https://www.youtube.com/embed/XBP3Ic0UiQY?autoplay=1" + faq_community_url_06 "https://gfycat.com/gifs/detail/ScornfulAnyHamadryad" + faq_community_url_07 "https://www.youtube.com/embed/fE7_tVG_t28?autoplay=1" + faq_community_url_08 "https://www.youtube.com/embed/RO7QJ5YEa24?autoplay=1" + faq_community_url_09 "https://www.youtube.com/embed/rMeaxj8k_3U?autoplay=1" + faq_community_url_10 "https://www.youtube.com/embed/JKiuY3Ocwzo?autoplay=1" + faq_community_url_11 "https://www.youtube.com/embed/fCCckqclBoA?autoplay=1" + faq_community_url_12 "https://www.youtube.com/embed/4MMtDSrcXYU?autoplay=1" + faq_community_url_13 "http://www.youtube.com/embed/I_6hViuy3kc?autoplay=1" + faq_community_url_14 "http://www.youtube.com/embed/Wtu3fUs9i7M?autoplay=1" + faq_community_url_15 "http://www.youtube.com/embed/EXwdWuSuiYA?autoplay=1" + faq_community_url_16 "http://www.youtube.com/embed/nHvoaAAhGno?autoplay=1" + faq_community_count 17 + + mixtape_matchmaking 1 // 0 = old style, 1 = new style + mixtape_version 2 // bump to re-trigger the "NEW!" notify. + mixtape_checkbox_memory_version 2 // bump to re-enable all checkboxes + mixtape_skip_button 0 // disable to not show the 'Y Skip' prompt + mixtape_onboarding "aitdm,cp,aitdm,cp,ffa " + + gamemode_name "" + gamemode_hint "" + gamemode_score_hint "" + gamemode_bullet_001 "" + gamemode_bullet_002 "" + gamemode_bullet_003 "" + gamemode_bullet_004 "" + gamemode_bullet_005 "" + + coliseum_primary "mp_weapon_lstar" + coliseum_primary_attachment "" + coliseum_primary_mod1 "" + coliseum_primary_mod2 "" + coliseum_primary_mod3 "" + coliseum_secondary "mp_weapon_softball" + coliseum_secondary_mod1 "" + coliseum_secondary_mod2 "" + coliseum_secondary_mod3 "" + coliseum_weapon3 "" + coliseum_weapon3_mod1 "" + coliseum_weapon3_mod2 "" + coliseum_weapon3_mod3 "" + coliseum_melee "melee_pilot_emptyhanded" + coliseum_special "mp_ability_heal" + coliseum_ordnance "mp_weapon_frag_drone" + coliseum_passive1 "pas_fast_health_regen" + coliseum_passive2 "pas_wallhang" + + idlekick_minutes 3 + idlekick_min_alive_seconds 40 + + fd_tutorial_title "#WATCH_TUTORIAL" + fd_tutorial_url "https://www.youtube.com/watch?v=8wS8NQ0XW-w" + + "generic_dialog_header_30" "#MATCHMAKING_PENALTY_ACTIVE" + "generic_dialog_message_36" "#MATCHMAKING_PENALTY_GE_5" + "generic_dialog_message_35" "#MATCHMAKING_PENALTY_5" + "generic_dialog_message_34" "#MATCHMAKING_PENALTY_4" + "generic_dialog_message_33" "#MATCHMAKING_PENALTY_3" + "generic_dialog_message_32" "#MATCHMAKING_PENALTY_2" + "generic_dialog_message_31" "#MATCHMAKING_PENALTY_1" + } + maps + { + mp_black_water_canal 1 + mp_complex3 1 + mp_crashsite3 1 + mp_drydock 1 + mp_eden 1 + mp_forwardbase_kodai 1 + mp_grave 1 + mp_homestead 1 + mp_thaw 1 + mp_angel_city 1 + mp_colony02 1 + mp_relic02 1 + mp_wargames 1 + mp_glitch 1 + mp_rise 1 + } + } + at + { + inherit defaults + vars + { + name #PL_attrition + lobbytitle #PL_attrition_lobby + description #PL_attrition_desc + hint #PL_attrition_hint + abbreviation #PL_attrition_abbr + em_player_fast_kills 12 + em_player_kills 15 + max_players 10 + riff_allow_npcs 1 + scorelimit 5000 + suddendeath_timelimit 2 + timelimit 15 + titan_build_time 240 + titan_rebuild_time 240 + spawn_zone_enabled 1 + color "183 60 0 255" + + gamemode_score_hint #GAMEMODE_SCORE_HINT_AT + gamemode_bullet_001 #GAMEMODE_BULLET_AT_001 + gamemode_bullet_002 #GAMEMODE_BULLET_AT_002 + gamemode_bullet_003 #GAMEMODE_BULLET_AT_003 + gamemode_bullet_004 #GAMEMODE_BULLET_AT_004 + gamemode_bullet_005 #GAMEMODE_BULLET_AT_005 + } + } + coliseum + { + inherit defaults + vars + { + name #PL_coliseum + lobbytitle #PL_coliseum_lobby + description #PL_coliseum_desc + hint #PL_coliseum_hint + image coliseum + classic_mp 1 + infinite_doomed_state 0 + power_ups_enabled 1 + roundscorelimit 3 + roundtimelimit 3.0 + suddendeath_timelimit 0.5 + max_players 2 + scorelimit 3 + timelimit 15 + loadout_selection_enabled 0 + waiting_for_players_countdown_seconds 10 + waiting_for_players_percentage_desired 100 + waiting_for_players_timeout_seconds 60 + + color "88 151 220 255" + } + maps + { + mp_coliseum 1 + mp_coliseum_column 1 + } + } + cp + { + inherit defaults + vars + { + name #PL_hardpoint + lobbytitle #PL_hardpoint_lobby + description #PL_hardpoint_desc + hint #PL_hardpoint_hint + abbreviation #PL_hardpoint_abbr + image cp + amped_capture_points 1 + scorelimit 400 + suddendeath_timelimit 2 + timelimit 10 + max_players 12 + color "161 204 255 255" + + gamemode_score_hint #GAMEMODE_SCORE_HINT_CP + gamemode_bullet_001 #GAMEMODE_BULLET_CP_001 + gamemode_bullet_002 #GAMEMODE_BULLET_CP_002 + gamemode_bullet_003 #GAMEMODE_BULLET_CP_003 + gamemode_bullet_004 #GAMEMODE_BULLET_CP_004 + gamemode_bullet_005 #GAMEMODE_BULLET_CP_005 + } + } + ctf + { + inherit defaults + vars + { + name #PL_capture_the_flag + lobbytitle #PL_capture_the_flag_lobby + description #PL_capture_the_flag_desc + hint #PL_capture_the_flag_hint + abbreviation #PL_capture_the_flag_abbr + image ctf + respawn_delay 8 + scorelimit 5 + suddendeath_timelimit 2 + timelimit 12 + max_players 10 + phase_shift_drop_flag 1 + ctf_flag_return_time 1 + color "0 119 245 255" + + gamemode_score_hint #GAMEMODE_SCORE_HINT_CTF + gamemode_bullet_001 #GAMEMODE_BULLET_CTF_001 + gamemode_bullet_002 #GAMEMODE_BULLET_CTF_002 + gamemode_bullet_003 #GAMEMODE_BULLET_CTF_003 + gamemode_bullet_004 #GAMEMODE_BULLET_CTF_004 + gamemode_bullet_005 #GAMEMODE_BULLET_CTF_005 + } + } + ffa + { + inherit defaults + vars + { + name #PL_ffa + lobbytitle #PL_ffa_lobby + description #PL_ffa_desc + hint #PL_ffa_hint + abbreviation #PL_ffa_abbr + image ffa + at_turrets_enabled 1 + max_players 12 + max_teams 12 + scorelimit 25 + waiting_for_players_countdown_seconds 1 + waiting_for_players_percentage_desired 10 + color "246 127 1 255" + + gamemode_score_hint #GAMEMODE_SCORE_HINT_FFA + gamemode_bullet_001 #GAMEMODE_BULLET_FFA_001 + gamemode_bullet_002 #GAMEMODE_BULLET_FFA_002 + gamemode_bullet_003 #GAMEMODE_BULLET_FFA_003 + gamemode_bullet_004 #GAMEMODE_BULLET_FFA_004 + gamemode_bullet_005 #GAMEMODE_BULLET_FFA_005 + } + } + fra + { + inherit defaults + vars + { + name #PL_fra + lobbytitle #PL_fra_lobby + description #PL_fra_desc + hint #PL_fra_hint + abbreviation #PL_fra_abbr + image ffa + at_turrets_enabled 1 + max_players 12 + max_teams 12 + scorelimit 35 + waiting_for_players_countdown_seconds 1 + waiting_for_players_percentage_desired 10 + earn_meter_tick_disabled 1 + color "254 184 0 255" + + gamemode_score_hint #GAMEMODE_SCORE_HINT_FFA + gamemode_bullet_001 #GAMEMODE_BULLET_FFA_001 + gamemode_bullet_002 #GAMEMODE_BULLET_FFA_002 + gamemode_bullet_003 #GAMEMODE_BULLET_FFA_003 + gamemode_bullet_004 #GAMEMODE_BULLET_FFA_004 + gamemode_bullet_005 #GAMEMODE_BULLET_FFA_005 + } + } + lts + { + inherit defaults + vars + { + name #PL_last_titan_standing + lobbytitle #PL_last_titan_standing_lobby + description #PL_last_titan_standing_desc + hint #PL_last_titan_standing_hint + abbreviation #PL_last_titan_standing_abbr + image lts + pick_loadout_extension 20.0 + pick_loadout_every_round 1 + pick_loadout_warp_sound 0 + tts_menu_join_in_progress 0 + tts_menu_show_score 1 + loadout_grace_period 0.0 + max_players 10 + roundscorelimit 3 + roundtimelimit 3.0 + scorelimit 0 + timelimit 3.0 + waiting_for_players_percentage_desired 100 + waiting_for_players_countdown_seconds 30 + maxExtraRounds 3 + color "128 128 128 255" + + idlekick_minutes 1 + + gamemode_score_hint #GAMEMODE_SCORE_HINT_LTS + gamemode_bullet_001 #GAMEMODE_BULLET_LTS_001 + gamemode_bullet_002 #GAMEMODE_BULLET_LTS_002 + gamemode_bullet_003 #GAMEMODE_BULLET_LTS_003 + gamemode_bullet_004 #GAMEMODE_BULLET_LTS_004 + gamemode_bullet_005 #GAMEMODE_BULLET_LTS_005 + } + } + ps + { + inherit defaults + vars + { + name #PL_pilot_skirmish + lobbytitle #PL_pilot_skirmish_lobby + description #PL_pilot_skirmish_desc + hint #PL_pilot_skirmish_hint + abbreviation #PL_pilot_skirmish_abbr + image ps + scorelimit 100 + timelimit 10 + max_players 16 + spawn_zone_enabled 1 + color "193 23 23 255" + + gamemode_score_hint #GAMEMODE_SCORE_HINT_PS + gamemode_bullet_001 #GAMEMODE_BULLET_PS_001 + gamemode_bullet_002 #GAMEMODE_BULLET_PS_002 + gamemode_bullet_003 #GAMEMODE_BULLET_PS_003 + gamemode_bullet_004 #GAMEMODE_BULLET_PS_004 + gamemode_bullet_005 #GAMEMODE_BULLET_PS_005 + } + } + tdm + { + inherit defaults + vars + { + name #PL_pilot_hunter + lobbytitle #PL_pilot_hunter_lobby + description #PL_pilot_hunter_desc + hint #PL_pilot_hunter_hint + abbreviation #PL_pilot_hunter_abbr + image tdm + scorelimit 75 + suddendeath_timelimit 2 + timelimit 10 + max_players 12 + gm_hardcore_settings 0 + spawn_zone_enabled 1 + color "60 183 0 255" + + gamemode_score_hint #GAMEMODE_SCORE_HINT_TDM + gamemode_bullet_001 #GAMEMODE_BULLET_TDM_001 + gamemode_bullet_002 #GAMEMODE_BULLET_TDM_002 + gamemode_bullet_003 #GAMEMODE_BULLET_TDM_003 + gamemode_bullet_004 #GAMEMODE_BULLET_TDM_004 + gamemode_bullet_005 #GAMEMODE_BULLET_TDM_005 + } + } + ttdm + { + inherit defaults + vars + { + name #PL_titan_brawl + lobbytitle #PL_titan_brawl_lobby + description #PL_titan_brawl_desc + hint #PL_titan_brawl_hint + abbreviation #PL_titan_brawl_abbr + image lts + scorelimit 30 + suddendeath_timelimit 2 + timelimit 10 + max_players 10 + respawn_delay 10 + color "23 193 23 255" + + gamemode_score_hint #GAMEMODE_SCORE_HINT_TTDM + gamemode_bullet_001 #GAMEMODE_BULLET_TTDM_001 + gamemode_bullet_002 #GAMEMODE_BULLET_TTDM_002 + gamemode_bullet_003 #GAMEMODE_BULLET_TTDM_003 + gamemode_bullet_004 #GAMEMODE_BULLET_TTDM_004 + gamemode_bullet_005 #GAMEMODE_BULLET_TTDM_005 + } + } + aitdm + { + inherit defaults + vars + { + name "#PL_aitdm" + lobbytitle #PL_aitdm_lobby + description #PL_aitdm_desc + hint #PL_aitdm_hint + abbreviation #PL_aitdm_abbr + scorelimit 650 + suddendeath_timelimit 2 + timelimit 15 + max_players 12 + gm_hardcore_settings 0 + spawn_zone_enabled 0 + earn_meter_tick_frac 0 + escalation_enabled 1 + skyshow_enabled 1 + riff_allow_npcs 1 + enable_spectre_hacking 1 + color "88 220 151 255" + + gamemode_score_hint #GAMEMODE_SCORE_HINT_TDM + gamemode_bullet_001 #GAMEMODE_BULLET_TDM_001 + gamemode_bullet_002 #GAMEMODE_BULLET_TDM_002 + gamemode_bullet_003 #GAMEMODE_BULLET_TDM_003 + gamemode_bullet_004 #GAMEMODE_BULLET_TDM_004 + gamemode_bullet_005 #GAMEMODE_BULLET_TDM_005 + } + } + mfd + { + inherit defaults + vars + { + name #PL_marked_for_death + lobbytitle #PL_marked_for_death_lobby + description #PL_marked_for_death_desc + hint #PL_marked_for_death_hint + abbreviation #PL_marked_for_death_abbr + image mfd + scorelimit 10 + timelimit 12 + max_players 12 + gm_hardcore_settings 0 + spawn_zone_enabled 1 + earn_meter_tick_rate 3.6 + earn_meter_pilot_multiplier 0.8 + color "0 245 119 255" + + gamemode_score_hint #GAMEMODE_SCORE_HINT_MFD + } + } + speedball + { + inherit defaults + vars + { + name #PL_live_fire + lobbytitle #PL_live_fire_lobby + description #PL_live_fire_desc + hint #PL_speedball_hint + abbreviation #PL_live_fire_abbr + image lf + scorelimit 5 + roundscorelimit 5 + roundtimelimit 1.0 + suddendeath_timelimit 0 + timelimit 12 + max_players 12 + maxExtraRounds 3 + phase_shift_drop_flag 1 + ctf_flag_return_time 1 + color "127 246 1 255" + + idlekick_minutes 1 + idlekick_min_alive_seconds 20 + + gamemode_score_hint #GAMEMODE_SCORE_HINT_SPEEDBALL + gamemode_bullet_001 #GAMEMODE_BULLET_PS_001 + gamemode_bullet_002 #GAMEMODE_BULLET_PS_002 + gamemode_bullet_003 #GAMEMODE_BULLET_PS_003 + gamemode_bullet_004 #GAMEMODE_BULLET_PS_004 + gamemode_bullet_005 #GAMEMODE_BULLET_PS_005 + } + } + fd + { + inherit defaults + vars + { + hint #PL_fd_desc + ingame_menu_fd_mode 1 + pick_loadout_extension 30.0 + pick_loadout_every_round 0 + pick_loadout_warp_sound 1 + tts_menu_join_in_progress 1 + tts_menu_show_score 0 + roundscorelimit 3 + roundtimelimit 60.0 + em_player_fast_kills 12 + em_player_kills 15 + max_players 4 + riff_allow_npcs 1 + scorelimit 2500 + suddendeath_timelimit 2 + titan_build_time 240 + titan_rebuild_time 240 + spawn_zone_enabled 1 + respawn_delay 4 + timelimit 30 + skyshow_enabled 1 + max_teams 1 + riff_wave_spawn 4 + wave_spawn_interval 25 + boost_store_mode fd + titan_loadout_experiment 0 + use_new_tacticals 0 + earn_meter_tick_frac 0 + ai_attack_tethers 0 + waiting_for_players_percentage_desired 100 + fd_titan_health_adjust 0 + fd_reaper_health_adjust 0 + fd_mortar_spectre_setup_time 5 + fd_grunt_at_weapon_users 0 + fd_grunt_shield_captains 0 + fd_player_damage_scalar 1.0 + fd_harvester_health 25000 + fd_harvester_shield 6000 + fd_harvester_regen_delay 10.0 + fd_harvester_regen_time 10.0 + fd_money_per_round 600 + fd_wave_buy_time 60.0 + fd_pro_titan_shields 0 + fd_at_unlimited_ammo 1 + enable_match_progress_update 0 + color "0 184 254 255" + aegis_upgrades 1 + + riff_team_share_earn_meter 2 + riff_team_share_earn_meter_scale 0.25 + earn_meter_titan_multiplier 0.5 + earn_meter_pilot_multiplier 0.5 + + override_boost_cost_burnmeter_harvester_shield -1 + override_boost_cost_burnmeter_arc_trap -1 + override_boost_cost_burnmeter_ap_turret_weapon_infinite -1 + override_boost_cost_burnmeter_rodeo_grenade -1 + override_boost_cost_burnmeter_amped_weapons_permanent -1 + override_boost_cost_burnmeter_instant_battery -1 + + gamemode_score_hint #GAMEMODE_SCORE_HINT_FD + gamemode_bullet_001 #GAMEMODE_BULLET_FD_001 + gamemode_bullet_002 #GAMEMODE_BULLET_FD_002 + gamemode_bullet_003 #GAMEMODE_BULLET_FD_003 + gamemode_bullet_004 #GAMEMODE_BULLET_FD_004 + gamemode_bullet_005 #GAMEMODE_BULLET_FD_005 + } + maps + { + mp_forwardbase_kodai 1 + mp_black_water_canal 1 + mp_homestead 1 + mp_wargames 1 + mp_rise 1 + mp_thaw 1 + mp_drydock 1 + mp_angel_city 1 + } + } + fd_easy + { + inherit fd + vars + { + name #PL_fd_easy + lobbytitle #PL_fd_easy_lobby + description #PL_fd_easy_desc + abbreviation #FD_DIFFICULTY_EASY + + image fd_easy + fd_difficulty 0 + boost_store_team_reserve 1 + fd_titan_health_adjust -5000 + fd_reaper_health_adjust -2000 + fd_mortar_spectre_setup_time 10 + fd_grunt_at_weapon_users 0 + fd_grunt_shield_captains 0 + fd_player_damage_scalar 1.0 + fd_money_per_round 700 + fd_pro_titan_shields 0 + fd_harvester_shield 6000 + fd_at_unlimited_ammo 1 + + earn_meter_pilot_multiplier 0.7 + } + } + fd_normal + { + inherit fd + vars + { + name #PL_fd_normal + lobbytitle #PL_fd_normal_lobby + description #PL_fd_normal_desc + abbreviation #FD_DIFFICULTY_NORMAL + image fd_normal + fd_difficulty 1 + boost_store_team_reserve 1 + fd_titan_health_adjust -2500 + fd_reaper_health_adjust -1000 + fd_mortar_spectre_setup_time 10 + fd_grunt_at_weapon_users 0 + fd_grunt_shield_captains 0 + fd_player_damage_scalar 1.0 + fd_money_per_round 700 + fd_pro_titan_shields 0 + fd_harvester_shield 6000 + fd_at_unlimited_ammo 1 + + earn_meter_pilot_multiplier 0.7 + } + } + fd_hard + { + inherit fd + vars + { + name #PL_fd_hard + lobbytitle #PL_fd_hard_lobby + description #PL_fd_hard_desc + abbreviation #FD_DIFFICULTY_HARD + image fd_hard + fd_difficulty 2 + boost_store_team_reserve 1 + fd_titan_health_adjust 0 + fd_reaper_health_adjust 0 + fd_mortar_spectre_setup_time 5 + fd_grunt_at_weapon_users 2 + fd_grunt_shield_captains 0 + fd_player_damage_scalar 1.5 + fd_money_per_round 600 + fd_pro_titan_shields 0 + fd_harvester_shield 5000 + fd_at_unlimited_ammo 1 + + earn_meter_pilot_multiplier 0.7 + } + } + fd_master + { + inherit fd + vars + { + name #PL_fd_master + lobbytitle #PL_fd_master_lobby + description #PL_fd_master_desc + abbreviation #FD_DIFFICULTY_MASTER + image fd_master + fd_difficulty 3 + boost_store_team_reserve 1 + + fd_titan_health_adjust 0 + fd_reaper_health_adjust 0 + fd_mortar_spectre_setup_time 5 + fd_grunt_at_weapon_users 4 + fd_grunt_shield_captains 1 + fd_player_damage_scalar 2.5 + fd_money_per_round 600 + fd_pro_titan_shields 1 + fd_harvester_shield 4000 + fd_at_unlimited_ammo 0 + + earn_meter_pilot_multiplier 0.7 + } + } + fd_insane + { + inherit fd + vars + { + name #PL_fd_insane + lobbytitle #PL_fd_insane_lobby + description #PL_fd_insane_desc + abbreviation #FD_DIFFICULTY_INSANE + image fd_insane + fd_difficulty 4 + boost_store_team_reserve 1 + riff_minimap_state 1 + roundscorelimit 1 + + fd_titan_health_adjust 0 + fd_reaper_health_adjust 0 + fd_mortar_spectre_setup_time 5 + fd_grunt_at_weapon_users 4 + fd_grunt_shield_captains 1 + fd_player_damage_scalar 2.5 + fd_money_per_round 600 + fd_pro_titan_shields 1 + fd_harvester_shield 4000 + fd_at_unlimited_ammo 0 + + earn_meter_pilot_multiplier 0.5 + } + } + +// temp before we have a modular way of doing this in the sdk: custom shit lol + sbox + { + inherit defaults + vars + { + name #PL_sbox + lobbytitle #PL_sbox_lobby + description #PL_sbox_desc + abbreviation #PL_sbox_abbr + + max_teams 1 + classic_mp 0 + } + } + fw + { + inherit defaults + vars + { + name #PL_fw + lobbytitle #PL_fw_lobby + description #PL_fw_desc + abbreviation #PL_fw_abbr + + max_players 16 + max_teams 2 + classic_mp 1 + scorelimit 100 // score is a percentage so ofc need max to be 100% + } + } + gg + { + inherit defaults + vars + { + name #PL_gg + lobbytitle #PL_gg_lobby + description #PL_gg_desc + hint #PL_gg_hint + abbreviation #PL_gg_abbr + max_players 12 + max_teams 12 + classic_mp 1 + + scorelimit 21 // temp until we have a way of dynamically setting non-default scorelimit in code + + gamemode_score_hint #GAMEMODE_SCORE_HINT_FFA + gamemode_bullet_001 #GAMEMODE_BULLET_FFA_001 + gamemode_bullet_002 #GAMEMODE_BULLET_FFA_002 + gamemode_bullet_003 #GAMEMODE_BULLET_FFA_003 + gamemode_bullet_004 #GAMEMODE_BULLET_FFA_004 + gamemode_bullet_005 #GAMEMODE_BULLET_FFA_005 + } + } + tt + { + inherit defaults + vars + { + name #PL_tt + lobbytitle #PL_tt_lobby + description #PL_tt_desc + hint #PL_tt_hint + abbreviation #PL_tt_abbr + max_players 12 + max_teams 2 + classic_mp 1 + + scorelimit 20 + + gamemode_score_hint #GAMEMODE_SCORE_HINT_TDM + } + } + inf + { + inherit defaults + vars + { + name #PL_inf + lobbytitle #PL_inf_lobby + description #PL_inf_desc + hint #PL_inf_hint + abbreviation #PL_inf_abbr + max_players 12 + max_teams 2 + classic_mp 1 + + gamemode_score_hint #GAMEMODE_SCORE_HINT_TDM + } + } + arena + { + inherit defaults + vars + { + name #PL_arena + lobbytitle #PL_arena_lobby + description #PL_arena_desc + hint #PL_arena_hint + abbreviation #PL_arena_abbr + max_players 6 + max_teams 2 + classic_mp 1 + boost_store_mode arena + + gamemode_score_hint #GAMEMODE_SCORE_HINT_TDM + } + } + kr + { + inherit defaults + vars + { + name #PL_kr + lobbytitle #PL_kr_lobby + description #PL_kr_desc + hint #PL_kr_hint + abbreviation #PL_kr_abbr + + max_players 16 + max_teams 16 + classic_mp 1 + timelimit 7.5 + scorelimit 99999 // arbitrarily high number + + gamemode_score_hint #GAMEMODE_SCORE_HINT_TDM + } + } + fastball + { + inherit defaults + vars + { + name #PL_fastball + lobbytitle #PL_fastball_lobby + description #PL_fastball_desc + hint #PL_fastball_hint + abbreviation #PL_fastball_abbr + + max_players 16 + max_teams 2 + classic_mp 1 + scorelimit 5 + timelimit 2 + roundtimelimit 2 + roundscorelimit 5 + + gamemode_score_hint #GAMEMODE_SCORE_HINT_TDM + } + } + + +// END OF MP GAMEMODES LINE ---------------------------------------------------- + solo + { + inherit defaults + maps + { + sp_beacon 1 + } + } + } + Playlists + { + defaults + { + vars + { + name #PL_default_name + lobbytitle #PL_default_lobbytitle + description #PL_default_description + image default + visible 0 + } + } + rise_247 + { + inherit defaults + vars + { + name "#PL_rise" + lobbytitle #PL_rise_lobby + description #PL_rise_desc + abbreviation #PL_rise_abbr + image aitdm + visible 0 + } + gamemodes + { + ctf + { + maps + { + mp_rise 1 + } + } + aitdm + { + maps + { + mp_rise 1 + } + } + cp + { + vars + { + + } + + maps + { + mp_rise 1 + } + } + at + { + maps + { + mp_rise 1 + } + } + lts + { + maps + { + mp_rise 1 + } + } + } + } + aitdm + { + inherit defaults + vars + { + name "#PL_aitdm" + lobbytitle #PL_aitdm_lobby + description #PL_aitdm_desc + abbreviation #PL_aitdm_abbr + image aitdm + mixtape_slot 0 + visible 1 + } + gamemodes + { + aitdm + { + } + } + } + amped_tacticals_aitdm + { + inherit defaults + vars + { + name "#PL_amped_tacticals" + lobbytitle #PL_amped_tacticals_lobby + description #PL_amped_tacticals_desc + abbreviation #PL_amped_tacticals_abbr + image aitdm + //mixtape_slot 0 + visible 0 + featured_mode_amped_tacticals 1 + } + gamemodes + { + aitdm + { + } + } + } + tactikill_aitdm + { + inherit defaults + vars + { + name "#PL_tactikill" + lobbytitle #PL_tactikill_lobby + description #PL_tactikill_desc + abbreviation #PL_tactikill_abbr + image aitdm + //mixtape_slot 0 + visible 0 + featured_mode_tactikill 1 + } + gamemodes + { + aitdm + { + } + } + } + grapple_aitdm + { + inherit defaults + vars + { + name "#PL_all_grapple" + lobbytitle #PL_all_grapple_lobby + description #PL_all_grapple_desc + abbreviation #PL_all_grapple_abbr + image aitdm + //mixtape_slot 0 + visible 0 + featured_mode_all_grapple 1 + } + gamemodes + { + aitdm + { + } + } + } + phase_aitdm + { + inherit defaults + vars + { + name "#PL_all_phase" + lobbytitle #PL_all_phase_lobby + description #PL_all_phase_desc + abbreviation #PL_all_phase_abbr + image aitdm + mixtape_promo_slot 8 + visible 1 + featured_mode_all_phase 1 + } + gamemodes + { + aitdm + { + } + } + } + spicy_aitdm + { + inherit defaults + vars + { + name "#PL_all_spicy" + lobbytitle #PL_all_spicy_lobby + description #PL_all_spicy_desc + abbreviation #PL_all_spicy_abbr + image aitdm + mixtape_promo_slot 7 + visible 1 + featured_mode_all_ticks 1 + } + gamemodes + { + aitdm + { + } + } + } + at + { + inherit defaults + vars + { + name #PL_attrition + lobbytitle #PL_attrition_lobby + description #PL_attrition_desc + abbreviation #PL_attrition_abbr + image at + mixtape_slot 1 + visible 1 + } + gamemodes + { + at + { + } + } + } + cp + { + inherit defaults + vars + { + name #PL_hardpoint + lobbytitle #PL_hardpoint_lobby + description #PL_hardpoint_desc + abbreviation #PL_hardpoint_abbr + image cp + mixtape_slot 2 + visible 1 + } + gamemodes + { + cp + { + } + } + } + lts + { + inherit defaults + vars + { + name #PL_last_titan_standing + lobbytitle #PL_last_titan_standing_lobby + description #PL_last_titan_standing_desc + abbreviation #PL_last_titan_standing_abbr + image lts + mixtape_slot 3 + visible 1 + } + gamemodes + { + lts + { + } + } + } + alts + { + inherit defaults + vars + { + name #PL_aegis_last_titan_standing + lobbytitle #PL_aegis_last_titan_standing_lobby + description #PL_aegis_last_titan_standing_desc + abbreviation #PL_aegis_last_titan_standing_abbr + image lts + visible 0 + aegis_upgrades 1 + ingame_menu_fd_mode 1 + } + gamemodes + { + lts + { + } + } + } + turbo_lts + { + inherit defaults + vars + { + name #PL_turbo_last_titan_standing + lobbytitle #PL_turbo_last_titan_standing_lobby + description #PL_turbo_last_titan_standing_desc + abbreviation #PL_turbo_last_titan_standing_abbr + image lts + mixtape_promo_slot 0 + visible 1 + featured_mode_turbo_titans 1 + earn_meter_titan_multiplier 2.0 + } + gamemodes + { + lts + { + } + } + } + ctf + { + inherit defaults + vars + { + name #PL_capture_the_flag + lobbytitle #PL_capture_the_flag_lobby + description #PL_capture_the_flag_desc + abbreviation #PL_capture_the_flag_abbr + image ctf + mixtape_slot 4 + mixtape_timeout 120 + visible 1 + } + gamemodes + { + ctf + { + vars + { + scorelimit 5 + } + + maps + { + mp_complex3 1 + mp_drydock 2 + mp_glitch 1 + mp_homestead 2 + mp_eden 2 + mp_forwardbase_kodai 1 + mp_black_water_canal 2 + mp_glitch 1 + mp_angel_city 1 + mp_colony02 1 + mp_relic02 1 + mp_grave 2 + mp_homestead 2 + mp_drydock 2 + mp_glitch 1 + mp_thaw 1 + mp_eden 2 + mp_black_water_canal 2 + mp_glitch 1 + mp_relic02 1 + } + } + } + } + ps + { + inherit defaults + vars + { + name #PL_pilot_skirmish + lobbytitle #PL_pilot_skirmish_lobby + description #PL_pilot_skirmish_desc + abbreviation #PL_pilot_skirmish_abbr + image ps + mixtape_slot 5 + visible 1 + } + gamemodes + { + ps + { + vars + { + + } + + maps + { + mp_black_water_canal 1 + mp_complex3 1 + mp_crashsite3 1 + mp_drydock 1 + mp_eden 1 + mp_forwardbase_kodai 1 + mp_angel_city 1 + mp_colony02 1 + mp_relic02 1 + mp_grave 1 + mp_thaw 1 + mp_homestead 1 + mp_glitch 1 + } + } + } + } + ttdm + { + inherit defaults + vars + { + name #PL_titan_brawl + lobbytitle #PL_titan_brawl_lobby + description #PL_titan_brawl_desc + abbreviation #PL_titan_brawl_abbr + image ttdm + visible 1 + max_players 10 + scorelimit 30 + mixtape_slot 7 + boosts_enabled 1 + respawn_delay 10 + } + gamemodes + { + ttdm + { + maps + { + mp_glitch 1 + mp_colony02 1 + mp_wargames 1 + mp_eden 1 + mp_drydock 1 + mp_black_water_canal 1 + mp_thaw 1 + mp_homestead 1 + mp_forwardbase_kodai 1 + mp_angel_city 1 + mp_grave 1 + mp_rise 1 + } + } + } + } + turbo_ttdm + { + inherit defaults + vars + { + name #PL_titan_brawl_turbo + lobbytitle #PL_titan_brawl_turbo_lobby + description #PL_titan_brawl_turbo_desc + abbreviation #PL_titan_brawl_turbo_abbr + image ttdm + visible 1 + max_players 10 + scorelimit 30 + mixtape_slot 8 + boosts_enabled 1 + respawn_delay 10 + + featured_mode_turbo_titans 1 + earn_meter_titan_multiplier 2.0 + } + gamemodes + { + ttdm + { + maps + { + mp_glitch 1 + mp_colony02 1 + mp_wargames 1 + mp_eden 1 + mp_drydock 1 + mp_black_water_canal 1 + mp_thaw 1 + mp_homestead 1 + mp_forwardbase_kodai 1 + mp_angel_city 1 + mp_grave 1 + mp_rise 1 + } + } + } + } + attdm + { + inherit defaults + vars + { + name #PL_aegis_titan_brawl + lobbytitle #PL_aegis_titan_brawl_lobby + description #PL_aegis_titan_brawl_desc + abbreviation #PL_aegis_titan_brawl_abbr + image ttdm + visible 0 + max_players 10 + scorelimit 30 +// mixtape_promo_slot 0 + boosts_enabled 1 + respawn_delay 10 + aegis_upgrades 1 + ingame_menu_fd_mode 1 + } + gamemodes + { + ttdm + { + maps + { + mp_glitch 1 + mp_colony02 1 + mp_wargames 1 + mp_eden 1 + mp_drydock 1 + mp_black_water_canal 1 + mp_thaw 1 + mp_homestead 1 + mp_forwardbase_kodai 1 + mp_angel_city 1 + mp_grave 1 + mp_rise 1 + } + } + } + } + tdm + { + inherit defaults + vars + { + name #PL_pilot_hunter + lobbytitle #PL_pilot_hunter_lobby + description #PL_pilot_hunter_desc + abbreviation #PL_pilot_hunter_abbr + image tdm + visible 1 + max_players 16 + //mixtape_slot ## + } + gamemodes + { + tdm {} + } + } + ffa + { + inherit defaults + vars + { + name #PL_ffa + lobbytitle #PL_ffa_lobby + description #PL_ffa_desc + abbreviation #PL_ffa_abbr + image ffa + //mixtape_slot 7 + mixtape_timeout 120 + visible 0 + } + gamemodes + { + ffa + { + } + } + } + fra + { + inherit defaults + vars + { + name #PL_fra + lobbytitle #PL_fra_lobby + description #PL_fra_desc + abbreviation #PL_fra_abbr + image ffa + //mixtape_promo_slot 7 + visible 0 + } + gamemodes + { + fra + { + } + } + } + coliseum + { + inherit defaults + vars + { + name #PL_coliseum + lobbytitle #PL_coliseum_lobby + description #PL_coliseum_desc + image coliseum + mixtape_promo_slot 4 + visible 1 + } + gamemodes + { + coliseum {} + } + } + private_match + { + inherit defaults + vars + { + name #PL_private_match + lobbytitle #PL_private_match_lobby + description #PL_private_match_desc + image private_match + + max_players 16 + lobby_countdown 15 + ranking_supported 0 + mixtape_promo_slot 1 + double_xp_enabled 0 + visible 1 + + // default custom settings + match_visibility 2 + pilot_health_multiplier 1.0 + earn_meter_pilot_multiplier 1.0 + earn_meter_pilot_overdrive 1 + earn_meter_titan_multiplier 1.0 + } + gamemodes + { + aitdm + { + maps + { + mp_forwardbase_kodai 1 + mp_grave 1 + mp_homestead 1 + mp_thaw 1 + mp_black_water_canal 1 + mp_eden 1 + mp_drydock 1 + mp_crashsite3 1 + mp_complex3 1 + mp_angel_city 1 + mp_colony02 1 + mp_glitch 1 + mp_relic02 1 + mp_wargames 1 + mp_rise 1 + } + } + + tdm + { + maps + { + mp_forwardbase_kodai 1 + mp_grave 1 + mp_homestead 1 + mp_thaw 1 + mp_black_water_canal 1 + mp_eden 1 + mp_drydock 1 + mp_crashsite3 1 + mp_complex3 1 + mp_angel_city 1 + mp_colony02 1 + mp_glitch 1 + mp_relic02 1 + mp_wargames 1 + mp_rise 1 + } + } + + cp + { + maps + { + mp_forwardbase_kodai 1 + mp_grave 1 + mp_homestead 1 + mp_thaw 1 + mp_black_water_canal 1 + mp_eden 1 + mp_drydock 1 + mp_crashsite3 1 + mp_complex3 1 + mp_angel_city 1 + mp_colony02 1 + mp_glitch 1 + mp_lf_stacks 1 + mp_lf_deck 1 + mp_lf_meadow 1 + mp_lf_traffic 1 + mp_lf_township 1 + mp_lf_uma 1 + mp_relic02 1 + mp_wargames 1 + mp_rise 1 + } + } + + at + { + maps + { + mp_forwardbase_kodai 1 + mp_grave 1 + mp_homestead 1 + mp_thaw 1 + mp_black_water_canal 1 + mp_eden 1 + mp_drydock 1 + mp_crashsite3 1 + mp_complex3 1 + mp_angel_city 1 + mp_colony02 1 + mp_glitch 1 + mp_relic02 1 + mp_wargames 1 + mp_rise 1 + } + } + + ctf + { + maps + { + mp_forwardbase_kodai 1 + mp_grave 1 + mp_homestead 1 + mp_thaw 1 + mp_black_water_canal 1 + mp_eden 1 + mp_drydock 1 + mp_crashsite3 1 + mp_complex3 1 + mp_angel_city 1 + mp_colony02 1 + mp_glitch 1 + mp_lf_stacks 1 + mp_lf_deck 1 + mp_lf_meadow 1 + mp_lf_traffic 1 + mp_lf_township 1 + mp_lf_uma 1 + mp_relic02 1 + mp_wargames 1 + mp_rise 1 + } + } + + lts + { + maps + { + mp_forwardbase_kodai 1 + mp_grave 1 + mp_homestead 1 + mp_thaw 1 + mp_black_water_canal 1 + mp_eden 1 + mp_drydock 1 + mp_crashsite3 1 + mp_complex3 1 + mp_angel_city 1 + mp_colony02 1 + mp_glitch 1 + mp_relic02 1 + mp_wargames 1 + mp_rise 1 + } + } + + ps + { + maps + { + mp_forwardbase_kodai 1 + mp_grave 1 + mp_homestead 1 + mp_thaw 1 + mp_black_water_canal 1 + mp_eden 1 + mp_drydock 1 + mp_crashsite3 1 + mp_complex3 1 + mp_angel_city 1 + mp_colony02 1 + mp_glitch 1 + mp_lf_stacks 1 + mp_lf_deck 1 + mp_lf_meadow 1 + mp_lf_traffic 1 + mp_lf_township 1 + mp_lf_uma 1 + mp_relic02 1 + mp_wargames 1 + mp_rise 1 + } + } + + speedball + { + maps + { + mp_forwardbase_kodai 1 + mp_grave 1 + mp_homestead 1 + mp_thaw 1 + mp_black_water_canal 1 + mp_eden 1 + mp_drydock 1 + mp_crashsite3 1 + mp_complex3 1 + mp_angel_city 1 + mp_colony02 1 + mp_glitch 1 + mp_lf_stacks 1 + mp_lf_deck 1 + mp_lf_meadow 1 + mp_lf_traffic 1 + mp_lf_township 1 + mp_lf_uma 1 + mp_relic02 1 + mp_wargames 1 + mp_rise 1 + } + } + + mfd + { + maps + { + mp_forwardbase_kodai 1 + mp_grave 1 + mp_homestead 1 + mp_thaw 1 + mp_black_water_canal 1 + mp_eden 1 + mp_drydock 1 + mp_crashsite3 1 + mp_complex3 1 + mp_angel_city 1 + mp_colony02 1 + mp_glitch 1 + mp_lf_stacks 1 + mp_lf_deck 1 + mp_lf_meadow 1 + mp_lf_traffic 1 + mp_lf_township 1 + mp_lf_uma 1 + mp_relic02 1 + mp_wargames 1 + mp_rise 1 + } + } + + ttdm + { + maps + { + mp_forwardbase_kodai 1 + mp_grave 1 + mp_homestead 1 + mp_thaw 1 + mp_black_water_canal 1 + mp_eden 1 + mp_drydock 1 + mp_crashsite3 1 + mp_complex3 1 + mp_angel_city 1 + mp_colony02 1 + mp_glitch 1 + mp_relic02 1 + mp_wargames 1 + mp_rise 1 + } + } + + fd_easy + { + maps + { + mp_forwardbase_kodai 1 + mp_black_water_canal 1 + mp_homestead 1 + mp_wargames 1 + mp_rise 1 + mp_thaw 1 + mp_drydock 1 + mp_angel_city 1 + } + } + + fd_normal + { + maps + { + mp_forwardbase_kodai 1 + mp_black_water_canal 1 + mp_homestead 1 + mp_wargames 1 + mp_rise 1 + mp_thaw 1 + mp_drydock 1 + mp_angel_city 1 + } + } + + fd_hard + { + maps + { + mp_forwardbase_kodai 1 + mp_black_water_canal 1 + mp_homestead 1 + mp_wargames 1 + mp_rise 1 + mp_thaw 1 + mp_drydock 1 + mp_angel_city 1 + } + } + + fd_master + { + maps + { + mp_forwardbase_kodai 1 + mp_black_water_canal 1 + mp_homestead 1 + mp_wargames 1 + mp_rise 1 + mp_thaw 1 + mp_drydock 1 + mp_angel_city 1 + } + } + + fd_insane + { + maps + { + mp_forwardbase_kodai 1 + mp_black_water_canal 1 + mp_homestead 1 + mp_wargames 1 + mp_rise 1 + mp_thaw 1 + mp_drydock 1 + mp_angel_city 1 + } + } + } + } + nitro_mixtape + { + inherit defaults + vars + { + name #PL_nitro_mixtape + lobbytitle #PL_nitro_mixtape_lobby + description #PL_nitro_mixtape_desc + abbreviation #PL_nitro_mixtape_abbr + image lf + visible 1 + scorelimit 5 + //mixtape_promo_slot 0 + boosts_enabled 1 + phase_shift_drop_flag 1 + ctf_flag_return_time 1 + } + gamemodes + { + ctf + { + maps + { + mp_lf_stacks 1 + mp_lf_township 1 + mp_lf_uma 1 + mp_lf_traffic 1 + mp_lf_deck 1 + mp_lf_meadow 1 + } + } + mfd + { + maps + { + mp_lf_stacks 1 + mp_lf_township 1 + mp_lf_uma 1 + mp_lf_traffic 1 + mp_lf_deck 1 + mp_lf_meadow 1 + } + } + ps + { + maps + { + mp_lf_stacks 1 + mp_lf_township 1 + mp_lf_uma 1 + mp_lf_traffic 1 + mp_lf_deck 1 + mp_lf_meadow 1 + } + } + } + } + nitro_ffa + { + inherit defaults + vars + { + name #PL_nitro_ffa + lobbytitle #PL_nitro_ffa_lobby + description #PL_nitro_ffa_desc + abbreviation #PL_nitro_ffa_abbr + image lf + visible 0 + scorelimit 5 +// mixtape_promo_slot 0 + boosts_enabled 1 + phase_shift_drop_flag 1 + max_players 6 + max_teams 6 + } + gamemodes + { + ffa + { + maps + { + mp_lf_stacks 1 + mp_lf_township 1 + mp_lf_uma 1 + mp_lf_traffic 1 + mp_lf_deck 1 + mp_lf_meadow 1 + } + } + } + } + ctf_lf + { + inherit defaults + vars + { + name #PL_ctf_lf + lobbytitle #PL_ctf_lf_lobby + description #PL_ctf_lf_desc + abbreviation #PL_ctf_lf_abbr + image lf + visible 0 + scorelimit 5 + //mixtape_promo_slot 8 + boosts_enabled 1 + phase_shift_drop_flag 1 + ctf_flag_return_time 1 + } + gamemodes + { + ctf + { + maps + { + mp_lf_stacks 1 + mp_lf_deck 1 + mp_lf_meadow 1 + mp_lf_traffic 1 + mp_glitch 1 + mp_lf_township 1 + mp_lf_uma 1 + } + } + } + } + lf + { + inherit defaults + vars + { + name #PL_live_fire + lobbytitle #PL_live_fire_lobby + description #PL_live_fire_desc + abbreviation #PL_live_fire_abbr + image lf + visible 1 + scorelimit 50 + mixtape_slot 6 + } + gamemodes + { + speedball + { + maps + { + mp_lf_stacks 1 + mp_lf_township 1 + mp_lf_uma 1 + mp_lf_traffic 1 + mp_lf_deck 1 + mp_lf_meadow 1 + } + } + } + } + rocket_lf + { + inherit defaults + vars + { + name #PL_rocket_arena + lobbytitle #PL_rocket_arena_lobby + description #PL_rocket_arena_desc + abbreviation #PL_rocket_arena_abbr + image lf + visible 1 + scorelimit 50 + roundtimelimit 2.0 + mixtape_promo_slot 6 + featured_mode_rocket_arena 1 + boosts_enabled 1 + } + gamemodes + { + speedball + { + maps + { + mp_lf_stacks 1 + mp_lf_township 1 + mp_lf_uma 1 + mp_lf_traffic 1 + mp_lf_deck 1 + mp_lf_meadow 1 + } + } + } + } + holopilot_lf + { + inherit defaults + vars + { + name #PL_all_holopilot + lobbytitle #PL_all_holopilot_lobby + description #PL_all_holopilot_desc + abbreviation #PL_all_holopilot_abbr + image lf + visible 0 + scorelimit 50 + //mixtape_slot 6 + featured_mode_all_holopilot 1 + } + gamemodes + { + speedball + { + maps + { + mp_lf_stacks 1 + mp_lf_township 1 + mp_lf_uma 1 + mp_lf_traffic 1 + mp_lf_deck 1 + mp_lf_meadow 1 + } + } + } + } + mfd + { + inherit defaults + vars + { + name #PL_marked_for_death + lobbytitle #PL_marked_for_death_lobby + description #PL_marked_for_death_desc + abbreviation #PL_marked_for_death_abbr + image mfd + visible 0 +// mixtape_promo_slot 5 + } + gamemodes + { + mfd {} + } + } + //DEV + fnf + { + inherit defaults + vars + { + name "Friday Night Fights" + lobbytitle "Friday Night Fights Lobby" + description "Fights on Friday" + image varietypack + visible 0 +// mixtape_promo_slot 4 + } + gamemodes + { + ctf + { + maps + { + mp_relic02 1 + + } + } + + lts + { + maps + { + mp_relic02 1 + } + } + } + } + //DEV + fd + { + inherit defaults + vars + { + name #MATCHMAKING_PVE_PLAY_BUTTON + lobbytitle #PL_fd_lobby + description #COOP_DESC + image ffa + visible 1 + mixtape_promo_slot 9 + riff_team_share_earn_meter 2 + riff_team_share_earn_meter_scale 0.25 + earn_meter_titan_multiplier 0.5 + ingame_menu_fd_mode 1 + promo_note #PL_promo_coop + } + gamemodes + { + fd + {} + } + } + //DEV + fd_easy + { + inherit defaults + vars + { + name #PL_fd_easy + lobbytitle #PL_fd_easy_lobby + description #PL_fd_easy_desc + abbreviation #FD_DIFFICULTY_EASY + image fd_easy + visible 1 + } + gamemodes + { + fd + {} + } + gamemodesWithAncestor + { + fd_easy + {} + } + } + //DEV + fd_normal + { + inherit defaults + vars + { + name #PL_fd_normal + lobbytitle #PL_fd_normal_lobby + description #PL_fd_normal_desc + abbreviation #FD_DIFFICULTY_NORMAL + image fd_normal + visible 1 + } + gamemodes + { + fd + {} + } + gamemodesWithAncestor + { + fd_normal + {} + } + } + //DEV + fd_hard + { + inherit defaults + vars + { + name #PL_fd_hard + lobbytitle #PL_fd_hard_lobby + description #PL_fd_hard_desc + abbreviation #FD_DIFFICULTY_HARD + image fd_hard + visible 1 + } + gamemodes + { + fd + {} + } + gamemodesWithAncestor + { + fd_hard + {} + } + } + //DEV + fd_master + { + inherit defaults + vars + { + name #PL_fd_master + lobbytitle #PL_fd_master_lobby + description #PL_fd_master_desc + abbreviation #FD_DIFFICULTY_MASTER + image fd_master + visible 1 + } + gamemodes + { + fd + {} + } + gamemodesWithAncestor + { + fd_master + {} + } + } + fd_insane + { + inherit fd + vars + { + name #PL_fd_insane + lobbytitle #PL_fd_insane_lobby + description #PL_fd_insane_desc + image fd_insane + visible 1 + mixtape_promo_slot 5 + promo_note #MP_HOMESTEAD + } + gamemodes + { + fd + {} + } + gamemodesWithAncestor + { + fd_insane + { + maps + { + mp_homestead 1 + } + } + } + } + //DEV + fd_dev + { + inherit fd_hard + vars + { + pick_loadout_extension 0 + } + } + + gg + { + inherit defaults + vars + { + name #PL_gg + lobbytitle #PL_gg_lobby + description #PL_gg_desc + abbreviation #PL_gg_abbr + image ffa + //mixtape_slot 7 + mixtape_timeout 120 + visible 0 + } + gamemodes + { + gg + { + maps + { + mp_forwardbase_kodai 1 + mp_grave 1 + mp_homestead 1 + mp_thaw 1 + mp_black_water_canal 1 + mp_eden 1 + mp_drydock 1 + mp_crashsite3 1 + mp_complex3 1 + mp_angel_city 1 + mp_colony02 1 + mp_glitch 1 + mp_lf_stacks 1 + mp_lf_deck 1 + mp_lf_meadow 1 + mp_lf_traffic 1 + mp_lf_township 1 + mp_lf_uma 1 + mp_relic02 1 + mp_wargames 1 + mp_rise 1 + } + } + } + } + tt + { + inherit defaults + vars + { + name #PL_tt + lobbytitle #PL_tt_lobby + description #PL_tt_desc + hint #PL_tt_hint + abbreviation #PL_tt_abbr + visible 0 + } + gamemodes + { + tt + { + maps + { + mp_forwardbase_kodai 1 + mp_grave 1 + mp_homestead 1 + mp_thaw 1 + mp_black_water_canal 1 + mp_eden 1 + mp_drydock 1 + mp_crashsite3 1 + mp_complex3 1 + mp_angel_city 1 + mp_colony02 1 + mp_glitch 1 + mp_relic02 1 + mp_wargames 1 + mp_rise 1 + } + } + } + } + inf + { + inherit defaults + vars + { + name #PL_inf + lobbytitle #PL_inf_lobby + description #PL_inf_desc + hint #PL_inf_hint + abbreviation #PL_inf_abbr + visible 0 + } + gamemodes + { + inf + { + maps + { + mp_forwardbase_kodai 1 + mp_grave 1 + mp_homestead 1 + mp_thaw 1 + mp_black_water_canal 1 + mp_eden 1 + mp_drydock 1 + mp_crashsite3 1 + mp_complex3 1 + mp_angel_city 1 + mp_colony02 1 + mp_glitch 1 + mp_lf_stacks 1 + mp_lf_deck 1 + mp_lf_meadow 1 + mp_lf_traffic 1 + mp_lf_township 1 + mp_lf_uma 1 + mp_relic02 1 + mp_wargames 1 + mp_rise 1 + } + } + } + } + arena + { + inherit defaults + vars + { + name #PL_arena + lobbytitle #PL_arena_lobby + description #PL_arena_desc + hint #PL_arena_hint + abbreviation #PL_arena_abbr + max_players 6 + max_teams 2 + classic_mp 1 + boost_store_mode arena + + gamemode_score_hint #GAMEMODE_SCORE_HINT_TDM + } + gamemodes + { + arena + { + maps + { + mp_forwardbase_kodai 1 + mp_grave 1 + mp_homestead 1 + mp_thaw 1 + mp_black_water_canal 1 + mp_eden 1 + mp_drydock 1 + mp_crashsite3 1 + mp_complex3 1 + mp_angel_city 1 + mp_colony02 1 + mp_glitch 1 + mp_lf_stacks 1 + mp_lf_deck 1 + mp_lf_meadow 1 + mp_lf_traffic 1 + mp_lf_township 1 + mp_lf_uma 1 + mp_relic02 1 + mp_wargames 1 + mp_rise 1 + } + } + } + } + kr + { + inherit defaults + vars + { + name #PL_kr + lobbytitle #PL_kr_lobby + description #PL_kr_desc + hint #PL_kr_hint + abbreviation #PL_kr_abbr + + max_players 16 + max_teams 16 + classic_mp 1 + timelimit 7.5 + scorelimit 99999 // arbitrarily high number + } + gamemodes + { + kr + { + maps + { + mp_forwardbase_kodai 1 + mp_grave 1 + mp_homestead 1 + mp_thaw 1 + mp_black_water_canal 1 + mp_eden 1 + mp_drydock 1 + mp_crashsite3 1 + mp_complex3 1 + mp_angel_city 1 + mp_colony02 1 + mp_glitch 1 + mp_lf_stacks 1 + mp_lf_deck 1 + mp_lf_meadow 1 + mp_lf_traffic 1 + mp_lf_township 1 + mp_lf_uma 1 + mp_relic02 1 + mp_wargames 1 + mp_rise 1 + } + } + } + } + fastball + { + inherit defaults + vars + { + name #PL_fastball + lobbytitle #PL_fastball_lobby + description #PL_fastball_desc + hint #PL_fastball_hint + abbreviation #PL_fastball_abbr + + max_players 16 + max_teams 2 + classic_mp 1 + scorelimit 5 + roundtimelimit 2 + roundscorelimit 5 + + gamemode_score_hint #GAMEMODE_SCORE_HINT_TDM + } + gamemodes + { + fastball + { + maps + { + mp_forwardbase_kodai 1 + mp_grave 1 + mp_homestead 1 + mp_thaw 1 + mp_black_water_canal 1 + mp_eden 1 + mp_drydock 1 + mp_crashsite3 1 + mp_complex3 1 + mp_angel_city 1 + mp_colony02 1 + mp_glitch 1 + mp_relic02 1 + mp_wargames 1 + mp_rise 1 + } + } + } + } + fw + { + inherit defaults + vars + { + name #PL_fw + lobbytitle #PL_fw_lobby + description #PL_fw_desc + hint #PL_fw_hint + abbreviation #PL_fw_abbr + + max_players 16 + max_teams 2 + classic_mp 1 + scorelimit 100 + + gamemode_score_hint #GAMEMODE_SCORE_HINT_TDM + } + gamemodes + { + fw + { + maps + { + mp_forwardbase_kodai 1 + mp_grave 1 + mp_homestead 1 + mp_thaw 1 + mp_black_water_canal 1 + mp_eden 1 + mp_drydock 1 + mp_crashsite3 1 + mp_complex3 1 + mp_angel_city 1 + mp_colony02 1 + mp_glitch 1 + mp_relic02 1 + mp_wargames 1 + mp_rise 1 + } + } + } + } + + +// END OF MP PLAYLISTS LINE ---------------------------------------------------- + + "Load a map on the command line" + { + inherit defaults + vars + { + name #PL_load_a_map_on_the_command_line + description #PL_settings_for_when_someone_loads_a_map_on_the_command_line_do_not_edit_the_cmdlinemapload_1_below_-_this_makes_this_work + + cmdlineMapLoad 1 + + classic_mp 0 + prematch_time 4 + titan_build_time 5 + titan_build_time_use_set_file 0 + titan_rebuild_time 5 + } + gamemodes + { + tdm + { + maps + { + mp_lobby 1 + } + } + } + } + buildain + { + inherit defaults + vars + { + name #PL_pl_rebuild_all_paths + description #PL_pl_run_with_ai_ainrebuildonmapstart_2 + + classic_mp 0 + ranking_supported 0 + } + gamemodes + { + tdm + { + maps + { + mp_titan_melee 1 + mp_titan_rodeo 1 + mp_angel_city 1 + mp_colony02 1 + mp_crashsite2 1 + mp_beacon 1 + mp_test_engagement_range 1 + mp_thaw 1 + mp_homestead 1 + mp_grave 1 + mp_forwardbase_kodai 1 + mp_box 1 + mp_lobby 1 + } + } + } + } + solo + { + inherit defaults + vars + { + always_enable_autotitans 1 + burn_meter_enabled 0 + cinematic_mode 1 + classic_mp 0 + hud_score_enabled 0 + max_players 16 + max_teams 1 + ranking_supported 0 + riff_allow_npcs 1 + riff_minimap_state 1 + riff_titan_availability 3 + riff_titan_exit_enabled 3 + rodeo_battery_disembark_to_pickup 0 + titan_build_time 300 + titan_health_bar_display default + titan_mode_change_allowed 0 + titan_rebuild_time 195 + titan_segmented_health 0 + titan_shield_regen 1 + } + gamemodes + { + solo {} + } + } + new_titan_models + { + inherit defaults + vars + { + classic_mp 0 + prematch_time 4 + r2_titan_models 1 + titan_build_time 20 + titan_rebuild_time 20 + } + gamemodes + { + solo + { + maps + { + sp_enemies 1 + } + } + } + } + } + "LocalizedStrings" + { + "lang" + { + "Language" "german" + "Tokens" + { + "COMMUNITYUPDATE_00_A" "Dein Abenteuer in der beeindruckenden Welt des Grenzlandes geht mit \"Postkarten aus dem Grenzland\", dem neuesten DLC für Titanfall 2, weiter. Mit neuen und bekannten Schauplätzen und einer neuen Sammlung von Elitewaffen-Kriegslackierungen hat das Grenzland nie besser ausgesehen.\n\n\nZum Ansehen `2%[A_BUTTON|MOUSE1]%`0 drücken." + "COMMUNITYUPDATE_00_Q" "\"Postkarten aus dem Grenzland\"-Trailer" + "COMMUNITYUPDATE_01_A" "Informiere dich über alle im \"Postkarten aus dem Grenzland\"-Patch enthaltenen Änderungen.\n\n\nZum Ansehen `2%[A_BUTTON|MOUSE1]%`0 drücken." + "COMMUNITYUPDATE_01_Q" "Postkarten aus dem Grenzland: Die Patch-Notizen" + "COMMUNITYUPDATE_02_A" "Das demnächst für Mobilgeräte erscheinende Titanfall: Assault ist ein Echtzeit-RTS im Titanfall-Universum, das wir mit Particle City entwickeln. Hier siehst du das Spiel in Aktion.\n\n\nZum Ansehen `2%[A_BUTTON|MOUSE1]%`0 drücken." + "COMMUNITYUPDATE_02_Q" "Titanfall: Assault-Veröffentlichungstrailer" + "COMMUNITYUPDATE_03_A" "Iniquity führt uns durch das Tutorial und gibt uns grundlegende Tipps zu Titanfall: Assault. Der perfekte Weg, mehr über das Spiel zu erfahren.\n\n\nZum Ansehen `2%[A_BUTTON|MOUSE1]%`0 drücken." + "COMMUNITYUPDATE_03_Q" "Titanfall: Assault: \"Die Grundlagen\"-Video" + "COMMUNITYUPDATE_04_A" "Höre den Machern von Grenzlandverteidigung zu, wenn sie über die Geschichte und Entwicklung des Modus sprechen und sieh uns zu, wie wir einige Runden spielen!\n\n\nZum Ansehen `2%[A_BUTTON|MOUSE1]%`0 drücken." + "COMMUNITYUPDATE_04_Q" "Respawn spielt Grenzlandverteidigung" + "COMMUNITYUPDATE_05_A" "Kevin Younger hat eine witzige Montage aus zahlreichen coolen Moves mit der Impulsklinge zusammengestellt!\n\n\nZum Ansehen `2%[A_BUTTON|MOUSE1]%`0 drücken." + "COMMUNITYUPDATE_05_Q" "Community-Beiträge: Komm zum Punkt" + "COMMUNITYUPDATE_06_A" "ConzeyG zeigt uns über reddit die brutale Effizienz des Northstar, wenn er im Todgeweiht-Modus Piloten erledigt.\n\n\nZum Ansehen `2%[A_BUTTON|MOUSE1]%`0 drücken." + "COMMUNITYUPDATE_06_Q" "Community-Beiträge - Northstar-Pilotenjagd" + "COMMUNITYUPDATE_07_A" "Jetzt verfügbar! Grenzlandverteidigung und Rise kehren mit brandneuen, kaufbaren Kriegslackierungen und einer neuen Live Fire-Karte zurück. Hier siehst du alles in Aktion.\n\n\nZum Ansehen `2%[A_BUTTON|MOUSE1]%`0 drücken." + "COMMUNITYUPDATE_07_Q" "\"Operation Frontier Shield\" Gameplay-Trailer" + "COMMUNITYUPDATE_08_A" "Jetzt verfügbar! Die legendäre Kriegsspiele-Karte kehrt in Titanfall 2 zurück und sieht besser denn je aus. Erlebe außerdem die neue Exekution und die neue Live Fire-Karte \"Verkehr\" in Aktion.\n\n\nZum Ansehen `2%[A_BUTTON|MOUSE1]%`0 drücken." + "COMMUNITYUPDATE_08_Q" "\"Die Kriegsspiele\" Gameplay-Trailer" + "COMMUNITYUPDATE_09_A" "Dieser DLC enthält mit dem Monarch den 7. Multiplayer-Titan, eine überarbeitete Version der Relikt-Karte, eine neue Exekution sowie kaufbare Ronin- und Tone-Prime-Titans, mehr Tarnungen, Banner und Nose-Arts. Hier kannst du dir die Action ansehen.\n\nZum Ansehen `2%[A_BUTTON|MOUSE1]%`0 drücken." + "COMMUNITYUPDATE_09_Q" "\"Monarch's Reign\" Gameplay-Trailer" + "COMMUNITYUPDATE_10_A" "Im Grenzland ist nicht alles so, wie es scheint – bereite dich auf den neuesten kostenlosen Inhaltspack zum Herunterladen für Titanfall 2 vor: Störimpuls im Grenzland – mit der neuen Karte \"Glitch\". Die Inspiration dafür war Captain Lastimosas Heimatplanet Harmony, wo vertikale Höhenunterschiede und lange, gewundene Pfade das Landschaftsbild dominieren – ideal, um mit Wandlaufkombinationen elegant über die Karte zu gleiten. Eine neue Live Fire-Karte ist ebenfalls am Start: Deck, mit engen Innenräumen, offenen Höfen und wachsamen Drohnen, die über dir kreisen. Falls du dich überfordert fühlst, kannst du auf die hilfreichen M.R.V.N.s zugreifen, die dir jetzt als brandneue Gruppierung ihre fröhliche Roboterhand reichen. Und zu guter Letzt kannst du noch die neue Impulsklingen-Exekution freischalten, wann immer du es für notwendig hältst, dich durchzusetzen.\n\n\nZum Ansehen `2%[A_BUTTON|MOUSE1]%`0 drücken." + "COMMUNITYUPDATE_10_Q" "\"Störimpuls im Grenzland\" Gameplay-Trailer" + "COMMUNITYUPDATE_11_A" "Kehre auf eine der Lieblingskarten der Fans aus Titanfall 1 zurück: Kolonie. Bringe all die neuen Taktiken und Titans aus Titanfall 2 ein, die alle Piloten & Titans nutzen müssen, um an diesem idyllischen Ort voller enger und verwinkelter Gassen und ungeschützter Dächer zu überleben. Ab dem 30. März für alle Spieler kostenlos erhältlich! Der Kolonierückkehr-DLC enthält außerdem klassische Waffen wie das Sturmgewehr R-101, eine neue Haken-Exekution sowie neue kosmetische Optionen, damit du perfekt aussiehst, wenn du die Stadt im Chaos versinken lässt.\n\n\nZum Ansehen `2%[A_BUTTON|MOUSE1]%`0 drücken." + "COMMUNITYUPDATE_11_Q" "Trailer - Kolonierückkehr-DLC" + "COMMUNITYUPDATE_12_A" "Vorstellung von Live Fire: ein rasanter 6 vs. 6 Piloten-Modus, der aufregende Nahkämpfe an vorderster Front bietet. Enthält zwei neue, speziell für Live Fire entworfene Karten: Stacks und Meadow. Die beiden kostenlosen Karten sind eng umgrenzte Todeszonen, die perfekt auf die Rasanz und Intensität des Modus abgestimmt sind.\n\n\nZum Ansehen `2%[A_BUTTON|MOUSE1]%`0 drücken." + "COMMUNITYUPDATE_12_Q" "Trailer - Live Fire-DLC" + "COMMUNITYUPDATE_13_A" "Erlebe eine Neuauflage der beliebten `1Angel City`0-Karte aus dem ersten Titanfall. Mach dich bereit für die ersten kostenlosen Inhalte zum Herunterladen für Titanfall 2. `1Angel City's Most Wanted`0 ist ab dem 1. Dezember für alle Spieler verfügbar. Die Inhalte bieten neue kosmetische Optionen, die dem Grenzland noch mehr Flair verleihen. \n\n\nZum Ansehen `2%[A_BUTTON|MOUSE1]%`0 drücken." + "COMMUNITYUPDATE_13_Q" "Trailer - Angel City-DLC" + "COMMUNITYUPDATE_14_A" "Willkommen zurück!\n\n\nZum Ansehen `2%[A_BUTTON|MOUSE1]%`0 drücken." + "COMMUNITYUPDATE_14_Q" "Trailer - Encore" + "COMMUNITYUPDATE_15_A" "Zwei Legenden, ein Erbe.\n\n\nZum Ansehen `2%[A_BUTTON|MOUSE1]%`0 drücken." + "COMMUNITYUPDATE_15_Q" "Trailer - Become One" + "COMMUNITYUPDATE_16_A" "Grenzenlos.\n\n\nZum Ansehen `2%[A_BUTTON|MOUSE1]%`0 drücken." + "COMMUNITYUPDATE_16_Q" "Trailer - Piloten-Gameplay" + "COMMUNITYUPDATE_DESC" "`3Titanfall Community-Updates`0\n\nInfos und Links aus dem ganzen Netz.\n\nWeitere Infos:\n`2%$rui/bullet_point%`0Folge uns auf Twitter `1@Respawn`0\n`2%$rui/bullet_point%`0Folge uns auf `1facebook.com/RespawnEntertainment`0\n`2%$rui/bullet_point%`0Besuche uns auf `1www.respawn.com`0" + "COMMUNITYUPDATE_NAME" "Community" + "KNB_SUBJECT_00_DESC" "`3Was ist neu in Titanfall?`0\n\nHier erfährst du, was sich in Titanfall 2 geändert hat!" + "KNB_SUBJECT_00_NAME" "Spiel-Updates" + "KNB_SUBJECT_00_SUB_00_A" "`2%$rui/bullet_point%`010 Neue Rufzeichen-Banner der Community\n\n`2%$rui/bullet_point%`0Alle Fürsprechergeschenke können jetzt mit Credits erworben werden\n\n`2%$rui/bullet_point%`0Neue kaufbare Store-Inhalte\n\n" + "KNB_SUBJECT_00_SUB_00_Q" "%$rui/hud/scoreboard/status_titan% 28. November - Erntezeit" + "KNB_SUBJECT_00_SUB_01_A" "`2%$rui/bullet_point%`0Pistolen-Primärslot\n\n`2%$rui/bullet_point%`0Halloween-Banner\n\n`2%$rui/bullet_point%`0Balance-Änderungen\n\n`2%$rui/bullet_point%`0Neue kaufbare Store-Inhalte\n\n" + "KNB_SUBJECT_00_SUB_01_Q" "%$rui/hud/scoreboard/status_titan% 31. Oktober - Süßes und Saures" + "KNB_SUBJECT_00_SUB_02_A" "`2%$rui/bullet_point%`0Grenzlandverteidigung - Unterstützung für 3 weitere Karten - Drydock, Angel City und Exoplanet.\n\n`2%$rui/bullet_point%`0Neue Live Fire-Karte - UMA\n\n`2%$rui/bullet_point%`0Neue Piloten-Exekution - Loch in der Wand\n\n`2%$rui/bullet_point%`0Neue kaufbare Store-Inhalte" + "KNB_SUBJECT_00_SUB_02_Q" "%$rui/hud/scoreboard/status_titan% 29. August - Postkarten aus dem Grenzland" + "KNB_SUBJECT_00_SUB_03_A" "`2%$rui/bullet_point%`0Grenzlandverteidigung - Ein neuer Koop-Modus, bei dem du mit drei anderen Spielern ein wichtiges Einsatzziel gegen immer stärker werdende Wellen von KI-Einheiten verteidigst. Kommunikation und Anpassung sind hier entscheidend, um zu überleben.\n\n`2%$rui/bullet_point%`0Neue Karte - Aufstieg\n\n`2%$rui/bullet_point%`0Neue Live Fire-Karte - Township\n\n`2%$rui/bullet_point%`0Neue kaufbare Store-Inhalte" + "KNB_SUBJECT_00_SUB_03_Q" "%$rui/hud/scoreboard/status_titan% 25. Juli - Operation Frontier Shield" + "KNB_SUBJECT_00_SUB_04_A" "`2%$rui/bullet_point%`0Neue Karte - Kriegsspiele\n\n`2%$rui/bullet_point%`0Neue Live Fire-Karte - Verkehr\n\n`2%$rui/bullet_point%`0Neue Piloten-Exekution - Schattenboxen\n\n`2%$rui/bullet_point%`03. Waffenslot\n\n`2%$rui/bullet_point%`0Privatspiel-Einstellungen" + "KNB_SUBJECT_00_SUB_04_Q" "%$rui/hud/scoreboard/status_titan% 27. Juni - Kriegsspiele" + "KNB_SUBJECT_00_SUB_05_A" "`2%$rui/bullet_point%`0Neuer Titan – Monarch\n\n`2%$rui/bullet_point%`0Neue Karte – Relikt\n\n`2%$rui/bullet_point%`0Neue Piloten-Exekution – Jetzt siehst du mich\n\n`2%$rui/bullet_point%`0Neue, käuflich zu erwerbende Store-Inhalte" + "KNB_SUBJECT_00_SUB_05_Q" "%$rui/hud/scoreboard/status_titan% 30. Mai – Monarch's Reign" + "KNB_SUBJECT_00_SUB_06_A" "`2%$rui/bullet_point%`0Neue Karte – Glitch\n\n`2%$rui/bullet_point%`0Neue Live Fire-Karte – Deck\n\n`2%$rui/bullet_point%`0Neue Gruppierung – M.R.V.N.\n\n`2%$rui/bullet_point%`0Neue Piloten-Exekution – Komm zum Punkt\n\n`2%$rui/bullet_point%`0Maximalgeneration auf 100 erhöht" + "KNB_SUBJECT_00_SUB_06_Q" "%$rui/hud/scoreboard/status_titan% 25. April – Störimpuls im Grenzland" + "KNB_SUBJECT_00_SUB_07_A" "`2%$rui/bullet_point%`0Neue Karte – Kolonie\n\n`2%$rui/bullet_point%`0Neue Piloten-Exekution – Curb-Check\n\n`2%$rui/bullet_point%`0Neue Waffe – R-101\n\n`2%$rui/bullet_point%`0Neue, käuflich zu erwerbende Store-Inhalte" + "KNB_SUBJECT_00_SUB_07_Q" "%$rui/hud/scoreboard/status_titan% 30. März – Kolonierückkehr" + "KNB_SUBJECT_00_SUB_08_A" "`2%$rui/bullet_point%`0Live Fire – ein neuer Pilot vs. Pilot Eliminierungsmodus! In diesem rundenbasierten 6 vs. 6-Modus ohne Respawns habt ihr nur eine Minute Zeit, das gegnerische Team zu besiegen und die Runde zu gewinnen. Ihr gewinnt die Runde aber auch, wenn euer Team am Ende der Runde die neutrale Flagge hält. Das Team, das zuerst 5 Runden gewinnt, wird zum Sieger erklärt.\n\n`2%$rui/bullet_point%`0Neue Live Fire-Karte – Meadow\n\n`2%$rui/bullet_point%`0Neue Live Fire-Karte – Stacks\n\n`2%$rui/bullet_point%`0Neue Piloten-Exekution – Später Treffer" + "KNB_SUBJECT_00_SUB_08_Q" "%$rui/hud/scoreboard/status_titan% 23. Februar – Live Fire" + "KNB_SUBJECT_00_SUB_09_A" "`2%$rui/bullet_point%`0Neue Karte – Angel City\n\n`2%$rui/bullet_point%`0Neue Waffe – B3 Wingman Elite\n\n`2%$rui/bullet_point%`0Neue Piloten-Exekution – Innenleben\n\n`2%$rui/bullet_point%`0Neue Titan-Kits\n\n`2%$rui/bullet_point%`0Neue, käuflich zu erwerbende Store-Inhalte" + "KNB_SUBJECT_00_SUB_09_Q" "%$rui/hud/scoreboard/status_titan% 30. November – Angel City's Most Wanted" + "MP_ANGEL_CITY_FD_WAVE_1" "An den Himmel gekettet" + "MP_ANGEL_CITY_FD_WAVE_2" "Formlosigkeit" + "MP_ANGEL_CITY_FD_WAVE_3" "Auflehnung" + "MP_ANGEL_CITY_FD_WAVE_4" "Ein störrischer Haufen" + "MP_ANGEL_CITY_FD_WAVE_5" "Reißleine" + "MP_DRYDOCK_FD_WAVE_1" "Auf in fremde Gewässer" + "MP_DRYDOCK_FD_WAVE_2" "Sie haben keine Kugeln!" + "MP_DRYDOCK_FD_WAVE_3" "Von der Forschung geblendet" + "MP_DRYDOCK_FD_WAVE_4" "Hochdrucksystem" + "MP_DRYDOCK_FD_WAVE_5" "Auge des Sturms" + "MP_THAW_FD_WAVE_1" "Lagebewusstsein" + "MP_THAW_FD_WAVE_2" "Zahlenmäßige Stärke" + "MP_THAW_FD_WAVE_3" "Handlanger 21" + "MP_THAW_FD_WAVE_4" "Spaß im Feuer" + "MP_THAW_FD_WAVE_5" "Nutzt eure Waffen" + "NO_PRICE" "Angebot abgelaufen" + "NO_PRICE_TWO_LINES" "Angebot\nabgelaufen" + "PL_aegis_last_titan_standing" "Aegis-LTS" + "PL_aegis_last_titan_standing_abbr" "ALTS" + "PL_aegis_last_titan_standing_desc" "Aegis-Upgrades aktiviert. Rundenbasiertes Eliminierungsmatch. Sieger ist, wer zuerst 3 Runden für sich entscheidet.\n^FFC83200Spieler: 5 vs. 5 * Starte als Titan\nZeitlimit: 3 Min. pro Runde * Keine Respawns\nMax. Party-Größe: 5" + "PL_aegis_last_titan_standing_lobby" "PL_aegis_last_titan_standing_lobby" + "PL_aegis_titan_brawl" "Aegis Titan Brawl" + "PL_aegis_titan_brawl_abbr" "ATB" + "PL_aegis_titan_brawl_desc" "Eliminiere gegnerische Titans. Aegis-Upgrades aktiviert.\n^FFC83200Spieler: 5 vs. 5\nZeitlimit: 10 Min.\nMax. Party-Größe: 5" + "PL_aegis_titan_brawl_hint" "Neutralisiere gegnerische Titans.\nKein Ausstieg" + "PL_aegis_titan_brawl_lobby" "Aegis Titan Brawl-Lobby" + "PL_aitdm" "Materialschlacht" + "PL_aitdm_abbr" "MAT" + "PL_aitdm_desc" "Töte alle Gegner.\n^FFC83200Spieler: 6 vs. 6 *KI\nZeitlimit: 10 Min.\nMax. Party-Größe: 6" + "PL_aitdm_lobby" "Materialschlacht-Lobby" + "PL_all_grapple" "Angriff auf Titanfall" + "PL_all_grapple_abbr" "MAT" + "PL_all_grapple_desc" "Klassische Materialschlacht-Regeln, allerdings werden alle Taktikfähigkeiten durch \"Haken\" ersetzt.\n^FFC83200Spieler: 6 vs. 6 *KI\nZeitlimit: 10 Min.\nMax. Party-Größe: 6" + "PL_all_grapple_lobby" "Angriff auf Titanfall-Lobby" + "PL_all_holopilot" "Totale Verwirrung" + "PL_all_holopilot_abbr" "LF" + "PL_all_holopilot_desc" "Klassische Live-Fire-Regeln, allerdings werden alle Taktikfähigkeiten durch \"Holopilot\" ersetzt.^FFC83200\nSpieler: 6 vs. 6 *Keine Titans\nZeitlimit: 60 Sek. *Keine Respawns\nMax. Party-Größe: 6" + "PL_all_holopilot_lobby" "Totale Verwirrung-Lobby" + "PL_all_phase" "Die andere Seite" + "PL_all_phase_abbr" "MAT" + "PL_all_phase_desc" "Klassische Materialschlacht-Regeln, allerdings werden alle Taktikfähigkeiten durch \"Phase\" ersetzt.\n^FFC83200Spieler: 6 vs. 6 *KI\nZeitlimit: 10 Min.\nMax. Party-Größe: 6" + "PL_all_phase_lobby" "Die andere Seite-Lobby" + "PL_all_spicy" "Würzige Materialschlacht" + "PL_all_spicy_abbr" "MAT" + "PL_all_spicy_desc" "Klassische Materialschlacht-Regeln, allerdings werden alle Taktikfähigkeiten durch Ticks ersetzt.\n^FFC83200Spieler: 6 vs. 6 *KI\nZeitlimit: 10 Min.\nMax. Party-Größe: 6" + "PL_all_spicy_lobby" "Würzige Materialschlacht-Lobby" + "PL_amped_tacticals" "Verstärkte Taktiken" + "PL_amped_tacticals_abbr" "MAT" + "PL_amped_tacticals_desc" "Klassische Materialschlacht-Regeln, allerdings sind alle Taktikfähigkeiten effektiver.\n^FFC83200Spieler: 6 vs. 6 *KI\nZeitlimit: 10 Min.\nMax. Party-Größe: 6" + "PL_amped_tacticals_lobby" "Verstärkte Taktiken-Lobby" + "PL_ANGEL_CITY" "Angel City 24/7" + "PL_angel_city_abbr" "AC" + "PL_angel_city_desc" "Ganz Angel City, die ganze Zeit.\n^FFC83200*Kopfgeldjagd *Materialschlacht\n*Verstärkter Hardpoint" + "PL_angel_city_lobby" "Angel City 24/7-Lobby" + "PL_at_coop" "Flucht (Koop)" + "PL_at_coop_desc" "Du bist nur mit einer Pistole bewaffnet aus einem Gefängnis entkommen. Überlebe, bis du evakuiert werden kannst. Neutralisiere Gegner, um Geld zu erhalten und Waffen zu kaufen. \n^FFC83200Spieler: 6\nMax. Party-Größe: 6" + "PL_at_coop_lobby" "Flucht-Lobby" + "PL_attrition" "Kopfgeldjagd" + "PL_attrition_abbr" "KGJ" + "PL_attrition_desc" "Neutralisiere Gegner, um Geld zu erhalten. Verdiene mehr, indem du deine Boni an ausgewiesenen Stellen 'auf die Bank bringst'.\n^FFC83200Spieler: 5 vs. 5 * KI\nZeitlimit: 10 Min.\nMax. Party-Größe: 5" + "PL_attrition_lobby" "Kopfgeldjagd-Lobby" + "PL_capture_the_flag" "Capture the Flag" + "PL_capture_the_flag_abbr" "CTF" + "PL_capture_the_flag_desc" "Stiehl die feindliche Flagge und bringe sie zu deiner Basis, während du das feindliche Team davon abhältst, sich deine Flagge zu schnappen!\n^FFC83200Spieler: 5 vs. 5\nZeitlimit: 12 Min.\nMax. Party-Größe: 5" + "PL_capture_the_flag_lobby" "CTF-Lobby" + "PL_coliseum" "Kolosseum" + "PL_coliseum_desc" "Duell mit erweiterter Beweglichkeit in einem Käfig. Schalte deinen Gegner aus, um zu gewinnen. Wer 3 von 5 Runden gewinnt, erhält ein Freund-Geschenk.^FFC83200\nSpieler: 1 vs. 1 *Keine Titans\nZeitlimit: 3 Min. *Keine Respawns\n**^FFFFFF00ERFORDERT KOLOSSEUM-TICKET oder BEZAHLTE TEILNAHMEGEBÜHR" + "PL_coliseum_lobby" "Kolosseum-Lobby" + "PL_colony" "Kolonie 24/7" + "PL_colony_abbr" "KOL" + "PL_colony_desc" "Kolonie, rund um die Uhr. ^CCCCCC00Sucht nach Spielen in den Modi ^FFC83200Materialschlacht^CCCCCC00, ^FFC83200Piloten vs. Piloten^CCCCCC00 und ^FFC83200Last Titan Standing^CCCCCC00." + "PL_colony_lobby" "Kolonie 24/7-Lobby" + "PL_ctf_lf" "CTF (Nitro)" + "PL_ctf_lf_abbr" "CTF-N" + "PL_ctf_lf_desc" "Rasantes Capture the Flag auf ausgewählten Karten.\n^FFC83200Spieler: 5 vs. 5\nMax. Party-Größe: 5\n^F4D5A600Flagge wird sofort zurückgebracht" + "PL_ctf_lf_lobby" "CTF Nitro-Lobby" + "PL_default_description" "Standardbeschreibung" + "PL_default_lobbytitle" "Standard-Lobbytitel" + "PL_default_name" "Standardname" + "PL_don" "Doppelt oder nichts" + "PL_fd" "Grenzlandverteidigung" + "PL_fd_desc" "Verteidige dich gegen Wellen von Truppen der Restflotte" + "PL_fd_easy" "Grenzlandverteidigung: Leicht" + "PL_fd_easy_desc" "Zerschlage den Gegner" + "PL_fd_easy_lobby" "Grenzlandverteidigung: Leicht-Lobby" + "PL_fd_hard" "Grenzlandverteidigung: Schwer" + "PL_fd_hard_desc" "Können ist erforderlich" + "PL_fd_hard_lobby" "Grenzlandverteidigung: Schwer-Lobby" + "PL_fd_insane" "Grenzlandverteidigung: Wahnsinn" + "PL_fd_insane_desc" "Du wirst nicht überleben" + "PL_fd_insane_lobby" "Grenzlandverteidigung: Wahnsinn – Lobby" + "PL_fd_lobby" "Grenzlandverteidigung-Lobby" + "PL_fd_master" "Grenzlandverteidigung: Meister" + "PL_fd_master_desc" "Nur die Besten der Besten werden erfolgreich sein" + "PL_fd_master_lobby" "Grenzlandverteidigung: Meister – Lobby" + "PL_fd_normal" "Grenzlandverteidigung: Normal" + "PL_fd_normal_desc" "Empfohlen für erfahrene Spieler" + "PL_fd_normal_lobby" "Grenzlandverteidigung: Normal – Lobby" + "PL_ffa" "Frei für alle" + "PL_ffa_abbr" "FFA" + "PL_ffa_desc" "Jeder Pilot kämpft für sich selbst. Eliminiere alle Gegner.\n^FFC83200Spieler: 1 vs. 11\nZeitlimit: 10 Min.\nMax. Party-Größe: 1" + "PL_ffa_lobby" "Frei für alle-Lobby" + "PL_fra" "Free Agents" + "PL_fra_abbr" "FRA" + "PL_fra_desc" "Du kämpfst für dich selbst. Eliminiere Gegner, um zu siegen. Sammle 3 Batterien für einen Titanfall.\n^FFC83200Spieler: 1 vs. 11\nZeitlimit: 15 Min.\nMax. Party-Größe: 1" + "PL_fra_lobby" "Free Agents-Lobby" + "PL_groud_war_lobby" "8 vs. 8 Mixtape-Lobby" + "PL_ground_war" "8 vs. 8 Mixtape" + "PL_ground_war_abbr" "8 vs. 8" + "PL_ground_war_desc" "Enthält Gefecht und Verstärkter Hardpoint mit einer hohen Spielerzahl auf allen Karten.\n^FFC83200Spieler: 8 vs. 8" + "PL_hardpoint" "Verstärkter Hardpoint" + "PL_hardpoint_abbr" "VHP" + "PL_hardpoint_desc" "Erobere und halte einen Hardpoint, um Punkte zu erringen. Verstärkte Hardpoints bringen die doppelte Punktzahl.\n^FFC83200Spieler: 6 vs. 6\nZeitlimit: 10 Min.\nMax. Party-Größe: 6" + "PL_hardpoint_lobby" "Verstärkter Hardpoint-Lobby" + "PL_hunted" "Gejagt" + "PL_iron_last_titan_standing" "Eiserner LTS" + "PL_iron_last_titan_standing_abbr" "ELTS" + "PL_iron_last_titan_standing_desc" "Nur Titans. Rundenbasiertes Eliminierungsmatch. Sieger ist, wer zuerst 3 Runden gewinnt.\n^FFC83200Spieler: 5 vs. 5 *KEINE PILOTEN\nZeitlimit: 3 Min. pro Runde * Keine Respawns\nMax. Party-Größe: 5" + "PL_iron_last_titan_standing_lobby" "PL_iron_last_titan_standing_lobby" + "PL_last_titan_standing" "Last Titan Standing" + "PL_last_titan_standing_abbr" "LTS" + "PL_last_titan_standing_desc" "Alle Spieler beginnen dieses rundenbasierte Eliminierungsmatch in Titans. Sieger ist, wer zuerst 3 Runden für sich entscheidet.\n^FFC83200Spieler: 5 vs. 5 * Starte als Titan\nZeitlimit: 3 Min. pro Runde * Keine Respawns\nMax. Party-Größe: 5" + "PL_last_titan_standing_lobby" "LTS-Lobby" + "PL_limited_time_mode" "Befristeter Modus" + "PL_live_fire" "Live Fire" + "PL_live_fire_abbr" "LF" + "PL_live_fire_desc" "Rasanter Kampf in einer Live Fire-Arena. Gewinne die Runde, indem du alle gegnerischen Piloten neutralisierst oder am Ende der Runde die Flagge hältst.^FFC83200\nSpieler: 6 vs. 6 *Keine Titans\nZeitlimit: 60 Sek. *Keine Respawns\nMax. Party-Größe: 6" + "PL_live_fire_lobby" "Live Fire-Lobby" + "PL_load_a_map_on_the_command_line" "Lade eine Karte auf der Befehlszeile -devonly" + "PL_marked_for_death" "Todgeweiht" + "PL_marked_for_death_abbr" "TG" + "PL_marked_for_death_desc" "Eliminiere oder beschütze die markierten Ziele.\n^FFC83200Spieler: 6 vs. 6 \nZeitlimit: 12 Min.\nMax. Party-Größe: 6" + "PL_marked_for_death_lobby" "Todgeweiht-Lobby" + "PL_nitro_ffa" "FFA (Nitro)" + "PL_nitro_ffa_abbr" "FFA-N" + "PL_nitro_ffa_desc" "Rasantes Free for All auf ausgewählten Karten.\n^FFC83200Spieler: 6\n^F4D5A600Keine Titans\nKeine Boosts" + "PL_nitro_ffa_lobby" "FFA Nitro-Lobby" + "PL_nitro_mixtape" "Mixtape (Nitro)" + "PL_nitro_mixtape_abbr" "MXT-N" + "PL_nitro_mixtape_desc" "Rasantes CTF, TG und PvP auf ausgewählten Karten.\n^FFC83200Spieler: 5 vs. 5\nMax. Party-Größe: 5\n^F4D5A600Flagge wird sofort zurückgebracht" + "PL_nitro_mixtape_lobby" "Mixtape-Lobby" + "PL_pilot_hunter" "Gefecht" + "PL_pilot_hunter_abbr" "GEF" + "PL_pilot_hunter_desc" "Neutralisiere gegnerische Piloten und Titans. \n^FFC83200Spieler: 8 vs. 8\nZeitlimit: 10 Min.\nMax. Party-Größe: 8" + "PL_pilot_hunter_lobby" "Gefecht-Lobby" + "PL_pilot_skirmish" "Piloten vs. Piloten" + "PL_pilot_skirmish_abbr" "PvP" + "PL_pilot_skirmish_desc" "Neutralisiere gegnerische Piloten. Titanfalls nicht erlaubt.\n^FFC83200Spieler: 8 vs. 8 * Keine Titans\nZeitlimit: 10 Min.\nMax. Party-Größe: 8" + "PL_pilot_skirmish_lobby" "PvP-Lobby" + "PL_pl_rebuild_all_paths" "Neuaufbau aller Wege" + "PL_pl_run_with_ai_ainrebuildonmapstart_2" "Mit ai_ainRebuildOnMapStart 2 laufen lassen" + "PL_private_match" "Privatspiel-Beta" + "PL_private_match_desc" "Spiele ein benutzerdefiniertes Privatspiel auf einer Karte und einem Modus deiner Wahl.\n^FFC83200Wähle NETWORK EINLADEN oder FREUNDE EINLADEN, um zu spielen\n^FFC83200Spieler: 1-16\nKeine Fortschritte" + "PL_private_match_lobby" "Privatspiel-Beta-Lobby" + "PL_promo_coop" "4-Spieler-KOOP" + "PL_raid" "Überfall" + "PL_rise" "Aufstieg 24/7" + "PL_rise_abbr" "AUF" + "PL_rise_desc" "Aufstieg rund um die Uhr. ^CCCCCC00Sucht nach Spielen in den Modi ^FFC83200CTF^CCCCCC00, ^FFC83200Verstärkter Hardpoint^CCCCCC00, ^FFC83200Piloten vs. Piloten^CCCCCC00, ^FFC83200Live Fire^CCCCCC00 und ^FFC83200Last Titan Standing^CCCCCC00." + "PL_rise_lobby" "Aufstieg 24/7 – Lobby" + "PL_rocket_arena" "Raketenarena" + "PL_rocket_arena_abbr" "LF" + "PL_rocket_arena_desc" "Klassische Live-Fire-Regeln mit modifizierten EPGs.^FFC83200\nSpieler: 6 vs. 6 *Keine Titans\nZeitlimit: 90 Sek. *Keine Respawns\nMax. Party-Größe: 6" + "PL_rocket_arena_lobby" "Raketenarena-Lobby" + "PL_settings_for_when_someone_loads_a_map_on_the_command_line_do_not_edit_the_cmdlinemapload_1_below_-_this_makes_this_work" "Einstellungen, wenn jemand eine Karte auf der Befehlszeile lädt. Nicht cmdlineMapLoad 1 bearbeiten - dadurch funktioniert es." + "PL_speedball" "Live Fire" + "PL_speedball_desc" "Kämpfe um die neutrale Flagge. Eliminiere das gegnerische Team oder halte am Ende der Spielzeit die Flagge, um die Runde zu gewinnen. Wer zuerst 5 Runden für sich entscheidet, gewinnt.\n^FFC83200Spieler: 6 vs. 6 *Keine Titans\nZeitlimit: 60 Sekunden pro Runde *Keine Respawns\nMax. Party-Größe: 6" + "PL_speedball_lobby" "Live Fire-Lobby" + "PL_tactikill" "Taktikill-Materialschlacht" + "PL_tactikill_abbr" "MAT" + "PL_tactikill_desc" "Klassische Materialschlacht-Regeln, allerdings werden alle Taktikfähigkeiten durch einen Kill zurückgesetzt.\n^FFC83200Spieler: 6 vs. 6 *KI\nZeitlimit: 10 Min.\nMax. Party-Größe: 6" + "PL_tactikill_lobby" "Taktikill-Materialschlacht-Lobby" + "PL_titan_brawl" "Titan Brawl" + "PL_titan_brawl_abbr" "TB" + "PL_titan_brawl_desc" "Eliminiere gegnerische Titans. Piloten nicht erlaubt.\n^FFC83200Spieler: 5 vs. 5\nZeitlimit: 10 Min.\nMax. Party-Größe: 5" + "PL_titan_brawl_hint" "Neutralisiere gegnerische Titans.\nKein Ausstieg." + "PL_titan_brawl_lobby" "Titan Brawl-Lobby" + "PL_titan_brawl_turbo" "Turbo-Titan-Brawl" + "PL_titan_brawl_turbo_abbr" "TTDM" + "PL_titan_brawl_turbo_desc" "Klassische Titan-Brawl-Regeln mit schnellerer Jetschub-und System-Regeneration.\n^FFC83200Spieler: 5 vs. 5\nZeitlimit: 10 Min.\nMax. Party-Größe: 5" + "PL_titan_brawl_turbo_hint" "Neutralisiere gegnerische Titans.\nKein Ausstieg" + "PL_titan_brawl_turbo_lobby" "Turbo-Titan-Brawl-Lobby" + "PL_turbo_last_titan_standing" "Turbo-LTS" + "PL_turbo_last_titan_standing_abbr" "LTS" + "PL_turbo_last_titan_standing_desc" "Klassische LTS-Regeln mit schnellerer Jetschub-und System-Regeneration.\n^FFC83200Spieler: 5 vs. 5 *Starte als Titan\nZeitlimit: 3 Min. pro Runde\nMax. Party-Größe: 5" + "PL_turbo_last_titan_standing_lobby" "Turbo-LTS-Lobby" + "PL_variety_pack" "Mixtape" + "PL_variety_pack_desc" "Variierende Spielerzahlen und verschiedene Karten in diesen Modi:\n^FFC83200*Kopfgeldjagd *Materialschlacht\n*Last Titan Standing *Verstärkter Hardpoint\n*Piloten vs. Piloten *Capture the Flag" + "PL_variety_pack_lobby" "Mixtape-Lobby" + "PL_wargames" "Kriegsspiele 24/7" + "PL_wargames_abbr" "KSP" + "PL_wargames_desc" "Alle Kriegsspiele, rund um die Uhr. ^CCCCCC00Sucht nach Spielen in den Modi ^FFC83200Materialschlacht^CCCCCC00, ^FFC83200CTF^CCCCCC00, ^FFC83200Piloten vs. Piloten^CCCCCC00, ^FFC83200Verstärkter Hardpoint^CCCCCC00 und ^FFC83200Last Titan Standing^CCCCCC00." + "PL_wargames_lobby" "Kriegsspiele 24/7 – Lobby" + "WATCH_TUTORIAL" "TUTORIAL ANSEHEN" + } + } + "lang" + { + "Language" "portuguese" + "Tokens" + { + "COMMUNITYUPDATE_00_A" "Sua aventura pelas paisagens incríveis da Fronteira continua com o mais recente DLC para Titanfall 2: Cartões-postais da Fronteira. Trazendo locais novos e familiares junto de uma nova coleção de Pinturas de Guerra para Armas de Elite, a Fronteira nunca esteve tão apresentável.\n\n\nPressione `2%[A_BUTTON|MOUSE1]%`0 para visualizar." + "COMMUNITYUPDATE_00_Q" "Trailer de Cartões-postais da Fronteira" + "COMMUNITYUPDATE_01_A" "Leia sobre todas as mudanças trazidas pelo patch Cartões-postais da Fronteira.\n\n\nPressione `2%[A_BUTTON|MOUSE1]%`0 para visualizar." + "COMMUNITYUPDATE_01_Q" "Cartões-postais da Fronteira: Detalhes" + "COMMUNITYUPDATE_02_A" "Em breve nos dispositivos móveis, Titanfall: Assault é um empolgante jogo de estratégia em tempo real situado no universo de Titanfall criado em parceria com Particle City. Veja o jogo em ação aqui!\n\n\nPressione `2%[A_BUTTON|MOUSE1]%`0 para visualizar." + "COMMUNITYUPDATE_02_Q" "Trailer de lançamento de Titanfall: Assault" + "COMMUNITYUPDATE_03_A" "Iniquity nos guia pelo tutorial e oferece dicas básicas para Titanfall: Assault, a forma perfeita de conhecer o jogo.\n\n\nPressione `2%[A_BUTTON|MOUSE1]%`0 para visualizar." + "COMMUNITYUPDATE_03_Q" "Titanfall: Assault - Vídeo \"Aprenda o básico\"" + "COMMUNITYUPDATE_04_A" "Ouça algumas das principais pessoas por trás de Defesa da Fronteira falarem sobre a história e criação do modo e nos veja jogar algumas rodadas!\n\n\nPressione `2%[A_BUTTON|MOUSE1]%`0 para visualizar." + "COMMUNITYUPDATE_04_Q" "Respawn Joga: Defesa da Fronteira" + "COMMUNITYUPDATE_05_A" "Kevin Younger criou uma montagem divertida mostrando vários movimentos impressionantes com a Lâmina Sônica.\n\n\nPressione `2%[A_BUTTON|MOUSE1]%`0 para visualizar." + "COMMUNITYUPDATE_05_Q" "Criações da Comunidade: Direto ao Ponto" + "COMMUNITYUPDATE_06_A" "ConzeyG via Reddit demonstra eficiência brutal com a Northstar eliminando Pilotos no modo Marcado para Morrer.\n\n\nPressione `2%[A_BUTTON|MOUSE1]%`0 para visualizar." + "COMMUNITYUPDATE_06_Q" "Criações da Comunidade: Caça com a Northstar" + "COMMUNITYUPDATE_07_A" "Já disponível! Defesa da Fronteira retorna junto de Elevação, além de novas pinturas de guerra à venda e um novo mapa de Queima-roupa. Veja tudo aqui.\n\n\nPressione `2%[A_BUTTON|MOUSE1]%`0 para visualizar." + "COMMUNITYUPDATE_07_Q" "Trailer de Operação Escudo da Fronteira" + "COMMUNITYUPDATE_08_A" "Já disponível! O icônico mapa Jogos de Guerra retorna para Titanfall 2 mais bonito do que nunca. Confira também a nova execução e o novo mapa de Queima-roupa, Tráfego, em ação.\n\n\nPressione `2%[A_BUTTON|MOUSE1]%`0 para visualizar." + "COMMUNITYUPDATE_08_Q" "Trailer de jogabilidade de \"Jogos de Guerra\"" + "COMMUNITYUPDATE_09_A" "Este DLC adiciona o 7º Titã do multiplayer: Monarch, uma versão remasterizada do mapa Relíquia, uma nova execução, além de colocar à venda os Titãs Prime Ronin e Tone, mais camuflagens, fundos de distintivo e decorações. Assista à ação aqui.\n\n\nAperte `2%[A_BUTTON|MOUSE1]%`0 para visualizar." + "COMMUNITYUPDATE_09_Q" "Trailer de jogabilidade: Reino do Monarca" + "COMMUNITYUPDATE_10_A" "Nem tudo é o que parece na Fronteira - prepare-se para entrar no mais novo pacote de DLC gratuito para Titanfall 2: Falha na Fronteira, trazendo o novo mapa \"Falha\". Inspirado no planeta natal do Capitão Lastimosa, Harmony, o ambiente é dominado por quedas verticais e longos caminhos tortuosos, em um cenário perfeito para encadear longas corridas por paredões e pairar por toda parte. E um novo mapa de Queima-roupa se junta ao conjunto: Convés, com seus espaços internos estreitos, pátios expostos e drones vigilantes circulando sobre sua cabeça. Se você se sentir sobrecarregado, os sempre prestativos Marvins agora estão na área como uma facção inteiramente nova, para dar aquela mãozinha robótica. Finalmente, está disponível a nova execução Lâmina Sônica, para ser usada sempre que for preciso marcar presença.\n\n\nPressione `2%[A_BUTTON|MOUSE1]%`0 para visualizar." + "COMMUNITYUPDATE_10_Q" "Trailer de jogabilidade: Falha na Fronteira" + "COMMUNITYUPDATE_11_A" "É o retorno de um mapa icônico para multiplayer, favorito dos fãs do primeiro Titanfall: Colônia. Com a adição das novas táticas e Titãs de Titanfall 2, os Pilotos e Titãs terão que redobrar a atenção para sobreviver nesta vila idílica e compacta, cheia de becos estreitos, curvas cegas e telhados expostos. Disponível gratuitamente para todos os jogadores a partir do dia 30 de março. O pacote do DLC \"Colônia Renascida\" inclui o retorno de armas clássicas, como o fuzil de assalto modificado R-101, uma nova execução corpo a corpo e novas opções estéticas para você ter o melhor visual enquanto pinta a cidade de vermelho.\n\n\nPressione `2%[A_BUTTON|MOUSE1]%`0 para visualizar." + "COMMUNITYUPDATE_11_Q" "Trailer de jogabilidade: Colônia Renascida" + "COMMUNITYUPDATE_12_A" "Apresentamos Queima-roupa, um modo de jogo ultrarrápido exclusivo para confrontos 6 contra 6 entre Pilotos, com foco na competição e no combate a curta distância. Contém dois novos mapas, criados especialmente para esse modo: Pilhas e Prado. São ambientes fechados e mortais, criados sob medida para a natureza ágil e intensa desse modo. \n\n\nPressione `2%[A_BUTTON|MOUSE1]%`0 para visualizar." + "COMMUNITYUPDATE_12_Q" "Trailer: Bem-vindo a Queima-roupa" + "COMMUNITYUPDATE_13_A" "Experimente a versão renovada de um mapa favorito dos fãs no primeiro Titanfall: `1Angel City`0. Aguarde o primeiro DLC grátis de Titanfall 2, `1O Mais Procurado de Angel City`0, disponível dia 1º de dezembro para todos os jogadores. Esse conteúdo inclui novas opções estéticas para adicionar ainda mais bom gosto à Fronteira. \n\n\nPressione `2%[A_BUTTON|MOUSE1]%`0 para visualizar." + "COMMUNITYUPDATE_13_Q" "Trailer: Bem-vindo a Angel City" + "COMMUNITYUPDATE_14_A" "Que bom que você voltou.\n\n\nPressione `2%[A_BUTTON|MOUSE1]%`0 para visualizar." + "COMMUNITYUPDATE_14_Q" "Trailer: \"Bis\"" + "COMMUNITYUPDATE_15_A" "Duas lendas, um legado.\n\n\nPressione `2%[A_BUTTON|MOUSE1]%`0 para visualizar." + "COMMUNITYUPDATE_15_Q" "Trailer de jogabilidade: Tornem-se Um" + "COMMUNITYUPDATE_16_A" "Sem limites.\n\n\nPressione `2%[A_BUTTON|MOUSE1]%`0 para visualizar." + "COMMUNITYUPDATE_16_Q" "Trailer de jogabilidade (multiplayer): Pilotos" + "COMMUNITYUPDATE_DESC" "`3Atualizações da Comunidade de Titanfall`0\n\nInformações e links da web.\n\nPara mais:\n`2%$rui/bullet_point%`0Siga-nos no Twitter `1@Respawn`0\n`2%$rui/bullet_point%`0Curta nossa página em `1facebook.com/RespawnEntertainment`0\n`2%$rui/bullet_point%`0Junte-se a nós em `1www.respawn.com`0" + "COMMUNITYUPDATE_NAME" "Comunidade" + "KNB_SUBJECT_00_DESC" "`3Quais as novidades de Titanfall?`0\n\nConfira aqui o que mudou em Titanfall 2!" + "KNB_SUBJECT_00_NAME" "Atualizações do jogo" + "KNB_SUBJECT_00_SUB_00_A" "`2%$rui/bullet_point%`010 Novas insígnias de Distintivos criadas pela comunidade\n\n`2%$rui/bullet_point%`0Agora é possível comprar todos os presentes do colaborador com créditos\n\n`2%$rui/bullet_point%`0Novo conteúdo da loja para comprar\n\n" + "KNB_SUBJECT_00_SUB_00_Q" "%$rui/hud/scoreboard/status_titan% 28 de novembro - Época de Colheita" + "KNB_SUBJECT_00_SUB_01_A" "`2%$rui/bullet_point%`0Espaço Principal de Pistola\n\n`2%$rui/bullet_point%`0Insígnias de Dia das Bruxas\n\n`2%$rui/bullet_point%`0Alterações no Equilíbrio\n\n`2%$rui/bullet_point%`0Novo Conteúdo Para Compras na Loja\n\n" + "KNB_SUBJECT_00_SUB_01_Q" "%$rui/hud/scoreboard/status_titan% 31 de outubro - Travessuras e Gostosuras" + "KNB_SUBJECT_00_SUB_02_A" "`2%$rui/bullet_point%`0Defesa da Fronteira - Suporte para mais 3 mapas - Doca Seca, Angel City e Exoplaneta.\n\n`2%$rui/bullet_point%`0Novo mapa do Queima-roupa - UMA\n\n`2%$rui/bullet_point%`0Nova execução de Piloto - Parede Perfurada\n\n`2%$rui/bullet_point%`0Novo conteúdo à venda na Loja" + "KNB_SUBJECT_00_SUB_02_Q" "%$rui/hud/scoreboard/status_titan% 29 de agosto - Cartões-postais da Fronteira" + "KNB_SUBJECT_00_SUB_03_A" "`2%$rui/bullet_point%`0Defesa da Fronteira - Um novo modo cooperativo no qual você une forças com até três jogadores para defender um objetivo vital contra as ondas cada vez mais intensas de combatentes da IA. Comunicação e adaptabilidade são as chaves para sobreviver.\n\n`2%$rui/bullet_point%`0Novo Mapa - Elevação\n\n`2%$rui/bullet_point%`0Novo mapa do Queima-roupa - Cidade\n\n`2%$rui/bullet_point%`0Novo conteúdo na Loja" + "KNB_SUBJECT_00_SUB_03_Q" "%$rui/hud/scoreboard/status_titan% 25/07 - Operação Escudo da Fronteira" + "KNB_SUBJECT_00_SUB_04_A" "`2%$rui/bullet_point%`0Novo mapa - Jogos de Guerra\n\n`2%$rui/bullet_point%`0Novo mapa de Queima-roupa - Tráfego\n\n`2%$rui/bullet_point%`0Nova execução de Piloto - Boxe Simulado\n\n`2%$rui/bullet_point%`03º espaço de arma\n\n`2%$rui/bullet_point%`0Configurações de partida privada" + "KNB_SUBJECT_00_SUB_04_Q" "%$rui/hud/scoreboard/status_titan% 27/06 - Jogos de Guerra" + "KNB_SUBJECT_00_SUB_05_A" "`2%$rui/bullet_point%`0Novo Titã - Monarch\n\n`2%$rui/bullet_point%`0Novo mapa - Relíquia\n\n`2%$rui/bullet_point%`0Nova execução de Piloto - Agora Você Me Vê\n\n`2%$rui/bullet_point%`0Novo conteúdo à venda na Loja" + "KNB_SUBJECT_00_SUB_05_Q" "%$rui/hud/scoreboard/status_titan% 30/05 - Reino do Monarca" + "KNB_SUBJECT_00_SUB_06_A" "`2%$rui/bullet_point%`0Novo mapa - Falha\n\n`2%$rui/bullet_point%`0Novo mapa de Queima-roupa - Convés\n\n`2%$rui/bullet_point%`0Nova facção - M.R.V.N.\n\n`2%$rui/bullet_point%`0Nova execução de Piloto - Direto ao Ponto\n\n`2%$rui/bullet_point%`0Geração máxima aumentada para 100" + "KNB_SUBJECT_00_SUB_06_Q" "%$rui/hud/scoreboard/status_titan% 25/04 - Falha na Fronteira" + "KNB_SUBJECT_00_SUB_07_A" "`2%$rui/bullet_point%`0Novo mapa - Colônia\n\n`2%$rui/bullet_point%`0Nova execução de Piloto - Esmaga-crânio\n\n`2%$rui/bullet_point%`0Nova arma - R-101\n\n`2%$rui/bullet_point%`0Novo conteúdo à venda na Loja" + "KNB_SUBJECT_00_SUB_07_Q" "%$rui/hud/scoreboard/status_titan% 30/03 - Colônia Renascida" + "KNB_SUBJECT_00_SUB_08_A" "`2%$rui/bullet_point%`0Queima-roupa - Um novo modo de eliminação entre Pilotos! As partidas são disputadas em rodadas de 6v6 sem reaparecimento. Você terá um minuto para eliminar a equipe inimiga e vencer a rodada. Também é possível vencer se sua equipe estiver em posse da bandeira neutra quando o tempo acabar. A primeira equipe a vencer 5 rodadas ganha a partida.\n\n`2%$rui/bullet_point%`0Novo mapa de Queima-roupa - Prado\n\n`2%$rui/bullet_point%`0Novo mapa de Queima-roupa - Pilhas\n\n`2%$rui/bullet_point%`0Nova execução de Piloto - Golpe Atrasado" + "KNB_SUBJECT_00_SUB_08_Q" "%$rui/hud/scoreboard/status_titan% 23/02 - Queima-roupa" + "KNB_SUBJECT_00_SUB_09_A" "`2%$rui/bullet_point%`0Novo mapa - Angel City\n\n`2%$rui/bullet_point%`0Nova arma - B3 Wingman de Elite\n\n`2%$rui/bullet_point%`0Nova execução de Piloto - De Dentro para Fora\n\n`2%$rui/bullet_point%`0Novos kits de Titã\n\n`2%$rui/bullet_point%`0Novo conteúdo à venda na Loja" + "KNB_SUBJECT_00_SUB_09_Q" "%$rui/hud/scoreboard/status_titan% 30/11 - O Mais Procurado de Angel City" + "MP_ANGEL_CITY_FD_WAVE_1" "Ligados aos Céus" + "MP_ANGEL_CITY_FD_WAVE_2" "Sem Formas" + "MP_ANGEL_CITY_FD_WAVE_3" "Insurgência" + "MP_ANGEL_CITY_FD_WAVE_4" "Uma Turma Aguerrida" + "MP_ANGEL_CITY_FD_WAVE_5" "Rolando os Dados" + "MP_DRYDOCK_FD_WAVE_1" "Nadando Contra a Corrente" + "MP_DRYDOCK_FD_WAVE_2" "Eles estão sem balas!" + "MP_DRYDOCK_FD_WAVE_3" "Ofuscado pela ciência" + "MP_DRYDOCK_FD_WAVE_4" "Sistema de Alta Pressão" + "MP_DRYDOCK_FD_WAVE_5" "Olho do Furacão" + "MP_THAW_FD_WAVE_1" "Consciência da Situação" + "MP_THAW_FD_WAVE_2" "A União Faz a Força" + "MP_THAW_FD_WAVE_3" "Capanga 21" + "MP_THAW_FD_WAVE_4" "Brincando com Fogo" + "MP_THAW_FD_WAVE_5" "Sirva Bem às Armas" + "NO_PRICE" "Oferta expirada" + "NO_PRICE_TWO_LINES" "Oferta\nexpirada" + "PL_aegis_last_titan_standing" "SdT Égide" + "PL_aegis_last_titan_standing_abbr" "SdTE" + "PL_aegis_last_titan_standing_desc" "Melhorias Égide ativadas. Partida de eliminação por rodada. O primeiro a ganhar 3 rodadas vence.\n^FFC83200Jogadores: 5v5 *Começa como Titã\nLimite de tempo: 3 minutos por rodada *Sem reaparecimento\nTamanho máximo do grupo: 5" + "PL_aegis_last_titan_standing_lobby" "PL_aegis_last_titan_standing_lobby" + "PL_aegis_titan_brawl" "Disputa de Titãs Égide" + "PL_aegis_titan_brawl_abbr" "DdTE" + "PL_aegis_titan_brawl_desc" "Elimine Titãs inimigos. Melhorias Égide ativadas.\n^FFC83200Jogadores: 5v5\nLimite de tempo: 10 min.\nTamanho máximo do grupo: 5" + "PL_aegis_titan_brawl_hint" "Elimine Titãs inimigos.\nSem ejeção" + "PL_aegis_titan_brawl_lobby" "Sala de espera: Disputa de Titãs Égide" + "PL_aitdm" "Exaustão" + "PL_aitdm_abbr" "EXA" + "PL_aitdm_desc" "Elimine todos os inimigos.\n^FFC83200Jogadores: 6v6 *IA\nLimite de tempo: 10 min\nTamanho máximo do grupo: 6" + "PL_aitdm_lobby" "Sala de espera: Exaustão" + "PL_all_grapple" "Ataque com Gancho" + "PL_all_grapple_abbr" "EXA" + "PL_all_grapple_desc" "Regras de Exaustão clássicas, exceto todas as habilidades Táticas, são substituídas com Gancho.\n^FFC83200Jogadores: 6v6 *IA\nLimite de tempo: 10 min.\nTamanho máximo do grupo: 6" + "PL_all_grapple_lobby" "Sala de espera: Ataque com Gancho" + "PL_all_holopilot" "A Grande Trapaça" + "PL_all_holopilot_abbr" "QR" + "PL_all_holopilot_desc" "Regras de Queima-roupa clássicas, exceto todas as habilidades Táticas, são substituídas com Holopiloto.\n^FFC83200Jogadores: 6v6 *Sem Titãs\nLimite de tempo: 60 seg.\nTamanho máximo do grupo: 6" + "PL_all_holopilot_lobby" "Sala de espera: A Grande Trapaça" + "PL_all_phase" "O Outrolado" + "PL_all_phase_abbr" "EXA" + "PL_all_phase_desc" "Regras de Exaustão clássicas, exceto todas as habilidades Táticas, são substituídas com Cronossalto.\n^FFC83200Jogadores: 6v6 *IA\nLimite de tempo: 10 min.\nTamanho máximo do grupo: 6" + "PL_all_phase_lobby" "Sala de espera: O Outrolado" + "PL_all_spicy" "Exaustão Apimentada" + "PL_all_spicy_abbr" "EXA" + "PL_all_spicy_desc" "Regras de Exaustão clássicas, exceto todas as habilidades Táticas, são substituídas com Pulgões.\n^FFC83200Jogadores: 6v6 *IA\nLimite de tempo: 10 min.\nTamanho máximo do grupo: 6" + "PL_all_spicy_lobby" "Sala de espera: Exaustão Apimentada" + "PL_amped_tacticals" "Táticas Melhoradas" + "PL_amped_tacticals_abbr" "EXA" + "PL_amped_tacticals_desc" "Regras de Exaustão clássicas, exceto que todas as habilidades Táticas são mais potentes.\n^FFC83200Jogadores: 6v6 *IA\nLimite de tempo: 10 min.\nTamanho máximo do grupo: 6" + "PL_amped_tacticals_lobby" "Sala de espera: Táticas Melhoradas" + "PL_ANGEL_CITY" "Angel City Permanente" + "PL_angel_city_abbr" "AC" + "PL_angel_city_desc" "Somente Angel City, o tempo todo.\n^FFC83200*Recompensa *Exaustão\n*PCA" + "PL_angel_city_lobby" "Sala de espera: Angel City Permanente" + "PL_at_coop" "Fuga (Coop)" + "PL_at_coop_desc" "Você acaba de fugir da prisão só com uma pistola. Sobreviva até o transporte de evacuação chegar. Elimine inimigos para ganhar dinheiro e comprar armas. \n^FFC83200Jogadores: 6\nTamanho máximo do grupo: 6" + "PL_at_coop_lobby" "Sala de espera de Fuga" + "PL_attrition" "Recompensa" + "PL_attrition_abbr" "REC" + "PL_attrition_desc" "Elimine os inimigos para ganhar dinheiro. Deposite os bônus em locais específicos para receber ainda mais.\n^FFC83200Jogadores: 5v5 *IA\nLimite de tempo: 10 min\nTamanho máximo do grupo: 5" + "PL_attrition_lobby" "Sala de espera: Recompensa" + "PL_capture_the_flag" "Captura de Bandeira" + "PL_capture_the_flag_abbr" "CDB" + "PL_capture_the_flag_desc" "Roube a bandeira do inimigo e leve-a para a sua base. Não deixe os inimigos pegarem a sua bandeira!\n^FFC83200Jogadores: 5v5\nLimite de tempo: 12 min\nTamanho máximo do grupo: 5" + "PL_capture_the_flag_lobby" "Sala de espera: CdB" + "PL_coliseum" "Coliseu" + "PL_coliseum_desc" "Duelo com mobilidade extra numa jaula. Elimine seu oponente para vencer a rodada. Melhor de 5 ganha um Presente do Colaborador.^FFC83200\nJogadores: 1v1 *Sem Titãs\nLimite de tempo: 3 min. *Sem reaparecimento\n**^FFFFFF00REQUER BILHETE DO COLISEU ou PAGAMENTO DA TAXA DE ENTRADA" + "PL_coliseum_lobby" "Sala de espera: Coliseu" + "PL_colony" "Colônia Permanente" + "PL_colony_abbr" "COL" + "PL_colony_desc" "Somente Colônia, o tempo todo. ^CCCCCC00Isto vai buscar partidas de ^FFC83200Exaustão^CCCCCC00, ^FFC83200Pilotos vs Pilotos^CCCCCC00 e ^FFC83200Sobrevivência de Titã^CCCCCC00." + "PL_colony_lobby" "Sala de espera de Colônia Permanente" + "PL_ctf_lf" "CdB (Nitro)" + "PL_ctf_lf_abbr" "CdB-N" + "PL_ctf_lf_desc" "Captura de Bandeira frenética em mapas selecionados.\n^FFC83200Jogadores: 5v5\nTamanho máximo do grupo: 5\n^F4D5A600Retorno Imediato de Bandeira" + "PL_ctf_lf_lobby" "Sala de espera: CdB Nitro" + "PL_default_description" "Descrição padrão" + "PL_default_lobbytitle" "Título de sala padrão" + "PL_default_name" "Nome padrão" + "PL_don" "Dobro ou Nada" + "PL_fd" "Defesa da Fronteira" + "PL_fd_desc" "Defenda-se contra ondas da Frota Remanescente" + "PL_fd_easy" "Defesa da Fronteira: Fácil" + "PL_fd_easy_desc" "Destrua a oposição" + "PL_fd_easy_lobby" "Defesa da Fronteira: Sala de espera (Fácil)" + "PL_fd_hard" "Defesa da Fronteira: Difícil" + "PL_fd_hard_desc" "Requer habilidade" + "PL_fd_hard_lobby" "Defesa da Fronteira: Sala de espera (Difícil)" + "PL_fd_insane" "Defesa da Fronteira: Insana" + "PL_fd_insane_desc" "Você não vai sobreviver" + "PL_fd_insane_lobby" "Sala de espera: Defesa da Fronteira (Insana)" + "PL_fd_lobby" "Sala de espera Defesa da Fronteira" + "PL_fd_master" "Defesa da Fronteira: Mestre" + "PL_fd_master_desc" "Somente os melhores entre os melhores têm êxito" + "PL_fd_master_lobby" "Sala de espera: Defesa da Fronteira (Mestre)" + "PL_fd_normal" "Defesa da Fronteira: Normal" + "PL_fd_normal_desc" "Recomendado para jogadores experientes" + "PL_fd_normal_lobby" "Defesa da Fronteira: Sala de espera (Normal)" + "PL_ffa" "Cada Um por Si" + "PL_ffa_abbr" "CPS" + "PL_ffa_desc" "Salve-se quem puder, elimine todos os inimigos.\n^FFC83200Jogadores: 1v11\nLimite de tempo: 10 min\nTamanho máximo do grupo: 1" + "PL_ffa_lobby" "Sala de espera: CUPS" + "PL_fra" "Contrato Livre" + "PL_fra_abbr" "CL" + "PL_fra_desc" "Você está por conta própria. Elimine inimigos para vencer. Junte 3 baterias para chamar um Titã.\n^FFC83200Jogadores: 1v11\nLimite de tempo: 15 min.\nTamanho máximo do grupo: 1" + "PL_fra_lobby" "Sala de espera: CL" + "PL_groud_war_lobby" "Sala de espera: Variedade 8v8" + "PL_ground_war" "Variedade 8v8" + "PL_ground_war_abbr" "8v8" + "PL_ground_war_desc" "Inclui Duelos e Ponto de Controle Amplificado com mais jogadores em todos os mapas.\n^FFC83200Jogadores: 8v8" + "PL_hardpoint" "PCA" + "PL_hardpoint_abbr" "PCA" + "PL_hardpoint_desc" "Capture e mantenha um ponto de controle para acumular pontos. Os Pontos de Controle Amplificados dão pontos em dobro.\n^FFC83200Jogadores: 6v6\nLimite de tempo: 10 min\nTamanho máximo do grupo: 6" + "PL_hardpoint_lobby" "Sala de espera: PCA" + "PL_hunted" "Caçada" + "PL_iron_last_titan_standing" "SdT - Aço" + "PL_iron_last_titan_standing_abbr" "SdTA" + "PL_iron_last_titan_standing_desc" "Partida de rodadas eliminatórias, exclusiva para Titãs. Vence quem conquistar 3 rodadas primeiro.\n^FFC83200Jogadores: 5v5 *SEM PILOTOS\nLimite de tempo: 3 minutos por rodada *Sem reaparecimento\nTamanho máximo do grupo: 5" + "PL_iron_last_titan_standing_lobby" "PL_iron_last_titan_standing_lobby" + "PL_last_titan_standing" "Sobrevivência de Titã" + "PL_last_titan_standing_abbr" "SdT" + "PL_last_titan_standing_desc" "Todos os jogadores já começam com Titãs nessa partida de eliminação por rodada. O primeiro a ganhar 3 rodadas vence.\n^FFC83200Jogadores: 5v5 *Começa com Titã\nLimite de tempo: 3 min por rodada *Sem reaparecimento\nTamanho máximo do grupo: 5" + "PL_last_titan_standing_lobby" "Sala de espera: SdT" + "PL_limited_time_mode" "Por tempo limitado" + "PL_live_fire" "Queima-roupa" + "PL_live_fire_abbr" "QR" + "PL_live_fire_desc" "Combate frenético em uma arena de Queima-roupa. Vença a rodada eliminando todos os Pilotos inimigos ou controlando a bandeira quando o tempo acabar.^FFC83200\nJogadores: 6v6 *Sem Titãs\nLimite de tempo: 60 seg. *Sem reaparecimentos\nTamanho máximo do grupo: 6" + "PL_live_fire_lobby" "Sala de Espera: Queima-roupa" + "PL_load_a_map_on_the_command_line" "Carregue um mapa na linha de comando -apenas desenvolvedores" + "PL_marked_for_death" "Marcado para Morrer" + "PL_marked_for_death_abbr" "MPM" + "PL_marked_for_death_desc" "Elimine ou proteja os alvos marcados.\n^FFC83200Jogadores: 6v6 \nLimite de tempo: 12m\nTamanho máximo do grupo: 6" + "PL_marked_for_death_lobby" "Sala de espera: Marcado para Morrer" + "PL_nitro_ffa" "CPS (Nitro)" + "PL_nitro_ffa_abbr" "CPS-N" + "PL_nitro_ffa_desc" "Cada Um Por Si frenético nos mapas selecionados.\n^FFC83200Jogadores: 6\n^F4D5A600Sem Titãs\nSem reforços" + "PL_nitro_ffa_lobby" "Sala de espera: CPS Nitro" + "PL_nitro_mixtape" "Variedade (Nitro)" + "PL_nitro_mixtape_abbr" "VAR-N" + "PL_nitro_mixtape_desc" "CdB, MPM e JxJ frenéticos em mapas selecionados.\n^FFC83200Jogadores: 5v5\nTamanho máximo do grupo: 5\n^F4D5A600Retorno Imediato de Bandeira" + "PL_nitro_mixtape_lobby" "Sala de espera: Variedade" + "PL_pilot_hunter" "Duelos" + "PL_pilot_hunter_abbr" "DUE" + "PL_pilot_hunter_desc" "Elimine Pilotos e Titãs inimigos. \n^FFC83200Jogadores: 8v8\nLimite de tempo: 10 min\nTamanho máximo do grupo: 8" + "PL_pilot_hunter_lobby" "Sala de espera: Duelos" + "PL_pilot_skirmish" "Pilotos vs. Pilotos" + "PL_pilot_skirmish_abbr" "PvP" + "PL_pilot_skirmish_desc" "Elimine os Pilotos inimigos. Não há lançamentos de Titãs.\n^FFC83200Jogadores: 8v8 *Sem Titãs\nLimite de tempo: 10 min\nTamanho máximo do grupo: 8" + "PL_pilot_skirmish_lobby" "Sala de espera: PvP" + "PL_pl_rebuild_all_paths" "Reconstruir todos os caminhos" + "PL_pl_run_with_ai_ainrebuildonmapstart_2" "Executar com ai_ainRebuildOnMapStart 2" + "PL_private_match" "Partida Privada (Beta)" + "PL_private_match_desc" "Jogue uma partida privada personalizada em um mapa ou modo de sua escolha.\n^FFC83200CONVIDE A REDE ou CONVIDE OS AMIGOS para jogar.\n^FFC83200Jogadores: 1 a 16\nSem progresso" + "PL_private_match_lobby" "Sala de Espera Privada (Beta)" + "PL_promo_coop" "Cooperação para 4 jogadores" + "PL_raid" "Incursão" + "PL_rise" "Elevação Permanente" + "PL_rise_abbr" "ELE" + "PL_rise_desc" "Somente Elevação, o tempo todo. ^CCCCCC00Isto vai buscar partidas de ^FFC83200CdB^CCCCCC00, ^FFC83200Ponto de Controle Amplificado^CCCCCC00, ^FFC83200Pilotos vs Pilotos^CCCCCC00, ^FFC83200Queima-roupa^CCCCCC00 e ^FFC83200Sobrevivência de Titã^CCCCCC00." + "PL_rise_lobby" "Sala de espera: Elevação Permanente" + "PL_rocket_arena" "Arena de Foguetes" + "PL_rocket_arena_abbr" "QR" + "PL_rocket_arena_desc" "Regras de Queima-roupa clássicas, com EPGs modificadas.^FFC83200Jogadores: 6v6 *Sem Titãs\nLimite de tempo: 90 seg.\nTamanho máximo do grupo: 6" + "PL_rocket_arena_lobby" "Sala de espera: Arena de Foguetes" + "PL_settings_for_when_someone_loads_a_map_on_the_command_line_do_not_edit_the_cmdlinemapload_1_below_-_this_makes_this_work" "Configurações para quando alguém carrega um mapa na linha de comando. Não edite cmdlineMapLoad 1 abaixo - isso faz isso funcionar." + "PL_speedball" "Queima-roupa" + "PL_speedball_desc" "Lute pela posse de uma bandeira neutra. Elimine a equipe inimiga ou esteja com a bandeira quando o tempo acabar para vencer a rodada. Vence a equipe que ganhar 5 rodadas primeiro.\n^FFC83200Jogadores: 6v6 *Sem Titãs\nLimite de tempo: 60 segundos por rodada *Sem reaparecimento\nTamanho máximo do grupo: 6" + "PL_speedball_lobby" "Sala de Espera: Queima-roupa" + "PL_tactikill" "Exaustão em Eliminação Tática" + "PL_tactikill_abbr" "EXA" + "PL_tactikill_desc" "Regras de Exaustão clássicas, exceto que todas as habilidades Táticas são totalmente reiniciadas com uma eliminação.\n^FFC83200Jogadores: 6v6 *IA\nLimite de tempo: 10 min.\nTamanho máximo do grupo: 6" + "PL_tactikill_lobby" "Sala de espera: Exaustão em Eliminação Tática" + "PL_titan_brawl" "Disputa de Titãs" + "PL_titan_brawl_abbr" "DdT" + "PL_titan_brawl_desc" "Elimine Titãs inimigos. Proibido Pilotos.\n^FFC83200Jogadores: 5v5\nLimite de tempo: 10 min.\nTamanho máximo do grupo: 5" + "PL_titan_brawl_hint" "Elimine Titãs inimigos.\nSem ejeção" + "PL_titan_brawl_lobby" "Sala de espera: Disputa de Titãs" + "PL_titan_brawl_turbo" "Disputa de Titãs Turbo" + "PL_titan_brawl_turbo_abbr" "DdT" + "PL_titan_brawl_turbo_desc" "Regras de Disputa de Titãs clássicas com regeneração de Arrancada e geração de Núcleo mais rápidas.\n^FFC83200Jogadores: 5v5\nLimite de tempo: 10 min.\nTamanho máximo do grupo: 5" + "PL_titan_brawl_turbo_hint" "Elimine Titãs inimigos.\nSem ejeção" + "PL_titan_brawl_turbo_lobby" "Sala de espera: Disputa de Titãs Turbo" + "PL_turbo_last_titan_standing" "SdT Turbo" + "PL_turbo_last_titan_standing_abbr" "SdT" + "PL_turbo_last_titan_standing_desc" "Regras de SdT clássicas com regeneração de Arrancada e geração de Núcleo mais rápidas.\n^FFC83200Jogadores: 5v5 *Inicia como Titã\nLimite de tempo: 3 min. por rodada *Sem reaparecimentos\nTamanho máximo do grupo: 5" + "PL_turbo_last_titan_standing_lobby" "Sala de espera: SdT Turbo" + "PL_variety_pack" "Variedade" + "PL_variety_pack_desc" "Número variável de jogadores e inclui uma variedade de mapas nos seguintes modos:\n^FFC83200*Recompensa *Exaustão\n*Sobrevivência de Titã *Ponto de Controle Amplificado\n*Pilotos vs. Pilotos *Captura de Bandeira" + "PL_variety_pack_lobby" "Sala de espera: Variedade" + "PL_wargames" "Jogos de Guerra Permanente" + "PL_wargames_abbr" "JDG" + "PL_wargames_desc" "Somente Jogos de Guerra, o tempo todo. ^CCCCCC00Isto vai buscar partidas de ^FFC83200Exaustão^CCCCCC00, ^FFC83200Pilotos vs Pilotos^CCCCCC00, ^FFC83200Ponto de Controle Amplificado^CCCCCC00 e ^FFC83200Sobrevivência de Titã^CCCCCC00." + "PL_wargames_lobby" "Sala de espera: Jogos de Guerra Permanente" + "WATCH_TUTORIAL" "ASSISTA AO TUTORIAL" + } + } + "lang" + { + "Language" "japanese" + "Tokens" + { + "COMMUNITYUPDATE_00_A" "フロンティアの絶景を巡る冒険は、タイタンフォール 2の最新DLC、フロンティアからのポストカードの登場でさらに続きます。新スポットやお馴染みのスポットに加え、多彩な新しい武器用エリートウォーペイントが加わって、フロンティアの彩りがかつてなく豊かになりました。\n\n\n`2%[A_BUTTON|MOUSE1]% `0で視聴。" + "COMMUNITYUPDATE_00_Q" "「フロンティアからのポストカード」トレーラー" + "COMMUNITYUPDATE_01_A" "フロンティアからのポストカードのパッチで変更された点をすべてご紹介します。\n\n\n`2%[A_BUTTON|MOUSE1]% `0で表示。" + "COMMUNITYUPDATE_01_Q" "フロンティアからのポストカード:パッチノート" + "COMMUNITYUPDATE_02_A" "「タイタンフォール アサルト」がモバイルに近日登場。Particle Cityとの提携で生まれた、タイタンフォールの世界を舞台にした白熱のリアルタイム・ストラテジーゲームです。ゲーム動画はこちら!\n\n\n`2%[A_BUTTON|MOUSE1]% `0で視聴。" + "COMMUNITYUPDATE_02_Q" "タイタンフォール アサルト「ローンチ」トレーラー" + "COMMUNITYUPDATE_03_A" "Iniquity氏が「タイタンフォール アサルト」のチュートリアルをプレイしながら、基本的なアドバイスを紹介します。ゲームの初歩を覚えるのに最適です。\n\n\n`2%[A_BUTTON|MOUSE1]% `0で表示。" + "COMMUNITYUPDATE_03_Q" "タイタンフォール アサルト:「入門」動画" + "COMMUNITYUPDATE_04_A" "フロンティアディフェンスの主な製作スタッフが、モードの歴史と制作について語り、ラウンドをプレイします!\n\n\n`2%[A_BUTTON|MOUSE1]% `0で視聴" + "COMMUNITYUPDATE_04_Q" "スタッフプレイ:フロンティアディフェンス" + "COMMUNITYUPDATE_05_A" "Kevin Younger氏から、華麗にパルスブレードを操る様子を大量に収めた楽しいダイジェスト動画が届きました。\n\n\n`2%[A_BUTTON|MOUSE1]% `0で視聴" + "COMMUNITYUPDATE_05_Q" "コミュニティー作品:敵はそこだ" + "COMMUNITYUPDATE_06_A" "redditのConzeyG氏が、マーク・フォー・デスでノーススターが残酷なまでの効率でパイロットの息の根を止める様子を披露してくれました。\n\n\n`2%[A_BUTTON|MOUSE1]% `0で表示。" + "COMMUNITYUPDATE_06_Q" "コミュニティー作品:ノーススターのハント" + "COMMUNITYUPDATE_07_A" "好評配信中!フロンティアディフェンスとマップ「ライズ」が復活。さらに新ウォーペイントの販売が始まり、ライブファイアに新マップが登場。実際のプレイの様子をご覧ください。\n\n\n`2%[A_BUTTON|MOUSE1]% `0で視聴。" + "COMMUNITYUPDATE_07_Q" "「フロンティアシールド作戦」GPトレーラー" + "COMMUNITYUPDATE_08_A" "配信開始!シリーズを代表するマップ「ウォーゲームズ」が美しさを増してタイタンフォール 2に戻ってきました。また、新処刑攻撃とライブファイアの新マップ「交通」もご紹介します。\n\n\n`2%[A_BUTTON|MOUSE1]% `0で視聴。" + "COMMUNITYUPDATE_08_Q" "「ウォーゲームズ」ゲームプレイトレーラー" + "COMMUNITYUPDATE_09_A" "今回のDLCでは、7体目のマルチプレイヤー用新タイタン「モナーク」とリマスター版マップ「レリック」、新処刑攻撃の配信に加え、販売アイテムにローニン・トーン用のプライムタイタンと新しい迷彩、バナー、ノーズアートが登場します。動画はこちら。\n\n\n`2%[A_BUTTON|MOUSE1]% `0で視聴。" + "COMMUNITYUPDATE_09_Q" "「モナークレイン」ゲームプレイトレーラー" + "COMMUNITYUPDATE_10_A" "フロンティアでは目に映るものがすべてではない。新マップ「グリッチ」を収録したタイタンフォール 2用最新無料DLCパック、「フロンティアのグリッチ」の登場に備えよう。ラスティモーサ大尉の故郷、惑星ハーモニーをモチーフに作成された、垂直にそびえる壁と長く蛇行した道が大半を占めるマップで、長距離のウォールランを繋げ、マップ中を滑らかに疾走するのにぴったりの構成となっています。ライブファイア用新マップ、デッキも登場。タイトな内部空間と開けた中庭、上空を旋回する監視ドローンが特徴です。ピンチな時は、マービンたちが力を貸してくれます。そして、パルスブレードを使った、敵を刃で貫く新処刑攻撃がアンロック可能となりました。\n\n\n`2%[A_BUTTON|MOUSE1]%`0 で再生。" + "COMMUNITYUPDATE_10_Q" "「フロンティアのグリッチ」 トレーラー" + "COMMUNITYUPDATE_11_A" "ファンの間で人気の高い初代の伝説のマルチプレイヤーマップ「植民地」に戻りましょう。「タイタンフォール 2」から登場した新しい戦術アビリティとタイタンの知識を活かさなければ、裏通りや見通しの利かない曲がり角、むき出しの屋上エリアから成る密集度の高い牧歌的な村落で、パイロットとタイタンが生き延びることはできません。マップは3月30日より全プレイヤーに無料配信。DLCパック「コロニーリボーン」には他にも、新デザインのR-101アサルトライフルといった前作でお馴染みの武器に加え、グラップルを使った新しい処刑攻撃、街を最高に格好良く血に染める有料の新装飾アイテムを収録しています。\n\n\n`2%[A_BUTTON|MOUSE1]%`0 で再生。" + "COMMUNITYUPDATE_11_Q" "「コロニーリボーン」ゲームプレイトレーラー" + "COMMUNITYUPDATE_12_A" "`1ライブファイア`0登場:パイロット専用、超高速な6対6の接近戦です。ライブファイア専用の最新マップ2種、`1スタック`0と`1草原`0を収録しています。これら2種類の無料マップは、高速の激戦が展開するモード特性に合わせて制作された、タイトで密閉された死のリングです。\n\n\n`2%[A_BUTTON|MOUSE1]%`0で再生。" + "COMMUNITYUPDATE_12_Q" "「ライブファイア」ゲームプレイトレーラー" + "COMMUNITYUPDATE_13_A" "元祖タイタンフォールの人気マップ、`1エンジェルシティ`0のリマスター版を体験せよ!2016年12月1日より全プレイヤーへ配信される無料DLC第1弾、`1エンジェルシティ・モスト・ウォンテッド`0に向けてスタンバイしましょう。フロンティアを彩る新しい装飾オプションも収録しています。\n\n\n`2%[A_BUTTON|MOUSE1]%`0で再生。" + "COMMUNITYUPDATE_13_Q" "「エンジェルシティ」ゲームプレイトレーラー" + "COMMUNITYUPDATE_14_A" "お帰りなさい。\n\n\n`2%[A_BUTTON|MOUSE1]%`0で再生。" + "COMMUNITYUPDATE_14_Q" "絶賛「アンコール」トレーラー" + "COMMUNITYUPDATE_15_A" "2人の伝説、1つの物語。\n\n\n`2%[A_BUTTON|MOUSE1]%`0で再生。" + "COMMUNITYUPDATE_15_Q" "「Become One」ゲームプレイトレーラー" + "COMMUNITYUPDATE_16_A" "無限の可能性。\n\n\n`2%[A_BUTTON|MOUSE1]%`0で再生。" + "COMMUNITYUPDATE_16_Q" "「パイロット」ゲームプレイトレーラー" + "COMMUNITYUPDATE_DESC" "`3タイタンフォールコミュニティの最新情報`0\n\nオンラインから、情報をたっぷりとお届けします。\n\n詳細は、次の手順でご覧ください。\n`2%$rui/bullet_point%`0Twitterで`1@Respawn`0をフォロー\n`2%$rui/bullet_point%`0`1facebook.com/RespawnEntertainment`0で「いいね!」\n`2%$rui/bullet_point%`0 `1www.respawn.com`0をチェック" + "COMMUNITYUPDATE_NAME" "コミュニティ" + "KNB_SUBJECT_00_DESC" "`3タイタンフォール更新履歴`0\n\nこちらをチェックして、タイタンフォール 2の変更点を確認しましょう!" + "KNB_SUBJECT_00_NAME" "アップデート一覧" + "KNB_SUBJECT_00_SUB_00_A" "`2%$rui/bullet_point%`010 コミュニティー発の新コールサインとバナーが登場\n\n`2%$rui/bullet_point%`0支持者のギフトがすべてクレジットで購入可能に\n\n`2%$rui/bullet_point%`0ストアに販売アイテムを新入荷\n\n" + "KNB_SUBJECT_00_SUB_00_Q" "%$rui/hud/scoreboard/status_titan% 11月28日 - ハーベストタイム" + "KNB_SUBJECT_00_SUB_01_A" "`2%$rui/bullet_point%`0メインスロットのピストル装備\n\n`2%$rui/bullet_point%`0ハロウィン仕様バナー\n\n`2%$rui/bullet_point%`0各種バランス調整\n\n`2%$rui/bullet_point%`0ストアに販売アイテムを新入荷\n\n" + "KNB_SUBJECT_00_SUB_01_Q" "%$rui/hud/scoreboard/status_titan% 10月31日 - トリック&トリート" + "KNB_SUBJECT_00_SUB_02_A" "`2%$rui/bullet_point%`0フロンティアディフェンス - 対応マップにドライドック、エンジェルシティ、外惑星を追加。\n\n`2%$rui/bullet_point%`0ライブファイアの新マップ - UMA\n\n`2%$rui/bullet_point%`0パイロットの処刑攻撃 - ホール・イン・ザ・ウォール\n\n`2%$rui/bullet_point%`0ストアに新着商品が登場" + "KNB_SUBJECT_00_SUB_02_Q" "%$rui/hud/scoreboard/status_titan% 8月29日 - フロンティアからのポストカード" + "KNB_SUBJECT_00_SUB_03_A" "`2%$rui/bullet_point%`0フロンティアディフェンス - 自分を含め最大4人のプレイヤーでプレイできる協力プレイモード。ゴールは重要な防衛対象を、次第に激しさを増すAIユニットのウェーブから守り通すこと。緊密な連携と臨機応変の対応が勝利のカギになる。\n\n`2%$rui/bullet_point%`0新マップ - ライズ\n\n`2%$rui/bullet_point%`0新ライブファイアマップ - タウンシップ\n\n`2%$rui/bullet_point%`0ストアの新販売アイテム" + "KNB_SUBJECT_00_SUB_03_Q" "%$rui/hud/scoreboard/status_titan% 7月25日 - フロンティアシールド作戦" + "KNB_SUBJECT_00_SUB_04_A" "`2%$rui/bullet_point%`0新マップ - ウォーゲーム\n\n`2%$rui/bullet_point%`0ライブファイア用の新マップ - 交通\n\n`2%$rui/bullet_point%`0新パイロット処刑攻撃 - シャドウボクシング\n\n`2%$rui/bullet_point%`0第3の武器スロット\n\n`2%$rui/bullet_point%`0プライベートマッチ設定" + "KNB_SUBJECT_00_SUB_04_Q" "%$rui/hud/scoreboard/status_titan% 6月27日 - ウォーゲーム" + "KNB_SUBJECT_00_SUB_05_A" "`2%$rui/bullet_point% `0新型タイタン - モナーク\n\n`2%$rui/bullet_point% `0新マップ - レリック\n\n`2%$rui/bullet_point% `0パイロットの新処刑攻撃 - 俺が見えるな\n\n`2%$rui/bullet_point% `0ストアに新着商品を追加" + "KNB_SUBJECT_00_SUB_05_Q" "%$rui/hud/scoreboard/status_titan% 5月30日 - モナークレイン" + "KNB_SUBJECT_00_SUB_06_A" "`2%$rui/bullet_point% `0新マップ - グリッチ\n\n`2%$rui/bullet_point% `0ライブファイア用新マップ - デッキ\n\n`2%$rui/bullet_point% `0新勢力 - M.R.V.N.\n\n`2%$rui/bullet_point% `0パイロットの新処刑攻撃 - 敵はそこだ\n\n`2%$rui/bullet_point% `0世代上限を100に上昇" + "KNB_SUBJECT_00_SUB_06_Q" "%$rui/hud/scoreboard/status_titan% 4月25日 - フロンティアのグリッチ" + "KNB_SUBJECT_00_SUB_07_A" "`2%$rui/bullet_point% `0新マップ - 植民地\n\n`2%$rui/bullet_point% `0パイロットの新処刑攻撃 - ロードチェック\n\n`2%$rui/bullet_point% `0新兵器 - R-101\n\n`2%$rui/bullet_point% `0ストアに新着商品を追加" + "KNB_SUBJECT_00_SUB_07_Q" "%$rui/hud/scoreboard/status_titan% 3月30日 - コロニーリボーン" + "KNB_SUBJECT_00_SUB_08_A" "`2%$rui/bullet_point% `0ライブファイア - パイロット同士が、勝ち残りを賭けて戦います!リスポーンなし、6対6のラウンド制マッチで、1分以内に敵を全滅させるとラウンド勝利です。また、ラウンド終了時に自分のチームが中立のフラッグを所持していた場合も勝利となります。5ラウンド先取したチームがマッチの勝者となります。\n\n`2%$rui/bullet_point% `0ライブファイア用新マップ - 草原\n\n`2%$rui/bullet_point% `0ライブファイア用新マップ - スタック\n\n`2%$rui/bullet_point% `0パイロットの新処刑攻撃 - レイトアタック" + "KNB_SUBJECT_00_SUB_08_Q" "%$rui/hud/scoreboard/status_titan% 2月23日 - ライブファイア" + "KNB_SUBJECT_00_SUB_09_A" "`2%$rui/bullet_point% `0新マップ - エンジェルシティ\n\n`2%$rui/bullet_point% `0新兵器 - B3ウィングマン・エリート\n\n`2%$rui/bullet_point% `0パイロットの新処刑攻撃 - インナーピース\n\n`2%$rui/bullet_point% `0新タイタンキット\n\n`2%$rui/bullet_point% `0ストアに新着商品を追加" + "KNB_SUBJECT_00_SUB_09_Q" "%$rui/hud/scoreboard/status_titan%11月30日 - エンジェルシティモストウォンテッド" + "MP_ANGEL_CITY_FD_WAVE_1" "空に繋がれ" + "MP_ANGEL_CITY_FD_WAVE_2" "不定形" + "MP_ANGEL_CITY_FD_WAVE_3" "暴動" + "MP_ANGEL_CITY_FD_WAVE_4" "頑強な一群" + "MP_ANGEL_CITY_FD_WAVE_5" "危険な賭け" + "MP_DRYDOCK_FD_WAVE_1" "知らぬ海を泳げ" + "MP_DRYDOCK_FD_WAVE_2" "弾を持たぬ敵" + "MP_DRYDOCK_FD_WAVE_3" "科学の目隠し" + "MP_DRYDOCK_FD_WAVE_4" "高圧力システム" + "MP_DRYDOCK_FD_WAVE_5" "台風の目" + "MP_THAW_FD_WAVE_1" "状況把握" + "MP_THAW_FD_WAVE_2" "数の脅威" + "MP_THAW_FD_WAVE_3" "ヘンチマン21" + "MP_THAW_FD_WAVE_4" "銃火器の喜び" + "MP_THAW_FD_WAVE_5" "銃器を活かし切れ" + "NO_PRICE" "オファー終了" + "NO_PRICE_TWO_LINES" "オファー\n終了" + "PL_aegis_last_titan_standing" "イージスLTS" + "PL_aegis_last_titan_standing_abbr" "ALTS" + "PL_aegis_last_titan_standing_desc" "イージスアップグレードが有効。ラウンド単位で勝ち残りを狙う。先に3ラウンド勝利したチームが勝者となる。\n^FFC83200プレイヤー数:5対5 *タイタンでスタート\n時間制限:1ラウンド3分 *リスポーンなし\n最大パーティー人数:5" + "PL_aegis_last_titan_standing_lobby" "PL_aegis_last_titan_standing_lobby" + "PL_aegis_titan_brawl" "イージスタイタンブロール" + "PL_aegis_titan_brawl_abbr" "ATB" + "PL_aegis_titan_brawl_desc" "敵のタイタンを倒せ。イージスアップグレードが有効。\n^FFC83200プレイヤー数:5対5\n時間制限:10分\n最大パーティー人数:5" + "PL_aegis_titan_brawl_hint" "敵のタイタンを倒せ。\n脱出なし" + "PL_aegis_titan_brawl_lobby" "イージスタイタンブロールのロビー" + "PL_aitdm" "消耗戦" + "PL_aitdm_abbr" "ATT" + "PL_aitdm_desc" "敵をすべて片付けろ。\n^FFC83200プレイヤー数:6対6 *AI\n時間制限:10分\n最大パーティー人数:6" + "PL_aitdm_lobby" "消耗戦ロビー" + "PL_all_grapple" "アタック・オン・タイタンフォール" + "PL_all_grapple_abbr" "ATT" + "PL_all_grapple_desc" "戦術アビリティがすべてグラップルに置き換わる以外は、従来の消耗戦と同じルール。\n^FFC83200プレイヤー数:6対6 *AI\n時間制限:10分\n最大パーティー人数:6" + "PL_all_grapple_lobby" "アタック・オン・タイタンフォールのロビー" + "PL_all_holopilot" "華麗なる謀略" + "PL_all_holopilot_abbr" "LF" + "PL_all_holopilot_desc" "戦術アビリティがすべてホロパイロットに置き換わる以外は、従来のライブファイアと同じルール。^FFC83200\nプレイヤー数:6対6 *タイタンなし\n時間制限:60秒 *リスポーンなし\n最大パーティー人数:6" + "PL_all_holopilot_lobby" "華麗なる謀略のロビー" + "PL_all_phase" "異次元" + "PL_all_phase_abbr" "ATT" + "PL_all_phase_desc" "戦術アビリティがすべてフェーズに置き換わる以外は、従来の消耗戦と同じルール。\n^FFC83200プレイヤー数:6対6 *AI\n時間制限:10分\n最大パーティー人数:6" + "PL_all_phase_lobby" "異次元のロビー" + "PL_all_spicy" "辛口消耗戦" + "PL_all_spicy_abbr" "ATT" + "PL_all_spicy_desc" "戦術アビリティがすべてティックに置き換わる以外は、従来の消耗戦と同じルール。\n^FFC83200プレイヤー数:6対6 *AI\n時間制限:10分\n最大パーティー人数:6" + "PL_all_spicy_lobby" "辛口消耗戦のロビー" + "PL_amped_tacticals" "戦術強化" + "PL_amped_tacticals_abbr" "ATT" + "PL_amped_tacticals_desc" "戦術アビリティが強化される以外は、従来の消耗戦と同じルール。\n^FFC83200プレイヤー数:6対6 *AI\n時間制限:10分\n最大パーティー人数:6" + "PL_amped_tacticals_lobby" "戦術強化のロビー" + "PL_ANGEL_CITY" "エンジェルシティ24/7" + "PL_angel_city_abbr" "AC" + "PL_angel_city_desc" "エンジェルシティ\n^FFC83200*賞金稼ぎ *消耗戦\n*拠点増幅" + "PL_angel_city_lobby" "エンジェルシティ24/7ロビー" + "PL_at_coop" "脱出(協力プレイ)" + "PL_at_coop_desc" "ピストルだけを手に監獄を脱出した。脱出艇が到着するまで生き残れ。敵を倒して金を稼ぎ、武器を購入しよう。\n^FFC83200プレイヤー数:6\n最大パーティー人数:6" + "PL_at_coop_lobby" "脱出ロビー" + "PL_attrition" "賞金稼ぎ" + "PL_attrition_abbr" "BH" + "PL_attrition_desc" "敵を倒して金を稼げ。稼いだボーナスを特定の地点で「アップロード」すればさらに獲得額が上昇。\n^FFC83200プレイヤー数:5対5 *AI\n時間制限:10分\n最大パーティー人数:5" + "PL_attrition_lobby" "賞金稼ぎロビー" + "PL_capture_the_flag" "キャプチャー・ザ・フラッグ" + "PL_capture_the_flag_abbr" "CTF" + "PL_capture_the_flag_desc" "敵のフラッグを奪って基地へ持ち帰れ。その間も敵チームにこちらのフラッグを奪わせるな!\n^FFC83200プレイヤー数:5対5\n時間制限:12分\n最大パーティー人数:5" + "PL_capture_the_flag_lobby" "CTFロビー" + "PL_coliseum" "コロシアム" + "PL_coliseum_desc" "機動力を強化して、檻の中で1対1で戦う。敵を倒すとラウンド勝利となる。3本先取で支持者のギフトを獲得。^FFC83200\nプレイヤー数:1対1 *タイタンなし\n時間制限:3分 *リスポーンなし\n**^FFFFFF00コロシアムチケットまたは入場料の支払いが必要" + "PL_coliseum_lobby" "コロシアムロビー" + "PL_colony" "植民地24/7" + "PL_colony_abbr" "植民地" + "PL_colony_desc" "いつでも植民地だけを。^CCCCCC00このリストでは、^FFC83200消耗戦^CCCCCC00、^FFC83200パイロット対パイロット^CCCCCC00と^FFC83200ラスト・タイタン・スタンディング^CCCCCC00のマッチを検索します。" + "PL_colony_lobby" "植民地24/7ロビー" + "PL_ctf_lf" "CTF(ニトロ)" + "PL_ctf_lf_abbr" "CTF-N" + "PL_ctf_lf_desc" "選択したマップで繰り広げる高速のキャプチャー・ザ・フラッグ。\n^FFC83200プレイヤー数:5対5\n最大パーティー人数:5\n^F4D5A600フラッグを即時返還" + "PL_ctf_lf_lobby" "CTFニトロのロビー" + "PL_default_description" "デフォルトの説明" + "PL_default_lobbytitle" "デフォルトのロビータイトル" + "PL_default_name" "デフォルトの名前" + "PL_don" "ダブル・オア・ナッシング" + "PL_fd" "フロンティアディフェンス" + "PL_fd_desc" "残留艦隊の波状攻撃を防ぎきれ" + "PL_fd_easy" "フロンティアディフェンス:イージー" + "PL_fd_easy_desc" "敵軍を打ち砕け" + "PL_fd_easy_lobby" "フロンティアディフェンス:イージー用ロビー" + "PL_fd_hard" "フロンティアディフェンス:ハード" + "PL_fd_hard_desc" "巧みなプレイが必要" + "PL_fd_hard_lobby" "フロンティアディフェンス:ハード用ロビー" + "PL_fd_insane" "フロンティアディフェンス:マックス" + "PL_fd_insane_desc" "生き残りは不可能" + "PL_fd_insane_lobby" "フロンティアディフェンス:マックスのロビー" + "PL_fd_lobby" "フロンティアディフェンスのロビー" + "PL_fd_master" "フロンティアディフェンス:マスター" + "PL_fd_master_desc" "真の実力者だけが成功をつかむ" + "PL_fd_master_lobby" "フロンティアディフェンス:マスターのロビー" + "PL_fd_normal" "フロンティアディフェンス:レギュラー" + "PL_fd_normal_desc" "熟練プレイヤー向け" + "PL_fd_normal_lobby" "フロンティアディフェンス:レギュラーのロビー" + "PL_ffa" "フリー・フォー・オール" + "PL_ffa_abbr" "FFA" + "PL_ffa_desc" "全パイロットが自分のために戦う。敵をすべて始末しろ。\n^FFC83200プレイヤー数:1対11\n時間制限:10分\n最大パーティー人数:1" + "PL_ffa_lobby" "フリー・フォー・オールロビー" + "PL_fra" "フリー・エージェント" + "PL_fra_abbr" "FRA" + "PL_fra_desc" "1人きりの戦いに挑戦。敵を倒せば勝利だ。バッテリーを3個回収し、タイタンフォールを要請せよ。\n^FFC83200プレイヤー数:1対11\n時間制限:15分\n最大パーティー人数:1" + "PL_fra_lobby" "フリー・エージェントロビー" + "PL_groud_war_lobby" "8v8ミックステープロビー" + "PL_ground_war" "8v8ミックステープ" + "PL_ground_war_abbr" "8v8" + "PL_ground_war_desc" "スカーミッシュと拠点増幅を全マップにおいて大人数でプレイできます。\n^FFC83200プレイヤー数:8対8" + "PL_hardpoint" "拠点増幅" + "PL_hardpoint_abbr" "AHP" + "PL_hardpoint_desc" "拠点を制圧して守り切ればポイントを獲得。増幅した拠点は獲得ポイントが2倍になる。\n^FFC83200プレイヤー数:6対6\n時間制限:10分\n最大パーティー人数:6" + "PL_hardpoint_lobby" "拠点増幅ロビー" + "PL_hunted" "逃亡者" + "PL_iron_last_titan_standing" "アイアンLTS" + "PL_iron_last_titan_standing_abbr" "ILTS" + "PL_iron_last_titan_standing_desc" "タイタンのみ、ラウンド制の勝ち抜き戦。3ラウンド先取で勝利。\n^FFC83200プレイヤー数:5対5 *パイロットなし\n時間制限:1ラウンド3分 *リスポーンなし\n最大パーティー人数:5" + "PL_iron_last_titan_standing_lobby" "PL_iron_last_titan_standing_lobby" + "PL_last_titan_standing" "ラスト・タイタン・スタンディング" + "PL_last_titan_standing_abbr" "LTS" + "PL_last_titan_standing_desc" "全員がタイタンに乗った状態で開始し、ラウンド単位で勝ち残りを狙う。先に3ラウンド勝利したチームが勝者となる。\n^FFC83200プレイヤー数:5対5 *タイタンでスタート\n時間制限:1ラウンド3分 *リスポーンなし\n最大パーティー人数:5" + "PL_last_titan_standing_lobby" "LTSロビー" + "PL_limited_time_mode" "期間限定モード" + "PL_live_fire" "ライブファイア" + "PL_live_fire_abbr" "LF" + "PL_live_fire_desc" "高速の戦闘がライブファイア・アリーナで展開。敵パイロットを全滅させるか、タイムオーバー時にフラッグを所持しているとラウンド勝利。^FFC83200\nプレイヤー数:6対6 *タイタンなし\n時間制限:60秒 *リスポーンなし\n最大パーティー人数:6" + "PL_live_fire_lobby" "ライブファイアロビー" + "PL_load_a_map_on_the_command_line" "コマンド行でマップをロード -devonly" + "PL_marked_for_death" "マーク・フォー・デス" + "PL_marked_for_death_abbr" "MFD" + "PL_marked_for_death_desc" "マークされた標的の命をめぐる攻防戦。\n^FFC83200プレイヤー数:6対6 \n時間制限:12分\n最大パーティー人数:6" + "PL_marked_for_death_lobby" "マーク・フォー・デス・ロビー" + "PL_nitro_ffa" "FFA(ニトロ)" + "PL_nitro_ffa_abbr" "FFA-N" + "PL_nitro_ffa_desc" "選択したマップで繰り広げる高速のフリー・フォー・オール。\n^FFC83200プレイヤー数:6\n^F4D5A600タイタンなし\nブーストなし" + "PL_nitro_ffa_lobby" "FFAニトロのロビー" + "PL_nitro_mixtape" "ミックステープ(ニトロ)" + "PL_nitro_mixtape_abbr" "MXT-N" + "PL_nitro_mixtape_desc" "選択したマップで繰り広げる高速のCTF、MFDおよびPvP。\n^FFC83200プレイヤー数:5対5\n最大パーティー人数:5\n^F4D5A600フラッグを即時返還" + "PL_nitro_mixtape_lobby" "ミックステープロビー" + "PL_pilot_hunter" "スカーミッシュ" + "PL_pilot_hunter_abbr" "SKM" + "PL_pilot_hunter_desc" "敵のパイロットやタイタンを倒せ。\n^FFC83200プレイヤー数:8対8\n時間制限:10分\n最大パーティー人数:8" + "PL_pilot_hunter_lobby" "スカーミッシュのロビー" + "PL_pilot_skirmish" "パイロット対パイロット" + "PL_pilot_skirmish_abbr" "PvP" + "PL_pilot_skirmish_desc" "敵パイロットを撃破せよ。タイタンフォール禁止。\n^FFC83200プレイヤー数:8対8 *タイタンなし\n時間制限:10分\n最大パーティー人数:8" + "PL_pilot_skirmish_lobby" "PvPロビー" + "PL_pl_rebuild_all_paths" "進路再建" + "PL_pl_run_with_ai_ainrebuildonmapstart_2" "ai_ainRebuildOnMapStart 2 で実行" + "PL_private_match" "プライベートマッチ(ベータ)" + "PL_private_match_desc" "好きなマップとモードを選んで、カスタマイズしたプライベートマッチをプレイしよう。\n^FFC83200ネットワークかフレンドを招待してプレイ。\n^FFC83200プレイヤー数:1~16人\n進行なし" + "PL_private_match_lobby" "プライベートマッチ・ベータロビー" + "PL_promo_coop" "4人協力プレイ" + "PL_raid" "レイド" + "PL_rise" "ライズ24/7" + "PL_rise_abbr" "RIS" + "PL_rise_desc" "いつでもライズだけを。^CCCCCC00このリストでは^FFC83200CTF^CCCCCC00、^FFC83200拠点増幅^CCCCCC00、^FFC83200パイロット対パイロット^CCCCCC00、^FFC83200ライブファイア^CCCCCC00と^FFC83200ラスト・タイタン・スタンディング^CCCCCC00のマッチを検索します。" + "PL_rise_lobby" "ライズ24/7のロビー" + "PL_rocket_arena" "ロケットアリーナ" + "PL_rocket_arena_abbr" "LF" + "PL_rocket_arena_desc" "従来のライブファイアと同じルールで、改造したEPGを使用する。^FFC83200\nプレイヤー数:6対6 *タイタンなし\n時間制限:90秒 *リスポーンなし\n最大パーティー人数:6" + "PL_rocket_arena_lobby" "ロケットアリーナのロビー" + "PL_settings_for_when_someone_loads_a_map_on_the_command_line_do_not_edit_the_cmdlinemapload_1_below_-_this_makes_this_work" "コマンド行でマップをロードする際の設定。以下のcmdlineMapLoad 1は実行に必要なので編集しないでください。" + "PL_speedball" "ライブファイア" + "PL_speedball_desc" "中立のフラッグを奪い合う。敵チームを排除するか、制限時間終了時に自チームがフラッグを所有していればラウンドに勝利。5ラウンド先取制。\n^FFC83200プレイヤー数:6対6 *タイタンなし\n時間制限:1ラウンドにつき60秒 *リスポーンなし\n最大パーティー人数:6" + "PL_speedball_lobby" "ライブファイアロビー" + "PL_tactikill" "戦術キル消耗戦" + "PL_tactikill_abbr" "ATT" + "PL_tactikill_desc" "キル時に戦術アビリティが完全にリセットされる以外は、従来の消耗戦と同じルール。\n^FFC83200プレイヤー数:6対6 *AI\n時間制限:10分\n最大パーティー人数:6" + "PL_tactikill_lobby" "戦術キル消耗戦のロビー" + "PL_titan_brawl" "タイタンブロール" + "PL_titan_brawl_abbr" "TB" + "PL_titan_brawl_desc" "敵のタイタンを倒せ。パイロットは参戦禁止。\n^FFC83200プレイヤー数:5対5\n時間制限:10分\n最大パーティー人数:5" + "PL_titan_brawl_hint" "敵のタイタンを倒せ。\n降機なし。" + "PL_titan_brawl_lobby" "タイタンブロールのロビー" + "PL_titan_brawl_turbo" "ターボタイタンブロール" + "PL_titan_brawl_turbo_abbr" "TTDM" + "PL_titan_brawl_turbo_desc" "ダッシュとコアの回復が早まった状態で、従来のタイタンブロールのルールで戦う。\n^FFC83200プレイヤー数:5対5\n時間制限:10分\n最大パーティー人数:5" + "PL_titan_brawl_turbo_hint" "敵のタイタンを倒せ。\n脱出なし" + "PL_titan_brawl_turbo_lobby" "ターボタイタンブロールのロビー" + "PL_turbo_last_titan_standing" "ターボLTS" + "PL_turbo_last_titan_standing_abbr" "LTS" + "PL_turbo_last_titan_standing_desc" "ダッシュとコアの回復が早まった状態で、従来のLTSのルールで戦う。\n^FFC83200プレイヤー数:5対5 *タイタンでスタート\n時間制限:1ラウンド3分 *リスポーン\n最大パーティー人数:5" + "PL_turbo_last_titan_standing_lobby" "ターボLTSのロビー" + "PL_variety_pack" "ミックステープ" + "PL_variety_pack_desc" "様々なプレイヤー数やマップで、次のモードをプレイできます。\n^FFC83200*賞金稼ぎ *消耗戦\n*ラスト・タイタン・スタンディング *拠点増幅\n*パイロット対パイロット *キャプチャー・ザ・フラッグ" + "PL_variety_pack_lobby" "ミックステープロビー" + "PL_wargames" "ウォーゲーム24/7" + "PL_wargames_abbr" "WGM" + "PL_wargames_desc" "いつでもウォーゲームだけを。^CCCCCC00このリストでは^FFC83200消耗戦^CCCCCC00、^FFC83200CTF^CCCCCC00、^FFC83200パイロット対パイロット^CCCCCC00、^FFC83200拠点増幅^CCCCCC00と^FFC83200ラスト・タイタン・スタンディング^CCCCCC00のマッチを検索します。" + "PL_wargames_lobby" "ウォーゲーム24/7のロビー" + "WATCH_TUTORIAL" "チュートリアルを見る" + } + } + "lang" + { + "Language" "russian" + "Tokens" + { + "COMMUNITYUPDATE_00_A" "Продолжите свое приключение на чарующем Фронтире в новом DLC для Titanfall 2 — «Открытки с Фронтира». В нем вас ждут новые и знакомые локации, а также свежая коллекция элитных раскрасок оружия — таким Фронтир вы еще не видели!\n\n\nДля просмотра нажмите `2%[A_BUTTON|MOUSE1]%`0." + "COMMUNITYUPDATE_00_Q" "Трейлер «Открыток с Фронтира»" + "COMMUNITYUPDATE_01_A" "Узнайте, что ждет вас в обновлении «Открытки с Фронтира». \n\n\nДля просмотра нажмите `2%[A_BUTTON|MOUSE1]%`0." + "COMMUNITYUPDATE_01_Q" "Открытки с Фронтира: изменения" + "COMMUNITYUPDATE_02_A" "Titanfall: Assault — это стратегия в реальном времени во вселенной Titanfall, которую мы разрабатываем для мобильных устройств совместно со студией Particle City. Посмотреть на ее игровой процесс можно здесь! \n\n\nДля просмотра нажмите `2%[A_BUTTON|MOUSE1]%`0." + "COMMUNITYUPDATE_02_Q" "Трейлер к выходу Titanfall: Assault" + "COMMUNITYUPDATE_03_A" "На канале Iniquity Games разобрано обучение и даются советы по игре Titanfall Assault. Это самый лучший способ ознакомиться с игрой.\n\n\nДля просмотра нажмите `2%[A_BUTTON|MOUSE1]%`0." + "COMMUNITYUPDATE_03_Q" "Titanfall: Assault: видео «Основы игры»" + "COMMUNITYUPDATE_04_A" "Узнайте историю разработки режима «Оборона Фронтира» от нескольких ведущих разработчков и посмотрите, как мы играем в него!\n\n\nДля просмотра нажмите `2%[A_BUTTON|MOUSE1]%`0." + "COMMUNITYUPDATE_04_Q" "Respawn играет в «Оборону Фронтира»" + "COMMUNITYUPDATE_05_A" "Kevin Younger создал забавный ролик, в котором демонстрирует различные приемчики с пульсирующим клинком.\n\n\nДля просмотра нажмите `2%[A_BUTTON|MOUSE1]%`0." + "COMMUNITYUPDATE_05_Q" "Творчество сообщества: На острие" + "COMMUNITYUPDATE_06_A" "ConzeyG с reddit демонстрирует жестокую эффективность «Нордстара», одного за другим уничтожая пилотов в режиме «Приговор — смерть».\n\n\nДля просмотра нажмите `2%[A_BUTTON|MOUSE1]%`0." + "COMMUNITYUPDATE_06_Q" "Сообщество: Охота на пилотов «Нордстара»" + "COMMUNITYUPDATE_07_A" "Уже в игре! «Оборона Фронтира» возвращается вместе с картой «Восход», для покупки доступны новые боевые раскраски, а также появилась новая карта для режима «Перестрелка». Ознакомьтесь с нововведениями здесь. \n\n\nДля просмотра нажмите `2%[A_BUTTON|MOUSE1]%`0." + "COMMUNITYUPDATE_07_Q" "Трейлер \"Операция «Щит Фронтира»\"" + "COMMUNITYUPDATE_08_A" "Уже в игре! Знаменитая карта «Военные игры» возвращается — и такой вы ее еще не видели! А еще не пропустите новую казнь и карту для «Перестрелки» — «Траффик».\n\n\nДля просмотра нажмите `2%[A_BUTTON|MOUSE1]%`0." + "COMMUNITYUPDATE_08_Q" "Трейлер «Военные игры»" + "COMMUNITYUPDATE_09_A" "Это DLC добавляет «Монарха» (седьмого Титана для сетевой игры), переделанную карту «Святыня», новую казнь, а также «Ронина Прайм», «Тона Прайм», камуфляжи, фоны и рисунки на корпус в магазин. Ознакомиться с игровым процессом можно здесь.\n\n\nДля просмотра нажмите `2%[A_BUTTON|MOUSE1]%`0." + "COMMUNITYUPDATE_09_Q" "Трейлер «Власть монарха»" + "COMMUNITYUPDATE_10_A" "Новое в бесплатном DLC «Разлом на Фронтире»: nкарта для режима «Перестрелка»: «Палуба», nфракция: «Марвины», nказнь для пилота: «Пульсирующий клинок».\n\n\nДля просмотра нажмите `2%[A_BUTTON|MOUSE1]%`0." + "COMMUNITYUPDATE_10_Q" "Трейлер «Разлом на Фронтире»" + "COMMUNITYUPDATE_11_A" "Ставшая культовой карта для сетевого режима оригинального Titanfall «Колония» теперь доступна и в сиквеле! Пилоты Titanfall 2 могут опробовать свои силы в боях на тихих узких улочках, крышах и закрытых двориках небольшой деревеньки. Переосмыслить старые тактики с новыми Титанами и оружием игроки смогут уже с 30 марта — и совершенно бесплатно! В наборе DLC «Новая колония» вы найдете и новые версии классического оружия (например, винтовку R-101), новую казнь с помощью крюка и улучшения внешнего вида — устраивать резню на улицах города нужно по последней моде!\nДля просмотра нажмите `2%[A_BUTTON|MOUSE1]%`0." + "COMMUNITYUPDATE_11_Q" "Трейлер «Новая колония»" + "COMMUNITYUPDATE_12_A" "«Перестрелка» — новый адреналиновый режим, в котором две команды из шести пилотов сражаются до последней капли крови. Для этого режима мы специально создали две новые бесплатные карты: «Луг» и «Склад». Это компактные закрытые арены, идеально подходящие для напряженных боев на близких дистанциях.\n\n\nДля просмотра нажмите `2%[A_BUTTON|MOUSE1]%`0." + "COMMUNITYUPDATE_12_Q" "Трейлер «Перестрелка»" + "COMMUNITYUPDATE_13_A" "Всеми любимая карта `1Город Ангелов`0 из первой части Titanfall снова в строю. Первое бесплатное DLC для Titanfall 2 под названием `1Особо опасные в Городе Ангелов`0 доступно для всех игроков с 1 декабря. В обновлении также есть улучшения внешнего вида, которые немного изменят Фронтир. \n\n\nДля просмотра нажмите `2%[A_BUTTON|MOUSE1]%`0." + "COMMUNITYUPDATE_13_Q" "Трейлер «Город Ангелов»" + "COMMUNITYUPDATE_14_A" "С возвращением!\n\n\nДля просмотра нажмите `2%[A_BUTTON|MOUSE1]%`0." + "COMMUNITYUPDATE_14_Q" "Трейлер «На бис»" + "COMMUNITYUPDATE_15_A" "Две легенды. Одно наследие.\n\n\nДля просмотра нажмите `2%[A_BUTTON|MOUSE1]%`0." + "COMMUNITYUPDATE_15_Q" "Трейлер одиночной игры «Единое целое»" + "COMMUNITYUPDATE_16_A" "Никаких ограничений.\n\n\nДля просмотра нажмите `2%[A_BUTTON|MOUSE1]%`0." + "COMMUNITYUPDATE_16_Q" "Трейлер сетевой игры «Пилоты»" + "COMMUNITYUPDATE_DESC" "`3Новости сообщества Titanfall`0\n\nНовости и ссылки со всего Интернета.\n\nХотите еще?\n`2%$rui/bullet_point%`0Подпишитесь на нас в Twitter: `1@Respawn`0\n`2%$rui/bullet_point%`0Поставьте «Нравится» на `1facebook.com/RespawnEntertainment`0\n`2%$rui/bullet_point%`0Заходите на `1www.respawn.com`0." + "COMMUNITYUPDATE_NAME" "Сообщество" + "KNB_SUBJECT_00_DESC" "`3Что нового в Titanfall?`0\n\nНовости обновлений Titanfall 2!" + "KNB_SUBJECT_00_NAME" "Обновления игры" + "KNB_SUBJECT_00_SUB_00_A" "`2%$rui/bullet_point%`010 Новые фоны эмблем от сообщества\n\n`2%$rui/bullet_point%`0Все подарки сторонника теперь доступны за кредиты\n\n`2%$rui/bullet_point%`0Новый платный контент в магазине\n\n" + "KNB_SUBJECT_00_SUB_00_Q" "%$rui/hud/scoreboard/status_titan% 28 ноября — время жатвы" + "KNB_SUBJECT_00_SUB_01_A" "`2%$rui/bullet_point%`0Главная ячейка для пистолета\n\n`2%$rui/bullet_point%`0Фоны на Хэллоуин\n\n`2%$rui/bullet_point%`0Изменения баланса\n\n`2%$rui/bullet_point%`0Новый доступный для покупки контент в магазине\n\n" + "KNB_SUBJECT_00_SUB_01_Q" "%$rui/hud/scoreboard/status_titan% 31 октября: «Сласти и страсти»" + "KNB_SUBJECT_00_SUB_02_A" "`2%$rui/bullet_point%`0«Оборона Фронтира» — добавлена поддержка 3 карт: Док, Город Ангелов и Экзопланета.\n\n`2%$rui/bullet_point%`0Новая карта для «Перестрелки» — UMA\n\n`2%$rui/bullet_point%`0Новая казнь пилота — Дырявая стена\n\n`2%$rui/bullet_point%`0Новый доступный для покупки контент в магазине" + "KNB_SUBJECT_00_SUB_02_Q" "%$rui/hud/scoreboard/status_titan% 29 августа — Открытки с Фронтира" + "KNB_SUBJECT_00_SUB_03_A" "`2%$rui/bullet_point%`0Оборона Фронтира — новый совместный режим, в котором вам придется вместе с другими игроками защищать важную цель от усиливающихся волн противников под управлением ИИ. Без общения и умения адаптироваться тут не победить.\n\n`2%$rui/bullet_point%`0Новая карта: «Восход»\n\n`2%$rui/bullet_point%`0Новая карта для «Перестрелки»: «Поселок»\n\n`2%$rui/bullet_point%`0Новый доступный для покупки контент в магазине" + "KNB_SUBJECT_00_SUB_03_Q" "%$rui/hud/scoreboard/status_titan% 25 июля: операция «Щит Фронтира»" + "KNB_SUBJECT_00_SUB_04_A" "`2%$rui/bullet_point%`0Новая карта — «Военные игры»\n\n`2%$rui/bullet_point%`0Новая карта для режима «Перестрелка» — «Траффик»\n\n`2%$rui/bullet_point%`0Новая казнь пилота — «Бой с тенью»\n\n`2%$rui/bullet_point%`03 ячейка для оружия\n\n`2%$rui/bullet_point%`0Настройки частных матчей" + "KNB_SUBJECT_00_SUB_04_Q" "%$rui/hud/scoreboard/status_titan% 27 июня: «Военные игры»" + "KNB_SUBJECT_00_SUB_05_A" "`2%$rui/bullet_point%`0Новый Титан: «Монарх»\n\n`2%$rui/bullet_point%`0Новая карта: «Святыня»\n\n`2%$rui/bullet_point%`0Новая казнь пилота: «Иллюзия обмана»\n\n`2%$rui/bullet_point%`0Новый контент в магазине" + "KNB_SUBJECT_00_SUB_05_Q" "%$rui/hud/scoreboard/status_titan% 30 мая: Власть монарха" + "KNB_SUBJECT_00_SUB_06_A" "`2%$rui/bullet_point%`0Новая карта: «Разлом»\n\n`2%$rui/bullet_point%`0Новая карта для «Перестрелки»: «Палуба»\n\n`2%$rui/bullet_point%`0Новая фракция: МРВН\n\n`2%$rui/bullet_point%`0Новая казнь пилота: «На острие»\n\n`2%$rui/bullet_point%`0Увеличение макс. поколения до 100" + "KNB_SUBJECT_00_SUB_06_Q" "%$rui/hud/scoreboard/status_titan% 25 апреля: Разлом на Фронтире" + "KNB_SUBJECT_00_SUB_07_A" "`2%$rui/bullet_point%`0Новая карта: «Колония»\n\n`2%$rui/bullet_point%`0Новая казнь пилота: «Череподав»\n\n`2%$rui/bullet_point%`0Новое оружие: R-101\n\n`2%$rui/bullet_point%`0Новый контент в магазине" + "KNB_SUBJECT_00_SUB_07_Q" "%$rui/hud/scoreboard/status_titan% 30 марта: Новая колония" + "KNB_SUBJECT_00_SUB_08_A" "`2%$rui/bullet_point%`0«Перестрелка» — новый режим на выбывание для пилотов! Вас ждут битвы 6 на 6 без возможности возрождения. Выигрывает та команда, которая уничтожит соперника за одну минуту или будет удерживать нейтральный флаг по окончании отсчета. Первая команда, выигравшая в пяти раундах, побеждает.\n\n`2%$rui/bullet_point%`0Новые карты для «Перестрелки»: «Луг» и «Склад»\n\n`2%$rui/bullet_point%`0Новая казнь пилота: «Поздний удар»" + "KNB_SUBJECT_00_SUB_08_Q" "%$rui/hud/scoreboard/status_titan% 23 февраля: Перестрелка" + "KNB_SUBJECT_00_SUB_09_A" "`2%$rui/bullet_point%`0Новая карта: «Город Ангелов»\n\n`2%$rui/bullet_point%`0Новое оружие: «Элитный ведомый B3»\n\n`2%$rui/bullet_point%`0Новая казнь пилота: «Внутренности»\n\n`2%$rui/bullet_point%`0Новые наборы для Титанов\n\n`2%$rui/bullet_point%`0Новый контент в магазине" + "KNB_SUBJECT_00_SUB_09_Q" "%$rui/hud/scoreboard/status_titan% 30 ноября: Особо опасные в Городе Ангелов" + "MP_ANGEL_CITY_FD_WAVE_1" "Пленники небес" + "MP_ANGEL_CITY_FD_WAVE_2" "Бесформенность" + "MP_ANGEL_CITY_FD_WAVE_3" "Мятеж" + "MP_ANGEL_CITY_FD_WAVE_4" "Неумолимый жребий" + "MP_ANGEL_CITY_FD_WAVE_5" "Пойти ва-банк" + "MP_DRYDOCK_FD_WAVE_1" "Неизведанные воды" + "MP_DRYDOCK_FD_WAVE_2" "У них кончились патроны!" + "MP_DRYDOCK_FD_WAVE_3" "Ослепленные наукой" + "MP_DRYDOCK_FD_WAVE_4" "Система высокого давления" + "MP_DRYDOCK_FD_WAVE_5" "Око бури" + "MP_THAW_FD_WAVE_1" "Действия по ситуации" + "MP_THAW_FD_WAVE_2" "Сила в количестве" + "MP_THAW_FD_WAVE_3" "Приспешник-21" + "MP_THAW_FD_WAVE_4" "Игры с огнем" + "MP_THAW_FD_WAVE_5" "Одним великанам под силу" + "NO_PRICE" "Истекло" + "NO_PRICE_TWO_LINES" "Истекло" + "PL_aegis_last_titan_standing" "ПиТ «Эгида»" + "PL_aegis_last_titan_standing_abbr" "ПиТЭ" + "PL_aegis_last_titan_standing_desc" "Доступны улучшения Эгиды. Многораундовая игра до последнего выжившего. Побеждает команда, которая первой выиграет 3 раунда.\n^FFC83200Игроки: 5 на 5 *Сразу есть Титан\nЛимит времени: 3 минуты на раунд *Без возрождений\nРазмер команды: 5" + "PL_aegis_last_titan_standing_lobby" "PL_aegis_last_titan_standing_lobby" + "PL_aegis_titan_brawl" "Битва Титанов «Эгида»" + "PL_aegis_titan_brawl_abbr" "ДТЭ" + "PL_aegis_titan_brawl_desc" "Убивайте вражеских Титанов. Доступны улучшения Эгиды.\n^FFC83200Игроки: 5 на 5\nЛимит времени: 10 минут\nРазмер команды: 5" + "PL_aegis_titan_brawl_hint" "Убивайте вражеских Титанов.\nКатапультирование запрещено" + "PL_aegis_titan_brawl_lobby" "Лобби: Битва Титанов «Эгида»" + "PL_aitdm" "Истребление" + "PL_aitdm_abbr" "ИСТ" + "PL_aitdm_desc" "Убить всех врагов.\n^FFC83200Игроки: 6 на 6 *ИИ\nВремя: 10 мин\nРазмер команды: 6" + "PL_aitdm_lobby" "Лобби: Истребление" + "PL_all_grapple" "Атака на Titanfall" + "PL_all_grapple_abbr" "ИСТ" + "PL_all_grapple_desc" "Классическое «Истребление», где все тактические умения заменены на крюк-кошку.\n^FFC83200Игроки: 6 на 6 * ИИ\nВремя: 10 мин\nРазмер команды: 6" + "PL_all_grapple_lobby" "Лобби «Атака на Titanfall»" + "PL_all_holopilot" "Великая разводка" + "PL_all_holopilot_abbr" "ПС" + "PL_all_holopilot_desc" "Классическая «Перестрелка», где все тактические умения заменены голопилотом.^FFC83200\nИгроки: 6 на 6 * Без Титанов\nВремя: 60 с * Без возрождений\nРазмер команды: 6" + "PL_all_holopilot_lobby" "Лобби «Великая разводка»" + "PL_all_phase" "Иная сторона" + "PL_all_phase_abbr" "ИСТ" + "PL_all_phase_desc" "Классическое «Истребление», где все тактические умения заменены на фазовый сдвиг.\n^FFC83200Игроки: 6 на 6 * ИИ\nВремя: 10 мин\nРазмер команды: 6" + "PL_all_phase_lobby" "Лобби: Иная сторона" + "PL_all_spicy" "Острое истребление" + "PL_all_spicy_abbr" "ИСТ" + "PL_all_spicy_desc" "Классическое «Истребление», где все тактические умения заменены на клещи.\n^FFC83200Игроки: 6 на 6 * ИИ\nВремя: 10 мин\nРазмер команды: 6" + "PL_all_spicy_lobby" "Лобби: Острое истребление" + "PL_amped_tacticals" "Усиленная тактика" + "PL_amped_tacticals_abbr" "ИСТ" + "PL_amped_tacticals_desc" "Классическое «Истребление», где все тактические умения значительно усилены.\n^FFC83200Игроки: 6 на 6 * ИИ\nВремя: 10 мин\nРазмер команды: 6" + "PL_amped_tacticals_lobby" "Лобби «Усиленная тактика»" + "PL_ANGEL_CITY" "Город Ангелов 24/7" + "PL_angel_city_abbr" "ГА" + "PL_angel_city_desc" "Город Ангелов в трех режимах.\n^FFC83200*Охота за наживой *Истребление\n*Усиленные опорные пункты" + "PL_angel_city_lobby" "Лобби: Город Ангелов 24/7" + "PL_at_coop" "Побег (совместно)" + "PL_at_coop_desc" "Вы сбежали из тюрьмы с одним лишь пистолетом. Продержитесь до прибытия спасательного транспорта. Убивайте врагов, чтобы заработать деньги на оружие. \n^FFC83200Игроки: 6\nРазмер команды: 6" + "PL_at_coop_lobby" "Лобби: Побег" + "PL_attrition" "Охота за наживой" + "PL_attrition_abbr" "ОН" + "PL_attrition_desc" "Зарабатывайте деньги, убивая врагов. Заработайте больше, сдавая бонус в банк в указанных местах.\n^FFC83200Игроки: 5 на 5 *ИИ\nЛимит времени: 10 мин\nРазмер команды: 5" + "PL_attrition_lobby" "Лобби: Охота за наживой" + "PL_capture_the_flag" "Захват флага" + "PL_capture_the_flag_abbr" "ЗФ" + "PL_capture_the_flag_desc" "Захватите вражеский флаг и доставьте его на свою базу. Не дайте команде противника захватить ваш флаг!\n^FFC83200Игроки: 5 на 5\nЛимит времени: 12 мин\nРазмер команды: 5" + "PL_capture_the_flag_lobby" "Лобби: Захват флага" + "PL_coliseum" "Колизей" + "PL_coliseum_desc" "Поединок в «клетке» с повышенной мобильностью. Чтобы выиграть раунд, убейте противника. Игрок, выигравший 3 из 5 раундов, получает подарок сторонника.^FFC83200\nИгроки: 1 на 1 *Без Титанов\nЛимит времени: 3 мин *Без возрождения\n**^FFFFFF00Требуется БИЛЕТ или ВНЕСЕНИЕ ПЛАТЫ" + "PL_coliseum_lobby" "Лобби: Колизей" + "PL_colony" "«Колония» 24/7" + "PL_colony_abbr" "КОЛ" + "PL_colony_desc" "«Колония» круглосуточно. ^CCCCCC00Поиск матчей в режимах ^FFC83200«Истребление»^CCCCCC00, ^FFC83200«Пилоты против пилотов»^CCCCCC00 и ^FFC83200«Последний из Титанов»^CCCCCC00." + "PL_colony_lobby" "Лобби: «Колония» 24/7" + "PL_ctf_lf" "ЗФ (Нитро)" + "PL_ctf_lf_abbr" "ЗФ-Н" + "PL_ctf_lf_desc" "Быстрая игра в режиме «Захват флага» на картах режима «Перестрелка».\n^FFC83200Игроки: 5 на 5\nРазмер команды: 5\n^F4D5A600Мгновенный возврат флага" + "PL_ctf_lf_lobby" "Лобби: ЗФ Нитро" + "PL_default_description" "Описание по умолчанию" + "PL_default_lobbytitle" "Название лобби по умолчанию" + "PL_default_name" "Название по умолчанию" + "PL_don" "Все или ничего" + "PL_fd" "Оборона Фронтира" + "PL_fd_desc" "Обороняйтесь от волн наступающих врагов" + "PL_fd_easy" "Оборона Фронтира: легко" + "PL_fd_easy_desc" "Сокрушите противника" + "PL_fd_easy_lobby" "Оборона Фронтира: лобби, легко" + "PL_fd_hard" "Оборона Фронтира: сложно" + "PL_fd_hard_desc" "Требуется хорошее умение игры" + "PL_fd_hard_lobby" "Оборона Фронтира: лобби, тяжело" + "PL_fd_insane" "Оборона Фронтира: безумие" + "PL_fd_insane_desc" "Вам не выжить" + "PL_fd_insane_lobby" "Лобби: Оборона Фронтира - безумие" + "PL_fd_lobby" "Лобби: Оборона Фронтира" + "PL_fd_master" "Оборона Фронтира: мастер" + "PL_fd_master_desc" "Преуспеют только лучшие из лучших" + "PL_fd_master_lobby" "Лобби: Оборона Фронтира - мастер" + "PL_fd_normal" "Оборона Фронтира: нормально" + "PL_fd_normal_desc" "Рекомендуется для опытных игроков" + "PL_fd_normal_lobby" "Лобби: «Оборона Фронтира», нормально" + "PL_ffa" "Все против всех" + "PL_ffa_abbr" "ВПВ" + "PL_ffa_desc" "Каждый сам за себя. Убейте всех пилотов.\n^FFC83200Игроки: 1 на 11\nЛимит времени: 10 мин\nРазмер команды: 1" + "PL_ffa_lobby" "Лобби: Все против всех" + "PL_fra" "Вольные пилоты" + "PL_fra_abbr" "ВПЛ" + "PL_fra_desc" "Каждый за себя. Убивайте врагов, чтобы победить. Соберите 3 батареи, чтобы вызвать Титана.\n^FFC83200Игроки: 1 на 11\nЛимит времени: 15 мин\nРазмер команды: 1" + "PL_fra_lobby" "Лобби: Вольные пилоты" + "PL_groud_war_lobby" "Смешанный набор 8 на 8: лобби" + "PL_ground_war" "Смешанный набор 8 на 8" + "PL_ground_war_abbr" "8 на 8" + "PL_ground_war_desc" "В составе: «Схватка» и «Усиленные опорные пункты». Большое количество игроков на всех картах.\n^FFC83200Игроки: 8 на 8" + "PL_hardpoint" "Усиленные опорные пункты" + "PL_hardpoint_abbr" "УОП" + "PL_hardpoint_desc" "Захватите и удерживайте опорные пункты, чтобы заработать очки. Усиленные опорные пункты приносят в 2 раза больше очков.\n^FFC83200Игроки: 6 на 6\nЛимит времени: 10 мин\nРазмер команды: 6" + "PL_hardpoint_lobby" "Лобби: Усиленные опорные пункты" + "PL_hunted" "Добыча" + "PL_iron_last_titan_standing" "Железный ПИТ" + "PL_iron_last_titan_standing_abbr" "ЖЛЗН" + "PL_iron_last_titan_standing_desc" "Только Титаны, многораундовая игра до последнего выжившего. Побеждает игрок, который первым выиграет в 3 раундах.\n^FFC83200Игроки: 5 на 5 *БЕЗ ПИЛОТОВ\nЛимит времени: 3 мин на раунд *Без возрождений\nРазмер команды: 5" + "PL_iron_last_titan_standing_lobby" "PL_iron_last_titan_standing_lobby" + "PL_last_titan_standing" "Последний из Титанов" + "PL_last_titan_standing_abbr" "ПИТ" + "PL_last_titan_standing_desc" "В этой многораундовой игре на выбывание у каждого игрока сразу есть Титан. Побеждает команда, которая первой выиграет 3 раунда.\n^FFC83200Игроки: 5 на 5 *Сразу есть Титан\nЛимит времени: 3 минуты на раунд *Без возрождений\nРазмер команды: 5" + "PL_last_titan_standing_lobby" "Лобби: Последний из Титанов" + "PL_limited_time_mode" "(временно)" + "PL_live_fire" "Перестрелка" + "PL_live_fire_abbr" "ПЕР" + "PL_live_fire_desc" "Динамичные бои на арене. Для победы необходимо перебить всех вражеских пилотов или удерживать флаг на момент истечения таймера.^FFC83200\nИгроки: 6 на 6 * Без Титанов\nВремя: 60 с * Без возрождений\nРазмер команды: 6" + "PL_live_fire_lobby" "Лобби: Перестрелка" + "PL_load_a_map_on_the_command_line" "Загрузка карты из командной строки -devonly" + "PL_marked_for_death" "Приговор — смерть" + "PL_marked_for_death_abbr" "П-С" + "PL_marked_for_death_desc" "Убивайте или защищайте приговоренные цели.\n^FFC83200Игроки: 6 на 6\nВремя: 12 мин\nРазмер команды: 6" + "PL_marked_for_death_lobby" "Лобби: Приговор — смерть" + "PL_nitro_ffa" "ВПВ (Нитро)" + "PL_nitro_ffa_abbr" "ВПВ-Н" + "PL_nitro_ffa_desc" "Стремительные битвы «Все против всех» на избранных картах.\n^FFC83200Игроки: 6\n^F4D5A600Без Титанов\nБез усилений" + "PL_nitro_ffa_lobby" "ВПВ (Нитро): лобби" + "PL_nitro_mixtape" "Смешанный набор (Нитро)" + "PL_nitro_mixtape_abbr" "СН-Н" + "PL_nitro_mixtape_desc" "Стремительные битвы ЗФ, П-С и PvP на избранных картах.\n^FFC83200Игроки: 5 на 5\nРазмер команды: 5\n^F4D5A600Мгновенный возврат флага" + "PL_nitro_mixtape_lobby" "Смешанный набор: лобби" + "PL_pilot_hunter" "Схватка" + "PL_pilot_hunter_abbr" "СХВ" + "PL_pilot_hunter_desc" "Убивайте вражеских пилотов и Титанов. \n^FFC83200Игроки: 8 на 8\nЛимит времени: 10 мин\nРазмер команды: 8" + "PL_pilot_hunter_lobby" "Лобби (Схватка)" + "PL_pilot_skirmish" "Пилоты против пилотов" + "PL_pilot_skirmish_abbr" "ППП" + "PL_pilot_skirmish_desc" "Убивайте вражеских пилотов. Высадка Титана не разрешена.\n^FFC83200Игроки: 8 на 8 *Без Титанов\nЛимит времени: 10 мин\nРазмер команды: 8" + "PL_pilot_skirmish_lobby" "Лобби: Пилоты против пилотов" + "PL_pl_rebuild_all_paths" "Восстановить все пути" + "PL_pl_run_with_ai_ainrebuildonmapstart_2" "Запуск с ai_ainRebuildOnMapStart 2" + "PL_private_match" "Частный матч (бета)" + "PL_private_match_desc" "Проведите частный матч на карте и в режиме по своему выбору.\n^FFC83200ПРИГЛАШАЙТЕ СЕТЬ или ПРИГЛАШАЙТЕ ДРУЗЕЙ на игру\n^FFC83200Игроки: 1-16\nБез прогресса" + "PL_private_match_lobby" "Лобби частного матча (бета)" + "PL_promo_coop" "Совместная игра на 4 игроков" + "PL_raid" "Налет" + "PL_rise" "«Восход» 24/7" + "PL_rise_abbr" "ВСХ" + "PL_rise_desc" "«Восход» 24/7. ^CCCCCC00Начинает поиск матчей в режимах ^FFC83200ЗФ^CCCCCC00, ^FFC83200«Усиленные опорные пункты»^CCCCCC00, ^FFC83200«Пилоты против пилотов»^CCCCCC00, ^FFC83200«Перестрелка»^CCCCCC00 и ^FFC83200«Последний из Титанов»^CCCCCC00." + "PL_rise_lobby" "Лобби: «Восход» 24/7" + "PL_rocket_arena" "Ракетная арена" + "PL_rocket_arena_abbr" "ПС" + "PL_rocket_arena_desc" "Классическая «Перестрелка» с модифицированными ЭПУ.^FFC83200\nИгроки: 6 на 6 * Без Титанов\nВремя: 90 с * Без возрождений\nРазмер команды: 6" + "PL_rocket_arena_lobby" "Лобби: Ракетная арена" + "PL_settings_for_when_someone_loads_a_map_on_the_command_line_do_not_edit_the_cmdlinemapload_1_below_-_this_makes_this_work" "Настройки на случай загрузки карты из командной строки. Не редактируйте cmdlineMapLoad 1 ниже (благодаря этому все и работает)." + "PL_speedball" "Перестрелка" + "PL_speedball_desc" "Сражение идет за владение нейтральным флагом. Для победы в раунде необходимо уничтожить всех вражеских игроков или захватить флаг до окончания отсчета. Побеждает команда, первой достигшая пяти побед.\n^FFC83200Игроков: 6 на 6 *Без Титанов\nОграничение по времени: 60 секунд на раунд *Без возрождений\nРазмер команды: 6" + "PL_speedball_lobby" "Лобби: Перестрелка" + "PL_tactikill" "Тактическое истребление" + "PL_tactikill_abbr" "ИСТ" + "PL_tactikill_desc" "Классическое «Истребление», где убийства полностью восстанавливают тактические способности.\n^FFC83200Игроки: 6 на 6 * ИИ\nВремя: 10 мин\nРазмер команды: 6" + "PL_tactikill_lobby" "Лобби «Тактическое истребление»" + "PL_titan_brawl" "Битва Титанов" + "PL_titan_brawl_abbr" "БТ" + "PL_titan_brawl_desc" "Убивайте вражеских Титанов. Пилоты в бою не участвуют.\n^FFC83200Игроки: 5 на 5\nЛимит времени: 10 мин\nРазмер команды: 5" + "PL_titan_brawl_hint" "Убивайте вражеских Титанов.\nКатапультирование запрещено" + "PL_titan_brawl_lobby" "Лобби: Битва Титанов" + "PL_titan_brawl_turbo" "Турбодрака Титанов" + "PL_titan_brawl_turbo_abbr" "КМНБ" + "PL_titan_brawl_turbo_desc" "Классическая «Драка Титанов» с ускоренными перезарядкой рывка и зарядом ядра.\n^FFC83200Игроки: 5 на 5\nВремя: 10 мин.\nРазмер команды: 5" + "PL_titan_brawl_turbo_hint" "Убивайте вражеских Титанов.\nКатапультирование запрещено" + "PL_titan_brawl_turbo_lobby" "Лобби: Турбодрака Титанов" + "PL_turbo_last_titan_standing" "Турбо-ПИТ" + "PL_turbo_last_titan_standing_abbr" "ПИТ" + "PL_turbo_last_titan_standing_desc" "Классический «Последний из Титанов» с ускоренными перезарядкой рывка и зарядом ядра.\n^FFC83200Игроки: 5 на 5 * Сразу есть Титан\nВремя: 3 минуты на раунд * Без возрождений\nРазмер команды: 5" + "PL_turbo_last_titan_standing_lobby" "Лобби: Турбо-ПИТ" + "PL_variety_pack" "Смешанный набор" + "PL_variety_pack_desc" "Разное количество игроков и разнообразные карты. Режимы:\n^FFC83200*Охота за наживой *Истребление\n*Последний из Титанов *Усиленные опорные пункты\n*Пилоты против пилотов *Захват флага" + "PL_variety_pack_lobby" "Смешанный набор: лобби" + "PL_wargames" "«Военные игры» 24/7" + "PL_wargames_abbr" "ВНИ" + "PL_wargames_desc" "Круглосуточные «Военные игры». ^CCCCCC00Начинает поиск матчей в режимах ^FFC83200«Истребление»^CCCCCC00, ^FFC83200«ЗФ»^CCCCCC00, ^FFC83200«Пилоты против пилотов»^CCCCCC00, ^FFC83200«Усиленные опорные пункты»^CCCCCC00 и ^FFC83200«Последний из Титанов»^CCCCCC00." + "PL_wargames_lobby" "Лобби: «Военные игры» 24/7" + "WATCH_TUTORIAL" "СМОТРЕТЬ ОБУЧЕНИЕ" + } + } + "lang" + { + "Language" "spanish" + "Tokens" + { + "COMMUNITYUPDATE_00_A" "Tu aventura por los espectaculares paisajes de la Frontera continúa con el nuevo DLC de Titanfall 2: Postales de la Frontera. Con ubicaciones nuevas y familiares, así como una nueva colección de pinturas de guerra de armas de élite, la Frontera ahora es más espectacular que nunca.\n\n\nPulsa `2%[A_BUTTON|MOUSE1]%`0 para ver." + "COMMUNITYUPDATE_00_Q" "Tráiler de juego de «Postales de la Frontera»" + "COMMUNITYUPDATE_01_A" "Descubre todas las novedades del parche Postales de la Frontera.\n\n\nPulsa `2%[A_BUTTON|MOUSE1]%`0 para ver." + "COMMUNITYUPDATE_01_Q" "Postales de la Frontera: notas de parche" + "COMMUNITYUPDATE_02_A" "Disponible muy pronto para dispositivos móviles, Titanfall: Assault es un juego de ETR en el universo de Titanfall creado junto a Particle City. ¡Puedes verlo en acción aquí! \n\n\nPulsa `2%[A_BUTTON|MOUSE1]%`0 para ver." + "COMMUNITYUPDATE_02_Q" "Tráiler «Lanzamiento» de Titanfall: Assault" + "COMMUNITYUPDATE_03_A" "Iniquity nos guía por el tutorial y nos da consejos básicos para Titanfall Assault, la forma perfecta de iniciarse en este juego.\n\n\nPulsa `2%[A_BUTTON|MOUSE1]%`0 para ver." + "COMMUNITYUPDATE_03_Q" "Titanfall Assault: vídeo «Fundamentos»" + "COMMUNITYUPDATE_04_A" "¡Escucha a algunos de los desarrolladores claves de Defensa fronteriza hablar de la historia y creación del modo, mientras jugamos unas rondas. \n\n\nPulsa `2%[A_BUTTON|MOUSE1]%`0 para ver." + "COMMUNITYUPDATE_04_Q" "Respawn Plays: Defensa fronteriza" + "COMMUNITYUPDATE_05_A" "Kevin Younger ha creado un divertido montaje con muchas jugadas espectaculares con el filo de pulso. \n\n\nPulsa `2%[A_BUTTON|MOUSE1]%`0 para ver." + "COMMUNITYUPDATE_05_Q" "Creaciones de la comunidad: Incisivo" + "COMMUNITYUPDATE_06_A" "ConzeyG en reddit demuestra una eficacia brutal con el Northstar eliminando pilotos en Condenado. \n\n\nPulsa `2%[A_BUTTON|MOUSE1]%`0 para ver." + "COMMUNITYUPDATE_06_Q" "Creaciones de la comunidad: Cazapilotos Northstar" + "COMMUNITYUPDATE_07_A" "¡Ya disponible! Vuelve Defensa fronteriza junto con Ascenso, y nuevas pinturas a la venta y un nuevo mapa de Munición real. Puedes verlo en acción aquí.\n\n\nPulsa `2%[A_BUTTON|MOUSE1]%`0 para ver." + "COMMUNITYUPDATE_07_Q" "Tráiler de juego de «Op. Escudo fronterizo»" + "COMMUNITYUPDATE_08_A" "¡Ya disponible! El icónico mapa Juegos de guerra vuelve a Titanfall 2, con mejores gráficos que nunca. Echa también un vistazo a la nueva ejecución y al nuevo mapa de Munición real.\n\n\nPulsa `2%[A_BUTTON|MOUSE1]%`0 para ver." + "COMMUNITYUPDATE_08_Q" "Tráiler de juego de «Juegos de guerra»" + "COMMUNITYUPDATE_09_A" "Este DLC marca la llegada del 7.º titán de Multijugador, el Monarch; un mapa remasterizado, Reliquia, y una nueva ejecución, así como artículos adquiribles como los nuevos titanes prime Ronin y Tone, más camuflajes, indicativos y decoraciones. Disfruta de la acción aquí.\n\n\nPulsa `2%[A_BUTTON|MOUSE1]%`0 para ver." + "COMMUNITYUPDATE_09_Q" "Tráiler de juego de «Reino del Monarch»" + "COMMUNITYUPDATE_10_A" "En la Frontera no todo es lo que parece. Prepárate para el nuevo DLC gratuito de Titanfall 2, Un glitch en la Frontera, con el nuevo mapa «Glitch». Inspirado en el planeta natal del capitán Lastimosa, Armonía, aquí encontrarás un paisaje dominado por desniveles verticales y rutas largas y serpenteantes, ideal para encadenar carreras por muros y así cruzar ágilmente el mapa. Y, además, un nuevo mapa de Munición real, «Cubierta», con espacios constreñidos, patios expuestos y drones que acechan patrullando desde arriba. Y si te sientes abrumado(a), los siempre serviciales marvins han llegado como una nueva facción para echarte una mano (robótica). Finalmente, ya se puede desbloquear la nueva ejecución con el filo de pulso, para cuando quieras ponerte «incisivo(a)».\n\n\nPulsa `2%[A_BUTTON|MOUSE1]%`0 para verlo." + "COMMUNITYUPDATE_10_Q" "Tráiler de juego «Un glitch en la Frontera»" + "COMMUNITYUPDATE_11_A" "Vuelve uno de los mapas multijugador favoritos del Titanfall original: el icónico Colonia. Añádele a esto las nuevas tácticas y titanes de Titanfall 2, y los pilotos y titanes tendrán que exprimir todas sus habilidades para sobrevivir en este asentamiento idílico y denso lleno de callejones, esquinas traicioneras y tejados expuestos. Disponible el 30 de marzo para todos los jugadores. El pack de DLC «Colony Reborn» incluye el retorno de armas clásicas como el rifle de asalto decorado R-101, una nueva ejecución con el garfio y nuevas opciones cosméticas a la venta para destacar en combate mientras arrasas a tus enemigos.\n\n\nPulsa `2%[A_BUTTON|MOUSE1]%`0 para verlo." + "COMMUNITYUPDATE_11_Q" "Tráiler de juego «Colony Reborn»" + "COMMUNITYUPDATE_12_A" "Presentamos Munición real, un frenético modo 6 contra 6 solo para pilotos centrado en combates competitivos a corta distancia. Con dos nuevos mapas diseñados específicamente para este modo: Chimeneas y Prado. Estos dos mapas gratuitos son zonas de combate letales y constreñidas creadas específicamente para este modo frenético e intenso.\n\n\nPulsa `2%[A_BUTTON|MOUSE1]%`0 para verlo." + "COMMUNITYUPDATE_12_Q" "Tráiler de juego «Bienvenidos a Munición real»" + "COMMUNITYUPDATE_13_A" "Disfruta de la versión remasterizada de uno de los mapas favoritos de los fans del Titanfall original: `1Angel City`0. Prepárate para el primer DLC gratis para Titanfall 2 con `1Más buscados de Angel City`0, disponible el 1 de diciembre de 2016 para todos los jugadores. Incluye nuevas opciones cosméticas para darle un toque fresco a la Frontera. \n\n\nPulsa `2%[A_BUTTON|MOUSE1]%`0 para verlo." + "COMMUNITYUPDATE_13_Q" "Tráiler de juego «Bienvenidos a Angel City»" + "COMMUNITYUPDATE_14_A" "Bienvenidos.\n\n\nPulsa `2%[A_BUTTON|MOUSE1]%`0 para verlo." + "COMMUNITYUPDATE_14_Q" "Tráiler de premios «Bis»" + "COMMUNITYUPDATE_15_A" "Dos leyendas, un legado.\n\n\nPulsa `2%[A_BUTTON|MOUSE1]%`0 para verlo." + "COMMUNITYUPDATE_15_Q" "Tráiler Un jugador «Sed uno en combate»" + "COMMUNITYUPDATE_16_A" "Sin límites.\n\n\nPulsa `2%[A_BUTTON|MOUSE1]%`0 para verlo." + "COMMUNITYUPDATE_16_Q" "Tráiler de juego Multijugador «Pilotos»" + "COMMUNITYUPDATE_DESC" "`3Noticias de comunidad de Titanfall`0\n\nInformación y enlaces en la red.\n\nPara más información:\n`2%$rui/bullet_point%`0Síguenos en Twitter `1@Respawn`0\n`2%$rui/bullet_point%`0Hazte fan en `1facebook.com/RespawnEntertainment`0\n`2%$rui/bullet_point%`0Únete en `1www.respawn.com`0" + "COMMUNITYUPDATE_NAME" "Comunidad" + "KNB_SUBJECT_00_DESC" "`3¿Qué novedades trae Titanfall?`0\n\n¡Consulta aquí qué ha cambiado en Titanfall 2!" + "KNB_SUBJECT_00_NAME" "Actualizaciones" + "KNB_SUBJECT_00_SUB_00_A" "`2%$rui/bullet_point%`010 nuevas banderas de indicativos creadas por la comunidad\n\n`2%$rui/bullet_point%`0Todos los regalos de partidario ahora pueden adquirirse con créditos\n\n`2%$rui/bullet_point%`0Nuevo contenido adquirible en la tienda\n\n" + "KNB_SUBJECT_00_SUB_00_Q" "%$rui/hud/scoreboard/status_titan% 28 de noviembre: Cosecha" + "KNB_SUBJECT_00_SUB_01_A" "`2%$rui/bullet_point%`0Espacio principal de pistola\n\n`2%$rui/bullet_point%`0Banderas de Halloween\n\n`2%$rui/bullet_point%`0Cambios de equilibrio\n\n`2%$rui/bullet_point%`0Nuevo contenido adquirible en la tienda\n\n" + "KNB_SUBJECT_00_SUB_01_Q" "%$rui/hud/scoreboard/status_titan% 31 de octubre: Trucos o golosinas" + "KNB_SUBJECT_00_SUB_02_A" "`2%$rui/bullet_point%`0Defensa fronteriza: - Compatibilidad para 3 mapas más - Dique seco, Angel City y Exoplaneta.\n\n`2%$rui/bullet_point%`0Nuevo mapa de Munición real - UMA\n\n`2%$rui/bullet_point%`0Nueva ejecución de piloto - Agujero en el muro\n\n`2%$rui/bullet_point%`0Nuevo contenido adquirible en la tienda" + "KNB_SUBJECT_00_SUB_02_Q" "%$rui/hud/scoreboard/status_titan% 29 de agosto - Postales de la Frontera" + "KNB_SUBJECT_00_SUB_03_A" "`2%$rui/bullet_point%`0Defensa fronteriza: un nuevo modo cooperativo donde unes fuerzas con hasta 3 jugadores más para defender un objetivo crucial de oleadas cada vez más intensas de combatientes de IA. La comunicación y la adaptabilidad son claves para sobrevivir.\n\n`2%$rui/bullet_point%`0Mapa nuevo: Ascenso\n\n`2%$rui/bullet_point%`0Mapa nuevo de Munición real: Municipio\n\n`2%$rui/bullet_point%`0Nuevo contenido adquirible en la tienda" + "KNB_SUBJECT_00_SUB_03_Q" "%$rui/hud/scoreboard/status_titan% 25 de julio: operación Escudo fronterizo" + "KNB_SUBJECT_00_SUB_04_A" "`2%$rui/bullet_point%`0Nuevo mapa: Juegos de guerra\n\n`2%$rui/bullet_point%`0Nuevo mapa de Munición real: Tráfico\n\n`2%$rui/bullet_point%`0Nueva ejecución de piloto: Lucha con tu sombra\n\n`2%$rui/bullet_point%`03.er espacio de arma\n\n`2%$rui/bullet_point%`0Ajustes de partida privada" + "KNB_SUBJECT_00_SUB_04_Q" "%$rui/hud/scoreboard/status_titan% 27 de junio: Juegos de guerra" + "KNB_SUBJECT_00_SUB_05_A" "`2%$rui/bullet_point%`0Nuevo titán: Monarch\n\n`2%$rui/bullet_point%`0Nuevo mapa: Reliquia\n\n`2%$rui/bullet_point%`0Nueva ejecución de piloto: Ahora me ves\n\n`2%$rui/bullet_point%`0Nuevo contenido adquirible en la tienda" + "KNB_SUBJECT_00_SUB_05_Q" "%$rui/hud/scoreboard/status_titan% 30 de mayo: Reino del Monarch" + "KNB_SUBJECT_00_SUB_06_A" "`2%$rui/bullet_point%`0Nuevo mapa: Glitch\n\n`2%$rui/bullet_point%`0Nuevo mapa de Munición real: Cubierta\n\n`2%$rui/bullet_point%`0Nueva facción: Marvins\n\n`2%$rui/bullet_point%`0Nueva ejecución de piloto: Incisivo\n\n`2%$rui/bullet_point%`0Generación máxima aumentada a 100" + "KNB_SUBJECT_00_SUB_06_Q" "%$rui/hud/scoreboard/status_titan% 25 de abril: Un glitch en la Frontera" + "KNB_SUBJECT_00_SUB_07_A" "`2%$rui/bullet_point%`0Nuevo mapa: Colonia\n\n`2%$rui/bullet_point%`0Nueva ejecución de piloto: Aplastacráneos\n\n`2%$rui/bullet_point%`0Nueva arma: R-101\n\n`2%$rui/bullet_point%`0Nuevo contenido adquirible en la tienda" + "KNB_SUBJECT_00_SUB_07_Q" "%$rui/hud/scoreboard/status_titan% 30 de marzo: Colony Reborn" + "KNB_SUBJECT_00_SUB_08_A" "`2%$rui/bullet_point%`0Munición real: un nuevo modo de juego de eliminación de pilotos contra pilotos. Modo 6 contra 6 sin reaparición, donde tienes un minuto para eliminar al equipo rival para ganar la ronda. También ganas la ronda si tu equipo conserva la bandera neutral cuando el tiempo se agote. Vence el primero en ganar 5 rondas.\n\n`2%$rui/bullet_point%`0Nuevo mapa de Munición real: Prado\n\n`2%$rui/bullet_point%`0Nuevo mapa de Munición real: Chimeneas\n\n`2%$rui/bullet_point%`0Nueva ejecución: Impacto tardío" + "KNB_SUBJECT_00_SUB_08_Q" "%$rui/hud/scoreboard/status_titan% 23 de febrero: Munición real" + "KNB_SUBJECT_00_SUB_09_A" "`2%$rui/bullet_point%`0Nuevo mapa: Angel City\n\n`2%$rui/bullet_point%`0Nueva arma: B3 Wingman de élite\n\n`2%$rui/bullet_point%`0Nueva ejecución de piloto: Destruido desde dentro\n\n`2%$rui/bullet_point%`0Nuevos kits de titán\n\n`2%$rui/bullet_point%`0Nuevo contenido adquirible en la tienda" + "KNB_SUBJECT_00_SUB_09_Q" "%$rui/hud/scoreboard/status_titan% 30 de noviembre: Más buscados de Angel City" + "MP_ANGEL_CITY_FD_WAVE_1" "Encadenado al cielo" + "MP_ANGEL_CITY_FD_WAVE_2" "Amorfo" + "MP_ANGEL_CITY_FD_WAVE_3" "Insurgencia" + "MP_ANGEL_CITY_FD_WAVE_4" "Grupo obstinado" + "MP_ANGEL_CITY_FD_WAVE_5" "Jugarse el cuello" + "MP_DRYDOCK_FD_WAVE_1" "Nadar en aguas extrañas" + "MP_DRYDOCK_FD_WAVE_2" "¡No tienen balas!" + "MP_DRYDOCK_FD_WAVE_3" "Cegados por la ciencia" + "MP_DRYDOCK_FD_WAVE_4" "Sistema de altas presiones" + "MP_DRYDOCK_FD_WAVE_5" "Ojo de la tormenta" + "MP_THAW_FD_WAVE_1" "Conciencia de situación" + "MP_THAW_FD_WAVE_2" "Superioridad numérica" + "MP_THAW_FD_WAVE_3" "Secuaz 21" + "MP_THAW_FD_WAVE_4" "Diversión en el fuego" + "MP_THAW_FD_WAVE_5" "Aprovecha las armas" + "NO_PRICE" "Promoción expirada" + "NO_PRICE_TWO_LINES" "Promoción\nexpirada" + "PL_aegis_last_titan_standing" "UTEP Aegis" + "PL_aegis_last_titan_standing_abbr" "UTEPA" + "PL_aegis_last_titan_standing_desc" "Mejoras de Aegis activadas. Modo de eliminación por rondas. Vence el primero en ganar 3 rondas.\n^FFC83200Jugadores: 5 contra 5 *Empiezas como titán\nLímite de tiempo: 3 min por ronda *Sin reaparición\nTamaño máximo de grupo: 5" + "PL_aegis_last_titan_standing_lobby" "PL_aegis_last_titan_standing_lobby" + "PL_aegis_titan_brawl" "Batalla de titanes Aegis" + "PL_aegis_titan_brawl_abbr" "BDTA" + "PL_aegis_titan_brawl_desc" "Elimina titanes enemigos. Mejoras de Aegis activadas.\n^FFC83200Jugadores: 5 contra 5\nLímite de tiempo: 10 min\nTamaño máximo de grupo: 5" + "PL_aegis_titan_brawl_hint" "Elimina titanes enemigos.\nSin eyección" + "PL_aegis_titan_brawl_lobby" "Vestíbulo de Batalla de titanes Aegis" + "PL_aitdm" "Desgaste" + "PL_aitdm_abbr" "DGT" + "PL_aitdm_desc" "Elimina a todos los enemigos.\n^FFC83200Jugadores: 6 contra 6 *IA\nLímite de tiempo: 10 min\nTamaño máximo de grupo: 6" + "PL_aitdm_lobby" "Vestíbulo de Desgaste" + "PL_all_grapple" "Ataque en Titanfall" + "PL_all_grapple_abbr" "DGT" + "PL_all_grapple_desc" "Reglas de Desgaste clásico, excepto que todas las funciones tácticas se reemplazan por el garfio.\n^FFC83200Jugadores: 6 contra 6 *IA\nLímite de tiempo: 10 min\nTamaño máximo de grupo: 6" + "PL_all_grapple_lobby" "Vestíbulo de Ataque en Titanfall" + "PL_all_holopilot" "El gran engaño" + "PL_all_holopilot_abbr" "MR" + "PL_all_holopilot_desc" "Reglas de Munición real clásico, excepto que todas las funciones tácticas se reemplazan por holopiloto.^FFC83200\nJugadores: 6 contra 6 *Sin titanes\nLímite de tiempo: 60 s *Sin reapariciones\nTamaño máximo de grupo: 6" + "PL_all_holopilot_lobby" "Vestíbulo de El gran engaño" + "PL_all_phase" "El otro lado" + "PL_all_phase_abbr" "DGT" + "PL_all_phase_desc" "Reglas de Desgaste clásico, excepto que todas las funciones tácticas se reemplazan por Fase.\n^FFC83200Jugadores: 6 contra 6 *IA\nLímite de tiempo: 10 min\nTamaño máximo de grupo: 6" + "PL_all_phase_lobby" "Vestíbulo de El otro lado" + "PL_all_spicy" "Desgaste animado" + "PL_all_spicy_abbr" "DGT" + "PL_all_spicy_desc" "Reglas de Desgaste clásico, excepto que todas las funciones tácticas se reemplazan con garrapatas.\n^FFC83200Jugadores: 6 contra 6 *IA\nLímite de tiempo: 10 min\nTamaño máximo de grupo: 6" + "PL_all_spicy_lobby" "Vestíbulo de Desgaste animado" + "PL_amped_tacticals" "Tácticas +" + "PL_amped_tacticals_abbr" "DGT" + "PL_amped_tacticals_desc" "Reglas de Desgaste clásico, excepto que las funciones tácticas son más potentes.\n^FFC83200Jugadores: 6 contra 6 *IA\nLímite de tiempo: 10 min\nTamaño máximo de grupo: 6" + "PL_amped_tacticals_lobby" "Vestíbulo de Tácticas +" + "PL_ANGEL_CITY" "Angel City 24/7" + "PL_angel_city_abbr" "AC" + "PL_angel_city_desc" "Solo Angel City, todo el tiempo.\n^FFC83200*Cazarrecompensas *Desgaste\n*Fortines Cargados" + "PL_angel_city_lobby" "Vestíbulo de Angel City 24/7" + "PL_at_coop" "Evasión (coop.)" + "PL_at_coop_desc" "Acabas de escapar de una prisión con solo una pistola. Sobrevive hasta que llegue un transporte. Elimina enemigos para ganar dinero y comprar armas. \n^FFC83200Jugadores: 6\nTamaño máximo de grupo: 6" + "PL_at_coop_lobby" "Vestíbulo de Evasión" + "PL_attrition" "Cazarrecompensas" + "PL_attrition_abbr" "CR" + "PL_attrition_desc" "Elimina enemigos para ganar dinero. Consigue más ingresando tus bonificaciones en el banco, en los lugares designados.\n^FFC83200Jugadores: 5 contra 5 *IA\nLímite de tiempo: 10 min\nTamaño máximo de grupo: 5" + "PL_attrition_lobby" "Vestíbulo de Cazarrecompensas" + "PL_capture_the_flag" "Captura la bandera" + "PL_capture_the_flag_abbr" "CLB" + "PL_capture_the_flag_desc" "¡Hazte con la bandera enemiga y llévala hasta tu base, a la vez que evitas que el enemigo te robe la tuya!\n^FFC83200Jugadores: 5 contra 5\nLímite de tiempo: 12 min\nTamaño máximo de grupo: 5" + "PL_capture_the_flag_lobby" "Vestíbulo de CLB" + "PL_coliseum" "Coliseo" + "PL_coliseum_desc" "Combate 1 contra 1 con movilidad mejorada en una jaula. Elimina a tu rival para ganar una ronda. El vencedor de 3 de 5 gana un regalo de partidario de recompensa.^FFC83200\nJugadores: 1 contra 1 *Sin titanes\nLímite de tiempo: 3 min *Sin reapariciones\n**^FFFFFF00REQUIERE TICKETS DE COLISEO o PAGAR ENTRADA" + "PL_coliseum_lobby" "Vestíbulo de Coliseo" + "PL_colony" "Colonia 24/7" + "PL_colony_abbr" "COL" + "PL_colony_desc" "Mapa Colonia, continuamente. ^CCCCCC00Buscará partidas de ^FFC83200Desgaste^CCCCCC00, ^FFC83200Pilotos contra pilotos^CCCCCC00 y ^FFC83200Último titán en pie^CCCCCC00." + "PL_colony_lobby" "Vestíbulo de Colonia 24/7" + "PL_ctf_lf" "CLB (Nitro)" + "PL_ctf_lf_abbr" "CLB-N" + "PL_ctf_lf_desc" "Frenético Captura la bandera en mapas seleccionados.\n^FFC83200Jugadores: 5 contra 5\nTamaño máximo de grupo: 5\n^F4D5A600Recuperación instantánea de banderas" + "PL_ctf_lf_lobby" "Vestíbulo CLB Nitro" + "PL_default_description" "Descripción predeterminada" + "PL_default_lobbytitle" "Título de vestíbulo por defecto" + "PL_default_name" "Nombre predeterminado" + "PL_don" "Doble o nada" + "PL_fd" "Defensa fronteriza" + "PL_fd_desc" "Defiende contra las oleadas de las fuerzas de la Flota Remanente" + "PL_fd_easy" "Defensa fronteriza: fácil" + "PL_fd_easy_desc" "Aplasta a los rivales." + "PL_fd_easy_lobby" "Defensa fronteriza: vestíbulo fácil" + "PL_fd_hard" "Defensa fronteriza: difícil" + "PL_fd_hard_desc" "Se requiere mucha habilidad" + "PL_fd_hard_lobby" "Defensa fronteriza: vestíbulo difícil" + "PL_fd_insane" "Defensa fronteriza: demencial" + "PL_fd_insane_desc" "No sobrevivirás" + "PL_fd_insane_lobby" "Vestíbulo de Defensa fronteriza: demencial" + "PL_fd_lobby" "Vestíbulo de Defensa fronteriza" + "PL_fd_master" "Defensa fronteriza: maestro" + "PL_fd_master_desc" "Solo los mejores triunfarán" + "PL_fd_master_lobby" "Vestíbulo de Defensa fronteriza: maestro" + "PL_fd_normal" "Defensa fronteriza: normal" + "PL_fd_normal_desc" "Recomendado para jugadores experimentados" + "PL_fd_normal_lobby" "Vestíbulo de Defensa fronteriza: normal" + "PL_ffa" "Batalla campal" + "PL_ffa_abbr" "BC" + "PL_ffa_desc" "Cada piloto por su cuenta; elimina a todos los enemigos.\n^FFC83200Jugadores: 1 contra 11\nLímite de tiempo: 10 min\nTamaño máximo de grupo: 1" + "PL_ffa_lobby" "Vestíbulo de Batalla campal" + "PL_fra" "Agentes libres" + "PL_fra_abbr" "AL" + "PL_fra_desc" "Cada piloto, por su cuenta. Elimina enemigos para ganar. Reúne 3 baterías para pedir un titán.\n^FFC83200Jugadores: 1 contra 11\nLímite de tiempo: 15 min\nTamaño máximo de grupo: 1" + "PL_fra_lobby" "Vestíbulo de Agentes libres" + "PL_groud_war_lobby" "Vestíbulo de Variado 8c8" + "PL_ground_war" "Variado 8c8" + "PL_ground_war_abbr" "8c8" + "PL_ground_war_desc" "Incluye Escaramuza y Fortines cargados, con gran número de pilotos en todos los mapas.\n^FFC83200Jugadores: 8 contra 8" + "PL_hardpoint" "Fortines cargados" + "PL_hardpoint_abbr" "FC" + "PL_hardpoint_desc" "Captura y conserva los fortines para ganar puntos. Los fortines cargados proporcionan el doble de puntos.\n^FFC83200Jugadores: 6 contra 6\nLímite de tiempo: 10 min\nTamaño máximo de grupo: 6" + "PL_hardpoint_lobby" "Vestíbulo de Fortines cargados" + "PL_hunted" "Cazado" + "PL_iron_last_titan_standing" "UTEP de acero" + "PL_iron_last_titan_standing_abbr" "UTEPA" + "PL_iron_last_titan_standing_desc" "Modo de eliminación por rondas, solo titanes. Vence el primero en ganar 3 rondas.\n^FFC83200Jugadores: 5 contra 5 *SIN PILOTOS\nLímite de tiempo: 3 min por ronda *Sin reaparición\nTamaño máximo de grupo: 5" + "PL_iron_last_titan_standing_lobby" "PL_iron_last_titan_standing_lobby" + "PL_last_titan_standing" "Último titán en pie" + "PL_last_titan_standing_abbr" "UTEP" + "PL_last_titan_standing_desc" "En esta partida de eliminación por rondas, todos los jugadores empiezan en un titán. Gana el primero en vencer en 3 rondas.\n^FFC83200Jugadores: 5 contra 5 *Empiezas como titán\nLímite de tiempo: 3 min por ronda *Sin reapariciones\nTamaño máximo de grupo: 5" + "PL_last_titan_standing_lobby" "Vestíbulo de UTEP" + "PL_limited_time_mode" "Por tiempo limitado" + "PL_live_fire" "Munición real" + "PL_live_fire_abbr" "MR" + "PL_live_fire_desc" "Combate frenético en una arena de munición real. Gana la ronda eliminando a todos los pilotos enemigos o conservando la bandera cuando se agote el tiempo.^FFC83200\nJugadores: 6 contra 6 *Sin titanes\nLímite de tiempo: 60 s *Sin reapariciones\nTamaño máximo de grupo: 6" + "PL_live_fire_lobby" "Vestíbulo de Munición real" + "PL_load_a_map_on_the_command_line" "Carga un mapa en la línea de comandos. Solo para desarrollo." + "PL_marked_for_death" "Condenado" + "PL_marked_for_death_abbr" "CON" + "PL_marked_for_death_desc" "Elimina o protege los blancos marcados.\n^FFC83200Jugadores: 6 contra 6 \nLímite de tiempo: 12 min\nTamaño máximo de grupo: 6" + "PL_marked_for_death_lobby" "Vestíbulo de Condenado" + "PL_nitro_ffa" "BC (Nitro)" + "PL_nitro_ffa_abbr" "BC-N" + "PL_nitro_ffa_desc" "Frenética Batalla campal en mapas seleccionados.\n^FFC83200Jugadores: 6\n^F4D5A600Sin titanes\nSin potenciadores" + "PL_nitro_ffa_lobby" "Vestíbulo de BC (Nitro)" + "PL_nitro_mixtape" "Variado (Nitro)" + "PL_nitro_mixtape_abbr" "VRD-N" + "PL_nitro_mixtape_desc" "Frenéticos CLB, CON y JcJ en mapas seleccionados.\n^FFC83200Jugadores: 5 contra 5\nTamaño máximo de grupo: 5\n^F4D5A600Recuperación instantánea de banderas" + "PL_nitro_mixtape_lobby" "Vestíbulo de Variado" + "PL_pilot_hunter" "Escaramuza" + "PL_pilot_hunter_abbr" "ECM" + "PL_pilot_hunter_desc" "Elimina pilotos y titanes enemigos. \n^FFC83200Jugadores: 8 contra 8\nLímite de tiempo: 10 min\nTamaño máximo de grupo: 8" + "PL_pilot_hunter_lobby" "Vestíbulo de Escaramuza" + "PL_pilot_skirmish" "Pilotos contra pilotos" + "PL_pilot_skirmish_abbr" "PcP" + "PL_pilot_skirmish_desc" "Elimina pilotos enemigos. No se permiten titanes.\n^FFC83200Jugadores: 8 contra 8 *Sin titanes\nLímite de tiempo: 10 min\nTamaño máximo de grupo: 8" + "PL_pilot_skirmish_lobby" "Vestíbulo de PcP" + "PL_pl_rebuild_all_paths" "Reconstruir todas las rutas" + "PL_pl_run_with_ai_ainrebuildonmapstart_2" "Ejecutar con ai_ainRebuildOnMapStart 2" + "PL_private_match" "Partida privada (beta)" + "PL_private_match_desc" "Juega una partida privada personalizada en el modo y mapa que prefieras.\n^FFC83200Invitar red o Invitar amigos para jugar\n^FFC83200Jugadores: 1-16\nSin progresión" + "PL_private_match_lobby" "Vestíbulo de partida privada (beta)" + "PL_promo_coop" "Coop. de 4 jugadores" + "PL_raid" "Incursión" + "PL_rise" "Ascenso 24/7" + "PL_rise_abbr" "ASC" + "PL_rise_desc" "Mapa Ascenso, continuamente. ^CCCCCC00Buscará partidas de ^FFC83200CLB^CCCCCC00, ^FFC83200Fortines cargados^CCCCCC00, ^FFC83200Pilotos contra pilotos^CCCCCC00, ^FFC83200Munición real^CCCCCC00 y ^FFC83200Último titán en pie^CCCCCC00." + "PL_rise_lobby" "Vestíbulo de Ascenso 24/7" + "PL_rocket_arena" "Arena balística" + "PL_rocket_arena_abbr" "MR" + "PL_rocket_arena_desc" "Reglas de Munición real clásico con EPG modificadas.^FFC83200\nJugadores: 6 contra 6 *Sin titanes\nLímite de tiempo: 90 s *Sin reapariciones\nTamaño máximo de grupo: 6" + "PL_rocket_arena_lobby" "Vestíbulo de Arena balística" + "PL_settings_for_when_someone_loads_a_map_on_the_command_line_do_not_edit_the_cmdlinemapload_1_below_-_this_makes_this_work" "Ajustes para cuando alguien carga un mapa desde la línea de comandos. No editar cmdlineMapLoad 1: eso hace que esto funcione." + "PL_speedball" "Munición real" + "PL_speedball_desc" "Lucha por la posesión de una bandera neutral. Elimina al equipo enemigo o mantén la posesión de la bandera cuando se agote el tiempo para vencer en la ronda. Gana el primero en imponerse en 5 rondas.\n^FFC83200Jugadores: 6 contra 6 *Sin titanes\nLímite de tiempo: 60 segundos por ronda *Sin reapariciones\nTamaño máximo de grupo: 6" + "PL_speedball_lobby" "Vestíbulo de Munición real" + "PL_tactikill" "Desgaste táctico" + "PL_tactikill_abbr" "DGT" + "PL_tactikill_desc" "Reglas de Desgaste clásico, excepto que las funciones tácticas se recuperan completamente al conseguir eliminaciones.\n^FFC83200Jugadores: 6 contra 6 *IA\nLímite de tiempo: 10 min\nTamaño máximo de grupo: 6" + "PL_tactikill_lobby" "Vestíbulo de Desgaste táctico" + "PL_titan_brawl" "Batalla de titanes" + "PL_titan_brawl_abbr" "BDT" + "PL_titan_brawl_desc" "Elimina titanes enemigos. Pilotos no permitidos.\n^FFC83200Jugadores: 5 contra 5\nLímite de tiempo: 10 min\nTamaño máximo de grupo: 5" + "PL_titan_brawl_hint" "Elimina titanes enemigos.\nSin eyección." + "PL_titan_brawl_lobby" "Vestíbulo de Batalla de titanes" + "PL_titan_brawl_turbo" "Batalla de titanes turbo" + "PL_titan_brawl_turbo_abbr" "BDT" + "PL_titan_brawl_turbo_desc" "Reglas de Batalla de titanes clásico con regeneración de impulso y generación de núcleo más rápidas.\n^FFC83200Jugadores: 5 contra 5\nLímite de tiempo: 10 min\nTamaño máximo de grupo: 5" + "PL_titan_brawl_turbo_hint" "Elimina titanes enemigos.\nSin eyección" + "PL_titan_brawl_turbo_lobby" "Vestíbulo de Batalla de titanes turbo" + "PL_turbo_last_titan_standing" "UTEP turbo" + "PL_turbo_last_titan_standing_abbr" "UTEP" + "PL_turbo_last_titan_standing_desc" "Reglas de UTEP clásico con regeneración de impulso y generación de núcleo más rápidas.\n^FFC83200Jugadores: 5 contra 5 *Empiezas como titán\nLímite de tiempo: 3 min por ronda *Sin reapariciones\nTamaño máximo de grupo: 5" + "PL_turbo_last_titan_standing_lobby" "Vestíbulo de UTEP turbo" + "PL_variety_pack" "Variado" + "PL_variety_pack_desc" "Número de jugadores variables. Incluye diversos mapas de los siguientes modos:\n^FFC83200*Cazarrecompensas *Desgaste\n*Último titán en pie *Fortines cargados\n*Pilotos contra pilotos *Captura la bandera" + "PL_variety_pack_lobby" "Vestíbulo de Variado" + "PL_wargames" "Juegos de guerra 24/7" + "PL_wargames_abbr" "JDG" + "PL_wargames_desc" "Mapa Juegos de guerra, continuamente. ^CCCCCC00Buscará partidas de ^FFC83200Desgaste^CCCCCC00, ^FFC83200CLB^CCCCCC00, ^FFC83200Pilotos contra pilotos^CCCCCC00, ^FFC83200Fortines cargados^CCCCCC00 y ^FFC83200Último titán en pie^CCCCCC00." + "PL_wargames_lobby" "Vestíbulo de Juegos de guerra 24/7" + "WATCH_TUTORIAL" "VER TUTORIAL" + } + } + "lang" + { + "Language" "tchinese" + "Tokens" + { + "COMMUNITYUPDATE_00_A" "透過最新發佈的《Titanfall 2:邊境明信片》DLC,您將可以在邊境繼續您的驚奇冒險。內含全新和您熟悉的地點,以及全新的菁英武器戰鬥塗裝收集品,邊境將會有更美好的景觀。\n\n\n按 `2%[A_BUTTON|MOUSE1]%`0 觀看。" + "COMMUNITYUPDATE_00_Q" "「邊境明信片」預告片" + "COMMUNITYUPDATE_01_A" "瞭解邊境明信片修補檔的所有變更內容。\n\n\n按 `2%[A_BUTTON|MOUSE1]%`0 觀看。" + "COMMUNITYUPDATE_01_Q" "邊境明信片:修補檔說明" + "COMMUNITYUPDATE_02_A" "即將在行動裝置上推出的《Titanfall:突擊》是一款位於 Titanfall 世界中刺激的即時策略遊戲,它是與 Particle City 合作完成。到這裡觀看這些精彩內容!\n\n\n按 `2%[A_BUTTON|MOUSE1]%`0 觀看。" + "COMMUNITYUPDATE_02_Q" "《Titanfall:突擊》\發行\預告片" + "COMMUNITYUPDATE_03_A" "Iniquity 帶領我們完成《Titanfall:突擊》的教學關卡並分享基本的游戲訣竅。這是瞭解這款游戲的絕佳途徑。\n\n\n按 `2%[A_BUTTON|MOUSE1]%`0 觀看。" + "COMMUNITYUPDATE_03_Q" "《Titanfall:突擊》:\學習基本操作\影片" + "COMMUNITYUPDATE_04_A" "聽聽邊境防禦幕後的一些重要人物談論關於這個模式的一些歷史和製作過程,並觀看幾回合的遊玩過程!\n\n\n按 `2%[A_BUTTON|MOUSE1]%`0 觀看。" + "COMMUNITYUPDATE_04_Q" "Respawn 一起玩邊境防禦" + "COMMUNITYUPDATE_05_A" "Kevin Younger 製作了一些有趣的集錦,展現使用脈衝刀做出的大量美妙動作。\n\n\n按 `2%[A_BUTTON|MOUSE1]%`0 觀看。" + "COMMUNITYUPDATE_05_Q" "社群創作:前往據點" + "COMMUNITYUPDATE_06_A" "ConzeyG 透過 Reddit 展現在獵殺標記模式中使用北極星擊破鐵馭的驚人效率。\n\n\n按 `2%[A_BUTTON|MOUSE1]%`0 觀看。" + "COMMUNITYUPDATE_06_Q" "社群創作:北極星獵殺鐵馭" + "COMMUNITYUPDATE_07_A" "現已開放!邊境防禦與崛起地圖將一同返回,另外還有一系列全新戰鬥塗裝供你購買和一張新的烈火戰場地圖。到這裡觀看這些精彩內容。\n\n\n按 `2%[A_BUTTON|MOUSE1]%`0 觀看。" + "COMMUNITYUPDATE_07_Q" "「邊境神盾任務」玩法預告片" + "COMMUNITYUPDATE_08_A" "現已開放!經典的戰爭遊戲地圖以全新姿態重返《Titanfall 2》。更別錯過全新處決動畫與烈火戰場地圖 - 交通。\n\n\n按 `2%[A_BUTTON|MOUSE1]%`0 觀看。" + "COMMUNITYUPDATE_08_Q" "「戰爭遊戲」玩法預告片" + "COMMUNITYUPDATE_09_A" "此 DLC 內含第 7 具多人遊戲泰坦:「帝王」,為「遺跡」的重製地圖,並新增了可購買的至尊浪人以及至尊強力泰坦、更多迷彩、旗幟和機頭藝術。於此處觀看影像。\n\n\n按 `2%[A_BUTTON|MOUSE1]%`0 觀看。" + "COMMUNITYUPDATE_09_Q" "「帝王的統治」遊戲玩法預告片" + "COMMUNITYUPDATE_10_A" "邊境中暗藏危機 - 準備進入《Titanfall 2》最新的免費 DLC:邊境故障,其中將包含全新地圖「異常」。受拉斯提摩沙上尉的家鄉哈墨尼星所啟發的環境設計,其中大多為垂直空間與連綿曲折的道路,非常適合使用連鎖蹬壁來橫跨此地圖。另外還有一張全新烈火戰場地圖即將登場:甲板,其中包含狹窄的室內空間、空曠的廣場和在空中盤旋的機器人。如果本次更新讓您感到壓力太大,您最得力的助手馬文機器人現在將成為全新陣營並助您一臂之力。最後,全新的脈衝刀處決動畫已開放,並在您需要的時候隨時供您使用。\n\n\n按 `2%[A_BUTTON|MOUSE1]%`0 觀看。" + "COMMUNITYUPDATE_10_Q" "「邊境故障」遊戲玩法預告片" + "COMMUNITYUPDATE_11_A" "重返粉絲們最愛的初代《Titanfall》地圖:殖民地。混合了《Titanfall 2》中所有全新戰術技能與泰坦,泰坦與鐵馭們想在這張充滿狹窄巷弄、死角與開放屋頂的鄉村地圖中存活必須隨時保持警覺。於 3 月 30 日對所有玩家免費開放。「殖民地重生」DLC 組合包中含有酷炫的經典武器 R-101 步槍、全新勾爪處決動畫和全新外觀選項供您購買,讓您能夠在浴血奮戰的同時展現您獨有的魅力。\n\n\n按 `2%[A_BUTTON|MOUSE1]%`0 觀看。" + "COMMUNITYUPDATE_11_Q" "「殖民地重生」遊戲玩法預告片" + "COMMUNITYUPDATE_12_A" "「烈火戰場」簡介:超快節奏的 6 對 6 鐵馭對戰模式,讓您體驗邊境上刺激的近距離戰鬥。「烈火戰場」包含兩張全新的專屬地圖:「堆積地」和「草原」。這兩張免費地圖提供了封閉式的對戰空間,是專門為快節奏的近戰模式而設計。\n\n\n按 `2%[A_BUTTON|MOUSE1]%`0 觀看。" + "COMMUNITYUPDATE_12_Q" "「歡迎來到烈火戰場」遊戲玩法預告片" + "COMMUNITYUPDATE_13_A" "體驗經過重製的初代《Titanfall》玩家最愛的`1天使城`0地圖。為在 12 月 1 日與`1天使城通緝令`0一同向所有玩家發佈的首個免費《Titanfall 2》DLC 做好準備。此內容包含新的外觀選項,可讓您在邊境上更加英姿煥發。\n\n\n按 `2%[A_BUTTON|MOUSE1]%`0 觀看。" + "COMMUNITYUPDATE_13_Q" "「歡迎來到天使城」遊戲玩法預告片" + "COMMUNITYUPDATE_14_A" "歡迎回來。\n\n\n按 `2%[A_BUTTON|MOUSE1]%`0 觀看。" + "COMMUNITYUPDATE_14_Q" "「Encore」讚譽影片" + "COMMUNITYUPDATE_15_A" "兩位傳奇,一次遺贈。\n\n\n按 `2%[A_BUTTON|MOUSE1]%`0 觀看。" + "COMMUNITYUPDATE_15_Q" "「合而為一」單人模式遊戲玩法預告片" + "COMMUNITYUPDATE_16_A" "無限的可能。\n\n\n按 `2%[A_BUTTON|MOUSE1]%`0 觀看。" + "COMMUNITYUPDATE_16_Q" "「鐵馭」多人模式遊戲玩法預告片" + "COMMUNITYUPDATE_DESC" "`3Titanfall 社群更新`0\n\n來自網路的資訊和連結。\n\n更多內容:\n`2%$rui/bullet_point%`0在 Twitter 上關注我們 `1@Respawn`0\n`2%$rui/bullet_point%`0在 `1facebook.com/RespawnEntertainment`0 追蹤我們\n`2%$rui/bullet_point%`0造訪 `1www.respawn.com`0 加入我們" + "COMMUNITYUPDATE_NAME" "社群" + "KNB_SUBJECT_00_DESC" "`3《Titanfall》有什麼新內容?`0\n\n從此處瞭解《Titanfall 2》的改變!" + "KNB_SUBJECT_00_NAME" "遊戲更新" + "KNB_SUBJECT_00_SUB_00_A" "`2%$rui/bullet_point%`010 社群建立的全新呼叫代號旗幟\n\n`2%$rui/bullet_point%`0現在能夠使用點數購買所有擁護禮包\n\n`2%$rui/bullet_point%`0全新商城道具供你購買\n\n" + "KNB_SUBJECT_00_SUB_00_Q" "%$rui/hud/scoreboard/status_titan% 11 月 28 日 - 收穫季節" + "KNB_SUBJECT_00_SUB_01_A" "`2%$rui/bullet_point%`0主手槍欄\n\n`2%$rui/bullet_point%`0萬聖節旗幟\n\n`2%$rui/bullet_point%`0平衡性變更\n\n`2%$rui/bullet_point%`0全新商城道具供你購買\n\n" + "KNB_SUBJECT_00_SUB_01_Q" "%$rui/hud/scoreboard/status_titan% 10 月 31 日 - 萬聖節活動" + "KNB_SUBJECT_00_SUB_02_A" "`2%$rui/bullet_point%`0邊境防禦 - 支援 3 張額外的地圖:乾塢、天使城和系外行星。\n\n`2%$rui/bullet_point%`0全新烈火戰場地圖 - UMA\n\n`2%$rui/bullet_point%`0全新鐵馭處決動畫 - 穿透障壁\n\n`2%$rui/bullet_point%`0全新商城道具供你購買" + "KNB_SUBJECT_00_SUB_02_Q" "%$rui/hud/scoreboard/status_titan% 8 月 29 日 - 邊境明信片" + "KNB_SUBJECT_00_SUB_03_A" "`2%$rui/bullet_point%`0邊境防禦 - 全新合作模式讓你與其他三名玩家一同保護重要目標並擊退一波波逐漸增強的 AI 敵人。溝通與適應力將是生存的關鍵。\n\n`2%$rui/bullet_point%`0全新地圖 - 崛起\n\n`2%$rui/bullet_point%`0全新烈火戰場地圖 - 小鎮\n\n`2%$rui/bullet_point%`0全新商城道具供你購買" + "KNB_SUBJECT_00_SUB_03_Q" "%$rui/hud/scoreboard/status_titan% 7 月 25 日 - 邊境神盾任務" + "KNB_SUBJECT_00_SUB_04_A" "`2%$rui/bullet_point%`0新地圖 - 戰爭遊戲\n\n`2%$rui/bullet_point%`0新烈火戰場地圖 - 交通\n\n`2%$rui/bullet_point%`0新鐵馭處決動畫 - 幻影拳腳\n\n`2%$rui/bullet_point%`0第三武器欄\n\n`2%$rui/bullet_point%`0私人比賽設置" + "KNB_SUBJECT_00_SUB_04_Q" "%$rui/hud/scoreboard/status_titan% 6 月 27 日 - 戰爭遊戲" + "KNB_SUBJECT_00_SUB_05_A" "`2%$rui/bullet_point%`0全新泰坦 - 帝王\n\n`2%$rui/bullet_point%`0全新地圖 - 遺跡\n\n`2%$rui/bullet_point%`0全新鐵馭處決動畫 - 無影無蹤\n\n`2%$rui/bullet_point%`0全新商城道具供你購買" + "KNB_SUBJECT_00_SUB_05_Q" "%$rui/hud/scoreboard/status_titan% 5 月 30 日 - 帝王的統治" + "KNB_SUBJECT_00_SUB_06_A" "`2%$rui/bullet_point%`0全新地圖 - 異常\n\n`2%$rui/bullet_point%`0全新烈火戰場地圖 - 甲板\n\n`2%$rui/bullet_point%`0全新陣營 - 馬文機器人\n\n`2%$rui/bullet_point%`0全新鐵馭處決動畫 - 刀刀見骨\n\n`2%$rui/bullet_point%`0重生上限提升至 100" + "KNB_SUBJECT_00_SUB_06_Q" "%$rui/hud/scoreboard/status_titan% 4 月 25 日 - 邊境故障" + "KNB_SUBJECT_00_SUB_07_A" "`2%$rui/bullet_point%`0全新地圖 - 殖民地\n\n`2%$rui/bullet_point%`0全新鐵馭處決動畫 - 猛擊\n\n`2%$rui/bullet_point%`0全新武器 - R-101\n\n`2%$rui/bullet_point%`0全新商城道具供你購買" + "KNB_SUBJECT_00_SUB_07_Q" "%$rui/hud/scoreboard/status_titan% 3 月 30 日 - 殖民地重生" + "KNB_SUBJECT_00_SUB_08_A" "`2%$rui/bullet_point%`0烈火戰場 - 全新鐵馭對鐵馭殲滅模式!這是一場 6 對 6 回合模式且不能重生,你將有一分鐘時間殲滅敵隊來贏得此回合。你也能夠透過在計時結束時持有中立旗幟來取勝。先贏得 5 個回合的隊伍將贏得比賽。\n\n`2%$rui/bullet_point%`0全新烈火戰場地圖 - 草原\n\n`2%$rui/bullet_point%`0全新烈火戰場地圖 - 堆積地\n\n`2%$rui/bullet_point%`0全新鐵馭處決動畫 - 快速攻擊" + "KNB_SUBJECT_00_SUB_08_Q" "%$rui/hud/scoreboard/status_titan% 2 月 23 日 - 烈火戰場" + "KNB_SUBJECT_00_SUB_09_A" "`2%$rui/bullet_point%`0全新地圖 - 天使城\n\n`2%$rui/bullet_point%`0全新武器 - B3 幫手菁英\n\n`2%$rui/bullet_point%`0全新鐵馭處決動畫 - 瞬間爆炸\n\n`2%$rui/bullet_point%`0全新泰坦裝備\n\n`2%$rui/bullet_point%`0全新商城道具供你購買" + "KNB_SUBJECT_00_SUB_09_Q" "%$rui/hud/scoreboard/status_titan% 11 月 30 日 - 天使城通緝令" + "MP_ANGEL_CITY_FD_WAVE_1" "被縛於天際" + "MP_ANGEL_CITY_FD_WAVE_2" "無形" + "MP_ANGEL_CITY_FD_WAVE_3" "暴動" + "MP_ANGEL_CITY_FD_WAVE_4" "一群固執的人" + "MP_ANGEL_CITY_FD_WAVE_5" "手氣絕佳" + "MP_DRYDOCK_FD_WAVE_1" "游入陌生水域" + "MP_DRYDOCK_FD_WAVE_2" "他們沒子彈了!" + "MP_DRYDOCK_FD_WAVE_3" "受科學誤導" + "MP_DRYDOCK_FD_WAVE_4" "高壓系統" + "MP_DRYDOCK_FD_WAVE_5" "風暴之眼" + "MP_THAW_FD_WAVE_1" "狀態意識" + "MP_THAW_FD_WAVE_2" "人多力量大" + "MP_THAW_FD_WAVE_3" "追隨者 21" + "MP_THAW_FD_WAVE_4" "火中作樂" + "MP_THAW_FD_WAVE_5" "嗜槍如命" + "NO_PRICE" "優惠已過期" + "NO_PRICE_TWO_LINES" "優惠\n已過期" + "PL_aegis_last_titan_standing" "神盾泰坦殊死戰" + "PL_aegis_last_titan_standing_abbr" "ALTS" + "PL_aegis_last_titan_standing_desc" "神盾升級啟用。回合制淘汰賽。先贏 3 場者勝。\n^FFC83200玩家:5 對 5 *開始時有泰坦\n時間限制:每場 3 分鐘 *無重生\n最大派對人數:5" + "PL_aegis_last_titan_standing_lobby" "PL_aegis_last_titan_standing_lobby" + "PL_aegis_titan_brawl" "神盾泰坦爭鬥" + "PL_aegis_titan_brawl_abbr" "ATTDM" + "PL_aegis_titan_brawl_desc" "擊殺敵方泰坦。神盾升級啟用。\n^FFC83200玩家:5 對 5\n時間限制:10 分鐘\n最大派對人數:5" + "PL_aegis_titan_brawl_hint" "擊殺敵方泰坦。\n無彈射" + "PL_aegis_titan_brawl_lobby" "神盾泰坦爭鬥大廳" + "PL_aitdm" "消耗戰" + "PL_aitdm_abbr" "ATT" + "PL_aitdm_desc" "擊殺所有敵人。\n^FFC83200玩家:6v6 *AI\n時間限制:10 分鐘\n最大派對人數:6" + "PL_aitdm_lobby" "消耗戰大廳" + "PL_all_grapple" "進擊的泰坦" + "PL_all_grapple_abbr" "消耗戰" + "PL_all_grapple_desc" "傳統消耗戰規則,但是戰術技能被鉤爪取代。\n^FFC83200玩家:6v6 *電腦\n時間限制:10 分鐘\n最大隊伍人數:6" + "PL_all_grapple_lobby" "進擊的泰坦大廳" + "PL_all_holopilot" "大騙局" + "PL_all_holopilot_abbr" "烈火戰場" + "PL_all_holopilot_desc" "傳統烈火戰場規則,但是戰術技能被幻影鐵馭取代。\n^FFC83200玩家:6v6 *無泰坦\n時間限制:60 秒 *無重生\n最大隊伍人數:6" + "PL_all_holopilot_lobby" "大騙局大廳" + "PL_all_phase" "異次元" + "PL_all_phase_abbr" "消耗戰" + "PL_all_phase_desc" "傳統消耗戰規則,但是戰術技能被轉移取代。\n^FFC83200玩家:6v6 *電腦\n時間限制:10 分鐘\n最大隊伍人數:6" + "PL_all_phase_lobby" "異次元大廳" + "PL_all_spicy" "火熱消耗戰" + "PL_all_spicy_abbr" "消耗戰" + "PL_all_spicy_desc" "傳統消耗戰規則,但是戰術技能被炸蛛取代。\n^FFC83200玩家:6v6 *電腦\n時間限制:10 分鐘\n最大隊伍人數:6" + "PL_all_spicy_lobby" "火熱消耗戰大廳" + "PL_amped_tacticals" "強化戰術技能" + "PL_amped_tacticals_abbr" "消耗戰" + "PL_amped_tacticals_desc" "傳統消耗戰規則,但是戰術技能將更加強大。\n^FFC83200玩家:6v6 *電腦\n時間限制:10 分鐘\n最大隊伍人數:6" + "PL_amped_tacticals_lobby" "強化戰術技能大廳" + "PL_ANGEL_CITY" "天使城 24/7" + "PL_angel_city_abbr" "AC" + "PL_angel_city_desc" "天使城,永遠都在。\n^FFC83200*賞金追緝 *消耗戰\n*強化據點" + "PL_angel_city_lobby" "天使城 24/7 大廳" + "PL_at_coop" "逃脫(合作模式)" + "PL_at_coop_desc" "您剛剛逃離了監獄且身上只有一把手槍。存活至撤離艦到來。擊殺敵人來獲得金錢並用其購買武器。\n^FFC83200玩家:6\n最大派對人數:6" + "PL_at_coop_lobby" "逃脫大廳" + "PL_attrition" "賞金追緝" + "PL_attrition_abbr" "BH" + "PL_attrition_desc" "擊殺敵人獲取金錢。透過在指定地點「儲存」紅利以獲得額外金錢。\n^FFC83200玩家:5 對 5 *AI\n 時間限制:10 分鐘\n最大派對人數:5" + "PL_attrition_lobby" "賞金追緝大廳" + "PL_capture_the_flag" "奪旗" + "PL_capture_the_flag_abbr" "CTF" + "PL_capture_the_flag_desc" "奪取敵方旗幟並將其帶回你的基地,同時阻止對方奪取你的旗幟!\n^FFC83200玩家:5 對 5\n時間限制:12 分鐘\n最大派對人數:5" + "PL_capture_the_flag_lobby" "奪旗大廳" + "PL_coliseum" "競技場" + "PL_coliseum_desc" "在鐵籠裡以強化行動力進行一對一戰鬥。每次擊殺對手便贏一回合。5 戰 3 勝者可獲得擁護禮包獎勵。^FFC83200\n玩家:1 對 1 *無泰坦\n時間限制:3 分鐘 *無重生\n**^FFFFFF00需要競技場門票或支付入場費" + "PL_coliseum_lobby" "競技場大廳" + "PL_colony" "殖民地 24/7" + "PL_colony_abbr" "COL" + "PL_colony_desc" "所有殖民地,持續不斷。 ^CCCCCC00這將會搜尋^FFC83200消耗戰^CCCCCC00、^FFC83200鐵馭對鐵馭^CCCCCC00、及^FFC83200泰坦殊死戰^CCCCCC00的比賽。" + "PL_colony_lobby" "殖民地 24/7 大廳" + "PL_ctf_lf" "奪旗(氮氧)" + "PL_ctf_lf_abbr" "氮氧奪旗" + "PL_ctf_lf_desc" "在選擇的地圖中進行快節奏的奪旗比賽。\n^FFC83200玩家:5 對 5\n最大隊伍人數:5\n^F4D5A600立即歸還旗幟" + "PL_ctf_lf_lobby" "氮氧奪旗大廳" + "PL_default_description" "預設說明" + "PL_default_lobbytitle" "預設大廳名稱" + "PL_default_name" "預設名稱" + "PL_don" "加注翻倍" + "PL_fd" "邊境防禦" + "PL_fd_desc" "抵抗數波的殘餘部隊勢力" + "PL_fd_easy" "邊境防禦:簡單" + "PL_fd_easy_desc" "粉碎對手" + "PL_fd_easy_lobby" "邊境防禦:簡單大廳" + "PL_fd_hard" "邊境防禦:困難" + "PL_fd_hard_desc" "必備高超的技巧" + "PL_fd_hard_lobby" "邊境防禦:困難大廳" + "PL_fd_insane" "邊境防禦:瘋狂" + "PL_fd_insane_desc" "你將無法生存" + "PL_fd_insane_lobby" "邊境防禦:瘋狂大廳" + "PL_fd_lobby" "邊境防禦大廳" + "PL_fd_master" "邊境防禦:大師" + "PL_fd_master_desc" "只有最頂尖的菁英能夠成功" + "PL_fd_master_lobby" "邊境防禦:大師大廳" + "PL_fd_normal" "邊境防守:普通" + "PL_fd_normal_desc" "推薦給資深玩家" + "PL_fd_normal_lobby" "邊境防守:普通大廳" + "PL_ffa" "混戰" + "PL_ffa_abbr" "FFA" + "PL_ffa_desc" "所有鐵馭為自己而戰,擊殺所有敵人。\n^FFC83200玩家:1 對 11\n時間限制:10 分鐘\n最大派對人數:1" + "PL_ffa_lobby" "混戰大廳" + "PL_fra" "自由混戰" + "PL_fra_abbr" "FRA" + "PL_fra_desc" "你將孤身作戰。擊殺敵人來取勝。收集 3 枚電池後可呼叫泰坦。\n^FFC83200玩家:1 對 11\n時間限制:15 分鐘\n最大派對人數:1" + "PL_fra_lobby" "自由混戰大廳" + "PL_groud_war_lobby" "8 對 8 綜合大廳" + "PL_ground_war" "8 對 8 綜合" + "PL_ground_war_abbr" "8v8" + "PL_ground_war_desc" "收錄了「小規模戰鬥」和「強化據點」,並在每張地圖上都有高玩家人數。\n^FFC83200玩家:8對8" + "PL_hardpoint" "強化據點" + "PL_hardpoint_abbr" "AHP" + "PL_hardpoint_desc" "佔領並堅守重地來獲得分數。強化的重地提供雙倍分數。\n^FFC83200玩家:6 對 6\n時間限制:10 分鐘\n最大派對人數:6" + "PL_hardpoint_lobby" "強化據點大廳" + "PL_hunted" "遭獵殺" + "PL_iron_last_titan_standing" "鐵血泰坦殊死戰" + "PL_iron_last_titan_standing_abbr" "ILTS" + "PL_iron_last_titan_standing_desc" "僅泰坦參加的回合制殲滅戰。先贏 3 回合者獲勝。\n^FFC83200玩家:5 對 5 *無鐵馭\n時間限制:每回合 3 分鐘 *無重生\n最大派對人數:5" + "PL_iron_last_titan_standing_lobby" " " + "PL_last_titan_standing" "泰坦殊死戰" + "PL_last_titan_standing_abbr" "LTS" + "PL_last_titan_standing_desc" "所有玩家開始此回合制淘汰賽時皆有泰坦。先贏 3 場者勝。\n^FFC83200玩家:5 對 5 *開始時有泰坦\n時間限制:每場 3 分鐘 *無重生\n最大派對人數:5" + "PL_last_titan_standing_lobby" "殊死大廳" + "PL_limited_time_mode" "限時模式" + "PL_live_fire" "烈火戰場" + "PL_live_fire_abbr" "LF" + "PL_live_fire_desc" "在烈火競技場中進行快節奏的戰鬥。在回合內擊殺所有敵方鐵馭或是在時間結束時持有旗幟即可獲勝。^FFC83200\n玩家:6 對 6 *無泰坦\n時間限制:60 秒 *無重生\n最大派對人數:6" + "PL_live_fire_lobby" "烈火戰場大廳" + "PL_load_a_map_on_the_command_line" "在命令行載入地圖-devonly" + "PL_marked_for_death" "獵殺標記" + "PL_marked_for_death_abbr" "MFD" + "PL_marked_for_death_desc" "擊殺或保護被標記的目標。\n^FFC83200玩家:6 對 6\n時間限制:12 分鐘\n最大派對人數:6" + "PL_marked_for_death_lobby" "獵殺標記大廳" + "PL_nitro_ffa" "混戰(氮氧)" + "PL_nitro_ffa_abbr" "混戰-氮氧" + "PL_nitro_ffa_desc" "在特定地圖上進行快節奏的混戰。\n^FFC83200玩家:6\n^F4D5A600無泰坦\n無強化" + "PL_nitro_ffa_lobby" "混戰氮氧大廳" + "PL_nitro_mixtape" "綜合(氮氧)" + "PL_nitro_mixtape_abbr" "綜合-氮氧" + "PL_nitro_mixtape_desc" "在特定地圖上進行快節奏的奪旗、獵殺標記與鐵馭對鐵馭。\n^FFC83200玩家:5 對 5\n最大隊伍人數:5\n^F4D5A600立即歸還旗幟" + "PL_nitro_mixtape_lobby" "綜合大廳" + "PL_pilot_hunter" "小規模戰鬥" + "PL_pilot_hunter_abbr" "SKM" + "PL_pilot_hunter_desc" "擊殺敵方鐵馭與泰坦。\n^FFC83200玩家:8 對 8\n時間限制:10 分鐘\n最大派對人數:8" + "PL_pilot_hunter_lobby" "小規模戰鬥大廳" + "PL_pilot_skirmish" "鐵馭對鐵馭" + "PL_pilot_skirmish_abbr" "PvP" + "PL_pilot_skirmish_desc" "擊殺敵方鐵馭。無法呼叫泰坦。\n^FFC83200玩家:8 對 8 *無泰坦\n時間限制:10 分鐘\n最大派對人數:8" + "PL_pilot_skirmish_lobby" "鐵馭對鐵馭大廳" + "PL_pl_rebuild_all_paths" "重建所有路線" + "PL_pl_run_with_ai_ainrebuildonmapstart_2" "執行 ai_ainRebuildOnMapStart 2" + "PL_private_match" "私人比賽 (Beta 測試)" + "PL_private_match_desc" "使用您選擇的地圖和模式進行自訂的私人比賽。\n^FFC83200邀請網路或邀請好友加入\n^FFC83200玩家:1-16 人\n無進度" + "PL_private_match_lobby" "私人比賽大廳 (Beta 測試)" + "PL_promo_coop" "4 人合作模式" + "PL_raid" "突襲" + "PL_rise" "崛起 24/7" + "PL_rise_abbr" "RIS" + "PL_rise_desc" "僅限崛起,持續不斷。^CCCCCC00這將搜尋^FFC83200奪旗^CCCCCC00、^FFC83200強化據點^CCCCCC00、^FFC83200鐵馭對鐵馭^CCCCCC00、^FFC83200烈火戰場^CCCCCC00與^FFC83200泰坦殊死戰^CCCCCC00比賽。" + "PL_rise_lobby" "崛起 24/7 大廳" + "PL_rocket_arena" "火箭競技場" + "PL_rocket_arena_abbr" "烈火戰場" + "PL_rocket_arena_desc" "傳統烈火戰場規則,但是配有改裝版 EPG。^FFC83200\n玩家:6v6*無泰坦\n時間限制:90 秒*無重生\n最大隊伍人數:6" + "PL_rocket_arena_lobby" "火箭競技場大廳" + "PL_settings_for_when_someone_loads_a_map_on_the_command_line_do_not_edit_the_cmdlinemapload_1_below_-_this_makes_this_work" "有人在命令行載入地圖時的設定。請勿編輯下面 cmdlineMapLoad 1-有這個才能使用本功能。" + "PL_speedball" "烈火戰場" + "PL_speedball_desc" "搶奪中立旗幟。消滅敵隊或是在比賽結束時持有旗幟者贏得一局。先贏 5 局者勝。\n^FFC83200玩家:6 對 6 *無泰坦\n時間限制:每局 60 秒 *無重生\n最大派對人數:6" + "PL_speedball_lobby" "烈火戰場大廳" + "PL_tactikill" "戰術擊殺消耗戰" + "PL_tactikill_abbr" "消耗戰" + "PL_tactikill_desc" "傳統消耗戰規則,但是戰術技能在擊殺時將會刷新。\n^FFC83200玩家:6v6 *電腦\n時間限制:10 分鐘\n最大隊伍人數:6" + "PL_tactikill_lobby" "戰術擊殺消耗戰大廳" + "PL_titan_brawl" "泰坦爭鬥" + "PL_titan_brawl_abbr" "TTDM" + "PL_titan_brawl_desc" "擊殺敵方泰坦,不可使用鐵馭。\n^FFC83200玩家:5 對 5\n時間限制:10 分鐘\n最大派對人數:5" + "PL_titan_brawl_hint" "擊殺敵方泰坦。\n無彈射" + "PL_titan_brawl_lobby" "泰坦爭鬥大廳" + "PL_titan_brawl_turbo" "渦輪泰坦爭鬥" + "PL_titan_brawl_turbo_abbr" "泰坦爭鬥" + "PL_titan_brawl_turbo_desc" "傳統泰坦爭鬥規則,但是擁有更快的衝刺恢復與核心提升率。\n^FFC83200玩家:5 對 5\n時間限制:10 分鐘\n最大隊伍人數:5" + "PL_titan_brawl_turbo_hint" "擊殺敵方泰坦。\n無彈射" + "PL_titan_brawl_turbo_lobby" "渦輪泰坦爭鬥大廳" + "PL_turbo_last_titan_standing" "渦輪殊死戰" + "PL_turbo_last_titan_standing_abbr" "泰坦殊死戰" + "PL_turbo_last_titan_standing_desc" "傳統泰坦殊死戰規則,但是擁有更快的衝刺恢復與核心提升率。\n^FFC83200玩家:5 對 5 *開始時有泰坦\n時間限制:每回合 3 分鐘 *無重生\n最大隊伍人數:5" + "PL_turbo_last_titan_standing_lobby" "渦輪泰坦殊死戰大廳" + "PL_variety_pack" "綜合" + "PL_variety_pack_desc" "綜合玩家包含下列模式中的各種地圖:\n^FFC83200*賞金追緝 *消耗戰\n*泰坦殊死戰 *強化據點\n*鐵馭對鐵馭 *奪旗" + "PL_variety_pack_lobby" "綜合大廳" + "PL_wargames" "戰爭遊戲 24/7" + "PL_wargames_abbr" "WGM" + "PL_wargames_desc" "戰爭遊戲全系列,持續上演。 ^CCCCCC00這將會搜尋^FFC83200消耗戰^CCCCCC00、^FFC83200奪旗^CCCCCC00、^FFC83200鐵馭對鐵馭^CCCCCC00、^FFC83200強化據點^CCCCCC00,及^FFC83200泰坦殊死戰^CCCCCC00等對戰。" + "PL_wargames_lobby" "戰爭遊戲 24/7 大廳" + "WATCH_TUTORIAL" "觀看教學" + } + } + "lang" + { + "Language" "italian" + "Tokens" + { + "COMMUNITYUPDATE_00_A" "La tua avventura nei panorami eccezionali della Frontiera continua con l'ultimo DLC di Titanfall 2: Cartoline dalla Frontiera. Con luoghi nuovi e familiari e una nuova collezione di colori da guerra per armi Elite, la Frontiera non è mai stata così bella.\n\n\nPremi `2%[A_BUTTON|MOUSE1]%`0 per visualizzare." + "COMMUNITYUPDATE_00_Q" "Trailer \"Cartoline dalla Frontiera\"" + "COMMUNITYUPDATE_01_A" "Leggi tutte le novità introdotte nella patch Cartoline dalla Frontiera.\n\n\nPremi `2%[A_BUTTON|MOUSE1]%`0 per visualizzare." + "COMMUNITYUPDATE_01_Q" "Cartoline dalla Frontiera: note sulla patch" + "COMMUNITYUPDATE_02_A" "Presto disponibile su dispositivi mobili, Titanfall: Assault è un videogioco strategico in tempo reale ambientato nell’universo Titanfall e realizzato in collaborazione con Particle City. Guardalo in azione! \n\n\nPremi `2%[A_BUTTON|MOUSE1]%`0 per visualizzare." + "COMMUNITYUPDATE_02_Q" "Trailer di \"Lancio\" Titanfall: Assault" + "COMMUNITYUPDATE_03_A" "Iniquity ci illustra il tutorial e ci fornisce suggerimenti di base per Titanfall: Assault. Questo è il modo perfetto per iniziare a conoscere il gioco.\n\n\nPremi `2%[A_BUTTON|MOUSE1]%`0 per visualizzare." + "COMMUNITYUPDATE_03_Q" "Video Titanfall Assault: \"Impara le basi\"" + "COMMUNITYUPDATE_04_A" "Ascolta alcune delle persone chiave che hanno lavorato a Difesa Frontiera parlare della storia e della creazione della modalità e giocare a qualche partita! \n\n\nPremi `2%[A_BUTTON|MOUSE1]%`0 per visualizzare." + "COMMUNITYUPDATE_04_Q" "Respawn gioca a Difesa Frontiera" + "COMMUNITYUPDATE_05_A" "Kevin Younger ha creato un montaggio divertente mostrando innumerevoli mosse con Lama a impulsi. \n\n\nPremi `2%[A_BUTTON|MOUSE1]%`0 per visualizzare." + "COMMUNITYUPDATE_05_Q" "Creazioni community: Arriva al punto" + "COMMUNITYUPDATE_06_A" "ConzeyG su reddit mostra una brutale efficienza: Northstar che elimina i piloti nella modalità Marchiato a morte. \n\n\nPremi `2%[A_BUTTON|MOUSE1]%`0 per visualizzare." + "COMMUNITYUPDATE_06_Q" "Creazioni : Cacciatore di piloti Northstar" + "COMMUNITYUPDATE_07_A" "Disponibile ora! Difesa Frontiera torna con Ascesa, nuovi colori da guerra acquistabili e una nuova mappa Live Fire.\n\n\nPremi `2%[A_BUTTON|MOUSE1]%`0 per visualizzare." + "COMMUNITYUPDATE_07_Q" "Trailer gameplay \"Scudo frontiera operazioni\"" + "COMMUNITYUPDATE_08_A" "Disponibile ora! L’apprezzata mappa Giochi di guerra torna in Titanfall 2, più bella che mai. Scopri anche la nuova esecuzione e la nuova mappa Live Fire, Traffico in azione.\n\n\nPremi `2%[A_BUTTON|MOUSE1]%`0 per visualizzare." + "COMMUNITYUPDATE_08_Q" "Trailer gameplay “Giochi di guerra”" + "COMMUNITYUPDATE_09_A" "In questo DLC presentiamo: Monarch, il settimo Titan per multigiocatore; una rivisitazione della mappa Relitto; una nuova esecuzione e i Titan Ronin Prime e Tone Prime acquistabili; altre mimetiche, bandiere e decorazioni. Non perderti l'azione qui.\n\n\nPremi `2%[A_BUTTON|MOUSE1]%`0 per visualizzare." + "COMMUNITYUPDATE_09_Q" "Trailer gameplay “Regno di Monarch”" + "COMMUNITYUPDATE_10_A" "Nulla è come sembra nella Frontiera: preparati a entrare nel nuovo pack DLC gratuito per Titanfall 2: Un Glitch nella Frontiera, che contiene la nuova mappa “Glitch”. Ispirato dal pianeta Harmony del capitano Lastimosa, l’ambiente è dominato da cadute verticali e lunghi percorsi tortuosi, perfetti per concatenare lunghe corse sui muri, per poi planare in tutta la mappa. È inoltre inclusa una nuova mappa Live Fire: Ponte, che vanta spazi interni ristretti, cortili esposti e droni vigili che volteggiano sulla testa. Se dovessi sentirti sopraffatto, non preoccuparti: i M.R.V.N., sempre pronti a darti una mano robotica, si uniscono al gioco come una fazione completamente nuova. Infine, è possibile sbloccare l’esecuzione Lama a impulsi, perché possa essere utilizzata tutte le volte che desideri “far arrivare il messaggio”.\n\n\nPremi `2%[A_BUTTON|MOUSE1]%`0 per visualizzare." + "COMMUNITYUPDATE_10_Q" "Trailer gameplay “Un Glitch nella Frontiera”" + "COMMUNITYUPDATE_11_A" "Torna una delle mappe multigiocatore più apprezzate del Titanfall originale: Colonia. Con tutte le nuove tattiche e i nuovi Titan di Titanfall 2, Piloti e Titan dovranno rimanere sempre all’erta per sopravvivere in questo villaggio idilliaco e molto popolato fatto di vicoli, angoli ciechi e tetti esposti; disponibile gratuitamente il 30 marzo per tutti i giocatori. Il pack DLC “Colonia Rinata” comprende il ritorno di armi classiche come il fucile d’assalto R-101 modificato, una nuova esecuzione rampino e nuove opzioni estetiche da acquistare per apparire sempre al meglio mentre dipingi di rosso la città.\n\n\nPremi `2%[A_BUTTON|MOUSE1]%`0 per visualizzare." + "COMMUNITYUPDATE_11_Q" "Trailer gameplay \"Colonia Rinata\"" + "COMMUNITYUPDATE_12_A" "Presentazione di Live Fire: una modalità ultra-rapida 6v6 per piloti che pone in prima linea il combattimento a distanza ravvicinata. Sono incluse due nuove mappe progettate specificamente per Live Fire: Cataste e Prateria. Queste due mappe gratuite sono aree di gioco strette e mortali progettate specificamente per la natura intensa e rapida di questa nuova modalità.\n\n\nPremi `2%[A_BUTTON|MOUSE1]%`0 per visualizzare." + "COMMUNITYUPDATE_12_Q" "Trailer gameplay “Benvenuti in Live Fire”" + "COMMUNITYUPDATE_13_A" "Prova una versione rivisitata di una della mappe preferite del Titanfall originale, `1Angel City`0. Tieniti pronto per il primo DLC gratuito per Titanfall 2 con `1Ricercato di Angel City`0 disponibile il 1 dicembre. Questo contenuto comprende nuove opzioni estetiche per aggiungere un po’ di eleganza alla Frontiera. \n\n\nPremi `2%[A_BUTTON|MOUSE1]%`0 per visualizzare." + "COMMUNITYUPDATE_13_Q" "Trailer gameplay “Benvenuti in Angel City”" + "COMMUNITYUPDATE_14_A" "Bentornato.\n\n\nPremi `2%[A_BUTTON|MOUSE1]%`0 per visualizzare." + "COMMUNITYUPDATE_14_Q" "Trailer \"Encore\"" + "COMMUNITYUPDATE_15_A" "Due leggende, una sola eredità.\n\n\nPremi `2%[A_BUTTON|MOUSE1]%`0 per visualizzare." + "COMMUNITYUPDATE_15_Q" "Trailer “Diventate una cosa sola”" + "COMMUNITYUPDATE_16_A" "Senza limiti.\n\n\nPremi `2%[A_BUTTON|MOUSE1]%`0 per visualizzare." + "COMMUNITYUPDATE_16_Q" "Trailer multigiocatore “Piloti”" + "COMMUNITYUPDATE_DESC" "`3Aggiornamenti community Titanfall`0\n\nInfo e collegamenti da tutto il Web.\n\nPer altre informazioni:\n`2%$rui/bullet_point%`0Seguici su Twitter `1@Respawn`0\n`2%$rui/bullet_point%`0Metti un like su `1facebook.com/RespawnEntertainment`0\n`2%$rui/bullet_point%`0Unisciti a noi visitando l’indirizzo `1www.respawn.com`0" + "COMMUNITYUPDATE_NAME" "Community" + "KNB_SUBJECT_00_DESC" "`3Quali sono le novità di Titanfall?`0\n\nQui potrai vedere tutte le novità in Titanfall 2!" + "KNB_SUBJECT_00_NAME" "Aggiornamenti" + "KNB_SUBJECT_00_SUB_00_A" "`2%$rui/bullet_point%`010 Nuovi banner distintivo creati dalla community\n\n`2%$rui/bullet_point%`0Tutti i regali del difensore sono ora acquistabili con crediti\n\n`2%$rui/bullet_point%`0Nuovo contenuto negozio acquistabile\n\n" + "KNB_SUBJECT_00_SUB_00_Q" "%$rui/hud/scoreboard/status_titan% 28 novembre - Momento della raccolta" + "KNB_SUBJECT_00_SUB_01_A" "`2%$rui/bullet_point%`0Slot primario pistola\n\n`2%$rui/bullet_point%`0Banner Halloween\n\n`2%$rui/bullet_point%`0Modifiche al bilanciamento\n\n`2%$rui/bullet_point%`0Nuovi contenuti del negozio acquistabili\n\n" + "KNB_SUBJECT_00_SUB_01_Q" "%$rui/hud/scoreboard/status_titan% 31 ottobre - Dolcetti e scherzetti" + "KNB_SUBJECT_00_SUB_02_A" "`2%$rui/bullet_point%`0Difesa Frontiera - Supporto per tre mappe aggiuntive - Bacino di carenaggio, Angel City ed Esopianeta.\n\n`2%$rui/bullet_point%`0Nuova mappa Live Fire - UMA\n\n`2%$rui/bullet_point%`0Nuova esecuzione pilota - Buco nel muro\n\n`2%$rui/bullet_point%`0Nuovo contenuto acquistabile nello store" + "KNB_SUBJECT_00_SUB_02_Q" "%$rui/hud/scoreboard/status_titan% 29 agosto - Cartoline dalla frontiera" + "KNB_SUBJECT_00_SUB_03_A" "`2%$rui/bullet_point%`0Difesa Frontiera: una nuova modalità cooperativa in cui unisci le forze con un massimo di altri tre giocatori per difendere un obiettivo vitale da ondate sempre più intense di combattenti IA. La comunicazione e l'adattamento sono la chiave per la sopravvivenza.\n\n`2%$rui/bullet_point%`0Nuova mappa: Ascesa\n\n`2%$rui/bullet_point%`0Nuova mappa Live Fire: Cittadina\n\n`2%$rui/bullet_point%`0Nuovo contenuto acquistabile nel negozio" + "KNB_SUBJECT_00_SUB_03_Q" "%$rui/hud/scoreboard/status_titan% 25 luglio - Operazione Scudo Frontiera " + "KNB_SUBJECT_00_SUB_04_A" "`2%$rui/bullet_point%`0Nuova mappa - Giochi di guerra\n\n`2%$rui/bullet_point%`0Nuova mappa Live Fire - Traffico\n\n`2%$rui/bullet_point%`0Nuova esecuzione pilota - Scatola ombra\n\n`2%$rui/bullet_point%`03° slot arma\n\n`2%$rui/bullet_point%`0Impostazioni partita privata" + "KNB_SUBJECT_00_SUB_04_Q" "%$rui/hud/scoreboard/status_titan% 27 giugno - Giochi di guerra" + "KNB_SUBJECT_00_SUB_05_A" "`2%$rui/bullet_point%`0Nuovo Titan - Monarch\n\n`2%$rui/bullet_point%`0Nuova mappa - Relitto\n\n`2%$rui/bullet_point%`0Nuova esecuzione pilota - Ora mi vedi\n\n`2%$rui/bullet_point%`0Nuovo contenuto acquistabile nello store" + "KNB_SUBJECT_00_SUB_05_Q" "%$rui/hud/scoreboard/status_titan% 30 maggio - Regno di Monarch" + "KNB_SUBJECT_00_SUB_06_A" "`2%$rui/bullet_point%`0Nuova mappa - Glitch\n\n`2%$rui/bullet_point%`0Nuova mappa Live Fire - Ponte\n\n`2%$rui/bullet_point%`0Nuova fazione - M.R.V.N.\n\n`2%$rui/bullet_point%`0Nuova esecuzione pilota - Arriva al punto\n\n`2%$rui/bullet_point%`0Generazione max portata a 100" + "KNB_SUBJECT_00_SUB_06_Q" "%$rui/hud/scoreboard/status_titan% 25 aprile - Glitch nella Frontiera" + "KNB_SUBJECT_00_SUB_07_A" "`2%$rui/bullet_point%`0Nuova mappa - Colonia\n\n`2%$rui/bullet_point%`0Nuova esecuzione pilota - Spaccatesta\n\n`2%$rui/bullet_point%`0Nuova arma - R-101\n\n`2%$rui/bullet_point%`0Nuovo contenuto acquistabile nello store" + "KNB_SUBJECT_00_SUB_07_Q" "%$rui/hud/scoreboard/status_titan% 30 marzo - Colonia Rinata" + "KNB_SUBJECT_00_SUB_08_A" "`2%$rui/bullet_point%`0Live Fire - Una nuova modalità di gioco a eliminazione Pilota contro Pilota! 6v6 basata su round senza rientri, avrai un minuto per eliminare la squadra rivale per vincere il round. Puoi vincere il round anche se la tua squadra è in possesso della bandiera neutra allo scadere del tempo. Vince la partita la squadra che si aggiudica per prima 5 round.\n\n`2%$rui/bullet_point%`0Nuova mappa Live Fire - Prateria\n\n`2%$rui/bullet_point%`0Nuova mappa Live Fire - Cataste\n\n`2%$rui/bullet_point%`0Nuova esecuzione pilota - Colpo ritardato" + "KNB_SUBJECT_00_SUB_08_Q" "%$rui/hud/scoreboard/status_titan% 23 febbraio - Live Fire" + "KNB_SUBJECT_00_SUB_09_A" "`2%$rui/bullet_point%`0Nuova mappa - Angel City\n\n`2%$rui/bullet_point%`0Nuova arma - B3 Wingman Elite\n\n`2%$rui/bullet_point%`0Nuova esecuzione pilota - Dal di dentro\n\n`2%$rui/bullet_point%`0Nuovi kit Titan\n\n`2%$rui/bullet_point%`0Nuovo contenuto acquistabile nello store" + "KNB_SUBJECT_00_SUB_09_Q" "%$rui/hud/scoreboard/status_titan% 30 novembre - Ricercato di Angel City" + "MP_ANGEL_CITY_FD_WAVE_1" "Incatenato al cielo" + "MP_ANGEL_CITY_FD_WAVE_2" "Informe" + "MP_ANGEL_CITY_FD_WAVE_3" "Insurrezione" + "MP_ANGEL_CITY_FD_WAVE_4" "Un gruppo testardo" + "MP_ANGEL_CITY_FD_WAVE_5" "Sfida la sorte" + "MP_DRYDOCK_FD_WAVE_1" "Nuotare in acque straniere" + "MP_DRYDOCK_FD_WAVE_2" "Non hanno proiettili!" + "MP_DRYDOCK_FD_WAVE_3" "Accecato dalla scienza" + "MP_DRYDOCK_FD_WAVE_4" "Sistema ad alta pressione" + "MP_DRYDOCK_FD_WAVE_5" "Occhio del ciclone" + "MP_THAW_FD_WAVE_1" "Percezione della situazione" + "MP_THAW_FD_WAVE_2" "La forza è nei numeri" + "MP_THAW_FD_WAVE_3" "Scagnozzo 21" + "MP_THAW_FD_WAVE_4" "Divertimento nel fuoco" + "MP_THAW_FD_WAVE_5" "Rendere onore alle pistole" + "NO_PRICE" "Offerta scaduta" + "NO_PRICE_TWO_LINES" "Offerta\nscaduta" + "PL_aegis_last_titan_standing" "Aegis ST" + "PL_aegis_last_titan_standing_abbr" "AST" + "PL_aegis_last_titan_standing_desc" "Aggiornamenti Aegis abilitati. Scontro organizzato in round a eliminazione. La vittoria va a chi vince per primo 3 round.\n^FFC83200Giocatori: 5v5 *Inizia come Titan\nTempo limite: 3 m per round *Nessun rientro\nDimensioni max gruppo: 5" + "PL_aegis_last_titan_standing_lobby" "PL_aegis_last_titan_standing_lobby" + "PL_aegis_titan_brawl" "Scontro tra Titan Aegis" + "PL_aegis_titan_brawl_abbr" "ATTDM" + "PL_aegis_titan_brawl_desc" "Uccidi Titan nemici. Aggiornamenti Aegis abilitati.\n^FFC83200Giocatori: 5v5\nTempo limite: 10m\nDimensioni max gruppo: 5" + "PL_aegis_titan_brawl_hint" "Uccidi i Titan nemici.\nNessuna espulsione" + "PL_aegis_titan_brawl_lobby" "Lobby scontro tra Titan Aegis" + "PL_aitdm" "Logoramento" + "PL_aitdm_abbr" "LOG" + "PL_aitdm_desc" "Uccidi tutti i nemici.\n^FFC83200Giocatori: 6v6 *IA\nTempo limite: 10 min.\nDimensioni max gruppo: 6" + "PL_aitdm_lobby" "Lobby Logoramento" + "PL_all_grapple" "Attacco in Titanfall" + "PL_all_grapple_abbr" "ATT" + "PL_all_grapple_desc" "Regole di logoramento classiche, ad eccezione del fatto che tutte le abilità tattiche sono sostituite con Rampino.\n^FFC83200Giocatori: 6v6 *AI\nTempo limite: 10 m\nDimensioni max gruppo: 6" + "PL_all_grapple_lobby" "Attacco alla Lobby Titanfall" + "PL_all_holopilot" "Il grande inganno" + "PL_all_holopilot_abbr" "LF" + "PL_all_holopilot_desc" "Regole di Live Fire classiche, ad eccezione del fatto che tutte le abilità tattiche sono sostituite con Pilota olografico.^FFC83200\nGiocatori: 6v6 *No Titan\nTempo limite: 60 s *Nessun rientro\nDimensioni max gruppo: 6" + "PL_all_holopilot_lobby" "Loggy Il grande inganno" + "PL_all_phase" "L’Altra Parte" + "PL_all_phase_abbr" "ATT" + "PL_all_phase_desc" "Regole di logoramento classiche, ad eccezione del fatto che tutte le abilità tattiche sono sostituite con Fasico.\n^FFC83200Giocatori: 6v6 *AI\nTempo limite: 10 m\nDimensioni max gruppo: 6" + "PL_all_phase_lobby" "Lobby L’Altra Parte" + "PL_all_spicy" "Logoramento speziato" + "PL_all_spicy_abbr" "ATT" + "PL_all_spicy_desc" "Regole di logoramento classiche, ad eccezione del fatto che tutte le abilità tattiche sono sostituite con Tick.\n^FFC83200Giocatori: 6v6 *AI\nTempo limite: 10 m\nDimensioni max gruppo: 6" + "PL_all_spicy_lobby" "Lobby Logoramento speziato" + "PL_amped_tacticals" "Tattiche amplificate" + "PL_amped_tacticals_abbr" "ATT" + "PL_amped_tacticals_desc" "Regole di logoramento classiche, ad eccezione del fatto che le abilità tattiche sono più potenti.\n^FFC83200Giocatori: 6v6 *AI\nTempo limite: 10 m\nDimensioni max gruppo: 6" + "PL_amped_tacticals_lobby" "Lobby Tattiche amplificate" + "PL_ANGEL_CITY" "Angel City 24/7" + "PL_angel_city_abbr" "AC" + "PL_angel_city_desc" "Sempre e solo Angel City.\n^FFC83200*Caccia alle taglie *Logoramento\n*PCA" + "PL_angel_city_lobby" "Lobby Angel City 24/7" + "PL_at_coop" "Fuga (Co-op)" + "PL_at_coop_desc" "Sei appena evaso di prigione e hai con te solo una pistola. Sopravvivi fino all'arrivo di una nave da evacuazione. Uccidi i nemici per guadagnare denaro e acquistare armi. \n^FFC83200Giocatori: 6\nDimensioni max gruppo: 6" + "PL_at_coop_lobby" "Lobby Escape" + "PL_attrition" "Caccia alle taglie" + "PL_attrition_abbr" "CT" + "PL_attrition_desc" "Uccidi i nemici per guadagnare soldi. Ottienine di più depositando i bonus nei luoghi designati.\n^FFC83200Giocatori: 5v5 *IA\nTempo limite: 10 min.\nDimensioni max gruppo: 5" + "PL_attrition_lobby" "Lobby Caccia alle taglie" + "PL_capture_the_flag" "Cattura bandiera" + "PL_capture_the_flag_abbr" "CLB" + "PL_capture_the_flag_desc" "Ruba la bandiera nemica e riportala alla tua base mentre impedisci alla squadra avversaria di prendere la tua!\n^FFC83200Giocatori: 5v5\nTempo limite: 12 min.\nDimensioni max gruppo: 5" + "PL_capture_the_flag_lobby" "Lobby CB" + "PL_coliseum" "Colosseo" + "PL_coliseum_desc" "Uno-contro-uno in gabbia con mobilità incrementata. Vince il round chi uccide l'avversario. Chi si aggiudica 3 round su 5 vince un regalo del difensore.^FFC83200\nGiocatori: 1v1 *Niente Titan\nTempo limite: 3 min. *Nessun rientro\n**^FFFFFF00RICHIEDE BIGLIETTO COLOSSEO o PAGAMENTO DEL COSTO D'INGRESSO" + "PL_coliseum_lobby" "Lobby Colosseo" + "PL_colony" "Colonia 24/7" + "PL_colony_abbr" "COL" + "PL_colony_desc" "Sempre e soltanto Colonia. ^CCCCCC00Questa operazione effettuerà ricerche di corrispondenze di ^FFC83200Logoramento^CCCCCC00, ^FFC83200Piloti contro piloti^CCCCCC00 e ^FFC83200Sopravvivenza Titan^CCCCCC00." + "PL_colony_lobby" "Lobby Colonia 24/7" + "PL_ctf_lf" "CB (Nitro)" + "PL_ctf_lf_abbr" "CB-N" + "PL_ctf_lf_desc" "Un frenetico Cattura bandiera in mappe selezionate.\n^FFC83200Giocatori: 5v5\nDimensioni max gruppo: 5\n^F4D5A600Torna Bandiera istantanea" + "PL_ctf_lf_lobby" "Lobby Nitro CB" + "PL_default_description" "Descrizione predefinita" + "PL_default_lobbytitle" "Titolo lobby predefinito" + "PL_default_name" "Nome predefinito" + "PL_don" "Lascia o raddoppia" + "PL_fd" "Difesa Frontiera" + "PL_fd_desc" "Difenditi contro le ondate delle forze della flotta Remnant" + "PL_fd_easy" "Difesa Frontiera: facile" + "PL_fd_easy_desc" "Sconfiggi l’opposizione" + "PL_fd_easy_lobby" "Difesa Frontiera: Lobby facile" + "PL_fd_hard" "Difesa Frontiera: difficile" + "PL_fd_hard_desc" "Sono necessarie buone abilità di gioco" + "PL_fd_hard_lobby" "Difesa Frontiera: Lobby difficile" + "PL_fd_insane" "Difesa Frontiera: folle" + "PL_fd_insane_desc" "Non sopravviverai" + "PL_fd_insane_lobby" "Difesa Frontiera: Lobby folle" + "PL_fd_lobby" "Lobby Difesa Frontiera" + "PL_fd_master" "Difesa Frontiera: maestro" + "PL_fd_master_desc" "Solo i migliori dei migliori sopravviveranno" + "PL_fd_master_lobby" "Difesa Frontiera: Lobby maestro" + "PL_fd_normal" "Difesa Frontiera: normale" + "PL_fd_normal_desc" "Consigliato per giocatori esperti" + "PL_fd_normal_lobby" "Difesa Frontiera: lobby normale" + "PL_ffa" "Tutti contro tutti" + "PL_ffa_abbr" "TCT" + "PL_ffa_desc" "Ogni pilota è solo. Uccidi tutti i nemici.\n^FFC83200Giocatori: 1v11\nTempo limite: 10 min.\nDimensioni max gruppo: 1" + "PL_ffa_lobby" "Lobby Tutti contro tutti" + "PL_fra" "Azione libera" + "PL_fra_abbr" "AL" + "PL_fra_desc" "Ogni pilota lotta per sé. Uccidi i nemici per vincere. Taccogli 3 batterie per un Titanfall.\n^FFC83200Giocatori: 1v11\nLimite di tempo: 15m\nDimensioni max gruppo: 1" + "PL_fra_lobby" "Lobby Azione libera" + "PL_groud_war_lobby" "Lobby Remix 8v8" + "PL_ground_war" "Remix 8v8" + "PL_ground_war_abbr" "8v8" + "PL_ground_war_desc" "Include Scontro e Punto di controllo amplificato, con elevato numero di giocatori su tutte le mappe.\n^FFC83200Giocatori: 8v8" + "PL_hardpoint" "PCA" + "PL_hardpoint_abbr" "PCA" + "PL_hardpoint_desc" "Cattura e mantieni un punto di controllo per ottenere punti. I punti di controllo amplificati danno punti doppi.\n^FFC83200Giocatori: 6v6\nTempo limite: 10 min.\nDimensioni max gruppo: 6" + "PL_hardpoint_lobby" "Lobby PCA" + "PL_hunted" "Preda" + "PL_iron_last_titan_standing" "ST d'acciaio" + "PL_iron_last_titan_standing_abbr" "STA" + "PL_iron_last_titan_standing_desc" "Solo Titan, scontro organizzato in round a eliminazione. La vittoria va a chi vince per primo 3 round.\n^FFC83200Giocatori: 5v5 *NO PILOTI\nTempo limite: 3 min per round *Nessun rientro\nDimensioni max gruppo: 5" + "PL_iron_last_titan_standing_lobby" "PL_iron_last_titan_standing_lobby" + "PL_last_titan_standing" "Sopravvivenza Titan" + "PL_last_titan_standing_abbr" "ST" + "PL_last_titan_standing_desc" "Tutti i giocatori iniziano a bordo dei Titan in questo scontro organizzato in round a eliminazione. La vittoria va a chi vince per primo 3 round.\n^FFC83200Giocatori: 5v5 *Inizi come Titan\nTempo limite: 3 min. per round *Nessun rientro\nDimensioni max gruppo: 5" + "PL_last_titan_standing_lobby" "Lobby ST" + "PL_limited_time_mode" "A tempo limitato" + "PL_live_fire" "Live Fire" + "PL_live_fire_abbr" "LF" + "PL_live_fire_desc" "Combattimento rapido in un'arena Live Fire. Vinci il round uccidendo tutti i piloti nemici oppure tenendo la bandiera allo scadere del tempo.^FFC83200\nGiocatori: 6v6 *Niente Titan\nTempo limite: 60 s *Nessun rientro\nDimensioni max gruppo: 6" + "PL_live_fire_lobby" "Lobby Live Fire" + "PL_load_a_map_on_the_command_line" "Carica una mappa dalla linea di comando -solo sviluppatori" + "PL_marked_for_death" "Marchiato a morte" + "PL_marked_for_death_abbr" "MAM" + "PL_marked_for_death_desc" "Uccidi o proteggi i bersagli marchiati.\n^FFC83200Giocatori: 6v6 \nTempo limite: 12 m\nDimensioni max gruppo: 6" + "PL_marked_for_death_lobby" "Lobby Marchiato a morte" + "PL_nitro_ffa" "FFA (Nitro)" + "PL_nitro_ffa_abbr" "FFA-N" + "PL_nitro_ffa_desc" "Un frenetico Tutti contro tutti su mappe selezionate.\n^FFC83200Giocatori: 6\n^F4D5A600No Titan\nNo potenziamenti" + "PL_nitro_ffa_lobby" "Lobby Nitro FFA" + "PL_nitro_mixtape" "Remix (Nitro)" + "PL_nitro_mixtape_abbr" "MXT-N" + "PL_nitro_mixtape_desc" "Un frenetico CB, MFD e PvP in mappe selezionate.\n^FFC83200Giocatori: 5v5\nDimensioni max gruppo: 5\n^F4D5A600Torna Bandiera istantanea" + "PL_nitro_mixtape_lobby" "Lobby Remix" + "PL_pilot_hunter" "Scontro" + "PL_pilot_hunter_abbr" "SCN" + "PL_pilot_hunter_desc" "Uccidi piloti e Titan nemici. \n^FFC83200Giocatori: 8v8\nTempo limite: 10 min.\nDimensioni max gruppo: 8" + "PL_pilot_hunter_lobby" "Lobby Scontro" + "PL_pilot_skirmish" "Piloti contro piloti" + "PL_pilot_skirmish_abbr" "PvP" + "PL_pilot_skirmish_desc" "Uccidi i piloti nemici. Titanfall non consentiti.\n^FFC83200Giocatori: 8v8 *Nessun Titan\nTempo limite: 10 min.\nDimensioni max gruppo: 8" + "PL_pilot_skirmish_lobby" "Lobby PvP" + "PL_pl_rebuild_all_paths" "Ricostruisci tutti i percorsi" + "PL_pl_run_with_ai_ainrebuildonmapstart_2" "Esegui con ai_ainRebuildOnMapStart 2" + "PL_private_match" "Partita privata Beta" + "PL_private_match_desc" "Gioca una partita privata personalizzata in una mappa e modalità a scelta.\n^FFC83200INVITA NETWORK o INVITA AMICI per giocare\n^FFC83200Giocatori: 1-16\nNessun progresso" + "PL_private_match_lobby" "Lobby Partita privata Beta" + "PL_promo_coop" "CO-OP per 4 giocatori" + "PL_raid" "Raid" + "PL_rise" "Ascesa 24/7" + "PL_rise_abbr" "ASC" + "PL_rise_desc" "Sempre e soltanto Ascesa. ^CCCCCC00Questa operazione effettuerà una ricerca per corrispondenze di ^FFC83200Cattura Bandiera^CCCCCC00, ^FFC83200Punto di controllo amplificato^CCCCCC00, ^FFC83200Piloti contro piloti^CCCCCC00, ^FFC83200Live Fire^CCCCCC00 e ^FFC83200Sopravvivenza Titan^CCCCCC00." + "PL_rise_lobby" "Lobby Ascesa 24/7" + "PL_rocket_arena" "Arena razzi" + "PL_rocket_arena_abbr" "LF" + "PL_rocket_arena_desc" "Regole di Live Fire classiche con EPG modificati.^FFC83200\nGiocatori: 6v6 *No Titan\nTempo limite: 90 s *Nessun rientro\nDimensioni max gruppo: 6" + "PL_rocket_arena_lobby" "Lobby Arena razzi" + "PL_settings_for_when_someone_loads_a_map_on_the_command_line_do_not_edit_the_cmdlinemapload_1_below_-_this_makes_this_work" "Impostazioni per il caricamento di una mappa dalla linea di comando. Non modificare il comando sottostante cmdlineMapLoad 1 perché è essenziale per il funzionamento." + "PL_speedball" "Live Fire" + "PL_speedball_desc" "Combatti per il possesso di una bandiera neutrale. Elimina la squadra nemica o possiedi la bandiera allo scadere del tempo per vincere il round. Vince il primo ad aggiudicarsi 5 round.\n^FFC83200Giocatori: 6v6 *Niente Titan\nTempo limite: 60 secondi per round *Nessun rientro\nDimensioni max gruppo: 6" + "PL_speedball_lobby" "Lobby Live Fire" + "PL_tactikill" "Logoramento Uccisione tattica" + "PL_tactikill_abbr" "ATT" + "PL_tactikill_desc" "Regole di logoramento classiche, ad eccezione del fatto che le abilità tattiche sono ripristinate completamente al momento dell’uccisione.\n^FFC83200Giocatori: 6v6 *AI\nTempo limite: 10 m\nDimensioni max gruppo: 6" + "PL_tactikill_lobby" "Lobby Logoramento Uccisione tattica" + "PL_titan_brawl" "Scontro tra Titan" + "PL_titan_brawl_abbr" "STT" + "PL_titan_brawl_desc" "Uccidi i Titan nemici. Piloti non consentiti.\n^FFC83200Giocatori: 5v5\nTempo limite: 10m\nDimensioni max gruppo: 5" + "PL_titan_brawl_hint" "Uccidi i Titan nemici.\nNessuna espulsione" + "PL_titan_brawl_lobby" "Lobby Scontro tra Titan" + "PL_titan_brawl_turbo" "Scontro tra Titan Turbo" + "PL_titan_brawl_turbo_abbr" "TTDM" + "PL_titan_brawl_turbo_desc" "Regole di Scontro tra Titan classiche con rigenerazione Scatto e generazione Nucleo più rapide.\n^FFC83200Giocatori: 5v5\nTempo limite: 10 m\nDimensioni max gruppo: 5" + "PL_titan_brawl_turbo_hint" "Uccidi i Titan nemici.\nNessuna espulsione" + "PL_titan_brawl_turbo_lobby" "Lobby Scontro tra Titan Turbo" + "PL_turbo_last_titan_standing" "Turbo ST" + "PL_turbo_last_titan_standing_abbr" "ST" + "PL_turbo_last_titan_standing_desc" "Regole ST classiche con rigenerazione Scatto e generazione Nucleo più rapide.\n^FFC83200Giocatori: 5v5 *Inizia come Titan\nTempo limite: 3 m per round *Nessun rientro\nDimensioni max gruppo: 5" + "PL_turbo_last_titan_standing_lobby" "Lobby ST Turbo" + "PL_variety_pack" "Remix" + "PL_variety_pack_desc" "Un numero di giocatori variabile e varie mappe in queste modalità:\n^FFC83200*Caccia alle taglie *Logoramento\n*Sopravvivenza Titan *Punto di controllo amplificato\n*Piloti contro piloti *Cattura bandiera" + "PL_variety_pack_lobby" "Lobby Remix" + "PL_wargames" "Giochi di guerra 24/7" + "PL_wargames_abbr" "GDG" + "PL_wargames_desc" "Sempre e soltanto Giochi di guerra. ^CCCCCC00Questa operazione effettuerà ricerche di corrispondenze di ^FFC83200Logoramento^CCCCCC00, ^FFC83200Cattura Bandiera^CCCCCC00, ^FFC83200Piloti contro piloti^CCCCCC00, ^FFC83200Punto di controllo amplificato^CCCCCC00 e ^FFC83200Sopravvivenza Titan^CCCCCC00." + "PL_wargames_lobby" "Lobby Giochi di guerra 24/7" + "WATCH_TUTORIAL" "GUARDA IL TUTORIAL" + } + } + "lang" + { + "Language" "english" + "Tokens" + { + "NO_PRICE" "Offer Expired" + "NO_PRICE_TWO_LINES" "Offer\nExpired" + "WATCH_TUTORIAL" "WATCH TUTORIAL" + "PL_promo_coop" "4 Player CO-OP" + "PL_limited_time_mode" "Limited Time Mode" + "PL_speedball" "Live Fire" + "PL_speedball_lobby" "Live Fire Lobby" + "PL_speedball_desc" "Fight for possession of a netural flag. Eliminate the enemy team or possess the flag when the clock runs out to win the round. Winner is the first to 5 rounds won.\n^FFC83200Players: 6v6 *No Titans\nTime Limit: 60 seconds per round *No Respawns\nMax Party Size: 6" + "PL_raid" "Raid" + "PL_hunted" "Hunted" + "PL_don" "Double or Nothing" + "PL_fd" "Frontier Defense" + "PL_fd_lobby" "Frontier Defense Lobby" + "PL_fd_desc" "Defend against waves of Remnant Fleet forces" + "PL_fd_easy" "Frontier Defense: Easy" + "PL_fd_easy_lobby" "Frontier Defense: Easy Lobby" + "PL_fd_easy_desc" "Crush the opposition" + "PL_fd_normal" "Frontier Defense: Regular" + "PL_fd_normal_lobby" "Frontier Defense: Regular Lobby" + "PL_fd_normal_desc" "Recommended for experienced players" + "PL_fd_hard" "Frontier Defense: Hard" + "PL_fd_hard_lobby" "Frontier Defense: Hard Lobby" + "PL_fd_hard_desc" "Skilled play is required" + "PL_fd_master" "Frontier Defense: Master" + "PL_fd_master_lobby" "Frontier Defense: Master Lobby" + "PL_fd_master_desc" "Only the best of the best will succeed" + "PL_fd_insane" "Frontier Defense: Insane" + "PL_fd_insane_lobby" "Frontier Defense: Insane Lobby" + "PL_fd_insane_desc" "You will not survive" + "PL_angel_city" "Angel City 24/7" + "PL_angel_city_lobby" "Angel City 24/7 Lobby" + "PL_angel_city_desc" "All Angel City, all the time.\n^FFC83200*Bounty Hunt *Attrition\n*Amped Hardpoint" + "PL_angel_city_abbr" "AC" + "PL_colony" "Colony 24/7" + "PL_colony_lobby" "Colony 24/7 Lobby" + "PL_colony_desc" "All Colony, all the time. ^CCCCCC00This will search for matches of ^FFC83200Attrition^CCCCCC00, ^FFC83200Pilots vs Pilots^CCCCCC00, and ^FFC83200Last Titan Standing^CCCCCC00." + "PL_colony_abbr" "COL" + "PL_rise" "Rise 24/7" + "PL_rise_lobby" "Rise 24/7 Lobby" + "PL_rise_desc" "All Rise, all the time. ^CCCCCC00This will search for matches of ^FFC83200CTF^CCCCCC00, ^FFC83200Amped Hardpoint^CCCCCC00, ^FFC83200Pilots vs Pilots^CCCCCC00, ^FFC83200Live Fire^CCCCCC00, and ^FFC83200Last Titan Standing^CCCCCC00." + "PL_rise_abbr" "RIS" + "PL_wargames" "Wargames 24/7" + "PL_wargames_lobby" "Wargames 24/7 Lobby" + "PL_wargames_desc" "All Wargames, all the time. ^CCCCCC00This will search for matches of ^FFC83200Attrition^CCCCCC00, ^FFC83200CTF^CCCCCC00, ^FFC83200Pilots vs Pilots^CCCCCC00, ^FFC83200Amped Hardpoint^CCCCCC00, and ^FFC83200Last Titan Standing^CCCCCC00." + "PL_wargames_abbr" "WGM" + "PL_ctf_lf" "CTF (Nitro)" + "PL_ctf_lf_lobby" "CTF Nitro Lobby" + "PL_ctf_lf_desc" "Fast paced Capture the Flag in selected maps.\n^FFC83200Players: 5v5\nMax Party Size: 5\n^F4D5A600Instant Flag Returns // No Titans\nNo Boosts // Phase Shift Drops Flag" + "PL_ctf_lf_abbr" "CTF-N" + + "PL_nitro_mixtape" "Mixtape (Nitro)" + "PL_nitro_mixtape_lobby" "Mixtape Lobby" + "PL_nitro_mixtape_desc" "Fast paced CTF, MFD and PvP on selected maps.\n^FFC83200Players: 5v5\nMax Party Size: 5\n^F4D5A600Instant Flag Returns // No Titans\nNo Boosts // Phase Shift Drops Flag" + "PL_nitro_mixtape_abbr" "MXT-N" + + "PL_nitro_ffa" "FFA (Nitro)" + "PL_nitro_ffa_lobby" "FFA Nitro Lobby" + "PL_nitro_ffa_desc" "Fast paced Free for All on selected maps.\n^FFC83200Players: 6\n^F4D5A600No Titans\nNo Boosts" + "PL_nitro_ffa_abbr" "FFA-N" + + "PL_aitdm" "Attrition" + "PL_aitdm_lobby" "Attrition Lobby" + "PL_aitdm_desc" "Kill all enemies.\n^FFC83200Players: 6v6 *AI\nTime Limit: 10m\nMax Party Size: 6" + "PL_aitdm_abbr" "ATT" + "PL_attrition" "Bounty Hunt" + "PL_attrition_lobby" "Bounty Hunt Lobby" + "PL_attrition_desc" "Kill enemies to earn money. Earn more by 'banking' your bonus at designated locations.\n^FFC83200Players: 5v5 *AI\nTime Limit: 10m\nMax Party Size: 5" + "PL_attrition_abbr" "BH" + "PL_at_coop" "Escape (Co-op)" + "PL_at_coop_lobby" "Escape Lobby" + "PL_at_coop_desc" "You've just escaped prison with nothing more than a pistol. Survive until an evac can arrive. Kill enemies to earn money and buy weapons. \n^FFC83200Players: 6\nMax Party Size: 6" + "PL_pilot_skirmish" "Pilots vs. Pilots" + "PL_pilot_skirmish_lobby" "PvP Lobby" + "PL_pilot_skirmish_desc" "Kill enemy pilots. Titanfalls not permitted.\n^FFC83200Players: 8v8 *No Titans\nTime Limit: 10m\nMax Party Size: 8" + "PL_pilot_skirmish_abbr" "PvP" + "PL_hardpoint" "Amped Hardpoint" + "PL_hardpoint_lobby" "Amped Hardpoint Lobby" + "PL_hardpoint_desc" "Capture and hold a hardpoint to earn points. Amped Hardpoints give double points.\n^FFC83200Players: 6v6\nTime Limit: 10m\nMax Party Size: 6" + "PL_hardpoint_abbr" "AHP" + "PL_capture_the_flag" "Capture the Flag" + "PL_capture_the_flag_lobby" "CTF Lobby" + "PL_capture_the_flag_desc" "Steal the enemy flag and return it to your base while stopping the enemy team from taking your flag!\n^FFC83200Players: 5v5\nTime Limit: 12m\nMax Party Size: 5" + "PL_capture_the_flag_abbr" "CTF" + "PL_last_titan_standing" "Last Titan Standing" + "PL_last_titan_standing_lobby" "LTS Lobby" + "PL_last_titan_standing_desc" "All players start in Titans in this round-based elimination match-up. Winner is the first to 3 rounds won.\n^FFC83200Players: 5v5 *Start as Titan\nTime Limit: 3m per round *No Respawns\nMax Party Size: 5" + "PL_last_titan_standing_abbr" "LTS" + "PL_iron_last_titan_standing" "Iron LTS" + "PL_iron_last_titan_standing_lobby" "" + "PL_iron_last_titan_standing_desc" "Titans-only, round-based elimination match-up. Winner is the first to 3 rounds won.\n^FFC83200Players: 5v5 *NO PILOTS\nTime Limit: 3m per round *No Respawns\nMax Party Size: 5" + "PL_iron_last_titan_standing_abbr" "ILTS" + "PL_aegis_last_titan_standing" "Aegis LTS" + "PL_aegis_last_titan_standing_lobby" "" + "PL_aegis_last_titan_standing_desc" "Aegis Upgrades enabled. Round-based elimination match-up. Winner is the first to 3 rounds won.\n^FFC83200Players: 5v5 *Start as Titan\nTime Limit: 3m per round *No Respawns\nMax Party Size: 5" + "PL_aegis_last_titan_standing_abbr" "ALTS" + "PL_pilot_hunter" "Skirmish" + "PL_pilot_hunter_lobby" "Skirmish Lobby" + "PL_pilot_hunter_desc" "Kill enemy pilots and Titans. \n^FFC83200Players: 8v8\nTime Limit: 10m\nMax Party Size: 8" + "PL_pilot_hunter_abbr" "SKM" + "PL_titan_brawl" "Titan Brawl" + "PL_titan_brawl_lobby" "Titan Brawl Lobby" + "PL_titan_brawl_desc" "Kill enemy Titans. Pilots not permitted.\n^FFC83200Players: 5v5\nTime Limit: 10m\nMax Party Size: 5" + "PL_titan_brawl_abbr" "TTDM" + "PL_titan_brawl_hint" "Kill enemy Titans.\nNo Ejection // No Disembark" + "PL_aegis_titan_brawl" "Aegis Titan Brawl" + "PL_aegis_titan_brawl_lobby" "Aegis Titan Brawl Lobby" + "PL_aegis_titan_brawl_desc" "Kill enemy Titans. Aegis Upgrades enabled.\n^FFC83200Players: 5v5\nTime Limit: 10m\nMax Party Size: 5" + "PL_aegis_titan_brawl_abbr" "ATTDM" + "PL_aegis_titan_brawl_hint" "Kill enemy Titans.\nNo Ejection // No Disembark" + "PL_variety_pack" "Mixtape" + "PL_variety_pack_lobby" "Mixtape Lobby" + "PL_variety_pack_desc" "Varying player counts and including a variety of maps on these modes:\n^FFC83200*Bounty Hunt *Attrition\n*Last Titan Standing *Amped Hardpoint\n*Pilots vs. Pilots *Capture the Flag" + "PL_coliseum" "Coliseum" + "PL_coliseum_lobby" "Coliseum Lobby" + "PL_coliseum_desc" "One on one combat with enhanced mobility in a cage. Kill your opponent, win a round. Best 3 out of 5 wins an Advocate Gift reward.^FFC83200\nPlayers: 1v1 *No Titans\nTime Limit: 3m *No Respawns\n**^FFFFFF00REQUIRES COLISEUM TICKET or PAID ENTRY FEE" + "PL_ground_war" "8v8 Mixtape" + "PL_groud_war_lobby" "8v8 Mixtape Lobby" + "PL_ground_war_desc" "Includes Skirmish and Amped Hardpoint, with high player counts on all maps.\n^FFC83200Players: 8v8" + "PL_ground_war_abbr" "8v8" + "PL_ffa" "Free for All" + "PL_ffa_lobby" "Free for All Lobby" + "PL_ffa_desc" "Every pilot for themself, kill all enemies.\n^FFC83200Players: 1v11\nTime Limit: 10m\nMax Party Size: 1" + "PL_ffa_abbr" "FFA" + "PL_fra" "Free Agents" + "PL_fra_lobby" "Free Agents Lobby" + "PL_fra_desc" "You're running solo. Kill enemies to win. Collect 3 batteries for a Titanfall.\n^FFC83200Players: 1v11\nTime Limit: 15m\nMax Party Size: 1" + "PL_fra_abbr" "FRA" + "PL_default_name" "Default name" + "PL_default_lobbytitle" "Default lobbytitle" + "PL_default_description" "Default description" + "PL_load_a_map_on_the_command_line" "Load a map on the command line -devonly" + "PL_settings_for_when_someone_loads_a_map_on_the_command_line_do_not_edit_the_cmdlinemapload_1_below_-_this_makes_this_work" "Settings for when someone loads a map on the command line. Do not edit the cmdlineMapLoad 1 below - this makes this work." + "PL_pl_rebuild_all_paths" "Rebuild all paths" + "PL_pl_run_with_ai_ainrebuildonmapstart_2" "Run with ai_ainRebuildOnMapStart 2" + "PL_private_match" "Private Match Beta" + "PL_private_match_lobby" "Private Match Beta Lobby" + "PL_private_match_desc" "Play a custom, private match on a map and mode of your choice.\n^FFC83200INVITE NETWORK or INVITE FRIENDS to play\n^FFC83200Players: 1-16\nNo Progression" + + "PL_live_fire" "Live Fire" + "PL_live_fire_lobby" "Live Fire Lobby" + "PL_live_fire_desc" "Fast-paced combat in a Live Fire Arena. Win the round by killing all enemy pilots or possessing the flag when the timer runs out.^FFC83200\nPlayers: 6v6 *No Titans\nTime Limit: 60s *No Respawns\nMax Party Size: 6" + "PL_live_fire_abbr" "LF" + + "PL_marked_for_death" "Marked For Death" + "PL_marked_for_death_lobby" "Marked For Death Lobby" + "PL_marked_for_death_desc" "Kill or protect the marked targets.\n^FFC83200Players: 6v6 \nTime Limit: 12m\nMax Party Size: 6" + "PL_marked_for_death_abbr" "MFD" + + "PL_amped_tacticals" "Amped Tacticals" + "PL_amped_tacticals_lobby" "Amped Tacticals Lobby" + "PL_amped_tacticals_desc" "Classic Attrition rules except Tactical abilities are more powerful.\n^FFC83200Players: 6v6 *AI\nTime Limit: 10m\nMax Party Size: 6" + "PL_amped_tacticals_abbr" "ATT" + + "PL_tactikill" "Tactikill Attrition" + "PL_tactikill_lobby" "Tactikill Attrition Lobby" + "PL_tactikill_desc" "Classic Attrition rules except Tactical abilities are fully reset upon kill.\n^FFC83200Players: 6v6 *AI\nTime Limit: 10m\nMax Party Size: 6" + "PL_tactikill_abbr" "ATT" + + "PL_all_grapple" "Attack on Titanfall" + "PL_all_grapple_lobby" "Attack on Titanfall Lobby" + "PL_all_grapple_desc" "Classic Attrition rules except all Tactical abilities are replaced with Grapple.\n^FFC83200Players: 6v6 *AI\nTime Limit: 10m\nMax Party Size: 6" + "PL_all_grapple_abbr" "ATT" + + "PL_all_holopilot" "The Great Bamboozle" + "PL_all_holopilot_lobby" "The Great Bamboozle Lobby" + "PL_all_holopilot_desc" "Classic Live Fire rules except all Tactical abilities are replaced with Holopilot.^FFC83200\nPlayers: 6v6 *No Titans\nTime Limit: 60s *No Respawns\nMax Party Size: 6" + "PL_all_holopilot_abbr" "LF" + + "PL_all_phase" "The Otherside" + "PL_all_phase_lobby" "The Otherside Lobby" + "PL_all_phase_desc" "Classic Attrition rules except all Tactical abilities are replaced with Phase.\n^FFC83200Players: 6v6 *AI\nTime Limit: 10m\nMax Party Size: 6" + "PL_all_phase_abbr" "ATT" + + "PL_rocket_arena" "Rocket Arena" + "PL_rocket_arena_lobby" "Rocket Arena Lobby" + "PL_rocket_arena_desc" "Classic Live Fire rules with modified EPGs.^FFC83200\nPlayers: 6v6 *No Titans\nTime Limit: 90s *No Respawns\nMax Party Size: 6" + "PL_rocket_arena_abbr" "LF" + + "PL_turbo_last_titan_standing" "Turbo LTS" + "PL_turbo_last_titan_standing_lobby" "Turbo LTS Lobby" + "PL_turbo_last_titan_standing_desc" "Classic LTS rules with faster Dash regen and Core generation.\n^FFC83200Players: 5v5 *Start as Titan\nTime Limit: 3m per round *No Respawns\nMax Party Size: 5" + "PL_turbo_last_titan_standing_abbr" "LTS" + + "PL_all_spicy" "Spicy Attrition" + "PL_all_spicy_lobby" "Spicy Attrition Lobby" + "PL_all_spicy_desc" "Classic Attrition rules except all Tactical abilities are replaced with Ticks.\n^FFC83200Players: 6v6 *AI\nTime Limit: 10m\nMax Party Size: 6" + "PL_all_spicy_abbr" "ATT" + + "PL_titan_brawl_turbo" "Turbo Titan Brawl" + "PL_titan_brawl_turbo_lobby" "Turbo Titan Brawl Lobby" + "PL_titan_brawl_turbo_desc" "Classic Titan Brawl rules with faster Dash regen and Core generation.\n^FFC83200Players: 5v5\nTime Limit: 10m\nMax Party Size: 5" + "PL_titan_brawl_turbo_abbr" "TTDM" + "PL_titan_brawl_turbo_hint" "Kill enemy Titans.\nNo Ejection // No Disembark" + + "PL_sbox" "Sandbox" + "PL_sbox_lobby" "Sandbox Lobby" + "PL_sbox_desc" "like gmod but worse" + "PL_sbox_abbr" "SBOX" + "GAMEMODE_SBOX" "Sandbox" + + "PL_gg" "Gun Game" + "PL_gg_lobby" "Gun Game Lobby" + "PL_gg_desc" "Get a kill with each gun to win." + "PL_gg_abbr" "GG" + "GAMEMODE_GG" "Gun Game" + + "PL_tt" "Titan Tag" + "PL_tt_lobby" "Titan Tag Lobby" + "PL_tt_desc" "Earn points while in your titan. Destroy a titan to get your own." + "PL_tt_abbr" "TT" + "GAMEMODE_TT" "Titan Tag" + + "PL_inf" "Infection" + "PL_inf_lobby" "Infection Lobby" + "PL_inf_desc" "Survivors are infected when killed." + "PL_inf_abbr" "INF" + "GAMEMODE_INF" "Infection" + "INFECTION_YOU_ARE_INFECTED" "You've been Infected!" + "INFECTION_KILL_SURVIVORS" "Infect All Remaining Survivors." + "INFECTION_FIRST_INFECTED" "%s1 is the First Infected." + "INFECTION_LAST_SURVIVOR" "%s1 is the Last Survivor!" + "INFECTION_KILL_LAST_SURVIVOR" "Infect them before time runs out!" + "INFECTION_YOU_ARE_LAST_SURVIVOR" "You are the Last Survivor!" + "INFECTION_SURVIVE_LAST_SURVIVOR" "Survive." + + // these are defined in r1_english but titan war is a shit name so i'm changing it to another one that was referenced in development + "GAMEMODE_fw" "Frontier War" + "PL_fw" "Frontier War" + "PL_fw_lobby" "Frontier War Lobby" + "PL_fw_desc" "Destroy the enemy's harvester and protect your own" + "PL_fw_abbr" "FW" + + "GAMEMODE_kr" "Amped Killrace" + "PL_kr" "Amped Killrace" + "PL_kr_lobby" "Amped Killrace Lobby" + "PL_kr_desc" "Get kills to increase the length of your killrace. Collect the flag to start it. Set the record to win" + "PL_kr_abbr" "KR" + "SCOREBOARD_KR_RECORD" "Kill Record" + "KR_NEW_RACER" "%s1 is the amped killracer" + "KR_YOU_ARE_NEW_RACER" "You are the amped killracer" + "KR_YOU_SET_NEW_RECORD" "Set a New Kill Record!" + "KR_FLAG_INCOMING" "Flag incoming" + "KR_COLLECT_FLAG" "Collect it to become the Killracer!" + "KR_ENEMY_KILLRACE_OVER" "%s1's killrace is over" + "KR_YOUR_KILLRACE_OVER" "Your killrace is over" + "KR_YOUR_KILLRACE_SCORE" "You got %s1 kills." + + "GAMEMODE_fastball" "Fastball" + "PL_fastball" "Fastball" + "PL_fastball_lobby" "Fastball Lobby" + "PL_fastball_desc" "Permadeath. Hack control panels to win rounds and respawn your teammates." + "PL_fastball_abbr" "FB" + "FASTBALL_PANEL_CAPTURED" "%s1 captured panel %s2" + "SCOREBOARD_FASTBALL_HACKS" "Panels Captured" + + // FAQ - Community + // + + "COMMUNITYUPDATE_NAME" "Community" + "COMMUNITYUPDATE_DESC" "`3Titanfall Community Updates`0\n\nGet latest info and see stuff we think is rad from around the web.\n\nFor more:\n`2%$rui/bullet_point%`0Follow us on Twitter `1@Respawn`0\n`2%$rui/bullet_point%`0Like us on `1facebook.com/RespawnEntertainment`0\n`2%$rui/bullet_point%`0Join us at `1www.respawn.com`0" + + "COMMUNITYUPDATE_00_Q" "\"Postcards from the Frontier\" Trailer" + "COMMUNITYUPDATE_00_A" "Your adventure across the stunning vistas of the Frontier continues with the latest DLC drop for Titanfall 2: Postcards From the Frontier. Featuring new and familiar locations along with a new collection of Elite Weapon Warpaints, the Frontier has never looked better.\n\n\nPress `2%[A_BUTTON|MOUSE1]%`0 to view." + + "COMMUNITYUPDATE_01_Q" "Postcards from the Frontier: The Patch Notes" + "COMMUNITYUPDATE_01_A" "Read all the changes that come with the Postcards from the Frontier patch.\n\n\nPress `2%[A_BUTTON|MOUSE1]%`0 to view." + + "COMMUNITYUPDATE_02_Q" "Titanfall: Assault \"Launch\" Trailer" + "COMMUNITYUPDATE_02_A" "Coming soon to mobile devices, Titanfall: Assault is an exciting real time RTS set in the Titanfall universe in partnership with Particle City. Watch it in action here! \n\n\nPress `2%[A_BUTTON|MOUSE1]%`0 to view." + + "COMMUNITYUPDATE_03_Q" "Titanfall Assault: \"Learn the Basics\" video" + "COMMUNITYUPDATE_03_A" "Iniquity walks us through the tutorial and gives basic tips for Titanfall Assault. This is the perfect way to get started learning about the game.\n\n\nPress `2%[A_BUTTON|MOUSE1]%`0 to view." + + "COMMUNITYUPDATE_04_Q" "Respawn Plays Frontier Defense" + "COMMUNITYUPDATE_04_A" "Listen to some of the key folks behind Frontier Defense talk about the history and making of the mode and watch us play a few rounds! \n\n\nPress `2%[A_BUTTON|MOUSE1]%`0 to view." + + "COMMUNITYUPDATE_05_Q" "Community Creations: Get to the Point" + "COMMUNITYUPDATE_05_A" "Kevin Younger created a fun montage showing off a plethora of sweet moves with the Pulse Blade. \n\n\nPress `2%[A_BUTTON|MOUSE1]%`0 to view." + + "COMMUNITYUPDATE_06_Q" "Community Creations: Northstar Pilot Hunt" + "COMMUNITYUPDATE_06_A" "ConzeyG via reddit shows off brutal efficiency with Northstar picking off Pilots in Marked for Death mode. \n\n\nPress `2%[A_BUTTON|MOUSE1]%`0 to view." + + "COMMUNITYUPDATE_07_Q" "\"Operation Frontier Shield\" Gameplay Trailer" + "COMMUNITYUPDATE_07_A" "Available now! Frontier Defense returns along with Rise as well as brand new warpaints to buy and new a new Live Fire map. Watch it all in action here.\n\n\nPress `2%[A_BUTTON|MOUSE1]%`0 to view." + + "COMMUNITYUPDATE_08_Q" "\"The War Games\" Gameplay Trailer" + "COMMUNITYUPDATE_08_A" "Available now! The iconic War Games map returns to Titanfall 2 looking better than ever. Also check out the new execution and new live fire map, Traffic in action.\n\n\nPress `2%[A_BUTTON|MOUSE1]%`0 to view." + + "COMMUNITYUPDATE_09_Q" "\"Monarch's Reign\" Gameplay Trailer" + "COMMUNITYUPDATE_09_A" "This DLC features the addition of the 7th multiplayer Titan: Monarch, a remaster of the map, Relic, a new execution as well as purchasable Ronin and Tone Prime Titans, more camos, banners, and nose art. Watch the action here.\n\n\nPress `2%[A_BUTTON|MOUSE1]%`0 to view." + + "COMMUNITYUPDATE_10_Q" "\"A Glitch in the Frontier\" Gameplay Trailer" + "COMMUNITYUPDATE_10_A" "All is not as it appears on the Frontier - prepare to enter the newest free DLC pack for Titanfall 2: A Glitch in the Frontier - featuring the new map “Glitch”. Inspired by Captain Lastimosa’s home planet of Harmony, vertical drops and long, twisting paths dominate the environment, perfect for chaining together long wall runs to seamlessly glide across the map. A new Live Fire map also joins the fold: Deck, which features tight interior spaces, exposed courtyards, and watchful drones circling overhead. If you’re feeling overwhelmed, the ever-helpful M.R.V.N.s are now here as an all-new faction to lend a cheery robotic hand. Finally, the new Pulse Blade execution is available to unlock to use whenever you feel the need to get your point across.\n\n\nPress `2%[A_BUTTON|MOUSE1]%`0 to view." + + "COMMUNITYUPDATE_11_Q" "\"Colony Reborn\" Gameplay Trailer" + "COMMUNITYUPDATE_11_A" "Return to an iconic fan favorite multiplayer map from the original Titanfall: Colony. Mix in all of the new tacticals & Titans from Titanfall 2, and Pilots & Titans will have to keep their wits about them to survive in this tightly-packed idyllic village of back alleys, blind corners and exposed rooftops; available for free on March 30th for all players. The “Colony Reborn” DLC pack includes the return of classic weapons like the tricked out R-101 assault rifle, a new grapple execution, and new cosmetic options for purchase to look your best while you paint the town red.\n\n\nPress `2%[A_BUTTON|MOUSE1]%`0 to view." + + "COMMUNITYUPDATE_12_Q" "\"Welcome to Live Fire\" Gameplay Trailer" + "COMMUNITYUPDATE_12_A" "Introducing Live Fire: a lightning fast 6v6 Pilot only mode that brings competitive, close quarter combat to the forefront. Featuring two brand new maps designed specifically for Live Fire: Stacks and Meadow. These two free maps are tight, enclosed death boxes designed specifically for the fast-paced, intense nature of the mode.\n\n\nPress `2%[A_BUTTON|MOUSE1]%`0 to view." + + "COMMUNITYUPDATE_13_Q" "\"Welcome to Angel City\" Gameplay Trailer" + "COMMUNITYUPDATE_13_A" "Experience a remastered version of the fan favorite map from the original Titanfall, `1Angel City`0. Stand by for the first free DLC for Titanfall 2 with `1Angel City's Most Wanted`0 available on December 1st for all players. This content includes new cosmetic options to add more flair to to the Frontier. \n\n\nPress `2%[A_BUTTON|MOUSE1]%`0 to view." + + "COMMUNITYUPDATE_14_Q" "\"Encore\" Accolades Trailer" + "COMMUNITYUPDATE_14_A" "Welcome back.\n\n\nPress `2%[A_BUTTON|MOUSE1]%`0 to view." + + "COMMUNITYUPDATE_15_Q" "\"Become One\" Single Player Gameplay Trailer" + "COMMUNITYUPDATE_15_A" "Two legends, one legacy.\n\n\nPress `2%[A_BUTTON|MOUSE1]%`0 to view." + + "COMMUNITYUPDATE_16_Q" "\"Pilots\" Multiplayer Gameplay Trailer" + "COMMUNITYUPDATE_16_A" "Limitless.\n\n\nPress `2%[A_BUTTON|MOUSE1]%`0 to view." + + // faq_community_count = 17 + + // FAQ - Patch Notes + // + + "KNB_SUBJECT_00_NAME" "Game Updates" + "KNB_SUBJECT_00_DESC" "`3What's New in Titanfall?`0\n\nCheck here to see what's changed in Titanfall 2!" + + "KNB_SUBJECT_00_SUB_00_A" "`2%$rui/bullet_point%`010 New community created callsign banners\n\n`2%$rui/bullet_point%`0All advocate gifts are now purchasable with credits\n\n`2%$rui/bullet_point%`0New Purchasable Store Content\n\n" + "KNB_SUBJECT_00_SUB_00_Q" "%$rui/hud/scoreboard/status_titan% November 28 - Harvest Time" + + "KNB_SUBJECT_00_SUB_01_A" "`2%$rui/bullet_point%`0Pistol Primary Slot\n\n`2%$rui/bullet_point%`0Halloween Banners\n\n`2%$rui/bullet_point%`0Balance Changes\n\n`2%$rui/bullet_point%`0New Purchasable Store Content\n\n" + "KNB_SUBJECT_00_SUB_01_Q" "%$rui/hud/scoreboard/status_titan% October 31 - Tricks and Treats" + + "KNB_SUBJECT_00_SUB_02_A" "`2%$rui/bullet_point%`0Frontier Defense - Support for 3 more maps - Drydock, Angel City and Exoplanet.\n\n`2%$rui/bullet_point%`0New Live Fire Map - UMA\n\n`2%$rui/bullet_point%`0New Pilot Execution - Hole In The Wall\n\n`2%$rui/bullet_point%`0New Purchasable Store Content" + "KNB_SUBJECT_00_SUB_02_Q" "%$rui/hud/scoreboard/status_titan% August 29 - Postcards from the Frontier" + + "KNB_SUBJECT_00_SUB_03_A" "`2%$rui/bullet_point%`0Frontier Defense - A new cooperative mode where you join forces with up to three other players to defend a vital objective from increasingly intense waves of AI combatants. Communication and adaptation are key to surviving.\n\n`2%$rui/bullet_point%`0New Map - Rise\n\n`2%$rui/bullet_point%`0New Live Fire Map - Township\n\n`2%$rui/bullet_point%`0New Purchasable Store Content" + "KNB_SUBJECT_00_SUB_03_Q" "%$rui/hud/scoreboard/status_titan% July 25 - Operation Frontier Shield" + + "KNB_SUBJECT_00_SUB_04_A" "`2%$rui/bullet_point%`0New Map - Wargames\n\n`2%$rui/bullet_point%`0New Live Fire Map - Traffic\n\n`2%$rui/bullet_point%`0New Pilot Execution - Shadow Boxing\n\n`2%$rui/bullet_point%`03rd Weapon Slot\n\n`2%$rui/bullet_point%`0Private Match Settings" + "KNB_SUBJECT_00_SUB_04_Q" "%$rui/hud/scoreboard/status_titan% June 27 - The War Games" + + "KNB_SUBJECT_00_SUB_05_A" "`2%$rui/bullet_point%`0New Titan - Monarch\n\n`2%$rui/bullet_point%`0New Map - Relic\n\n`2%$rui/bullet_point%`0New Pilot Execution - Now You See Me\n\n`2%$rui/bullet_point%`0New Purchasable Store Content" + "KNB_SUBJECT_00_SUB_05_Q" "%$rui/hud/scoreboard/status_titan% May 30 - Monarch's Reign" + + "KNB_SUBJECT_00_SUB_06_A" "`2%$rui/bullet_point%`0New Map - Glitch\n\n`2%$rui/bullet_point%`0New Live Fire Map - Deck\n\n`2%$rui/bullet_point%`0New Faction - M.R.V.N.\n\n`2%$rui/bullet_point%`0New Pilot Execution - Get to the Point\n\n`2%$rui/bullet_point%`0Max Gen increased to 100" + "KNB_SUBJECT_00_SUB_06_Q" "%$rui/hud/scoreboard/status_titan% Apr 25 - A Glitch in the Frontier" + + "KNB_SUBJECT_00_SUB_07_A" "`2%$rui/bullet_point%`0New Map - Colony\n\n`2%$rui/bullet_point%`0New Pilot Execution - Curb Check\n\n`2%$rui/bullet_point%`0New Weapon - R-101\n\n`2%$rui/bullet_point%`0New Purchasable Store Content" + "KNB_SUBJECT_00_SUB_07_Q" "%$rui/hud/scoreboard/status_titan% Mar 30 - Colony Reborn" + + "KNB_SUBJECT_00_SUB_08_A" "`2%$rui/bullet_point%`0Live Fire - A new Pilot vs Pilot elimination game mode! It’s a 6v6 round-based with no respawns, you will have one minute to eliminate the opposing team in order to win the round. You can also win the round if your team is holding the neutral flag when the round timer ends. The team to win 5 rounds first wins the match.\n\n`2%$rui/bullet_point%`0New Live Fire Map - Meadow\n\n`2%$rui/bullet_point%`0New Live Fire Map - Stacks\n\n`2%$rui/bullet_point%`0New Pilot Execution - Late Hit" + "KNB_SUBJECT_00_SUB_08_Q" "%$rui/hud/scoreboard/status_titan% Feb 23 - Live Fire" + + "KNB_SUBJECT_00_SUB_09_A" "`2%$rui/bullet_point%`0New Map - Angel City\n\n`2%$rui/bullet_point%`0New Weapon - B3 Wingman Elite\n\n`2%$rui/bullet_point%`0New Pilot Execution - Inner Pieces\n\n`2%$rui/bullet_point%`0New Titan Kits\n\n`2%$rui/bullet_point%`0New Purchasable Store Content" + "KNB_SUBJECT_00_SUB_09_Q" "%$rui/hud/scoreboard/status_titan% Nov 30 - Angel City's Most Wanted" + + "MP_ANGEL_CITY_FD_WAVE_1" "Chained to the Sky" + "MP_ANGEL_CITY_FD_WAVE_2" "Formlessness" + "MP_ANGEL_CITY_FD_WAVE_3" "Insurgency" + "MP_ANGEL_CITY_FD_WAVE_4" "An Obstinate Lot" + "MP_ANGEL_CITY_FD_WAVE_5" "Roll the Hard Six" + + "MP_DRYDOCK_FD_WAVE_1" "To Swim in Strange Water" + "MP_DRYDOCK_FD_WAVE_2" "They've got no bullets!" + "MP_DRYDOCK_FD_WAVE_3" "Blinded by Science" + "MP_DRYDOCK_FD_WAVE_4" "High Pressure System" + "MP_DRYDOCK_FD_WAVE_5" "Eye of the Storm" + + "MP_THAW_FD_WAVE_1" "Situational Awareness" + "MP_THAW_FD_WAVE_2" "Strength in Numbers" + "MP_THAW_FD_WAVE_3" "Henchman 21" + "MP_THAW_FD_WAVE_4" "Fun in the Fire" + "MP_THAW_FD_WAVE_5" "Serve Well the Guns" + } + } + "lang" + { + "Language" "french" + "Tokens" + { + "COMMUNITYUPDATE_00_A" "Vos aventures à travers les environnements de la Frontière continuent avec le nouveau DLC de Titanfall 2 : Cartes postales de la Frontière. Personnalisez votre arsenal avec des peintures de guerre d'élite et combattez dans des lieux nouveaux ou familiers. La Frontière n'aura jamais été aussi belle !\n\n\nAppuyez sur `2%[A_BUTTON|MOUSE1]%`0." + "COMMUNITYUPDATE_00_Q" "Trailer \"Cartes postales de la Frontière\"" + "COMMUNITYUPDATE_01_A" "Consultez la liste de changements inclus au patch Cartes postales de la Frontière.\n\n\nAppuyez sur `2%[A_BUTTON|MOUSE1]%`0." + "COMMUNITYUPDATE_01_Q" "Cartes postales de la Frontière : Notes " + "COMMUNITYUPDATE_02_A" "Prochainement disponible sur appareils mobiles, Titanfall: Assault est un STR captivant dans l'univers Titanfall développé en collaboration avec Particle City. Regardez la vidéo ! \n\n\nAppuyez sur `2%[A_BUTTON|MOUSE1]%`0." + "COMMUNITYUPDATE_02_Q" "Titanfall: Assault - Trailer de lancement" + "COMMUNITYUPDATE_03_A" "Iniquity nous présente le didacticiel et les bases de Titanfall: Assault. Obtenez vite plus d'informations sur les mécaniques de ce nouveau jeu.\n\n\nAppuyez sur `2%[A_BUTTON|MOUSE1]%`0." + "COMMUNITYUPDATE_03_Q" "Titanfall: Assault - \"Les bases du jeu\"" + "COMMUNITYUPDATE_04_A" "Regardez les créateurs de Défense frontalière évoquer l'histoire et la conception de ce mode de jeu manette en main ! \n\n\nAppuyez sur `2%[A_BUTTON|MOUSE1]%`0." + "COMMUNITYUPDATE_04_Q" "Respawn Plays : Défense frontalière" + "COMMUNITYUPDATE_05_A" "Kevin Younger a créé un montage de ses meilleures actions avec sa lame à impulsion. \n\n\nAppuyez sur `2%[A_BUTTON|MOUSE1]%`0." + "COMMUNITYUPDATE_05_Q" "Créations communautaires : impulsion fatale" + "COMMUNITYUPDATE_06_A" "ConzeyG (sur reddit) nous démontre de toute son efficacité avec le Titan Northstar dans le mode de jeu Condamnation. \n\n\nAppuyez sur `2%[A_BUTTON|MOUSE1]%`0." + "COMMUNITYUPDATE_06_Q" "Créations : Northstar chasseur de pilotes " + "COMMUNITYUPDATE_07_A" "Disponible ! Défense frontalière revient avec la carte Expansion, de nouvelles peintures de guerre payantes et une nouvelle carte Live Fire. Regardez vite le trailer !\n\n\nAppuyez sur `2%[A_BUTTON|MOUSE1]%`0." + "COMMUNITYUPDATE_07_Q" "Trailer gameplay \"Opération Frontier Shield\"" + "COMMUNITYUPDATE_08_A" "Disponible dès maintenant ! La carte à succès Jeux de guerre fait son grand retour dans Titanfall 2. Découvrez également une exécution inédite et Trafic, une toute nouvelle carte Live Fire.\n\n\nAppuyez sur `2%[A_BUTTON|MOUSE1]%`0 pour voir la vidéo." + "COMMUNITYUPDATE_08_Q" "Trailer gameplay \"Jeux de guerre\"" + "COMMUNITYUPDATE_09_A" "Notre nouveau DLC inclut le Monarch (7e Titan multijoueur du jeu), une version remasterisée de la carte Relique, une exécution inédite, ainsi que du contenu payant incluant les Titans Ronin Prime et Tone Prime avec des nouveaux camouflages, bannières et personnalisations de cockpit. Regardez vite le trailer !\n\n\nAppuyez sur `2%[A_BUTTON|MOUSE1]%`0 pour voir la vidéo." + "COMMUNITYUPDATE_09_Q" "Trailer gameplay \"Règne du Monarch\"" + "COMMUNITYUPDATE_10_A" "Les apparences sont parfois trompeuses à la Frontière ! Préparez-vous pour Glitch frontalier, le nouveau DLC gratuit de Titanfall 2 qui inclut la carte inédite \"Glitch\". Inspirée par Harmony, la planète natale du capitaine Lastimosa, cette carte regorge de voies verticales et de longs chemins tortueux qui vous permettront d'enchaîner les courses sur les murs. Découvrez également \"Pont\", une toute nouvelle carte Live Fire avec des sections intérieures étroites et des zones exposées survolées par des drones aériens. Vous ne serez pas seuls sur ces nouveaux champs de bataille : les serviables Marvins s'invitent au combat en tant que nouvelle faction pour vous prêter main forte ! Débloquez également la nouvelle exécution Impulsion fatale pour faire passer un message à tous vos ennemis.\n\n\nAppuyez sur `2%[A_BUTTON|MOUSE1]%`0 pour voir la vidéo." + "COMMUNITYUPDATE_10_Q" "Trailer gameplay \"Glitch frontalier\"" + "COMMUNITYUPDATE_11_A" "Découvrez la nouvelle version de Colonie, l'une des cartes multijoueurs favorites des fans du premier Titanfall ! Combinez les différentes capacités tactiques et les classes de Titan de Titanfall 2 à compter du 30 mars pour éliminer vos adversaires à travers les ruelles tortueuses, les recoins dangereux et les toitures exposées de ce village idyllique. Le DLC gratuit \"Nouvelle colonie\" inclut des armes mythiques comme la nouvelle version du fusil d'assaut R-101, une exécution au grappin inédite et de nouvelles options cosmétiques payantes pour combattre avec encore plus de style !\n\n\nAppuyez sur `2%[A_BUTTON|MOUSE1]%`0 pour voir la vidéo." + "COMMUNITYUPDATE_11_Q" "Trailer gameplay \"Nouvelle colonie\"" + "COMMUNITYUPDATE_12_A" "Découvrez Live Fire, un tout nouveau mode de jeu pour pilotes proposant des affrontements ultra-rapides à 6c6 en combat rapproché. Combattez sur deux nouvelles cartes spécialement conçues pour Live Fire : Empilements et Prairie. Ces deux cartes comportent des zones de jeu resserrées parfaitement adaptées au caractère intense et débridé de ce nouveau mode de jeu.\n\n\nAppuyez sur `2%[A_BUTTON|MOUSE1]%`0 pour voir la vidéo." + "COMMUNITYUPDATE_12_Q" "Trailer gameplay \"Live Fire\"" + "COMMUNITYUPDATE_13_A" "Découvrez la version remasterisée d'`1Angel City`0, la carte favorite des joueurs du premier Titanfall ! Préparez-vous pour le premier DLC gratuit de Titanfall 2, `1Liste noire d'Angel City`0, qui sera disponible le 1er décembre pour tous les joueurs. Ce nouveau contenu inclut également des optimisations cosmétiques qui vous aideront à vous démarquer sur les champs de bataille de la Frontière. \n\n\nAppuyez sur `2%[A_BUTTON|MOUSE1]%`0 pour voir la vidéo." + "COMMUNITYUPDATE_13_Q" "Trailer gameplay \"Angel City\"" + "COMMUNITYUPDATE_14_A" "Bon retour parmi nous !\n\n\nAppuyez sur `2%[A_BUTTON|MOUSE1]%`0 pour voir la vidéo." + "COMMUNITYUPDATE_14_Q" "Trailer - \"Encore\"" + "COMMUNITYUPDATE_15_A" "Deux légendes, un héritage.\n\n\nAppuyez sur `2%[A_BUTTON|MOUSE1]%`0 pour voir la vidéo." + "COMMUNITYUPDATE_15_Q" "Trailer Solo - \"Ne faites plus qu'un\"" + "COMMUNITYUPDATE_16_A" "Sans limite.\n\n\nAppuyez sur `2%[A_BUTTON|MOUSE1]%`0 pour voir la vidéo." + "COMMUNITYUPDATE_16_Q" "Trailer multijoueur - \"Pilotes\"" + "COMMUNITYUPDATE_DESC" "`3Titanfall - Mises à jour de la communauté`0\n\nDes infos et des liens en provenance de tout le web.\n\nPour ne rien manquer :\n`2%$rui/bullet_point%`0Suivez-nous sur Twitter `1@Respawn`0\n`2%$rui/bullet_point%`0Rendez-vous sur `1facebook.com/RespawnEntertainment`0\n`2%$rui/bullet_point%`0Rejoignez-nous sur `1www.respawn.com`0" + "COMMUNITYUPDATE_NAME" "Communauté" + "KNB_SUBJECT_00_DESC" "`3Quoi de neuf dans Titanfall ?`0\n\nPrenez connaissance des nouvelles fonctionnalités de Titanfall 2 !" + "KNB_SUBJECT_00_NAME" "Mises à jour du jeu" + "KNB_SUBJECT_00_SUB_00_A" "`2%$rui/bullet_point%`010 Nouvelles bannières créées par la communauté\n\n`2%$rui/bullet_point%`0Tous les cadeaux sont désormais achetables avec des crédits\n\n`2%$rui/bullet_point%`0Nouveau contenu payant dans la Boutique\n\n" + "KNB_SUBJECT_00_SUB_00_Q" "%$rui/hud/scoreboard/status_titan% 28 novembre - Récolte" + "KNB_SUBJECT_00_SUB_01_A" "`2%$rui/bullet_point%`0Emplacement principal pour pistolet\n\n`2%$rui/bullet_point%`0Bannières Halloween\n\n`2%$rui/bullet_point%`0Optimisations de l'équilibre\n\n`2%$rui/bullet_point%`0Nouveau contenu payant dans la Boutique\n\n" + "KNB_SUBJECT_00_SUB_01_Q" "%$rui/hud/scoreboard/status_titan% 31 octobre - Bundle Halloween" + "KNB_SUBJECT_00_SUB_02_A" "`2%$rui/bullet_point%`0Défense frontalière - Prise en charge de 3 cartes supplémentaires : Cale sèche, Angel City et Exoplanète.\n\n`2%$rui/bullet_point%`0Nouvelle carte Live Fire - UMA\n\n`2%$rui/bullet_point%`0Nouvelle exécution de pilote - Trou dans le mur\n\n`2%$rui/bullet_point%`0Nouveau contenu payant dans la Boutique" + "KNB_SUBJECT_00_SUB_02_Q" "%$rui/hud/scoreboard/status_titan% 29 août - Cartes postales de la Frontière" + "KNB_SUBJECT_00_SUB_03_A" "`2%$rui/bullet_point%`0Défense frontalière - Nouveau mode coopératif, qui vous propose de vous allier à un maximum de trois autres joueurs pour défendre un objectif stratégique face à des vagues de combattants IA de plus en plus intenses. Votre survie dépendra de vos facultés de communication et d'adaptation !\n\n`2%$rui/bullet_point%`0Nouvelle carte - Expansion\n\n`2%$rui/bullet_point%`0Nouvelle carte Live Fire - Cité\n\n`2%$rui/bullet_point%`0Nouveau contenu payant dans la Boutique" + "KNB_SUBJECT_00_SUB_03_Q" "%$rui/hud/scoreboard/status_titan% 25 juillet - Opération Frontier Shield" + "KNB_SUBJECT_00_SUB_04_A" "`2%$rui/bullet_point%`0Nouvelle carte - Jeux de guerre\n\n`2%$rui/bullet_point%`0Nouvelle carte Live Fire - Trafic\n\n`2%$rui/bullet_point%`0Nouvelle exécution de pilote - Boxe furtive\n\n`2%$rui/bullet_point%`0Troisième emplacement d'armement\n\n`2%$rui/bullet_point%`0Paramètres de partie privée" + "KNB_SUBJECT_00_SUB_04_Q" "%$rui/hud/scoreboard/status_titan% 27 juin - Jeux de guerre" + "KNB_SUBJECT_00_SUB_05_A" "`2%$rui/bullet_point%`0Nouveau Titan - Monarch\n\n`2%$rui/bullet_point%`0Nouvelle carte - Relique\n\n`2%$rui/bullet_point%`0Nouvelle exécution - Vision mortelle\n\n`2%$rui/bullet_point%`0Nouveau contenu payant dans la Boutique" + "KNB_SUBJECT_00_SUB_05_Q" "%$rui/hud/scoreboard/status_titan% 30 mai - Règne du Monarch" + "KNB_SUBJECT_00_SUB_06_A" "`2%$rui/bullet_point%`0Nouvelle carte - Glitch\n\n`2%$rui/bullet_point%`0Nouvelle carte Live Fire - Pont\n\n`2%$rui/bullet_point%`0Nouvelle faction - Marvin\n\n`2%$rui/bullet_point%`0Nouvelle exécution de pilote - Impulsion fatale\n\n`2%$rui/bullet_point%`0Niveau de génération maximal augmenté à 100" + "KNB_SUBJECT_00_SUB_06_Q" "%$rui/hud/scoreboard/status_titan% 25 avril - Glitch frontalier" + "KNB_SUBJECT_00_SUB_07_A" "`2%$rui/bullet_point%`0Nouvelle carte - Colonie\n\n`2%$rui/bullet_point%`0Nouvelle exécution de pilote - Coup du grappin\n\n`2%$rui/bullet_point%`0Nouvelle arme - R-101\n\n`2%$rui/bullet_point%`0Nouveau contenu payant dans la Boutique" + "KNB_SUBJECT_00_SUB_07_Q" "%$rui/hud/scoreboard/status_titan% 30 mars - Nouvelle colonie" + "KNB_SUBJECT_00_SUB_08_A" "`2%$rui/bullet_point%`0Live Fire - Un nouveau mode Pilotes contre pilotes à élimination ! Dans ce mode à 6c6 en plusieurs manches, vous disposerez d'une minute pour éliminer l'équipe adverse et remporter la manche. Vous pourrez aussi gagner la manche si votre équipe est en possession du drapeau neutre à la fin du temps imparti. La première équipe à gagner 5 manches remporte la partie.\n\n`2%$rui/bullet_point%`0Nouvelle carte Live Fire - Prairie\n\n`2%$rui/bullet_point%`0Nouvelle carte Live Fire - Empilements\n\n`2%$rui/bullet_point%`0Nouvelle exécution de pilote - Frappe spéciale" + "KNB_SUBJECT_00_SUB_08_Q" "%$rui/hud/scoreboard/status_titan% 23 février - Live Fire" + "KNB_SUBJECT_00_SUB_09_A" "`2%$rui/bullet_point%`0Nouvelle carte - Angel City\n\n`2%$rui/bullet_point%`0Nouvelle arme - Wingman B3 Élite\n\n`2%$rui/bullet_point%`0Nouvelle exécution de pilote - Viscéral\n\n`2%$rui/bullet_point%`0Nouveaux kits pour Titan\n\n`2%$rui/bullet_point%`0Nouveau contenu payant dans la Boutique" + "KNB_SUBJECT_00_SUB_09_Q" "%$rui/hud/scoreboard/status_titan% 30 novembre - Liste noire d'Angel City" + "MP_ANGEL_CITY_FD_WAVE_1" "Enchaînement céleste" + "MP_ANGEL_CITY_FD_WAVE_2" "Menace informe" + "MP_ANGEL_CITY_FD_WAVE_3" "Insurrection" + "MP_ANGEL_CITY_FD_WAVE_4" "Obstination" + "MP_ANGEL_CITY_FD_WAVE_5" "Tout pour le tout" + "MP_DRYDOCK_FD_WAVE_1" "En eaux troubles" + "MP_DRYDOCK_FD_WAVE_2" "En manque de munitions" + "MP_DRYDOCK_FD_WAVE_3" "Aveuglement scientifique" + "MP_DRYDOCK_FD_WAVE_4" "Haute pression" + "MP_DRYDOCK_FD_WAVE_5" "Oeil du cyclone" + "MP_THAW_FD_WAVE_1" "Connaissance situationnelle" + "MP_THAW_FD_WAVE_2" "La force par le nombre" + "MP_THAW_FD_WAVE_3" "Hommes de main" + "MP_THAW_FD_WAVE_4" "Divertissement ardent" + "MP_THAW_FD_WAVE_5" "Pour l'honneur" + "NO_PRICE" "Offre expirée" + "NO_PRICE_TWO_LINES" "Offre\nexpirée" + "PL_aegis_last_titan_standing" "DT Aegis" + "PL_aegis_last_titan_standing_abbr" "DTA" + "PL_aegis_last_titan_standing_desc" "Optimisations Aegis autorisées. Plusieurs manches à élimination. La première équipe à gagner 3 manches remporte la partie.\n^FFC83200Joueurs : 5c5 *Début en Titan\nLimite de temps : 3 min par manche *Aucune réapparition\nTaille max. du groupe : 5" + "PL_aegis_last_titan_standing_lobby" "PL_aegis_last_titan_standing_lobby" + "PL_aegis_titan_brawl" "Combat de Titan Aegis" + "PL_aegis_titan_brawl_abbr" "CDTA" + "PL_aegis_titan_brawl_desc" "Détruisez les Titans ennemis. Optimisations Aegis autorisées.\n^FFC83200Joueurs : 5c5\nLimite de temps : 10 min\nTaille max. du groupe : 5" + "PL_aegis_titan_brawl_hint" "Détruisez les Titans ennemis.\nPas d'éjection" + "PL_aegis_titan_brawl_lobby" "Salon Combat de Titan Aegis" + "PL_aitdm" "Attrition" + "PL_aitdm_abbr" "ATT" + "PL_aitdm_desc" "Tuez tous vos ennemis.\n^FFC83200Joueurs : 6c6 *IA\nLimite de temps : 10 min\nTaille max. du groupe : 6" + "PL_aitdm_lobby" "Salon Attrition" + "PL_all_grapple" "Attaque sur Titanfall" + "PL_all_grapple_abbr" "ATT" + "PL_all_grapple_desc" "Règles Attrition classiques avec toutes les capacités tactiques remplacées par le grappin.\n^FFC83200Joueurs : 6c6 *IA\nLimite de temps : 10 min\nTaille max. du groupe : 6" + "PL_all_grapple_lobby" "Salon Attaque sur Titanfall" + "PL_all_holopilot" "Holo-bataille" + "PL_all_holopilot_abbr" "LF" + "PL_all_holopilot_desc" "Règles Live Fire classiques avec toutes les capacités tactiques remplacées par le module holo-pilote.^FFC83200\nJoueurs : 6c6 *Aucun Titan\nLimite de temps : 60 s *Aucune réapparition\nTaille max. du groupe : 6" + "PL_all_holopilot_lobby" "Salon Holo-bataille" + "PL_all_phase" "De l'autre côté" + "PL_all_phase_abbr" "ATT" + "PL_all_phase_desc" "Règles Attrition classiques avec toutes les capacités tactiques remplacées par la téléportation.\n^FFC83200Joueurs : 6c6 *IA\nLimite de temps : 10 min\nTaille max. du groupe : 6" + "PL_all_phase_lobby" "Salon De l'autre côté" + "PL_all_spicy" "Attritique" + "PL_all_spicy_abbr" "ATT" + "PL_all_spicy_desc" "Règles Attrition classiques avec toutes les capacités tactiques remplacées par des tiques.\n^FFC83200Joueurs : 6c6 *IA\nLimite de temps : 10 min\nTaille max. du groupe : 6" + "PL_all_spicy_lobby" "Salon Attritique" + "PL_amped_tacticals" "Tactiques amplifiées" + "PL_amped_tacticals_abbr" "ATT" + "PL_amped_tacticals_desc" "Règles Attrition classiques avec amplification de toutes les capacités tactiques.\n^FFC83200Joueurs : 6c6 *IA\nLimite de temps : 10 min\nTaille max. du groupe : 6" + "PL_amped_tacticals_lobby" "Salon Tactiques amplifiées" + "PL_ANGEL_CITY" "Angel City 24/7" + "PL_angel_city_abbr" "AC" + "PL_angel_city_desc" "Tout Angel City, tout le temps.\n^FFC83200*Chasse aux primes *Attrition\n*Point clé amplifié" + "PL_angel_city_lobby" "Salon Angel City 24/7" + "PL_at_coop" "Évasion (Coop)" + "PL_at_coop_desc" "Vous venez de vous évader de prison avec un pistolet pour seule arme. Survivez jusqu’à l’arrivée du vaisseau d’évacuation. Abattez des ennemis pour gagner de l’argent et acheter des armes. \n^FFC83200Joueurs : 6\n^FFC83200Taille max. du groupe : 6" + "PL_at_coop_lobby" "Salon Évasion" + "PL_attrition" "Chasse aux primes" + "PL_attrition_abbr" "CP" + "PL_attrition_desc" "Abattez vos ennemis pour gagner de l'argent. Augmentez votre score en encaissant des bonus aux emplacements désignés.\n^FFC83200Joueurs : 5c5 *IA\nLimite de temps : 10 min\nTaille max. du groupe : 5" + "PL_attrition_lobby" "Salon Chasse aux primes" + "PL_capture_the_flag" "Capture de drapeau" + "PL_capture_the_flag_abbr" "CDD" + "PL_capture_the_flag_desc" "Emparez-vous du drapeau adverse et rapportez-le à votre base, tout en empêchant l’ennemi de prendre le vôtre.\n^FFC83200Joueurs : 5c5\nLimite de temps : 12 min\nTaille max. du groupe : 5" + "PL_capture_the_flag_lobby" "Salon CDD" + "PL_coliseum" "Colisée" + "PL_coliseum_desc" "Duels rapides en cage à 3 manches gagnantes avec cadeau. Abattez votre adversaire pour remporter la manche.^FFC83200\nJoueurs : 1c1 *Aucun Titan\nLimite de temps : 3 min *Aucune réapparition\n**^FFFFFF00REQUIERT TICKET COLISÉE ou INSCRIPTION PAYANTE" + "PL_coliseum_lobby" "Salon Colisée" + "PL_colony" "Colonie 24/7" + "PL_colony_abbr" "COL" + "PL_colony_desc" "Affrontements exclusivement sur la carte Colonie. ^CCCCCC00Vous allez chercher des parties en modes ^FFC83200Attrition^CCCCCC00, ^FFC83200Pilotes contre pilotes^CCCCCC00 et ^FFC83200Dernier Titan^CCCCCC00." + "PL_colony_lobby" "Salon Colonie 24/7" + "PL_ctf_lf" "CDD (Nitro)" + "PL_ctf_lf_abbr" "CDD-N" + "PL_ctf_lf_desc" "Affrontements rapides en Capture de drapeau sur une sélection de cartes.\n^FFC83200Joueurs : 5c5\nTaille max. du groupe : 5\n^F4D5A600Retours instantanés du drapeau" + "PL_ctf_lf_lobby" "Salon CDD Nitro" + "PL_default_description" "Description par défaut" + "PL_default_lobbytitle" "Nom salon par défaut" + "PL_default_name" "Nom par défaut" + "PL_don" "Quitte ou double" + "PL_fd" "Défense frontalière" + "PL_fd_desc" "Défendez-vous contre des vagues de forces ennemies." + "PL_fd_easy" "Défense frontalière : Facile" + "PL_fd_easy_desc" "Éliminez l'opposition !" + "PL_fd_easy_lobby" "Salon Défense frontalière : Facile" + "PL_fd_hard" "Défense frontalière : Difficile" + "PL_fd_hard_desc" "Résistez en développant des stratégies avancées." + "PL_fd_hard_lobby" "Défense frontalière : Salon difficile" + "PL_fd_insane" "Défense frontalière : Extrême" + "PL_fd_insane_desc" "Vous ne survivrez pas." + "PL_fd_insane_lobby" "Défense frontalière : Salon extrême" + "PL_fd_lobby" "Salon Défense frontalière" + "PL_fd_master" "Défense frontalière : Élite" + "PL_fd_master_desc" "Seuls les meilleurs pilotes gagneront." + "PL_fd_master_lobby" "Défense frontalière : Salon élite" + "PL_fd_normal" "Défense frontalière : Standard" + "PL_fd_normal_desc" "Recommandé aux joueurs chevronnés" + "PL_fd_normal_lobby" "Défense frontalière : salon Standard" + "PL_ffa" "Chacun pour soi" + "PL_ffa_abbr" "CPS" + "PL_ffa_desc" "Chaque pilote joue seul et doit abattre tous ses ennemis.\n^FFC83200Joueurs : 1c11\nLimite de temps : 10 min\nTaille max. du groupe : 1" + "PL_ffa_lobby" "Salon Chacun pour soi" + "PL_fra" "Agent libre" + "PL_fra_abbr" "AL" + "PL_fra_desc" "Vous jouez pour vous. Abattez vos ennemis pour gagner. Collectez 3 batteries pour appeler votre Titan.\n^FFC83200Joueurs : 1c11\nLimite de temps : 15 min\nTaille max. du groupe : 1" + "PL_fra_lobby" "Salon Agent libre" + "PL_groud_war_lobby" "Salon Mixtape 8c8" + "PL_ground_war" "Mixtape 8c8" + "PL_ground_war_abbr" "8c8" + "PL_ground_war_desc" "Inclut les modes Escarmouche et Point clé amplifié avec un nombre de joueurs élevé sur toutes les cartes.\n^FFC83200Joueurs : 8c8" + "PL_hardpoint" "Point clé amplifié" + "PL_hardpoint_abbr" "PCA" + "PL_hardpoint_desc" "Capturez et contrôlez des points clés pour gagner des points (amplifier les points clés rapporte 2X plus).\n^FFC83200Joueurs : 6c6\nLimite de temps : 10 min\nTaille max. du groupe : 6" + "PL_hardpoint_lobby" "Salon Point clé amplifié" + "PL_hunted" "Traque" + "PL_iron_last_titan_standing" "DT d'Acier" + "PL_iron_last_titan_standing_abbr" "DTA" + "PL_iron_last_titan_standing_desc" "Titans uniquement avec plusieurs manches à élimination. La première équipe à gagner 3 manches remporte la partie.\n^FFC83200Joueurs : 5c5 *PAS DE PILOTES\nLimite de temps : 3 min par manche *Aucune réapparition\nTaille max. du groupe : 5" + "PL_iron_last_titan_standing_lobby" "PL_iron_last_titan_standing_lobby" + "PL_last_titan_standing" "Dernier Titan" + "PL_last_titan_standing_abbr" "DT" + "PL_last_titan_standing_desc" "Chaque joueur commence à bord d'un Titan dans plusieurs manches à élimination. La première équipe à gagner 3 manches remporte la partie.\n^FFC83200Joueurs : 5c5 *Début en Titan\nLimite de temps : 3 min par manche *Aucune réapparition\nTaille max. du groupe : 5" + "PL_last_titan_standing_lobby" "Salon DT" + "PL_limited_time_mode" "Mode à durée limitée" + "PL_live_fire" "Live Fire" + "PL_live_fire_abbr" "LF" + "PL_live_fire_desc" "Combats rapides dans une arène Live Fire. Abattez tous les pilotes ennemis ou détenez le drapeau à la fin du temps imparti pour remporter la manche.^FFC83200\nJoueurs : 6c6 *Aucun Titan\nLimite de temps : 60 s *Aucune réapparition\nTaille max. du groupe : 6" + "PL_live_fire_lobby" "Salon Live Fire" + "PL_load_a_map_on_the_command_line" "Charger carte par ligne de commande –dev uniquement" + "PL_marked_for_death" "Condamnation" + "PL_marked_for_death_abbr" "COND" + "PL_marked_for_death_desc" "Abattez ou protégez les cibles désignées.\n^FFC83200Joueurs : 6c6 \nLimite de temps : 12 min\nTaille max. du groupe : 6" + "PL_marked_for_death_lobby" "Salon Condamnation" + "PL_nitro_ffa" "CPS (Nitro)" + "PL_nitro_ffa_abbr" "CPS-N" + "PL_nitro_ffa_desc" "Affrontements rapides en Chacun pour soi sur une sélection de cartes.\n^FFC83200Joueurs : 6\n^F4D5A600Pas de Titans\nAucun Boost" + "PL_nitro_ffa_lobby" "Salon CPS Nitro" + "PL_nitro_mixtape" "Mixtape (Nitro)" + "PL_nitro_mixtape_abbr" "MXT-N" + "PL_nitro_mixtape_desc" "Affrontements rapides en CDD, COND et PcP sur une sélection de cartes.\n^FFC83200Joueurs : 5c5\nTaille max. du groupe : 5\n^F4D5A600Retours instantanés du drapeau" + "PL_nitro_mixtape_lobby" "Salon Mixtape" + "PL_pilot_hunter" "Escarmouche" + "PL_pilot_hunter_abbr" "ESC" + "PL_pilot_hunter_desc" "Éliminez les pilotes et Titans ennemis. \n^FFC83200Joueurs : 8c8\nLimite de temps : 10 min\nTaille max. du groupe : 8" + "PL_pilot_hunter_lobby" "Salon Escarmouche" + "PL_pilot_skirmish" "Pilotes contre pilotes" + "PL_pilot_skirmish_abbr" "PcP" + "PL_pilot_skirmish_desc" "Tuez les pilotes ennemis. Aucun largage de Titan n’est autorisé.\n^FFC83200Joueurs : 8c8 *Aucun Titan\nLimite de temps : 10 min\nTaille max. du groupe : 8" + "PL_pilot_skirmish_lobby" "Salon PcP" + "PL_pl_rebuild_all_paths" "Tout reconstruire" + "PL_pl_run_with_ai_ainrebuildonmapstart_2" "Exécuter avec ai_ainRebuildOnMapStart 2" + "PL_private_match" "Partie privée bêta" + "PL_private_match_desc" "Jouez une partie privée personnalisée sur le mode et la carte de votre choix.\n^FFC83200Choisissez INVITER RÉSEAU ou INVITER AMIS pour jouer.\n^FFC83200Joueurs : 1-16\nAucune progression" + "PL_private_match_lobby" "Salon Partie privée bêta" + "PL_promo_coop" "COOP 4 joueurs" + "PL_raid" "Raid" + "PL_rise" "Expansion 24/7" + "PL_rise_abbr" "EXP" + "PL_rise_desc" "Affrontements exclusivement sur la carte Expansion. ^CCCCCC00Vous allez chercher des parties en modes ^FFC83200CDD^CCCCCC00, ^FFC83200Point clé amplifié^CCCCCC00, ^FFC83200Pilotes contre pilotes^CCCCCC00, ^FFC83200Live Fire^CCCCCC00 et ^FFC83200Dernier Titan^CCCCCC00." + "PL_rise_lobby" "Salon Expansion 24/7" + "PL_rocket_arena" "Arène à roquettes" + "PL_rocket_arena_abbr" "LF" + "PL_rocket_arena_desc" "Règles Live Fire classiques avec EPG modifiés.^FFC83200\nJoueurs : 6c6 *Aucun Titan\nLimite de temps : 90 s *Aucune réapparition\nTaille max. du groupe : 6" + "PL_rocket_arena_lobby" "Salon Arène à roquettes" + "PL_settings_for_when_someone_loads_a_map_on_the_command_line_do_not_edit_the_cmdlinemapload_1_below_-_this_makes_this_work" "Paramètres pour le chargement utilisateur d’une carte par ligne de commande. Ne pas éditer la commande \"cmdlineMapLoad 1\" ci-dessous, elle est requise pour le chargement." + "PL_speedball" "Live Fire" + "PL_speedball_desc" "Disputez-vous la possession d'un drapeau neutre. Éliminez l'équipe ennemie ou détenez le drapeau à la fin de la manche. La première équipe à gagner 5 manches remporte la partie.\n^FFC83200Joueurs : 6c6 *Aucun Titan\nLimite de temps : 60 s par manche *Aucune réapparition\nTaille max. du groupe : 6" + "PL_speedball_lobby" "Salon Live Fire" + "PL_tactikill" "Attrition Frag tactique" + "PL_tactikill_abbr" "ATT" + "PL_tactikill_desc" "Règles Attrition classiques avec réinitialisation des capacités tactiques après un frag.\n^FFC83200Joueurs : 6c6 *IA\nLimite de temps : 10 min\nTaille max. du groupe : 6" + "PL_tactikill_lobby" "Salon Attrition Frag tactique" + "PL_titan_brawl" "Combat de Titan" + "PL_titan_brawl_abbr" "CDT" + "PL_titan_brawl_desc" "Détruisez les Titans ennemis. Les pilotes ne sont pas autorisés.\n^FFC83200Joueurs : 5c5\nLimite de temps : 10 min\nTaille max. du groupe : 5" + "PL_titan_brawl_hint" "Détruisez les Titans ennemis.\nPas d'éjection" + "PL_titan_brawl_lobby" "Salon Combat de Titan" + "PL_titan_brawl_turbo" "Combat de Titan Turbo" + "PL_titan_brawl_turbo_abbr" "CDT" + "PL_titan_brawl_turbo_desc" "Règles Combat de Titan classiques avec régénération de propulsion et génération de noyau plus rapides.\n^FFC83200Joueurs : 5c5\nLimite de temps : 10 min\nTaille max. du groupe : 5" + "PL_titan_brawl_turbo_hint" "Détruisez les Titans ennemis.\nPas d'éjection" + "PL_titan_brawl_turbo_lobby" "Salon Combat de Titan Turbo" + "PL_turbo_last_titan_standing" "DT Turbo" + "PL_turbo_last_titan_standing_abbr" "DT" + "PL_turbo_last_titan_standing_desc" "Règles DT classiques avec régénération de propulsion et génération de noyau plus rapides.\n^FFC83200Joueurs : 5c5 *Début en Titan\nLimite de temps : 3 min par manche *Aucune réapparition\nTaille max. du groupe : 5" + "PL_turbo_last_titan_standing_lobby" "Salon DT Turbo" + "PL_variety_pack" "Mixtape" + "PL_variety_pack_desc" "Jouez avec différents nombres de joueurs et cartes dans plusieurs modes de jeu :\n^FFC83200*Chasse aux primes *Attrition\n*Dernier Titan *Point clé amplifié\n*Pilotes contre pilotes *Capture de drapeau" + "PL_variety_pack_lobby" "Salon Mixtape" + "PL_wargames" "Jeux de guerre 24/7" + "PL_wargames_abbr" "JDG" + "PL_wargames_desc" "Affrontements exclusivement sur la carte Jeux de guerre. ^CCCCCC00Vous allez chercher des parties en modes ^FFC83200Attrition^CCCCCC00, ^FFC83200CDD^CCCCCC00, ^FFC83200Pilotes contre pilotes^CCCCCC00, ^FFC83200Point clé amplifié^CCCCCC00 et ^FFC83200Dernier Titan^CCCCCC00." + "PL_wargames_lobby" "Salon Jeux de guerre 24/7" + "WATCH_TUTORIAL" "VOIR DIDACTICIEL" + } + } + "lang" + { + "Language" "polish" + "Tokens" + { + "COMMUNITYUPDATE_00_A" "Kontynuuj swoją przygodę na zapierających dech w piersi Kresach dzięki „Pocztówkom z Kresów”, najnowszemu DLC do Titanfall 2. Wzbogaciliśmy grę o nowe obszary i szeroki wachlarz elitarnych barw wojennych broni. Kresy jeszcze nigdy nie wyglądały tak dobrze!\n\n\nWciśnij `2%[A_BUTTON|MOUSE1]%`0, aby zobaczyć." + "COMMUNITYUPDATE_00_Q" "Zwiastun „Pocztówek z Kresów”!" + "COMMUNITYUPDATE_01_A" "Zapoznaj się ze wszystkimi zmianami, które wprowadziliśmy w aktualizacji „Pocztówki z Kresów”.\n\n\nWciśnij `2%[A_BUTTON|MOUSE1]%`0, aby zobaczyć." + "COMMUNITYUPDATE_01_Q" "„Pocztówki z Kresów”: informacje o aktualizacji" + "COMMUNITYUPDATE_02_A" "Wkrótce na urządzeniach mobilnych dostępna będzie gra Titanfall: Assault. To strategia czasu rzeczywistego rozgrywająca się w świecie Titanfall, która powstała we współpracy z Particle City. Zobacz ją w akcji!\n\n\nWciśnij `2%[A_BUTTON|MOUSE1]%`0, aby zobaczyć." + "COMMUNITYUPDATE_02_Q" "Titanfall: Assault – zwiastun premierowy" + "COMMUNITYUPDATE_03_A" "Iniquity pokazuje nam samouczek i udziela podstawowych porad do Titanfall: Assault. To idealny sposób na zaznajomienie się z grą.\n\n\nWciśnij `2%[A_BUTTON|MOUSE1]%`0, aby zobaczyć." + "COMMUNITYUPDATE_03_Q" "Titanfall: Assault – poznaj podstawy rozgrywki" + "COMMUNITYUPDATE_04_A" "Posłuchaj twórców „Obrony Kresów”, którzy opowiadają o kulisach powstania tego trybu i zobacz, jak rozgrywamy kilka gier! \n\n\nWciśnij `2%[A_BUTTON|MOUSE1]%`0, aby zobaczyć." + "COMMUNITYUPDATE_04_Q" "Respawn w akcji: Obrona Kresów" + "COMMUNITYUPDATE_05_A" "Kevin Younger przygotował film prezentujący szeroki wachlarz zagrań z użyciem ostrza pulsacyjnego. \n\n\nWciśnij `2%[A_BUTTON|MOUSE1]%`0, aby zobaczyć." + "COMMUNITYUPDATE_05_Q" "Prace społeczności – Przejdźmy do rzeczy" + "COMMUNITYUPDATE_06_A" "ConzeyG prezentuje w serwisie reddit zabójczą skuteczność Polaris w trybie „Na celowniku”. \n\n\nWciśnij `2%[A_BUTTON|MOUSE1]%`0, aby zobaczyć." + "COMMUNITYUPDATE_06_Q" "Filmy fanów – Polaris na polowaniu" + "COMMUNITYUPDATE_07_A" "Już jest! „Obrona Kresów” powraca wraz z mapą „Powstanie”, a także nowymi barwami wojennymi do kupienia oraz mapą do trybu „Szybki szturm”. Zobacz całość w akcji.\n\n\nWciśnij `2%[A_BUTTON|MOUSE1]%`0, aby zobaczyć." + "COMMUNITYUPDATE_07_Q" "Operacja „Tarcza Kresów” – zwiastun z rozgrywką" + "COMMUNITYUPDATE_08_A" "Już dostępne! Słynna mapa „Gry wojenne” powraca do Titanfall 2 w odświeżonej postaci. Oprócz tego gracze będą mogli cieszyć się nową egzekucją i „Ruchem ulicznym”, czyli nową mapą do Szybkiego szturmu.\n\n\nWciśnij `2%[A_BUTTON|MOUSE1]%`0, aby zobaczyć." + "COMMUNITYUPDATE_08_Q" "„Gry wojenne” – zwiastun z rozgrywką" + "COMMUNITYUPDATE_09_A" "Ten dodatek obejmuje Monarchę, czyli siódmego Tytana dostępnego w trybie wieloosobowym, odświeżoną mapę „Relikt”, nową egzekucję, a także Tytany Prime: Ronina i Tona oraz więcej kamuflaży, sztandarów i grafik dziobowych do kupienia. Śledź akcję tutaj.\n\n\nWciśnij `2%[A_BUTTON|MOUSE1]%`0, aby zobaczyć." + "COMMUNITYUPDATE_09_Q" "Zwiastun - rozgrywka w „Rządach Monarchy”" + "COMMUNITYUPDATE_10_A" "Nie wszystko jest takie, jak się wydaje na Kresach – przygotujcie się na „Błąd na Kresach”, najnowsze darmowe DLC do Titanfall 2, zawierające nową mapę „Błąd”. Inspiracją dla jej stworzenia była ojczysta planeta kapitana Lastimosy, Harmonia. Mapa obfituje w wysokie urwiska i długie, kręte ścieżki. To idealna przestrzeń dla długich sekwencji skoków po ścianach, które pozwolą błyskawicznie przemieszczać się po mapie. Gra zostanie również wzbogacona o nową mapę do trybu „Szybki szturm”, „Pokład”, pełną ciasnych pomieszczeń i otwartych dziedzińców. Nie zabraknie tam również dronów, pilnie śledzących potyczki z góry. Jeśli czujesz, że wróg cię przytłacza, skorzystaj z pomocy nowej frakcji Marvinów, która chętnie wyciągnie do ciebie pomocną, mechaniczną dłoń. Ponadto, piloci, którzy chcą przekazać wrogowi jasny komunikat, mogą odblokować egzekucję „Ostrze pulsacyjne”\n\n\nWciśnij `2%[A_BUTTON|MOUSE1]%`0, aby zobaczyć." + "COMMUNITYUPDATE_10_Q" "Zwiastun - prezentacja „Błędu na Kresach”" + "COMMUNITYUPDATE_11_A" "Powróć na uwielbianą przez fanów mapę z oryginalnego Titanfall: Kolonia. Dodajmy do niej nowe zdolności taktyczne i Tytany z Titanfall 2, a piloci i Tytany będą musieli mieć oczy dookoła głowy, aby przeżyć w tej wiosce pełnej wąskich uliczek, ślepych zaułków i odkrytych dachów. Mapa będzie dostępna za darmo dla wszystkich graczy 30 marca. Pakiet DLC „Nowa Kolonia” zawiera także klasyczną broń, karabin R-101, nową egzekucję oraz opcje kosmetyczne do kupienia, dzięki którym będziesz wyglądać bardzo stylowo podczas siania zniszczenia.\n\n\nWciśnij `2%[A_BUTTON|MOUSE1]%`0, aby zobaczyć." + "COMMUNITYUPDATE_11_Q" "Zwiastun - rozgrywka w „Nowej Kolonii”" + "COMMUNITYUPDATE_12_A" "Poznajcie „Szybki szturm” – niezwykle szybki tryb 6 na 6 dla pilotów, w którym nie zabraknie zaciętych potyczek na krótkich dystansach. Specjalnie na potrzeby tego trybu przygotowaliśmy dwie nowe mapy: „Stosy” i „Polana”. Są to ciasne przestrzenie, na których toczyć się będzie dynamiczna i zażarta rywalizacja.\n\n\nWciśnij `2%[A_BUTTON|MOUSE1]%`0, aby zobaczyć." + "COMMUNITYUPDATE_12_Q" "Zwiastun – rozgrywka w tr. „Szybki szturm”" + "COMMUNITYUPDATE_13_A" "Poznaj odświeżoną wersję `1Miasta Aniołów`0, ulubionej mapy graczy z pierwszej części Titanfall. Przygotuj się na nadejście pierwszego darmowego pakietu DLC do Titanfall 2 – zestawu `1„Renegat z Miasta Aniołów”`0, który udostępnimy wszystkim graczom już 1 grudnia. Zestaw zawiera nowe opcje kosmetyczne, dzięki którym wyróżnisz się podczas walk na Kresach. \n\n\nWciśnij `2%[A_BUTTON|MOUSE1]%`0, aby zobaczyć." + "COMMUNITYUPDATE_13_Q" "Zwiastun - rozgrywka w Mieście Aniołów" + "COMMUNITYUPDATE_14_A" "Witaj z powrotem.\n\n\nWciśnij `2%[A_BUTTON|MOUSE1]%`0, aby zobaczyć." + "COMMUNITYUPDATE_14_Q" "Zwiastun – „Bis”" + "COMMUNITYUPDATE_15_A" "Dwie legendy, jedna historia.\n\n\nWciśnij `2%[A_BUTTON|MOUSE1]%`0, aby zobaczyć." + "COMMUNITYUPDATE_15_Q" "Zwiastun – rozgrywka w trybie fabularnym" + "COMMUNITYUPDATE_16_A" "Bez ograniczeń.\n\n\nWciśnij `2%[A_BUTTON|MOUSE1]%`0, aby zobaczyć." + "COMMUNITYUPDATE_16_Q" "Zwiastun – rozgrywka pilotów w trybie online" + "COMMUNITYUPDATE_DESC" "`3Co nowego u społeczności Titanfall?`0\n\nInformacje i linki z całego świata.\n\nAby dowiedzieć się więcej:\n`2%$rui/bullet_point%`0śledź nas na Twitterze `1@Respawn`0\n`2%$rui/bullet_point%`0polub nasz profil na `1facebook.com/RespawnEntertainment`0\n`2%$rui/bullet_point%`0dołącz do nas na stronie `1www.respawn.com`0" + "COMMUNITYUPDATE_NAME" "Społeczność" + "KNB_SUBJECT_00_DESC" "`3Co nowego w Titanfall?`0\n\nZajrzyj tutaj, by zobaczyć zmiany w Titanfall 2!" + "KNB_SUBJECT_00_NAME" "Aktualizacje gry" + "KNB_SUBJECT_00_SUB_00_A" "`2%$rui/bullet_point%`010 Nowe, zaprojektowane przez społeczność identyfikatory.\n\n`2%$rui/bullet_point%`0Wszystkie prezenty patrona można teraz kupić za pomocą kredytów.\n\n`2%$rui/bullet_point%`0Nowa zawartość do kupienia w sklepie.\n\n" + "KNB_SUBJECT_00_SUB_00_Q" "%$rui/hud/scoreboard/status_titan% 28 listopada – Pora żniw" + "KNB_SUBJECT_00_SUB_01_A" "`2%$rui/bullet_point%`0Pistolet w głównym miejscu na broń\n\n`2%$rui/bullet_point%`0Halloweenowe identyfikatory\n\n`2%$rui/bullet_point%`0Zmiany w wyważaniu\n\n`2%$rui/bullet_point%`0Nowa zawartość do kupienia w sklepie\n\n" + "KNB_SUBJECT_00_SUB_01_Q" "%$rui/hud/scoreboard/status_titan% 31 października – Cukierki i psikusy" + "KNB_SUBJECT_00_SUB_02_A" "`2%$rui/bullet_point%`0Obrona Kresów – Obsługa 3 dodatkowych map: Suchy Dok, Miasto Aniołów i Egzoplaneta.\n\n`2%$rui/bullet_point%`0Nowa mapa do \"Szybkiego szturmu\" - UMA\n\n`2%$rui/bullet_point%`0Nowa egzekucja pilota – \"Dziura w ścianie\"\n\n`2%$rui/bullet_point%`0Nowa zawartość dostępna w sklepie" + "KNB_SUBJECT_00_SUB_02_Q" "%$rui/hud/scoreboard/status_titan% 29 sierpnia – Pocztówki z Kresów" + "KNB_SUBJECT_00_SUB_03_A" "`2%$rui/bullet_point%`0Obrona Kresów – nowy tryb współpracy, w którym łączysz siły z maksymalnie trzema innymi graczami, aby chronić ważny cel przed coraz silniejszymi falami przeciwników sterowanych przez SI. Komunikacja i przystosowanie się do sytuacji są kluczem do przetrwania.\n\n`2%$rui/bullet_point%`0Nowa mapa – Powstanie\n\n`2%$rui/bullet_point%`0Nowa mapa do trybu „Szybki szturm” – Miasto\n\n`2%$rui/bullet_point%`0Nowa zawartość do kupienia w sklepie" + "KNB_SUBJECT_00_SUB_03_Q" "%$rui/hud/scoreboard/status_titan% 25 lipca – operacja „Tarcza Kresów”" + "KNB_SUBJECT_00_SUB_04_A" "`2%$rui/bullet_point%`0Nowa mapa – „Gry wojenne”\n\n`2%$rui/bullet_point%`0Nowa mapa do Szybkiego szturmu – „Ruch uliczny”\n\n`2%$rui/bullet_point%`0Nowa egzekucja pilota – Walka z cieniem\n\n`2%$rui/bullet_point%`0Trzecie miejsce na broń\n\n`2%$rui/bullet_point%`0Ustawienia gier prywatnych" + "KNB_SUBJECT_00_SUB_04_Q" "%$rui/hud/scoreboard/status_titan% 27 czerwca – Gry wojenne" + "KNB_SUBJECT_00_SUB_05_A" "`2%$rui/bullet_point%`0Nowy Tytan – Monarcha\n\n`2%$rui/bullet_point%`0Nowa mapa – Relikt\n\n`2%$rui/bullet_point%`0Nowa egzekucja pilota – A kuku\n\n`2%$rui/bullet_point%`0Nowa zawartość dostępna w sklepie" + "KNB_SUBJECT_00_SUB_05_Q" "%$rui/hud/scoreboard/status_titan% 30 maja: Rządy Monarchy" + "KNB_SUBJECT_00_SUB_06_A" "`2%$rui/bullet_point%`0Nowa mapa – Błąd\n\n`2%$rui/bullet_point%`0Nowa mapa do szybkiego szturmu – Pokład\n\n`2%$rui/bullet_point%`0Nowa frakcja – MARVIN\n\n`2%$rui/bullet_point%`0Nowa egzekucja pilota – Na ostrzu noża\n\n`2%$rui/bullet_point%`0Zwiększenie maksymalnej generacji do 100" + "KNB_SUBJECT_00_SUB_06_Q" "%$rui/hud/scoreboard/status_titan% 25 kwietnia: Błąd na Kresach" + "KNB_SUBJECT_00_SUB_07_A" "`2%$rui/bullet_point%`0Nowa mapa – Kolonia\n\n`2%$rui/bullet_point%`0Nowa egzekucja pilota – Uziemienie\n\n`2%$rui/bullet_point%`0Nowa broń – R-101\n\n`2%$rui/bullet_point%`0Nowa zawartość dostępna w sklepie" + "KNB_SUBJECT_00_SUB_07_Q" "%$rui/hud/scoreboard/status_titan% 30 marca – Nowa Kolonia" + "KNB_SUBJECT_00_SUB_08_A" "`2%$rui/bullet_point%`0Szybki szturm – nowy tryb eliminacyjny, w którym zmagają się wyłącznie piloci! To oparty na rundach tryb 6 na 6, w którym nie można się odradzać. Gracze mają minutę na wyeliminowanie drużyny przeciwnej. Możliwe jest także wygranie rundy poprzez kontrolowanie neutralnej flagi, gdy upłynie czas. O wygranej decyduje zwycięstwo w pięciu rundach.\n\n`2%$rui/bullet_point%`0Nowa mapa do szybkiego szturmu – Polana\n\n`2%$rui/bullet_point%`0Nowa mapa do szybkiego szturmu – Stosy\n\n`2%$rui/bullet_point%`0Nowa egzekucja pilota – Późne uderzenie" + "KNB_SUBJECT_00_SUB_08_Q" "%$rui/hud/scoreboard/status_titan% 23 lutego: Szybki szturm" + "KNB_SUBJECT_00_SUB_09_A" "`2%$rui/bullet_point%`0Nowa mapa – Miasto aniołów\n\n`2%$rui/bullet_point%`0Nowa broń – Elitarny skrzydłowy B3\n\n`2%$rui/bullet_point%`0Nowa egzekucja pilota – Rozrywacz\n\n`2%$rui/bullet_point%`0Nowe zestawy Tytana\n\n`2%$rui/bullet_point%`0Nowa zawartość dostępna w sklepie" + "KNB_SUBJECT_00_SUB_09_Q" "%$rui/hud/scoreboard/status_titan% 30 listopada: Renegat z Miasta Aniołów" + "MP_ANGEL_CITY_FD_WAVE_1" "Przykuty do nieba" + "MP_ANGEL_CITY_FD_WAVE_2" "Bezkształtność" + "MP_ANGEL_CITY_FD_WAVE_3" "Rewolta" + "MP_ANGEL_CITY_FD_WAVE_4" "Uparta zgraja" + "MP_ANGEL_CITY_FD_WAVE_5" "Twarda szóstka" + "MP_DRYDOCK_FD_WAVE_1" "Na nieznanych wodach" + "MP_DRYDOCK_FD_WAVE_2" "Wystrzelali się!" + "MP_DRYDOCK_FD_WAVE_3" "Oślepieni blaskiem nauki" + "MP_DRYDOCK_FD_WAVE_4" "System wywierania nacisku" + "MP_DRYDOCK_FD_WAVE_5" "Oko cyklonu" + "MP_THAW_FD_WAVE_1" "Świadomość sytuacji" + "MP_THAW_FD_WAVE_2" "Liczy się liczebność" + "MP_THAW_FD_WAVE_3" "Siepacz 21" + "MP_THAW_FD_WAVE_4" "Zabawa z ogniem" + "MP_THAW_FD_WAVE_5" "Obsada dział" + "NO_PRICE" "Oferta wygasła" + "NO_PRICE_TWO_LINES" "Oferta\nwygasła" + "PL_aegis_last_titan_standing" "DoT z Egidą" + "PL_aegis_last_titan_standing_abbr" "DoTE" + "PL_aegis_last_titan_standing_desc" "Ulepszenia Egidy dostępne. Tryb eliminacyjny, wygrywa drużyna, która jako pierwsza wygra 3 rundy.\n^FFC83200Gracze: 5 na 5 *Rozpoczynasz grę w Tytanie\nLimit czasu: 3 min na rundę *Bez odrodzeń\nMaksymalny rozmiar grupy: 5" + "PL_aegis_last_titan_standing_lobby" "PL_aegis_last_titan_standing_lobby" + "PL_aegis_titan_brawl" "Starcie Tytanów z Egidą" + "PL_aegis_titan_brawl_abbr" "STE" + "PL_aegis_titan_brawl_desc" "Zniszcz wrogie Tytany. Ulepszenia Egidy dostępne.\n^FFC83200Gracze: 5 na 5\nLimit czasu: 10 min\nMaksymalny rozmiar grupy: 5" + "PL_aegis_titan_brawl_hint" "Zniszcz wrogie Tytany.\nBrak katapultowania" + "PL_aegis_titan_brawl_lobby" "Lobby: Starcie Tytanów z Egidą" + "PL_aitdm" "Wyniszczenie" + "PL_aitdm_abbr" "WYN" + "PL_aitdm_desc" "Zabij wszystkich wrogów.\n^FFC83200Gracze: 6 na 6 *AI\nLimit czasowy: 10m\nMaksymalny rozmiar grupy: 6" + "PL_aitdm_lobby" "Wyniszczenie – lobby" + "PL_all_grapple" "Atak na Tytany" + "PL_all_grapple_abbr" "W" + "PL_all_grapple_desc" "Klasyczne zasady wyniszczenia, poza tym, że wszystkie zdolności taktyczne zostają zastąpione liną z hakiem.\n^FFC83200Gracze: 6 na 6 *SI\nLimit czasowy: 10 min\nMaksymalna wielkość grupy: 6" + "PL_all_grapple_lobby" "Lobby: Atak na Tytany" + "PL_all_holopilot" "Wielka ściema" + "PL_all_holopilot_abbr" "SS" + "PL_all_holopilot_desc" "Klasyczne zasady szybkiego szturmu, poza tym, że wszystkie zdolności taktyczne zostają zastąpione holopilotem.\n^FFC83200Gracze: 6 na 6 *Bez Tytanów\nLimit czasowy: 60 s *Bez odrodzeń\nMaksymalna wielkość grupy: 6" + "PL_all_holopilot_lobby" "Lobby: Wielka ściema" + "PL_all_phase" "Druga strona" + "PL_all_phase_abbr" "W" + "PL_all_phase_desc" "Klasyczne zasady wyniszczenia, poza tym, że wszystkie zdolności taktyczne zostają zastąpione przeskokiem fazowym.\n^FFC83200Gracze: 6 na 6 *SI\nLimit czasowy: 10 min\nMaksymalna wielkość grupy: 6" + "PL_all_phase_lobby" "Lobby: Druga strona" + "PL_all_spicy" "Pikantne wyniszczenie" + "PL_all_spicy_abbr" "W" + "PL_all_spicy_desc" "Klasyczne zasady wyniszczenia, poza tym, że wszystkie zdolności taktyczne zostają zastąpione kleszczami.\n^FFC83200Gracze: 6 na 6 *SI\nLimit czasowy: 10 min\nMaksymalna wielkość grupy: 6" + "PL_all_spicy_lobby" "Lobby: Pikantne wyniszczenie" + "PL_amped_tacticals" "Wzmocnione zdolności taktyczne" + "PL_amped_tacticals_abbr" "W" + "PL_amped_tacticals_desc" "Klasyczne zasady wyniszczenia, poza tym, że wszystkie zdolności taktyczne są potężniejsze.\n^FFC83200Gracze: 6 na 6 *SI\nLimit czasowy: 10 min\nMaksymalna wielkość grupy: 6" + "PL_amped_tacticals_lobby" "Lobby: Wzmocnione zdolności taktyczne" + "PL_ANGEL_CITY" "Miasto Aniołów 24/7" + "PL_angel_city_abbr" "MA" + "PL_angel_city_desc" "Nieustające walki w Mieście Aniołów.\n^FFC83200*Łowy *Wyniszczenie\n*Obrona Umocnień" + "PL_angel_city_lobby" "Miasto Aniołów 24/7 – lobby" + "PL_at_coop" "Ucieczka (współpraca)" + "PL_at_coop_desc" "Właśnie uciekłeś z więzienia. Masz przy sobie jedynie pistolet. Musisz przeżyć do czasu ewakuacji. Eliminuj przeciwników, żeby zdobyć pieniądze na zakup broni. \n^FFC83200Gracze: 6\nMaksymalny rozmiar grupy: 6" + "PL_at_coop_lobby" "Lobby: Ucieczka" + "PL_attrition" "Łowy" + "PL_attrition_abbr" "ŁN" + "PL_attrition_desc" "Zabijaj wrogów, aby zdobywać punkty. Zyskaj jeszcze więcej, deponując punkty w wyznaczonych miejscach.\n^FFC83200Gracze: 5 na 5 *SI\nLimit czasu: 10 min.\nMaksymalny rozmiar grupy: 5" + "PL_attrition_lobby" "Lobby: Łowy" + "PL_capture_the_flag" "Walka o flagę" + "PL_capture_the_flag_abbr" "WOF" + "PL_capture_the_flag_desc" "Odbierz wrogom flagę i zanieś ją do swojej bazy, jednocześnie chroniąc własną flagę przed atakami przeciwnej drużyny!\n^FFC83200Gracze: 5 na 5\nLimit czasu: 12 min.\nMaksymalny rozmiar grupy: 5" + "PL_capture_the_flag_lobby" "Lobby: Walka o flagę" + "PL_coliseum" "Koloseum" + "PL_coliseum_desc" "Potyczka w klatce jeden na jednego z usprawnionymi zdolnościami poruszania się. Gracz, który wygra 3 z 5 rund, otrzyma w nagrodę prezent patrona.^FFC83200\nGracze: 1 na 1 *Bez Tytanów\nLimit czasu: 3 min. *Bez odrodzeń\n**^FFFFFF00WYMAGA BILETU DO KOLOSEUM lub UISZCZENIA OPŁATY WPISOWEJ" + "PL_coliseum_lobby" "Lobby: Koloseum" + "PL_colony" "Kolonia 24/7" + "PL_colony_abbr" "KOL" + "PL_colony_desc" "Nieustające walki w Kolonii. ^CCCCCC00Spowoduje wyszukiwanie gier w trybach ^FFC83200Wyniszczenia^CCCCCC00, ^FFC83200Piloci kontra piloci^CCCCCC00 i ^FFC83200Do ostatniego Tytana^CCCCCC00." + "PL_colony_lobby" "Kolonia 24/7 – lobby" + "PL_ctf_lf" "WoF (Nitro)" + "PL_ctf_lf_abbr" "WoF-N" + "PL_ctf_lf_desc" "Dynamiczna rozgrywka w trybie „Walka o flagę” na wybranych mapach.\n^FFC83200Gracze: 5 na 5\nMaksymalny rozmiar grupy: 5\n^F4D5A600Natychmiastowe odniesienie flagi" + "PL_ctf_lf_lobby" "Lobby: WoF (Nitro)" + "PL_default_description" "Domyślny opis" + "PL_default_lobbytitle" "Domyślny tytuł lobby" + "PL_default_name" "Domyślna nazwa" + "PL_don" "Podwójne ryzyko" + "PL_fd" "Obrona Kresów" + "PL_fd_desc" "Broń się przed falami sił floty Ocalałych" + "PL_fd_easy" "Obrona Kresów: niski" + "PL_fd_easy_desc" "Zmiażdż opozycję" + "PL_fd_easy_lobby" "Obrona Kresów: niski (lobby)" + "PL_fd_hard" "Obrona Kresów: wysoki" + "PL_fd_hard_desc" "W tym starciu liczą się umiejętności" + "PL_fd_hard_lobby" "Obrona Kresów: wysoki (lobby)" + "PL_fd_insane" "Obrona Kresów: szalony" + "PL_fd_insane_desc" "Nie przeżyjesz" + "PL_fd_insane_lobby" "Obrona Kresów: szalony (lobby)" + "PL_fd_lobby" "Lobby: Obrona Kresów" + "PL_fd_master" "Obrona Kresów: mistrzowski" + "PL_fd_master_desc" "Przetrwają tylko najlepsi z najlepszych" + "PL_fd_master_lobby" "Obrona Kresów: mistrzowski (lobby)" + "PL_fd_normal" "Obrona Kresów: normalny" + "PL_fd_normal_desc" "Zalecane dla doświadczonych graczy" + "PL_fd_normal_lobby" "Obrona Kresów: normalny (lobby)" + "PL_ffa" "Każdy na każdego" + "PL_ffa_abbr" "KNK" + "PL_ffa_desc" "Każdy na każdego, musisz wyeliminować wszystkich przeciwników.\n^FFC83200Gracze: 1 na 11\nLimit czasu: 10 min.\nMaksymalny rozmiar grupy: 1" + "PL_ffa_lobby" "Lobby: Każdy na każdego" + "PL_fra" "Wolni strzelcy" + "PL_fra_abbr" "WS" + "PL_fra_desc" "Każdy pilot działa sam. Eliminuj przeciwników i zbierz 3 baterie, aby wezwać Tytana.\n^FFC83200Gracze: 1 na 11\nLimit czasu: 15 min\nMaksymalny rozmiar grupy: 1" + "PL_fra_lobby" "Lobby: Wolni strzelcy" + "PL_groud_war_lobby" "8 na 8 Remix – lobby" + "PL_ground_war" "8 na 8 Remix" + "PL_ground_war_abbr" "8 na 8" + "PL_ground_war_desc" "Zawiera tryby „Starcie pilotów” i „Obrona umocnień” z dużą liczbą graczy na każdej z map.\n^FFC83200Gracze: 8 na 8" + "PL_hardpoint" "Obrona umocnień" + "PL_hardpoint_abbr" "OU" + "PL_hardpoint_desc" "Przejmij i utrzymaj umocnienie, aby zdobyć punkty. Wzmocnione umocnienia są warte dwa razy więcej punktów.\n^FFC83200Gracze: 6 na 6\nLimit czasu: 10 min.\nMaksymalny rozmiar grupy: 6" + "PL_hardpoint_lobby" "Lobby: Obrona umocnień" + "PL_hunted" "Ścigany" + "PL_iron_last_titan_standing" "Żelazne DoT" + "PL_iron_last_titan_standing_abbr" "ŻDoT" + "PL_iron_last_titan_standing_desc" "Tylko Tytany, tryb eliminacyjny, walka toczy się do 3 wygranych rund.\n^FFC83200Gracze: 5 na 5 *BEZ PILOTÓW\nLimit czasu: 3 min na rundę *Bez odrodzeń\nMaksymalny rozmiar grupy: 5" + "PL_iron_last_titan_standing_lobby" "PL_iron_last_titan_standing_lobby" + "PL_last_titan_standing" "Do ostatniego Tytana" + "PL_last_titan_standing_abbr" "DOT" + "PL_last_titan_standing_desc" "Wszyscy gracze rozpoczynają eliminacje w trybie rundowym, siedząc w swoich Tytanach. Wygrywa drużyna, która jako pierwsza wygra 3 rundy.\n^FFC83200Gracze: 5 na 5 *Rozpoczynasz grę w Tytanie\nLimit czasu: 3 min na rundę *Bez odrodzeń\nMaksymalny rozmiar grupy: 5" + "PL_last_titan_standing_lobby" "Lobby: DoT" + "PL_limited_time_mode" "(Tymczasowo)" + "PL_live_fire" "Szybki szturm" + "PL_live_fire_abbr" "SS" + "PL_live_fire_desc" "Dynamiczna potyczka na arenie do trybu Szybki szturm. Aby wygrać rundę, musisz wyeliminować wszystkich pilotów z przeciwnej drużyny lub być w posiadaniu flagi, gdy czas dobiegnie końca.^FFC83200\nGracze: 6 na 6 *Bez Tytanów\nLimit czasu: 60 s *Bez odrodzeń\nMaksymalny rozmiar grupy: 6" + "PL_live_fire_lobby" "Lobby: Szybki szturm" + "PL_load_a_map_on_the_command_line" "Wczytaj mapę w wierszu poleceń – tylko dla deva." + "PL_marked_for_death" "Na celowniku" + "PL_marked_for_death_abbr" "NC" + "PL_marked_for_death_desc" "Zabijaj lub chroń oznaczone cele.\n^FFC83200Gracze: 6 na 6 \nLimit czasu: 12 min\nMaksymalny rozmiar grupy: 6" + "PL_marked_for_death_lobby" "Lobby: Na celowniku" + "PL_nitro_ffa" "KNK (Nitro)" + "PL_nitro_ffa_abbr" "KNK-N" + "PL_nitro_ffa_desc" "Dynamiczne starcia w trybie Każdy na każdego na wybranych mapach.\n^FFC83200Gracze: 6\n^F4D5A600Brak Tytanów\nBrak wzmocnień" + "PL_nitro_ffa_lobby" "Lobby: KNK Nitro " + "PL_nitro_mixtape" "Remix (Nitro)" + "PL_nitro_mixtape_abbr" "RMX-N" + "PL_nitro_mixtape_desc" "Dynamiczna rozgrywka w trybach „Walka o flagę”, „Na celowniku” i PvP na wybranych mapach.\n^FFC83200Gracze: 5 na 5\nMaksymalny rozmiar grupy: 5\n^F4D5A600Natychmiastowe odniesienie flagi" + "PL_nitro_mixtape_lobby" "Lobby: Remix" + "PL_pilot_hunter" "Starcie pilotów" + "PL_pilot_hunter_abbr" "SP" + "PL_pilot_hunter_desc" "Zabij wrogich pilotów i ich Tytany. \n^FFC83200Gracze: 8 na 8\nLimit czasu: 10 min.\nMaksymalny rozmiar grupy: 8" + "PL_pilot_hunter_lobby" "Lobby: Starcie pilotów" + "PL_pilot_skirmish" "Piloci kontra piloci" + "PL_pilot_skirmish_abbr" "PvP" + "PL_pilot_skirmish_desc" "Zabij wrogich pilotów. Zrzuty Tytanów niedozwolone.\n^FFC83200Gracze: 8 na 8 *Bez Tytanów\nLimit czasu: 10 min.\nMaksymalny rozmiar grupy: 8" + "PL_pilot_skirmish_lobby" "Lobby: PvP" + "PL_pl_rebuild_all_paths" "Odnów wszystkie ścieżki" + "PL_pl_run_with_ai_ainrebuildonmapstart_2" "Uruchamianie z: ai_ainRebuildOnMapStart 2" + "PL_private_match" "Gra prywatna (beta)" + "PL_private_match_desc" "Rozegraj własną grę prywatną i samodzielnie wybierz tryb i mapę.\n^FFC83200ZAPROŚ SIEĆ lub ZAPROŚ ZNAJOMYCH do gry\n^FFC83200Gracze: 1-16\nBez postępów" + "PL_private_match_lobby" "Lobby: Gra prywatna (beta)" + "PL_promo_coop" "4-OS. TRYB KOOPERACJI" + "PL_raid" "Rajd" + "PL_rise" "Powstanie 24/7" + "PL_rise_abbr" "POW" + "PL_rise_desc" "Powstanie non-stop. ^CCCCCC00Wyszukiwane będą gry w trybach: ^FFC83200WoF^CCCCCC00, ^FFC83200Obrona umocnień^CCCCCC00, ^FFC83200Piloci kontra piloci^CCCCCC00, ^FFC83200Szybki szturm^CCCCCC00 i ^FFC83200Do ostatniego Tytana^CCCCCC00." + "PL_rise_lobby" "Powstanie 24/7 – lobby" + "PL_rocket_arena" "Rakietowa arena" + "PL_rocket_arena_abbr" "SS" + "PL_rocket_arena_desc" "Klasyczne zasady szybkiego szturmu ze zmodyfikowanymi EPG.^FFC83200\nGracze: 6 na 6 *Bez Tytanów\nLimit czasowy: 90s *Bez odrodzeń\nMaksymalny rozmiar grupy: 6" + "PL_rocket_arena_lobby" "Lobby: Rakietowa arena" + "PL_settings_for_when_someone_loads_a_map_on_the_command_line_do_not_edit_the_cmdlinemapload_1_below_-_this_makes_this_work" "Ustawienia w przypadku wczytania mapy poprzez wiersz poleceń. Nie edytować cmdlineMapLoad 1 – wszystko będzie działać." + "PL_speedball" "Szybki szturm" + "PL_speedball_desc" "Walcz o przejęcie neutralnej flagi. Wyeliminuj drużynę przeciwną lub bądź w posiadaniu flagi, gdy runda dobiegnie końca. Gra toczy się do 5 zwycięstw.\n^FFC83200Gracze: 6 na 6 *Bez Tytanów\nLimit czasu: 60 s/tura * Bez odrodzeń\nMaksymalny rozmiar grupy: 6" + "PL_speedball_lobby" "Szybki szturm – lobby" + "PL_tactikill" "Taktyczne wyniszczenie" + "PL_tactikill_abbr" "W" + "PL_tactikill_desc" "Klasyczne zasady wyniszczenia, poza tym, że wszystkie zdolności taktyczne zostają zresetowane przy zabójstwie.\n^FFC83200Gracze: 6 na 6 *SI\nLimit czasowy: 10 min\nMaksymalna wielkość grupy: 6" + "PL_tactikill_lobby" "Lobby: Taktyczne wyniszczenie" + "PL_titan_brawl" "Starcie Tytanów" + "PL_titan_brawl_abbr" "ST" + "PL_titan_brawl_desc" "Zniszcz wrogie Tytany. Bez pilotów.\n^FFC83200Gracze: 5 na 5\nLimit czasu: 10 min\nMaksymalny rozmiar grupy: 5" + "PL_titan_brawl_hint" "Zniszcz wrogie Tytany.\nBrak katapultowania" + "PL_titan_brawl_lobby" "Lobby: Starcie Tytanów" + "PL_titan_brawl_turbo" "Turbo starcie Tytanów" + "PL_titan_brawl_turbo_abbr" "ST" + "PL_titan_brawl_turbo_desc" "Klasyczne zasady starcia Tytanów z szybszym odnawianiem zrywów oraz ładowaniem rdzenia.\n^FFC83200Gracze: 5 na 5\nLimit czasowy: 10 min\nMaksymalny rozmiar grupy: 5" + "PL_titan_brawl_turbo_hint" "Zniszcz wrogie Tytany.\nBrak katapultowania" + "PL_titan_brawl_turbo_lobby" "Lobby: Turbo starcie Tytanów" + "PL_turbo_last_titan_standing" "Turbo DoT" + "PL_turbo_last_titan_standing_abbr" "DOT" + "PL_turbo_last_titan_standing_desc" "Klasyczne zasady DoT z szybszym odnawianiem zrywów oraz ładowaniem rdzenia.\n^FFC83200Gracze: 5v5 *Rozpoczynasz grę w Tytanie\nLimit czasowy: 3 min na każdą rundę *Bez odrodzeń\nMaksymalny rozmiar grupy: 5" + "PL_turbo_last_titan_standing_lobby" "Lobby: Turbo DoT" + "PL_variety_pack" "Remix" + "PL_variety_pack_desc" "Zmienna liczba graczy i wybór różnych map; rozgrywka w trybach takich jak:\n^FFC83200*Łowy *Wyniszczenie\n*Do ostatniego Tytana *Obrona umocnień\n*Piloci kontra piloci *Walka o flagę" + "PL_variety_pack_lobby" "Remix – lobby" + "PL_wargames" "Gry wojenne 24/7" + "PL_wargames_abbr" "GW" + "PL_wargames_desc" "Gry wojenne non-stop. ^CCCCCC00Wyszukiwanie gier w trybach^FFC83200Wyniszczenia^CCCCCC00, ^FFC83200WOF^CCCCCC00, ^FFC83200Piloci kontra piloci^CCCCCC00, ^FFC83200Obrona umocnień^CCCCCC00, i ^FFC83200Do ostatniego Tytana^CCCCCC00." + "PL_wargames_lobby" "Gry wojenne 24/7 – lobby" + "WATCH_TUTORIAL" "OBEJRZYJ SAMOUCZEK" + } + } + "lang" + { + "Language" "mspanish" + "Tokens" + { + "COMMUNITYUPDATE_00_A" "Tu aventura por los asombrosos paisajes de la Frontera continúa con el último DLC de Titanfall 2: Postales de la Frontera. La Frontera se ve mejor que nunca con ubicaciones nuevas y conocidas, además de la nueva colección de pinturas de guerra de arma élite.\n\n\nPulsa `2%[A_BUTTON|MOUSE1]%`0 para verlo." + "COMMUNITYUPDATE_00_Q" "Tráiler de \"Postales de la Frontera\"" + "COMMUNITYUPDATE_01_A" "Lee todos los cambios que llegan con el parche de Postales de la Frontera.\n\n\nPulsa `2%[A_BUTTON|MOUSE1]%`0 para verlo." + "COMMUNITYUPDATE_01_Q" "Notas sobre parches de Postales de la Frontera" + "COMMUNITYUPDATE_02_A" "Próximamente disponible para celulares, Titanfall: Assault es un juego de disparos en tiempo real ambientado en el universo de Titanfall con la colaboración de Particle City. Míralo en acción aquí. \n\n\nPulsa `2%[A_BUTTON|MOUSE1]%`0 para verlo." + "COMMUNITYUPDATE_02_Q" "Tráiler de \"lanzamiento\" de Titanfall: Assault" + "COMMUNITYUPDATE_03_A" "Iniquity nos muestra el tutorial y nos da consejos básicos para Titanfall: Assault. Esta es la forma perfecta de iniciarse en el juego.\n\n\nPulsa `2%[A_BUTTON|MOUSE1]%`0 para verlo." + "COMMUNITYUPDATE_03_Q" "Video \"aprende lo básico\" de Titanfall: Assault" + "COMMUNITYUPDATE_04_A" "Conoce la historia y la creación del modo a través de algunas de las personas clave que se encuentran tras Defensa fronteriza y mira cómo jugamos unas rondas. \n\n\nPulsa `2%[A_BUTTON|MOUSE1]%`0 para verlo." + "COMMUNITYUPDATE_04_Q" "Partidas de Respawn: Defensa fronteriza" + "COMMUNITYUPDATE_05_A" "Kevin Younger creó un montaje divertido en el que presume de grandes movimientos con la cuchilla de pulso. \n\n\nPulsa `2%[A_BUTTON|MOUSE1]%`0 para verlo." + "COMMUNITYUPDATE_05_Q" "Creaciones de la comunidad: dale en el centro" + "COMMUNITYUPDATE_06_A" "ConzeyG presume a través de reddit de manejar a Northstar de forma asombrosa mientras recoge pilotos en el modo Marcado para morir. \n\n\nPulsa `2%[A_BUTTON|MOUSE1]%`0 para verlo." + "COMMUNITYUPDATE_06_Q" "Creaciones : cacería de pilotos con Northstar" + "COMMUNITYUPDATE_07_A" "¡Ya disponible! Defensa fronteriza regresa junto con Ascenso y nuevas pinturas de guerra que podrás comprar y un nuevo mapa de Fuego vivo. Mira todo esto en acción aquí.\n\n\nPulsa `2%[A_BUTTON|MOUSE1]%`0 para verlo." + "COMMUNITYUPDATE_07_Q" "Tráiler de juego \"Operación Escudo fronterizo\"" + "COMMUNITYUPDATE_08_A" "¡Ya disponible! El icónico mapa Juegos bélicos regresa a Titanfall 2 y se ve mejor que nunca. No te olvides de checar la nueva ejecución y el nuevo mapa Tráfico de Fuego vivo en acción.\n\n\nPulsa `2%[A_BUTTON|MOUSE1]%`0 para verlo." + "COMMUNITYUPDATE_08_Q" "Tráiler de juego de \"Juegos bélicos\"" + "COMMUNITYUPDATE_09_A" "Este DLC incluye al séptimo titán del multijugador: Monarch, el mapa Reliquia remasterizado y una nueva ejecución. Además podrás comprar los titanes Ronin y Tone Prime, más camuflajes, banderas y decoraciones para el fuselaje. Mira la acción aquí.\n\n\nPulsa `2%[A_BUTTON|MOUSE1]%`0 para verlo." + "COMMUNITYUPDATE_09_Q" "Tráiler de juego de \"Reino de Monarch\"" + "COMMUNITYUPDATE_10_A" "No todo es lo que parece en la Frontera. Prepárate para el nuevo pack de DLC de Titanfall 2: Un Fallo en la Frontera, que incluye el nuevo mapa “Fallo”. Está inspirado en Harmony, el planeta en el que se crió el capitán Lastimosa, repleto de caídas verticales y senderos eternos y serpenteantes, perfectos para encadenar carreras por las paredes y recorrer todo el mapa sin interrupciones. También se une al pack un nuevo mapa de Fuego vivo: Muelle, que cuenta con espacios internos estrechos, patios desprotegidos y drones de vigilancia que te observan desde las alturas. Si crees que esto te supera, los M.R.V.N. ya están aquí dispuestos a echarte una mano robótica. Por último, puedes desbloquear la ejecución cuchilla de pulso y usarla cuando más la necesites.\n\n\nPulsa `2%[A_BUTTON|MOUSE1]%`0 para verlo." + "COMMUNITYUPDATE_10_Q" "Tráiler de juego de \"Un Fallo en la Frontera\"" + "COMMUNITYUPDATE_11_A" "Regresa el icónico mapa favorito de los aficionados del multijugador del Titanfall original: Colonia, con las nuevas tácticas y titanes de Titanfall 2, en el que los pilotos y los titanes tendrán que ingeniárselas para sobrevivir a esta ciudad idílica repleta de callejones sin salida, esquinas con poca visibilidad y azoteas expuestas. Este mapa estará disponible el 30 de marzo para todos los jugadores. El pack de DLC “Colonia Renacida” incluye armas clásicas como el rifle de asalto R-101, una nueva ejecución de arpeo y nuevas opciones estéticas que podrás comprar para verte lo mejor posible mientras bañas la ciudad de sangre enemiga.\n\n\nPulsa `2%[A_BUTTON|MOUSE1]%`0 para verlo." + "COMMUNITYUPDATE_11_Q" "Tráiler de juego de \"Colonia Renacida\"" + "COMMUNITYUPDATE_12_A" "Presentamos Fuego vivo: un modo vertiginoso de 6vs6 exclusivo para pilotos que se centra en el combate competitivo y de corto alcance. Incluye dos mapas nuevos diseñados específicamente para Fuego vivo: Aglomeración y Pradera. Estos mapas gratuitos, diseñados específicamente para este modo intenso y frenético, son cajas letales estrechas y cerradas.\n\n\nPulsa `2%[A_BUTTON|MOUSE1]%`0 para verlo." + "COMMUNITYUPDATE_12_Q" "Tráiler de juego \"Bienvenidos a Fuego vivo\"" + "COMMUNITYUPDATE_13_A" "Disfruta la versión remasterizada del mapa favorito de los aficionados del Titanfall original, `1Ciudad Ángel`0. Permanece atento al primer DLC gratis de Titanfall 2 con `1El más deseado de Ciudad Ángel`0 disponible el 1 de diciembre para todos los jugadores. Este contenido incluye nuevas opciones estéticas para darle más estilo a la Frontera. \n\n\nPulsa `2%[A_BUTTON|MOUSE1]%`0 para verlo." + "COMMUNITYUPDATE_13_Q" "Tráiler de juego \"Bienvenidos a Ciudad Ángel\"" + "COMMUNITYUPDATE_14_A" "Bienvenido de nuevo.\n\n\nPulsa `2%[A_BUTTON|MOUSE1]%`0 para verlo." + "COMMUNITYUPDATE_14_Q" "Tráiler de comentarios \"Encore\"" + "COMMUNITYUPDATE_15_A" "Dos leyendas, un legado.\n\n\nPulsa `2%[A_BUTTON|MOUSE1]%`0 para verlo." + "COMMUNITYUPDATE_15_Q" "Tráiler de juego de un jugador \"Sean uno\"" + "COMMUNITYUPDATE_16_A" "Sin límites.\n\n\nPulsa `2%[A_BUTTON|MOUSE1]%`0 para verlo." + "COMMUNITYUPDATE_16_Q" "Tráiler de juego de multijugador \"Pilotos\"" + "COMMUNITYUPDATE_DESC" "`3Actualizaciones en la comunidad de Titanfall`0\n\nInformación y enlaces de la web.\n\nPara más información:\n`2%$rui/bullet_point%`0Síguenos en Twitter `1@Respawn`0\n`2%$rui/bullet_point%`0Danos me gusta en `1facebook.com/RespawnEntertainment`0\n`2%$rui/bullet_point%`0Únete a nosotros en `1www.respawn.com`0" + "COMMUNITYUPDATE_NAME" "Comunidad" + "KNB_SUBJECT_00_DESC" "`3¿Qué es nuevo en Titanfall?`0\n\n¡Chécalo aquí para ver qué ha cambiado en Titanfall 2!" + "KNB_SUBJECT_00_NAME" "Actualizaciones" + "KNB_SUBJECT_00_SUB_00_A" "`2%$rui/bullet_point%`010 nuevas banderas creadas por la comunidad\n\n`2%$rui/bullet_point%`0Todos los regalos del defensor se pueden comprar ahora con créditos\n\n`2%$rui/bullet_point%`0Nuevo contenido en la tienda para comprar\n\n" + "KNB_SUBJECT_00_SUB_00_Q" "%$rui/hud/scoreboard/status_titan% 28 de noviembre: Recolector de tiempo" + "KNB_SUBJECT_00_SUB_01_A" "`2%$rui/bullet_point%`0Espacio principal de la pistola\n\n`2%$rui/bullet_point%`0Banderas de Halloween\n\n`2%$rui/bullet_point%`0Cambios de equilibrio\n\n`2%$rui/bullet_point%`0Nuevo contenido en la tienda para comprar\n\n" + "KNB_SUBJECT_00_SUB_01_Q" "%$rui/hud/scoreboard/status_titan% 31 de octubre: Trucos y tratos" + "KNB_SUBJECT_00_SUB_02_A" "`2%$rui/bullet_point%`0Defensa fronteriza compatible con 3 mapas más: Dique seco, Ciudad Ángel y Exoplaneta.\n\n`2%$rui/bullet_point%`0Nuevo mapa de Fuego vivo: UMA\n\n`2%$rui/bullet_point%`0Nueva ejecución de piloto: Agujero en el muro\n\n`2%$rui/bullet_point%`0Nuevo contenido en la tienda para comprar" + "KNB_SUBJECT_00_SUB_02_Q" "%$rui/hud/scoreboard/status_titan% 29 de agosto: Postales de la Frontera" + "KNB_SUBJECT_00_SUB_03_A" "`2%$rui/bullet_point%`0Defensa fronteriza: un nuevo modo cooperativo en el que unes tus fuerzas con hasta 3 otros jugadores para defender un objetivo vital de las oleadas de combatientes de la IA que van aumentando de intensidad. La comunicación y la adaptación son claves para la sobrevivencia.\n\n`2%$rui/bullet_point%`0Nuevo mapa: Ascenso\n\n`2%$rui/bullet_point%`0Nuevo mapa de Fuego vivo: Municipio\n\n`2%$rui/bullet_point%`0Nuevo contenido en la tienda para comprar" + "KNB_SUBJECT_00_SUB_03_Q" "%$rui/hud/scoreboard/status_titan% 25 de julio: Operación Escudo fronterizo" + "KNB_SUBJECT_00_SUB_04_A" "`2%$rui/bullet_point%`0Nuevo mapa: Juegos bélicos\n\n`2%$rui/bullet_point%`0Nuevo mapa de Fuego vivo: Tráfico\n\n`2%$rui/bullet_point%`0Nueva ejecución de piloto: Golpe fantasma\n\n`2%$rui/bullet_point%`0Tercer espacio de arma\n\n`2%$rui/bullet_point%`0Configuración de la partida privada" + "KNB_SUBJECT_00_SUB_04_Q" "%$rui/hud/scoreboard/status_titan% 27 de junio: Juegos bélicos" + "KNB_SUBJECT_00_SUB_05_A" "`2%$rui/bullet_point%`0Nuevo titán: Monarch\n\n`2%$rui/bullet_point%`0Nuevo mapa: Reliquia\n\n`2%$rui/bullet_point%`0Nueva ejecución de piloto: Ahora me ves\n\n`2%$rui/bullet_point%`0Nuevo contenido en la tienda para comprar" + "KNB_SUBJECT_00_SUB_05_Q" "%$rui/hud/scoreboard/status_titan% 30 de mayo: Reino de Monarch" + "KNB_SUBJECT_00_SUB_06_A" "`2%$rui/bullet_point%`0Nuevo mapa: Fallo\n\n`2%$rui/bullet_point%`0Nuevo mapa de Fuego vivo: Muelle\n\n`2%$rui/bullet_point%`0Nueva facción: M.R.V.N.\n\n`2%$rui/bullet_point%`0Nueva ejecución de piloto: Dale en el centro\n\n`2%$rui/bullet_point%`0Generación máxima aumentada a 100" + "KNB_SUBJECT_00_SUB_06_Q" "%$rui/hud/scoreboard/status_titan% 25 de abril: Un Fallo en la Frontera" + "KNB_SUBJECT_00_SUB_07_A" "`2%$rui/bullet_point%`0Nuevo mapa: Colonia\n\n`2%$rui/bullet_point%`0Nueva ejecución de piloto: Rompecráneos\n\n`2%$rui/bullet_point%`0Nueva arma: R-101\n\n`2%$rui/bullet_point%`0Nuevo contenido en la tienda para comprar" + "KNB_SUBJECT_00_SUB_07_Q" "%$rui/hud/scoreboard/status_titan% 30 de marzo: Colonia Renacida" + "KNB_SUBJECT_00_SUB_08_A" "`2%$rui/bullet_point%`0Fuego vivo: un nuevo modo de eliminaciones de Batalla de pilotos. Una partida de rondas de 6vs6 sin regeneraciones en la que tendrás un minuto para eliminar al equipo contrario y ganar la ronda. También podrás ganar la ronda si tu equipo tiene la bandera neutral cuando el temporizador llegue a cero. El primer equipo que gane 5 rondas ganará la partida.\n\n`2%$rui/bullet_point%`0Nuevo mapa de Fuego vivo: Pradera\n\n`2%$rui/bullet_point%`0Nuevo mapa de Fuego vivo: Aglomeración\n\n`2%$rui/bullet_point%`0Nueva ejecución de piloto: Último disparo" + "KNB_SUBJECT_00_SUB_08_Q" "%$rui/hud/scoreboard/status_titan% 23 de febrero: Fuego vivo" + "KNB_SUBJECT_00_SUB_09_A" "`2%$rui/bullet_point%`0Nuevo mapa: Ciudad Ángel\n\n`2%$rui/bullet_point%`0Nueva arma: B3 Wingman Élite\n\n`2%$rui/bullet_point%`0Nueva ejecución de piloto: Piezas internas\n\n`2%$rui/bullet_point%`0Nuevs kits de titán\n\n`2%$rui/bullet_point%`0Nuevo contenido en la tienda para comprar" + "KNB_SUBJECT_00_SUB_09_Q" "%$rui/hud/scoreboard/status_titan% 30 de nov.: El más deseado de Ciudad Ángel" + "MP_ANGEL_CITY_FD_WAVE_1" "Encadenado al cielo" + "MP_ANGEL_CITY_FD_WAVE_2" "Sin forma" + "MP_ANGEL_CITY_FD_WAVE_3" "Levantamiento" + "MP_ANGEL_CITY_FD_WAVE_4" "Un grupo tenaz" + "MP_ANGEL_CITY_FD_WAVE_5" "Arriésgate" + "MP_DRYDOCK_FD_WAVE_1" "Nadando en aguas turbias" + "MP_DRYDOCK_FD_WAVE_2" "¡No tienen balas!" + "MP_DRYDOCK_FD_WAVE_3" "Cegados por la ciencia" + "MP_DRYDOCK_FD_WAVE_4" "Sistema de alta presión" + "MP_DRYDOCK_FD_WAVE_5" "Ojo de la tormenta" + "MP_THAW_FD_WAVE_1" "Atención a los alrededores" + "MP_THAW_FD_WAVE_2" "La unión nos hace más fuertes" + "MP_THAW_FD_WAVE_3" "Secuaz 21" + "MP_THAW_FD_WAVE_4" "Diversión en el fuego" + "MP_THAW_FD_WAVE_5" "Escoge las armas adecuadas" + "NO_PRICE" "Oferta caducada" + "NO_PRICE_TWO_LINES" "Oferta\ncaducada" + "PL_aegis_last_titan_standing" "UTEP Aegis" + "PL_aegis_last_titan_standing_abbr" "UTEPA" + "PL_aegis_last_titan_standing_desc" "Mejoras Aegis activadas. Eliminación por rondas. Gana el primero que gane 3 rondas.\n^FFC83200Jugadores: 5vs5 *Comienza como titán\nLímite de tiempo: 3 min. por ronda *Sin regeneraciones\nTamaño máximo del grupo: 5" + "PL_aegis_last_titan_standing_lobby" "PL_aegis_last_titan_standing_lobby" + "PL_aegis_titan_brawl" "Pelea de titanes Aegis" + "PL_aegis_titan_brawl_abbr" "PdTA" + "PL_aegis_titan_brawl_desc" "Elimina a los titanes enemigos. Mejoras Aegis activadas.\n^FFC83200Jugadores: 5vs5\nLímite de tiempo: 10 min.\nTamaño máximo del grupo: 5" + "PL_aegis_titan_brawl_hint" "Elimina a los titanes enemigos.\nSin eyección" + "PL_aegis_titan_brawl_lobby" "Lobby de Pelea de titanes Aegis" + "PL_aitdm" "Deterioro" + "PL_aitdm_abbr" "DET" + "PL_aitdm_desc" "Elimina a todos los enemigos.\n^FFC83200Jugadores: 6vs6 *IA\nLímite de tiempo: 10 min.\nTamaño máximo del grupo: 6" + "PL_aitdm_lobby" "Lobby de Deterioro" + "PL_all_grapple" "Ataque a los titanes" + "PL_all_grapple_abbr" "DET" + "PL_all_grapple_desc" "Las reglas clásicas de Deterioro, pero todas las habilidades tácticas se reemplazan por el arpeo.\n^FFC83200Jugadores: 6vs6 *IA\nLímite de tiempo: 10 min.\nTamaño máximo del grupo: 6" + "PL_all_grapple_lobby" "Lobby de Ataque a los titanes" + "PL_all_holopilot" "El gran engaño" + "PL_all_holopilot_abbr" "FV" + "PL_all_holopilot_desc" "Las reglas clásicas de Fuego vivo, pero todas las habilidades tácticas se reemplazan por el holopiloto.^FFC83200\nJugadores: 6vs6 *Sin titanes\nLímite de tiempo: 60 s *Sin regeneraciones\nNúmero máximo de miembros del grupo: 6" + "PL_all_holopilot_lobby" "Lobby de El gran engaño" + "PL_all_phase" "El otro lado" + "PL_all_phase_abbr" "DET" + "PL_all_phase_desc" "Las reglas clásicas de Deterioro, pero todas las habilidades tácticas se reemplazan por la fase.\n^FFC83200Jugadores: 6vs6 *IA\nLímite de tiempo: 10 min.\nTamaño máximo del grupo: 6" + "PL_all_phase_lobby" "Lobby de El otro lado" + "PL_all_spicy" "Deterioro picante" + "PL_all_spicy_abbr" "DET" + "PL_all_spicy_desc" "Las reglas clásicas de Deterioro, pero todas las habilidades tácticas se reemplazan por garrapatas.\n^FFC83200Jugadores: 6vs6 *IA\nLímite de tiempo: 10 min.\nTamaño máximo del grupo: 6" + "PL_all_spicy_lobby" "Lobby de Deterioro picante" + "PL_amped_tacticals" "Tácticas +" + "PL_amped_tacticals_abbr" "DET" + "PL_amped_tacticals_desc" "Las reglas clásicas de Deterioro, pero todas las habilidades tácticas son más potentes.\n^FFC83200Jugadores: 6vs6 *IA\nLímite de tiempo: 10 min.\nTamaño máximo del grupo: 6" + "PL_amped_tacticals_lobby" "Lobby de Tácticas +" + "PL_ANGEL_CITY" "Ciudad Ángel 24/7" + "PL_angel_city_abbr" "CA" + "PL_angel_city_desc" "Toda Ciudad Ángel, todo el tiempo.\n^FFC83200*Cazarrecompensas *Deterioro\n*Pto. Clave Amplificado" + "PL_angel_city_lobby" "Lobby de Ciudad Ángel 24/7" + "PL_at_coop" "Escape (cooperativo)" + "PL_at_coop_desc" "Recién escapaste de la cárcel y solo tienes una pistola. Sobrevive hasta que puedas evacuar. Elimina enemigos para ganar dinero y comprar armas. \n^FFC83200Jugadores: 6\nNúmero máximo de miembros del grupo: 6" + "PL_at_coop_lobby" "Lobby de Escape" + "PL_attrition" "Cazarrecompensas" + "PL_attrition_abbr" "CAZ" + "PL_attrition_desc" "Elimina enemigos para ganar dinero. Obtén más depositando tus bonificaciones en el banco.\n^FFC83200Jugadores: 5vs5 *IA\nLímite de tiempo: 10 min.\nTamaño máximo del grupo: 5" + "PL_attrition_lobby" "Lobby de Cazarrecompensas" + "PL_capture_the_flag" "Captura la bandera" + "PL_capture_the_flag_abbr" "CLB" + "PL_capture_the_flag_desc" "¡Roba la bandera enemiga y regrésala a tu base mientras evitas que el equipo enemigo tome la tuya!\n^FFC83200Jugadores: 5vs5\nLímite de tiempo: 12 min.\nTamaño máximo del grupo: 5" + "PL_capture_the_flag_lobby" "Lobby de CLB" + "PL_coliseum" "Coliseo" + "PL_coliseum_desc" "Combate individual con movilidad mejorada en una jaula. Elimina a tu oponente y gana una ronda. El mejor en 3 de 5 rondas gana un regalo del defensor.^FFC83200\nJugadores: 1vs1 *Sin titanes\nLímite de tiempo: 3 min *Sin regeneraciones\n**^FFFFFF00REQUIERE BOLETO DE COLISEO o CUOTA DE ENTRADA PAGADA" + "PL_coliseum_lobby" "Lobby de Coliseo" + "PL_colony" "Colonia 24/7" + "PL_colony_abbr" "COL" + "PL_colony_desc" "Colonia, sin interrupciones. ^CCCCCC00Buscará partidas de^FFC83200Deterioro^CCCCCC00, ^FFC83200Batalla de pilotos^CCCCCC00 y ^FFC83200Último titán en pie^CCCCCC00." + "PL_colony_lobby" "Lobby de Colonia 24/7" + "PL_ctf_lf" "CLB (Nitro)" + "PL_ctf_lf_abbr" "CLB-N" + "PL_ctf_lf_desc" "El frenético Captura la bandera en mapas seleccionados.\n^FFC83200Jugadores: 5vs5\nTamaño máximo del grupo: 5\n^F4D5A600Regresos de bandera al instante" + "PL_ctf_lf_lobby" "Lobby de Nitro de CLB" + "PL_default_description" "Descripción predeterminada" + "PL_default_lobbytitle" "Título de lobby predeterminado" + "PL_default_name" "Nombre predeterminado" + "PL_don" "Doble o nada" + "PL_fd" "Defensa fronteriza" + "PL_fd_desc" "Defiéndete contra las oleadas de las fuerzas restantes de la Flota." + "PL_fd_easy" "Defensa fronteriza: Fácil" + "PL_fd_easy_desc" "Aplasta a la oposición" + "PL_fd_easy_lobby" "Defensa fronteriza: Lobby de dificultad fácil" + "PL_fd_hard" "Defensa fronteriza: Difícil" + "PL_fd_hard_desc" "Se requieren jugadas hábiles." + "PL_fd_hard_lobby" "Defensa fronteriza: Lobby de dificultad difícil" + "PL_fd_insane" "Defensa fronteriza: demencial" + "PL_fd_insane_desc" "No sobrevivirás" + "PL_fd_insane_lobby" "Lobby de Defensa fronteriza: demencial" + "PL_fd_lobby" "Lobby de Defensa fronteriza" + "PL_fd_master" "Defensa fronteriza: maestro" + "PL_fd_master_desc" "Solo los mejores saldrán con vida" + "PL_fd_master_lobby" "Lobby de Defensa fronteriza: maestro" + "PL_fd_normal" "Defensa fronteriza: normal" + "PL_fd_normal_desc" "Recomendado para jugadores con experiencia" + "PL_fd_normal_lobby" "Defensa fronteriza: Lobby de dificultad normal" + "PL_ffa" "Todos contra todos" + "PL_ffa_abbr" "TCT" + "PL_ffa_desc" "Cada piloto por su cuenta; elimina a todos los enemigos.\n^FFC83200Jugadores: 1vs11\nLímite de tiempo: 10 min.\nTamaño máximo de grupo: 1" + "PL_ffa_lobby" "Lobby de Todos contra todos" + "PL_fra" "Agentes Libres" + "PL_fra_abbr" "AGL" + "PL_fra_desc" "Estás por tu cuenta. Elimina enemigos para ganar. Recoge 3 baterías para un despliegue de titán.\n^FFC83200Jugadores: 1vs11\nLímite de tiempo: 15 min\nTamaño máximo del grupo: 1" + "PL_fra_lobby" "Lobby de Agentes Libres" + "PL_groud_war_lobby" "Lobby diverso 8vs8" + "PL_ground_war" "Diverso 8vs8" + "PL_ground_war_abbr" "8vs8" + "PL_ground_war_desc" "Incluye Escaramuza y Punto clave amplificado con gran número de jugadores en todos los mapas.\n^FFC83200Jugadores: 8vs8" + "PL_hardpoint" "Punto clave amplificado" + "PL_hardpoint_abbr" "PCA" + "PL_hardpoint_desc" "Captura y mantén un punto clave para ganar puntos. Los puntos clave amplificados dan el doble de puntos.\n^FFC83200Jugadores: 6vs6\nLímite de tiempo: 10 min.\nTamaño máximo del grupo: 6" + "PL_hardpoint_lobby" "Lobby de Punto clave amplificado" + "PL_hunted" "Cazado" + "PL_iron_last_titan_standing" "UTEP de hierro" + "PL_iron_last_titan_standing_abbr" "UTEPH" + "PL_iron_last_titan_standing_desc" "Solo para titanes, partida de rondas por eliminación. Gana el primero con 3 rondas ganadas.\n^FFC83200Jugadores: 5vs5 *SIN PILOTOS\nLímite de tiempo: 3 min por ronda *Sin regeneraciones\nNúmero máximo de miembros del grupo: 5" + "PL_iron_last_titan_standing_lobby" "PL_iron_last_titan_standing_lobby" + "PL_last_titan_standing" "Último titán en pie" + "PL_last_titan_standing_abbr" "UTEP" + "PL_last_titan_standing_desc" "Todos los jugadores inician en titanes en esta partida de rondas por eliminación. Gana el primero con 3 rondas ganadas.\n^FFC83200Jugadores: 5vs5 *Comienza como titán\nLímite de tiempo: 3 min. por ronda *Sin regeneraciones\nTamaño máximo del grupo: 5" + "PL_last_titan_standing_lobby" "Lobby de UTEP" + "PL_limited_time_mode" "Por tiempo limitado" + "PL_live_fire" "Fuego vivo" + "PL_live_fire_abbr" "FV" + "PL_live_fire_desc" "Combate frenético en un escenario de Fuego vivo. Elimina pilotos enemigos o ten la bandera cuando se acabe el tiempo para ganar la ronda.^FFC83200\nJugadores: 6vs6 *Sin titanes\nLímite de tiempo: 60 s *Sin regeneraciones\nNúmero máximo de miembros del grupo: 6" + "PL_live_fire_lobby" "Looby de Fuego vivo" + "PL_load_a_map_on_the_command_line" "Carga un mapa en la línea de comandos. Solo para desarrollo." + "PL_marked_for_death" "Marcado para morir" + "PL_marked_for_death_abbr" "MPM" + "PL_marked_for_death_desc" "Elimina o protege los objetivos marcados.\n^FFC83200Jugadores: 6vs6 \nLímite de tiempo: 12 min\nNúmero máximo de miembros del grupo: 6" + "PL_marked_for_death_lobby" "Lobby de Marcado para morir" + "PL_nitro_ffa" "TCT (Nitro)" + "PL_nitro_ffa_abbr" "TCT-N" + "PL_nitro_ffa_desc" "Todos contra todos acelerado en mapas seleccionados.\n^FFC83200Jugadores: 6\n^F4D5A600Sin titanes\nSin potenciadores" + "PL_nitro_ffa_lobby" "Lobby de TCT (Nitro)" + "PL_nitro_mixtape" "Diverso (Nitro)" + "PL_nitro_mixtape_abbr" "DVS-N" + "PL_nitro_mixtape_desc" "CLB, MPM y BDP acelerados en mapas seleccionados.\n^FFC83200Jugadores: 5vs5\nTamaño máximo del grupo: 5\n^F4D5A600Regresos de bandera al instante" + "PL_nitro_mixtape_lobby" "Lobby de Diverso" + "PL_pilot_hunter" "Escaramuza" + "PL_pilot_hunter_abbr" "ECM" + "PL_pilot_hunter_desc" "Elimina a los pilotos y titanes enemigos. \n^FFC83200Jugadores: 8vs8\nLímite de tiempo: 10 min.\nTamaño máximo del grupo: 8" + "PL_pilot_hunter_lobby" "Lobby de Escaramuza" + "PL_pilot_skirmish" "Batalla de pilotos" + "PL_pilot_skirmish_abbr" "BDP" + "PL_pilot_skirmish_desc" "Elimina a los pilotos enemigos. No se permiten despliegues de titán.\n^FFC83200Jugadores: 8vs8 *Sin titanes\nLímite de tiempo: 10 min.\nTamaño máximo del grupo: 8" + "PL_pilot_skirmish_lobby" "Lobby BDP" + "PL_pl_rebuild_all_paths" "Reconstruir todos los caminos" + "PL_pl_run_with_ai_ainrebuildonmapstart_2" "Ejecutar con ai_ainRebuildOnMapStart 2" + "PL_private_match" "Partida privada (beta)" + "PL_private_match_desc" "Juega una partida privada personalizada en el mapa y modo que quieras.\n^FFC83200INVITAR RED o INVITAR AMIGOS para jugar\n^FFC83200Jugadores: 1-16\nSin progresión" + "PL_private_match_lobby" "Lobby de la Beta de partida privada" + "PL_promo_coop" "COOPERATIVO de 4 jugadores" + "PL_raid" "Incursión" + "PL_rise" "Ascenso 24/7" + "PL_rise_abbr" "ASC" + "PL_rise_desc" "Ascenso, sin interrupciones. ^CCCCCC00Buscará partidas de ^FFC83200CLB^CCCCCC00, ^FFC83200Punto clave amplificado^CCCCCC00, ^FFC83200Batalla de pilotos^CCCCCC00, ^FFC83200Fuego vivo^CCCCCC00 y ^FFC83200Último titán en pie^CCCCCC00." + "PL_rise_lobby" "Lobby de Ascenso 24/7" + "PL_rocket_arena" "Zona de misiles" + "PL_rocket_arena_abbr" "FV" + "PL_rocket_arena_desc" "Las reglas clásicas de Fuego vivo con EPGs modificadas.^FFC83200\nJugadores: 6vs6 *Sin titanes\nLímite de tiempo: 90 s *Sin regeneraciones\nTamaño máximo del grupo: 6" + "PL_rocket_arena_lobby" "Lobby de Zona de misiles" + "PL_settings_for_when_someone_loads_a_map_on_the_command_line_do_not_edit_the_cmdlinemapload_1_below_-_this_makes_this_work" "Configuraciones para cuando alguien carga un mapa en la línea de comandos. No edites la cmdlineMapLoad 1 debajo porque se encarga de que esto funcione." + "PL_speedball" "Fuego vivo" + "PL_speedball_desc" "Lucha por la posesión de una bandera neutral. Elimina al equipo enemigo o ten la bandera cuando se acabe el tiempo para ganar la ronda. Gana el primero con 5 rondas ganadas.\n^FFC83200Jugadores: 6vs6 *Sin titanes\nLímite de tiempo: 60 segundos por ronda *Sin regeneraciones\nNúmero máximo de miembros del grupo: 6" + "PL_speedball_lobby" "Looby de Fuego vivo" + "PL_tactikill" "Eliminación táctica en Deterioro" + "PL_tactikill_abbr" "DET" + "PL_tactikill_desc" "Las reglas clásicas de Deterioro, pero todas las habilidades tácticas se reemplazan por completo con cada eliminación.\n^FFC83200Jugadores: 6vs6 *IA\nLímite de tiempo: 10 min.\nTamaño máximo del grupo: 6" + "PL_tactikill_lobby" "Lobby de Eliminación táctica en Deterioro" + "PL_titan_brawl" "Pelea de titanes" + "PL_titan_brawl_abbr" "PdT" + "PL_titan_brawl_desc" "Elimina a los titanes enemigos. No se permiten pilotos.\n^FFC83200Jugadores: 5vs5\nLímite de tiempo: 10 min.\nTamaño máximo del grupo: 5" + "PL_titan_brawl_hint" "Elimina a los titanes enemigos.\nSin eyección" + "PL_titan_brawl_lobby" "Lobby de Pelea de titanes" + "PL_titan_brawl_turbo" "Pelea de titanes turbo" + "PL_titan_brawl_turbo_abbr" "PdTT" + "PL_titan_brawl_turbo_desc" "Las reglas clásicas de Pelea de titanes con regeneración de impulsos y generación de núcleo más rápidas.\n^FFC83200Jugadores: 5vs5\nLímite de tiempo: 10 min.\nTamaño máximo del grupo: 5" + "PL_titan_brawl_turbo_hint" "Elimina a los titanes enemigos.\nSin eyección" + "PL_titan_brawl_turbo_lobby" "Lobby de Pelea de titanes turbo" + "PL_turbo_last_titan_standing" "UTEP turbo" + "PL_turbo_last_titan_standing_abbr" "UTEP" + "PL_turbo_last_titan_standing_desc" "Las reglas clásicas de UTEP con regeneración de impulsos y generación de núcleo más rápidas.\n^FFC83200Jugadores: 5vs5 *Comienza como titán\nLímite de tiempo: 3 min. por ronda *Sin regeneraciones\nTamaño máximo del grupo: 5" + "PL_turbo_last_titan_standing_lobby" "Lobby de UTEP turbo" + "PL_variety_pack" "Diverso" + "PL_variety_pack_desc" "Número variado de jugadores con una gran variedad de mapas en estos modos:\n^FFC83200*Cazarrecompensas *Deterioro\n*Último titán en pie *Punto clave\n*Pilotos contra pilotos *Captura la bandera" + "PL_variety_pack_lobby" "Lobby diverso" + "PL_wargames" "Juegos de guerra 24/7" + "PL_wargames_abbr" "JDG" + "PL_wargames_desc" "Juegos de guerra, sin interrupciones. ^CCCCCC00Buscará partidas de ^FFC83200Deterioro^CCCCCC00, ^FFC83200CLB^CCCCCC00, ^FFC83200Batalla de pilotos^CCCCCC00, ^FFC83200Punto clave amplificado^CCCCCC00 y ^FFC83200Último titán en pie^CCCCCC00." + "PL_wargames_lobby" "Lobby de Juegos de guerra 24/7" + "WATCH_TUTORIAL" "VER TUTORIAL" + } + } + } +}
\ No newline at end of file diff --git a/Northstar.Custom/scripts/levels/mp_box.rson b/Northstar.Custom/scripts/levels/mp_box.rson new file mode 100644 index 00000000..1a8d1ee7 --- /dev/null +++ b/Northstar.Custom/scripts/levels/mp_box.rson @@ -0,0 +1,8 @@ +//C:\depot\r2dev\game autofastfunction.pl + +IsTestMap: false +When: "SERVER" +Scripts: +[ + mp/levels/mp_box.nut +]
\ No newline at end of file diff --git a/Northstar.Custom/scripts/vscripts/_northstar_devcommands.gnut b/Northstar.Custom/scripts/vscripts/_northstar_devcommands.gnut new file mode 100644 index 00000000..ebac1e3c --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/_northstar_devcommands.gnut @@ -0,0 +1,60 @@ +untyped +global function NorthstarDevCommands_Init + +void function NorthstarDevCommands_Init() +{ + AddClientCommandCallback( "noclip", ClientCommandCallbackToggleNoclip ) + AddClientCommandCallback( "script", ClientCommandCallbackEvalScript ) + AddClientCommandCallback( "kill", ClientCommandCallbackKill ) +} + +bool function ClientCommandCallbackToggleNoclip( entity player, array<string> args ) +{ + if ( GetConVarInt( "sv_cheats" ) != 1 ) + return true + + //if ( player.IsNoclipping() ) + // DisableNoclipForEntityIndex( player.GetIndexForEntity() ) + //else + // EnableNoclipForEntityIndex( player.GetIndexForEntity() ) + + // new way that doesn't require native stuff yay + if ( player.IsNoclipping() ) + player.SetPhysics( MOVETYPE_WALK ) // just hoping this is the right movetype, not much of a way to check + else + player.SetPhysics( MOVETYPE_NOCLIP ) + + return true +} + +bool function ClientCommandCallbackEvalScript( entity player, array<string> args ) +{ + if ( args.len() < 1 || GetConVarInt( "sv_cheats" ) != 1 ) + return true + + // todo: rewrite this at some point to use a concommand because clientcommands can't just take in a single string with spaces, quotes etc + // should just have the concommand call a clientcommand manually with properly formatted args + string joinedArgs = args[0] + for ( int i = 1; i < args.len(); i++ ) + joinedArgs += " " + args[i] + + try + { + compilestring( joinedArgs )() + } + catch (exception) + { + // should probably send this to the client at some point + // no need to log here because compilestring errors already do that + } + + return true +} + +bool function ClientCommandCallbackKill( entity player, array<string> args ) +{ + if ( IsAlive( player ) && GetConVarInt( "sv_cheats" ) == 1 ) + player.Die() + + return true +}
\ No newline at end of file diff --git a/Northstar.Custom/scripts/vscripts/gamemodes/_gamemode_arena.gnut b/Northstar.Custom/scripts/vscripts/gamemodes/_gamemode_arena.gnut new file mode 100644 index 00000000..4e6217e8 --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/gamemodes/_gamemode_arena.gnut @@ -0,0 +1,99 @@ +global function GameModeArena_Init + +struct { + entity imcBoostStore + entity militiaBoostStore + + entity imcShield + entity militiaShield +} file + +void function GameModeArena_Init() +{ + AddCallback_EntitiesDidLoad( CreateBoostStores ) + AddCallback_GameStateEnter( eGameState.Prematch, StartBuyPhase ) + AddCallback_GameStateEnter( eGameState.Playing, FinishBuyPhase ) + + // todo: need a custom intro for this that allows players to move, buy etc in prematch + // if that's actually possible lol not sure it is +} + +void function CreateBoostStores() +{ + array<entity> startspawns = GetEntArrayByClass_Expensive( "info_spawnpoint_human_start" ) // easier to do this than use a spawn callback imo + + vector imcAverageOrigin + float imcAverageAngle + int imcNumSpawns + + vector militiaAverageOrigin + float militiaAverageAngle + int militiaNumSpawns + + foreach ( entity startspawn in startspawns ) + { + if ( startspawn.GetTeam() == TEAM_IMC ) + { + imcAverageOrigin += startspawn.GetOrigin() + imcAverageAngle += startspawn.GetAngles().y + imcNumSpawns++ + } + else + { + militiaAverageOrigin += startspawn.GetOrigin() + militiaAverageAngle += startspawn.GetAngles().y + militiaNumSpawns++ + } + } + + // create imc boost store + vector finalPositionImc = < imcAverageOrigin.x / imcNumSpawns, imcAverageOrigin.y / imcNumSpawns, imcAverageOrigin.z / imcNumSpawns > + finalPositionImc += ( 200 * AnglesToForward( < 0, imcAverageAngle / imcNumSpawns, 0 > ) ) + CreateBoostStoreLocation( TEAM_IMC, finalPositionImc, < 0, 0, 0 >, true ) + + vector finalPositionMilitia = < militiaAverageOrigin.x / militiaNumSpawns, militiaAverageOrigin.y / militiaNumSpawns, militiaAverageOrigin.z / militiaNumSpawns > + finalPositionMilitia += ( 200 * AnglesToForward( < 0, militiaAverageAngle / militiaNumSpawns, 0 > ) ) + CreateBoostStoreLocation( TEAM_MILITIA, finalPositionMilitia, < 0, 0, 0 >, true ) + + // createbooststorelocation is void so have to do this + // also boost store code is just fully fucked lol, teams only get set on open so can't compare teams at this point + // sorry if someone else makes their own boost stores lol this'll just break + // if there's some way to get the invisible crates used for boost stores i will be very happy + + if ( GetBoostStores().len() != 2 ) + print( "_gamemode_arena.gnut: there are more than 2 boost stores, very bad no good" ) + + file.imcBoostStore = GetBoostStores()[0] + file.militiaBoostStore = GetBoostStores()[1] +} + +void function StartBuyPhase() +{ + //file.imcShield = CreateBubbleShieldWithSettings( TEAM_IMC, file.imcBoostStore.GetOrigin(), <0,0,0>, null, 15.0 ) + //file.militiaShield = CreateBubbleShieldWithSettings( TEAM_MILITIA, file.militiaBoostStore.GetOrigin(), <0,0,0>, null, 15.0 ) + + entity bubbleShield = CreateEntity( "prop_dynamic" ) + bubbleShield.SetValueForModelKey( $"models/fx/xo_shield.mdl" ) + bubbleShield.kv.solid = 0 + bubbleShield.kv.rendercolor = "255 255 255" // white + bubbleShield.kv.modelscale = 2.25 + bubbleShield.SetOrigin( file.imcBoostStore.GetOrigin() ) + DispatchSpawn( bubbleShield ) + + file.imcShield = bubbleShield + + //SetTeam( bubbleShield, TEAM_IMC ) + + // current problem, there is seemingly no way of getting a shield we can resize which actually resizes the collision + // could probably just damage players that try to leave lol + + OpenBoostStores() +} + +void function FinishBuyPhase() +{ + file.imcShield.Destroy() + //file.militiaShield.Destroy() + + CloseBoostStores() +}
\ No newline at end of file diff --git a/Northstar.Custom/scripts/vscripts/gamemodes/_gamemode_fastball.gnut b/Northstar.Custom/scripts/vscripts/gamemodes/_gamemode_fastball.gnut new file mode 100644 index 00000000..52b563d4 --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/gamemodes/_gamemode_fastball.gnut @@ -0,0 +1,194 @@ +untyped +global function GamemodeFastball_Init + +struct { + // first panel is a, second is b, third is c + array<Point> panelSpawns +} file + +void function GamemodeFastball_Init() +{ + // used for intro + PrecacheModel( $"models/titans/buddy/titan_buddy.mdl" ) + PrecacheParticleSystem( $"P_BT_eye_SM" ) + + // used for respawn + PrecacheParticleSystem( $"P_pod_screen_lasers_OUT" ) + + SetRoundBased( true ) + SetRespawnsEnabled( false ) + Riff_ForceSetEliminationMode( eEliminationMode.Pilots ) + + // implementing intro in a different file because it'll likely be big + ClassicMP_SetCustomIntro( GamemodeFastballIntroSetup, 14.5 ) // bit of a guess number + AddCallback_EntitiesDidLoad( SpawnPanelsForLevel ) + AddCallback_GameStateEnter( eGameState.Prematch, ResetPanels ) + SetTimeoutWinnerDecisionFunc( FastballDecideWinner ) + + AddCallback_OnClientConnected( FastballInitPlayer ) + AddCallback_OnPlayerKilled( FastballOnPlayerKilled ) // move this to a system in _gamestate soon!! + + // setup spawns + // first is a, second is b, third is c + + FastballAddBuddySpawnForLevel( "mp_angel_city", TEAM_IMC, < 2281.39, -3333.06, 200.031 >, < 0, 91.23, 0 > ) + FastballAddBuddySpawnForLevel( "mp_angel_city", TEAM_MILITIA, < -4139.57, 4684.4, 41.0313 >, <0, -14.326, 0 > ) + FastballAddPanelSpawnsForLevel( "mp_angel_city", [ + < 2055.94, 2040.03, 128.031 >, < 0, -180, 0 >, + < -274.757, 2255.22, 400.031 >, < 0, -176.251, 0 >, + < -3208.28, 2741.17, 128.031 >, < 0, -0.0821686, 0 > + ]) + + FastballAddBuddySpawnForLevel( "mp_thaw", TEAM_MILITIA, < 2049.29, -4085.22, -274.839 >, < 0, 89.2991, 0 > ) + FastballAddBuddySpawnForLevel( "mp_thaw", TEAM_IMC, < 834.484, 2664.28, -380.515 >, < 0.532141, -90.875, -0.542593 > ) + FastballAddPanelSpawnsForLevel( "mp_thaw", [ + < -1026.71, -1691.93, -319.969 >, < 0, 90, 0 >, + < 1836.07, -538.823, -64.1245 >, < 0, -135, 0 >, + < 2840.15, 1321.17, -63.9688 >, < 0, 0, 0 > + ]) + + FastballAddBuddySpawnForLevel( "mp_wargames", TEAM_MILITIA, < -4848.87, 682.17, -127.969 >, < 0, 0, 0 > ) + FastballAddBuddySpawnForLevel( "mp_wargames", TEAM_IMC, < 2960.78, 1229.36, -127.969 >, < 7.89891e-005, 146.505, 1.38387e-005 > ) + FastballAddPanelSpawnsForLevel( "mp_wargames", [ + < -691.961, 1888.56, 112.031 >, < 0, 90, 0 >, + < -1072.03, -508.229, -127.969 >, < 0, 180, 0 >, + < -24.291, -1403.69, -119.969 >, < 0, -90, 0 > + ]) + + FastballAddBuddySpawnForLevel( "mp_eden", TEAM_MILITIA, < -2404.4, 1738.07, 167.767 >, <0, -40.0894, 0> ) + FastballAddBuddySpawnForLevel( "mp_eden", TEAM_IMC, < 5248.01, 414.698, 77.1051 >, < 0, 180, 0 > ) + FastballAddPanelSpawnsForLevel( "mp_eden", [ + < 704.333, 1530.18, 144.031 >, < 0, 90, 0 >, + < -108.43, 272.638, 72.0313 >, < 0, -90, 0 >, + <1044.25, -1145.68, 68.0313>, < 0, 180, 0 > + ]) + + FastballAddBuddySpawnForLevel( "mp_black_water_canal", TEAM_MILITIA, < 1222.88, -5050.63, -187.763 >, < 0, 45, 0 > ) + FastballAddBuddySpawnForLevel( "mp_black_water_canal", TEAM_IMC, < -235.375, 4736.75, -255.969 >, < 0, -90, 0 > ) + FastballAddPanelSpawnsForLevel( "mp_black_water_canal", [ + < 1566.13, -731.539, -63.9688 >, < 0, -90, 0 >, + < 502.603, 1102.92, 260.031 >, < 0, 152.328, 0 >, + < 2337.37, 2099.91, -26.9688 >, < 0, 0, 0 > + ]) + + FastballAddBuddySpawnForLevel( "mp_grave", TEAM_MILITIA, < 11026.8, -5163.18, 1885.64 >, < 0, 155.05, 0 > ) + FastballAddBuddySpawnForLevel( "mp_grave", TEAM_IMC, < -1952, -3120, 1993.33 >, < 0, 0, 0 > ) + FastballAddPanelSpawnsForLevel( "mp_grave", [ + < 5204.54, -2726.54, 2376.03 >, < 0, 90, 0 >, + < 6001.58, -4126.61, 2252.03 >, < 0, -135, 0 >, + < 3595.96, -4568.04, 2376.03 >, < 0, -135, 0 > + ]) +} + +void function SpawnPanelsForLevel() +{ + int panelId + foreach ( Point panelSpawn in file.panelSpawns ) + { + entity panel = CreatePanel( panelSpawn.origin, panelSpawn.angles ) + panel.s.panelId <- panelId++ + } +} + +void function ResetPanels() +{ + foreach ( entity panel in GetAllControlPanels() ) + SetTeam( panel, TEAM_UNASSIGNED ) +} + +void function FastballInitPlayer( entity player ) +{ + foreach ( entity panel in GetAllControlPanels() ) + Remote_CallFunction_NonReplay( player, "ServerCallback_FastballUpdatePanelRui", panel.GetEncodedEHandle(), panel.s.panelId ) +} + +void function FastballAddPanelSpawnsForLevel( string level, array<vector> positionsAndOrigins ) +{ + if ( GetMapName() != level ) + return + + for ( int i = 0; i < positionsAndOrigins.len(); i += 2 ) + { + Point spawnPoint + spawnPoint.origin = positionsAndOrigins[ i ] + spawnPoint.angles = positionsAndOrigins[ i + 1 ] + + file.panelSpawns.append( spawnPoint ) + } +} + +entity function CreatePanel( vector origin, vector angles ) +{ + entity panel = CreateEntity( "prop_control_panel" ) + panel.SetValueForModelKey( $"models/communication/terminal_usable_imc_01.mdl" ) + panel.SetOrigin( origin ) + panel.SetAngles( angles ) + panel.kv.solid = SOLID_VPHYSICS + DispatchSpawn( panel ) + + panel.SetModel( $"models/communication/terminal_usable_imc_01.mdl" ) + panel.s.onPlayerFinishesUsing_func = FastballOnPanelHacked + + Highlight_SetNeutralHighlight( panel, "sp_enemy_pilot" ) + + return panel +} + +// control panel code isn't very statically typed, pain +function FastballOnPanelHacked( panel, player, success ) +{ + expect entity( panel ) + expect entity( player ) + expect bool( success ) + + if ( !success ) + return + + print( panel + " was hacked by " + player ) + PanelFlipsToPlayerTeamAndUsableByEnemies( panel, player ) + player.SetPlayerGameStat( PGS_ASSAULT_SCORE, player.GetPlayerGameStat( PGS_ASSAULT_SCORE ) + 1 ) + + foreach ( entity otherPlayer in GetPlayerArray() ) + Remote_CallFunction_NonReplay( otherPlayer, "ServerCallback_FastballPanelHacked", panel.GetEncodedEHandle(), panel.s.panelId, player.GetEncodedEHandle() ) + + // respawn dead players + foreach ( entity deadPlayer in GetPlayerArrayOfTeam( player.GetTeam() ) ) + { + if ( !IsAlive( deadPlayer ) ) + { + deadPlayer.SetOrigin( player.GetOrigin() ) + deadPlayer.RespawnPlayer( null ) + Remote_CallFunction_NonReplay( deadPlayer, "ServerCallback_FastballRespawnPlayer" ) + } + } +} + +void function FastballOnPlayerKilled( entity victim, entity attacker, var damageInfo ) +{ + if ( !victim.IsPlayer() || GetGameState() != eGameState.Playing ) + return + + if ( GetPlayerArrayOfTeam_Alive( victim.GetTeam() ).len() == 0 ) + SetWinner( GetOtherTeam( victim.GetTeam() ) ) +} + +int function FastballDecideWinner() +{ + int militiaPanels + int imcPanels + + foreach ( entity panel in GetAllControlPanels() ) + { + if ( panel.GetTeam() == TEAM_MILITIA ) + militiaPanels++ + else if ( panel.GetTeam() == TEAM_IMC ) + imcPanels++ + } + + if ( militiaPanels > imcPanels ) + return TEAM_MILITIA + else if ( imcPanels > militiaPanels ) + return TEAM_IMC + + return TEAM_UNASSIGNED +}
\ No newline at end of file diff --git a/Northstar.Custom/scripts/vscripts/gamemodes/_gamemode_fastball_intro.gnut b/Northstar.Custom/scripts/vscripts/gamemodes/_gamemode_fastball_intro.gnut new file mode 100644 index 00000000..6a1d0bbd --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/gamemodes/_gamemode_fastball_intro.gnut @@ -0,0 +1,208 @@ +untyped +global function GamemodeFastballIntroSetup +global function FastballAddBuddySpawnForLevel + +struct { + float introStartTime + + table< int, Point > buddySpawns + entity militiaBuddy + entity imcBuddy + + table<entity, bool> playersHoldingJump +} file + +void function GamemodeFastballIntroSetup() +{ + RegisterSignal( "fastball_start_throw" ) + RegisterSignal( "fastball_release" ) + + AddCallback_GameStateEnter( eGameState.Prematch, OnPrematchStart ) + AddCallback_OnClientConnected( AddPlayerToFastballIntro ) +} + +void function FastballAddBuddySpawnForLevel( string level, int team, vector origin, vector angles ) +{ + if ( GetMapName() != level ) + return + + Point spawnPoint + spawnPoint.origin = origin + spawnPoint.angles = angles + + file.buddySpawns[ team ] <- spawnPoint +} + +void function OnPrematchStart() +{ + ClassicMP_OnIntroStarted() + + file.introStartTime = Time() + file.playersHoldingJump = {} // clear it + + Point militiaBuddySpawn + Point imcBuddySpawn + + // figure out positions if there's none manually specified + if ( file.buddySpawns.len() == 0 ) + { + array<entity> militiaSpawns + array<entity> imcSpawns + + foreach ( entity spawnpoint in GetEntArrayByClass_Expensive( "info_spawnpoint_titan_start" ) ) + { + // trace from top to bottom + float result = TraceHullSimple( spawnpoint.GetOrigin() + < 0, 0, 250 >, spawnpoint.GetOrigin(), < -200, -200, 0 >, < 200, 200, 400 >, null ) + + // don't need to trace much, as long as it's over 0 that means it fits + // cases where it's over 0 but less than 1 are usually caused by terrain + if ( result > 0 ) + { + if ( spawnpoint.GetTeam() == TEAM_MILITIA ) + militiaSpawns.append( spawnpoint ) + else + imcSpawns.append( spawnpoint ) + } + } + + entity milititaSpawnEnt = militiaSpawns[ RandomInt( militiaSpawns.len() ) ] + militiaBuddySpawn.origin = milititaSpawnEnt.GetOrigin() + militiaBuddySpawn.angles = milititaSpawnEnt.GetAngles() + + entity imcSpawnEnt = imcSpawns[ RandomInt( imcSpawns.len() ) ] + imcBuddySpawn.origin = imcSpawnEnt.GetOrigin() + imcBuddySpawn.angles = imcSpawnEnt.GetAngles() + } + else + { + militiaBuddySpawn = file.buddySpawns[ TEAM_MILITIA ] + imcBuddySpawn = file.buddySpawns[ TEAM_IMC ] + } + + file.militiaBuddy = CreatePropDynamic( $"models/titans/buddy/titan_buddy.mdl" ) + file.militiaBuddy.SetOrigin( militiaBuddySpawn.origin ) + file.militiaBuddy.SetAngles( militiaBuddySpawn.angles ) + thread AnimateBuddy( file.militiaBuddy ) + + file.imcBuddy = CreatePropDynamic( $"models/titans/buddy/titan_buddy.mdl" ) + file.imcBuddy.SetOrigin( imcBuddySpawn.origin ) + file.imcBuddy.SetAngles( imcBuddySpawn.angles ) + thread AnimateBuddy( file.imcBuddy ) + + foreach ( entity player in GetPlayerArray() ) + thread FastballPlayer( player ) +} + +void function AnimateBuddy( entity buddy ) +{ + print( "buddy spawn at " + buddy.GetOrigin() + " " + buddy.GetAngles() ) + + thread PlayAnim( buddy, "bt_beacon_fastball_throw_end" ) + + // play dialogue at the right time + buddy.WaitSignal( "fastball_start_throw" ) + float diagDuration = EmitSoundOnEntity( buddy, "diag_sp_spoke1_BE117_04_01_mcor_bt" ) // trust me + StartParticleEffectOnEntity( buddy, GetParticleSystemIndex( $"P_BT_eye_SM" ), FX_PATTACH_POINT_FOLLOW, buddy.LookupAttachment( "EYEGLOW" ) ) + + wait diagDuration + if ( GetGameState() != eGameState.Playing ) + ClassicMP_OnIntroFinished() + + buddy.WaitSignal( "fastball_release" ) + wait 5.0 + buddy.Destroy() +} + +void function AddPlayerToFastballIntro( entity player ) +{ + if ( GetGameState() == eGameState.Prematch ) + thread FastballPlayer( player ) +} + +void function FastballPlayer( entity player ) +{ + player.EndSignal( "OnDeath" ) + player.EndSignal( "OnDestroy" ) + + OnThreadEnd( function() : ( player ) + { + RemoveCinematicFlag( player, CE_FLAG_CLASSIC_MP_SPAWNING ) + player.ClearParent() + ClearPlayerAnimViewEntity( player ) + player.DeployWeapon() + player.PlayerCone_Disable() + + RemoveButtonPressedPlayerInputCallback( player, IN_JUMP, PlayerHoldingJumpInIntro ) + RemoveButtonReleasedPlayerInputCallback( player, IN_JUMP, PlayerNoLongerHoldingJumpInIntro ) + }) + + FirstPersonSequenceStruct throwSequence + throwSequence.attachment = "REF" + throwSequence.useAnimatedRefAttachment = true + throwSequence.hideProxy = true + throwSequence.viewConeFunction = ViewConeFastball // this seemingly does not trigger for some reason + throwSequence.firstPersonAnim = "ptpov_beacon_fastball_throw_end" + // mp models seemingly have no 3p animation for this + throwSequence.firstPersonBlendOutTime = 0.0 + throwSequence.teleport = true + throwSequence.setInitialTime = Time() - file.introStartTime + + // get our buddy + entity buddy + if ( player.GetTeam() == TEAM_MILITIA ) + buddy = file.militiaBuddy + else + buddy = file.imcBuddy + + // respawn the player + player.SetOrigin( buddy.GetOrigin() ) + player.RespawnPlayer( null ) + player.Hide() + player.HolsterWeapon() + + // hide hud, fade screen out from black + AddCinematicFlag( player, CE_FLAG_CLASSIC_MP_SPAWNING ) + ScreenFadeFromBlack( player, 0.5, 0.5 ) + + // start fp sequence + thread FirstPersonSequence( throwSequence, player, buddy ) + + // manually do this because i can't get viewconefastball to work + player.PlayerCone_FromAnim() + player.PlayerCone_SetMinYaw( -50 ) + player.PlayerCone_SetMaxYaw( 25 ) + player.PlayerCone_SetMinPitch( -15 ) + player.PlayerCone_SetMaxPitch( 15 ) + + buddy.WaitSignal( "fastball_start_throw" ) + // lock in their final angles at this point + vector throwVel = AnglesToForward( player.EyeAngles() ) * 950 + throwVel.z = 675.0 + + // allow players to gain extra height by holding jump after this point too + AddButtonPressedPlayerInputCallback( player, IN_JUMP, PlayerHoldingJumpInIntro ) + AddButtonReleasedPlayerInputCallback( player, IN_JUMP, PlayerNoLongerHoldingJumpInIntro ) + + // wait for it to finish + buddy.WaitSignal( "fastball_release" ) + + if ( player in file.playersHoldingJump && file.playersHoldingJump[ player ] ) + throwVel.z = 850.0 + + // have to correct this manually here since due to no 3p animation our position isn't set right during this sequence + player.SetOrigin( buddy.GetAttachmentOrigin( buddy.LookupAttachment( "FASTBALL_R" ) ) ) + player.Show() + player.SetVelocity( throwVel ) + + TryGameModeAnnouncement( player ) +} + +void function PlayerHoldingJumpInIntro( entity player ) +{ + file.playersHoldingJump[ player ] <- true +} + +void function PlayerNoLongerHoldingJumpInIntro( entity player ) +{ + file.playersHoldingJump[ player ] <- false +}
\ No newline at end of file diff --git a/Northstar.Custom/scripts/vscripts/gamemodes/_gamemode_gg.gnut b/Northstar.Custom/scripts/vscripts/gamemodes/_gamemode_gg.gnut new file mode 100644 index 00000000..fd41236c --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/gamemodes/_gamemode_gg.gnut @@ -0,0 +1,111 @@ +global function GamemodeGG_Init + +void function GamemodeGG_Init() +{ + SetSpawnpointGamemodeOverride( FFA ) + + Evac_SetEnabled( false ) + SetLoadoutGracePeriodEnabled( false ) // prevent modifying loadouts with grace period + SetWeaponDropsEnabled( false ) + Riff_ForceTitanAvailability( eTitanAvailability.Never ) + Riff_ForceBoostAvailability( eBoostAvailability.Disabled ) + + AddCallback_OnPlayerRespawned( OnPlayerRespawned ) + AddCallback_OnPlayerKilled( OnPlayerKilled ) + + AddCallback_GameStateEnter( eGameState.WinnerDetermined, OnWinnerDetermined ) +} + +void function OnPlayerRespawned( entity player ) +{ + UpdateLoadout( player ) + thread OnPlayerRespawned_Threaded( player ) +} + +void function OnPlayerRespawned_Threaded( entity player ) +{ + // bit of a hack, need to rework earnmeter code to have better support for completely disabling it + // rn though this just waits for earnmeter code to set the mode before we set it back + WaitFrame() + PlayerEarnMeter_SetMode( player, eEarnMeterMode.DISABLED ) +} + +void function OnPlayerKilled( entity victim, entity attacker, var damageInfo ) +{ + if ( !victim.IsPlayer() || !attacker.IsPlayer() ) + return + + if ( attacker == victim ) // suicide + { + string message = victim.GetPlayerName() + " committed suicide." + foreach ( entity player in GetPlayerArray() ) + SendHudMessage( player, message, -1, 0.4, 255, 0, 0, 0, 0, 3, 0.15 ) + + if ( GameRules_GetTeamScore( victim.GetTeam() ) != 0 ) + { + AddTeamScore( victim.GetTeam(), -1 ) // get absolutely fucking destroyed lol + victim.AddToPlayerGameStat( PGS_ASSAULT_SCORE, -1 ) + } + } + else + { + if ( DamageInfo_GetDamageSourceIdentifier( damageInfo ) != eDamageSourceId.melee_pilot_emptyhanded ) + { + AddTeamScore( attacker.GetTeam(), 1 ) + attacker.AddToPlayerGameStat( PGS_ASSAULT_SCORE, 1 ) + UpdateLoadout( attacker ) + } + + if ( DamageInfo_GetDamageSourceIdentifier( damageInfo ) == eDamageSourceId.human_execution ) + { + string message = victim.GetPlayerName() + " got executed." + foreach ( entity player in GetPlayerArray() ) + SendHudMessage( player, message, -1, 0.4, 255, 0, 0, 0, 0, 3, 0.15 ) + + if ( GameRules_GetTeamScore( victim.GetTeam() ) != 0 ) + { + AddTeamScore( victim.GetTeam(), -1 ) // get absolutely fucking destroyed lol + victim.AddToPlayerGameStat( PGS_ASSAULT_SCORE, -1 ) + } + } + } +} + +void function UpdateLoadout( entity player ) +{ + int currentWeaponIndex = GameRules_GetTeamScore( player.GetTeam() ) + array<GunGameWeapon> weapons = GetGunGameWeapons() + + if ( currentWeaponIndex >= weapons.len() ) + currentWeaponIndex = weapons.len() - 1 + + if ( currentWeaponIndex > 18 ) // play end of game music for special weapons + PlayMusicToAll( eMusicPieceID.LEVEL_LAST_MINUTE ) // this *shouldn't* overlap if done multiple times + + GunGameWeapon weapon = weapons[ currentWeaponIndex ] + + foreach ( entity weapon in player.GetMainWeapons() ) + player.TakeWeaponNow( weapon.GetWeaponClassName() ) + + foreach ( entity weapon in player.GetOffhandWeapons() ) + player.TakeWeaponNow( weapon.GetWeaponClassName() ) + + if ( weapon.offhandSlot != -1 ) + { + // TEMP: give archer so player so player has a weapon which lets them use offhands + // need to replace this with a custom empty weapon at some point + player.GiveWeapon( "mp_weapon_rocket_launcher" ) + + player.GiveOffhandWeapon( weapon.weapon, weapon.offhandSlot, weapon.mods ) + } + else + player.GiveWeapon( weapon.weapon, weapon.mods ) + + player.GiveOffhandWeapon( "melee_pilot_emptyhanded", OFFHAND_MELEE ) +} + +void function OnWinnerDetermined() +{ + SetRespawnsEnabled( false ) + SetKillcamsEnabled( false ) +}
\ No newline at end of file diff --git a/Northstar.Custom/scripts/vscripts/gamemodes/_gamemode_inf.gnut b/Northstar.Custom/scripts/vscripts/gamemodes/_gamemode_inf.gnut new file mode 100644 index 00000000..b7af9b85 --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/gamemodes/_gamemode_inf.gnut @@ -0,0 +1,176 @@ +global function GamemodeInfection_Init + +struct { + bool hasHadFirstInfection = false + array<entity> playersToNotifyOfInfection +} file + +void function GamemodeInfection_Init() +{ + SetSpawnpointGamemodeOverride( FFA ) + SetLoadoutGracePeriodEnabled( false ) // prevent modifying loadouts with grace period + SetWeaponDropsEnabled( false ) + Riff_ForceTitanAvailability( eTitanAvailability.Never ) + Riff_ForceBoostAvailability( eBoostAvailability.Disabled ) + + AddCallback_OnClientConnected( InfectionInitPlayer ) + AddCallback_OnPlayerKilled( InfectionOnPlayerKilled ) + AddCallback_OnPlayerRespawned( RespawnInfected ) + AddCallback_GameStateEnter( eGameState.Playing, SelectFirstInfected ) + + SetTimeoutWinnerDecisionFunc( TimeoutCheckSurvivors ) +} + +void function InfectionInitPlayer( entity player ) +{ + if ( GetGameState() < eGameState.Playing ) + SetTeam( player, INFECTION_TEAM_SURVIVOR ) + else + InfectPlayer( player ) +} + +void function SelectFirstInfected() +{ + thread SelectFirstInfectedDelayed() +} + +void function SelectFirstInfectedDelayed() +{ + wait 10.0 + RandomFloat( 5.0 ) + + array<entity> players = GetPlayerArray() + entity infected = players[ RandomInt( players.len() ) ] + + InfectPlayer( infected ) + RespawnInfected( infected ) +} + +void function InfectionOnPlayerKilled( entity victim, entity attacker, var damageInfo ) +{ + if ( !victim.IsPlayer() ) + return + + if ( victim.GetTeam() == INFECTION_TEAM_SURVIVOR ) + InfectPlayer( victim ) + + if ( attacker.IsPlayer() ) + attacker.SetPlayerGameStat( PGS_ASSAULT_SCORE, attacker.GetPlayerGameStat( PGS_ASSAULT_SCORE ) + 1 ) +} + +void function InfectPlayer( entity player ) +{ + SetTeam( player, INFECTION_TEAM_INFECTED ) + player.SetPlayerGameStat( PGS_ASSAULT_SCORE, 0 ) // reset kills + file.playersToNotifyOfInfection.append( player ) + + // check how many survivors there are + array<entity> survivors = GetPlayerArrayOfTeam( INFECTION_TEAM_SURVIVOR ) + if ( survivors.len() == 0 ) + SetWinner( INFECTION_TEAM_INFECTED ) + else if ( survivors.len() == 1 ) + SetLastSurvivor( survivors[ 0 ] ) + + if ( !file.hasHadFirstInfection ) + { + file.hasHadFirstInfection = true + + foreach ( entity otherPlayer in GetPlayerArray() ) + if ( player != otherPlayer ) + Remote_CallFunction_NonReplay( otherPlayer, "ServerCallback_AnnounceFirstInfected", player.GetEncodedEHandle() ) + + PlayMusicToAll( eMusicPieceID.GAMEMODE_1 ) + } +} + +void function RespawnInfected( entity player ) +{ + if ( player.GetTeam() != INFECTION_TEAM_INFECTED ) + return + + // notify newly infected players of infection + if ( file.playersToNotifyOfInfection.contains( player ) ) + { + Remote_CallFunction_NonReplay( player, "ServerCallback_YouAreInfected" ) + file.playersToNotifyOfInfection.remove( file.playersToNotifyOfInfection.find( player ) ) + } + + // set camo to pond scum + player.SetSkin( 1 ) + player.SetCamo( 110 ) + + // stats for infected + StimPlayer( player, 9999.9 ) // can't do endless since we don't get the visual effect in endless + player.SetMaxHealth( 50 ) + + // set loadout + foreach ( entity weapon in player.GetMainWeapons() ) + player.TakeWeaponNow( weapon.GetWeaponClassName() ) + + foreach ( entity weapon in player.GetOffhandWeapons() ) + player.TakeWeaponNow( weapon.GetWeaponClassName() ) + + // TEMP: give archer so player so player has a weapon which lets them use offhands + // need to replace this with a custom empty weapon at some point + //player.GiveWeapon( "mp_weapon_rocket_launcher" ) + player.GiveWeapon( "mp_weapon_mgl" ) + player.GiveOffhandWeapon( "melee_pilot_emptyhanded", OFFHAND_MELEE ) + + thread PlayInfectedSounds( player ) +} + +void function PlayInfectedSounds( entity player ) +{ + player.EndSignal( "OnDeath" ) + player.EndSignal( "OnDestroy" ) + + float nextRandomSound + while ( true ) + { + WaitFrame() + + int meleeState = player.PlayerMelee_GetState() + if ( nextRandomSound < Time() || meleeState != 0 ) + { + string selectedSound + if ( CoinFlip() ) + selectedSound = "prowler_vocal_attack" + else + selectedSound = "prowler_vocal_attackmiss" + + bool canSeeSurvivor + foreach ( entity survivor in GetPlayerArrayOfTeam( INFECTION_TEAM_SURVIVOR ) ) + if ( TraceLineSimple( player.GetOrigin(), survivor.GetOrigin(), survivor ) == 1.0 ) + canSeeSurvivor = true + + // _int sounds are less agressive so only play them if we aren't in some sorta fight + if ( player.GetHealth() == player.GetMaxHealth() || !canSeeSurvivor || meleeState != 0 ) + selectedSound += "_int" + + EmitSoundOnEntity( player, selectedSound ) + + nextRandomSound = Time() + max( 2.5, RandomFloat( 12.0 ) ) + while ( player.PlayerMelee_GetState() != 0 ) // need to ensure this is updated + WaitFrame() + } + } +} + +void function SetLastSurvivor( entity player ) +{ + foreach ( entity otherPlayer in GetPlayerArray() ) + Remote_CallFunction_NonReplay( otherPlayer, "ServerCallback_AnnounceLastSurvivor", player.GetEncodedEHandle() ) + + Highlight_SetEnemyHighlight( player, "enemy_sonar" ) + thread CreateTitanForPlayerAndHotdrop( player, GetTitanReplacementPoint( player, false ) ) + + if ( GameTime_TimeLeftSeconds() > 45 ) + SetServerVar( "gameEndTime", Time() + 45.0 ) +} + +int function TimeoutCheckSurvivors() +{ + if ( GetPlayerArrayOfTeam( INFECTION_TEAM_SURVIVOR ).len() > 0 ) + return INFECTION_TEAM_SURVIVOR + + return INFECTION_TEAM_INFECTED +}
\ No newline at end of file diff --git a/Northstar.Custom/scripts/vscripts/gamemodes/_gamemode_kr.gnut b/Northstar.Custom/scripts/vscripts/gamemodes/_gamemode_kr.gnut new file mode 100644 index 00000000..cf9d6bc5 --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/gamemodes/_gamemode_kr.gnut @@ -0,0 +1,126 @@ +global function GamemodeKR_Init + +struct { + float currentHighestKillraceAmount + int currentKillraceScore + entity currentRacer + array<vector> flagSpawnPoints +} file + +void function GamemodeKR_Init() +{ + PrecacheModel( CTF_FLAG_MODEL ) + + SetSpawnpointGamemodeOverride( FFA ) + + Evac_SetEnabled( false ) + Riff_ForceTitanAvailability( eTitanAvailability.Never ) + Riff_ForceBoostAvailability( eBoostAvailability.Disabled ) + + AddSpawnCallback( "info_hardpoint", AddFlagSpawnPoint ) + + AddCallback_OnPlayerKilled( OnPlayerKilled ) + AddCallback_OnTouchHealthKit( "item_flag", StartPlayerKillrace ) + + AddCallback_GameStateEnter( eGameState.Playing, StartKillraceSpawnThink ) +} + +void function AddFlagSpawnPoint( entity hardpoint ) +{ + if ( hardpoint.HasKey( "hardpointGroup" ) && ( hardpoint.kv.hardpointGroup == "A" || hardpoint.kv.hardpointGroup == "B" || hardpoint.kv.hardpointGroup == "C" ) ) + file.flagSpawnPoints.append( hardpoint.GetOrigin() ) +} + +void function OnPlayerKilled( entity victim, entity attacker, var damageInfo ) +{ + if ( !victim.IsPlayer() || !attacker.IsPlayer() || attacker == victim ) + return + + float killRaceTime = attacker.GetPlayerNetTime( "killRaceTime" ) + 5.0 + attacker.SetPlayerNetTime( "killRaceTime", killRaceTime ) + if ( killRaceTime > file.currentHighestKillraceAmount ) + file.currentHighestKillraceAmount = killRaceTime + if ( file.currentRacer != null ) + file.currentKillraceScore++ +} + +bool function StartPlayerKillrace( entity player, entity flag ) +{ + float killRaceTime = player.GetPlayerNetTime( "killRaceTime" ) + if ( killRaceTime > 0.0 ) + { + thread PlayerKillrace( player, killRaceTime ) + return true // delete the flag entity + } + + return false // keep it alive +} + +void function PlayerKillrace( entity player, float raceTime ) +{ + file.currentKillraceScore = 0 + file.currentRacer = player + int oldMaxHealth = player.GetMaxHealth() + + player.SetMaxHealth( oldMaxHealth * 10 ) + player.SetHealth( player.GetMaxHealth() ) + + foreach ( entity weapon in player.GetMainWeapons() ) + foreach ( string mod in GetWeaponBurnMods( weapon.GetWeaponClassName() ) ) + weapon.AddMod( mod ) + + foreach ( entity otherPlayer in GetPlayerArray() ) + Remote_CallFunction_NonReplay( otherPlayer, "ServerCallback_NewKillRacer", player.GetEncodedEHandle(), Time() + raceTime ) + + float raceEnd = Time() + raceTime + while ( raceEnd > Time() && IsAlive( player ) ) + WaitFrame() + + player.SetPlayerNetTime( "killRaceTime", 0.0 ) + player.SetMaxHealth( oldMaxHealth ) + + foreach ( entity weapon in player.GetMainWeapons() ) + foreach ( string mod in GetWeaponBurnMods( weapon.GetWeaponClassName() ) ) + weapon.RemoveMod( mod ) + + foreach ( entity otherPlayer in GetPlayerArray() ) + Remote_CallFunction_NonReplay( otherPlayer, "ServerCallback_EndKillrace", player.GetEncodedEHandle(), file.currentKillraceScore ) + + if ( GameRules_GetTeamScore( player.GetTeam() ) < file.currentKillraceScore ) + { + GameRules_SetTeamScore( player.GetTeam(), file.currentKillraceScore ) + player.SetPlayerGameStat( PGS_ASSAULT_SCORE, file.currentKillraceScore ) + } + + thread KillraceSpawnThink() // go to spawn next flag +} + +void function StartKillraceSpawnThink() +{ + thread KillraceSpawnThink() +} + +void function KillraceSpawnThink() +{ + file.currentHighestKillraceAmount = 0 + file.currentRacer = null + file.currentKillraceScore = 0 + float time = Time() + while ( time + 20.0 > Time() && file.currentHighestKillraceAmount < 25 ) + WaitFrame() + + vector spawnpos = file.flagSpawnPoints[ RandomInt( file.flagSpawnPoints.len() ) ] + foreach ( entity player in GetPlayerArray() ) + Remote_CallFunction_NonReplay( player, "ServerCallback_FlagSpawnIncoming", spawnpos.x, spawnpos.y, spawnpos.z, Time() + 15 ) + + wait 15.0 + + // create a flag + entity flag = CreateEntity( "item_flag" ) + flag.SetValueForModelKey( CTF_FLAG_MODEL ) + SetTargetName( flag, "krflag" ) + DispatchSpawn( flag ) + flag.SetModel( CTF_FLAG_MODEL ) + flag.SetOrigin( spawnpos + < 0, 0, flag.GetBoundingMaxs().z / 2 > ) // get it out of the ground + flag.SetVelocity( < 0, 0, 1 > ) // make it do gravity again +}
\ No newline at end of file diff --git a/Northstar.Custom/scripts/vscripts/gamemodes/_gamemode_sbox.gnut b/Northstar.Custom/scripts/vscripts/gamemodes/_gamemode_sbox.gnut new file mode 100644 index 00000000..27581aea --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/gamemodes/_gamemode_sbox.gnut @@ -0,0 +1,49 @@ +untyped +global function GamemodeSbox_Init + +struct { + array<entity> spawnpoints +} file + +void function GamemodeSbox_Init() +{ + SetConVarInt( "sv_cheats", 1 ) // cheats on by default + + // cache spawnpoints + //file.spawnpoints = GetEntArrayByClass_Expensive( "info_spawnpoint_human" ) + // todo just use a spawn callback for this rather than weird late cache in spawn + + AddCallback_OnClientConnected( SboxSpawnPlayer ) + AddDeathCallback( "player", SboxRespawnPlayer ) +} + +void function SboxSpawnPlayer( entity player ) +{ + if ( player.GetPlayerSettings() == "spectator" ) // if they haven't spawned yet + player.SetPlayerSettings( "pilot_grapple_male" ) + + if ( file.spawnpoints.len() == 0 ) // have to cache late rather than on init due to spawnpoints not existing in init + file.spawnpoints = GetEntArrayByClass_Expensive( "info_spawnpoint_human" ) + + if ( GetGameState() != eGameState.Playing ) // hacky but can't set this in init either + SetGameState( eGameState.Playing ) + + entity spawnpoint = file.spawnpoints[ RandomInt( file.spawnpoints.len() ) ] + + ScreenFadeFromBlack( player, 0.0, 0.0 ) // HACK before non-classicmp intros are ready, remove the blackscreen we get from waitingforplayers + player.RespawnPlayer( spawnpoint ) + player.GiveWeapon( "mp_weapon_toolgun" ) +} + +void function SboxRespawnPlayer( entity player, var damageInfo ) +{ + thread SboxRespawnPlayerThreaded( player ) +} + +void function SboxRespawnPlayerThreaded( entity player ) +{ + // todo: replace this with real respawn logic when that's ready + + wait 2.5 + SboxSpawnPlayer( player ) +}
\ No newline at end of file diff --git a/Northstar.Custom/scripts/vscripts/gamemodes/_gamemode_tt.gnut b/Northstar.Custom/scripts/vscripts/gamemodes/_gamemode_tt.gnut new file mode 100644 index 00000000..6a53ef87 --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/gamemodes/_gamemode_tt.gnut @@ -0,0 +1,71 @@ +global function GamemodeTT_Init + +struct { + entity lastPlayerDropped +} file + +void function GamemodeTT_Init() +{ + SetSpawnpointGamemodeOverride( TEAM_DEATHMATCH ) + Riff_ForceTitanAvailability( eTitanAvailability.Never ) + + AddCallback_GameStateEnter( eGameState.Playing, OnEnterPlaying ) + + AddCallback_OnPlayerKilled( OnPlayerKilled ) + AddDeathCallback( "npc_titan", OnTitanKilled ) +} + +void function OnEnterPlaying() +{ + thread DropRandomTitan() +} + +void function DropRandomTitan() +{ + array<entity> players = GetPlayerArray() + + if ( players.len() == 1 ) + file.lastPlayerDropped = null // don't wanna loop forever if only 1 player + + entity titanPlayer + do { + titanPlayer = players[ RandomInt( players.len() ) ] + } while ( titanPlayer == file.lastPlayerDropped ) + + DropTitanForPlayer( titanPlayer, 5.0 ) +} + +void function DropTitanForPlayer( entity player, float delay ) +{ + wait delay + + file.lastPlayerDropped = player + CreateTitanForPlayerAndHotdrop( player, GetTitanReplacementPoint( player, false ) ) +} + +void function AttemptToDropTitanForKill( entity victim, entity attacker, var damageInfo ) +{ + if ( !victim.IsTitan() ) + return + + if ( !attacker.IsPlayer() || victim == attacker ) + thread DropRandomTitan() + else + thread DropTitanForPlayer( attacker, 2.0 ) +} + +void function OnPlayerKilled( entity victim, entity attacker, var damageInfo ) +{ + if ( victim.IsTitan() ) + AttemptToDropTitanForKill( victim, attacker, damageInfo ) + else if ( attacker.IsTitan() ) + { + AddTeamScore( attacker.GetTeam(), 1 ) + } +} + +void function OnTitanKilled( entity victim, var damageInfo ) +{ + if ( IsPetTitan( victim ) ) + AttemptToDropTitanForKill( victim, DamageInfo_GetAttacker( damageInfo ), damageInfo ) +}
\ No newline at end of file diff --git a/Northstar.Custom/scripts/vscripts/gamemodes/_riff_instagib.gnut b/Northstar.Custom/scripts/vscripts/gamemodes/_riff_instagib.gnut new file mode 100644 index 00000000..b3868359 --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/gamemodes/_riff_instagib.gnut @@ -0,0 +1,65 @@ +global function RiffInstagib_Init + +struct { + table<entity, int> playerWeapons + array<string> instagibWeapons +} file + +void function RiffInstagib_Init() +{ + if ( GetCurrentPlaylistVarInt( "riff_instagib", 0 ) == 0 ) + return + + SetLoadoutGracePeriodEnabled( false ) + SetWeaponDropsEnabled( false ) + + file.instagibWeapons = [ + "mp_weapon_sniper", + "mp_weapon_wingman", + "mp_weapon_defender", + "mp_weapon_arena3", + "mp_weapon_wingman_n", + "mp_weapon_doubletake", + ] + file.instagibWeapons.randomize() + + AddCallback_OnPlayerRespawned( InstagibSetWeapons ) + AddCallback_OnPlayerKilled( InstagibCycleWeaponsForKill ) + AddCallback_OnClientDisconnected( InstagibCleanupClient ) +} + +void function InstagibSetWeapons( entity player ) +{ + if ( !( player in file.playerWeapons ) ) + file.playerWeapons[ player ] <- 0 + + player.SetMaxHealth( 1 ) + InstagibUpdateWeapons( player ) +} + +void function InstagibUpdateWeapons( entity player ) +{ + foreach( entity weapon in player.GetMainWeapons() ) + player.TakeWeaponNow( weapon.GetWeaponClassName() ) + + player.TakeWeaponNow( player.GetOffhandWeapon( OFFHAND_RIGHT ).GetWeaponClassName() ) + if ( !HasOffhandWeapon( player, "mp_weapon_grenade_sonar" ) ) + player.GiveOffhandWeapon( "mp_weapon_grenade_sonar", OFFHAND_RIGHT ) + + player.GiveWeapon( file.instagibWeapons[ file.playerWeapons[ player ] ] ) +} + +void function InstagibCycleWeaponsForKill( entity victim, entity attacker, var damageInfo ) +{ + if ( !victim.IsPlayer() || !attacker.IsPlayer() || victim == attacker ) + return + + file.playerWeapons[ attacker ] = ( file.playerWeapons[ attacker ] + 1 ) % file.instagibWeapons.len() + InstagibUpdateWeapons( attacker ) +} + +void function InstagibCleanupClient( entity player ) +{ + if ( player in file.playerWeapons ) + delete file.playerWeapons[ player ] +}
\ No newline at end of file diff --git a/Northstar.Custom/scripts/vscripts/gamemodes/cl_gamemode_arena.gnut b/Northstar.Custom/scripts/vscripts/gamemodes/cl_gamemode_arena.gnut new file mode 100644 index 00000000..a0e8618f --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/gamemodes/cl_gamemode_arena.gnut @@ -0,0 +1,35 @@ +global function ClGameModeArena_Init +global function ServerCallback_CreateMoneyParticles + +struct { + var moneyRui +} file + +void function ClGameModeArena_Init() +{ + AddCallback_OnClientScriptInit( CreateArenaUI ) +} + +void function CreateArenaUI( entity player ) +{ + var rui = CreateCockpitRui( $"ui/fd_score_splash.rpak", 500 ) + RuiTrackInt( rui, "pointValue", player, RUI_TRACK_SCRIPT_NETWORK_VAR_INT, GetNetworkedVariableIndex( "FD_money" ) ) + RuiTrackInt( rui, "pointStack", player, RUI_TRACK_SCRIPT_NETWORK_VAR_INT, GetNetworkedVariableIndex( "FD_money256" ) ) + file.moneyRui = rui +} + +void function ServerCallback_CreateMoneyParticles( int playerHandle, int amount ) +{ + // largely taken from cl_gamemode_fd + entity player = GetEntityFromEncodedEHandle( playerHandle ) + + vector randDir2D = < RandomFloatRange( -1, 1 ), 1, 0 > + randDir2D = Normalize( randDir2D ) + + var rui = RuiCreate( $"ui/at_score_popup.rpak", clGlobal.topoFullScreen, RUI_DRAW_HUD, 100 ) + RuiSetInt( rui, "scoreVal", amount ) + RuiSetGameTime( rui, "startTime", Time() ) + RuiSetFloat3( rui, "pos", player.EyePosition() ) + RuiSetFloat2( rui, "driftDir", randDir2D ) + RuiSetBool( rui, "showNormalPoints", false ) +}
\ No newline at end of file diff --git a/Northstar.Custom/scripts/vscripts/gamemodes/cl_gamemode_fastball.gnut b/Northstar.Custom/scripts/vscripts/gamemodes/cl_gamemode_fastball.gnut new file mode 100644 index 00000000..80dc548a --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/gamemodes/cl_gamemode_fastball.gnut @@ -0,0 +1,96 @@ +global function ClGamemodeFastball_Init +global function ServerCallback_FastballUpdatePanelRui +global function ServerCallback_FastballPanelHacked +global function ServerCallback_FastballRespawnPlayer + +struct { + var panelARui + var panelBRui + var panelCRui +} file + +void function ClGamemodeFastball_Init() +{ + ClGameState_RegisterGameStateAsset( $"ui/gamestate_info_lts.rpak" ) + + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_INTRO, "Music_Beacon_14_BTThrowThruFirstCrane", TEAM_MILITIA ) + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_INTRO, "Music_Beacon_14_BTThrowThruFirstCrane", TEAM_MILITIA ) + + AddCallback_OnClientScriptInit( FastballCreateRui ) +} + +void function FastballCreateRui( entity player ) +{ + file.panelARui = CreateCockpitRui( $"ui/cp_hardpoint_marker.rpak", 200 ) + file.panelBRui = CreateCockpitRui( $"ui/cp_hardpoint_marker.rpak", 200 ) + file.panelCRui = CreateCockpitRui( $"ui/cp_hardpoint_marker.rpak", 200 ) + +} + +void function ServerCallback_FastballUpdatePanelRui( int panelHandle, int id ) +{ + entity panel = GetEntityFromEncodedEHandle( panelHandle ) + var rui + if ( id == 0 ) + rui = file.panelARui + else if ( id == 1 ) + rui = file.panelBRui + else if ( id == 2 ) + rui = file.panelCRui + + RuiSetInt( rui, "hardpointId", id ) + RuiTrackFloat3( rui, "pos", panel, RUI_TRACK_OVERHEAD_FOLLOW ) + RuiSetInt( rui, "viewerTeam", GetLocalClientPlayer().GetTeam() ) + ////RuiTrackInt( rui, "cappingTeam", null, RUI_TRACK_SCRIPT_NETWORK_VAR_GLOBAL_INT, GetNetworkedVariableIndex( "panel" + id + "progress" ) ) + RuiTrackInt( rui, "hardpointTeamRelation", panel, RUI_TRACK_TEAM_RELATION_VIEWPLAYER ) + + RuiSetBool( rui, "isVisible", true ) +} + +void function ServerCallback_FastballPanelHacked( int panelHandle, int id, int capturingPlayerHandle ) +{ + ServerCallback_FastballUpdatePanelRui( panelHandle, id ) // may not be necessary, just wanna ensure this is always right + + entity panel = GetEntityFromEncodedEHandle( panelHandle ) + entity capturingPlayer = GetEntityFromEncodedEHandle( capturingPlayerHandle ) + + if ( capturingPlayer == GetLocalViewPlayer() ) + return + + string panelIdString + if ( id == 0 ) + panelIdString = "A" + if ( id == 1 ) + panelIdString = "B" + else if ( id == 2 ) + panelIdString = "C" + + AnnouncementData announcement = Announcement_Create( Localize( "#FASTBALL_PANEL_CAPTURED", capturingPlayer.GetPlayerName(), panelIdString ) ) + + if ( capturingPlayer.GetTeam() == GetLocalViewPlayer().GetTeam() ) + Announcement_SetTitleColor( announcement, < 0, 0, 1 > ) + else + Announcement_SetTitleColor( announcement, < 1, 0, 0 > ) + + Announcement_SetPurge( announcement, true ) + Announcement_SetPriority( announcement, 200 ) //Be higher priority than Titanfall ready indicator etc + Announcement_SetSoundAlias( announcement, SFX_HUD_ANNOUNCE_QUICK ) + Announcement_SetStyle( announcement, ANNOUNCEMENT_STYLE_QUICK ) + AnnouncementFromClass( GetLocalViewPlayer(), announcement ) +} + +void function ServerCallback_FastballRespawnPlayer() +{ + thread FastballRespawnPlayerEffects_Threaded() +} + +void function FastballRespawnPlayerEffects_Threaded() +{ + // sometimes this seems to get called before the player has respawned clientside, so we just wait until the client thinks they're alive + entity player = GetLocalViewPlayer() + + while ( !IsAlive( player ) ) + WaitFrame() + + StartParticleEffectOnEntity( player.GetCockpit(), GetParticleSystemIndex( $"P_pod_screen_lasers_OUT" ), FX_PATTACH_ABSORIGIN_FOLLOW, -1 ) +}
\ No newline at end of file diff --git a/Northstar.Custom/scripts/vscripts/gamemodes/cl_gamemode_gg.gnut b/Northstar.Custom/scripts/vscripts/gamemodes/cl_gamemode_gg.gnut new file mode 100644 index 00000000..de8a3449 --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/gamemodes/cl_gamemode_gg.gnut @@ -0,0 +1,26 @@ +global function ClGamemodeGG_Init + +void function ClGamemodeGG_Init() +{ + // add ffa gamestate asset + ClGameState_RegisterGameStateAsset( $"ui/gamestate_info_ffa.rpak" ) + + // add music for mode, this is copied directly from the ffa/fra music registered in cl_music.gnut + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_INTRO, "music_mp_freeagents_intro", TEAM_IMC ) + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_INTRO, "music_mp_freeagents_intro", TEAM_MILITIA ) + + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_WIN, "music_mp_freeagents_outro_win", TEAM_IMC ) + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_WIN, "music_mp_freeagents_outro_win", TEAM_MILITIA ) + + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_DRAW, "music_mp_freeagents_outro_lose", TEAM_IMC ) + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_DRAW, "music_mp_freeagents_outro_lose", TEAM_MILITIA ) + + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_LOSS, "music_mp_freeagents_outro_lose", TEAM_IMC ) + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_LOSS, "music_mp_freeagents_outro_lose", TEAM_MILITIA ) + + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_THREE_MINUTE, "music_mp_freeagents_almostdone", TEAM_IMC ) + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_THREE_MINUTE, "music_mp_freeagents_almostdone", TEAM_MILITIA ) + + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_LAST_MINUTE, "music_mp_freeagents_lastminute", TEAM_IMC ) + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_LAST_MINUTE, "music_mp_freeagents_lastminute", TEAM_MILITIA ) +}
\ No newline at end of file diff --git a/Northstar.Custom/scripts/vscripts/gamemodes/cl_gamemode_inf.gnut b/Northstar.Custom/scripts/vscripts/gamemodes/cl_gamemode_inf.gnut new file mode 100644 index 00000000..56763bd4 --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/gamemodes/cl_gamemode_inf.gnut @@ -0,0 +1,75 @@ +global function ClGamemodeInfection_Init +global function ServerCallback_YouAreInfected +global function ServerCallback_AnnounceFirstInfected +global function ServerCallback_AnnounceLastSurvivor + +void function ClGamemodeInfection_Init() +{ + //ClGameState_RegisterGameStateAsset( $"ui/gamestate_info_ffa.rpak" ) + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_INTRO, "music_beacon_8a_jumpingsuccess", TEAM_MILITIA ) + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_INTRO, "music_beacon_8a_jumpingsuccess", TEAM_IMC ) + RegisterLevelMusicForTeam( eMusicPieceID.GAMEMODE_1, "Music_Beacon_24_BTLob", TEAM_MILITIA ) + RegisterLevelMusicForTeam( eMusicPieceID.GAMEMODE_1, "Music_Beacon_24_BTLob", TEAM_IMC ) + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_LAST_MINUTE, "music_mp_titanwar_lastminute", TEAM_MILITIA ) + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_LAST_MINUTE, "music_mp_titanwar_lastminute", TEAM_IMC ) + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_WIN, "music_mp_freeagents_outro_lose", TEAM_MILITIA ) + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_WIN, "music_mp_freeagents_outro_lose", TEAM_IMC ) + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_DRAW, "music_mp_freeagents_outro_lose", TEAM_MILITIA ) + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_DRAW, "music_mp_freeagents_outro_lose", TEAM_IMC ) + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_LOSS, "music_mp_freeagents_outro_lose", TEAM_MILITIA ) + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_LOSS, "music_mp_freeagents_outro_lose", TEAM_IMC ) +} + +void function ServerCallback_YouAreInfected() +{ + // heavily based on mfd code + entity localPlayer = GetLocalViewPlayer() + + StartParticleEffectOnEntity( localPlayer.GetCockpit(), GetParticleSystemIndex( $"P_MFD" ), FX_PATTACH_ABSORIGIN_FOLLOW, -1 ) + EmitSoundOnEntity( localPlayer, "UI_InGame_MarkedForDeath_PlayerMarked" ) + HideEventNotification() + AnnouncementData announcement = Announcement_Create( "#INFECTION_YOU_ARE_INFECTED" ) + Announcement_SetSubText( announcement, "#INFECTION_KILL_SURVIVORS" ) + Announcement_SetTitleColor( announcement, <1,0,0> ) + Announcement_SetPurge( announcement, true ) + Announcement_SetPriority( announcement, 200 ) //Be higher priority than Titanfall ready indicator etc + Announcement_SetSoundAlias( announcement, SFX_HUD_ANNOUNCE_QUICK ) + Announcement_SetStyle( announcement, ANNOUNCEMENT_STYLE_QUICK ) + AnnouncementFromClass( localPlayer, announcement ) +} + +void function ServerCallback_AnnounceFirstInfected( int survivorEHandle ) +{ + entity player = GetEntityFromEncodedEHandle( survivorEHandle ) + + AnnouncementData announcement = Announcement_Create( Localize( "#INFECTION_FIRST_INFECTED", player.GetPlayerName() ) ) + //Announcement_SetSubText( announcement, "#INFECTION_KILL_LAST_SURVIVOR" ) + Announcement_SetTitleColor( announcement, <1,0,0> ) + Announcement_SetPurge( announcement, true ) + Announcement_SetPriority( announcement, 200 ) //Be higher priority than Titanfall ready indicator etc + Announcement_SetSoundAlias( announcement, SFX_HUD_ANNOUNCE_QUICK ) + Announcement_SetStyle( announcement, ANNOUNCEMENT_STYLE_QUICK ) + AnnouncementFromClass( GetLocalViewPlayer(), announcement ) +} + +void function ServerCallback_AnnounceLastSurvivor( int survivorEHandle ) +{ + entity player = GetEntityFromEncodedEHandle( survivorEHandle ) + + string announcementString = Localize( "#INFECTION_LAST_SURVIVOR", player.GetPlayerName() ) + string announcementSubString = "#INFECTION_KILL_LAST_SURVIVOR" + if ( player == GetLocalViewPlayer() ) + { + announcementString = "#INFECTION_YOU_ARE_LAST_SURVIVOR" + announcementSubString = "#INFECTION_SURVIVE_LAST_SURVIVOR" + } + + AnnouncementData announcement = Announcement_Create( announcementString ) + Announcement_SetSubText( announcement, announcementSubString ) + Announcement_SetTitleColor( announcement, <1,0,0> ) + Announcement_SetPurge( announcement, true ) + Announcement_SetPriority( announcement, 200 ) //Be higher priority than Titanfall ready indicator etc + Announcement_SetSoundAlias( announcement, SFX_HUD_ANNOUNCE_QUICK ) + Announcement_SetStyle( announcement, ANNOUNCEMENT_STYLE_QUICK ) + AnnouncementFromClass( GetLocalViewPlayer(), announcement ) +}
\ No newline at end of file diff --git a/Northstar.Custom/scripts/vscripts/gamemodes/cl_gamemode_kr.gnut b/Northstar.Custom/scripts/vscripts/gamemodes/cl_gamemode_kr.gnut new file mode 100644 index 00000000..269057c7 --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/gamemodes/cl_gamemode_kr.gnut @@ -0,0 +1,241 @@ +global function ClGamemodeKR_Init + +global function ShowTimeGainOnKill +global function ServerCallback_FlagSpawnIncoming +global function ServerCallback_NewKillRacer +global function ServerCallback_EndKillrace + +struct { + var currentTimeRui + var currentTimeAdditionRui + var flagRui + var flagIncomingRui + var killRacerRui + + bool isCurrentlyInRace = false + float currentTimeAmount + float currentTimeLastAdditionTime + float currentTimeAdditionCombined +} file + +void function ClGamemodeKR_Init() +{ + // add ffa gamestate asset + ClGameState_RegisterGameStateAsset( $"ui/gamestate_info_ffa.rpak" ) + + // add music for mode, this is copied directly from the ffa/fra music registered in cl_music.gnut + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_INTRO, "music_mp_freeagents_intro", TEAM_IMC ) + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_INTRO, "music_mp_freeagents_intro", TEAM_MILITIA ) + + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_WIN, "music_mp_freeagents_outro_win", TEAM_IMC ) + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_WIN, "music_mp_freeagents_outro_win", TEAM_MILITIA ) + + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_DRAW, "music_mp_freeagents_outro_lose", TEAM_IMC ) + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_DRAW, "music_mp_freeagents_outro_lose", TEAM_MILITIA ) + + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_LOSS, "music_mp_freeagents_outro_lose", TEAM_IMC ) + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_LOSS, "music_mp_freeagents_outro_lose", TEAM_MILITIA ) + + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_THREE_MINUTE, "music_mp_freeagents_almostdone", TEAM_IMC ) + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_THREE_MINUTE, "music_mp_freeagents_almostdone", TEAM_MILITIA ) + + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_LAST_MINUTE, "music_mp_freeagents_lastminute", TEAM_IMC ) + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_LAST_MINUTE, "music_mp_freeagents_lastminute", TEAM_MILITIA ) + + AddCallback_OnClientScriptInit( CreateKRUI ) + AddCreateCallback( "item_flag", OnFlagCreated ) + AddDestroyCallback( "item_flag", OnFlagDestroyed ) +} + +void function CreateKRUI( entity player ) +{ + file.currentTimeRui = CreateCockpitRui( $"ui/titan_protocol_text_center.rpak", 200 ) + RuiSetInt( file.currentTimeRui, "lineNum", 1 ) + RuiSetGameTime( file.currentTimeRui, "startTime", 0.0 ) + UpdateCurrentTimeAmount() + + file.flagRui = CreateCockpitRui( $"ui/speedball_flag_marker.rpak", 200 ) + RuiSetBool( file.flagRui, "playerIsCarrying", false ) + RuiSetBool( file.flagRui, "isCarried", false ) + + file.killRacerRui = CreateCockpitRui( $"ui/mfd_target_marker.rpak", 200 ) + RuiSetBool( file.killRacerRui, "isVisible", false ) + RuiSetImage( file.killRacerRui, "markedIcon", $"rui/hud/gametype_icons/mfd/mfd_enemy" ) + RuiSetBool( file.killRacerRui, "isMarked", true ) +} + +void function OnFlagCreated( entity flag ) +{ + if ( IsValid( file.flagIncomingRui ) ) + RuiDestroy( file.flagIncomingRui ) + + RuiSetBool( file.flagRui, "isVisible", true ) + RuiTrackFloat3( file.flagRui, "pos", flag, RUI_TRACK_OVERHEAD_FOLLOW ) +} + +void function OnFlagDestroyed( entity flag ) +{ + RuiSetBool( file.flagRui, "isVisible", false ) +} + +void function ShowTimeGainOnKill( entity player, float oldVal, float newVal, bool actuallyChanged ) +{ + if ( file.isCurrentlyInRace || player != GetLocalViewPlayer() || !actuallyChanged ) + return + + if ( newVal > oldVal ) // time increase: likely given on kill + { + float amount = newVal - oldVal + + // show a combined number on the addition rui if last addition was recent enough + float additionShowAmount = amount + file.currentTimeAdditionCombined += amount + if ( Time() - file.currentTimeLastAdditionTime < 1.25 ) + amount = file.currentTimeAdditionCombined + else + { + file.currentTimeAdditionRui = CreateCockpitRui( $"ui/titan_protocol_text_center.rpak", 200 ) + RuiSetInt( file.currentTimeAdditionRui, "lineNum", 2 ) + file.currentTimeAdditionCombined = amount + } + + RuiSetString( file.currentTimeAdditionRui, "displayString", "+" + amount + "s 00ms " ) // formatted so that it lines up with other rui + RuiSetGameTime( file.currentTimeAdditionRui, "startTime", Time() ) + RuiSetGameTime( file.currentTimeAdditionRui, "endTime", Time() + 1.5 ) + + file.currentTimeLastAdditionTime = Time() + + thread UpdateFullTimeAmountAfterAdditionDone( file.currentTimeLastAdditionTime ) + } + else // time decrease either a reset or + UpdateCurrentTimeAmount() +} + +void function UpdateFullTimeAmountAfterAdditionDone( float previousAdditionTime ) +{ + wait 1.25 + + if ( previousAdditionTime == file.currentTimeLastAdditionTime ) // if not, there's been another addition since this was last updated and we'll wait for that instead + UpdateCurrentTimeAmount() +} + +void function UpdateCurrentTimeAmount( float overrideTime = -1 ) +{ + if ( overrideTime == -1 ) + file.currentTimeAmount = GetLocalViewPlayer().GetPlayerNetTime( "killRaceTime" ) + else + file.currentTimeAmount = overrideTime + + string currentTimeString + int seconds = file.currentTimeAmount.tointeger() + + string secondsString = seconds.tostring() + if ( secondsString.len() < 2 ) // pad to 2 chars + secondsString = "0" + secondsString + currentTimeString += secondsString + "s " + + string msString = ( ( file.currentTimeAmount - file.currentTimeAmount.tointeger() ) * 100 ).tostring() + if ( msString.len() < 2 ) // pad to 2 chars + msString = "0" + msString + currentTimeString += msString.slice( 0, 2 ) + "ms " + + RuiSetString( file.currentTimeRui, "displayString", currentTimeString ) + RuiSetGameTime( file.currentTimeRui, "endTime", Time() + 99999.0 ) // arbitrarily large number so this doesn't disappear +} + +void function ServerCallback_FlagSpawnIncoming( float x, float y, float z , float spawnTime ) +{ + print( "flagspawn: < " + x + ", " + y + ", " + z + " > in " + ( spawnTime - Time() ) + " seconds" ) + + AnnouncementData announcement = Announcement_Create( Localize( "#KR_FLAG_INCOMING", spawnTime.tostring() ) ) + Announcement_SetSubText( announcement, "#KR_COLLECT_FLAG" ) + Announcement_SetTitleColor( announcement, < 0, 0, 1 > ) + Announcement_SetPurge( announcement, true ) + Announcement_SetPriority( announcement, 200 ) + Announcement_SetSoundAlias( announcement, SFX_HUD_ANNOUNCE_QUICK ) + Announcement_SetStyle( announcement, ANNOUNCEMENT_STYLE_QUICK ) + AnnouncementFromClass( GetLocalViewPlayer(), announcement ) + + RuiSetFloat3( file.flagRui, "pos", < x, y, z > ) + RuiSetBool( file.flagRui, "isVisible", true ) + + file.flagIncomingRui = RuiCreate( $"ui/titanfall_timer.rpak", clGlobal.topoFullScreen, RUI_DRAW_HUD, 0 ) + RuiTrackFloat3( file.flagIncomingRui, "playerPos", GetLocalViewPlayer(), RUI_TRACK_ABSORIGIN_FOLLOW ) + RuiSetFloat3( file.flagIncomingRui, "pos", < x, y, z > + < 0, 0, 48 > ) + RuiSetGameTime( file.flagIncomingRui, "impactTime", spawnTime ) +} + +void function ServerCallback_NewKillRacer( int playerHandle, float endTime ) +{ + entity player = GetEntityFromEncodedEHandle( playerHandle ) + + string announcementMessage = Localize( "#KR_NEW_RACER", player.GetPlayerName() ) + string announcementSubMessage + if ( player == GetLocalViewPlayer() ) + { + file.isCurrentlyInRace = true + thread LerpTimeDuringRace( endTime ) + + StartParticleEffectOnEntity( player.GetCockpit(), GetParticleSystemIndex( $"P_MFD" ), FX_PATTACH_ABSORIGIN_FOLLOW, -1 ) + EmitSoundOnEntity( player, "UI_InGame_MarkedForDeath_PlayerMarked" ) + HideEventNotification() + + announcementMessage = "#KR_YOU_ARE_NEW_RACER" + announcementSubMessage = "#KR_YOU_SET_NEW_RECORD" + } + else + { + // mark the player + RuiTrackFloat3( file.killRacerRui, "pos", player, RUI_TRACK_OVERHEAD_FOLLOW ) + RuiSetBool( file.killRacerRui, "isVisible", true ) + } + + AnnouncementData announcement = Announcement_Create( announcementMessage ) + Announcement_SetSubText( announcement, announcementSubMessage ) + Announcement_SetTitleColor( announcement, < 1, 0, 0 > ) + Announcement_SetPurge( announcement, true ) + Announcement_SetPriority( announcement, 200 ) + Announcement_SetSoundAlias( announcement, SFX_HUD_ANNOUNCE_QUICK ) + Announcement_SetStyle( announcement, ANNOUNCEMENT_STYLE_QUICK ) + AnnouncementFromClass( GetLocalViewPlayer(), announcement ) +} + +void function LerpTimeDuringRace( float endTime ) +{ + while ( Time() < endTime ) + { + // manually update this here so we can get more frequent updates than what we'd get with networked vars + UpdateCurrentTimeAmount( endTime - Time() ) + WaitFrame() + } + + UpdateCurrentTimeAmount( 0.0 ) + file.isCurrentlyInRace = false +} + +void function ServerCallback_EndKillrace( int playerHandle, int score ) +{ + entity player = GetEntityFromEncodedEHandle( playerHandle ) + + vector colour = < 0, 0, 1 > + string announcementMessage = Localize( "#KR_ENEMY_KILLRACE_OVER", player.GetPlayerName() ) + string announcementSubMessage + if ( player == GetLocalViewPlayer() ) + { + StartParticleEffectOnEntity( GetLocalViewPlayer().GetCockpit(), GetParticleSystemIndex( $"P_MFD_unmark" ), FX_PATTACH_ABSORIGIN_FOLLOW, -1 ) + colour = < 1, 0, 0 > + announcementMessage = "#KR_YOUR_KILLRACE_OVER" + announcementSubMessage = Localize( "#KR_YOUR_KILLRACE_SCORE", score ) + } + + AnnouncementData announcement = Announcement_Create( announcementMessage ) + Announcement_SetSubText( announcement, announcementSubMessage ) + Announcement_SetTitleColor( announcement, colour ) + Announcement_SetPurge( announcement, true ) + Announcement_SetPriority( announcement, 200 ) + Announcement_SetSoundAlias( announcement, SFX_HUD_ANNOUNCE_QUICK ) + Announcement_SetStyle( announcement, ANNOUNCEMENT_STYLE_QUICK ) + AnnouncementFromClass( GetLocalViewPlayer(), announcement ) + + RuiSetBool( file.killRacerRui, "isVisible", false ) +}
\ No newline at end of file diff --git a/Northstar.Custom/scripts/vscripts/gamemodes/cl_gamemode_tt.gnut b/Northstar.Custom/scripts/vscripts/gamemodes/cl_gamemode_tt.gnut new file mode 100644 index 00000000..b73ed958 --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/gamemodes/cl_gamemode_tt.gnut @@ -0,0 +1,26 @@ +global function ClGamemodeTT_Init + +void function ClGamemodeTT_Init() +{ + // register gamestate asset, this is default so not necessary but doing it anyway + ClGameState_RegisterGameStateAsset( $"ui/gamestate_info_ps.rpak" ) + + // add music for mode, this is copied directly from the attrition/tdm music registered in cl_music.gnut + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_INTRO, "music_mp_pilothunt_intro_flyin", TEAM_IMC ) + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_INTRO, "music_mp_pilothunt_intro_flyin", TEAM_MILITIA ) + + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_WIN, "music_mp_pilothunt_epilogue_win", TEAM_IMC ) + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_WIN, "music_mp_pilothunt_epilogue_win", TEAM_MILITIA ) + + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_DRAW, "music_mp_pilothunt_epilogue_win", TEAM_IMC ) + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_DRAW, "music_mp_pilothunt_epilogue_win", TEAM_MILITIA ) + + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_LOSS, "music_mp_pilothunt_epilogue_lose", TEAM_IMC ) + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_LOSS, "music_mp_pilothunt_epilogue_lose", TEAM_MILITIA ) + + RegisterLevelMusicForTeam( eMusicPieceID.GAMEMODE_1, "music_mp_pilothunt_almostdone", TEAM_IMC ) + RegisterLevelMusicForTeam( eMusicPieceID.GAMEMODE_1, "music_mp_pilothunt_almostdone", TEAM_MILITIA ) + + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_LAST_MINUTE, "music_mp_pilothunt_lastminute", TEAM_IMC ) + RegisterLevelMusicForTeam( eMusicPieceID.LEVEL_LAST_MINUTE, "music_mp_pilothunt_lastminute", TEAM_MILITIA ) +}
\ No newline at end of file diff --git a/Northstar.Custom/scripts/vscripts/gamemodes/sh_gamemode_arena.gnut b/Northstar.Custom/scripts/vscripts/gamemodes/sh_gamemode_arena.gnut new file mode 100644 index 00000000..b634f1d3 --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/gamemodes/sh_gamemode_arena.gnut @@ -0,0 +1,58 @@ +global function Sh_GamemodeArena_Init + +global const string GAMEMODE_ARENA = "arena" + +void function Sh_GamemodeArena_Init() +{ + // create custom gamemode + AddCallback_OnCustomGamemodesInit( CreateGamemodeArena ) + AddCallback_OnRegisteringCustomNetworkVars( ArenaRegisterNetworkVars ) +} + +void function CreateGamemodeArena() +{ + GameMode_Create( GAMEMODE_ARENA ) + GameMode_SetName( GAMEMODE_ARENA, "#GAMEMODE_arena" ) + GameMode_SetDesc( GAMEMODE_ARENA, "#PL_arena_desc" ) + GameMode_SetGameModeAnnouncement( GAMEMODE_ARENA, "gnrc_modeDesc" ) + GameMode_SetDefaultTimeLimits( GAMEMODE_ARENA, 5, 0.0 ) + GameMode_AddScoreboardColumnData( GAMEMODE_ARENA, "#SCOREBOARD_PILOT_KILLS", PGS_PILOT_KILLS, 2 ) + GameMode_SetColor( GAMEMODE_ARENA, [147, 204, 57, 255] ) + + #if SERVER + GameMode_AddServerInit( GAMEMODE_ARENA, GameModeArena_Init ) + GameMode_SetPilotSpawnpointsRatingFunc( GAMEMODE_ARENA, RateSpawnpoints_Generic ) + GameMode_SetTitanSpawnpointsRatingFunc( GAMEMODE_ARENA, RateSpawnpoints_Generic ) + #elseif CLIENT + GameMode_AddClientInit( GAMEMODE_ARENA, ClGameModeArena_Init ) + #endif + #if !UI + GameMode_SetScoreCompareFunc( GAMEMODE_ARENA, CompareAssaultScore ) + #endif +} + +void function ArenaRegisterNetworkVars() +{ + if ( GAMETYPE != GAMEMODE_ARENA ) + return + + // boost store stuff + Remote_RegisterFunction( "ServerCallback_OpenBoostStore" ) + Remote_RegisterFunction( "ServerCallback_UpdateMoney" ) + Remote_RegisterFunction( "ServerCallback_UpdateTeamReserve" ) + Remote_RegisterFunction( "ServerCallback_UpdatePlayerHasBattery" ) + Remote_RegisterFunction( "ServerCallback_UpdateAmpedWeaponState" ) + Remote_RegisterFunction( "ServerCallback_BoostStoreTitanHint" ) + Remote_RegisterFunction( "ServerCallback_UpdateTurretCount" ) + + RegisterNetworkedVariable( "boostStoreOpen", SNDC_GLOBAL, SNVT_BOOL, false ) + RegisterNetworkedVariable( "FD_money", SNDC_PLAYER_GLOBAL, SNVT_UNSIGNED_INT, 0 ) + RegisterNetworkedVariable( "FD_money256", SNDC_PLAYER_GLOBAL, SNVT_UNSIGNED_INT, 0 ) + + // these are required to prevent crashes in fd code that's called from menu_boost_store + RegisterNetworkedVariable( "numSuperRodeoGrenades", SNDC_PLAYER_GLOBAL, SNVT_INT, 0 ) + RegisterNetworkedVariable( "FD_waveActive", SNDC_GLOBAL, SNVT_BOOL, false ) + + // arena-exclusive stuff + Remote_RegisterFunction( "ServerCallback_CreateMoneyParticles" ) +}
\ No newline at end of file diff --git a/Northstar.Custom/scripts/vscripts/gamemodes/sh_gamemode_bomb.gnut b/Northstar.Custom/scripts/vscripts/gamemodes/sh_gamemode_bomb.gnut new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/gamemodes/sh_gamemode_bomb.gnut diff --git a/Northstar.Custom/scripts/vscripts/gamemodes/sh_gamemode_fastball.gnut b/Northstar.Custom/scripts/vscripts/gamemodes/sh_gamemode_fastball.gnut new file mode 100644 index 00000000..734e24ce --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/gamemodes/sh_gamemode_fastball.gnut @@ -0,0 +1,45 @@ +global function Sh_GamemodeFastball_Init + +global const string GAMEMODE_FASTBALL = "fastball" + +void function Sh_GamemodeFastball_Init() +{ + // create custom gamemode + AddCallback_OnCustomGamemodesInit( CreateGamemodeFastball ) + AddCallback_OnRegisteringCustomNetworkVars( FastballRegisterNetworkVars ) +} + +void function CreateGamemodeFastball() +{ + GameMode_Create( GAMEMODE_FASTBALL ) + GameMode_SetName( GAMEMODE_FASTBALL, "#GAMEMODE_FASTBALL" ) + GameMode_SetDesc( GAMEMODE_FASTBALL, "#PL_fastball_desc" ) + GameMode_SetGameModeAnnouncement( GAMEMODE_FASTBALL, "grnc_modeDesc" ) + GameMode_SetDefaultTimeLimits( GAMEMODE_FASTBALL, 1, 0 ) + GameMode_SetDefaultScoreLimits( GAMEMODE_FASTBALL, 5, 0 ) + GameMode_AddScoreboardColumnData( GAMEMODE_FASTBALL, "#SCOREBOARD_FASTBALL_HACKS", PGS_ASSAULT_SCORE, 2 ) + GameMode_AddScoreboardColumnData( GAMEMODE_FASTBALL, "#SCOREBOARD_PILOT_KILLS", PGS_PILOT_KILLS, 2 ) + GameMode_AddScoreboardColumnData( GAMEMODE_FASTBALL, "#SCOREBOARD_DEATHS", PGS_DEATHS, 2 ) + GameMode_SetColor( GAMEMODE_FASTBALL, [147, 204, 57, 255] ) + + #if SERVER + GameMode_AddServerInit( GAMEMODE_FASTBALL, GamemodeFastball_Init ) + GameMode_SetPilotSpawnpointsRatingFunc( GAMEMODE_FASTBALL, RateSpawnpoints_Generic ) + GameMode_SetTitanSpawnpointsRatingFunc( GAMEMODE_FASTBALL, RateSpawnpoints_Generic ) + #elseif CLIENT + GameMode_AddClientInit( GAMEMODE_FASTBALL, ClGamemodeFastball_Init ) + #endif + #if !UI + GameMode_SetScoreCompareFunc( GAMEMODE_FASTBALL, CompareAssaultScore ) + #endif +} + +void function FastballRegisterNetworkVars() +{ + if ( GAMETYPE != GAMEMODE_FASTBALL ) + return + + Remote_RegisterFunction( "ServerCallback_FastballUpdatePanelRui" ) + Remote_RegisterFunction( "ServerCallback_FastballPanelHacked" ) + Remote_RegisterFunction( "ServerCallback_FastballRespawnPlayer" ) +}
\ No newline at end of file diff --git a/Northstar.Custom/scripts/vscripts/gamemodes/sh_gamemode_fw_custom.nut b/Northstar.Custom/scripts/vscripts/gamemodes/sh_gamemode_fw_custom.nut new file mode 100644 index 00000000..8c6e3f63 --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/gamemodes/sh_gamemode_fw_custom.nut @@ -0,0 +1,73 @@ +// this script only exists to create the fw gamemode +// all client/shared gamelogic is still done in the gamemode's respective client and shared scripts +// these scripts are shipped with the game's official build so no need to recreate these +// their paths are gamemodes/cl_gamemode_fw.nut and gamemodes/sh_gamemode_fw.nut, respectively + +global function SHCreateGamemodeFW_Init + +void function SHCreateGamemodeFW_Init() +{ + AddCallback_OnCustomGamemodesInit( CreateGamemodeFW ) + AddCallback_OnRegisteringCustomNetworkVars( FWOnRegisteringNetworkVars ) +} + +void function CreateGamemodeFW() +{ + //entity e = CreateEntity("npc_turret_mega"); SetAISettingsWrapper( e, "npc_turret_mega_fortwar" ); e.SetOrigin(GetPlayerArray()[0].GetOrigin()); SetTeam(e,3); DispatchSpawn(e) + + // we have to manually add the client/shared scripts to scripts.rson atm so we need to prevent compile errors when they aren't included + // best way to do this is to just ignore this whole block for now and wait until we don't have to add them manually + + GameMode_Create( FORT_WAR ) + GameMode_SetName( FORT_WAR, "#GAMEMODE_fw" ) + GameMode_SetDesc( FORT_WAR, "#PL_fw_desc" ) + GameMode_SetGameModeAnnouncement( FORT_WAR, "ffa_modeDesc" ) // fw lines are unfortunately not registered to faction dialogue + + #if SERVER + //GameMode_AddServerInit( FORT_WAR, GamemodeFW_Init ) // doesn't exist yet lol + #elseif CLIENT + GameMode_AddClientInit( FORT_WAR, CLGamemodeFW_Init ) + #endif + #if !UI + GameMode_AddSharedInit( FORT_WAR, SHGamemodeFW_Init ) + #endif +} + +void function FWOnRegisteringNetworkVars() +{ + if ( GAMETYPE != FORT_WAR ) + return + + RegisterNetworkedVariable( "turretSite1", SNDC_GLOBAL, SNVT_ENTITY ) + RegisterNetworkedVariable( "turretSite2", SNDC_GLOBAL, SNVT_ENTITY ) + RegisterNetworkedVariable( "turretSite3", SNDC_GLOBAL, SNVT_ENTITY ) + RegisterNetworkedVariable( "turretSite4", SNDC_GLOBAL, SNVT_ENTITY ) + RegisterNetworkedVariable( "turretSite5", SNDC_GLOBAL, SNVT_ENTITY ) + RegisterNetworkedVariable( "turretSite6", SNDC_GLOBAL, SNVT_ENTITY ) + RegisterNetworkedVariable( "turretSite7", SNDC_GLOBAL, SNVT_ENTITY ) + RegisterNetworkedVariable( "turretSite8", SNDC_GLOBAL, SNVT_ENTITY ) + RegisterNetworkedVariable( "turretSite9", SNDC_GLOBAL, SNVT_ENTITY ) + + RegisterNetworkedVariable( "turretStateFlags1", SNDC_GLOBAL, SNVT_INT ) + RegisterNetworkedVariable( "turretStateFlags2", SNDC_GLOBAL, SNVT_INT ) + RegisterNetworkedVariable( "turretStateFlags3", SNDC_GLOBAL, SNVT_INT ) + RegisterNetworkedVariable( "turretStateFlags4", SNDC_GLOBAL, SNVT_INT ) + RegisterNetworkedVariable( "turretStateFlags5", SNDC_GLOBAL, SNVT_INT ) + RegisterNetworkedVariable( "turretStateFlags6", SNDC_GLOBAL, SNVT_INT ) + RegisterNetworkedVariable( "turretStateFlags7", SNDC_GLOBAL, SNVT_INT ) + RegisterNetworkedVariable( "turretStateFlags8", SNDC_GLOBAL, SNVT_INT ) + RegisterNetworkedVariable( "turretStateFlags9", SNDC_GLOBAL, SNVT_INT ) + + RegisterNetworkedVariable( "imcTowerThreatLevel", SNDC_GLOBAL, SNVT_INT ) + RegisterNetworkedVariable( "milTowerThreatLevel", SNDC_GLOBAL, SNVT_INT ) + RegisterNetworkedVariable( "fwCampAlertA", SNDC_GLOBAL, SNVT_INT ) + RegisterNetworkedVariable( "fwCampStressA", SNDC_GLOBAL, SNVT_INT ) + RegisterNetworkedVariable( "fwCampAlertB", SNDC_GLOBAL, SNVT_INT ) + RegisterNetworkedVariable( "fwCampStressB", SNDC_GLOBAL, SNVT_INT ) + RegisterNetworkedVariable( "fwCampAlertC", SNDC_GLOBAL, SNVT_INT ) + RegisterNetworkedVariable( "fwCampStressC", SNDC_GLOBAL, SNVT_INT ) + + #if CLIENT + CLFortWar_RegisterNetworkFunctions() + #endif +}
\ No newline at end of file diff --git a/Northstar.Custom/scripts/vscripts/gamemodes/sh_gamemode_gg.gnut b/Northstar.Custom/scripts/vscripts/gamemodes/sh_gamemode_gg.gnut new file mode 100644 index 00000000..4ea9ac20 --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/gamemodes/sh_gamemode_gg.gnut @@ -0,0 +1,164 @@ +global function Sh_GamemodeGG_Init +global function GetGunGameWeapons + +global const string GAMEMODE_GG = "gg" + +global struct GunGameWeapon +{ + string weapon + array<string> mods + int offhandSlot = -1 +} + +struct { + array<GunGameWeapon> weapons +} file + +void function Sh_GamemodeGG_Init() +{ + // create custom gamemode + AddCallback_OnCustomGamemodesInit( CreateGamemodeGG ) +} + +void function CreateGamemodeGG() +{ + GameMode_Create( GAMEMODE_GG ) + GameMode_SetName( GAMEMODE_GG, "#GAMEMODE_GG" ) + GameMode_SetDesc( GAMEMODE_GG, "#PL_gg_desc" ) + GameMode_SetGameModeAnnouncement( GAMEMODE_GG, "ffa_modeDesc" ) + GameMode_SetDefaultTimeLimits( GAMEMODE_GG, 10, 0.0 ) + GameMode_AddScoreboardColumnData( GAMEMODE_GG, "#SCOREBOARD_SCORE", PGS_ASSAULT_SCORE, 2 ) + GameMode_AddScoreboardColumnData( GAMEMODE_GG, "#SCOREBOARD_PILOT_KILLS", PGS_PILOT_KILLS, 2 ) + GameMode_SetColor( GAMEMODE_GG, [147, 204, 57, 255] ) + + + // setup guns + + // smgs + // car + GunGameWeapon ggCar = { weapon = "mp_weapon_car", mods = [ "pas_run_and_gun" ], ... } + file.weapons.append( ggCar ) + + // alternator + GunGameWeapon ggAlternator = { weapon = "mp_weapon_alternator_smg", mods = [ "pas_run_and_gun" ], ... } + file.weapons.append( ggAlternator ) + + // volt + GunGameWeapon ggVolt = { weapon = "mp_weapon_hemlok_smg", ... } + file.weapons.append( ggVolt ) + + + // rifles + // hemlok + GunGameWeapon ggHemlok = { weapon = "mp_weapon_hemlok", mods = [ ], ... } + file.weapons.append( ggHemlok ) + + // flatline + GunGameWeapon ggFlatline = { weapon = "mp_weapon_vinson", mods = [ "hcog" ], ... } + file.weapons.append( ggFlatline ) + + // r201 + GunGameWeapon ggR101 = { weapon = "mp_weapon_rspn101", ... } + file.weapons.append( ggR101 ) + + + // lmgs + // devotion + GunGameWeapon ggDevotion = { weapon = "mp_weapon_esaw", ... } + file.weapons.append( ggDevotion ) + + // l-star + GunGameWeapon ggLstar = { weapon = "mp_weapon_lstar", mods = [ "pas_run_and_gun" ], ... } + if ( RandomInt( 100 ) <= 5 ) + ggLstar.mods.append( "rcee" ) // easter egg mod that changes the screen of the lstar + + file.weapons.append( ggLstar ) + + + // shotguns + // eva-8 + GunGameWeapon ggEva = { weapon = "mp_weapon_shotgun", ... } + file.weapons.append( ggEva ) + + // mastiff + GunGameWeapon ggMastiff = { weapon = "mp_weapon_mastiff", ... } + file.weapons.append( ggMastiff ) + + + // grenadiers + // softball + GunGameWeapon ggSoftball = { weapon = "mp_weapon_softball", ... } + file.weapons.append( ggSoftball ) + + // epg + GunGameWeapon ggEpg = { weapon = "mp_weapon_epg", mods = [ "jump_kit" ], ... } + file.weapons.append( ggEpg ) + + + // primary pistols + // mozambique + GunGameWeapon ggMozam = { weapon = "mp_weapon_shotgun_pistol", mods = [ "pas_run_and_gun" ], ... } + file.weapons.append( ggMozam ) + + // wingman elite + GunGameWeapon ggWme = { weapon = "mp_weapon_wingman_n", mods = [ "pas_run_and_gun", "ricochet" ], ... } + file.weapons.append( ggWme ) + + + // snipers + // double take + GunGameWeapon ggTaketake = { weapon = "mp_weapon_doubletake", ... } + file.weapons.append( ggTaketake ) + + // kraber + GunGameWeapon ggKraber = { weapon = "mp_weapon_sniper", mods = [ "pas_fast_ads", "ricochet" ], ... } + file.weapons.append( ggKraber ) + + + // secondary pistols + // re-45 + GunGameWeapon ggRe45 = { weapon = "mp_weapon_autopistol", mods = [ "pas_run_and_gun", "temp_sight" ], ... } + file.weapons.append( ggRe45 ) + + // p2016 + GunGameWeapon ggP2016 = { weapon = "mp_weapon_semipistol", mods = [ "pas_run_and_gun" ], ... } + file.weapons.append( ggP2016 ) + + // wingman + GunGameWeapon ggWingman = { weapon = "mp_weapon_wingman", mods = [ "pas_run_and_gun" ], ... } + file.weapons.append( ggWingman ) + + + // final/special weapons + // charge rifle + GunGameWeapon ggChargeRifle = { weapon = "mp_weapon_defender", ... } + file.weapons.append( ggChargeRifle ) + + // pulse blade + GunGameWeapon ggPulseBlade = { weapon = "mp_weapon_grenade_sonar", mods = [ "pas_power_cell", "amped_tacticals" ], offhandSlot = 0 } + file.weapons.append( ggPulseBlade ) + + + // set this to the number of guns + GameMode_SetDefaultScoreLimits( GAMEMODE_GG, file.weapons.len(), 0 ) + + #if SERVER + GameMode_AddServerInit( GAMEMODE_GG, GamemodeGG_Init ) + GameMode_AddServerInit( GAMEMODE_GG, GamemodeFFAShared_Init ) + GameMode_SetPilotSpawnpointsRatingFunc( GAMEMODE_GG, RateSpawnpoints_Generic ) + GameMode_SetTitanSpawnpointsRatingFunc( GAMEMODE_GG, RateSpawnpoints_Generic ) + #elseif CLIENT + GameMode_AddClientInit( GAMEMODE_GG, ClGamemodeGG_Init ) + GameMode_AddClientInit( GAMEMODE_GG, GamemodeFFAShared_Init ) + GameMode_AddClientInit( GAMEMODE_GG, ClGamemodeFFA_Init ) + #endif + #if !UI + GameMode_SetScoreCompareFunc( GAMEMODE_GG, CompareAssaultScore ) + GameMode_AddSharedInit( GAMEMODE_GG, GamemodeFFA_Dialogue_Init ) + #endif +} + +array<GunGameWeapon> function GetGunGameWeapons() +{ + return file.weapons +}
\ No newline at end of file diff --git a/Northstar.Custom/scripts/vscripts/gamemodes/sh_gamemode_inf.gnut b/Northstar.Custom/scripts/vscripts/gamemodes/sh_gamemode_inf.gnut new file mode 100644 index 00000000..b73dc194 --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/gamemodes/sh_gamemode_inf.gnut @@ -0,0 +1,56 @@ +global function Sh_GamemodeInfection_Init + +global const string GAMEMODE_INFECTION = "inf" +global const int INFECTION_TEAM_SURVIVOR = TEAM_MILITIA +global const int INFECTION_TEAM_INFECTED = TEAM_IMC + +void function Sh_GamemodeInfection_Init() +{ + // create custom gamemode + AddCallback_OnCustomGamemodesInit( CreateGamemodeInfection ) + AddCallback_OnRegisteringCustomNetworkVars( InfectionRegisterNetworkVars ) +} + +void function CreateGamemodeInfection() +{ + GameMode_Create( GAMEMODE_INFECTION ) + GameMode_SetName( GAMEMODE_INFECTION, "#GAMEMODE_inf" ) + GameMode_SetDesc( GAMEMODE_INFECTION, "#PL_inf_desc" ) + GameMode_SetGameModeAnnouncement( GAMEMODE_INFECTION, "ffa_modeDesc" ) + GameMode_SetDefaultTimeLimits( GAMEMODE_INFECTION, 5, 0.0 ) + GameMode_AddScoreboardColumnData( GAMEMODE_INFECTION, "#SCOREBOARD_KILLS", PGS_ASSAULT_SCORE, 2 ) + GameMode_SetColor( GAMEMODE_INFECTION, [147, 204, 57, 255] ) + + #if SERVER + GameMode_AddServerInit( GAMEMODE_INFECTION, GamemodeInfection_Init ) + GameMode_SetPilotSpawnpointsRatingFunc( GAMEMODE_INFECTION, RateSpawnpoints_Generic ) + GameMode_SetTitanSpawnpointsRatingFunc( GAMEMODE_INFECTION, RateSpawnpoints_Generic ) + #elseif CLIENT + GameMode_AddClientInit( GAMEMODE_INFECTION, ClGamemodeInfection_Init ) + #endif + #if !UI + GameMode_SetScoreCompareFunc( GAMEMODE_INFECTION, CompareAssaultScoreAndInfection ) + #endif +} + +void function InfectionRegisterNetworkVars() +{ + if ( GAMETYPE != GAMEMODE_INFECTION ) + return + + Remote_RegisterFunction( "ServerCallback_YouAreInfected" ) + Remote_RegisterFunction( "ServerCallback_AnnounceFirstInfected" ) + Remote_RegisterFunction( "ServerCallback_AnnounceLastSurvivor" ) +} + +int function CompareAssaultScoreAndInfection( entity a, entity b ) +{ + // survivors should be on top, then sort by assault score + + if ( a.GetTeam() == INFECTION_TEAM_INFECTED && b.GetTeam() == INFECTION_TEAM_SURVIVOR ) + return 1 + else if ( a.GetTeam() == INFECTION_TEAM_SURVIVOR && b.GetTeam() == INFECTION_TEAM_INFECTED ) + return -1 + + return CompareAssaultScore( a, b ) +}
\ No newline at end of file diff --git a/Northstar.Custom/scripts/vscripts/gamemodes/sh_gamemode_kr.gnut b/Northstar.Custom/scripts/vscripts/gamemodes/sh_gamemode_kr.gnut new file mode 100644 index 00000000..2a320077 --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/gamemodes/sh_gamemode_kr.gnut @@ -0,0 +1,53 @@ +global function Sh_GamemodeKR_Init + +global const string GAMEMODE_KR = "kr" + +void function Sh_GamemodeKR_Init() +{ + // create custom gamemode + AddCallback_OnCustomGamemodesInit( CreateGamemodeKR ) + AddCallback_OnRegisteringCustomNetworkVars( KRRegisterNetworkVars ) +} + +void function CreateGamemodeKR() +{ + GameMode_Create( GAMEMODE_KR ) + GameMode_SetName( GAMEMODE_KR, "#GAMEMODE_kr" ) + GameMode_SetDesc( GAMEMODE_KR, "#PL_kr_desc" ) + GameMode_SetGameModeAnnouncement( GAMEMODE_KR, "ffa_modeDesc" ) + GameMode_SetDefaultTimeLimits( GAMEMODE_KR, 10, 0.0 ) + GameMode_AddScoreboardColumnData( GAMEMODE_KR, "#SCOREBOARD_KR_RECORD", PGS_ASSAULT_SCORE, 2 ) + GameMode_AddScoreboardColumnData( GAMEMODE_KR, "#SCOREBOARD_PILOT_KILLS", PGS_PILOT_KILLS, 2 ) + GameMode_SetColor( GAMEMODE_KR, [147, 204, 57, 255] ) + + #if SERVER + GameMode_AddServerInit( GAMEMODE_KR, GamemodeKR_Init ) + GameMode_AddServerInit( GAMEMODE_KR, GamemodeFFAShared_Init ) + GameMode_SetPilotSpawnpointsRatingFunc( GAMEMODE_KR, RateSpawnpoints_Generic ) + GameMode_SetTitanSpawnpointsRatingFunc( GAMEMODE_KR, RateSpawnpoints_Generic ) + #elseif CLIENT + GameMode_AddClientInit( GAMEMODE_KR, ClGamemodeKR_Init ) + GameMode_AddClientInit( GAMEMODE_KR, GamemodeFFAShared_Init ) + GameMode_AddClientInit( GAMEMODE_KR, ClGamemodeFFA_Init ) + #endif + #if !UI + GameMode_SetScoreCompareFunc( GAMEMODE_KR, CompareAssaultScore ) + GameMode_AddSharedInit( GAMEMODE_KR, GamemodeFFA_Dialogue_Init ) + #endif +} + +void function KRRegisterNetworkVars() +{ + if ( GAMETYPE != GAMEMODE_KR ) + return + + Remote_RegisterFunction( "ServerCallback_FlagSpawnIncoming" ) + Remote_RegisterFunction( "ServerCallback_NewKillRacer" ) + Remote_RegisterFunction( "ServerCallback_EndKillrace" ) + + RegisterNetworkedVariable( "killRaceTime", SNDC_PLAYER_EXCLUSIVE, SNVT_TIME, 0.0 ) + + #if CLIENT + RegisterNetworkedVariableChangeCallback_time( "killRaceTime", ShowTimeGainOnKill ) + #endif +}
\ No newline at end of file diff --git a/Northstar.Custom/scripts/vscripts/gamemodes/sh_gamemode_sbox.gnut b/Northstar.Custom/scripts/vscripts/gamemodes/sh_gamemode_sbox.gnut new file mode 100644 index 00000000..893d9410 --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/gamemodes/sh_gamemode_sbox.gnut @@ -0,0 +1,20 @@ +global function Sh_GamemodeSbox_Init + +global const string GAMEMODE_SBOX = "sbox" + +void function Sh_GamemodeSbox_Init() +{ + // create custom gametype + AddCallback_OnCustomGamemodesInit( CreateGamemodeSbox ) +} + +void function CreateGamemodeSbox() +{ + GameMode_Create( GAMEMODE_SBOX ) + GameMode_SetName( GAMEMODE_SBOX, "#PL_sbox" ) + GameMode_SetDesc( GAMEMODE_SBOX, "#PL_sbox_desc" ) + + #if SERVER + GameMode_AddServerInit( GAMEMODE_SBOX, GamemodeSbox_Init ) + #endif +}
\ No newline at end of file diff --git a/Northstar.Custom/scripts/vscripts/gamemodes/sh_gamemode_tt.gnut b/Northstar.Custom/scripts/vscripts/gamemodes/sh_gamemode_tt.gnut new file mode 100644 index 00000000..9e879843 --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/gamemodes/sh_gamemode_tt.gnut @@ -0,0 +1,34 @@ +global function Sh_GamemodeTT_Init + +global const string GAMEMODE_TT = "tt" + +void function Sh_GamemodeTT_Init() +{ + // create custom gamemode + AddCallback_OnCustomGamemodesInit( CreateGamemodeTT ) +} + +void function CreateGamemodeTT() +{ + GameMode_Create( GAMEMODE_TT ) + GameMode_SetName( GAMEMODE_TT, "#GAMEMODE_TT" ) + GameMode_SetDesc( GAMEMODE_TT, "#PL_tt_desc" ) + GameMode_SetGameModeAnnouncement( GAMEMODE_TT, "gnrc_modeDesc" ) + GameMode_SetDefaultScoreLimits( GAMEMODE_TT, 20, 0 ) + GameMode_SetDefaultTimeLimits( GAMEMODE_TT, 15, 0.0 ) + GameMode_AddScoreboardColumnData( GAMEMODE_TT, "#SCOREBOARD_SCORE", PGS_ASSAULT_SCORE, 2 ) + GameMode_AddScoreboardColumnData( GAMEMODE_TT, "#SCOREBOARD_TITAN_KILLS", PGS_TITAN_KILLS, 1 ) + GameMode_AddScoreboardColumnData( GAMEMODE_TT, "#SCOREBOARD_PILOT_KILLS", PGS_PILOT_KILLS, 2 ) + GameMode_SetColor( GAMEMODE_TT, [200, 40, 40, 255] ) + + #if SERVER + GameMode_AddServerInit( GAMEMODE_TT, GamemodeTT_Init ) + GameMode_SetPilotSpawnpointsRatingFunc( GAMEMODE_TT, RateSpawnpoints_Generic ) + GameMode_SetTitanSpawnpointsRatingFunc( GAMEMODE_TT, RateSpawnpoints_Generic ) + #elseif CLIENT + GameMode_AddClientInit( GAMEMODE_TT, ClGamemodeTT_Init ) + #endif + #if !UI + GameMode_SetScoreCompareFunc( GAMEMODE_TT, CompareAssaultScore ) + #endif +}
\ No newline at end of file diff --git a/Northstar.Custom/scripts/vscripts/gamemodes/sh_riff_floor_is_lava.nut b/Northstar.Custom/scripts/vscripts/gamemodes/sh_riff_floor_is_lava.nut new file mode 100644 index 00000000..3a8ac8e7 --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/gamemodes/sh_riff_floor_is_lava.nut @@ -0,0 +1,262 @@ +untyped + +global function RiffFloorIsLavaShared_Init + +global function GetFogHeight +global function GetLethalFogTopTitan +global function GetLethalFogTop +global function GetLethalFogBottom +global function GetVisibleFogTop +global function GetVisibleFogBottom +global function GetMaxTitanSpawnFogHeight + +global function IsEntInSafeVolume +global function IsEntInLethalVolume + +struct +{ + float fogDepth = 64.0 + float maxTitanSpawnFogDepth = 170.0 + array lethalTitanVolumes + array lethalPilotVolumes + array safePilotVolumes + bool volumesDebug = false + table< string, float > lethalFogHeights +} file + +function RiffFloorIsLavaShared_Init() +{ + switch ( GetMapName() ) + { + case "mp_lagoon": + AddLethalTitanVolume( Vector( -45.656845, 3555.449463, 40.422455 ), Vector( 1209.944092, 5599.152832, 234.813217 ) ) + AddLethalTitanVolume( Vector( -5232.395020, 205.406250, 0.031250 ), Vector( -777.285400, 4075.119385, 300.634771 ) ) + AddLethalTitanVolume( Vector( -4686.448730, 4190.655273, 20.642021 ), Vector( -41.171387, 9072.019043, 200.697632 ) ) + AddLethalTitanVolume( Vector( -7586.861328, 4072.843994, 0.031254 ), Vector( -7012.854004, 4614.723145, 302.714966 ) ) + break + + case "mp_nexus": + AddLethalTitanVolume( Vector( 1567.173523, -27.374023, 209.422455 ), Vector( 2516.944092, 2585.152832, 500.813217 ) ) + AddLethalTitanVolume( Vector( -2825.766113, 5056.203125, 243.706253 ), Vector( -2255.893555, 5688.334961, 400.251160 ) ) + AddLethalTitanVolume( Vector( -5717.068359, -349.599976, 189.669785 ), Vector( -4960.125000, 758.196350, 400.268097 ) ) + AddLethalTitanVolume( Vector( -3292.942139, 1713.916626, 233.749817 ), Vector( -2322.137695, 3091.497070, 477.462799 ) ) + AddLethalTitanVolume( Vector( -878.712769, -5878.528809, 71.145332 ), Vector( 338.741943, -5014.183594, 443.146179 ) ) + AddLethalTitanVolume( Vector( -6930.957031, -1277.388550, 107.619537 ), Vector( -6574.779297, -779.338013, 685.485901 ) ) + break + + case "mp_outpost_207": + AddSafePilotVolume( Vector( 2359.524658, -631.065918, -256.714142 ), Vector( 2623.051270, -182.453323, -220.125641 ) ) + + AddLethalTitanVolume( Vector( -100.349350, 2218.763916, -330.968750 ), Vector( 2561.511230, 4030.028320, -133.065369 ) ) + AddLethalTitanVolume( Vector( -452.031647, 282.244629, -255.968750 ), Vector( 2241.971069, 1594.146851, -100.212967 ) ) + break + + case "mp_training_ground": + AddSafePilotVolume( Vector( -2618.053223, -3435.505615, 40.215054 ), Vector( -2309.167236, -3321.788330, 146.218491 ) ) + AddSafePilotVolume( Vector( -3187.767090, -2886.333496, 45.746925 ), Vector( -2865.753174, -2681.679443, 109.089279 ) ) + AddSafePilotVolume( Vector( -3717.815674, -2350.831543, 47.694588 ), Vector( -3431.980957, -2145.194092, 120.640717 ) ) + + AddLethalTitanVolume( Vector( -3439.702179, -2227.359741, -8.036909 ), Vector( 2185.765076, 2384.459412, 225.199013 ) ) + AddLethalTitanVolume( Vector( -3200.747681, -4456.148926, 0.0 ), Vector( -1261.621826, -3000.667480, 160.689011 ) ) + AddLethalTitanVolume( Vector( 1261.621826, 3000.667480, 0.0 ), Vector( 2700.747681, 4456.148926, 160.689011 ) ) + AddLethalTitanVolume( Vector( -3291.510986, 3483.724609, 4.031250 ), Vector( -2018.871826, 4463.995850, 122.675621 ) ) + AddLethalTitanVolume( Vector( 2018.871826, -3638.995850, 4.031250 ), Vector( 2241.510986, -3483.724609, 122.675621 ) ) + AddLethalTitanVolume( Vector( -2798.816528, -2302.519897, -30.285933 ), Vector( -1561.589355, -791.616699, 300.917297 ) ) + AddLethalTitanVolume( Vector( 3809.276123, 1639.001587, 11.272846 ), Vector( 4056.847412, 1862.587036, 100.205643 ) ) + AddLethalTitanVolume( Vector( -4189.979492, -3298.505127, -5.597572 ), Vector( -3398.622803, -560.027344, 147.054291 ) ) + break + + case "mp_runoff": + AddLethalPilotVolume( Vector( -621.502319, -5743.472656, 299.838928 ), Vector( -397.317047, -5578.512207, 425.437927 ) ) + break + } +} + +float function GetFogHeight() +{ + string mapName = GetMapName() + + file.lethalFogHeights = {} + file.lethalFogHeights[ "mp_angel_city" ] <- 216.0 // cp ctf mfd + file.lethalFogHeights[ "mp_lagoon" ] <- 98.0 // cp mfd + file.lethalFogHeights[ "mp_nexus" ] <- 310.0 // mfd + file.lethalFogHeights[ "mp_o2" ] <- 40.0 // mfd + file.lethalFogHeights[ "mp_outpost_207" ] <- -225.0 // mfd + file.lethalFogHeights[ "mp_training_ground" ] <- 80.0 // cp mfd + file.lethalFogHeights[ "mp_harmony_mines" ] <- 260.0 // cp ctf mfd + file.lethalFogHeights[ "mp_haven" ] <- 128.0 // mfd + + // good map, needs spawns, etc... + file.lethalFogHeights[ "mp_rise" ] <- 420.0 // mfd + file.lethalFogHeights[ "mp_runoff" ] <- 340.0 // mfd + file.lethalFogHeights[ "mp_zone_18" ] <- 460.0 // mfd + file.lethalFogHeights[ "mp_sandtrap" ] <- 64.0 + + // these don't work as well + file.lethalFogHeights[ "mp_swampland" ] <- 350.0 // mfd + file.lethalFogHeights[ "mp_backwater" ] <- 320.0 // mfd + file.lethalFogHeights[ "mp_airbase" ] <- 450.0 + file.lethalFogHeights[ "mp_boneyard" ] <- 64.0 + file.lethalFogHeights[ "mp_colony" ] <- 270.0 + file.lethalFogHeights[ "mp_corporate" ] <- -765.0 + file.lethalFogHeights[ "mp_fracture" ] <- 270.0 + file.lethalFogHeights[ "mp_overlook" ] <- 16.0 + file.lethalFogHeights[ "mp_relic" ] <- 475.0 + file.lethalFogHeights[ "mp_smugglers_cove" ] <- 400.0 + file.lethalFogHeights[ "mp_wargames" ] <- 64.0 + file.lethalFogHeights[ "mp_switchback" ] <- 840.0 + + file.lethalFogHeights[ "mp_chin_rodeo_express" ] <- 1580.0 + + // custom: titanfall 2 maps + // TODO: really need a modular system here + file.lethalFogHeights[ "mp_colony02" ] <- 270.0 // map changed name from tf1 => tf2 + file.lethalFogHeights[ "mp_glitch" ] <- 200.0 + file.lethalFogHeights[ "mp_grave" ] <- 2350.0 + file.lethalFogHeights[ "mp_homestead" ] <- 64.0 + file.lethalFogHeights[ "mp_forwardbase_kodai" ] <- 930.0 + file.lethalFogHeights[ "mp_thaw" ] <- 32.0 + file.lethalFogHeights[ "mp_black_water_canal" ] <- 32.0 + file.lethalFogHeights[ "mp_eden" ] <- 175.0 + file.lethalFogHeights[ "mp_drydock" ] <- 300.0 + file.lethalFogHeights[ "mp_crashsite3" ] <- 800.0 // crashsite is just as awful for this as it is for anything else + file.lethalFogHeights[ "mp_complex3" ] <- 630.0 + file.lethalFogHeights[ "mp_relic02" ] <- 250.0 // not great, tf1's would honestly be worse though imo + + // lf maps: overall a bit hit or miss, many likely have spawn issues + file.lethalFogHeights[ "mp_lf_stacks" ] <- -9999.0 // entirely nonworking, breaks spawns no matter what from what i can tell, could potentially use safe zones for this? + file.lethalFogHeights[ "mp_lf_deck" ] <- -9999.0 // nonworking fogcontroller so fog is invisible + file.lethalFogHeights[ "mp_lf_uma" ] <- 64.0 + file.lethalFogHeights[ "mp_lf_meadow" ] <- 64.0 + file.lethalFogHeights[ "mp_lf_traffic" ] <- 50.0 + file.lethalFogHeights[ "mp_lf_township" ] <- 64.0 + + if ( mapName in file.lethalFogHeights ) + return file.lethalFogHeights[ mapName ] + + return 64.0 +} + +float function GetLethalFogTopTitan() +{ + float fogTop = GetLethalFogTop() + + switch ( GetMapName() ) + { + case "mp_lagoon": + case "mp_nexus": + case "mp_outpost_207": + case "mp_training_ground": + case "mp_chin_rodeo_express": + return fogTop + } + + return fogTop + 256.0 +} + +float function GetLethalFogTop() +{ + return GetFogHeight() - file.fogDepth * 0.2 +} + +float function GetLethalFogBottom() +{ + return GetFogHeight() - file.fogDepth * 0.7 +} + +float function GetVisibleFogTop() +{ + return GetFogHeight() + file.fogDepth * 0.5 +} + +float function GetVisibleFogBottom() +{ + return GetFogHeight() - file.fogDepth * 0.5 +} + +float function GetMaxTitanSpawnFogHeight() +{ + return GetFogHeight() - file.maxTitanSpawnFogDepth +} + +function AddLethalTitanVolume( vector volumeMins, vector volumeMaxs ) +{ + Assert( volumeMins.x < volumeMaxs.x ) + Assert( volumeMins.y < volumeMaxs.y ) + Assert( volumeMins.z < volumeMaxs.z ) + + file.lethalTitanVolumes.append( { mins = volumeMins, maxs = volumeMaxs } ) +} + +function AddLethalPilotVolume( vector volumeMins, vector volumeMaxs ) +{ + Assert( volumeMins.x < volumeMaxs.x ) + Assert( volumeMins.y < volumeMaxs.y ) + Assert( volumeMins.z < volumeMaxs.z ) + + file.lethalPilotVolumes.append( { mins = volumeMins, maxs = volumeMaxs } ) +} + +function AddSafePilotVolume( vector volumeMins, vector volumeMaxs ) +{ + Assert( volumeMins.x < volumeMaxs.x ) + Assert( volumeMins.y < volumeMaxs.y ) + Assert( volumeMins.z < volumeMaxs.z ) + + file.safePilotVolumes.append( { mins = volumeMins, maxs = volumeMaxs } ) +} + +function IsEntInSafeVolume( entity ent ) +{ + if ( ent.IsPlayer() ) + { + foreach ( volume in file.safePilotVolumes ) + { + vector entOrg = ent.GetOrigin() + + #if SERVER + if ( file.volumesDebug ) + DebugDrawBox( Vector( 0.0, 0.0, 0.0 ), volume.mins, volume.maxs, 0, 0, 255, 1, 0.1 ) + #endif + + if ( PointIsWithinBounds( entOrg, expect vector( volume.mins ), expect vector( volume.maxs ) ) ) + return true + } + } +} + +function IsEntInLethalVolume( entity ent ) +{ + if ( ent.IsTitan() ) + { + foreach ( volume in file.lethalTitanVolumes ) + { + vector entOrg = ent.GetOrigin() + + #if SERVER + if ( file.volumesDebug ) + DebugDrawBox( Vector( 0.0, 0.0, 0.0 ), volume.mins, volume.maxs, 255, 255, 0, 1, 0.1 ) + #endif + + if ( PointIsWithinBounds( entOrg, expect vector( volume.mins ), expect vector( volume.maxs ) ) ) + return true + } + } + else if ( ent.IsPlayer() ) + { + foreach ( volume in file.lethalPilotVolumes ) + { + vector entOrg = ent.GetOrigin() + + #if SERVER + if ( file.volumesDebug ) + DebugDrawBox( Vector( 0.0, 0.0, 0.0 ), volume.mins, volume.maxs, 255, 255, 0, 1, 0.1 ) + #endif + + if ( PointIsWithinBounds( entOrg, expect vector( volume.mins ), expect vector( volume.maxs ) ) ) + return true + } + } + + return false +} diff --git a/Northstar.Custom/scripts/vscripts/mp/levels/mp_box.nut b/Northstar.Custom/scripts/vscripts/mp/levels/mp_box.nut new file mode 100644 index 00000000..a1828009 --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/mp/levels/mp_box.nut @@ -0,0 +1,6 @@ +global function CodeCallback_MapInit + +void function CodeCallback_MapInit() +{ + +}
\ No newline at end of file diff --git a/Northstar.Custom/scripts/vscripts/northstar_custom_autoprecache.gnut b/Northstar.Custom/scripts/vscripts/northstar_custom_autoprecache.gnut new file mode 100644 index 00000000..62d089f7 --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/northstar_custom_autoprecache.gnut @@ -0,0 +1,14 @@ +untyped +global function NorthstarCustomAutoprecache + +void function NorthstarCustomAutoprecache() +{ + PrecacheWeapon( "mp_weapon_peacekraber" ) + PrecacheWeapon( "melee_pilot_kunai" ) + + if ( GAMETYPE == GAMEMODE_SBOX ) + PrecacheWeapon( "mp_weapon_toolgun" ) + + // will include this as a custom asset when mod v2 is written + //PrecacheModel( $"models/titans/buddy/titan_buddy.mdl" ) +}
\ No newline at end of file diff --git a/Northstar.Custom/scripts/vscripts/titan/sh_first_person_embark.gnut b/Northstar.Custom/scripts/vscripts/titan/sh_first_person_embark.gnut new file mode 100644 index 00000000..0c95ae4c --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/titan/sh_first_person_embark.gnut @@ -0,0 +1,41 @@ +global function FirstPersonEmbark_Init + +#if CLIENT + global function ServerCallback_HideHudForFPEmbark +#endif + +void function FirstPersonEmbark_Init() +{ + // atm do this no matter what playlist we're on since playlist overrides seem to get sent to clients after networkvar registration + // not nice but whatever lol + AddCallback_OnRegisteringCustomNetworkVars( FirstPersonEmbark_RegisterCustomNetworkFunctions ) + + // busted rn lol + if ( GetCurrentPlaylistVarInt( "fp_embark_enabled", 0 ) == 0 ) + return + + #if CLIENT + AddCallback_PlayerClassChanged( ShowHudOnEmbarkFinished ) + #endif +} + +void function FirstPersonEmbark_RegisterCustomNetworkFunctions() +{ + Remote_RegisterFunction( "ServerCallback_HideHudForFPEmbark" ) +} + +#if CLIENT +void function ServerCallback_HideHudForFPEmbark() +{ + thread MainHud_TurnOff_RUI( true ) + HidePermanentCockpitRui() +} + +void function ShowHudOnEmbarkFinished( entity player ) +{ + if ( !player.IsTitan() ) + return + + ShowPermanentCockpitRui() +} +#endif
\ No newline at end of file diff --git a/Northstar.Custom/scripts/vscripts/titan/sh_titan_embark.gnut b/Northstar.Custom/scripts/vscripts/titan/sh_titan_embark.gnut new file mode 100644 index 00000000..f9df2730 --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/titan/sh_titan_embark.gnut @@ -0,0 +1,2253 @@ +untyped + +global function TitanEmbark_Init + +global function TitanCanStand +global function DebugEmbarkTimes +global function TitanIsCurrentlyEmbarkableForPlayer +global function PlayerCanEmbarkTitan +global function PlayerCanImmediatelyEmbarkTitan +global function FindBestEmbark +global function GenerateEmbarkActionTable +global function FindEmbarkActionForCriteria +global function GetRandomEmbarkAction +global function PlayerCanDisembarkTitan +global function IsPlayerDisembarking + +#if SERVER + global function ForceScriptedEmbark + global function PlayerCanEmbarkIntoTitan + global function IsPlayerEmbarking + global function PlayerEmbarksTitan + global function PlayerLungesToEmbark + global function FindBestEmbarkForNpcAnim + global function PlayerDisembarksTitan + global function ForcedTitanDisembark + global function ForcedTitanDisembarkCustomAnims + global function PhaseEmbarkPhaseStart + global function PhaseEmbarkPhaseStop + global function OverrideCockpitLightFX + global function StartCockpitLightThink + global function CockpitLightStop + global function Embark_DelayedFadeOut + global function PlayerIsFarOffTheGround + + global function SetSmallDisembarkFailSafeTeleportVector //TODO: Re-examine this for next game, probably should have different values for SP versus MP + global function SetLargeDisembarkFailSafeTeleportVector //TODO: Re-examine this for next game, probably should have different values for SP versus MP +#endif + +#if DEV + global function SetEmbarkDebugPrint +#endif + +const FAST_EMBARK = 1 +const SKIP_AHEAD_TIME = 2.0 + +#if MP +const EMBARK_FADE_TIME = 0.2 +#else +const EMBARK_FADE_TIME = 0.3 +#endif + +struct +{ + asset cockpitLightFX = $"xo_cockpit_dlight" + bool embarkDebugPrint = false + vector smallDisembarkFailSafeTeleportVector = < 400, 400, 200 > + vector largeDisembarkFailSafeTeleportVector = < 600, 600, 600 > +} file + +function TitanEmbark_Init() +{ + if ( reloadingScripts ) + return + + level.pilotDisembarkBounds <- {} + local end = {} + end.up <- 50.363811 + end.forward <- 110.146927 + end.right <- 13.045869 + end.yaw <- -8.381051 + + local start = {} + start.up <- 156.750015 + start.forward <- -13.429688 + start.right <- -11.374998 + start.yaw <- 0.409042 + + RefreshTitanEmbarkActions() + + level.pilotDisembarkBounds.end <- end + level.pilotDisembarkBounds.start <- start + + RegisterSignal( "OnComplete" ) + RegisterSignal( "startembark" ) // temp + + RegisterSignal( "DisembarkingTitan" ) + RegisterSignal( "player_embarks_titan" ) + + #if SERVER + // add all the embark anims with this suffix + AddEmbarkAnims( "titan_atlas", "atlas", true ) + AddEmbarkAnims( "titan_buddy", "buddy", true ) + AddEmbarkAnims( "titan_ogre", "ogre", true ) + AddEmbarkAnims( "titan_stryder", "stryder", true ) + + // AddEmbarkAudio( "titan_atlas", "atlas" ) + // AddEmbarkAudio( "titan_buddy", "buddy" ) + // AddEmbarkAudio( "titan_ogre", "ogre" ) + // AddEmbarkAudio( "titan_stryder", "stryder" ) + + RegisterSignal( "titanKneel" ) + RegisterSignal( "titanStand" ) + RegisterSignal( "titanEmbark" ) + RegisterSignal( "PhaseEmbarkPhaseStop" ) + + RegisterSignal( "CockpitLightStop" ) + PrecacheParticleSystem( $"xo_cockpit_dlight" ) + + AddClientCommandCallback( "TitanDisembark", ClientCommand_TitanDisembark ) // + AddClientCommandCallback( "TitanKneel", ClientCommand_TitanKneel ) // + //AddClientCommandCallback( "TitanStand", ClientCommand_TitanStand ) // + AddClientCommandCallback( "TitanNextMode", ClientCommand_TitanNextMode ) // + + AddCallback_OnTitanBecomesPilot( TitanBecomesPilot_UpdateRodeoRiderHud ) + AddCallback_OnPilotBecomesTitan( PilotBecomesTitan_UpdateRodeoRiderHud ) + #endif +} + +void function OverrideCockpitLightFX( asset fx ) +{ + file.cockpitLightFX = fx +} + +void function AddEmbarkAnims( string titan, string titanSubClass, bool thirdPersonOnly = false ) +{ + // anims are string-constructed from these types: + local Array = + [ + "kneel_front", + "kneel_behind", + "kneel_right", + "kneel_left", + "kneel_airgrab", + + "stand_front", + "stand_right", + "stand_left", + "stand_behind", + "stand_airgrab", + + "above_right", + "above_left", + "kneel_above_right", + "kneel_above_left", + ] + + + // force consistency in animation names + foreach ( item in Array ) + { + array<string> suffixes = [ "", "_fast" ] + foreach ( suffix in suffixes ) + { + //printt( "Adding base " + item + " to " + titan ) + local thirdPersonAlias = "pt_mount_" + item + suffix + local firstPersonAlias = "ptpov_mount_" + item + suffix + local thirdPersonAnim = "pt_mount_" + titanSubClass + "_" + item + suffix + local firstPersonAnim = "ptpov_mount_" + titanSubClass + "_" + item + suffix + + if ( thirdPersonOnly ) + firstPersonAnim = "" + + AddAnimAlias( titanSubClass, thirdPersonAlias, thirdPersonAnim ) + AddAnimAlias( titanSubClass, firstPersonAlias, firstPersonAnim ) + } + } +} + +function AddEmbarkAudio( titan, titanSubClass ) +{ + // audio files are string-constructed from these types: + local Array = + [ + "Kneeling_Front", + "Kneeling_Behind", + "Kneeling_Right", + "Kneeling_Left", + "Kneeling_AboveRight", + "Kneeling_AboveLeft", + + "Standing_Front", + "Standing_Behind", + "Standing_Airgrab", + "Standing_AboveRight", + "Standing_AboveLeft" + ] + + + // force consistency in audio file names + foreach ( item in Array ) + { + //printt( "Adding base " + item + " to " + titan ) + local thirdPersonAlias = "Embark_" + item + "_3P" + local firstPersonAlias = "Embark_" + item + "_1P" + local thirdPersonAnim = titanSubClass + "_Embark_" + item + "_3P" + local firstPersonAnim = titanSubClass + "_Embark_" + item + "_1P" + + AddAudioAlias( titanSubClass, thirdPersonAlias, thirdPersonAnim ) + AddAudioAlias( titanSubClass, firstPersonAlias, firstPersonAnim ) + } +} + +function RefreshTitanEmbarkActions() +{ + if ( "titanEmbarkActions" in level ) + { + delete level.titanEmbarkActions + delete level.titanEmbarkFarthestDistance + } + + local groundDist = 260 + + level.titanEmbarkActions <- [] + level.titanEmbarkFarthestDistance <- 0 + local action + + action = + { + direction = Vector( 1, 0, 0 ) + distance = groundDist + embark = "front" + minDot = 0.4 + priority = 1 // tried after priority 0 actions + titanCanStandRequired = false + //onGround = null // either + useAnimatedRefAttachment = true + alignFrontEnabled = true + canSkipAhead = true + + animSet = + { + firstPersonKneelingAlias = "ptpov_mount_kneel_front" + thirdPersonKneelingAlias = "pt_mount_kneel_front" + firstPersonStandingAlias = "ptpov_mount_stand_front" + thirdPersonStandingAlias = "pt_mount_stand_front" + titanKneelingAnim = "at_mount_kneel_front" + titanStandingAnim = "at_mount_stand_front" + + } + + audioSet = + { + firstPersonKneelingAudioAlias = "Embark_Kneeling_Front_1P" + thirdPersonKneelingAudioAlias = "Embark_Kneeling_Front_3P" + firstPersonStandingAudioAlias = "Embark_Standing_Front_1P" + thirdPersonStandingAudioAlias = "Embark_Standing_Front_3P" + + } + } + level.titanEmbarkActions.append( action ) + + action = + { + direction = Vector( 1, 0, 0 ) + distance = groundDist + embark = "front" + minDot = -1 + priority = 2 // tried after priority 1 actions + titanCanStandRequired = false + //onGround = null // either + useAnimatedRefAttachment = true + alignFrontEnabled = true + canSkipAhead = true + + animSet = + { + firstPersonKneelingAlias = "ptpov_mount_kneel_front" + thirdPersonKneelingAlias = "pt_mount_kneel_front" + firstPersonStandingAlias = "ptpov_mount_stand_front" + thirdPersonStandingAlias = "pt_mount_stand_front" + titanKneelingAnim = "at_mount_kneel_front" + titanStandingAnim = "at_mount_stand_front" + } + + audioSet = + { + firstPersonKneelingAudioAlias = "Embark_Kneeling_Front_1P" + thirdPersonKneelingAudioAlias = "Embark_Kneeling_Front_3P" + firstPersonStandingAudioAlias = "Embark_Standing_Front_1P" + thirdPersonStandingAudioAlias = "Embark_Standing_Front_3P" + } + } + level.titanEmbarkActions.append( action ) + + action = + { + direction = Vector( 0, 1, 0 ) + distance = groundDist + embark = "left" + minDot = 0.4 + priority = 1 // tried after priority 0 actions + titanCanStandRequired = true + useAnimatedRefAttachment = true + alignFrontEnabled = true + canSkipAhead = true + //onGround = null // either + + animSet = + { + firstPersonKneelingAlias = "ptpov_mount_kneel_left" + thirdPersonKneelingAlias = "pt_mount_kneel_left" + firstPersonStandingAlias = "ptpov_mount_stand_front" + thirdPersonStandingAlias = "pt_mount_stand_left" + titanKneelingAnim = "at_mount_kneel_left" + titanStandingAnim = "at_mount_stand_left" + } + + audioSet = + { + firstPersonKneelingAudioAlias = "Embark_Kneeling_Left_1P" + thirdPersonKneelingAudioAlias = "Embark_Kneeling_Left_3P" + firstPersonStandingAudioAlias = "Embark_Standing_Front_1P" + thirdPersonStandingAudioAlias = "Embark_Standing_Front_3P" + } + } + level.titanEmbarkActions.append( action ) + + action = + { + direction = Vector( 0, -1, 0 ) + distance = groundDist + embark = "right" + minDot = 0.4 + priority = 1 // tried after priority 0 actions + titanCanStandRequired = true + useAnimatedRefAttachment = true + alignFrontEnabled = true + canSkipAhead = true + //onGround = null // either + animSet = + { + firstPersonKneelingAlias = "ptpov_mount_kneel_right" + thirdPersonKneelingAlias = "pt_mount_kneel_right" + firstPersonStandingAlias = "ptpov_mount_stand_front" + thirdPersonStandingAlias = "pt_mount_stand_right" + titanKneelingAnim = "at_mount_kneel_right" + titanStandingAnim = "at_mount_stand_right" + } + + audioSet = + { + firstPersonKneelingAudioAlias = "Embark_Kneeling_Right_1P" + thirdPersonKneelingAudioAlias = "Embark_Kneeling_Right_3P" + firstPersonStandingAudioAlias = "Embark_Standing_Front_1P" + thirdPersonStandingAudioAlias = "Embark_Standing_Front_3P" + } + } + level.titanEmbarkActions.append( action ) + + + action = + { + direction = Vector( -1, 0, 0 ) + distance = groundDist + embark = "behind" + minDot = 0.4 + priority = 1 // tried after priority 0 actions + titanCanStandRequired = true + useAnimatedRefAttachment = true + canSkipAhead = false + //onGround = null // either + + animSet = + { + firstPersonKneelingAlias = "ptpov_mount_kneel_behind" + thirdPersonKneelingAlias = "pt_mount_kneel_behind" + firstPersonStandingAlias = "ptpov_mount_stand_behind" + thirdPersonStandingAlias = "pt_mount_stand_behind" + titanKneelingAnim = "at_mount_kneel_behind" + titanStandingAnim = "at_mount_stand_behind" + } + + audioSet = + { + firstPersonKneelingAudioAlias = "Embark_Kneeling_Behind_1P" + thirdPersonKneelingAudioAlias = "Embark_Kneeling_Behind_3P" + firstPersonStandingAudioAlias = "Embark_Standing_Behind_1P" + thirdPersonStandingAudioAlias = "Embark_Standing_Behind_3P" + } + } + level.titanEmbarkActions.append( action ) + + action = + { + direction = Vector( 0, 0, 1 ) // 0 -1 1 + distance = 350 + embark = "above_close" + minDot = 0.88 + canSkipAhead = false + priority = 0 // priority actions are checked first + + titanCanStandRequired = true + useAnimatedRefAttachment = true + //onGround = false // must be in air + + animSets = + { + right = + { + direction = Vector( 0, -1, 0 ) // 0 -1 1 + firstPersonKneelingAlias = "ptpov_mount_kneel_above_right" + thirdPersonKneelingAlias = "pt_mount_kneel_above_right" + firstPersonStandingAlias = "ptpov_mount_above_right" + thirdPersonStandingAlias = "pt_mount_above_right" + titanKneelingAnim = "at_mount_kneel_above" + titanStandingAnim = "at_mount_above_right" + + audioSet = //An annoying exception to how the audioSet is organized, better this than the alternative and having to find the "best audio set" + { + firstPersonKneelingAudioAlias = "Embark_Kneeling_AboveRight_1P" + thirdPersonKneelingAudioAlias = "Embark_Kneeling_AboveRight_3P" + firstPersonStandingAudioAlias = "Embark_Standing_AboveRight_1P" + thirdPersonStandingAudioAlias = "Embark_Standing_AboveRight_3P" + } + } + + left = + { + direction = Vector( 0, 1, 0 ) // 0 -1 1 + firstPersonKneelingAlias = "ptpov_mount_kneel_above_left" + thirdPersonKneelingAlias = "pt_mount_kneel_above_left" + firstPersonStandingAlias = "ptpov_mount_above_left" + thirdPersonStandingAlias = "pt_mount_above_left" + titanKneelingAnim = "at_mount_kneel_above" + titanStandingAnim = "at_mount_above_left" + + audioSet = //An annoying exception to how the audioSet is organized, better this than the alternative and having to find the "best audio set" + { + firstPersonKneelingAudioAlias = "Embark_Kneeling_AboveLeft_1P" + thirdPersonKneelingAudioAlias = "Embark_Kneeling_AboveLeft_3P" + firstPersonStandingAudioAlias = "Embark_Standing_AboveLeft_1P" + thirdPersonStandingAudioAlias = "Embark_Standing_AboveLeft_3P" + } + } + } + } + level.titanEmbarkActions.append( action ) + + action = + { + direction = Vector( 0, 0, 1 ) + distance = 275 + embark = "above_grab" + minDot = 0.3 + titanCanStandRequired = true + //onGround = null // false // must be in air + useAnimatedRefAttachment = true + //lungeCheck = true + canSkipAhead = true + + alignFrontEnabled = true + + priority = 0 // priority actions are checked first + + animSet = + { + firstPersonKneelingAlias = "ptpov_mount_kneel_airgrab" + thirdPersonKneelingAlias = "pt_mount_kneel_airgrab" + titanKneelingAnim = "at_mount_kneel_airgrab" + + firstPersonStandingAlias = "ptpov_mount_stand_airgrab" + thirdPersonStandingAlias = "pt_mount_stand_airgrab" + titanStandingAnim = "at_mount_stand_airgrab" + } + + audioSet = + { + firstPersonKneelingAudioAlias = "Embark_Kneeling_Front_1P" + thirdPersonKneelingAudioAlias = "Embark_Kneeling_Front_3P" + firstPersonStandingAudioAlias = "Embark_Standing_Front_1P" + thirdPersonStandingAudioAlias = "Embark_Standing_Front_3P" + } + } + level.titanEmbarkActions.append( action ) + + local autoParms = + [ + "lungeCheck" + "alignFrontEnabled" + ] + + foreach ( action in level.titanEmbarkActions ) + { + if ( action.distance > level.titanEmbarkFarthestDistance ) + { + level.titanEmbarkFarthestDistance = action.distance + } + foreach ( parm in autoParms ) + { + if ( !( parm in action ) ) + action[ parm ] <- false + } + } +} + +function DebugEmbarkTimes() +{ + local settings = [ "atlas", "ogre", "stryder" ] + + array< asset > models = [ $"models/Humans/imc_pilot/male_cq/imc_pilot_male_cq.mdl", $"models/humans/pilot/female_cq/pilot_female_cq.mdl" ] + local times = {} + + foreach ( model in models ) + { + times[ model ] <- [] + entity prop = CreatePropDynamic( model, Vector(0,0,0), Vector(0,0,0) ) + printt( "Human model: " + model ) + + foreach ( setting in settings ) + { + printt( "Titan: " + setting ) + foreach ( action in level.titanEmbarkActions ) + { + printt( "Embark Direction: " + action.embark ) + if ( "animSet" in action ) + { + local animation = GetAnimFromAlias( setting, action.animSet.thirdPersonKneelingAlias ) + local time = prop.GetSequenceDuration( animation ) + times[ model ].append( { time = time, animation = animation } ) + printt( "Kneeling: " + time ) + + animation = GetAnimFromAlias( setting, action.animSet.thirdPersonStandingAlias ) + time = prop.GetSequenceDuration( animation ) + times[ model ].append( { time = time, animation = animation } ) + printt( "Standing: " + time ) + } + + if ( "animSets" in action ) + { + local animation = GetAnimFromAlias( setting, action.animSets.left.thirdPersonKneelingAlias ) + local time = prop.GetSequenceDuration( animation ) + times[ model ].append( { time = time, animation = animation } ) + printt( "Kneeling Left: " + time ) + + animation = GetAnimFromAlias( setting, action.animSets.left.thirdPersonStandingAlias ) + time = prop.GetSequenceDuration( animation ) + times[ model ].append( { time = time, animation = animation } ) + printt( "Standing Left: " + time ) + + animation = GetAnimFromAlias( setting, action.animSets.right.thirdPersonKneelingAlias ) + time = prop.GetSequenceDuration( animation ) + times[ model ].append( { time = time, animation = animation } ) + printt( "Kneeling Right: " + time ) + + animation = GetAnimFromAlias( setting, action.animSets.right.thirdPersonStandingAlias ) + time = prop.GetSequenceDuration( animation ) + times[ model ].append( { time = time, animation = animation } ) + printt( "Standing Right: " + time ) + } + + printt( " " ) + } + } + + prop.Kill_Deprecated_UseDestroyInstead() + } + + printt( "Time comparison: " ) + bool wrong = false + for ( int i = 0; i < times[ models[0] ].len(); i++ ) + { + if ( times[models[0]][i].time == times[models[1]][i].time ) + { + printt( "MATCH: " + ( i + 1 ) + " times: " + times[models[0]][i].time + " " + times[models[1]][i].time + " " + times[models[1]][i].animation ) + } + else + { + printt( "MISMATCH: " + ( i + 1 ) + " times: " + times[models[0]][i].time + " " + times[models[1]][i].time + " " + times[models[1]][i].animation ) + wrong = true + } + } +// Assert( !wrong, "Times did not match between male and female, see above" ) +} + + +#if SERVER +bool function ClientCommand_TitanKneel( entity player, array<string> args ) +{ + entity titan = player.GetPetTitan() + if ( !IsAlive( titan ) ) + return true + + titan.Signal( "titanKneel" ) + titan.s.standQueued = false + return true +} + +/*bool function ClientCommand_TitanStand( entity player, array<string> args ) +{ + entity titan = player.GetPetTitan() + if ( !IsAlive( titan ) ) + return true + + titan.Signal( "titanStand" ) + titan.s.standQueued = true + titan.s.kneelQueued = false + return true +}*/ + +bool function ClientCommand_TitanNextMode( entity player, array<string> args ) +{ + if ( !IsAlive( player ) ) + return true + + entity titan = player.GetPetTitan() + if ( IsAlive( titan ) ) + NPCTitanNextMode( titan, player ) + + return true +} +#endif // SERVER + + +function EmbarkLine( player, titan ) +{ + player.EndSignal( "startembark" ) + local ref = player.LookupAttachment( "ref" ) + local hijack = titan.LookupAttachment( "hijack" ) + local origin + for ( ;; ) + { + origin = titan.GetAttachmentOrigin( hijack ) + DebugDrawLine( player.GetOrigin(), origin, 255, 0, 0, true, 0.15 ) + + origin = player.GetAttachmentOrigin( ref ) + DebugDrawLine( player.GetOrigin(), origin, 0, 255, 0, true, 0.15 ) + WaitFrame() + } +} + + +#if SERVER +function PlayerEmbarksTitan( entity player, entity titan, table embark ) +{ + //player.SetOrigin( Vector(314.971405, -1826.728638, 116.031250)) + //player.SetAngles( Vector(0.000000, 133.945892, 0.000000)) + //titan.SetOrigin( Vector(284.887970, -1622.180542, 112.093750)) + //titan.SetAngles(Vector(0.000000, 112.264252, 0)) + + entity soul = titan.GetTitanSoul() + string settings = GetSoulTitanSubClass( soul ) + printt( "TitanEmbarkDebug: Player ", player.GetOrigin(), player.GetAngles(), " Titan ", titan.GetOrigin(), titan.GetAngles(), settings, GetMapName() ) + + + Assert( IsAlive( titan ) ) + Assert( IsAlive( player ) ) + + player.SetInvulnerable() + + player.EndSignal( "OnDeath" ) + player.EndSignal( "TitanEjectionStarted" ) + titan.EndSignal( "OnDeath" ) + + titan.Signal( "player_embarks_titan" ) + player.Signal( "player_embarks_titan" ) + +// Assert( !InSolid( titan ), titan + " is in solid" ) + + DisableCloak( player ) + + entity groundEntity = titan.GetGroundEntity() + vector startOrigin = titan.GetGroundRelativePos() + vector startAngles = titan.GetAngles() + + OnThreadEnd( + function() : ( player, groundEntity, startOrigin, startAngles ) + { + if ( IsValid( player ) ) + { + player.SetCinematicEventFlags( player.GetCinematicEventFlags() & (~CE_FLAG_EMBARK) ) + TitanEmbark_PlayerCleanup( player ) + player.p.isEmbarking = false + + if ( IsAlive( player ) ) + { + if ( player.IsTitan() ) //Defensive fix, sometimes in SP (when game is shutting down etc ) this can run without the player being alive + { + TitanEmbarkFailsafe( player, null, groundEntity, startOrigin ) + Remote_CallFunction_Replay( player, "ServerCallback_TitanEmbark" ) + LetTitanPlayerShootThroughBubbleShield( player ) + } + else + { + player.Die() //Defensive fix, sometimes in SP (when game is shutting down etc ) this can run without the player being alive + } + + } + } + } + ) + + // track the embarking player so we can kill him if the titan dies + titan.s.embarkingPlayer <- player + player.p.isEmbarking = true + + #if HAS_STATS + UpdatePlayerStat( player, "misc_stats", "titanEmbarks", 1 ) + #endif + #if SERVER && MP + PIN_AddToPlayerCountStat( player, "embarks" ) + PIN_PlayerAbility( player, "", "embark", {}, 0 ) + #endif + + player.SetCinematicEventFlags( player.GetCinematicEventFlags() | CE_FLAG_EMBARK ) + + waitthread PlayerEmbarksTitan_PlayerBecomesTitan( player, titan, embark ) +} + +function PlayerEmbarksTitan_PlayerBecomesTitan( entity player, entity titan, table embark ) +{ + // a place to store the player finish time + table e + + e.threads <- 0 + e.embarkAction <- embark.action + e.animSet <- embark.animSet + e.audioSet <- embark.audioSet + + e.canStand <- TitanCanStand( titan ) + + e.shouldDoRegularEmbark <- ShouldDoRegularEmbark( titan ) + + // player and titan do their anims and wait for each other to finish + thread TitanEmbark_TitanEmbarks( player, titan, e ) + waitthread TitanEmbark_PlayerEmbarks( player, titan, e ) +} + +bool function ShouldDoRegularEmbark( entity titan ) +{ + entity soul = titan.GetTitanSoul() + + if ( IsSingleplayer() && GetSoulPlayerSettings( soul ) == "titan_buddy" ) + { + return titan.GetNPCState() == "combat" || titan.GetNPCState() == "alert" + } + + return true +} + +bool function TitanHasLeftAndRightEmbarkAnims( entity titan ) +{ + entity soul = titan.GetTitanSoul() + string settings = GetSoulPlayerSettings( soul ) + var hasAnims = Dev_GetPlayerSettingByKeyField_Global( settings, "hasLeftRightEmbarks" ) + if ( hasAnims != null && hasAnims == 1 ) + { + return true + } + + return false +} + +function TitanEmbark_PlayerCleanup( player ) +{ + expect entity( player ) + + player.SetSyncedEntity( null ) + DeployViewModelAndEnableWeapons( player ) + player.UnforceStand() + player.UnforceCrouch() + //printt("Clearing invulnerable") + player.ClearInvulnerable() + player.ClearParent() + //Let player jump in air after getting out if he wants to + player.TouchGround() + player.Anim_Stop() +} + + +void function ForceScriptedEmbark( entity player, entity titan ) +{ + HolsterViewModelAndDisableWeapons( player ) + ClearPlayerAnimViewEntity( player ) + player.ClearParent() + PilotBecomesTitan( player, titan ) + + thread PlayAnim( player, "cqb_idle_mp" ) + player.Anim_Stop() + + player.SetOrigin( titan.GetOrigin() ) + vector angles = titan.GetAngles() + angles.z = 0 + angles.x = 0 + player.SetAngles( angles ) + player.SnapEyeAngles( angles ) + + SetStanceStand( player.GetTitanSoul() ) + + TitanEmbark_PlayerCleanup( player ) + if ( player.ContextAction_IsBusy() ) + player.ContextAction_ClearBusy() +} + + +function TitanEmbarkFailsafe( entity player, entity titan, entity groundEnt, vector startOrigin ) +{ + if ( GetCurrentPlaylistVarInt( "player_embark_in_solid_checks", 0 ) != 1 ) + return + + #if DEV + if ( file.embarkDebugPrint ) + { + if ( IsValid( titan ) ) + printt( "TitanEmbarkFailsafe, before PutEntityInSafeSpot: player origin: " + player.GetOrigin() + ", titan origin: " + titan.GetOrigin() + " safeStartPoint: " + startOrigin ) + else + printt( "TitanEmbarkFailsafe, before PutEntityInSafeSpot: player origin: " + player.GetOrigin() + ", null titan, safeStartPoint: " + startOrigin ) + } + #endif + + if ( !PutEntityInSafeSpot( player, titan, groundEnt, startOrigin, player.GetOrigin() ) ) + player.SetOrigin( startOrigin ) + + #if DEV + if ( file.embarkDebugPrint ) + { + if ( IsValid( titan ) ) + printt( "TitanEmbarkFailsafe, after PutEntityInSafeSpot: player origin: " + player.GetOrigin() + ", titan origin: " + titan.GetOrigin() + " safeStartPoint: " + startOrigin ) + else + printt( "TitanEmbarkFailsafe, after PutEntityInSafeSpot: player origin: " + player.GetOrigin() + ", null titan, safeStartPoint: " + startOrigin ) + } + #endif +} + +function TitanEmbark_PlayerEmbarks( entity player, entity titan, table e ) +{ + player.EndSignal( "OnDeath" ) + player.EndSignal( "TitanEjectionStarted" ) + titan.EndSignal( "OnDeath" ) + + e.threads++ + OnThreadEnd( + function() : ( player, e ) + { + if ( IsValid( player ) ) + { + // ensure these are cleared regardless + ClearPlayerAnimViewEntity( player ) + + if ( player.ContextAction_IsBusy() ) + player.ContextAction_ClearBusy() + } + + e.threads-- + if ( !e.threads ) + { + Signal( e, "OnComplete" ) + } + } + ) + + player.ContextAction_SetBusy() + + bool standing = false + + if ( e.canStand ) + { + if ( e.shouldDoRegularEmbark ) + { + player.ForceStand() + switch ( titan.GetTitanSoul().GetStance() ) + { + case STANCE_KNEELING: + case STANCE_KNEEL: + standing = false + break + + default: + standing = true + break + } + } + else + { + standing = false + } + } + else + { + player.ForceCrouch() + } + + HolsterViewModelAndDisableWeapons( player ) + + FirstPersonSequenceStruct sequence + sequence.attachment = "hijack" + sequence.useAnimatedRefAttachment = expect bool ( e.embarkAction.useAnimatedRefAttachment ) + sequence.blendTime = 0.5 + + entity soul = titan.GetTitanSoul() + string settings = GetSoulTitanSubClass( soul ) + + local hasViewCone + + // string thirdPersonAudio + // string firstPersonAudio + + if ( standing ) + { + sequence.firstPersonAnim = GetAnimFromAlias( settings, e.animSet.firstPersonStandingAlias ) + sequence.thirdPersonAnim = GetAnimFromAlias( settings, e.animSet.thirdPersonStandingAlias ) + hasViewCone = false + // thirdPersonAudio = GetAudioFromAlias( settings, e.audioSet.thirdPersonStandingAudioAlias ) + // firstPersonAudio = GetAudioFromAlias( settings, e.audioSet.firstPersonStandingAudioAlias ) + + } + else + { + sequence.firstPersonAnim = GetAnimFromAlias( settings, e.animSet.firstPersonKneelingAlias ) + sequence.thirdPersonAnim = GetAnimFromAlias( settings, e.animSet.thirdPersonKneelingAlias ) + hasViewCone = true + // thirdPersonAudio = GetAudioFromAlias( settings, e.audioSet.thirdPersonKneelingAudioAlias ) + // firstPersonAudio = GetAudioFromAlias( settings, e.audioSet.firstPersonKneelingAudioAlias ) + } + + sequence.thirdPersonAnimIdle = "pt_mount_idle" + + bool doFirstPersonAnim = true + + if ( sequence.firstPersonAnim == "" ) + {// if there is no first person anim, then there must be a third person camera + sequence.thirdPersonCameraAttachments.append( "VDU" ) + sequence.thirdPersonCameraVisibilityChecks = true + doFirstPersonAnim = false + } + + if ( hasViewCone ) + { + sequence.viewConeFunction = EmbarkViewCone + thread DelayedClearViewCone( player ) + } + + //thread DelayedDisableEmbarkPlayerHud( player, sequence ) + + AddAnimEvent( player, "phase_shift_start", PhaseEmbarkPhaseStart ) + AddAnimEvent( player, "phase_shift_stop", PhaseEmbarkPhaseStop ) + AddAnimEvent( titan, "cockpit_light_start", CockpitLightStart ) + AddAnimEvent( titan, "cockpit_light_stop", CockpitLightStop ) + + OnThreadEnd( + function() : ( player, titan ) + { + if ( IsValid( player ) ) + { + Signal( player, "PhaseEmbarkPhaseStop" ) + DeleteAnimEvent( player, "phase_shift_start" ) + DeleteAnimEvent( player, "phase_shift_stop" ) + } + + if ( IsAlive( titan ) ) //Consider clearing titan.s.embarkingPlayer here? + titan.Die() + } + ) + + if ( GetCurrentPlaylistVarInt( "fp_embark_enabled", 0 ) == 1 ) + { + Remote_CallFunction_NonReplay( player, "ServerCallback_HideHudForFPEmbark" ) + + // fp embark hacks + entity viewControl = CreateEntity( "point_viewcontrol" ) + viewControl.kv.spawnflags = 56 + DispatchSpawn( viewControl ) + + viewControl.SetParent( player, "headshot" ) + viewControl.SetOrigin( < 4, 0, 0 > ) + viewControl.SetAngles( < 0, 0, 0 > ) + player.SetViewEntity( viewControl, false ) + } + + thread FirstPersonSequence( sequence, player, titan ) + // EmitDifferentSoundsOnEntityForPlayerAndWorld( firstPersonAudio, thirdPersonAudio, titan, player ) + + float animDuration = player.GetSequenceDuration( sequence.thirdPersonAnim ) + + if ( ShouldSkipAheadIntoEmbark( standing, player, titan, e ) ) + { + local duration = player.GetSequenceDuration( sequence.thirdPersonAnim ) + if ( duration >= SKIP_AHEAD_TIME ) + { + player.Anim_SetInitialTime( duration - SKIP_AHEAD_TIME ) + entity viewModel = player.GetFirstPersonProxy() + + if ( IsValid( viewModel ) && EntHasModelSet( viewModel ) && doFirstPersonAnim ) //JFS: Defensive fix for player not having view models sometimes + viewModel.Anim_SetInitialTime( duration - SKIP_AHEAD_TIME ) + + animDuration = SKIP_AHEAD_TIME + } + } + + thread Embark_DelayedFadeOut( player, titan, animDuration ) + + WaittillAnimDone( player ) + + Signal( player, "PhaseEmbarkPhaseStop" ) + + ClearPlayerAnimViewEntity( player ) + PilotBecomesTitan( player, titan ) + + thread PlayAnim( player, "cqb_idle_mp" ) + player.Anim_Stop() + player.SetVelocity( <0,0,0> ) + + player.SetOrigin( titan.GetOrigin() ) + local angles = titan.GetAngles() + angles.z = 0 + angles.x = 0 + player.SetAngles( angles ) + player.SnapEyeAngles( angles ) + + // soul stuff should be from anim event + Assert( IsServer() ) + SetStanceStand( player.GetTitanSoul() ) + titan.Destroy() +} + +void function Embark_DelayedFadeOut( entity player, entity titan, float delay ) +{ + if ( !IsAlive( player ) ) + return + + if ( !IsValid( titan ) ) + return + + player.EndSignal( "OnDeath" ) + titan.EndSignal( "OnDestroy" ) + + wait delay - EMBARK_FADE_TIME + + if ( GetCurrentPlaylistVarInt( "fp_embark_enabled", 0 ) == 0 ) + { + ScreenFadeToBlack( player, EMBARK_FADE_TIME, EMBARK_FADE_TIME + 0.2 ) // a little extra so we stay black + wait EMBARK_FADE_TIME + } + else + { + OnThreadEnd( function() : ( player ) + { + player.ClearViewEntity() + }) + + wait EMBARK_FADE_TIME - 0.2 + ScreenFadeToBlack( player, 0.2, 0.4 ) + wait 0.2 + player.ClearViewEntity() // make sure player is in normal first person again + } + + ScreenFadeFromBlack( player, EMBARK_FADE_TIME, EMBARK_FADE_TIME ) +} + +void function PlayStartupSounds( entity titan ) +{ + entity soul = titan.GetTitanSoul() + if ( !IsValid( soul ) ) + return + entity player = soul.GetBossPlayer() + if ( !IsValid( player ) ) + return + + player.EndSignal( "OnDeath" ) + + string titanSettings = GetSoulPlayerSettings( soul ) + var startupSound = Dev_GetPlayerSettingByKeyField_Global( titanSettings, "startup_sound" ) + + if ( startupSound != null ) + EmitSoundOnEntityOnlyToPlayer( player, player, expect string(startupSound) ) +} + + +void function CockpitLightStart( entity titan ) +{ + thread StartCockpitLightThink( titan, 5.0 ) +} + +void function StartCockpitLightThink( entity titan, float timeout ) +{ + titan.EndSignal( "OnDestroy" ) + titan.EndSignal( "CockpitLightStop" ) + + int attachID = titan.LookupAttachment( "HIJACK" ) + int fxID = GetParticleSystemIndex( file.cockpitLightFX ) + entity fx = StartParticleEffectOnEntity_ReturnEntity( titan, fxID, FX_PATTACH_POINT_FOLLOW, attachID ) + + OnThreadEnd( + function() : ( fx ) + { + if ( IsValid( fx ) ) + EffectStop( fx ) + } + ) + + if ( timeout < 0 ) + WaitForever() + else + wait timeout +} + +void function CockpitLightStop( entity titan ) +{ + titan.Signal( "CockpitLightStop" ) +} + +void function PhaseEmbarkPhaseStart( entity player ) +{ + player.MakeInvisible() + PlayPhaseShiftDisappearFX( player ) + EmitSoundOnEntity( player, "pilot_phaseembark_activate_3p" ) + + if ( GetCurrentPlaylistVarInt( "fp_embark_enabled", 0 ) == 1 ) + { + player.PhaseShiftBegin( 0.0, 0.2 ) + player.GetPetTitan().SetForceVisibleInPhaseShift( true ) // doesn't work for some reason + } + + thread PhaseEmbarkPhaseCleanup( player ) +} + +void function PhaseEmbarkPhaseCleanup( player ) +{ + EndSignal( player, "OnDeath" ) + + OnThreadEnd( + function() : ( player ) + { + if ( IsValid( player ) ) + { + player.MakeVisible() + } + } + ) + + WaitSignal( player, "PhaseEmbarkPhaseStop" ) +} + +void function PhaseEmbarkPhaseStop( entity player ) +{ + Signal( player, "PhaseEmbarkPhaseStop" ) + PlayPhaseShiftDisappearFX( player ) + EmitSoundOnEntity( player, "pilot_phaseembark_end_3p" ) + + if ( GetCurrentPlaylistVarInt( "fp_embark_enabled", 0 ) == 1 ) + player.PhaseShiftCancel() +} + +function ShouldSkipAheadIntoEmbark( standing, player, titan, e ) +{ + if ( !standing ) + return false + + if ( !e.embarkAction.canSkipAhead ) + return false + + local playerEye = player.EyePosition() + local titanOrg = titan.GetOrigin() + local vec = playerEye - titanOrg + vec.Norm() + vec.z = 0 + local start = playerEye + local end = playerEye + vec * 24 + + if ( Distance( player.GetOrigin(), titan.GetOrigin() ) >= 145 ) + return false + + local mask = TRACE_MASK_PLAYERSOLID + TraceResults result = TraceLine( start, end, [ titan, player ], mask, TRACE_COLLISION_GROUP_NONE ) + //DebugDrawLine( start, result.endPos, 0, 255, 0, true, 10.0 ) + //DebugDrawLine( result.endPos, end, 255, 0, 0, true, 10.0 ) + return result.fraction < 1.0 +} +#endif // SERVER + +function DelayedDisableEmbarkPlayerHud( player, sequence ) +{ + player.EndSignal( "OnDeath" ) + + local duration = player.GetSequenceDuration( sequence.thirdPersonAnim ) + wait duration - 1.0 + player.SetCinematicEventFlags( player.GetCinematicEventFlags() | CE_FLAG_EMBARK ) +} + +#if SERVER +function DelayedClearViewCone( player ) +{ + player.EndSignal( "OnDeath" ) + wait 1.0 + player.PlayerCone_SetLerpTime( 0.5 ) + player.PlayerCone_FromAnim() + player.PlayerCone_SetMinYaw( 0 ) + player.PlayerCone_SetMaxYaw( 0 ) + player.PlayerCone_SetMinPitch( 0 ) + player.PlayerCone_SetMaxPitch( 0 ) +} + +void function EmbarkViewCone( entity player ) +{ + player.PlayerCone_FromAnim() + player.PlayerCone_SetMinYaw( -70 ) + player.PlayerCone_SetMaxYaw( 60 ) + player.PlayerCone_SetMinPitch( -80 ) + player.PlayerCone_SetMaxPitch( 30 ) +} + +function TitanEmbark_TitanEmbarks( player, titan, e ) +{ + expect entity( player ) + expect entity( titan ) + + player.EndSignal( "OnDeath" ) + player.EndSignal( "TitanEjectionStarted" ) + titan.EndSignal( "OnDeath" ) + + titan.ContextAction_SetBusy() + + AddAnimEvent( titan, "play_startup_sound", PlayStartupSounds ) + + e.threads++ + OnThreadEnd( + function() : ( e, player, titan ) + { + e.threads-- + if ( !e.threads ) + { + Signal( e, "OnComplete" ) + } + + if ( !IsAlive( player ) && IsAlive( titan ) ) + { + titan.Anim_Stop() + titan.ContextAction_ClearBusy() + DeleteAnimEvent( titan, "play_startup_sound" ) + } + } + ) + + local soul = titan.GetTitanSoul() + + // dont let other players get in + + local animation +// local waittillAnimDone + local alignFront + bool standing = false + + if ( e.canStand ) + { + if ( e.shouldDoRegularEmbark ) + { + // default + switch ( titan.GetTitanSoul().GetStance() ) + { + case STANCE_KNEELING: + case STANCE_KNEEL: + animation = e.animSet.titanKneelingAnim + alignFront = false + break + + default: + animation = e.animSet.titanStandingAnim + if ( TitanHasLeftAndRightEmbarkAnims( titan ) ) + alignFront = false + else + alignFront = true + standing = true + break + } + } + else + { + // special for BT if he is in casual mode + animation = e.animSet.titanKneelingAnim + alignFront = false + } + } + else + { + animation = "at_mount_kneel_without_standing" + alignFront = false +// waittillAnimDone = false + } + + //sequence.blendTime = 0.5 + + printt("This is mount animation name: " + animation ) + if ( e.embarkAction.alignFrontEnabled && alignFront ) + { + local titanOrg = titan.GetOrigin() + local vec = player.GetOrigin() - titanOrg + local angles = VectorToAngles( vec ) + angles.x = 0 + angles.z = 0 + thread PlayAnimGravityClientSyncing( titan, animation, titanOrg, angles ) + } + else + { + thread PlayAnimGravityClientSyncing( titan, animation ) + } + + if ( ShouldSkipAheadIntoEmbark( standing, player, titan, e ) ) + { + local duration = titan.GetSequenceDuration( animation ) + + if ( duration >= SKIP_AHEAD_TIME ) // failsafe + titan.Anim_SetInitialTime( duration - SKIP_AHEAD_TIME ) + } + + // titan will become player now + WaitForever() +} + +bool function ClientCommand_TitanDisembark( entity player, array<string> args ) +{ + if ( !PlayerCanDisembarkTitan( player ) ) + return true + + ScreenFade( player, 0, 1, 0, 255, 0.2, 0.2, FFADE_IN | FFADE_PURGE ) + player.CockpitStartDisembark() + Remote_CallFunction_Replay( player, "ServerCallback_TitanDisembark" ) + + thread PlayerDisembarksTitan( player ) + + return true +} + +void function ForcedTitanDisembark( entity player ) +{ + Assert( PlayerCanDisembarkTitan( player ) ) + + player.CockpitStartDisembark() + Remote_CallFunction_Replay( player, "ServerCallback_TitanDisembark" ) + + waitthread PlayerDisembarksTitan( player ) +} + +function ForcedTitanDisembarkCustomAnims( entity player, FirstPersonSequenceStruct functionref( entity, entity ) playerSequenceFunc, FirstPersonSequenceStruct functionref( entity, entity ) titanSequenceFunc ) +{ + Assert( PlayerCanDisembarkTitan( player ) ) + + player.CockpitStartDisembark() + Remote_CallFunction_Replay( player, "ServerCallback_TitanDisembark" ) + + player.p.isCustomDisembark = true + waitthread PlayerDisembarksTitanWithSequenceFuncs( player, playerSequenceFunc, titanSequenceFunc ) + player.p.isCustomDisembark = false +} + +#endif // SERVER + +function PlayerCanDisembarkTitan( entity player ) +{ + if ( !player.IsTitan() ) + return false + + if ( !IsAlive( player ) ) + return false + + if ( IsValid( player.GetParent() ) ) + return false + + if ( Riff_TitanExitEnabled() == eTitanExitEnabled.Never ) + return false + + if ( !CanDisembark( player ) ) + return false + + #if SERVER + if ( player.IsNoclipping() ) + return false + // client doesn't know these things + if ( IsPlayerDisembarking( player ) ) + return false + if ( IsPlayerEmbarking( player ) ) + return false + #endif + + if ( !HasSoul( player ) ) + return false + + local soul = player.GetTitanSoul() + if ( soul.IsEjecting() ) + return false + + Assert( soul == player.GetTitanSoul() ) + + return true +} + +#if SERVER + +function PlayerDisembarksTitan( player ) +{ + expect entity( player ) + PlayerDisembarksTitanWithSequenceFuncs( player, GetDisembarkSequenceForPlayer, GetDisembarkSequenceForTitan ) +} + +void function PlayerDisembarksTitanWithSequenceFuncs( entity player, FirstPersonSequenceStruct functionref( entity, entity ) playerSequenceFunc, FirstPersonSequenceStruct functionref( entity, entity ) titanSequenceFunc ) +{ + //printt( "Player disembarking with origin " + player.GetOrigin() + " and yaw " + player.GetAngles().y ) + + //player.SetOrigin( Vector(420.847626, -5214.960938, 173.789520) ) + //player.SetAngles( Vector(0.000000, 179.572052, 0.000000 ) ) + + printt( "TitanDisembarkDebug: Player ", player.GetOrigin(), player.GetAngles(), GetMapName() ) + + player.EndSignal( "OnDeath" ) + player.Signal( "DisembarkingTitan" ) + + //Assert( !InSolid( player ), player + " is in solid" ) + + local e = {} + e.titan <- null + e.PilotCleanUpDone <- false + + e.startOrigin <- player.GetOrigin() + //e.startAngles <- player.GetAngles() + + player.p.isDisembarking = true + player.SetCinematicEventFlags( player.GetCinematicEventFlags() | CE_FLAG_DISEMBARK ) + + bool wasCustomDisembark = player.p.isCustomDisembark + + player.ContextAction_SetBusy() + + OnThreadEnd( + function() : ( player, e ) + { + if ( IsValid( player ) ) + { + PlayerEndsDisembark( player, e ) + + local titan = e.titan + if ( !IsValid( titan ) ) + titan = null + } + + if ( IsAlive( expect entity( e.titan ) ) ) + { + if ( IsAlive( player ) ) + { + thread PlayerOwnsTitanUntilSeparation( player, e.titan, 80 ) + } + + delete e.titan.s.disembarkingPlayer + ClearInvincible( expect entity( e.titan ) ) + + + //Make Titan get up immediately if he's kneeling and can stand + //If he can't get up, well, then since the titan doesn't move when crouched he's going to be stuck... + if ( !( "embarkingPlayer" in e.titan.s ) ) + { + thread TitanNPC_Think( expect entity( e.titan ) ) //titan.s.disableAutoTitanConversation is deleted inside here + } + } + } + ) + + bool standing = player.IsStanding() + + player.SetInvulnerable() + player.SnapFeetToEyes() + + entity titan = CreateAutoTitanForPlayer_ForTitanBecomesPilot( player ) + DispatchSpawn( titan ) + e.titan = titan + + if ( !PlayerIsFarOffTheGround( player, [ player,titan ] ) ) //PlayerIsFarOffTheGround() necessary now for R2 because we have Titans that can jump/geo where Titans can fall down from large heights. Without check, mid-air disembarking will cause player to be teleported to the ground + { + vector ornull clampedPos = NavMesh_ClampPointForAIWithExtents( titan.GetOrigin(), titan, file.smallDisembarkFailSafeTeleportVector ) + if ( clampedPos == null ) + clampedPos = NavMesh_ClampPointForAIWithExtents( titan.GetOrigin(), titan, file.largeDisembarkFailSafeTeleportVector ) + + if ( clampedPos != null ) + { + expect vector( clampedPos ) + vector titanOrigin = titan.GetOrigin() + + array<entity> ignoreEnts = [] + ignoreEnts.append( titan ) + + TraceResults result = TraceHull( titanOrigin, titanOrigin, titan.GetBoundingMins(), titan.GetBoundingMaxs(), ignoreEnts, TRACE_MASK_TITANSOLID, TRACE_COLLISION_GROUP_NONE ) + + // expensive checks to make sure titan doesn't teleport to navmesh on other side of wall usually in invalid places + if ( result.startSolid || + TraceLineSimple( titanOrigin + Vector( 0, 0, 128 ), clampedPos + Vector( 0, 0, 0 ), titan ) == 1.0 || + TraceLineSimple( titanOrigin + Vector( 0, 0, 200 ), clampedPos + Vector( 0, 0, 0 ), titan ) == 1.0 || + TraceLineSimple( titanOrigin + Vector( 0, 0, 200 ), clampedPos + Vector( 0, 0, 128 ), titan ) == 1.0 ) + { + #if DEV + if ( file.embarkDebugPrint ) + { + printt( "PlayerDisembarksTitanWithSequenceFuncs, player origin: " + player.GetOrigin()+ ", titan origin: " + titan.GetOrigin() + ", clampedPos: " + clampedPos ) + } + #endif + titan.SetOrigin( clampedPos ) + titan.ForceCheckGroundEntity() + } + } + } + else + { + #if DEV + if ( file.embarkDebugPrint ) + { + printt( "PlayerIsFarOffGround() returned true, skip doing NavMesh_ClampPointForAIWithExtents checks" ) + } + #endif + } + + titan.s.disembarkingPlayer <- player + titan.EndSignal( "OnDeath" ) + + player.SetSyncedEntity( titan ) + titan.s.disableAutoTitanConversation <- true + + Assert( titan.IsTitan() ) + Assert( IsAlive( player ) ) + Assert( player.IsTitan() ) + //Set player to be temporarily invulnerable. Will be removed at end of animation + //printt("Set player invulnerable") + HolsterViewModelAndDisableWeapons( player ) //Holstering weapon before becoming pilot so we don't play the holster animation as a pilot. Player as Titan won't play the holster animation either since it'll be interrupted by the disembark animation + + TitanBecomesPilot( player, titan ) + + string titanSubClass = GetSoulTitanSubClass( titan.GetTitanSoul() ) + switch ( titanSubClass ) + { + case "ogre": + ShowMainTitanWeapons( titan ) //JFS: Because we hide the Titan's weapons upon kneeling for ogre + break + } + + titan.s.disembarkTime <- Time() // disembark debounce + + // compound strings into these animations: + // pt_dismount_atlas_stand + // pt_dismount_ogre_stand + // pt_dismount_stryder_stand + // pt_dismount_atlas_crouch + // pt_dismount_ogre_crouch + // pt_dismount_stryder_crouch + // ptpov_dismount_atlas_stand + // ptpov_dismount_ogre_stand + // ptpov_dismount_stryder_stand + // ptpov_dismount_atlas_crouch + // ptpov_dismount_ogre_crouch + // ptpov_dismount_stryder_crouch + + FirstPersonSequenceStruct playerSequence = playerSequenceFunc( player, titan ) + FirstPersonSequenceStruct titanSequence = titanSequenceFunc( player, titan ) + + #if SERVER + StatusEffect_StopAll( player, eStatusEffect.lockon_detected_titan ) + #endif + + player.ForceStand() + + thread FirstPersonSequence( titanSequence, titan ) + thread FirstPersonSequence( playerSequence, player, titan ) + + if ( !wasCustomDisembark ) + thread ClearParentBeforeIntersect( player, titan, playerSequence.thirdPersonAnim, e ) + + if ( !standing ) + { + SetStanceKneel( titan.GetTitanSoul() ) + } + + //player.Anim_EnablePlanting() + + #if SERVER && MP + PIN_AddToPlayerCountStat( player, "disembarks" ) + PIN_PlayerAbility( player, "", "disembark", {}, 0 ) + #endif + + WaittillAnimDone( player ) +} + +bool function PlayerIsFarOffTheGround( entity player, array<entity> ignoreEnts ) +{ + vector boundingMaxs = player.GetBoundingMaxs() + float halfHeight = boundingMaxs.z / 2.0 + + vector startpos = player.GetOrigin() + vector endpos = startpos + endpos.z -= halfHeight + + TraceResults result = TraceHull( startpos, endpos, player.GetBoundingMins(), player.GetBoundingMaxs(), ignoreEnts, TRACE_MASK_PLAYERSOLID, TRACE_COLLISION_GROUP_PLAYER ) + //PrintTraceResults( result ) + + if ( result.startSolid ) + return false + + if ( result.allSolid ) + return false + + return ( result.fraction >= 1.0 ) +} + +FirstPersonSequenceStruct function GetDisembarkSequenceForPlayer( entity player, entity titan ) +{ + string titanSubClass = GetSoulTitanSubClass( titan.GetTitanSoul() ) + + string player3pAnim, player1pAnim + if ( player.IsStanding() ) + { + player3pAnim = "pt_dismount_" + titanSubClass + "_stand" + player1pAnim = "ptpov_dismount_" + titanSubClass + "_stand" + } + else + { + player3pAnim = "pt_dismount_" + titanSubClass + "_crouch" + player1pAnim = "ptpov_dismount_" + titanSubClass + "_crouch" + } + + if ( player.HasPassive( ePassives.PAS_FAST_EMBARK ) ) + { + player1pAnim += "_fast" + player3pAnim += "_fast" + } + + FirstPersonSequenceStruct playerSequence + playerSequence.blendTime = 0 + playerSequence.teleport = true + playerSequence.attachment = "hijack" + playerSequence.thirdPersonAnim = player3pAnim + playerSequence.firstPersonAnim = player1pAnim + playerSequence.useAnimatedRefAttachment = true + + return playerSequence +} + +FirstPersonSequenceStruct function GetDisembarkSequenceForTitan( entity player, entity titan ) +{ + bool standing = player.IsStanding() + + string titanDisembarkAnim + if ( standing ) + titanDisembarkAnim = "at_dismount_stand" + else + titanDisembarkAnim = "at_dismount_crouch" + + if ( player.HasPassive( ePassives.PAS_FAST_EMBARK ) ) + titanDisembarkAnim += "_fast" + + vector origin = titan.GetOrigin() + vector angles = titan.EyeAngles() + angles.z = 0 + angles.x = 0 + + FirstPersonSequenceStruct titanSequence + titanSequence.blendTime = 0.3 + titanSequence.thirdPersonAnim = titanDisembarkAnim + if ( !standing ) + titanSequence.thirdPersonAnimIdle = "at_MP_embark_idle_blended" + titanSequence.gravity = true + titanSequence.origin = origin + titanSequence.angles = angles + + return titanSequence +} + +function DelayedSafePlayerLocationForDisembark( entity player, entity titan ) +{ + float currentTime = Time() + float allowedTime = player.p.isCustomDisembark ? 10.0 : 2.0 + + player.EndSignal( "OnDestroy" ) + + while( IsPlayerDisembarking( player ) ) + { + Assert( Time() - currentTime < allowedTime ) // Failsafe of waiting 2 seconds in case SOMETHING REALLY GOES WRONG. + if ( !IsAlive( player ) ) + return + + WaitFrame() + } + + if ( player.ContextAction_IsActive() ) //Immediately after disembarking player might have gotten pulled into another context action e.g. embarking into evac dropship + return + + player.ClearParent() + player.PlayerCone_Disable() + player.ViewOffsetEntity_Clear() + player.GetFirstPersonProxy().HideFirstPersonProxy() + + vector safeStartPoint + + if ( IsValid( titan ) ) + { + vector titanBoundingMaxs = titan.GetBoundingMaxs() + float halfTitanHeight = titanBoundingMaxs.z * 0.5 + safeStartPoint = titan.GetOrigin() + < 0, 0, halfTitanHeight > //Let the start point of PutEntityInSafeSpot be closer to where the player is when disebmarking instead of the ground origin + } + else + { + titan = null + safeStartPoint = player.GetOrigin() + } + + #if DEV + if ( file.embarkDebugPrint ) + printt( "DelayedSafePlayerLocationForDisembark, before PutEntityInSafeSpot: player origin: " + player.GetOrigin() + ", titan origin: " + titan.GetOrigin() + " safeStartPoint: " + safeStartPoint ) + #endif + + + + if ( !PutEntityInSafeSpot( player, titan, null, safeStartPoint, player.GetOrigin() ) ) + player.SetOrigin( safeStartPoint ) + + #if DEV + if ( file.embarkDebugPrint ) + printt( "DelayedSafePlayerLocationForDisembark, after PutEntityInSafeSpot: player origin: " + player.GetOrigin() + ", titan origin: " + titan.GetOrigin() + " safeStartPoint: " + safeStartPoint ) + #endif + +} + +function ClearParentBeforeIntersect( entity player, entity titan, anim, e ) +{ + player.EndSignal( "OnDeath" ) + player.EndSignal( "OnAnimationDone" ) + player.EndSignal( "OnAnimationInterrupted" ) + //local mins = player.GetBoundingMins() + //local maxs = player.GetBoundingMaxs() + + OnThreadEnd( + function() : ( player, e ) + { + if ( IsValid( player ) ) + thread DelayedSafePlayerLocationForDisembark( player, expect entity( e.titan ) ) + } + ) + + wait 0.25 + + vector lastOrigin = player.GetOrigin() + for ( ;; ) + { + if ( EntityInSolid( player, titan, 24 ) ) + break + + lastOrigin = player.GetOrigin() + WaitFrame() + } + + player.SetOrigin( lastOrigin ) +} + +function LockedViewCone( human ) +{ + human.PlayerCone_FromAnim() + human.PlayerCone_SetMinYaw( 0 ) + human.PlayerCone_SetMaxYaw( 0 ) + human.PlayerCone_SetMinPitch( 0 ) + human.PlayerCone_SetMaxPitch( 0 ) +} + + +function PlayerOwnsTitanUntilSeparation( player, titan, dist ) +{ + titan.SetOwner( player ) + + player.EndSignal( "OnDeath" ) + titan.EndSignal( "OnDeath" ) + + OnThreadEnd( + function () : ( player, titan ) + { + if ( !IsValid( titan ) ) + return + + titan.SetOwner( null ) + } + ) + + // wait until player moves away + local distSqr = dist * dist + for ( ;; ) + { + if ( DistanceSqr( titan.GetOrigin(), player.GetOrigin() ) > distSqr ) + break + + wait 0.5 + } +} + +function PlayerEndsDisembark( player, e ) +{ + thread PlayerEndsDisembarkThread( player, e ) +} + +function PlayerEndsDisembarkThread( player, e ) +{ + expect entity( player ) + player.EndSignal( "OnDestroy" ) + + if ( e.PilotCleanUpDone ) + return + + e.PilotCleanUpDone = true + bool wasCustomDisembark = player.p.isCustomDisembark + + wait 0.1 + + ClearPlayerAnimViewEntity( player ) + if ( player.ContextAction_IsBusy() ) + player.ContextAction_ClearBusy() + + player.SetCinematicEventFlags( player.GetCinematicEventFlags() & (~CE_FLAG_DISEMBARK) ) + + player.Show() + TitanEmbark_PlayerCleanup( player ) + player.p.isDisembarking = false + + //// give a player a boost out the door + // + // + if ( IsAlive( player ) && !wasCustomDisembark ) + { + local angles = player.EyeAngles() + if ( IsValid( e.titan ) ) + angles = e.titan.GetAngles() + + angles.x = 0 + angles.z = 0 + local forward = AnglesToForward( angles ) + local up = AnglesToUp( angles ) + local vel = forward * 250 + up * 200 + player.SetVelocity( vel ) + //DebugDrawLine( player.GetOrigin(), player.GetOrigin() + forward * 500, 255, 0, 0, true, 5.0 ) + } +} + +function IsPlayerEmbarking( player ) +{ + expect entity ( player ) + return player.p.isEmbarking +} +#endif // SERVER + +function IsPlayerDisembarking( player ) +{ + expect entity ( player ) + return player.p.isDisembarking +} + +function PlayerCanEmbarkIntoTitan( entity player, entity titan ) //TODO: Collapse PlayerCanEmbarkTitan(), PlayerCanEmbarkIntoTitan(), PlayerCanImmediatelyEmbarkTitan() and TitanIsCurrentlyEmbarkableForPlayer() into one function +{ + if ( player.IsNoclipping() ) + return false + + if ( !TitanIsCurrentlyEmbarkableForPlayer( player, titan ) ) + return false + + return FindBestEmbark( player, titan ) != null +} + +bool function TitanIsCurrentlyEmbarkableForPlayer( entity player, entity titan ) //TODO: Collapse PlayerCanEmbarkTitan(), PlayerCanEmbarkIntoTitan(), PlayerCanImmediatelyEmbarkTitan() and TitanIsCurrentlyEmbarkableForPlayer() into one function +{ + if ( !CanEmbark( player ) ) + return false + + if ( player.Anim_IsActive() ) + return false + + if ( !player.IsHuman() ) + return false + + if ( player.ContextAction_IsActive() ) + return false + + if ( !titan.IsEntAlive() ) + return false + + if ( titan.ContextAction_IsActive() ) + return false + + if ( !titan.IsInterruptable() ) + return false + + if ( IsValid( titan.GetParent() ) ) + return false + + if ( !HasSoul( titan ) ) + return false + + local soul = titan.GetTitanSoul() + + if ( GetDoomedState( titan ) && !PROTO_AlternateDoomedState() ) + return false + + if ( soul.IsEjecting() ) + return false + + #if SERVER + // client doesn't know these things + if ( IsPlayerEmbarking( player ) ) + return false + + if ( IsPlayerDisembarking( player ) ) + return false + #endif + + if ( "disembarkTime" in titan.s ) + { + if ( Time() - titan.s.disembarkTime < 1.65 ) + return false + } + + return true +} + +function FindEmbarkActionForCriteria( criteria ) +{ + local embarkAction + foreach ( option in level.titanEmbarkActions ) + { + bool failed = false + foreach ( key, value in criteria ) + { + if ( value != option[key] ) + { + failed = true + break + } + } + + if ( !failed ) + { + embarkAction = option + break + } + } + + return embarkAction + +} + +function GetRandomEmbarkAction() +{ + return level.titanEmbarkActions[ RandomInt( level.titanEmbarkActions.len() ) ] +} + +function FindBestEmbark( entity player, entity titan, bool doDistCheck = true ) +{ +// if ( IsServer() ) +// printt( "finding best embark for " + player + " to " + titan ) + vector playerPos = player.GetOrigin() + vector titanPos = titan.GetOrigin() + + vector relTitanToPlayerDir = CalculateTitanToPlayerDir( titan, player ) + + local bestAction = null + float bestDot = -2 + float dist = 0 + + if ( doDistCheck ) + { + dist = Distance( playerPos, titanPos ) + if ( dist > level.titanEmbarkFarthestDistance ) + return null + } + //if ( IsServer() ) + // printt( "dist: " + dist ) + + for ( int i = 0; i < 3; i++ ) + { + bestAction = GetBestEmbarkAction( i, player, titan, dist, relTitanToPlayerDir ) + if ( bestAction != null ) + break + } + + if ( bestAction == null ) + return null + + return GenerateEmbarkActionTable( player, titan, bestAction, relTitanToPlayerDir ) +} + +vector function CalculateTitanToPlayerDir( entity titan, entity player ) +{ + vector playerPos = player.GetOrigin() + vector titanPos = titan.GetOrigin() + + vector absTitanToPlayerDir + if ( playerPos == titanPos ) + { + absTitanToPlayerDir = Vector( 1, 0, 0 ) + } + else + { + vector angles = player.EyeAngles() + vector forward = AnglesToForward( angles ) + + absTitanToPlayerDir = ( playerPos - titanPos ) + + + absTitanToPlayerDir.Norm() + +// not needed cause we can't get in without a legal use +// // is the target in my fov? +// if ( forward.Dot( absTitanToPlayerDir * -1 ) < 0.77 ) +// return null + } + + vector titanAngles = titan.GetAngles() + titanAngles.x = 0 + if ( titan.GetTitanSoul().GetStance() >= STANCE_STANDING ) + titanAngles = AnglesCompose( titanAngles, Vector( 0, -30, 0 ) ) + + vector relTitanToPlayerDir = CalcRelativeVector( titanAngles, absTitanToPlayerDir ) + return relTitanToPlayerDir +} + +function GenerateEmbarkActionTable( entity player, entity titan, bestAction, var relTitanToPlayerDir = null ) +{ + bool useFastAnims = player.IsPlayer() && player.HasPassive( ePassives.PAS_FAST_EMBARK ) + + if ( relTitanToPlayerDir == null ) + { + relTitanToPlayerDir = CalculateTitanToPlayerDir( titan, player ) + expect vector( relTitanToPlayerDir ) + } + else + { + expect vector( relTitanToPlayerDir ) + } + + local Table = {} + Table.action <- bestAction + + if ( "animSet" in bestAction ) + { + Table.animSet <- bestAction.animSet + Table.audioSet <- bestAction.audioSet + } + else + { + local bestAnimSet + local bestAudioSet + local bestDot = -2 + Assert( "animSets" in bestAction, "Table has no animSet and no animSets!" ) + foreach ( animSet in bestAction.animSets ) + { + local dot = relTitanToPlayerDir.Dot( animSet.direction ) + + if ( dot > bestDot ) + { + bestAnimSet = animSet + bestAudioSet = animSet.audioSet + bestDot = dot + } + } + + Table.animSet <- bestAnimSet + Table.audioSet <- bestAudioSet + } + + if ( useFastAnims ) + { + Table.animSet = clone Table.animSet + + foreach ( string idx, item in Table.animSet ) + { + if ( IsString( item ) ) + Table.animSet[ idx ] = item + "_fast" + } + } + + return Table +} + +function GetBestEmbarkAction( int priority, entity player, entity titan, float dist, vector relTitanToPlayerDir ) +{ + local bestAction = null + local bestDot = -2 + + foreach ( action in level.titanEmbarkActions ) + { + if ( action.priority != priority ) + continue + + if ( dist > action.distance ) + { + //if ( IsServer() ) + //printt( "Failed: Action " + action.embark + " had dist " + action.distance + " vs actual dist " + dist ) + continue + } + + if ( action.lungeCheck ) + { + if ( player.IsNPC() ) + continue + + if ( player.Lunge_IsActive() != action.lungeCheck ) + continue + } + + local dot = relTitanToPlayerDir.Dot( action.direction ) + + if ( dot < action.minDot ) + { + //if ( IsServer() ) + //printt( "Failed: Action " + action.embark + " had dot " + dot ) + continue + } + + if ( expect bool( action.titanCanStandRequired ) && !TitanCanStand( titan ) ) + { + //if ( IsServer() ) + //printt( "Failed: Action " + action.embark + " cant stand" ) + continue + } + + if ( dot > bestDot ) + { + //if ( IsServer() ) + //printt( "Action " + action.embark + " had dot " + dot ) + bestAction = action + bestDot = dot + } + } + + return bestAction +} + +function FindBestEmbarkForNpcAnim( entity npc, entity titan ) +{ + bool doDistCheck = false + return FindBestEmbark( npc, titan, doDistCheck ) +} + + + + +bool function TitanCanStand( entity titan ) +{ + #if SERVER + vector maxs = titan.GetBoundingMaxs() + vector mins = titan.GetBoundingMins() + + vector start = titan.GetOrigin() + vector end = titan.GetOrigin() + entity soul = titan.GetTitanSoul() + entity ignoreEnt = null + + if ( IsValid( soul.soul.bubbleShield ) ) + ignoreEnt = soul.soul.bubbleShield + int mask = titan.GetPhysicsSolidMask() + //printt( "mask has " + MaskTester( mask ) ) + TraceResults result = TraceHull( start, end, mins, maxs, ignoreEnt, mask, TRACE_COLLISION_GROUP_NONE ) + //printt( "start " + start + " end " + end ) + + //DebugDrawLine( start, result.endPos, 0, 255, 0, true, 5.0 ) + //DebugDrawLine( result.endPos, end, 255, 0, 0, true, 5.0 ) + + bool canStand = result.fraction >= 1.0 + titan.SetCanStand( canStand ) + return canStand + #else + return titan.GetCanStand() != 0 + #endif +} + +bool function PlayerCanEmbarkTitan( entity player, entity titan ) //TODO: Collapse PlayerCanEmbarkTitan(), PlayerCanEmbarkIntoTitan(), PlayerCanImmediatelyEmbarkTitan() and TitanIsCurrentlyEmbarkableForPlayer() into one function +{ + PerfStart( PerfIndexClient.PlayerCanEmbarkTitan1 ) + if ( !TitanIsCurrentlyEmbarkableForPlayer( player, titan ) ) + { + PerfEnd( PerfIndexClient.PlayerCanEmbarkTitan1 ) + return false + } + PerfEnd( PerfIndexClient.PlayerCanEmbarkTitan1 ) + + PerfStart( PerfIndexClient.FindBestEmbark ) + bool res = FindBestEmbark( player, titan ) != null + PerfEnd( PerfIndexClient.FindBestEmbark ) + + return res +} + +bool function PlayerCanImmediatelyEmbarkTitan( entity player, entity titan ) //TODO: Collapse PlayerCanEmbarkTitan(), PlayerCanEmbarkIntoTitan(), PlayerCanImmediatelyEmbarkTitan() and TitanIsCurrentlyEmbarkableForPlayer() into one function +{ + if ( "embarkingPlayer" in titan.s ) + return false + + if ( player.IsNoclipping() ) + return false + + if ( !IsAlive( player ) || !IsAlive( titan ) ) + return false + + return FindBestEmbark( player, titan ) != null +} + +#if SERVER +function PlayerLungesToEmbark( entity player, entity ent ) +{ + Assert( TitanIsCurrentlyEmbarkableForPlayer( player, ent ) ) + + if ( PlayerCanImmediatelyEmbarkTitan( player, ent ) ) + { + table embarkDirection = expect table( FindBestEmbark( player, ent ) ) + thread PlayerEmbarksTitan( player, ent, embarkDirection ) + return + } + + if ( player.IsNoclipping() ) + return + + // already lunging + if ( player.Lunge_IsActive() ) + return + + if ( ShouldStopLunging( player, ent ) ) + return + + player.Lunge_SetTargetEntity( ent, false ) + player.Lunge_SetSmoothTime( 3.0 ) +} + +void function TitanBecomesPilot_UpdateRodeoRiderHud( entity playerTitan, entity npc_titan ) +{ + entity rodeoPilot = GetRodeoPilot( npc_titan ) + if ( !IsValid( rodeoPilot ) ) + return + + Remote_CallFunction_Replay( rodeoPilot, "ServerCallback_UpdateRodeoRiderHud" ) +} + +void function PilotBecomesTitan_UpdateRodeoRiderHud( entity playerTitan, entity npc_titan ) +{ + entity rodeoPilot = GetRodeoPilot( playerTitan ) + if ( !IsValid( rodeoPilot ) ) + return + + Remote_CallFunction_Replay( rodeoPilot, "ServerCallback_UpdateRodeoRiderHud" ) + +} + +void function SetSmallDisembarkFailSafeTeleportVector( vector value ) //TODO: Re-examine this for next game, probably should have different values for SP versus MP +{ + file.smallDisembarkFailSafeTeleportVector = value +} + +void function SetLargeDisembarkFailSafeTeleportVector( vector value ) //TODO: Re-examine this for next game, probably should have different values for SP versus MP +{ + file.largeDisembarkFailSafeTeleportVector = value +} + +#endif // SERVER + +#if DEV +void function SetEmbarkDebugPrint( bool value ) +{ + file.embarkDebugPrint = value +} +#endif
\ No newline at end of file diff --git a/Northstar.Custom/scripts/vscripts/weapons/mp_weapon_peacekraber.nut b/Northstar.Custom/scripts/vscripts/weapons/mp_weapon_peacekraber.nut new file mode 100644 index 00000000..a9da541f --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/weapons/mp_weapon_peacekraber.nut @@ -0,0 +1,162 @@ +untyped + +// created by JustANormalUser#0001 on discord + +global function OnWeaponPrimaryAttack_peacekraber; +global function OnWeaponDeactivate_peacekraber +global function OnWeaponActivate_peacekraber + +#if SERVER +global function OnWeaponNpcPrimaryAttack_peacekraber +#endif // #if SERVER + + +const PEACEKRABER_MAX_BOLTS = 11 // this is the code limit for bolts per frame... do not increase. +bool isWeaponActive = false; +entity clientWeapon = null; + +struct +{ + float[2][PEACEKRABER_MAX_BOLTS] boltOffsets = [ + [0.0, 0.0], // center + [0.0, 1.0], // top + [-0.683, 0.327], + [0.683, 0.327], + [-0.636, -0.683], + [0.636, -0.683], + [0.0, 0.5], + [-0.342, 0.174], + [0.342, 0.174], + [-0.318, -0.342], + [0.318, -0.342], + ] + + int maxAmmo + float ammoRegenTime +} file +// "OnWeaponActivate" "OnWeaponActivate_peacekraber" +// "OnWeaponDeactivate" "OnWeaponDeactivate_peacekraber" +void function OnWeaponActivate_peacekraber (entity weapon) { + #if CLIENT + if (!weapon.GetWeaponOwner().IsPlayer() || weapon.GetWeaponOwner() != GetLocalViewPlayer()) return; + isWeaponActive = true; + clientWeapon = weapon; + thread CrosshairCycle(); + #endif +} + +void function OnWeaponDeactivate_peacekraber (entity weapon) { + #if CLIENT + if (!weapon.GetWeaponOwner().IsPlayer() || weapon.GetWeaponOwner() != GetLocalViewPlayer()) return; + isWeaponActive = false; + #endif +} +#if CLIENT +void function CrosshairCycle() { + var rui = RuiCreate( $"ui/crosshair_shotgun.rpak", clGlobal.topoCockpitHudPermanent, RUI_DRAW_COCKPIT, 0 ) + RuiSetFloat(rui, "adjustedSpread", 0.1) + array<int> spreadFrac = [1, 0.65, 0.45, 0.2] + array<vector> colors = [<1, 1, 1>, <0.666, 1, 1>, <0.333, 1, 1>, <0, 1, 1>] + int chargeLevel; + float chargeFrac; + while (isWeaponActive) { + WaitFrame() + chargeLevel = clientWeapon.GetWeaponChargeLevel(); + chargeFrac = clientWeapon.GetWeaponChargeFraction(); + RuiSetFloat3(rui, "teamColor", colors[chargeLevel]); + switch (chargeLevel) { + case 0: + if (chargeFrac > 0.266) { + RuiSetFloat(rui, "adjustedSpread", Graph(chargeFrac, 0.266, 0.333, 0.1, 0.065)) + } + else RuiSetFloat(rui, "adjustedSpread", 0.1) + break; + case 1: + if (chargeFrac > 0.6) { + RuiSetFloat(rui, "adjustedSpread", Graph(chargeFrac, 0.6, 0.666, 0.065, 0.045)) + } + else RuiSetFloat(rui, "adjustedSpread", 0.065) + break; + case 2: + if (chargeFrac > 0.933) { + RuiSetFloat(rui, "adjustedSpread", Graph(chargeFrac, 0.933, 1, 0.045, 0.02)) + } + else RuiSetFloat(rui, "adjustedSpread", 0.045) + break; + case 3: + RuiSetFloat(rui, "adjustedSpread", 0.025) + break; + default: + break; + } + } + + RuiDestroy(rui); + clientWeapon = null; +} +#endif + +var function OnWeaponPrimaryAttack_peacekraber( entity weapon, WeaponPrimaryAttackParams attackParams ) +{ + #if CLIENT + weapon.EmitWeaponSound( "Weapon_Titan_Sniper_LevelTick_2" ) + #endif + + return FireWeaponPlayerAndNPC( attackParams, true, weapon ) +} + +#if SERVER +var function OnWeaponNpcPrimaryAttack_peacekraber( entity weapon, WeaponPrimaryAttackParams attackParams ) +{ + return FireWeaponPlayerAndNPC( attackParams, false, weapon ) +} +#endif // #if SERVER + +function FireWeaponPlayerAndNPC( WeaponPrimaryAttackParams attackParams, bool playerFired, entity weapon ) +{ + entity owner = weapon.GetWeaponOwner() + bool shouldCreateProjectile = false + if ( IsServer() || weapon.ShouldPredictProjectiles() ) + shouldCreateProjectile = true + #if CLIENT + if ( !playerFired ) + shouldCreateProjectile = false + #endif + + vector attackAngles = VectorToAngles( attackParams.dir ) + vector baseUpVec = AnglesToUp( attackAngles ) + vector baseRightVec = AnglesToRight( attackAngles ) + + if ( shouldCreateProjectile ) + { + weapon.EmitWeaponNpcSound( LOUD_WEAPON_AI_SOUND_RADIUS_MP, 0.2 ) + array<int> spreadFrac = [1, 0.65, 0.45, 0.2] + + for ( int index = 0; index < PEACEKRABER_MAX_BOLTS; index++ ) + { + vector upVec = baseUpVec * file.boltOffsets[index][1] * 0.05 * spreadFrac[weapon.GetWeaponChargeLevel()] + vector rightVec = baseRightVec * file.boltOffsets[index][0] * 0.05 * spreadFrac[weapon.GetWeaponChargeLevel()] + + vector attackDir = attackParams.dir + upVec + rightVec + float projectileSpeed = 2800 + + if ( weapon.GetWeaponClassName() == "mp_weapon_peacekraber" ) + { + projectileSpeed = 6400 + } + + entity bolt = weapon.FireWeaponBolt( attackParams.pos, attackDir, projectileSpeed, damageTypes.largeCaliber | DF_SHOTGUN, damageTypes.largeCaliber | DF_SHOTGUN, playerFired, index ) + if ( bolt ) + { + bolt.kv.gravity = 0.4 // 0.09 + + if ( weapon.GetWeaponClassName() == "mp_weapon_peacekraber" ) + bolt.SetProjectileLifetime( RandomFloatRange( 1.0, 1.3 ) ) + else + bolt.SetProjectileLifetime( RandomFloatRange( 0.50, 0.65 ) ) + } + } + } + + return 1 +}
\ No newline at end of file diff --git a/Northstar.Custom/scripts/vscripts/weapons/mp_weapon_toolgun.nut b/Northstar.Custom/scripts/vscripts/weapons/mp_weapon_toolgun.nut new file mode 100644 index 00000000..94bd7429 --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/weapons/mp_weapon_toolgun.nut @@ -0,0 +1,39 @@ +untyped +global function OnWeaponActivate_weapon_toolgun +global function OnWeaponDeactivate_weapon_toolgun +global function OnWeaponPrimaryAttack_weapon_toolgun +global function OnWeaponStartZoomIn_weapon_toolgun +global function OnWeaponStartZoomOut_weapon_toolgun +#if SERVER +global function OnWeaponNpcPrimaryAttack_weapon_toolgun +#endif + +void function OnWeaponActivate_weapon_toolgun( entity weapon ) +{ + CallToolOnEquipped( weapon.GetOwner(), weapon ) +} + +void function OnWeaponDeactivate_weapon_toolgun( entity weapon ) +{ + CallToolOnUnequipped( weapon.GetOwner(), weapon ) +} + +var function OnWeaponPrimaryAttack_weapon_toolgun( entity weapon, WeaponPrimaryAttackParams attackParams ) +{ + CallToolOnFired( weapon.GetOwner(), weapon, attackParams ) +} + +void function OnWeaponStartZoomIn_weapon_toolgun( entity weapon ) +{ + CallToolOnAds( weapon.GetOwner(), weapon ) +} + +void function OnWeaponStartZoomOut_weapon_toolgun( entity weapon ) +{ + CallToolOnUnAds( weapon.GetOwner(), weapon ) +} + +var function OnWeaponNpcPrimaryAttack_weapon_toolgun( entity weapon, WeaponPrimaryAttackParams attackParams ) +{ + // do nothing for now, maybe make it launch nukes or something later that could be funny +}
\ No newline at end of file diff --git a/Northstar.Custom/scripts/vscripts/weapons/toolgun/sh_toolgun_tool_explode.nut b/Northstar.Custom/scripts/vscripts/weapons/toolgun/sh_toolgun_tool_explode.nut new file mode 100644 index 00000000..512c538c --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/weapons/toolgun/sh_toolgun_tool_explode.nut @@ -0,0 +1,30 @@ +global function ToolgunToolCreateExplosion_Init + +void function ToolgunToolCreateExplosion_Init() +{ + AddCallback_OnToolgunToolsInit( CreateToolgunToolCreateExplosion ) +} + +void function CreateToolgunToolCreateExplosion() +{ + ToolgunTool createExplosionTool + createExplosionTool.toolName = "Create explosion" + createExplosionTool.toolDescription = "Creates an explosion" + + createExplosionTool.onFired = ToolgunToolCreateExplosion_Fire + + RegisterTool( createExplosionTool ) +} + +void function ToolgunToolCreateExplosion_Fire( entity player, entity weapon, WeaponPrimaryAttackParams attackParams ) +{ + #if SERVER + int dist = 55555 // should hit edge of map at all times ideally + vector forward = AnglesToForward( player.EyeAngles() ) + + // raycast to explosion position + TraceResults trace = TraceLine( player.EyePosition(), player.EyePosition() + ( dist * forward ), null, TRACE_MASK_NPCSOLID ) + // make explosion + Explosion( trace.endPos, player, player, 90, 90, 100, 100, 0, trace.endPos, 5000, damageTypes.explosive, eDamageSourceId.burn, "exp_small" ) + #endif +}
\ No newline at end of file diff --git a/Northstar.Custom/scripts/vscripts/weapons/toolgun/sh_toolgun_tool_throw.nut b/Northstar.Custom/scripts/vscripts/weapons/toolgun/sh_toolgun_tool_throw.nut new file mode 100644 index 00000000..d6975c6d --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/weapons/toolgun/sh_toolgun_tool_throw.nut @@ -0,0 +1,24 @@ +global function ToolgunToolThrowEntity_Init + +void function ToolgunToolThrowEntity_Init() +{ + AddCallback_OnToolgunToolsInit( CreateToolgunToolThrow ) +} + +void function CreateToolgunToolThrow() +{ + ToolgunTool throwTool + throwTool.toolName = "Throw entity" + throwTool.toolDescription = "Spawns and throws the currently selected entity type" + + throwTool.onFired = ToolgunToolThrow_OnFired + + RegisterTool( throwTool ) +} + +void function ToolgunToolThrow_OnFired( entity player, entity weapon, WeaponPrimaryAttackParams attackParams ) +{ + #if SERVER + ClientCommand( player, "ent_throw npc_frag_drone" ) + #endif +}
\ No newline at end of file diff --git a/Northstar.Custom/scripts/vscripts/weapons/toolgun/sh_toolgun_tools.gnut b/Northstar.Custom/scripts/vscripts/weapons/toolgun/sh_toolgun_tools.gnut new file mode 100644 index 00000000..4d7e9d89 --- /dev/null +++ b/Northstar.Custom/scripts/vscripts/weapons/toolgun/sh_toolgun_tools.gnut @@ -0,0 +1,196 @@ +untyped +global function ToolgunTools_Init +global function AddCallback_OnToolgunToolsInit + +global function RegisterTool +global function CallToolOnEquipped +global function CallToolOnUnequipped +global function CallToolOnFired +global function CallToolOnAds +global function CallToolOnUnAds + +#if SERVER +global function SetToolgunAmmoCount +global function SetToolgunProscreen +#endif // #if SERVER + +global struct ToolgunTool +{ + string toolName = "" + string toolDescription = "" + + void functionref( entity, entity ) onEquipped + void functionref( entity, entity ) onUnequipped + void functionref( entity, entity, WeaponPrimaryAttackParams ) onFired + void functionref( entity, entity ) onAds + void functionref( entity, entity ) onUnAds +} + +struct ToolgunPlayerSettings +{ + int selectedToolIndex + int ammoCount + int proscreenNumber +} + +// doing preprocessor defs inside the struct seemed to cause compiler errors so we define them separately +#if CLIENT +struct { + array<void functionref()> onToolgunToolsInitCallbacks + + array<ToolgunTool> tools + ToolgunPlayerSettings clientPlayerSettings +} file +#endif // #if CLIENT + +#if SERVER +struct { + array<void functionref()> onToolgunToolsInitCallbacks + + array<ToolgunTool> tools + // serverside playersettings + table<int, ToolgunPlayerSettings> playerSettings +} file +#endif // #if SERVER + +void function AddCallback_OnToolgunToolsInit( void functionref() callback ) +{ + file.onToolgunToolsInitCallbacks.append( callback ) +} + +void function ToolgunTools_Init() +{ + //#if SERVER + //AddCallback_OnClientConnecting( InitialiseToolgunSettings ) + //AddCallback_OnClientDisconnected( DestroyToolgunSettings ) + //#endif // #if SERVER + // + //// need this threaded so we can wait a frame + //thread ToolgunTools_InitThreaded() +} + +void function ToolgunTools_InitThreaded() +{ + // wait a frame for tools to all init and add their callbacks + WaitFrame() + + // call callbacks + foreach ( void functionref() callback in file.onToolgunToolsInitCallbacks ) + callback() +} + +void function RegisterTool( ToolgunTool toolStruct ) +{ + file.tools.append( toolStruct ) +} + +void function CallToolOnEquipped( entity player, entity weapon ) +{ + #if CLIENT + if ( file.tools[ file.clientPlayerSettings.selectedToolIndex ].onEquipped != null ) + file.tools[ file.clientPlayerSettings.selectedToolIndex ].onEquipped( player, weapon ) + #endif // #if CLIENT + + #if SERVER + // set ammo and proscreen numbers when equipped + weapon.SetProScreenIntValForIndex( PRO_SCREEN_INT_LIFETIME_KILLS, file.playerSettings[ player.GetPlayerIndex() ].proscreenNumber ) + weapon.SetWeaponPrimaryClipCount( file.playerSettings[ player.GetPlayerIndex() ].ammoCount ) + + if ( file.tools[ file.playerSettings[ player.GetPlayerIndex() ].selectedToolIndex ].onEquipped != null ) + file.tools[ file.playerSettings[ player.GetPlayerIndex() ].selectedToolIndex ].onEquipped( player, weapon ) + #endif // #if SERVER +} + +void function CallToolOnUnequipped( entity player, entity weapon ) +{ + #if CLIENT + if ( file.tools[ file.clientPlayerSettings.selectedToolIndex ].onUnequipped != null ) + file.tools[ file.clientPlayerSettings.selectedToolIndex ].onUnequipped( player, weapon ) + #endif // #if CLIENT + + #if SERVER + if ( file.tools[ file.playerSettings[ player.GetPlayerIndex() ].selectedToolIndex ].onUnequipped != null ) + file.tools[ file.playerSettings[ player.GetPlayerIndex() ].selectedToolIndex ].onUnequipped( player, weapon ) + #endif // #if SERVER +} + +void function CallToolOnFired( entity player, entity weapon, WeaponPrimaryAttackParams attackParams ) +{ + #if CLIENT + if ( file.tools[ file.clientPlayerSettings.selectedToolIndex ].onFired != null ) + file.tools[ file.clientPlayerSettings.selectedToolIndex ].onFired( player, weapon, attackParams ) + #endif // #if CLIENT + + #if SERVER + // ammocount needs to be +1 because we lose 1 ammo immediately after this function is run + weapon.SetWeaponPrimaryClipCount( file.playerSettings[ player.GetPlayerIndex() ].ammoCount + 1 ) + + if ( file.tools[ file.playerSettings[ player.GetPlayerIndex() ].selectedToolIndex ].onFired != null ) + file.tools[ file.playerSettings[ player.GetPlayerIndex() ].selectedToolIndex ].onFired( player, weapon, attackParams ) + #endif // #if SERVER +} + +void function CallToolOnAds( entity player, entity weapon ) +{ + #if CLIENT + if ( file.tools[ file.clientPlayerSettings.selectedToolIndex ].onAds != null ) + file.tools[ file.clientPlayerSettings.selectedToolIndex ].onAds( player, weapon ) + #endif // #if CLIENT + + #if SERVER + if ( file.tools[ file.playerSettings[ player.GetPlayerIndex() ].selectedToolIndex ].onUnequipped != null ) + file.tools[ file.playerSettings[ player.GetPlayerIndex() ].selectedToolIndex ].onUnequipped( player, weapon ) + #endif // #if SERVER +} + +void function CallToolOnUnAds( entity player, entity weapon ) +{ + #if CLIENT + if ( file.tools[ file.clientPlayerSettings.selectedToolIndex ].onUnAds != null ) + file.tools[ file.clientPlayerSettings.selectedToolIndex ].onUnAds( player, weapon ) + #endif // #if CLIENT + + #if SERVER + if ( file.tools[ file.playerSettings[ player.GetPlayerIndex() ].selectedToolIndex ].onUnequipped != null ) + file.tools[ file.playerSettings[ player.GetPlayerIndex() ].selectedToolIndex ].onUnequipped( player, weapon ) + #endif // #if SERVER +} + +#if SERVER +void function InitialiseToolgunSettings( entity player ) +{ + print( "initialising toolgun settings for player " + player ) + + ToolgunPlayerSettings playerSettings + playerSettings.selectedToolIndex = 0 + + file.playerSettings[ player.GetPlayerIndex() ] <- playerSettings +} + +void function DestroyToolgunSettings( entity player ) +{ + delete file.playerSettings[ player.GetPlayerIndex() ] +} + +void function SetToolgunAmmoCount( entity player, int ammoCount ) +{ + entity currentWeapon = player.GetActiveWeapon() + if ( ammoCount > currentWeapon.GetWeaponPrimaryClipCountMax() ) // setting clipcount to over max clipcount crashes so we need to prevent that + return + + ToolgunPlayerSettings playerSettings = file.playerSettings[ player.GetPlayerIndex() ] + playerSettings.ammoCount = ammoCount + + if ( currentWeapon.GetWeaponClassName() == "mp_weapon_toolgun" ) // set ammocount immediately if we've got toolgun equipped already + currentWeapon.SetWeaponPrimaryClipCount( ammoCount ) +} + +void function SetToolgunProscreen( entity player, int proscreenNumber ) +{ + ToolgunPlayerSettings playerSettings = file.playerSettings[ player.GetPlayerIndex() ] + playerSettings.proscreenNumber = proscreenNumber + + if ( player.GetActiveWeapon().GetWeaponClassName() == "mp_weapon_toolgun" ) // set proscreen number immediately if we've got toolgun equipped already + player.GetActiveWeapon().SetProScreenIntValForIndex( PRO_SCREEN_INT_LIFETIME_KILLS, proscreenNumber ) +} +#endif // #if SERVER
\ No newline at end of file diff --git a/Northstar.Custom/scripts/weapons/melee_pilot_emptyhanded.txt b/Northstar.Custom/scripts/weapons/melee_pilot_emptyhanded.txt new file mode 100644 index 00000000..032867af --- /dev/null +++ b/Northstar.Custom/scripts/weapons/melee_pilot_emptyhanded.txt @@ -0,0 +1,149 @@ +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" + + "weaponClass" "human" + "weaponType" "melee" + "body_type" "battle_rifle" + "fire_mode" "offhand_melee" + "never_drop" "1" + + // Models + "viewmodel" "models/weapons/empty_handed/ptpov_emptyhand.mdl" + "playermodel" "models/weapons/empty_handed/w_empty_handed_human.mdl" + + // Melee + "melee_can_hit_humansized" "1" + "melee_can_hit_titans" "0" + "melee_raise_recovery_animtime_normal" "0.75" + "melee_raise_recovery_animtime_quick" "0.4" + "melee_range" "60" + "melee_rumble_on_hit" "pilot_melee_hit" + "melee_rumble_on_hit_partial" "pilot_melee_hit_partial" + "melee_freezelook_on_hit" "0.25" + //"melee_sound_attack_1p" "Player_Melee_Backhand_1P" + "melee_sound_attack_3p" "player_melee_kick_3p" + "melee_anim_3p" "ACT_MP_MELEE_KNIFE_FIRST" + "damage_flags" "DF_MELEE | DF_KNOCK_BACK" + "impact_effect_table" "melee_human" + "impulse_force" "35000" + "offhand_keep_primary_in_hand" "1" + + "zoom_effects" "0" + + MP_BASE + { + "melee_lunge_target_range" "110" + "melee_lunge_target_angle" "30" + "melee_damage" "100" + "melee_damage_heavyarmor" "0" + "melee_attack_animtime" "0" + "melee_lunge_time" "0.3" + "melee_anim_1p_number" "2" + } + + SP_BASE + { + "melee_lunge_target_range" "130" + "melee_lunge_target_angle" "40" + "melee_damage" "125" + "melee_damage_heavyarmor" "125" + "melee_attack_animtime" "0.0" + "melee_lunge_time" "0.2" + "melee_anim_1p_number" "1" // ACT_VM_MELEE_ATTACK1, 2, or 3 + } + + // + + "ammo_suck_behavior" "melee_weapons" + "viewkick_spring" "melee" + + "viewkick_pitch_base" "-1.75" + "viewkick_pitch_random" "0.75" + "viewkick_pitch_softScale" "0.3" + "viewkick_pitch_hardScale" "5.5" + + "viewkick_yaw_base" "1.0" + "viewkick_yaw_random" "0.38" + "viewkick_yaw_softScale" "0.38" + "viewkick_yaw_hardScale" "15.5" + + "viewkick_roll_base" "0" + "viewkick_roll_randomMin" "0.6" + "viewkick_roll_randomMax" "0.8" + "viewkick_roll_softScale" "0.2" + "viewkick_roll_hardScale" "20.75" + + // + "damage_rodeo" "100" + "aimassist_disable_hipfire" "1" + "aimassist_disable_ads" "1" + + // Bob + //"bob_cycle_time" "0.45" + //"bob_vert_dist" "0.075" + //"bob_horz_dist" "0.05" + //"bob_max_speed" "150" + //"bob_pitch" "0.75" + //"bob_yaw" "1" + //"bob_roll" "-0.75" + + // Sway + //"sway_rotate_attach" "SWAY_ROTATE" + //"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" "-2" + //"sway_max_pitch" "3" + //"sway_max_yaw" "3.5" + //"sway_max_roll" "3" + //"sway_translate_gain" "10" + //"sway_rotate_gain" "12" + //"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" "-2" + //"sway_move_right_translate_y" "1" + //"sway_move_right_translate_z" "-0.5" + //"sway_move_right_rotate_roll" "4" + //"sway_move_up_translate_z" "-1" + //"sway_move_down_translate_z" "1" + //"sway_turn_left_rotate_yaw" "-1" + //"sway_turn_right_rotate_yaw" "1" + //"sway_turn_up_rotate_pitch" "1" + //"sway_turn_down_rotate_pitch" "-1" + + // WeaponED Unhandled Key/Values and custom script Key/Values + "deployfirst_time" "1.25" + "sprintcycle_time" ".55" + + Mods + { + rocket_arena + { + "melee_damage" "33" + } + + // mod for testing low damage, high knockback "shove" melee rebalance + test_push + { + "melee_damage" "5" + "impulse_force" "150000" + } + } +} diff --git a/Northstar.Custom/scripts/weapons/melee_pilot_kunai.txt b/Northstar.Custom/scripts/weapons/melee_pilot_kunai.txt new file mode 100644 index 00000000..e8b7c181 --- /dev/null +++ b/Northstar.Custom/scripts/weapons/melee_pilot_kunai.txt @@ -0,0 +1,149 @@ +WeaponData +{ + // General + "printname" "Melee" + "shortprintname" "Melee" + "description" "Description needed" + "longdesc" "Description needed" + + "menu_icon" "ui/temp" + "hud_icon" "ui/temp" + + "weaponClass" "human" + "weaponType" "melee" + "body_type" "battle_rifle" + "fire_mode" "offhand_melee" + "never_drop" "1" + + // Models + "viewmodel" "models/weapons/kunai/ptpov_kunai.mdl" + "playermodel" "models/weapons/kunai/w_kunai.mdl" + + // Melee + "melee_can_hit_humansized" "1" + "melee_can_hit_titans" "0" + "melee_raise_recovery_animtime_normal" "0.25" + "melee_raise_recovery_animtime_quick" "0.01" + "melee_range" "40" + "melee_rumble_on_hit" "pilot_melee_hit" + "melee_freezelook_on_hit" "0.0" + "melee_sound_attack_1p" "Player_Melee_Backhand_1P" + "melee_sound_attack_3p" "player_melee_kick_3p" + "melee_anim_1p_number" "1" // ACT_VM_MELEE_ATTACK1, 2, or 3 + "melee_anim_3p" "ACT_MP_MELEE_KNIFE_FIRST" + "damage_flags" "DF_MELEE | DF_KNOCK_BACK" + "impact_effect_table" "melee_human" + "impulse_force" "25000" + + "zoom_effects" "0" + + MP_BASE + { + "melee_lunge_target_range" "130" + "melee_lunge_target_angle" "30" + "melee_damage" "300" + "melee_damage_heavyarmor" "300" + "melee_attack_animtime" "1.0" + "melee_lunge_time" "0.125" + } + + SP_BASE + { + "melee_lunge_target_range" "200" + "melee_lunge_target_angle" "40" + "melee_damage" "130" + "melee_damage_heavyarmor" "130" + "melee_attack_animtime" "0.0" + "melee_lunge_time" "0.2" + } + + // + "ammo_suck_behavior" "melee_weapons" + "viewkick_spring" "melee" + + "viewkick_pitch_base" "-1.75" + "viewkick_pitch_random" "0.75" + "viewkick_pitch_softScale" "0.3" + "viewkick_pitch_hardScale" "10.5" + + "viewkick_yaw_base" "-1.0" + "viewkick_yaw_random" "0.38" + "viewkick_yaw_softScale" "0.38" + "viewkick_yaw_hardScale" "30.5" + + "viewkick_roll_base" "0" + "viewkick_roll_randomMin" "0.6" + "viewkick_roll_randomMax" "0.8" + "viewkick_roll_softScale" "0.2" + "viewkick_roll_hardScale" "10.0" + + // + "damage_rodeo" "100" + "aimassist_disable_hipfire" "1" + "aimassist_disable_ads" "1" + + // Bob + "bob_cycle_time" "0.45" + "bob_vert_dist" "0.075" + "bob_horz_dist" "0.05" + "bob_max_speed" "150" + "bob_pitch" "0.75" + "bob_yaw" "1" + "bob_roll" "-0.75" + + // 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" + + // Sway + "sway_rotate_attach" "SWAY_ROTATE" + "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" "-2" + "sway_max_pitch" "3" + "sway_max_yaw" "3.5" + "sway_max_roll" "3" + "sway_translate_gain" "10" + "sway_rotate_gain" "12" + "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" "-2" + "sway_move_right_translate_y" "1" + "sway_move_right_translate_z" "-0.5" + "sway_move_right_rotate_roll" "4" + "sway_move_up_translate_z" "-1" + "sway_move_down_translate_z" "1" + "sway_turn_left_rotate_yaw" "-1" + "sway_turn_right_rotate_yaw" "1" + "sway_turn_up_rotate_pitch" "1" + "sway_turn_down_rotate_pitch" "-1" + + // WeaponED Unhandled Key/Values and custom script Key/Values + "deployfirst_time" "1.25" + "sprintcycle_time" ".55" + + Mods + { + test_push + { + "melee_damage" "5" + "impulse_force" "50000" + } + } +} diff --git a/Northstar.Custom/scripts/weapons/mp_weapon_peacekraber.txt b/Northstar.Custom/scripts/weapons/mp_weapon_peacekraber.txt new file mode 100644 index 00000000..c5e61f93 --- /dev/null +++ b/Northstar.Custom/scripts/weapons/mp_weapon_peacekraber.txt @@ -0,0 +1,347 @@ +WeaponData +{ + // General + "printname" "#WPN_PEACEKRABER" + "shortprintname" "#WPN_PEACEKRABER_SHORT" + "description" "#WPN_PEACEKRABER_DESC" + "longdesc" "#WPN_PEACEKRABER_LONGDESC" + "weaponClass" "human" + "weaponSubClass" "projectile_shotgun" + "body_type" "close_quarters" + "fire_mode" "semi-auto" + "pickup_hold_prompt" "Hold [USE] [WEAPONNAME]" + "pickup_press_prompt" "[USE] [WEAPONNAME]" + "aimassist_adspull_weaponclass" "broad" + "minimap_reveal_distance" "32000" + "leveled_pickup" "0" + + "viewmodel" "models/weapons/at_rifle/ptpov_at_rifle.mdl" + "playermodel" "models/weapons/at_rifle/w_at_rifle.mdl" + + "OnWeaponActivate" "OnWeaponActivate_peacekraber" + "OnWeaponDeactivate" "OnWeaponDeactivate_peacekraber" + "OnWeaponPrimaryAttack" "OnWeaponPrimaryAttack_peacekraber" + "OnWeaponChargeLevelIncreased" "OnWeaponChargeLevelIncreased_titanweapon_sniper" + "OnWeaponNpcPrimaryAttack" "OnWeaponNpcPrimaryAttack_peacekraber" + + "projectilemodel" "models/dev/empty_model.mdl" + "tracer_effect" "weapon_tracers_shotgun" + "impact_effect_table" "inc_bullet" + "projectile_trail_effect_0" "P_plasma_proj_MD" + "vortex_absorb_effect" "wpn_vortex_projectile_shotgun_FP" + "vortex_absorb_effect_third_person" "wpn_vortex_projectile_shotgun" + "vortex_absorb_sound" "Vortex_Shield_AbsorbBulletSmall" + "vortex_absorb_sound_1P_VS_3P" "Vortex_Shield_AbsorbBulletSmall_1P_VS_3P" + + // Menu + "menu_category" "special" + "menu_anim_class" "medium" + "stat_damage" "98" + "stat_range" "15" + "stat_accuracy" "15" + "stat_rof" "20" + + "ammo_display" "bar" + "impulse_force" "10000" + + "impact_effect_table" "titan_shotgun_bullet" + + "charge_time" "1.5" + "charge_levels" "3" + "charge_cooldown_time" "1.5" + "charge_cooldown_delay" "1.25" + "charge_is_triggered_by_ADS" "1" + "charge_end_forces_fire" "0" + "charge_sound_1p" "Weapon_Titan_Sniper_WindUp" + "charge_sound_stop_when_full" "1" + "charge_sound_seek_to_charge_fraction" "1" + "charge_full_sound_1p" "Weapon_Titan_Sniper_SustainLoop" + "charge_drain_sound_1p" "Weapon_Titan_Sniper_WindDown" + "charge_drain_sound_stop_when_empty" "1" + "charge_drain_sound_seek_to_charge_fraction" "1" + // Spread + "spread_stand_hip" "0" + "spread_stand_hip_run" "0" + "spread_stand_hip_sprint" "0" + "spread_stand_ads" "0" + "spread_crouch_hip" "0" + "spread_crouch_ads" "0" + "spread_air_hip" "0" + "spread_air_ads" "0" + + // Damage - When Used by Players + "damage_type" "bullet" + "damage_near_distance" "500" + "damage_far_distance" "1000" + "damage_near_value" "11" + "damage_far_value" "11" + "damage_near_value_titanarmor" "20" + "damage_far_value_titanarmor" "15" + + // Ammo + "ammo_stockpile_max" "20" + "ammo_default_total" "25" + "ammo_clip_size" "5" + "ammo_size_segmented_reload" "5" + "ammo_display_as_clips" "0" + "reload_is_segmented" "0" + + "reload_time" "2.45" + "reload_time_late1" "2.175" + "reload_time_late2" "0" + "reloadempty_time" "3.35" + "reloadempty_time_late1" "2.5" + "reloadempty_time_late2" "1.7" + "reloadempty_time_late2" "1.1" + "rechamber_time" "0.756" + "viewmodel_offset_ads" "0 0 0" + + + "vortex_absorb_effect" "wpn_vortex_projectile_40mm_FP" + "vortex_absorb_effect_third_person" "wpn_vortex_projectile_40mm" + "vortex_absorb_sound" "Vortex_Shield_AbsorbBulletLarge" + "vortex_absorb_sound_1p_vs_3p" "Vortex_Shield_AbsorbBulletLarge_1P_VS_3P" + + "sound_dryfire" "shotgun_dryfire" + "fire_sound_1_player_1p" "Weapon_Leadwall_Fire_1P" + "fire_sound_1_player_3p" "Weapon_Leadwall_Fire_3P" + "fire_sound_1_npc" "Weapon_Leadwall_Fire_3P" + "sound_zoom_in" "Weapon_EVA8_ADS_In" + "sound_zoom_out" "Weapon_EVA8_ADS_Out" + + "fx_shell_eject_view" "wpn_shelleject_shotshell_FP" + "fx_shell_eject_world" "wpn_shelleject_shotshell" + "fx_shell_eject_attach" "shell" + + "fx_muzzle_flash_view" "wpn_muzzleflash_40mm_fp" + "fx_muzzle_flash_world" "wpn_muzzleflash_40mm" + "fx_muzzle_flash_attach" "muzzle_flash" + + "critical_hit_damage_scale" "1.3" + "critical_hit" "1" + "projectile_inherit_owner_velocity_scale" "0.2" + + "bolt_hitsize" "0.5" + "bolt_hitsize_grow1_time" "0.075" + "bolt_hitsize_grow1_size" "4.0" + "bolt_hitsize_grow2_time" "0.075" + "bolt_hitsize_grow2_size" "4.0" + "bolt_hitsize_growfinal_lerptime" "0.18" + "bolt_hitsize_growfinal_size" "6.0" + "bolt_bounce_frac" "1.0" + + + "bolt_gravity_enabled" "1" + + // Behavior + "fire_rate" "1.33" + "zoom_time_in" "0.2" + "zoom_time_out" "0.2" + "zoom_fov" "50" + "holster_time" "0.5" + "deploy_time" "0.8" + "lower_time" "0.25" + "raise_time" "0.3" + "vortex_refire_behavior" "bullet" + "allow_empty_fire" "0" + "reload_enabled" "1" + "allow_empty_click" "1" + "empty_reload_only" "0" + "trigger_snipercam" "0" + "allow_headshots" "0" + "primary_fire_does_not_block_sprint" "1" + "ads_move_speed_scale" "0.5" + "aimassist_disable_hipfire" "0" + "aimassist_disable_ads" "0" + "aimassist_disable_hipfire_titansonly" "1" + "aimassist_disable_ads_titansonly" "1" + + "ammo_suck_behavior" "primary_weapons" + + // View Kick + "viewkick_spring" "shotgun" + + "viewkick_pitch_base" "-2.25" + "viewkick_pitch_random" "1" + "viewkick_pitch_softScale" "0.4" + "viewkick_pitch_hardScale" "2.0" + + "viewkick_yaw_base" "-0.95" + "viewkick_yaw_random" "0.5" + "viewkick_yaw_softScale" "0.5" + "viewkick_yaw_hardScale" "2.0" + + "viewkick_roll_base" "0" + "viewkick_roll_randomMin" "0.6" + "viewkick_roll_randomMax" "0.8" + "viewkick_roll_softScale" "0.2" + "viewkick_roll_hardScale" "2.75" + + "viewkick_hipfire_weaponFraction" "0.1" + "viewkick_hipfire_weaponFraction_vmScale" "0.0" + "viewkick_ads_weaponFraction" "1.0" + "viewkick_ads_weaponFraction_vmScale" "0.15" + + "viewkick_perm_pitch_base" "0" + "viewkick_perm_pitch_random" "0.0" + + // + "viewmodel_shake_forward" "0.5" + "viewmodel_shake_up" "0.2" + "viewmodel_shake_right" "0.0" + + // Bob + //"bob_cycle_time" "0.45" + //"bob_vert_dist" "0.1" + //"bob_horz_dist" "0.1" + //"bob_max_speed" "150" + //"bob_pitch" "0.75" + //"bob_yaw" "0.5" + //"bob_roll" "-0.75" + + + // Rumble + "fire_rumble" "pilot_singleshot_strong_fire" + + // Sway + "sway_rotate_attach" "SWAY_ROTATE" + "sway_min_x" "-0.5" + "sway_min_y" "-0.4" + "sway_min_z" "-0.6" + "sway_max_x" "0.5" + "sway_max_y" "0.4" + "sway_max_z" "0.6" + "sway_min_pitch" "-3" + "sway_min_yaw" "-2.5" + "sway_min_roll" "-4" + "sway_max_pitch" "3" + "sway_max_yaw" "2.5" + "sway_max_roll" "4" + "sway_translate_gain" "2.5" + "sway_rotate_gain" "7" + "sway_move_forward_translate_x" "-0.1" + "sway_move_forward_translate_z" "-0.5" + "sway_move_back_translate_x" "0.2" + "sway_move_back_translate_z" "-0.2" + "sway_move_left_translate_y" "-1" + "sway_move_left_translate_z" "-0.5" + "sway_move_left_rotate_roll" "-4" + "sway_move_right_translate_y" "1" + "sway_move_right_translate_z" "-0.5" + "sway_move_right_rotate_roll" "4" + "sway_move_up_translate_z" "-1" + "sway_move_down_translate_z" "1" + "sway_turn_left_rotate_yaw" "1" + "sway_turn_right_rotate_yaw" "-1" + + "sway_turn_left_translate_y" "-.2" + "sway_turn_right_translate_y" ".2" + "sway_turn_up_translate_z" "-.2" + "sway_turn_down_translate_z" ".2" + "sway_turn_up_translate_x" "-.1" + "sway_turn_down_translate_x" ".1" + + "sway_turn_left_rotate_roll" "-4" + "sway_turn_right_rotate_roll" "4" + "sway_turn_up_rotate_pitch" "-3" + "sway_turn_down_rotate_pitch" "3" + "sway_turn_up_rotate_roll" "0.8" + "sway_turn_down_rotate_roll" "-0.8" + + // Zoomed Sway + "sway_rotate_attach_zoomed" "SWAY_ROTATE_ZOOMED" + "sway_rotate_attach_blend_time_zoomed" "0.2" + "sway_rotate_gain_zoomed" "5" + + "sway_min_yaw_zoomed" "-0.04" + "sway_max_yaw_zoomed" "0.04" + "sway_turn_left_rotate_yaw_zoomed" "-0.085" + "sway_turn_right_rotate_yaw_zoomed" "0.085" + + "sway_min_roll_zoomed" "-1" + "sway_max_roll_zoomed" "1" + "sway_turn_left_rotate_roll_zoomed" "-1" + "sway_turn_right_rotate_roll_zoomed" "1" + + "sway_move_right_rotate_roll_zoomed" "0.2" + "sway_move_left_rotate_roll_zoomed" "-0.2" + + "sway_min_pitch_zoomed" "-0.01" + "sway_max_pitch_zoomed" "0.01" + "sway_turn_up_rotate_pitch_zoomed" "0.09" + "sway_turn_down_rotate_pitch_zoomed" "-0.09" + + // NPC + "proficiency_poor_spreadscale" "7.0" + "proficiency_average_spreadscale" "5.0" + "proficiency_good_spreadscale" "3.33333" + "proficiency_very_good_spreadscale" "3.66667" + + "npc_min_range" "0" + "npc_max_range" "1250" + + "npc_min_burst" "1" + "npc_max_burst" "1" + "npc_rest_time_between_bursts_min" "1.25" + "npc_rest_time_between_bursts_max" "1.75" + + // WeaponED Unhandled Key/Values and custom script Key/Values + "bob_tilt_angle" "0.5" + "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.15" + "sway_move_origin_factor" "0.15" + "sway_move_angle_factor_zoomed" "0" + "sway_move_origin_factor_zoomed" "0.03" + "sway_gain" "10.0" + "deployfirst_time" "1.0" + "deploycatch_time" "1.33" + "sprintcycle_time" ".55" + "sprint_fractional_anims" "0" + + "projectile_lifetime" "0.5" + "projectile_damage_reduction_per_bounce" "0.0" + "projectile_damages_owner" "0" + + // Crosshair + "red_crosshair_range" "300" + active_crosshair_count "0" + + "ui6_enable" "1" + UiData6 + { + "ui" "ui/b3wing_ammo_counter" + "mesh" "models/weapons/attachments/sniper_scope_rui_upper" + Args + { + ammo weapon_ammo + clipSize weapon_clipSize + clipCount weapon_stockpileClipCount + } + } + RUI_CrosshairData + { + DefaultArgs + { + adjustedSpread weapon_spread + isSprinting player_is_sprinting + isReloading weapon_is_reloading + teamColor crosshair_team_color + isAmped weapon_is_amped + chargeFrac player_chargeFrac + crosshairMovementX weapon_is_reloading + crosshairMovementY weapon_is_reloading + } + + Crosshair_2 + { + "ui" "ui/crosshair_lstar" + "base_spread" "4" + Args + { + + } + } +}
\ No newline at end of file diff --git a/Northstar.Custom/scripts/weapons/mp_weapon_sniper.txt b/Northstar.Custom/scripts/weapons/mp_weapon_sniper.txt new file mode 100644 index 00000000..ede43d7d --- /dev/null +++ b/Northstar.Custom/scripts/weapons/mp_weapon_sniper.txt @@ -0,0 +1,651 @@ +WeaponData +{ + // General + "printname" "#WPN_SNIPER" + "shortprintname" "#WPN_SNIPER_SHORT" + "description" "#WPN_SNIPER_DESC" + "longdesc" "#WPN_SNIPER_LONGDESC" + + "menu_icon" "r2_ui/menus/loadout_icons/primary_weapon/primary_kraber" + "hud_icon" "r2_ui/menus/loadout_icons/primary_weapon/primary_kraber" + + "weaponClass" "human" + "weaponSubClass" "sniper" + "body_type" "heavy" + "fire_mode" "semi-auto" + "pickup_hold_prompt" "Hold [USE] [WEAPONNAME]" + "pickup_press_prompt" "[USE] [WEAPONNAME]" + "minimap_reveal_distance" "32000" + "leveled_pickup" "1" + + "OnWeaponActivate" "OnWeaponActivate_weapon_sniper" + "OnClientAnimEvent" "OnClientAnimEvent_weapon_sniper" + "OnWeaponPrimaryAttack" "OnWeaponPrimaryAttack_weapon_sniper" + "OnWeaponNpcPrimaryAttack" "OnWeaponNpcPrimaryAttack_weapon_sniper" + "OnProjectileCollision" "OnProjectileCollision_weapon_sniper" + + "viewmodel_offset_ads" "0 0 0" + + // Menu + "menu_category" "sniper" + "menu_anim_class" "large" + "stat_damage" "100" + "stat_range" "100" + "stat_accuracy" "60" + "stat_rof" "15" + + "ads_dof_disable" "1" + + // Models + "viewmodel" "models/weapons/at_rifle/ptpov_at_rifle.mdl" + "playermodel" "models/weapons/at_rifle/w_at_rifle.mdl" + "projectilemodel" "models/weapons/bullets/projectile_20mm.mdl" + + // Effects + "impact_effect_table" "titan_bullet" + "projectile_trail_effect_0" "weapon_kraber_projectile" + "projectile_do_predict_impact_effects" "1"//0" + "vortex_absorb_effect" "wpn_vortex_projectile_20mm_FP" + "vortex_absorb_effect_third_person" "wpn_vortex_projectile_20mm" + "vortex_absorb_sound" "Vortex_Shield_AbsorbBulletLarge" + "vortex_absorb_sound_1p_vs_3p" "Vortex_Shield_AbsorbBulletLarge_1P_VS_3P" + "projectile_adjust_to_gun_barrel" "1" + + // Sounds + "sound_dryfire" "rifle_dryfire" + "sound_pickup" "wpn_pickup_Rifle_1P" + "sound_zoom_in" "Weapon_Rangemaster_Kraber_ADS_In" + "sound_zoom_out" "Weapon_Rangemaster_Kraber_ADS_Out" + "fire_sound_1_player_1p" "large_shell_drop" + "fire_sound_1_player_3p" "large_shell_drop" + "fire_sound_1_npc" "large_shell_drop" + "fire_sound_2_player_1p" "Weapon_Kraber_Fire_1P" + "fire_sound_2_player_3p" "Weapon_Kraber_Fire_3P" + "fire_sound_2_npc" "Weapon_Kraber_Fire_npc" + + "low_ammo_sound_name_1" "Kraber_LowAmmo_Shot1" + "low_ammo_sound_name_2" "Kraber_LowAmmo_Shot2" + "low_ammo_sound_name_3" "Kraber_LowAmmo_Shot3" + + "fx_shell_eject_view" "wpn_shelleject_rifle_large_FP" + "fx_shell_eject_world" "wpn_shelleject_rifle_large" + "fx_shell_eject_attach" "shell" + "fx_shell_eject_attach_scoped" "shell_scoped" + + "fx_muzzle_flash_view" "wpn_muzzleflash_snp_hmn_FP" + "fx_muzzle_flash_world" "wpn_muzzleflash_snp_hmn" + "fx_muzzle_flash_attach" "muzzle_flash" + "fx_muzzle_flash_attach_scoped" "muzzle_flash_scoped" + + // Bolt info + "bolt_hitsize" "0.0" + "bolt_hitsize_grow1_time" "0.035" + "bolt_hitsize_grow1_size" "0.5" + "bolt_hitsize_grow2_time" "0.08" + "bolt_hitsize_grow2_size" "1.0" + "bolt_hitsize_growfinal_lerptime" "0.18" + "bolt_hitsize_growfinal_size" "2.0" + + "bolt_gravity_enabled" "1" + "bolt_gravity_amount" "0.2500"//0.500" + + "bolt_bounce_frac" "0.000" + "projectile_damage_reduction_per_bounce" "0.0" + "projectile_damages_owner" "0" + "projectile_ricochet_max_count" "0" + + "pass_through_depth" "64" + "pass_through_damage_preserved_scale" "1" + + "bolt_speed" "10000" + + // Damage - When Used by Players + "damage_flags" "DF_BULLET | DF_KNOCK_BACK | DF_DISMEMBERMENT" + "damage_type" "bullet" + + "damage_headshot_scale" "1.5" + + "impulse_force" "10" + + "ammo_clip_size" "4" + + "titanarmor_critical_hit_required" "1" + "critical_hit" "1" + + + MP_BASE + { + "ammo_default_total" "40" + "ammo_stockpile_max" "40" + "ammo_no_remove_from_stockpile" "1" + "ammo_min_to_fire" "1" + + + "damage_near_value" "350" + "damage_far_value" "350" + "damage_near_value_titanarmor" "430" + "damage_far_value_titanarmor" "430" + "damage_rodeo" "900" + "damage_near_distance" "2000" + "damage_far_distance" "15000" + + "red_crosshair_range" "15000" + + "critical_hit_damage_scale" "1" + + // Damage - When Used by NPCs + "npc_damage_near_value" "49" + "npc_damage_far_value" "49" + "npc_damage_near_value_titanarmor" "50" + "npc_damage_far_value_titanarmor" "25" + + "npc_accuracy_multiplier_pilot" "1.0" + + "npc_suppress_lsp_allowed" "0" + + "enable_highlight_networking_on_creation" "<KEEP_DEFAULT>" + + "damage_heavyarmor_nontitan_scale" "0.35" + + "zoom_toggle_lerp_time" "<KEEP_DEFAULT>" + "zoom_toggle_fov" "<KEEP_DEFAULT>" + } + + SP_BASE + { + "zoom_toggle_lerp_time" "0.2" + "zoom_toggle_fov" "7" + + "ammo_default_total" "12" + "ammo_stockpile_max" "28" + "ammo_no_remove_from_stockpile" "0" + "ammo_min_to_fire" "1" + + + "damage_near_value" "200" + "damage_far_value" "200" + "damage_near_value_titanarmor" "500" + "damage_far_value_titanarmor" "500" + "damage_rodeo" "900" + "damage_near_distance" "2000" + "damage_far_distance" "15000" + + "red_crosshair_range" "15000" + + "critical_hit_damage_scale" "1.5" + + // Damage - When Used by NPCs + "npc_damage_near_value" "49" + "npc_damage_far_value" "49" + "npc_damage_near_value_titanarmor" "50" + "npc_damage_far_value_titanarmor" "25" + + "npc_accuracy_multiplier_pilot" "3.0" + + "npc_suppress_lsp_allowed" "<KEEP_DEFAULT>" + + "enable_highlight_networking_on_creation" "1" + + "damage_heavyarmor_nontitan_scale" "1" + } + + // NPC + "proficiency_poor_spreadscale" "3.0" + "proficiency_average_spreadscale" "2.2" + "proficiency_good_spreadscale" "2.0" + "proficiency_very_good_spreadscale" "1.5" + + "npc_min_engage_range" "500" + "npc_max_engage_range" "8000" + "npc_min_engage_range_heavy_armor" "500" + "npc_max_engage_range_heavy_armor" "8000" + "npc_min_range" "0" + "npc_max_range" "8000" + + "npc_min_burst" "1" + "npc_max_burst" "1" + "npc_rest_time_between_bursts_min" "2.0" + "npc_rest_time_between_bursts_max" "3.0" + + "dof_zoom_nearDepthStart" "0" + "dof_zoom_nearDepthEnd" "0" + "dof_nearDepthStart" "4.750" + "dof_nearDepthEnd" "9" + + // Behavior + "fire_rate" "1.85" + "zoom_time_in" "0.4"//0.48"//1.1"//1.25"//0.45" + "zoom_time_out" "0.3" + "zoom_fov" "26.26" //3x zoom + "zoom_scope_frac_start" "0.2"//0.2" + "zoom_scope_frac_end" "0.7"//0.85" + "zoom_angle_shift_pitch" "0.3" + "zoom_angle_shift_yaw" "0.65" + "rechamber_time" "1.60"//1.30" + "reload_time" "2.5" + "reload_time_late1" "1.52" + "reload_time_late2" "0.63" + "reloadempty_time" "3.61" + "reloadempty_time_late1" "2.63" + "reloadempty_time_late2" "1.75" + "reloadempty_time_late3" "0.55" + "holster_time" "0.5" + "deploy_time" "0.8" + "lower_time" "0.25" + "raise_time" "0.3" + "vortex_refire_behavior" "bullet" + "allow_empty_fire" "0" + "reload_enabled" "1" + "allow_empty_click" "1" + "empty_reload_only" "0" + "trigger_snipercam" "1" + "allow_headshots" "1" + "ads_move_speed_scale" "0.5"//0.35" + "aimassist_disable_hipfire" "1" + "aimassist_disable_ads" "1" + "aimassist_disable_hipfire_titansonly" "1" + "aimassist_disable_ads_titansonly" "1" + "gamepad_use_yaw_speed_for_pitch_ads" "1" + "ads_fov_zoomfrac_start" "0.5" + "ads_fov_zoomfrac_end" "0.9" + + "sprint_fractional_anims" "0" + + // Spread + "spread_stand_hip" "10" + "spread_stand_hip_run" "12" + "spread_stand_ads" "0.0" //"0.1" + "spread_crouch_hip" "8" + "spread_crouch_ads" "0" + "spread_air_hip" "12" + "spread_air_ads" "0.0" //".15" + + "ammo_suck_behavior" "primary_weapons" + + // View Kick + "viewkick_spring" "sniper" + + "viewkick_pitch_base" "-0.5625"//"-1.25"// + "viewkick_pitch_random" "0.0225"//"0.05"// + "viewkick_pitch_softScale" "0.8" + "viewkick_pitch_hardScale" "2" + + "viewkick_yaw_base" "-0.135"//"-0.3"// + "viewkick_yaw_random" "0.045"//"0.1"// + "viewkick_yaw_softScale" "1.0" + "viewkick_yaw_hardScale" "1.5" + + "viewkick_roll_base" "0" + "viewkick_roll_randomMin" "0.5" + "viewkick_roll_randomMax" "0.5" + "viewkick_roll_softScale" "0.2" + "viewkick_roll_hardScale" "3.0" + + "viewkick_hipfire_weaponFraction" "0.4" + "viewkick_hipfire_weaponFraction_vmScale" "0.55" + "viewkick_ads_weaponFraction" "0.0"//"0.45"// + "viewkick_ads_weaponFraction_vmScale" "0.0"//"-0.3"// + + "viewkick_perm_pitch_base" "0.0" + "viewkick_perm_pitch_random" "0.0" + "viewkick_perm_pitch_random_innerexclude" "0.0" + "viewkick_perm_yaw_base" "0.0" + "viewkick_perm_yaw_random" "0.0" + "viewkick_perm_yaw_random_innerexclude" "0.0" + + // + "viewmodel_shake_forward" "0.5" + "viewmodel_shake_up" "0.1" + "viewmodel_shake_right" "0.0" + + // 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.0025" + "bob_horz_dist_zoomed" "0.0025" + "bob_max_speed_zoomed" "150" + //"bob_pitch_zoomed" "0.002" + //"bob_yaw_zoomed" "-.002" + //"bob_roll_zoomed" ".002" + + // Rumble + "fire_rumble" "rumble_sniper" + + // Sway + "sway_rotate_attach" "SWAY_ROTATE" + "sway_min_x" "-0.5" + "sway_min_y" "-0.5" + "sway_min_z" "-0.6" + "sway_max_x" "0.5" + "sway_max_y" "0.5" + "sway_max_z" "0.6" + "sway_min_pitch" "-3" + "sway_min_yaw" "-2.5" + "sway_min_roll" "-4" + "sway_max_pitch" "3" + "sway_max_yaw" "2.5" + "sway_max_roll" "4" + "sway_translate_gain" "2.5" + "sway_rotate_gain" "7" + "sway_move_forward_translate_x" "-0.1" + "sway_move_forward_translate_z" "-0.5" + "sway_move_back_translate_x" "0.2" + "sway_move_back_translate_z" "-0.2" + "sway_move_left_translate_y" "-1" + "sway_move_left_translate_z" "-0.5" + "sway_move_left_rotate_roll" "-4" + "sway_move_right_translate_y" "1" + "sway_move_right_translate_z" "-0.5" + "sway_move_right_rotate_roll" "4" + "sway_move_up_translate_z" "-1" + "sway_move_down_translate_z" "1" + "sway_turn_left_rotate_yaw" "-2.5" + "sway_turn_right_rotate_yaw" "2.5" + + "sway_turn_left_translate_y" ".5" + "sway_turn_right_translate_y" "-.5" + "sway_turn_up_translate_z" ".2" + "sway_turn_down_translate_z" "-.2" + "sway_turn_up_translate_x" ".1" + "sway_turn_down_translate_x" "-.1" + + "sway_turn_left_rotate_roll" "4" + "sway_turn_right_rotate_roll" "-4" + "sway_turn_up_rotate_pitch" "3" + "sway_turn_down_rotate_pitch" "-3" + "sway_turn_up_rotate_roll" "-0.8" + "sway_turn_down_rotate_roll" "0.8" + + // Zoomed Sway + "sway_rotate_attach_zoomed" "jx_c_pov" + "sway_rotate_attach_blend_time_zoomed" "0.2" + "sway_rotate_gain_zoomed" "5" + + "sway_min_yaw_zoomed" "-0.085" + "sway_max_yaw_zoomed" "0.085" + "sway_turn_left_rotate_yaw_zoomed" "0.085" + "sway_turn_right_rotate_yaw_zoomed" "-0.085" + + "sway_min_roll_zoomed" "-1" + "sway_max_roll_zoomed" "1" + "sway_turn_left_rotate_roll_zoomed" "-1" + "sway_turn_right_rotate_roll_zoomed" "1" + + "sway_move_right_rotate_roll_zoomed" "0.2" + "sway_move_left_rotate_roll_zoomed" "-0.2" + + "sway_min_pitch_zoomed" "-0.25" + "sway_max_pitch_zoomed" "0.25" + "sway_turn_up_rotate_pitch_zoomed" "-0.25" + "sway_turn_down_rotate_pitch_zoomed" "0.25" + + // WeaponED Unhandled Key/Values and custom script Key/Values + "sprintcycle_time" ".55" + "is_sniper" "1" + + // Bodygroups: + "bodygroup1_name" "scope_dcom" + "bodygroup1_set" "1" + "bodygroup2_name" "scope_zoom" + "bodygroup2_set" "0" + "bodygroup3_name" "ammo" + "bodygroup3_set" "1" + "bodygroup4_name" "scope_outline" + "bodygroup4_set" "0" + "bodygroup5_name" "scope_oracle" + "bodygroup5_set" "0" + "bodygroup6_name" "proscreen" + "bodygroup6_set" "0" + // "bodygroup7_name" "suppressor_sq_lg" + // "bodygroup7_set" "0" + + "bodygroup_ads_scope_name" "ads_scopes" + "bodygroup_ads_scope_set" "3" + + + "anim_alt_idleAttack" "0" + + "clip_bodygroup" "at_rifle_magazine" + "clip_bodygroup_index_shown" "0" + "clip_bodygroup_index_hidden" "1" + "clip_bodygroup_show_for_milestone_0" "1" + "clip_bodygroup_show_for_milestone_1" "0" + "clip_bodygroup_show_for_milestone_2" "1" + "clip_bodygroup_show_for_milestone_3" "1" + + "bodygroup_ammo_index_count" "6" + + Mods + { + iron_sights + { + + } + scope_4x + { + //Use this for Variable Zoom + "ui7_enable" "1" + + "bodygroup1_set" "0" + "bodygroup2_set" "0" + "bodygroup4_set" "1" + "bodygroup5_set" "0" + "bodygroup_ads_scope_set" "2" + "zoom_toggle_lerp_time" "0.2" + "zoom_toggle_fov" "7" + //"ui6_enable" "1" + } + extended_ammo + { + "ammo_stockpile_max" "90" + "ammo_clip_size" "7" + "ammo_default_total" "90" + } + stabilizer + { + "bodygroup1_set" "0" + "bodygroup2_set" "0" + "bodygroup4_set" "0" + "bodygroup5_set" "1" + "bodygroup_ads_scope_set" "0" + + // "viewdrift_ads_stand_scale_pitch" "*0.5" + // "viewdrift_ads_crouch_scale_pitch" "*0.5" + // "viewdrift_ads_air_scale_pitch" "*0.5" + // "viewdrift_ads_air_scale_yaw" "*0.5" + // "viewdrift_ads_stand_scale_yaw" "*0.5" + // "viewdrift_ads_crouch_scale_yaw" "*0.5" + // "viewdrift_ads_speed_pitch" "*0.5" + // "viewdrift_ads_speed_yaw" "*0.5" + + "viewmodel_offset_ads" "0 -2.95 0.31" + //"viewmodel_offset_lerp_endFrac" "1" + + "ads_fov_zoomfrac_start" "0.3" + "ads_fov_zoomfrac_end" "0.8" + + "dof_zoom_nearDepthStart" "7.0" + "dof_zoom_nearDepthEnd" "7.2" + + "anim_alt_idleAttack" "1" + } + ricochet + { + "bolt_bounce_frac" "0.7" + "projectile_damage_reduction_per_bounce" "0.0" + "projectile_damages_owner" "0" + "projectile_ricochet_max_count" "2" + } + slammer + { + } + threat_scope + { + "bodygroup1_set" "0" + "bodygroup2_set" "1" + "bodygroup4_set" "0" + "bodygroup5_set" "0" + "bodygroup_ads_scope_set" "1" + + "threat_scope_enabled" "1" + "threat_scope_bounds_width" "1.5" + "threat_scope_bounds_height" "1.1" + "threat_scope_zoomfrac_start" "0.85" + "viewmodel_offset_ads" "0 0.5 0" + dof_zoom_focusArea_horizontal 0.068 + dof_zoom_focusArea_top 0.065 + dof_zoom_focusArea_bottom -0.046 + } + pro_screen + { + "ui8_enable" "1" + "bodygroup6_set" "1" + } + tactical_cdr_on_kill + { + + } + pas_fast_reload + { + "reload_time" "*0.7" + "reload_time_late1" "*0.7" + "reloadempty_time" "*0.7" + "reloadempty_time_late1" "*0.7" + } + pas_fast_ads + { + //Fast ADS + "zoom_time_in" "*0.5" + "zoom_time_out" "*0.6" + } + pas_fast_swap + { + //Fast Swap + "fast_swap_to" "1" + } + burn_mod_sniper + { + "is_burn_mod" "1" + //FX + "fx_muzzle_flash_view" "wpn_muzzleflash_snp_hmn_FP_burn" + "fx_muzzle_flash_world" "wpn_muzzleflash_snp_hmn_burn" + "projectile_trail_effect_0" "weapon_kraber_projectile_burn" + //"impact_effect_table" "titan_bullet_elec" + + "damage_near_value" "450" + "damage_far_value" "450" + "damage_near_value_titanarmor" "580" + "damage_far_value_titanarmor" "580" + + // reimplement tf1 amped kraber + "explosion_damage" "150" + "explosion_damage_heavy_armor" "150" + "explosion_inner_radius" "25" + "explosionradius" "75" + "explosion_shake_radius" "250" + "explosion_shake_amplitude" "10" + "explosion_shake_frequency" "50" + "explosion_shake_duration" "0.6" + "impact_effect_table" "exp_small" + } + pve_elite + { + //"ammo_stockpile_max" "90" + //"ammo_clip_size" "7" + //"ammo_default_total" "90" + //"reload_time" "0.1" + //"fire_rate" "0.1" + "npc_damage_near_value" "70" + "npc_damage_far_value" "70" + } + } + + "ui1_enable" "1" + UiData1 + { + "ui" "ui/kraber_ammo_counter" + "mesh" "models/weapons/attachments/kraber_rui_lower" + Args + { + vis player_zoomfrac + ammo weapon_ammo + clipSize weapon_clipSize + } + } + + "ui6_enable" "0" + UiData6 + { + "ui" "ui/red_dot_basic" + "mesh" "models/weapons/attachments/sniper_scope_rui_upper" + Args + { + vis player_zoomfrac + ammo weapon_ammo + clipSize weapon_clipSize + clipCount weapon_stockpileClipCount + } + } + + "ui7_enable" "0" + UiData7 + { + "ui" "ui/variable_zoom_crosshair" + "mesh" "models/weapons/attachments/attach_scope_ads_2_crosshair" + Args + { + vis player_zoomfrac + ammo weapon_ammo + clipSize weapon_clipSize + clipCount weapon_stockpileClipCount + } + } + + "ui8_enable" "0" + UiData8 + { + "ui" "ui/pro_screen_panel" + "mesh" "models/weapons/attachments/pro_screen_rui_upper" + Args + { + proValue proscreen_int0 + proOwnedByPlayer proscreen_owner_is_player + } + } + + active_crosshair_count "1" + rui_crosshair_index "0" + + RUI_CrosshairData + { + DefaultArgs + { + adjustedSpread weapon_spread + adsFrac player_zoomFrac + 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_sniper_amped" + "base_spread" "10" + Args + { + isFiring weapon_is_firing + } + } + } +} diff --git a/Northstar.Custom/scripts/weapons/mp_weapon_toolgun.txt b/Northstar.Custom/scripts/weapons/mp_weapon_toolgun.txt new file mode 100644 index 00000000..37e9bc25 --- /dev/null +++ b/Northstar.Custom/scripts/weapons/mp_weapon_toolgun.txt @@ -0,0 +1,587 @@ +WeaponData +{ + // General + "printname" "#WPN_TOOLGUN" + "shortprintname" "#WPN_TOOLGUN_SHORT" + "description" "#WPN_TOOLGUN_DESC" + "longdesc" "#WPN_TOOLGUN_LONGDESC" + + "fast_swap_to" "1" + + "menu_icon" "r2_ui/menus/loadout_icons/secondary_weapon/secondary_mozambique" + "hud_icon" "r2_ui/menus/loadout_icons/secondary_weapon/secondary_mozambique" + + "weaponClass" "human" + "weaponSubClass" "projectile_shotgun" + "body_type" "close_quarters" + "fire_mode" "auto" + "pickup_hold_prompt" "Hold [USE] [WEAPONNAME]" + "pickup_press_prompt" "[USE] [WEAPONNAME]" + "minimap_reveal_distance" "32000" + "leveled_pickup" "1" + + "OnWeaponActivate" "OnWeaponActivate_weapon_toolgun" + "OnWeaponDeactivate" "OnWeaponDeactivate_weapon_toolgun" + "OnWeaponPrimaryAttack" "OnWeaponPrimaryAttack_weapon_toolgun" + "OnWeaponStartZoomIn" "OnWeaponStartZoomIn_weapon_toolgun" + "OnWeaponStartZoomOut" "OnWeaponStartZoomOut_weapon_toolgun" + "OnWeaponNpcPrimaryAttack" "OnWeaponNpcPrimaryAttack_weapon_toolgun" + + // Menu + "menu_category" "handgun" + "menu_anim_class" "small" + "stat_damage" "57" + "stat_range" "40" + "stat_accuracy" "44" + "stat_rof" "27" + + // Models + "viewmodel" "models/weapons/pstl_sa3/ptpov_pstl_sa3.mdl" + "playermodel" "models/weapons/pstl_sa3/w_pstl_sa3.mdl" + "activitymodifier" "pistol" + "holster_type" "pistol" + + // Effects + "tracer_effect" "weapon_tracers_shotgun" + "impact_effect_table" "bullet_mastiff" + "vortex_impact_effect" "P_impact_xo_shield_cp" + "vortex_absorb_effect" "wpn_vortex_projectile_shotgun_FP" + "vortex_absorb_effect_third_person" "wpn_vortex_projectile_shotgun" + "vortex_absorb_sound" "Vortex_Shield_AbsorbBulletSmall" + "vortex_absorb_sound_1P_VS_3P" "Vortex_Shield_AbsorbBulletSmall_1P_VS_3P" + "projectile_adjust_to_gun_barrel" "1" + + "projectilemodel" "models/dev/empty_model.mdl" + //"projectile_trail_effect_0" "P_dragonsbreath_trail" + "projectile_trail_effect_0" "P_mastiff_proj" + + "sound_dryfire" "shotgun_dryfire" + "sound_pickup" "wpn_pickup_Pistol_1P" + "fire_sound_1_player_1p" "weapon_shotgunpistol_fire_suppressed_1p" + "fire_sound_1_player_3p" "weapon_shotgunpistol_fire_suppressed_3p" + "fire_sound_1_npc" "Weapon_ShotgunPistol_Fire_NPC" + "sound_zoom_in" "Weapon_EVA8_ADS_In" + "sound_zoom_out" "Weapon_EVA8_ADS_Out" + + "low_ammo_sound_name_1" "ShotgunPistol_LowAmmo_Shot1" + "low_ammo_sound_name_2" "ShotgunPistol_LowAmmo_Shot2" + + //"fx_shell_eject_view" "wpn_shelleject_shotshell_FP" + //"fx_shell_eject_world" "wpn_shelleject_shotshell" + //"fx_shell_eject_attach" "shell" + + "fx_muzzle_flash_view" "P_wpn_muz_mastiff_FP" + "fx_muzzle_flash_world" "P_wpn_muz_mastiff" + "fx_muzzle_flash_attach" "muzzle_flash" + + "damage_flags" "DF_SHOTGUN | DF_BULLET | DF_KNOCK_BACK | DF_DISMEMBERMENT" + "damage_type" "bullet" + "damage_headshot_scale" "1.5" + + "explosion_inner_radius" "16" + "explosionradius" "32" + "impulse_force" "0" + + + "critical_hit_damage_scale" "1" + + "projectile_inherit_owner_velocity_scale" "0.0" + + "ammo_clip_size" "6" // arbitrarily large number + "titanarmor_critical_hit_required" "1" + + + + MP_BASE + { + "ammo_default_total" "6" + "ammo_stockpile_max" "6" + "ammo_no_remove_from_stockpile" "1" + "ammo_min_to_fire" "0" + + "aimassist_adspull_weaponclass" "broad" + + "critical_hit" "1" + + // Damage - When Used by Players + "damage_near_value" "30" + "damage_far_value" "25" + "damage_near_value_titanarmor" "30" + "damage_far_value_titanarmor" "20" + // "explosion_damage" "50" // 150 + // "explosion_damage_heavy_armor" "50" // 150 + "damage_near_distance" "750" + "damage_far_distance" "1000" + + "red_crosshair_range" "750" + + // Damage - When Used by NPCs + "npc_damage_near_value" "11" + "npc_damage_far_value" "5" + "npc_damage_near_value_titanarmor" "<KEEP_DEFAULT>" + "npc_damage_far_value_titanarmor" "<KEEP_DEFAULT>" + "npc_damage_near_distance" "500" + "npc_damage_far_distance" "1000" + + // NPC + "npc_min_engage_range" "0" + "npc_max_engage_range" "1000" + "npc_min_engage_range_heavy_armor" "100" + "npc_max_engage_range_heavy_armor" "2000" + "npc_min_range" "0" + "npc_max_range" "8000" + + "npc_min_burst" "1" + "npc_max_burst" "1" + "npc_rest_time_between_bursts_min" "0.5" + "npc_rest_time_between_bursts_max" "0.5" + + "enable_highlight_networking_on_creation" "<KEEP_DEFAULT>" + + "damage_heavyarmor_nontitan_scale" "0.35" + } + + SP_BASE + { + "ammo_default_total" "20" + "ammo_stockpile_max" "32" + "ammo_no_remove_from_stockpile" "0" + "ammo_min_to_fire" "1" + + "aimassist_adspull_weaponclass" "broad_sp" + + "critical_hit" "0" + + // Damage - When Used by Players + "damage_near_value" "30" + "damage_far_value" "20" + "damage_near_value_titanarmor" "30" + "damage_far_value_titanarmor" "20" + // "explosion_damage" "50" + // "explosion_damage_heavy_armor" "50" + "damage_near_distance" "750" + "damage_far_distance" "850" + + "red_crosshair_range" "750" + + // Damage - When Used by NPCs + "npc_damage_near_value" "11" + "npc_damage_far_value" "5" + "npc_damage_near_value_titanarmor" "10" + "npc_damage_far_value_titanarmor" "8" + "npc_damage_near_distance" "500" + "npc_damage_far_distance" "1000" + + // NPC + "npc_min_engage_range" "0" + "npc_max_engage_range" "1000" + "npc_min_engage_range_heavy_armor" "100" + "npc_max_engage_range_heavy_armor" "2000" + "npc_min_range" "0" + "npc_max_range" "8000" + + "npc_min_burst" "1" + "npc_max_burst" "1" + "npc_rest_time_between_bursts_min" "0.7" + "npc_rest_time_between_bursts_max" "1.0" + + "enable_highlight_networking_on_creation" "1" + + "damage_heavyarmor_nontitan_scale" "1" + } + + "proficiency_poor_spreadscale" "5.0" + "proficiency_average_spreadscale" "5.0" + "proficiency_good_spreadscale" "3.66667" + "proficiency_very_good_spreadscale" "3.66667" + + "viewmodel_offset_ads" "0 0 0" + "dof_zoom_nearDepthStart" "4.750" + "dof_zoom_nearDepthEnd" "11.00" + "dof_nearDepthStart" "0" + "dof_nearDepthEnd" "0" + + //"bolt_hitsize" "20" + + "bolt_hitsize" "0.5" + "bolt_hitsize_grow1_time" "0.055" + "bolt_hitsize_grow1_size" "5.0" + "bolt_hitsize_grow2_time" "0.18" + "bolt_hitsize_grow2_size" "7.5" + "bolt_hitsize_growfinal_lerptime" "0.18" + "bolt_hitsize_growfinal_size" "7.5" + + "bolt_gravity_enabled" "1" + + // Behavior + "fire_rate" "3.0" + "zoom_time_in" "0.2" + "zoom_time_out" "0.15" + "zoom_fov" "55" + "reload_time" "2.1" + "reload_time_late1" "1.05" + "reloadempty_time" "2.1" + "reloadempty_time_late1" "1.05" + "holster_time" "0.3" + "deploy_time" "0.4" + "lower_time" "0.2" + "raise_time" "0.2" + "vortex_refire_behavior" "bullet" + "allow_empty_fire" "0" + "reload_enabled" "0" + "allow_empty_click" "1" + "empty_reload_only" "0" + "trigger_snipercam" "0" + "allow_headshots" "1" + "headshot_distance" "1400" + "primary_fire_does_not_block_sprint" "0" + "ads_move_speed_scale" "0.5" + "aimassist_disable_hipfire" "1" + "aimassist_disable_ads" "1" + "aimassist_disable_hipfire_titansonly" "0" + "aimassist_disable_ads_titansonly" "0" + + "sprint_fractional_anims" "0" + + // Spread + "spread_stand_hip" "0" + "spread_stand_hip_run" "0" + "spread_stand_hip_sprint" "0" + "spread_stand_ads" "0" + "spread_crouch_hip" "0" + "spread_crouch_ads" "0" + "spread_air_hip" "0" + "spread_air_ads" "0" + + // Spread on NPCs affects their initial shooting direction + // Don't make this a large number or the damage/tracers won't be even remotely parallel to their barrel + + "ammo_suck_behavior" "primary_weapons" + + // View Kick + "viewkick_spring" "shotgun" + + "viewkick_pitch_base" "-2.25" + "viewkick_pitch_random" "1" + "viewkick_pitch_softScale" "1.4" + "viewkick_pitch_hardScale" "0.5" + + "viewkick_yaw_base" "-0.95" + "viewkick_yaw_random" "0.5" + "viewkick_yaw_softScale" "1.5" + "viewkick_yaw_hardScale" "0.5" + + "viewkick_roll_base" "0" + "viewkick_roll_randomMin" "0.6" + "viewkick_roll_randomMax" "0.8" + "viewkick_roll_softScale" "0.2" + "viewkick_roll_hardScale" "2.75" + + "viewkick_hipfire_weaponFraction" "0.1" + "viewkick_hipfire_weaponFraction_vmScale" "0.0" + "viewkick_ads_weaponFraction" "1.0" + "viewkick_ads_weaponFraction_vmScale" "0.15" + + "viewkick_perm_pitch_base" "0" + "viewkick_perm_pitch_random" "0.0" + + // + "viewmodel_shake_forward" "0.5" + "viewmodel_shake_up" "0.2" + "viewmodel_shake_right" "0.0" + + // 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.01" + "bob_horz_dist_zoomed" "0.01" + "bob_max_speed_zoomed" "150" + //"bob_pitch_zoomed" "0.002" + //"bob_yaw_zoomed" "-.002" + //"bob_roll_zoomed" ".002" + + // Rumble + "fire_rumble" "rumble_pistol_heavy" + + // Sway + "sway_rotate_attach" "SWAY_ROTATE" + "sway_min_x" "-0.5" + "sway_min_y" "-0.5" + "sway_min_z" "-0.6" + "sway_max_x" "0.5" + "sway_max_y" "0.5" + "sway_max_z" "0.6" + "sway_min_pitch" "-3" + "sway_min_yaw" "-2.5" + "sway_min_roll" "-4" + "sway_max_pitch" "3" + "sway_max_yaw" "2.5" + "sway_max_roll" "4" + "sway_translate_gain" "2.5" + "sway_rotate_gain" "7" + "sway_move_forward_translate_x" "-0.1" + "sway_move_forward_translate_z" "-0.5" + "sway_move_back_translate_x" "0.2" + "sway_move_back_translate_z" "-0.2" + "sway_move_left_translate_y" "-1" + "sway_move_left_translate_z" "-0.5" + "sway_move_left_rotate_roll" "-4" + "sway_move_right_translate_y" "1" + "sway_move_right_translate_z" "-0.5" + "sway_move_right_rotate_roll" "4" + "sway_move_up_translate_z" "-1" + "sway_move_down_translate_z" "1" + "sway_turn_left_rotate_yaw" "-2.5" + "sway_turn_right_rotate_yaw" "2.5" + + "sway_turn_left_translate_y" ".5" + "sway_turn_right_translate_y" "-.5" + "sway_turn_up_translate_z" ".2" + "sway_turn_down_translate_z" "-.2" + "sway_turn_up_translate_x" ".1" + "sway_turn_down_translate_x" "-.1" + + "sway_turn_left_rotate_roll" "4" + "sway_turn_right_rotate_roll" "-4" + "sway_turn_up_rotate_pitch" "3" + "sway_turn_down_rotate_pitch" "-3" + "sway_turn_up_rotate_roll" "-0.8" + "sway_turn_down_rotate_roll" "0.8" + + // Zoomed Sway + "sway_rotate_attach_zoomed" "SWAY_ROTATE_ZOOMED" + "sway_rotate_attach_blend_time_zoomed" "0.2" + "sway_rotate_gain_zoomed" "5" + + "sway_min_yaw_zoomed" "-0.073" + "sway_max_yaw_zoomed" "0.073" + "sway_turn_left_rotate_yaw_zoomed" "-0.085" + "sway_turn_right_rotate_yaw_zoomed" "0.085" + + "sway_min_roll_zoomed" "-4" + "sway_max_roll_zoomed" "4" + "sway_turn_left_rotate_roll_zoomed" "0" + "sway_turn_right_rotate_roll_zoomed" "0" + + "sway_move_right_rotate_roll_zoomed" "0.2" + "sway_move_left_rotate_roll_zoomed" "-0.2" + + "sway_min_pitch_zoomed" "-0.03" + "sway_max_pitch_zoomed" "0.03" + "sway_turn_up_rotate_pitch_zoomed" "0.07" + "sway_turn_down_rotate_pitch_zoomed" "-0.07" + + // WeaponED Unhandled Key/Values and custom script Key/Values + "bob_tilt_angle" "0.5" + "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.15" + "sway_move_origin_factor" "0.15" + "sway_move_angle_factor_zoomed" "0" + "sway_move_origin_factor_zoomed" "0.03" + "sway_gain" "10.0" + "deployfirst_time" "1.0" + "deploycatch_time" "1.33" + "sprintcycle_time" ".55" + + // Bodygroups: + "bodygroup1_name" "suppressor_cyl_med" + "bodygroup1_set" "0" + "bodygroup2_name" "suppressor_sq_med" + "bodygroup2_set" "1" // enable suppressor bodygroup by default + "bodygroup3_name" "sight_cqh" + "bodygroup3_set" "0" + "bodygroup4_name" "sight_acgs" + "bodygroup4_set" "0" + "bodygroup5_name" "sight_cro" + "bodygroup5_set" "0" + "bodygroup6_name" "proscreen" + "bodygroup6_set" "1" // enable proscreen bodygroup by default + + "clip_bodygroup" "pstl_sa3_shell" + "clip_bodygroup_index_shown" "0" + "clip_bodygroup_index_hidden" "1" + "clip_bodygroup_show_for_milestone_0" "1" + "clip_bodygroup_show_for_milestone_1" "0" + "clip_bodygroup_show_for_milestone_2" "0" + "clip_bodygroup_show_for_milestone_3" "0" + + Mods + { + iron_sights + { + } + extended_ammo + { + "ammo_stockpile_max" "160" + "ammo_clip_size" "8" + "ammo_default_total" "160" + } + silencer //HACK JFS: Doesn't get applied on amped weapons. See bug 170460 + { + "bodygroup2_set" "1" + "silenced" "1" + "fire_sound_1_player_1p" "weapon_shotgunpistol_fire_suppressed_1p" + "fire_sound_1_player_3p" "weapon_shotgunpistol_fire_suppressed_3p" + "damage_near_value" "--10" + "damage_far_value" "--4" + //"bodygroup2_set" "1" + + //"rumble" "4" + //"tracer_effect" "P_wpn_tracer_pistol" + "minimap_reveal_distance" "1" + + "fx_muzzle_flash_view" "wpn_muzzleflash_pistol_sup_FP" + "fx_muzzle_flash_world" "wpn_muzzleflash_pistol_sup" + //"fx_muzzle_flash_attach" "muzzle_flash_suppressor_sq" + } + pas_run_and_gun + { + "primary_fire_does_not_block_sprint" "1" + "crosshair_force_sprint_fade_disabled" "1" + } + alt_spread + { + } + hcog + { + "bodygroup3_set" "1" + "bodygroup4_set" "0" + "bodygroup5_set" "0" + "viewmodel_offset_ads" "0 -6 -0.79" + "dof_zoom_nearDepthStart" "0.750" + "dof_zoom_nearDepthEnd" "8.000" + } + threat_scope + { + "bodygroup3_set" "0" + "bodygroup4_set" "0" + "bodygroup5_set" "1" + "threat_scope_enabled" "1" + "threat_scope_bounds_tagname1" "SCR_TR_CRO" + "threat_scope_bounds_tagname2" "SCR_BL_CRO" + "viewmodel_offset_ads" "0 -10 -0.83" + "dof_zoom_nearDepthStart" "5.040" + "dof_zoom_nearDepthEnd" "5.737" + } + pro_screen + { + "ui8_enable" "1" + "bodygroup6_set" "1" + } + pas_fast_reload + { + "reload_time" "*0.7" + "reload_time_late1" "*0.7" + "reloadempty_time" "*0.7" + "reloadempty_time_late1" "*0.7" + } + pas_fast_ads + { + //Fast ADS + "zoom_time_in" "*0.5" + "zoom_time_out" "*0.6" + } + pas_fast_swap + { + //Fast Swap + "fast_swap_to" "1" + } + tactical_cdr_on_kill + { + + } + burn_mod_shotgun_pistol + { + "damage_near_value" "++5" + "damage_far_value" "++10" + "damage_near_value_titanarmor" "++30" + "damage_far_value_titanarmor" "++30" + "is_burn_mod" "1" + + //Effects + "fx_muzzle_flash_view" "P_wpn_muz_SGPistol_amp_FP" + "fx_muzzle_flash_world" "P_wpn_muz_mastiff_amp" + "projectile_trail_effect_0" "P_mastiff_proj_amp" + "impact_effect_table" "titan_bullet_elec" + } + + } + + + "ui1_enable" "1" + "ui1_draw_cloaked" "1" + UiData1 + { + "ui" "ui/sa3_crosshair" + "mesh" "models/weapons/attachments/sa3_rui_upper" + Args + { + vis player_zoomfrac + } + } + + "ui2_enable" "1" + UiData2 + { + "ui" "ui/sa3_ammo_counter" + "mesh" "models/weapons/attachments/sa3_rui_lower" + Args + { + vis player_zoomfrac + ammo weapon_ammo + clipSize weapon_clipSize + clipCount weapon_stockpileClipCount + } + } + + "ui8_enable" "1" + UiData8 + { + "ui" "ui/pro_screen_panel" + "mesh" "models/weapons/attachments/pro_screen_rui_upper" + Args + { + proValue proscreen_int0 + proOwnedByPlayer proscreen_owner_is_player + } + } + + active_crosshair_count "1" + rui_crosshair_index "0" + + RUI_CrosshairData + { + DefaultArgs + { + adjustedSpread weapon_spread + adsFrac player_zoomFrac + 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_mozambique" + "base_spread" "0.0" + Args + { + isFiring weapon_is_firing + } + } + } +} |