1 #using scripts\codescripts\struct;
3 #using scripts\shared\callbacks_shared;
4 #using scripts\shared\clientfield_shared;
5 #using scripts\shared\flagsys_shared;
6 #using scripts\shared\scoreevents_shared;
7 #using scripts\shared\system_shared;
8 #using scripts\shared\util_shared;
10 #insert scripts\shared\shared.gsh;
11 #insert scripts\shared\version.gsh;
12 #insert scripts\zm\_zm_utility.gsh;
14 #using scripts\zm\_zm_bgb;
15 #using scripts\zm\_zm_bgb_token;
16 #using scripts\zm\_zm_pers_upgrades_functions;
17 #using scripts\zm\_zm_stats;
18 #using scripts\zm\_zm_utility;
20 #insert scripts\zm\_zm_bgb.gsh;
44 level.score_total = 0;
45 level.a_func_score_events = [];
52 level.a_func_score_events[ str_event ] = func_callback;
58 self notify(
"reset_doublexp_timer" );
64 self notify(
"doublexp_timer" );
65 self endon(
"doublexp_timer" );
66 self endon(
"reset_doublexp_timer" );
67 self endon(
"end_game" );
71 if( !level.onlineGame )
77 if( level.onlineGame )
79 if( !IsDefined(
self ) )
83 self DoubleXPTimerFired();
95 if ( IsDefined(
self) )
97 self.ready_for_score_events =
true;
106 clientfield::register(
"clientuimodel",
"PlayerList.client" + i +
".score_cf_" +
name, version, GetMinBitCountForNum( max_count ),
"counter" );
113 foreach ( player
in level.players )
121 if ( IsDefined(player) &&
IS_TRUE(player.ready_for_score_events) )
131 if( level.intermission )
145 if ( isdefined( level.a_func_score_events[ event ] ) )
147 player_points = [[ level.a_func_score_events[ event ] ]]( event, mod, hit_location, zombie_team, damage_weapon );
169 case "death_thrasher":
174 if( level.zombie_vars[
self.team][
"zombie_powerup_insta_kill_on"] == 1 && mod ==
"MOD_UNKNOWN" )
180 player_points = player_points + points;
181 player_points = player_points * 2;
184 if ( team_points > 0 )
186 team_points = team_points + points;
189 if (mod ==
"MOD_GRENADE" || mod ==
"MOD_GRENADE_SPLASH" )
202 if( level.zombie_vars[
self.team][
"zombie_powerup_insta_kill_on"] == 1 && mod ==
"MOD_UNKNOWN" )
208 player_points = player_points + points;
210 if ( team_points > 0 )
212 team_points = team_points + points;
215 if (mod ==
"MOD_GRENADE" || mod ==
"MOD_GRENADE_SPLASH" )
228 case "ballistic_knife_death":
234 player_points = level.zombie_vars[
"zombie_score_damage_light"];
239 player_points = level.zombie_vars[
"zombie_score_damage_normal"];
244 player_points = Int( level.zombie_vars[
"zombie_score_damage_normal"] * 1.25 );
248 case "rebuild_board":
249 case "carpenter_powerup":
253 case "bonus_points_powerup":
263 case "thundergun_fling":
264 case "riotshield_fling":
269 case "hacker_transfer":
281 case "build_wallbuy":
291 assert( 0,
"Unknown point event" );
297 if( isdefined( level.player_score_override ) )
299 player_points =
self [[level.player_score_override]]( damage_weapon, player_points );
302 if( isdefined( level.team_score_override ) )
304 team_points =
self [[level.team_score_override]]( damage_weapon, team_points );
310 if ( isdefined(
self.point_split_receiver ) && (event ==
"death" || event ==
"ballistic_knife_death") )
314 player_points = player_points - split_player_points;
318 if(
IS_TRUE(level.pers_upgrade_pistol_points) )
327 self.pers[
"score"] =
self.score;
330 if(isdefined(level._game_module_point_adjustment))
332 level [[level._game_module_point_adjustment]](
self,zombie_team,player_points);
341 multiplier = level.zombie_vars[player.team][
"zombie_point_scalar"];
343 if(isdefined(level.current_game_module) && level.current_game_module == 2 )
346 if(isdefined(level._race_team_double_points) && level._race_team_double_points == player._race_team)
363 players = GetPlayers();
364 if( players.size == 1 )
366 points = level.zombie_vars[
"zombie_score_kill_1player"];
368 else if( players.size == 2 )
370 points = level.zombie_vars[
"zombie_score_kill_2player"];
372 else if( players.size == 3 )
374 points = level.zombie_vars[
"zombie_score_kill_3player"];
378 points = level.zombie_vars[
"zombie_score_kill_4player"];
393 if( mod !=
"MOD_MELEE" )
395 if (
"head" == hit_location ||
"helmet" == hit_location )
406 if( isdefined( level.player_score_override ) )
408 new_points =
self [[level.player_score_override]]( weapon, player_points );
409 if( new_points > 0 && new_points != player_points )
415 if( mod ==
"MOD_MELEE" )
419 return level.zombie_vars[
"zombie_score_bonus_melee"];
422 if( mod ==
"MOD_BURNED" )
425 return level.zombie_vars[
"zombie_score_bonus_burn"];
430 if ( isdefined( hit_location ) )
432 switch ( hit_location )
437 score = level.zombie_vars[
"zombie_score_bonus_head"];
442 score = level.zombie_vars[
"zombie_score_bonus_neck"];
448 score = level.zombie_vars[
"zombie_score_bonus_torso"];
462 if( level.intermission )
476 points = int(
self.score / 2 );
479 case "take_specified":
483 case "no_revive_penalty":
484 percent = level.zombie_vars[
"penalty_no_revive"];
485 points =
self.score * percent;
489 percent = level.zombie_vars[
"penalty_died"];
490 points =
self.score * percent;
494 percent = level.zombie_vars[
"penalty_downed"];;
495 self notify(
"I_am_down");
496 points =
self.score * percent;
502 assert( 0,
"Unknown point event" );
523 if( !isdefined( points ) || level.intermission )
533 self.score += n_points_to_add_to_currency;
534 self.pers[
"score"] =
self.score;
535 self IncrementPlayerStat(
"scoreEarned", n_points_to_add_to_currency);
536 level notify(
"earned_points",
self, points );
540 self.score_total += points;
541 level.score_total += points;
553 if( !isdefined( points ) || level.intermission )
561 self playsoundtoplayer(
"zmb_bgb_shoppingfree_coinreturn",
self );
565 self.score -= points;
566 self.pers[
"score"] =
self.score;
567 self IncrementPlayerStat(
"scoreSpent", points);
568 level notify(
"spent_points",
self, points );
632 players = GetPlayers(
self.team );
633 for( i = 0; i < players.size; i++ )
635 if( players[i] !=
self && !players[i].
is_zombie )
648 /# println(
"ZM >> LAST STAND - player_downed_penalty "); #/
657 if(
self.score >= n_cost )