aboutsummaryrefslogtreecommitdiff
path: root/Northstar.CustomServers/mod/scripts/vscripts/gamemodes/_featured_mode_settings.gnut
blob: 62fd52c9c81ac4ff68c398221eb22c0fcc9e2c00 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
untyped
global function FeaturedModeSettings_Init

void function FeaturedModeSettings_Init()
{
	// if it's not super obvious at a glance this script is used for playlist vars with the prefix "featured_mode_"
	// these often set loadouts and shit so they need a script
	// note: for turbo_titans, the core multiplier is set in playlist

	AddCallback_OnPlayerRespawned( FeaturedModeSettingsSetupPilotLoadouts )
	AddCallback_OnPilotBecomesTitan( FeaturedModeSettingsSetupTitanLoadouts )
}

bool function IsFeaturedMode( string modeName )
{
	return GetCurrentPlaylistVar( "featured_mode_" + modeName ) == "1"
}

void function FeaturedModeSettingsSetupPilotLoadouts( entity player )
{
	bool shouldChangeLoadout = false

	// create loadout struct
	PilotLoadoutDef modifiedLoadout = clone GetActivePilotLoadout( player )

	if ( IsFeaturedMode( "all_holopilot" ) )
	{
		shouldChangeLoadout = true 
		
		modifiedLoadout.special = "mp_ability_holopilot"
	}
		
	if ( IsFeaturedMode( "all_grapple" ) ) 
	{
		shouldChangeLoadout = true 
		
		modifiedLoadout.special = "mp_ability_grapple"
		modifiedLoadout.specialMods = [ "all_grapple" ]
	}
		
	if ( IsFeaturedMode( "all_phase" ) ) 
	{
		shouldChangeLoadout = true 
		
		modifiedLoadout.special = "mp_ability_shifter"
		modifiedLoadout.specialMods = [ "all_phase" ]
	}
		
	if ( IsFeaturedMode( "all_ticks" ) ) 
	{
		shouldChangeLoadout = true 
		
		modifiedLoadout.ordnance = "mp_weapon_frag_drone"
		modifiedLoadout.ordnanceMods = [ "all_ticks" ]
	}
	
	if ( IsFeaturedMode( "rocket_arena" ) )
	{	
		// this crashes sometimes for some reason
	
		shouldChangeLoadout = true
	
		modifiedLoadout.primary = "mp_weapon_epg"
		modifiedLoadout.primaryMods = [ "rocket_arena" ]
		
		// set secondary to whatever one is pistol
		if ( GetWeaponInfoFileKeyField_Global( player.GetMainWeapons()[ 1 ].GetWeaponClassName(), "menu_category" ) == "at" )
		{
			modifiedLoadout.weapon3 = "mp_weapon_autopistol"
			modifiedLoadout.weapon3Mods = [ "rocket_arena" ]
		}
		else
		{
			modifiedLoadout.secondary = "mp_weapon_autopistol"
			modifiedLoadout.secondaryMods = [ "rocket_arena" ]
		}
		
		player.GiveExtraWeaponMod( "rocket_arena" )
	}
	
	if ( IsFeaturedMode( "shotguns_snipers" ) )
	{
	
		shouldChangeLoadout = true 
		
		// this one was never released, assuming it just gives you a mastiff and a kraber with quick swap
		modifiedLoadout.primary = "mp_weapon_sniper"
		modifiedLoadout.primaryMods = [ "pas_fast_swap", "pas_fast_ads" ]
		
		// set secondary to whatever one is pistol
		if ( GetWeaponInfoFileKeyField_Global( player.GetMainWeapons()[ 1 ].GetWeaponClassName(), "menu_category" ) == "at" )
		{
			modifiedLoadout.weapon3 = "mp_weapon_mastiff"
			modifiedLoadout.weapon3Mods = [ "pas_fast_swap", "pas_run_and_gun" ]
		}
		else
		{
			modifiedLoadout.secondary = "mp_weapon_mastiff"
			modifiedLoadout.secondaryMods = [ "pas_fast_swap", "pas_run_and_gun" ]
		}
	}
	
	// dont wanna give a new loadout if it's not necessary, could break other callbacks
	if ( shouldChangeLoadout )
		GivePilotLoadout( player, modifiedLoadout )
	
	if ( IsFeaturedMode( "tactikill" ) )
		player.GiveExtraWeaponMod( "tactical_cdr_on_kill" )
	
	if ( IsFeaturedMode( "amped_tacticals" ) )
		player.GiveExtraWeaponMod( "amped_tacticals" )
}

void function FeaturedModeSettingsSetupTitanLoadouts( entity player, entity titan )
{
	if ( IsFeaturedMode( "turbo_titans" ) )
	{
		array<string> settingsMods = player.GetPlayerSettingsMods()
		settingsMods.append( "turbo_titan" )
		player.SetPlayerSettingsWithMods( player.GetPlayerSettings(), settingsMods )
	}
}