1 #using scripts\codescripts\struct;
3 #using scripts\shared\callbacks_shared;
4 #using scripts\shared\killstreaks_shared;
5 #using scripts\shared\system_shared;
6 #using scripts\shared\util_shared;
7 #using scripts\shared\abilities\_ability_power;
8 #using scripts\shared\gameskill_shared;
10 #insert scripts\shared\shared.gsh;
12 #insert scripts\shared\abilities\_ability_util.gsh;
13 #insert scripts\shared\scoreevents_shared.gsh;
16 #namespace scoreevents;
21 pixbeginevent(
"processScoreEvent");
24 if ( !isplayer(player) )
26 AssertMsg(
"processScoreEvent called on non player entity: " + event );
30 if( GetDvarInt(
"teamOpsEnabled" ) == 1 )
32 if ( isdefined( level.teamopsOnProcessPlayerEvent ) )
34 level [[level.teamopsOnProcessPlayerEvent]]( event, player );
38 if ( isdefined( level.challengesOnEventReceived ) )
40 player thread [[level.challengesOnEventReceived]]( event );
43 if (
isRegisteredEvent( event ) && (!SessionModeIsZombiesGame() || level.onlineGame) )
45 allowPlayerScore =
false;
49 allowPlayerScore =
true;
56 if ( allowPlayerScore )
58 if ( isdefined( level.scoreOnGivePlayerScore ) )
60 scoreGiven = [[level.scoreOnGivePlayerScore]]( event, player, victim, undefined, weapon );
61 isScoreEvent = ( scoreGiven > 0 );
76 if( isdefined( weapon) && isdefined( player.pickedUpWeapons ) && isdefined( player.pickedUpWeapons[weapon] ) )
82 if (SessionModeIsCampaignGame())
90 xp_difficulty_multiplier = 1;
93 player AddRankXp( event, weapon, player.class_num, pickedup, isScoreEvent, xp_difficulty_multiplier );
99 if (SessionModeIsCampaignGame() && isdefined(xp_difficulty_multiplier))
102 if (isdefined(victim) && isdefined(victim.team))
104 if (victim.team ==
"axis" || victim.team ==
"team3")
106 scoreGiven *= xp_difficulty_multiplier;
122 if( level.gametype ==
"fr" )
127 if ( !isdefined( level.rankCap ) || level.rankCap == 0 )
132 if ( ( player.pers[
"plevel" ] > 0 ) || ( player.pers[
"rank" ] > level.rankCap ) )
143 self endon(
"disconnect" );
154 if ( isdefined( level.scoreInfo[type] ) )
163 level endon(
"reset_obituary_count" );
165 level.lastObituaryPlayerCount--;
166 assert( level.lastObituaryPlayerCount >= 0 );
171 if ( SessionModeIsCampaignGame() )
175 else if ( SessionModeIsZombiesGame() )
187 scoreInfoTableLoaded =
false;
190 if ( isdefined( scoreInfoTableID ) )
192 scoreInfoTableLoaded =
true;
195 return scoreInfoTableID;
201 assert( columnOffset >= 0 );
202 if ( columnOffset >= 0 )
212 assert( columnOffset >= 0 );
213 if ( columnOffset >= 0 )
222 foundGameMode =
false;
223 if ( !isdefined ( level.scoreEventTableID ) )
228 assert( isdefined ( level.scoreEventTableID ) );
229 if ( !isdefined ( level.scoreEventTableID ) )
236 column_header = TableLookupColumnForRow( level.scoreEventTableID, 0, gameModeColumn );
237 if ( column_header ==
"" )
243 if ( column_header == level.gameType +
" score" )
245 foundGameMode =
true;
250 assert( foundGameMode,
"Could not find gamemode in scoreInfo.csv:" + gameType );
251 return gameModeColumn;
256 if( GetDvarInt(
"teamOpsEnabled" ) == 1 )
259 if( isdefined( level.scoreInfo[type][
"allowKillstreakWeapons"] ) && level.scoreInfo[type][
"allowKillstreakWeapons"] ==
true )
271 if( !isdefined( level.scoreInfo[event][
"allow_hero"] ) || level.scoreInfo[event][
"allow_hero"] !=
true )
281 if ( isdefined( crate ) && isdefined( capturer ) && isdefined( crate.owner ) && isplayer( crate.owner ) )
283 if ( level.teambased )
285 if ( capturer.team != crate.owner.team )
287 crate.owner playlocalsound(
"mpl_crate_enemy_steals" );
289 if( !IsDefined( crate.hacker ) )
296 if ( isdefined ( crate.owner ) && ( capturer != crate.owner ) )
298 crate.owner playlocalsound(
"mpl_crate_friendly_steals" );
300 if( !IsDefined( crate.hacker ) )
302 level.globalSharePackages++;
310 if ( capturer != crate.owner )
312 crate.owner playlocalsound(
"mpl_crate_enemy_steals" );
314 if( !IsDefined( crate.hacker ) )
325 if ( !isdefined( level.hero_ability_kill_events ) )
326 level.hero_ability_kill_events = [];
328 level.hero_ability_kill_events[ level.hero_ability_kill_events.size ] = event_func;
333 if ( !isdefined( level.hero_ability_multikill_events ) )
334 level.hero_ability_multikill_events = [];
336 level.hero_ability_multikill_events[ level.hero_ability_multikill_events.size ] = event_func;
341 if ( !isdefined( level.hero_weapon_multikill_events ) )
342 level.hero_weapon_multikill_events = [];
344 level.hero_weapon_multikill_events[ level.hero_weapon_multikill_events.size ] = event_func;
349 if ( !isdefined( level.thief_shutdown_enemy_events ) )
350 level.thief_shutdown_enemy_events = [];
352 level.thief_shutdown_enemy_events[ level.thief_shutdown_enemy_events.size ] = event_func;
357 if ( !isdefined( level.hero_ability_kill_events ) )
360 foreach( event_func
in level.hero_ability_kill_events )
362 if ( isdefined( event_func ) )
364 self [[ event_func ]]( ability, victim_ability );
371 if ( !isdefined( level.hero_ability_multikill_events ) )
374 foreach( event_func
in level.hero_ability_multikill_events )
376 if ( isdefined( event_func ) )
378 self [[ event_func ]]( killcount, ability );
385 if ( !isdefined( level.hero_weapon_multikill_events ) )
388 foreach( event_func
in level.hero_weapon_multikill_events )
390 if ( isdefined( event_func ) )
392 self [[ event_func ]]( killcount, weapon );
399 if ( !isdefined( level.thief_shutdown_enemy_event ) )
402 foreach( event_func
in level.thief_shutdown_enemy_event )
404 if ( isdefined( event_func ) )
406 self [[ event_func ]]();