1 #using scripts\codescripts\struct;
3 #using scripts\shared\array_shared;
4 #using scripts\shared\callbacks_shared;
5 #using scripts\shared\clientfield_shared;
6 #using scripts\shared\compass;
7 #using scripts\shared\exploder_shared;
8 #using scripts\shared\flag_shared;
9 #using scripts\shared\laststand_shared;
10 #using scripts\shared\math_shared;
11 #using scripts\shared\scene_shared;
12 #using scripts\shared\util_shared;
14 #insert scripts\shared\shared.gsh;
15 #insert scripts\shared\version.gsh;
17 #insert scripts\zm\_zm_utility.gsh;
19 #using scripts\zm\_load;
20 #using scripts\zm\_zm;
21 #using scripts\zm\_zm_audio;
22 #using scripts\zm\_zm_powerups;
23 #using scripts\zm\_zm_utility;
24 #using scripts\zm\_zm_weapons;
25 #using scripts\zm\_zm_zonemgr;
29 #using scripts\zm\_zm_pack_a_punch;
30 #using scripts\zm\_zm_pack_a_punch_util;
31 #using scripts\zm\_zm_perk_additionalprimaryweapon;
32 #using scripts\zm\_zm_perk_doubletap2;
33 #using scripts\zm\_zm_perk_deadshot;
34 #using scripts\zm\_zm_perk_juggernaut;
35 #using scripts\zm\_zm_perk_quick_revive;
36 #using scripts\zm\_zm_perk_sleight_of_hand;
37 #using scripts\zm\_zm_perk_staminup;
40 #using scripts\zm\_zm_powerup_double_points;
41 #using scripts\zm\_zm_powerup_carpenter;
42 #using scripts\zm\_zm_powerup_fire_sale;
43 #using scripts\zm\_zm_powerup_free_perk;
44 #using scripts\zm\_zm_powerup_full_ammo;
45 #using scripts\zm\_zm_powerup_insta_kill;
46 #using scripts\zm\_zm_powerup_nuke;
47 #using scripts\zm\_zm_powerup_weapon_minigun;
50 #using scripts\zm\_zm_weap_bowie;
51 #using scripts\zm\_zm_weap_bouncingbetty;
52 #using scripts\zm\_zm_weap_cymbal_monkey;
53 #using scripts\zm\_zm_weap_tesla;
54 #using scripts\zm\_zm_weap_rocketshield;
55 #using scripts\zm\_zm_weap_gravityspikes;
56 #using scripts\zm\_zm_weap_annihilator;
57 #using scripts\zm\_zm_weap_thundergun;
58 #using scripts\zm\_zm_weap_octobomb;
59 #using scripts\zm\_zm_weap_raygun_mark3;
62 #using scripts\zm\_zm_trap_electric;
65 #using scripts\shared\ai\zombie;
66 #using scripts\shared\ai\behavior_zombie_dog;
67 #using scripts\shared\ai\zombie_utility;
69 #using scripts\zm\_zm_ai_dogs;
71 #using scripts\zm\zm_usermap_ai;
73 #precache( "fx", "misc/fx_zombie_eye_single" );
74 #precache( "fx", "impacts/fx_flesh_hit" );
75 #precache( "fx", "misc/fx_zombie_bloodsplat" );
76 #precache( "fx", "misc/fx_zombie_bloodspurt" );
77 #precache( "fx", "weapon/bullet/fx_flesh_gib_fatal_01" );
78 #precache( "fx", "trail/fx_trail_blood_streak" );
79 #precache( "fx", "zombie/fx_glow_eye_orange" );
80 #precache( "fx", "zombie/fx_bul_flesh_head_fatal_zmb" );
81 #precache( "fx", "zombie/fx_bul_flesh_head_nochunks_zmb" );
82 #precache( "fx", "zombie/fx_bul_flesh_neck_spurt_zmb" );
83 #precache( "fx", "zombie/fx_blood_torso_explo_zmb" );
84 #precache( "fx", "trail/fx_trail_blood_streak" );
85 #precache( "fx", "electric/fx_elec_sparks_directional_orange" );
88 #namespace zm_usermap;
107 level._uses_default_wallbuy_fx = 1;
112 level._effect[
"eye_glow"] =
"zombie/fx_glow_eye_orange";
113 level._effect[
"headshot"] =
"zombie/fx_bul_flesh_head_fatal_zmb";
114 level._effect[
"headshot_nochunks"] =
"zombie/fx_bul_flesh_head_nochunks_zmb";
115 level._effect[
"bloodspurt"] =
"zombie/fx_bul_flesh_neck_spurt_zmb";
117 level._effect[
"animscript_gib_fx"] =
"zombie/fx_blood_torso_explo_zmb";
118 level._effect[
"animscript_gibtrail_fx"] =
"trail/fx_trail_blood_streak";
119 level._effect[
"switch_sparks"] =
"electric/fx_elec_sparks_directional_orange";
122 level.default_start_location =
"start_room";
123 level.default_game_mode =
"zclassic";
137 level._allow_melee_weapon_switching = 1;
139 level.zombiemode_reusing_pack_a_punch =
true;
146 DEFAULT(level.dog_rounds_allowed,1);
147 if( level.dog_rounds_allowed )
168 level.zombie_lethal_grenade_player_init = GetWeapon(
"frag_grenade" );
171 level.zombie_melee_weapon_player_init = level.weaponBaseMelee;
176 level.zombie_equipment_player_init = undefined;
181 self endon(
"death" );
201 level.characterStartIndex = RandomInt( 4 );
206 if( level.characterStartIndex>=4 )
207 level.characterStartIndex = 0;
209 self.characterIndex = level.characterStartIndex;
210 level.characterStartIndex++;
212 return self.characterIndex;
220 charindexarray[0] = 0;
221 charindexarray[1] = 1;
222 charindexarray[2] = 2;
223 charindexarray[3] = 3;
225 players = GetPlayers();
226 if ( players.size == 1 )
228 charindexarray = array::randomize( charindexarray );
229 if ( charindexarray[0] == 2 )
231 level.has_richtofen =
true;
234 return charindexarray[0];
238 n_characters_defined = 0;
240 foreach ( player
in players )
242 if ( isDefined( player.characterIndex ) )
244 ArrayRemoveValue( charindexarray, player.characterIndex,
false );
245 n_characters_defined++;
249 if ( charindexarray.size > 0 )
252 if ( n_characters_defined == (players.size - 1) )
254 if ( !
IS_TRUE( level.has_richtofen ) )
256 level.has_richtofen =
true;
262 charindexarray = array::randomize(charindexarray);
263 if ( charindexarray[0] == 2 )
265 level.has_richtofen =
true;
268 return charindexarray[0];
278 if( isdefined(level.hotjoin_player_setup) && [[level.hotjoin_player_setup]](
"c_zom_farmgirl_viewhands") )
287 if ( !isdefined(
self.characterIndex ) )
292 self.favorite_wall_weapons_list = [];
293 self.talks_in_danger =
false;
295 self SetCharacterBodyType(
self.characterIndex );
296 self SetCharacterBodyStyle( 0 );
297 self SetCharacterHelmetStyle( 0 );
299 switch(
self.characterIndex )
305 self.favorite_wall_weapons_list[
self.favorite_wall_weapons_list.size] = GetWeapon(
"870mcs" );
313 self.favorite_wall_weapons_list[
self.favorite_wall_weapons_list.size] = GetWeapon(
"frag_grenade" );
314 self.favorite_wall_weapons_list[
self.favorite_wall_weapons_list.size] = GetWeapon(
"bouncingbetty" );
321 self.favorite_wall_weapons_list[
self.favorite_wall_weapons_list.size] = GetWeapon(
"hk416" );
328 self.talks_in_danger =
true;
329 level.rich_sq_player =
self;
330 level.sndRadioA =
self;
331 self.favorite_wall_weapons_list[
self.favorite_wall_weapons_list.size] = GetWeapon(
"pistol_standard" );
336 self SetMoveSpeedScale( 1 );
337 self SetSprintDuration( 4 );
338 self SetSprintCooldown( 0 );
347 self endon(
"disconnect");
357 level.exert_sounds[1][
"burp"][0] =
"evt_belch";
358 level.exert_sounds[1][
"burp"][1] =
"evt_belch";
359 level.exert_sounds[1][
"burp"][2] =
"evt_belch";
361 level.exert_sounds[2][
"burp"][0] =
"evt_belch";
362 level.exert_sounds[2][
"burp"][1] =
"evt_belch";
363 level.exert_sounds[2][
"burp"][2] =
"evt_belch";
365 level.exert_sounds[3][
"burp"][0] =
"evt_belch";
366 level.exert_sounds[3][
"burp"][1] =
"evt_belch";
367 level.exert_sounds[3][
"burp"][2] =
"evt_belch";
369 level.exert_sounds[4][
"burp"][0] =
"evt_belch";
370 level.exert_sounds[4][
"burp"][1] =
"evt_belch";
371 level.exert_sounds[4][
"burp"][2] =
"evt_belch";
375 level.exert_sounds[1][
"hitmed"][0] =
"vox_plr_0_exert_pain_0";
376 level.exert_sounds[1][
"hitmed"][1] =
"vox_plr_0_exert_pain_1";
377 level.exert_sounds[1][
"hitmed"][2] =
"vox_plr_0_exert_pain_2";
378 level.exert_sounds[1][
"hitmed"][3] =
"vox_plr_0_exert_pain_3";
379 level.exert_sounds[1][
"hitmed"][4] =
"vox_plr_0_exert_pain_4";
381 level.exert_sounds[2][
"hitmed"][0] =
"vox_plr_1_exert_pain_0";
382 level.exert_sounds[2][
"hitmed"][1] =
"vox_plr_1_exert_pain_1";
383 level.exert_sounds[2][
"hitmed"][2] =
"vox_plr_1_exert_pain_2";
384 level.exert_sounds[2][
"hitmed"][3] =
"vox_plr_1_exert_pain_3";
385 level.exert_sounds[2][
"hitmed"][4] =
"vox_plr_1_exert_pain_4";
387 level.exert_sounds[3][
"hitmed"][0] =
"vox_plr_2_exert_pain_0";
388 level.exert_sounds[3][
"hitmed"][1] =
"vox_plr_2_exert_pain_1";
389 level.exert_sounds[3][
"hitmed"][2] =
"vox_plr_2_exert_pain_2";
390 level.exert_sounds[3][
"hitmed"][3] =
"vox_plr_2_exert_pain_3";
391 level.exert_sounds[3][
"hitmed"][4] =
"vox_plr_2_exert_pain_4";
393 level.exert_sounds[4][
"hitmed"][0] =
"vox_plr_3_exert_pain_0";
394 level.exert_sounds[4][
"hitmed"][1] =
"vox_plr_3_exert_pain_1";
395 level.exert_sounds[4][
"hitmed"][2] =
"vox_plr_3_exert_pain_2";
396 level.exert_sounds[4][
"hitmed"][3] =
"vox_plr_3_exert_pain_3";
397 level.exert_sounds[4][
"hitmed"][4] =
"vox_plr_3_exert_pain_4";
400 level.exert_sounds[1][
"hitlrg"][0] =
"vox_plr_0_exert_pain_0";
401 level.exert_sounds[1][
"hitlrg"][1] =
"vox_plr_0_exert_pain_1";
402 level.exert_sounds[1][
"hitlrg"][2] =
"vox_plr_0_exert_pain_2";
403 level.exert_sounds[1][
"hitlrg"][3] =
"vox_plr_0_exert_pain_3";
404 level.exert_sounds[1][
"hitlrg"][4] =
"vox_plr_0_exert_pain_4";
406 level.exert_sounds[2][
"hitlrg"][0] =
"vox_plr_1_exert_pain_0";
407 level.exert_sounds[2][
"hitlrg"][1] =
"vox_plr_1_exert_pain_1";
408 level.exert_sounds[2][
"hitlrg"][2] =
"vox_plr_1_exert_pain_2";
409 level.exert_sounds[2][
"hitlrg"][3] =
"vox_plr_1_exert_pain_3";
410 level.exert_sounds[2][
"hitlrg"][4] =
"vox_plr_1_exert_pain_4";
412 level.exert_sounds[3][
"hitlrg"][0] =
"vox_plr_2_exert_pain_0";
413 level.exert_sounds[3][
"hitlrg"][1] =
"vox_plr_2_exert_pain_1";
414 level.exert_sounds[3][
"hitlrg"][2] =
"vox_plr_2_exert_pain_2";
415 level.exert_sounds[3][
"hitlrg"][3] =
"vox_plr_2_exert_pain_3";
416 level.exert_sounds[3][
"hitlrg"][4] =
"vox_plr_2_exert_pain_4";
418 level.exert_sounds[4][
"hitlrg"][0] =
"vox_plr_3_exert_pain_0";
419 level.exert_sounds[4][
"hitlrg"][1] =
"vox_plr_3_exert_pain_1";
420 level.exert_sounds[4][
"hitlrg"][2] =
"vox_plr_3_exert_pain_2";
421 level.exert_sounds[4][
"hitlrg"][3] =
"vox_plr_3_exert_pain_3";
422 level.exert_sounds[4][
"hitlrg"][4] =
"vox_plr_3_exert_pain_4";
427 self giveWeapon( level.weaponBaseMelee );
436 #define JUGGERNAUT_MACHINE_LIGHT_FX "jugger_light"
437 #define QUICK_REVIVE_MACHINE_LIGHT_FX "revive_light"
438 #define STAMINUP_MACHINE_LIGHT_FX "marathon_light"
439 #define WIDOWS_WINE_FX_MACHINE_LIGHT "widow_light"
440 #define SLEIGHT_OF_HAND_MACHINE_LIGHT_FX "sleight_light"
441 #define DOUBLETAP2_MACHINE_LIGHT_FX "doubletap2_light"
442 #define DEADSHOT_MACHINE_LIGHT_FX "deadshot_light"
443 #define ADDITIONAL_PRIMARY_WEAPON_MACHINE_LIGHT_FX "additionalprimaryweapon_light"
463 #define PLAYTYPE_REJECT 1
464 #define PLAYTYPE_QUEUE 2
465 #define PLAYTYPE_ROUND 3
466 #define PLAYTYPE_SPECIAL 4
467 #define PLAYTYPE_GAMEEND 5