1 #using scripts\codescripts\struct;
3 #using scripts\shared\callbacks_shared;
4 #using scripts\shared\flag_shared;
5 #using scripts\shared\hud_message_shared;
6 #using scripts\shared\medals_shared;
7 #using scripts\shared\persistence_shared;
8 #using scripts\shared\rank_shared;
9 #using scripts\shared\system_shared;
10 #using scripts\shared\util_shared;
11 #using scripts\shared\weapons_shared;
12 #using scripts\shared\weapons\_weapons;
14 #insert scripts\shared\shared.gsh;
15 #insert scripts\shared\statstable_shared.gsh;
17 #precache( "string", "KILLSTREAK_DESTROYED_UAV" );
18 #precache( "string", "KILLSTREAK_DESTROYED_COUNTERUAV" );
19 #precache( "string", "KILLSTREAK_DESTROYED_REMOTE_MORTAR" );
20 #precache( "string", "KILLSTREAK_MP40_INBOUND" );
21 #precache( "string", "KILLSTREAK_M220_TOW_INBOUND" );
22 #precache( "string", "KILLSTREAK_MINIGUN_INBOUND" );
23 #precache( "string", "KILLSTREAK_M202_FLASH_INBOUND" );
24 #precache( "string", "KILLSTREAK_M32_INBOUND");
25 #precache( "string", "MP_CAPTURED_THE_FLAG" );
26 #precache( "string", "MP_KILLED_FLAG_CARRIER" );
27 #precache( "string", "MP_FRIENDLY_FLAG_DROPPED" );
28 #precache( "string", "MP_ENEMY_FLAG_DROPPED" );
29 #precache( "string", "MP_FRIENDLY_FLAG_RETURNED" );
30 #precache( "string", "MP_ENEMY_FLAG_RETURNED" );
31 #precache( "string", "MP_FRIENDLY_FLAG_TAKEN" );
32 #precache( "string", "MP_ENEMY_FLAG_TAKEN" );
33 #precache( "string", "MP_ENEMY_FLAG_CAPTURED" );
34 #precache( "string", "MP_FRIENDLY_FLAG_CAPTURED" );
35 #precache( "string", "MP_EXPLOSIVES_BLOWUP_BY" );
36 #precache( "string", "MP_EXPLOSIVES_DEFUSED_BY" );
37 #precache( "string", "MP_EXPLOSIVES_PLANTED_BY" );
38 #precache( "string", "MP_HQ_DESTROYED_BY" );
39 #precache( "string", "KILLSTREAK_DESTROYED_HELICOPTER" );
56 level.contractSettings = spawnstruct();
57 level.contractSettings.waitTime = 4.2;
58 level.killstreakSettings = spawnstruct();
59 level.killstreakSettings.waitTime = 3;
60 level.rankSettings = spawnstruct();
61 level.rankSettings.waitTime = 3;
62 level.startMessage = spawnstruct();
63 level.startMessageDefaultDuration = 2.0;
64 level.endMessageDefaultDuration = 2.0;
65 level.challengeSettings = spawnstruct();
66 level.challengeSettings.waitTime = 3;
67 level.teamMessage = spawnstruct();
68 level.teamMessage.waittime = 3;
69 level.regularGameMessages = spawnstruct();
70 level.regularGameMessages.waittime = 6;
71 level.wagerSettings = spawnstruct();
72 level.wagerSettings.waittime = 3;
73 level.momentumNotifyWaitTime = 0;
74 level.momentumNotifyWaitLastTime = 0;
75 level.teamMessageQueueMax = 8;
83 self.resetGameOverHudRequired =
false;
84 self thread displayPopupsWaiter();
85 if ( !level.hardcoreMode )
93 if ( !isdefined ( level.killstreaks[killstreak] ) )
95 if ( !isdefined ( level.killstreaks[killstreak].inboundText ) )
98 message = level.killstreaks[killstreak].inboundText;
104 if ( !isdefined ( level.killstreaks[killstreak] ) )
106 if ( !isdefined ( level.killstreaks[killstreak].hackedText ) )
109 message = level.killstreaks[killstreak].hackedText;
116 if ( level.hardcoreMode ==
true || level.splitscreen ==
true )
127 for ( i = 0; i < level.players.size; i++ )
129 cur_player = level.players[i];
131 if ( cur_player IsEMPJammed() )
134 size = cur_player.teamMessageQueue.size;
136 if ( size >= level.teamMessageQueueMax )
139 cur_player.teamMessageQueue[size] = spawnStruct();
140 cur_player.teamMessageQueue[size].message = message;
141 cur_player.teamMessageQueue[size].player = player;
143 cur_player notify (
"received teammessage" );
152 for ( i = 0; i < level.players.size; i++ )
154 cur_player = level.players[i];
156 if ( cur_player.team != team )
159 if ( cur_player IsEMPJammed() )
162 size = cur_player.teamMessageQueue.size;
164 if ( size >= level.teamMessageQueueMax )
167 cur_player.teamMessageQueue[size] = spawnStruct();
168 cur_player.teamMessageQueue[size].message = message;
169 cur_player.teamMessageQueue[size].player = player;
171 cur_player notify (
"received teammessage" );
180 self endon(
"disconnect" );
181 level endon(
"game_ended" );
183 self.teamMessageQueue = [];
187 if (
self.teamMessageQueue.size == 0 )
188 self waittill(
"received teammessage" );
190 if (
self.teamMessageQueue.size > 0 )
192 nextNotifyData =
self.teamMessageQueue[0];
193 ArrayRemoveIndex(
self.teamMessageQueue, 0,
false );
195 if ( !isdefined( nextNotifyData.player ) || !isplayer( nextNotifyData.player ) )
198 if (
self IsEMPJammed() )
201 self LUINotifyEvent( &
"player_callout", 2, nextNotifyData.message, nextNotifyData.player.entnum );
203 wait ( level.teamMessage.waittime );
210 self endon(
"disconnect" );
212 self.rankNotifyQueue = [];
213 if ( !isdefined(
self.pers[
"challengeNotifyQueue"] ) )
215 self.pers[
"challengeNotifyQueue"] = [];
217 if ( !isdefined(
self.pers[
"contractNotifyQueue"] ) )
219 self.pers[
"contractNotifyQueue"] = [];
222 self.messageNotifyQueue = [];
223 self.startMessageNotifyQueue = [];
224 self.wagerNotifyQueue = [];
226 while( isdefined( level ) && isdefined( level.gameEnded ) && !level.gameEnded )
228 if (
self.startMessageNotifyQueue.size == 0 &&
self.messageNotifyQueue.size == 0 )
229 self waittill(
"received award" );
233 if ( !isdefined( level ) )
236 if ( !isdefined( level.gameEnded ) )
239 if ( level.gameEnded )
242 if (
self.startMessageNotifyQueue.size > 0 )
244 nextNotifyData =
self.startMessageNotifyQueue[0];
245 ArrayRemoveIndex(
self.startMessageNotifyQueue, 0,
false );
247 if ( isdefined( nextNotifyData.duration ) )
248 duration = nextNotifyData.duration;
250 duration = level.startMessageDefaultDuration;
255 else if (
self.messageNotifyQueue.size > 0 )
257 nextNotifyData =
self.messageNotifyQueue[0];
258 ArrayRemoveIndex(
self.messageNotifyQueue, 0,
false );
260 if ( isdefined( nextNotifyData.duration ) )
261 duration = nextNotifyData.duration;
263 duration = level.regularGameMessages.waittime;
277 level.globalChallenges++;
279 if ( !isdefined( type ) )
283 size =
self.pers[
"challengeNotifyQueue"].size;
284 self.pers[
"challengeNotifyQueue"][size] = [];
285 self.pers[
"challengeNotifyQueue"][size][
"tier"] = tier;
286 self.pers[
"challengeNotifyQueue"][size][
"index"] = index;
287 self.pers[
"challengeNotifyQueue"][size][
"itemIndex"] = itemIndex;
288 self.pers[
"challengeNotifyQueue"][size][
"type"] = type;
290 self notify(
"received award" );