1 #using scripts\codescripts\struct;
3 #using scripts\shared\aat_shared;
4 #using scripts\shared\archetype_shared\archetype_shared;
5 #using scripts\shared\array_shared;
6 #using scripts\shared\callbacks_shared;
7 #using scripts\shared\clientfield_shared;
8 #using scripts\shared\duplicaterender_mgr;
9 #using scripts\shared\fx_shared;
10 #using scripts\shared\system_shared;
11 #using scripts\shared\util_shared;
12 #using scripts\shared\visionset_mgr_shared;
14 #insert scripts\shared\aat_shared.gsh;
15 #insert scripts\shared\duplicaterender.gsh;
16 #insert scripts\shared\shared.gsh;
17 #insert scripts\shared\version.gsh;
19 #using scripts\zm\_load;
20 #using scripts\zm\_sticky_grenade;
21 #using scripts\shared\util_shared;
22 #using scripts\zm\_zm_audio;
23 #using scripts\zm\_zm_bgb;
24 #using scripts\zm\_zm_demo;
25 #using scripts\zm\_zm_equipment;
26 #using scripts\zm\_zm_ffotd;
27 #using scripts\zm\_zm_laststand;
28 #using scripts\zm\_zm_perks;
29 #using scripts\zm\_zm_powerups;
30 #using scripts\zm\_zm_utility;
31 #using scripts\zm\_zm_weapons;
32 #using scripts\zm\_zm_zdraw;
35 #insert scripts\shared\aat_zm.gsh;
36 #using scripts\zm\aats\_zm_aat_blast_furnace;
37 #using scripts\zm\aats\_zm_aat_dead_wire;
38 #using scripts\zm\aats\_zm_aat_fire_works;
39 #using scripts\zm\aats\_zm_aat_thunder_wall;
40 #using scripts\zm\aats\_zm_aat_turned;
42 #precache( "client_fx", "_t6/maps/zombie/fx_mp_zombie_hand_water_burst" );
43 #precache( "client_fx", "_t6/maps/zombie/fx_mp_zombie_body_water_billowing" );
44 #precache( "client_fx", "_t6/maps/zombie/fx_zombie_body_wtr_falling" );
45 #precache( "client_fx", "zombie/fx_spawn_dirt_hand_burst_zmb" );
46 #precache( "client_fx", "zombie/fx_spawn_dirt_body_billowing_zmb" );
47 #precache( "client_fx", "zombie/fx_spawn_dirt_body_dustfalling_zmb" );
48 #precache( "client_fx", "_t6/maps/zombie/fx_mp_zombie_hand_snow_burst" );
49 #precache( "client_fx", "_t6/maps/zombie/fx_mp_zombie_body_snow_falling" );
50 #precache( "client_fx", "zombie/fx_blood_torso_explo_zmb" );
51 #precache( "client_fx", "zombie/fx_blood_torso_explo_lg_zmb" );
95 if ( GetDvarInt(
"splitscreen_playerCount" ) > 2 )
107 level.onlineGame = SessionModeIsOnlineGame();
108 level.swimmingFeature =
false;
111 level.scr_zm_ui_gametype = GetDvarString(
"ui_gametype" );
112 level.scr_zm_map_start_location =
"";
113 level.gamedifficulty = GetGametypeSetting(
"zmDifficulty" );
114 level.enable_magic = GetGametypeSetting(
"magic" );
115 level.headshots_only = GetGametypeSetting(
"headshotsonly" );
117 level.disable_equipment_team_object =
true;
135 level.gibResetTime = 0.5;
136 level.gibMaxCount = 3;
145 level._BOX_INDICATOR_NO_LIGHTS = -1;
146 level._BOX_INDICATOR_FLASH_LIGHTS_MOVING = 99;
148 level._box_indicator = level._BOX_INDICATOR_NO_LIGHTS;
152 level._ZOMBIE_GIB_PIECE_INDEX_ALL = 0;
153 level._ZOMBIE_GIB_PIECE_INDEX_RIGHT_ARM = 1;
154 level._ZOMBIE_GIB_PIECE_INDEX_LEFT_ARM = 2;
155 level._ZOMBIE_GIB_PIECE_INDEX_RIGHT_LEG = 3;
156 level._ZOMBIE_GIB_PIECE_INDEX_LEFT_LEG = 4;
157 level._ZOMBIE_GIB_PIECE_INDEX_HEAD = 5;
158 level._ZOMBIE_GIB_PIECE_INDEX_GUTS = 6;
159 level._ZOMBIE_GIB_PIECE_INDEX_HAT = 7;
168 if (isdefined(level.setupCustomCharacterExerts))
169 [[level.setupCustomCharacterExerts]]();
179 players = GetLocalPlayers();
181 for(x=0;x<players.size;x++)
183 while( !ClientHasSnapshot( x ) )
191 level thread [[func]]();
195 #define PLAYER_KEYLINE_MATERIAL "mc/hud_keyline_zm_player"
196 #define PLAYER_KEYLINE_MATERIAL_LASTSTAND "mc/hud_keyline_zm_player_ls"
198 #define PLAYER_KEYLINE_DVAR "scr_hide_player_keyline"
200 #define SITREP_FRIENDLY_ONLY 4
201 #define SITREP_BEAST_MODE_AND_FRIENDLY 3
206 self oed_sitrepscan_setoutline( 1 );
207 self oed_sitrepscan_setlinewidth( 2 );
208 self oed_sitrepscan_setsolid( 1 );
209 self oed_sitrepscan_setradius( 800 );
210 self oed_sitrepscan_setfalloff( 0.1 );
219 if(
self == GetLocalPlayer( localClientNum ) )
224 if(
self IsPlayer() &&
self IsLocalPlayer() )
226 if( !IsDefined(
self GetLocalClientNumber()) || localClientNum ==
self GetLocalClientNumber() )
238 if ( !
self IsLocalPlayer() || !IsDefined(
self GetLocalClientNumber() ) || localClientNum !=
self GetLocalClientNumber() )
249 if ( !isdefined( level._laststand ) )
251 level._laststand = [];
254 level._laststand[localClientNum] =
false;
260 self endon(
"entityshutdown" );
262 while(!ClientHasSnapshot(localClientNum))
269 self ProcessClientFieldsAsIfNew();
282 if(isDefined(level.use_new_riser_water) && level.use_new_riser_water)
284 level._effect[
"rise_burst_water"] =
"_t6/maps/zombie/fx_mp_zombie_hand_water_burst";
285 level._effect[
"rise_billow_water"] =
"_t6/maps/zombie/fx_mp_zombie_body_water_billowing";
286 level._effect[
"rise_dust_water"] =
"_t6/maps/zombie/fx_zombie_body_wtr_falling";
289 level._effect[
"rise_burst"] =
"zombie/fx_spawn_dirt_hand_burst_zmb";
290 level._effect[
"rise_billow"] =
"zombie/fx_spawn_dirt_body_billowing_zmb";
291 level._effect[
"rise_dust"] =
"zombie/fx_spawn_dirt_body_dustfalling_zmb";
293 if(isDefined(level.riser_type) && level.riser_type ==
"snow")
295 level._effect[
"rise_burst_snow"] =
"_t6/maps/zombie/fx_mp_zombie_hand_snow_burst";
296 level._effect[
"rise_billow_snow"] =
"_t6/maps/zombie/fx_mp_zombie_body_snow_billowing";
297 level._effect[
"rise_dust_snow"] =
"_t6/maps/zombie/fx_mp_zombie_body_snow_falling";
308 if (
IS_TRUE( level.use_water_risers ) )
313 if (
IS_TRUE( level.use_foliage_risers ) )
318 if (
IS_TRUE( level.use_low_gravity_risers ) )
331 if ( IsDefined( power ) )
333 bits = GetMinBitCountForNum( power.size + 1 );
347 if(IsDefined(level._custom_box_monitor))
349 [[level._custom_box_monitor]](clientNum, state, oldState);
358 level waittill(
"ZPO",
int);
362 level notify(
"power_on",
int );
366 level notify(
"power_on" );
377 level waittill(
"ZPOff",
int);
381 level notify(
"power_off",
int );
385 level notify(
"power_off" );
394 level notify(
"ZPO", newVal);
402 level notify(
"ZPOff", newVal);
408 model = CreateUIModel( GetUIModelForController( localClientNum ),
"hudItems.time.round_complete_time" );
409 SetUIModelValue( model, newVal );
412 function round_complete_num(localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump)
414 model = CreateUIModel( GetUIModelForController( localClientNum ),
"hudItems.time.round_complete_num" );
415 SetUIModelValue( model, newVal );
418 function game_end_time(localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump)
420 model = CreateUIModel( GetUIModelForController( localClientNum ),
"hudItems.time.game_end_time" );
421 SetUIModelValue( model, newVal );
426 model = CreateUIModel( GetUIModelForController( localClientNum ),
"hudItems.time.quest_complete_time" );
427 SetUIModelValue( model, newVal );
430 function game_start_time(localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump)
432 model = CreateUIModel( GetUIModelForController( localClientNum ),
"hudItems.time.game_start_time" );
433 SetUIModelValue( model, newVal );
440 self endon(
"entityshutdown");
444 if ( !isdefined(
self._eyeArray ) )
449 if ( !isdefined(
self._eyeArray[localClientNum] ) )
451 linkTag =
"j_eyeball_le";
453 effect = level._effect[
"eye_glow"];
456 if(IsDefined(level._override_eye_fx))
458 effect = level._override_eye_fx;
461 if(IsDefined(
self._eyeglow_fx_override))
463 effect =
self._eyeglow_fx_override;
466 if(IsDefined(
self._eyeglow_tag_override))
468 linkTag =
self._eyeglow_tag_override;
471 self._eyeArray[localClientNum] = PlayFxOnTag( localClientNum, effect,
self, linkTag );
483 if ( isdefined(
self._eyeArray ) )
485 if ( isdefined(
self._eyeArray[localClientNum] ) )
487 DeleteFx( localClientNum,
self._eyeArray[localClientNum],
true );
488 self._eyeArray[localClientNum] = undefined;
495 if (
self IsPlayer() )
497 self.zombie_face = newVal;
498 self notify(
"face",
"face_advance" );
510 if(
self IsPlayer() &&
self IsLocalPlayer() && !IsDemoPlaying() )
512 if( localClientNum ==
self GetLocalClientNumber() )
516 if( !IsDemoPlaying() )
524 if(
self IsPlayer() &&
self IsLocalPlayer() && !IsDemoPlaying() )
526 if( localClientNum ==
self GetLocalClientNumber() )
530 if ( !IsDefined(
self.special_eyes) ||
self.special_eyes != newVal )
532 self.special_eyes = newVal;
536 self._eyeglow_fx_override = level._effect[
"player_eye_glow_blue"];
540 self._eyeglow_fx_override = level._effect[
"player_eye_glow_orng"];
543 if( !IsDemoPlaying() )
552 self endon(
"entityshutdown" );
553 self endon(
"death_or_disconnect" );
554 self endon(
"new_zombie_eye_cb" );
562 self.eyes_spawned =
false;
568 self endon(
"entityshutdown" );
569 self endon(
"death_or_disconnect" );
570 self endon(
"new_zombie_eye_cb" );
578 if( !
self IsLocalPlayer() || IsSpectating( localClientNum,
true ) || localClientNum !=
self GetLocalClientNumber() )
580 if( !
IS_TRUE(
self.eyes_spawned ) )
584 self.eyes_spawned =
true;
593 self.eyes_spawned =
false;
604 self.eyes_spawned =
false;
610 self notify(
"new_zombie_eye_cb" );
616 if(!IsDefined(newVal))
633 if ( IsDefined( level.zombie_eyes_clientfield_cb_additional ) )
635 self [[ level.zombie_eyes_clientfield_cb_additional ]]( localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump );
641 if(!IsDefined(newVal))
646 if(
IS_TRUE(level.debug_keyline_zombies) )
663 if( IsDefined( level.eyeball_on_luminance_override ) )
665 return level.eyeball_on_luminance_override;
673 if( IsDefined( level.eyeball_off_luminance_override ) )
675 return level.eyeball_off_luminance_override;
685 if ( IsDefined( level.zombie_eyeball_color_override ) )
687 val = level.zombie_eyeball_color_override;
690 if ( IsDefined(
self.zombie_eyeball_color_override ) )
692 val =
self.zombie_eyeball_color_override;
710 if(isdefined(level._effect[
"zombie_guts_explosion"]))
712 org =
self GetTagOrigin(
"J_SpineLower");
716 playfx( localClientNum, level._effect[
"zombie_guts_explosion"], org );
724 level._effect[
"zombie_guts_explosion"] =
"zombie/fx_blood_torso_explo_lg_zmb";
730 where =
self GetTagOrigin(
"J_SpineLower" );
731 if (!isdefined(where))
735 while ( GetTime() - start < 2000 )
739 where =
self GetTagOrigin(
"J_SpineLower" );
740 if (!isdefined(where))
746 if ( IsDefined( level._effect[
"zombie_guts_explosion" ] ) &&
util::is_mature() )
748 Playfx( localClientNum, level._effect[
"zombie_guts_explosion"], where );
755 if ( !isdefined(
self.gibbed_pieces ) )
757 self.gibbed_pieces = [];
760 self.gibbed_pieces[
self.gibbed_pieces.size] = piece_index;
766 if ( !isdefined(
self.gibbed_pieces ) )
771 for ( i = 0; i <
self.gibbed_pieces.size; i++ )
773 if (
self.gibbed_pieces[i] == piece_index )
786 fxOrigin =
self GetTagOrigin( fxTag );
787 upVec = AnglesToUp(
self GetTagAngles( fxTag ) );
788 forwardVec = AnglesToForward(
self GetTagAngles( fxTag ) );
790 players = level.localPlayers;
792 for ( i = 0; i < players.size; i++ )
795 PlayFX( i, level._effect[
"headshot"], fxOrigin, forwardVec, upVec );
796 PlayFX( i, level._effect[
"headshot_nochunks"], fxOrigin, forwardVec, upVec );
799 PlaySound( 0,
"zmb_zombie_head_gib", fxOrigin );
802 if ( IsDefined(
self ) )
804 players = level.localPlayers;
806 for ( i = 0; i < players.size; i++ )
808 PlayFxOnTag( i, level._effect[
"bloodspurt"],
self, fxTag );
815 players = level.localPlayers;
817 for ( i = 0; i < players.size; i++ )
819 PlayFxOnTag( i, level._effect[
"animscript_gib_fx"],
self, tag );
821 PlaySound( 0,
"zmb_death_gibs",
self gettagorigin( tag ) );
829 start_pos =
self gettagorigin( tag );
830 start_angles =
self gettagangles(tag);
839 end_pos = start_pos + (AnglesToForward(start_angles) * 10);
840 angles = start_angles;
844 end_pos =
self gettagorigin( tag );
845 angles =
self gettagangles(tag);
848 if ( IsDefined(
self._gib_vel ) )
850 forward =
self._gib_vel;
851 self._gib_vel = undefined;
855 forward = VectorNormalize( end_pos - start_pos );
856 forward *= RandomFloatRange( 0.6, 1.0 );
857 forward += (0, 0, RandomFloatRange( 0.4, 0.7 ));
861 CreateDynEntAndLaunch( 0, model, end_pos, angles, start_pos, forward, level._effect[
"animscript_gibtrail_fx"], 1 );
869 PlaySound( 0,
"zmb_death_gibs", end_pos);
878 start_pos =
self gettagorigin( tag );
879 start_angles =
self gettagangles( tag );
880 up_angles = (0, 0, 1);
882 force = (0, 0, RandomFloatRange( 1.4, 1.7 ));
884 CreateDynEntAndLaunch( 0, model, start_pos, up_angles, start_pos, force );
889 if( level.gibCount<=level.gibMaxCount )
898 self endon(
"disconnect" );
902 wait( level.gibResetTime );
910 if ( localClientNum != 0 )
920 if ( !isDefined(
self._gib_def ) )
925 if ( IsDefined( level._gib_overload_func ) )
927 if (
self [[level._gib_overload_func]]( type, locations ) )
939 for ( i = 0; i < locations.size; i++ )
942 if ( IsDefined(
self.gibbed ) && level._ZOMBIE_GIB_PIECE_INDEX_HEAD != locations[i] )
947 switch( locations[i] )
950 if ( IsDefined(
self._gib_def.gibSpawn1 ) && IsDefined(
self._gib_def.gibSpawnTag1 ) )
952 self thread
do_gib(
self._gib_def.gibSpawn1,
self._gib_def.gibSpawnTag1 );
954 if ( IsDefined(
self._gib_def.gibSpawn2 ) && IsDefined(
self._gib_def.gibSpawnTag2 ) )
956 self thread
do_gib(
self._gib_def.gibSpawn2,
self._gib_def.gibSpawnTag2 );
958 if ( IsDefined(
self._gib_def.gibSpawn3 ) && IsDefined(
self._gib_def.gibSpawnTag3 ) )
960 self thread
do_gib(
self._gib_def.gibSpawn3,
self._gib_def.gibSpawnTag3 );
962 if ( IsDefined(
self._gib_def.gibSpawn4 ) && IsDefined(
self._gib_def.gibSpawnTag4 ) )
964 self thread
do_gib(
self._gib_def.gibSpawn4,
self._gib_def.gibSpawnTag4 );
966 if ( IsDefined(
self._gib_def.gibSpawn5 ) && IsDefined(
self._gib_def.gibSpawnTag5 ) )
968 self thread
do_hat_gib(
self._gib_def.gibSpawn5,
self._gib_def.gibSpawnTag5 );
983 if ( IsDefined(
self._gib_def.gibSpawn1 ) && IsDefined(
self._gib_def.gibSpawnTag1 ) )
985 self thread
do_gib(
self._gib_def.gibSpawn1,
self._gib_def.gibSpawnTag1 );
989 if ( !IsDefined(
self._gib_def.gibSpawn1 ) )
992 if ( !IsDefined(
self._gib_def.gibSpawnTag1 ) )
1001 if ( IsDefined(
self._gib_def.gibSpawn2 ) && IsDefined(
self._gib_def.gibSpawnTag2 ) )
1003 self thread
do_gib(
self._gib_def.gibSpawn2,
self._gib_def.gibSpawnTag2 );
1007 if ( !IsDefined(
self._gib_def.gibSpawn2 ) )
1010 if ( !IsDefined(
self._gib_def.gibSpawnTag2 ) )
1019 if ( IsDefined(
self._gib_def.gibSpawn3 ) && IsDefined(
self._gib_def.gibSpawnTag3 ) )
1021 self thread
do_gib(
self._gib_def.gibSpawn3,
self._gib_def.gibSpawnTag3 );
1028 if ( IsDefined(
self._gib_def.gibSpawn4 ) && IsDefined(
self._gib_def.gibSpawnTag4 ) )
1030 self thread
do_gib(
self._gib_def.gibSpawn4,
self._gib_def.gibSpawnTag4 );
1047 if ( IsDefined(
self._gib_def.gibSpawn5 ) && IsDefined(
self._gib_def.gibSpawnTag5 ) )
1049 self thread
do_hat_gib(
self._gib_def.gibSpawn5,
self._gib_def.gibSpawnTag5 );
1067 self endon(
"death" );
1068 self endon(
"disconnect" );
1071 if( !IsDefined(
self._zombie_visionset_list ) )
1074 self._zombie_visionset_list = [];
1078 if( !IsDefined( str_visionset ) || !IsDefined( int_priority ) )
1084 if( !IsDefined( flt_transition_time ) )
1086 flt_transition_time = 1;
1089 if( !IsDefined( int_clientnum ) )
1091 if (
self IsLocalPlayer() )
1093 int_clientnum =
self GetLocalClientNumber();
1096 if(!IsDefined(int_clientnum))
1103 already_in_array =
false;
1106 if(
self._zombie_visionset_list.size != 0 )
1108 for( i = 0; i <
self._zombie_visionset_list.size; i++ )
1110 if( IsDefined(
self._zombie_visionset_list[i].vision_set ) &&
self._zombie_visionset_list[i].vision_set == str_visionset )
1112 already_in_array =
true;
1115 if(
self._zombie_visionset_list[i].priority != int_priority )
1118 self._zombie_visionset_list[i].priority = int_priority;
1131 if( !already_in_array )
1134 temp_struct = spawnStruct();
1135 temp_struct.vision_set = str_visionset;
1136 temp_struct.priority = int_priority;
1137 array::add(
self._zombie_visionset_list, temp_struct,
false );
1143 if( IsDefined( vision_to_set ) )
1146 VisionSetNaked( int_clientnum, vision_to_set, flt_transition_time );
1151 VisionSetNaked( int_clientnum,
"undefined", flt_transition_time );
1160 self endon(
"death" );
1161 self endon(
"disconnect" );
1164 if( !IsDefined( str_visionset ) )
1170 if( !IsDefined( flt_transition_time ) )
1172 flt_transition_time = 1;
1176 if( !IsDefined(
self._zombie_visionset_list ) )
1178 self._zombie_visionset_list = [];
1182 if( !IsDefined( int_clientnum ) )
1184 if (
self IsLocalPlayer() )
1186 int_clientnum =
self GetLocalClientNumber();
1189 if(!IsDefined(int_clientnum))
1196 temp_struct = undefined;
1197 for( i = 0; i <
self._zombie_visionset_list.size; i++ )
1199 if( IsDefined(
self._zombie_visionset_list[i].vision_set ) &&
self._zombie_visionset_list[i].vision_set == str_visionset )
1201 temp_struct =
self._zombie_visionset_list[i];
1205 if( IsDefined( temp_struct ) )
1207 ArrayRemoveValue(
self._zombie_visionset_list, temp_struct );
1213 if( IsDefined( vision_to_set ) )
1216 VisionSetNaked( int_clientnum, vision_to_set, flt_transition_time );
1221 VisionSetNaked( int_clientnum,
"undefined", flt_transition_time );
1228 if( !IsDefined(
self._zombie_visionset_list ) )
1234 highest_score_vision = undefined;
1239 for( i = 0; i <
self._zombie_visionset_list.size; i++ )
1241 if( IsDefined(
self._zombie_visionset_list[i].priority ) &&
self._zombie_visionset_list[i].priority > highest_score )
1243 highest_score =
self._zombie_visionset_list[i].priority;
1244 highest_score_vision =
self._zombie_visionset_list[i].vision_set;
1250 return highest_score_vision;
1255 level endon(
"demo_jump");
1256 self endon(
"entityshutdown");
1258 if ( !oldVal && newVal )
1260 localPlayers = level.localPlayers;
1261 playsound(0,
"zmb_zombie_spawn",
self.origin);
1263 burst_fx = level._effect[
"rise_burst_foliage"];
1264 billow_fx = level._effect[
"rise_billow_foliage"];
1267 for(i = 0; i < localPlayers.size; i ++)
1276 level endon(
"demo_jump");
1277 self endon(
"entityshutdown");
1279 if ( !oldVal && newVal )
1281 localPlayers = level.localPlayers;
1282 playsound(0,
"zmb_zombie_spawn_water",
self.origin);
1284 burst_fx = level._effect[
"rise_burst_water"];
1285 billow_fx = level._effect[
"rise_billow_water"];
1288 for(i = 0; i < localPlayers.size; i ++)
1298 level endon(
"demo_jump");
1299 self endon(
"entityshutdown");
1301 if ( !oldVal && newVal )
1303 localPlayers = level.localPlayers;
1305 sound =
"zmb_zombie_spawn";
1306 burst_fx = level._effect[
"rise_burst"];
1307 billow_fx = level._effect[
"rise_billow"];
1310 if(isdefined(level.riser_type) && level.riser_type ==
"snow" )
1312 sound =
"zmb_zombie_spawn_snow";
1313 burst_fx = level._effect[
"rise_burst_snow"];
1314 billow_fx = level._effect[
"rise_billow_snow"];
1318 playsound (0,sound,
self.origin);
1320 for(i = 0; i < localPlayers.size; i ++)
1330 level endon(
"demo_jump");
1331 self endon(
"entityshutdown");
1333 if ( !oldVal && newVal )
1335 localPlayers = level.localPlayers;
1337 sound =
"zmb_zombie_spawn";
1338 burst_fx = level._effect[
"rise_burst_lg"];
1339 billow_fx = level._effect[
"rise_billow_lg"];
1342 if(isdefined(level.riser_type) && level.riser_type ==
"snow" )
1344 sound =
"zmb_zombie_spawn_snow";
1345 burst_fx = level._effect[
"rise_burst_snow"];
1346 billow_fx = level._effect[
"rise_billow_snow"];
1350 playsound (0,sound,
self.origin);
1352 for(i = 0; i < localPlayers.size; i ++)
1362 dust_tag =
"J_SpineUpper";
1364 self endon(
"entityshutdown");
1365 level endon(
"demo_jump");
1367 if ( IsDefined( level.zombie_custom_riser_fx_handler ) )
1369 s_info =
self [[ level.zombie_custom_riser_fx_handler ]]();
1371 if ( IsDefined( s_info ) )
1373 if ( IsDefined( s_info.burst_fx ) )
1375 burst_fx = s_info.burst_fx;
1378 if ( IsDefined( s_info.billow_fx ) )
1380 billow_fx = s_info.billow_fx;
1383 if ( IsDefined( s_info.type ) )
1390 if ( IsDefined( burst_fx ) )
1392 playfx(clientnum,burst_fx,
self.origin + ( 0,0,randomintrange(5,10) ) );
1397 if ( IsDefined( billow_fx ) )
1399 playfx(clientnum,billow_fx,
self.origin + ( randomintrange(-10,10),randomintrange(-10,10),randomintrange(5,10) ) );
1406 player = level.localPlayers[clientnum];
1408 effect = level._effect[
"rise_dust"];
1412 effect = level._effect[
"rise_dust_water"];
1414 else if ( type ==
"snow")
1416 effect = level._effect[
"rise_dust_snow"];
1418 else if ( type ==
"foliage" )
1420 effect = level._effect[
"rise_dust_foliage"];
1422 else if ( type ==
"none" )
1427 for (t = 0; t < dust_time; t += dust_interval)
1429 if (!isdefined(
self))
1431 PlayfxOnTag(clientnum,effect,
self, dust_tag);
1439 self waittill(
"lastStandEnd");
1443 playsound(clientNum,
"revive_gasp");
1450 self endon(
"lastStandEnd");
1452 const startVol = 0.5;
1455 const startPause = 0.5;
1456 const maxPause = 2.0;
1463 id = playsound(clientNum,
"chr_heart_beat");
1464 setSoundVolume(
id, vol);
1493 player = level.localPlayers[clientNum];
1494 players = level.localPlayers;
1496 if(!isdefined(player))
1503 if(!level._laststand[clientNum])
1505 if(!isdefined(level.lslooper))
1507 level.lslooper =
spawn(0, player.origin,
"script.origin");
1512 if( players.size <= 1 )
1514 level.lslooper playloopsound(
"evt_laststand_loop", 0.3);
1517 level._laststand[clientNum] =
true;
1522 if(level._laststand[clientNum])
1524 if(isdefined(level.lslooper))
1526 level.lslooper StopAllLoopSounds(0.7);
1528 playsound (0,
"evt_laststand_in", (0,0,0));
1530 player notify(
"lastStandEnd");
1531 level._laststand[clientNum] =
false;
1536 function Laststand(localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump)
1540 if( !(
self IsPlayer() &&
self IsLocalPlayer() && IsDemoPlaying() ) )
1551 if(
self IsPlayer() &&
self IsLocalPlayer() && !IsDemoPlaying() )
1553 if( IsDefined(
self GetLocalClientNumber()) && localClientNum ==
self GetLocalClientNumber() )
1558 function update_aat_hud( localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump )
1566 controllerModel = GetUIModelForController( localClientNum );
1567 AATModel = CreateUIModel( controllerModel,
"CurrentWeapon.aat" );
1568 SetUIModelValue( AATModel, str_localized );
1570 AATIconModel = CreateUIModel( controllerModel,
"CurrentWeapon.aatIcon" );
1571 SetUIModelValue( AATIconModel, icon );