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
|
untyped
global function GamemodeColiseum_Init
global function GamemodeColiseum_CustomIntro
bool hasShownIntroScreen = false
void function GamemodeColiseum_Init()
{
// gamemode settings
SetRoundBased( true )
SetRespawnsEnabled( false )
SetShouldUseRoundWinningKillReplay( true )
Riff_ForceTitanAvailability( eTitanAvailability.Never )
Riff_ForceBoostAvailability( eBoostAvailability.Disabled )
Riff_ForceSetEliminationMode( eEliminationMode.Pilots )
SetLoadoutGracePeriodEnabled( false ) // prevent modifying loadouts with grace period
SetWeaponDropsEnabled( false )
ClassicMP_SetCustomIntro( ClassicMP_DefaultNoIntro_Setup, ClassicMP_DefaultNoIntro_GetLength() )
AddCallback_GameStateEnter( eGameState.Prematch, ShowColiseumIntroScreen )
AddCallback_OnPlayerRespawned( GivePlayerColiseumLoadout )
}
// stub function referenced in sh_gamemodes_mp
void function GamemodeColiseum_CustomIntro( entity player )
{}
void function ShowColiseumIntroScreen()
{
if ( !hasShownIntroScreen )
thread ShowColiseumIntroScreenThreaded()
hasShownIntroScreen = true
}
void function ShowColiseumIntroScreenThreaded()
{
wait 5
foreach ( entity player in GetPlayerArray() )
Remote_CallFunction_NonReplay( player, "ServerCallback_ColiseumIntro", 1, 1, 1 ) // stub numbers atm because lazy
}
void function GivePlayerColiseumLoadout( entity player )
{
if ( GetCurrentPlaylistVarInt( "coliseum_loadouts_enabled", 1 ) == 0 )
return
// create loadout struct
PilotLoadoutDef coliseumLoadout = clone GetActivePilotLoadout( player )
/* from playlists.txt
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"*/
coliseumLoadout.primary = GetColiseumItem( "primary" )
coliseumLoadout.primaryMods = [ GetColiseumItem( "primary_attachment" ), GetColiseumItem( "primary_mod1" ), GetColiseumItem( "primary_mod2" ), GetColiseumItem( "primary_mod3" ) ]
coliseumLoadout.secondary = GetColiseumItem( "secondary" )
coliseumLoadout.secondaryMods = [ GetColiseumItem( "secondary_mod1" ), GetColiseumItem( "secondary_mod2" ), GetColiseumItem( "secondary_mod3" ) ]
coliseumLoadout.weapon3 = GetColiseumItem( "weapon3" )
coliseumLoadout.weapon3Mods = [ GetColiseumItem( "weapon3_mod1" ), GetColiseumItem( "weapon3_mod2" ), GetColiseumItem( "weapon3_mod3" ) ]
coliseumLoadout.melee = GetColiseumItem( "melee" )
coliseumLoadout.special = GetColiseumItem( "special" )
coliseumLoadout.ordnance = GetColiseumItem( "ordnance" )
coliseumLoadout.passive1 = GetColiseumItem( "passive1" )
coliseumLoadout.passive2 = GetColiseumItem( "passive2" )
coliseumLoadout.setFile = GetSuitAndGenderBasedSetFile( "coliseum", coliseumLoadout.race == RACE_HUMAN_FEMALE ? "female" : "male" )
GivePilotLoadout( player, coliseumLoadout )
}
string function GetColiseumItem( string name )
{
return expect string ( GetCurrentPlaylistVar( "coliseum_" + name ) )
}
// todo this needs the outro: unsure what anims it uses
|