burc_2004

zm_tomb_ee_main_step_4.gsc

Oct 22nd, 2015
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.15 KB | None | 0 0
  1. #include maps/mp/animscripts/zm_shared;
  2. #include maps/mp/zombies/_zm_powerups;
  3. #include maps/mp/zombies/_zm_spawner;
  4. #include maps/mp/zombies/_zm_ai_mechz_ffotd;
  5. #include maps/mp/zm_tomb_vo;
  6. #include maps/mp/zombies/_zm_ai_mechz_booster;
  7. #include maps/mp/zombies/_zm_ai_mechz_ft;
  8. #include maps/mp/zombies/_zm_ai_mechz_claw;
  9. #include maps/mp/zombies/_zm_ai_mechz_dev;
  10. #include maps/mp/zombies/_zm_ai_mechz;
  11. #include maps/mp/zm_tomb_ee_main;
  12. #include maps/mp/zombies/_zm_sidequests;
  13. #include maps/mp/zombies/_zm_utility;
  14. #include maps/mp/_utility;
  15. #include common_scripts/utility;
  16.  
  17. init()
  18. {
  19.     declare_sidequest_stage( "little_girl_lost", "step_4", ::init_stage, ::stage_logic, ::exit_stage );
  20. }
  21.  
  22. init_stage()
  23. {
  24.     level._cur_stage_name = "step_4";
  25.     level.ee_mech_zombies_killed = 0;
  26.     level.ee_mech_zombies_alive = 0;
  27.     level.ee_mech_zombies_spawned = 0;
  28.     level.quadrotor_custom_behavior = ::mech_zombie_hole_search;
  29. }
  30.  
  31. stage_logic()
  32. {
  33. /#
  34.     iprintln( level._cur_stage_name + " of little girl lost started" );
  35. #/
  36.     flag_wait( "ee_quadrotor_disabled" );
  37.     level thread sndee4music();
  38.     while ( !flag( "ee_mech_zombie_fight_completed" ) )
  39.     {
  40.         while ( level.ee_mech_zombies_spawned < 8 )
  41.         {
  42.             if ( level.ee_mech_zombies_alive < 4 )
  43.             {
  44.                 ai = spawn_zombie( level.mechz_spawners[ 0 ] );
  45.                 ai thread ee_mechz_spawn( level.ee_mech_zombies_spawned % 4 );
  46.                 level.ee_mech_zombies_alive++;
  47.                 level.ee_mech_zombies_spawned++;
  48.             }
  49.             wait randomfloatrange( 0,5, 1 );
  50.         }
  51.     }
  52.     flag_wait( "ee_mech_zombie_fight_completed" );
  53.     wait_network_frame();
  54.     stage_completed( "little_girl_lost", level._cur_stage_name );
  55. }
  56.  
  57. exit_stage( success )
  58. {
  59.     level.quadrotor_custom_behavior = undefined;
  60. }
  61.  
  62. mech_zombie_hole_search()
  63. {
  64.     s_goal = getstruct( "ee_mech_hole_goal_0", "targetname" );
  65.     if ( distance2dsquared( self.origin, s_goal.origin ) < 250000 )
  66.     {
  67.         self setvehgoalpos( s_goal.origin, 1, 2, 1 );
  68.         self waittill_any( "near_goal", "force_goal", "reached_end_node" );
  69.         s_goal = getstruct( "ee_mech_hole_goal_1", "targetname" );
  70.         self setvehgoalpos( s_goal.origin, 1, 0, 1 );
  71.         self waittill_any( "near_goal", "force_goal", "reached_end_node" );
  72.         wait 2;
  73.         s_goal = getstruct( "ee_mech_hole_goal_2", "targetname" );
  74.         self setvehgoalpos( s_goal.origin, 1, 0, 1 );
  75.         self waittill_any( "near_goal", "force_goal", "reached_end_node" );
  76.         playsoundatposition( "zmb_squest_maxis_folly", s_goal.origin );
  77.         maxissay( "vox_maxi_drone_upgraded_3", self );
  78.         flag_set( "ee_quadrotor_disabled" );
  79.         self dodamage( 200, self.origin );
  80.         self delete();
  81.         level.maxis_quadrotor = undefined;
  82.     }
  83. }
  84.  
  85. ee_mechz_spawn( n_spawn_pos )
  86. {
  87.     self maps/mp/zombies/_zm_ai_mechz_ffotd::spawn_start();
  88.     self endon( "death" );
  89.     level endon( "intermission" );
  90.     self mechz_attach_objects();
  91.     self mechz_set_starting_health();
  92.     self mechz_setup_fx();
  93.     self mechz_setup_snd();
  94.     self.closest_player_override = ::maps/mp/zombies/_zm_ai_mechz::get_favorite_enemy;
  95.     self.animname = "mechz_zombie";
  96.     self.has_legs = 1;
  97.     self.no_gib = 1;
  98.     self.ignore_all_poi = 1;
  99.     self.is_mechz = 1;
  100.     self.ignore_enemy_count = 1;
  101.     self.no_damage_points = 1;
  102.     self.melee_anim_func = ::melee_anim_func;
  103.     self.meleedamage = 75;
  104.     recalc_zombie_array();
  105.     self setphysparams( 20, 0, 80 );
  106.     self.zombie_init_done = 1;
  107.     self notify( "zombie_init_done" );
  108.     self.allowpain = 0;
  109.     self animmode( "normal" );
  110.     self orientmode( "face enemy" );
  111.     self maps/mp/zombies/_zm_spawner::zombie_setup_attack_properties();
  112.     self.completed_emerging_into_playable_area = 1;
  113.     self notify( "completed_emerging_into_playable_area" );
  114.     self.no_powerups = 0;
  115.     self setfreecameralockonallowed( 0 );
  116.     self thread maps/mp/zombies/_zm_spawner::zombie_eye_glow();
  117.     level thread maps/mp/zombies/_zm_spawner::zombie_death_event( self );
  118.     self thread maps/mp/zombies/_zm_spawner::enemy_death_detection();
  119.     a_spawner_structs = getstructarray( "mech_hole_spawner", "targetname" );
  120.     spawn_pos = a_spawner_structs[ n_spawn_pos ];
  121.     if ( !isDefined( spawn_pos.angles ) )
  122.     {
  123.         spawn_pos.angles = ( 0, 0, 0 );
  124.     }
  125.     self thread mechz_death();
  126.     self thread mechz_death_ee();
  127.     self forceteleport( spawn_pos.origin, spawn_pos.angles );
  128.     self set_zombie_run_cycle( "walk" );
  129.     if ( isDefined( level.mechz_find_flesh_override_func ) )
  130.     {
  131.         level thread [[ level.mechz_find_flesh_override_func ]]();
  132.     }
  133.     else
  134.     {
  135.         self thread mechz_find_flesh();
  136.     }
  137.     self thread mechz_jump_think( spawn_pos );
  138.     self ee_mechz_do_jump( spawn_pos );
  139.     self maps/mp/zombies/_zm_ai_mechz_ffotd::spawn_end();
  140. }
  141.  
  142. mechz_death_ee()
  143. {
  144.     self waittill( "death" );
  145.     level.ee_mech_zombies_killed++;
  146.     level.ee_mech_zombies_alive--;
  147.  
  148.     if ( level.ee_mech_zombies_killed == 4 )
  149.     {
  150.         v_max_ammo_origin = self.origin;
  151.         level thread maps/mp/zombies/_zm_powerups::specific_powerup_drop( "full_ammo", v_max_ammo_origin );
  152.     }
  153.     if ( level.ee_mech_zombies_killed == 8 )
  154.     {
  155.         v_nuke_origin = self.origin;
  156.         level thread maps/mp/zombies/_zm_powerups::specific_powerup_drop( "nuke", v_nuke_origin );
  157.         flag_set( "ee_mech_zombie_fight_completed" );
  158.     }
  159. }
  160.  
  161. ee_mechz_do_jump( s_spawn_pos )
  162. {
  163.     self endon( "death" );
  164.     self endon( "kill_jump" );
  165. /#
  166.     if ( getDvarInt( #"E7121222" ) > 0 )
  167.     {
  168.         println( "\nMZ: Doing Jump-Teleport\n" );
  169. #/
  170.     }
  171. /#
  172.     if ( getDvarInt( #"E7121222" ) > 1 )
  173.     {
  174.         println( "\nMZ: Jump setting not interruptable\n" );
  175. #/
  176.     }
  177.     self.not_interruptable = 1;
  178.     self setfreecameralockonallowed( 0 );
  179.     self animscripted( self.origin, self.angles, "zm_fly_out" );
  180.     self maps/mp/animscripts/zm_shared::donotetracks( "jump_anim" );
  181.     self ghost();
  182.     if ( isDefined( self.m_claw ) )
  183.     {
  184.         self.m_claw ghost();
  185.     }
  186.     old_fx = self.fx_field;
  187.     self thread maps/mp/zombies/_zm_spawner::zombie_eye_glow_stop();
  188.     self fx_cleanup();
  189.     self animscripted( self.origin, self.angles, "zm_fly_hover" );
  190.     wait level.mechz_jump_delay;
  191.     s_landing_point = getstruct( s_spawn_pos.target, "targetname" );
  192.     if ( !isDefined( s_landing_point.angles ) )
  193.     {
  194.         s_landing_point.angles = ( 0, 0, 0 );
  195.     }
  196.     self animscripted( s_landing_point.origin, s_landing_point.angles, "zm_fly_in" );
  197.     self show();
  198.     self.fx_field = old_fx;
  199.     self setclientfield( "mechz_fx", self.fx_field );
  200.     self thread maps/mp/zombies/_zm_spawner::zombie_eye_glow();
  201.     if ( isDefined( self.m_claw ) )
  202.     {
  203.         self.m_claw show();
  204.     }
  205.     self maps/mp/animscripts/zm_shared::donotetracks( "jump_anim" );
  206.     self.not_interruptable = 0;
  207.     self setfreecameralockonallowed( 1 );
  208. /#
  209.     if ( getDvarInt( #"E7121222" ) > 1 )
  210.     {
  211.         println( "\nMZ: Jump clearing not interruptable\n" );
  212. #/
  213.     }
  214.     mechz_jump_cleanup();
  215.     self.closest_jump_point = s_landing_point;
  216. }
  217.  
  218. sndee4music()
  219. {
  220.     shouldplay = sndwait();
  221.     if ( !shouldplay )
  222.     {
  223.         return;
  224.     }
  225.     level.music_override = 1;
  226.     level setclientfield( "mus_zmb_egg_snapshot_loop", 1 );
  227.     ent = spawn( "script_origin", ( 0, 0, 0 ) );
  228.     ent playloopsound( "mus_mechz_fight_loop" );
  229.     flag_wait( "ee_mech_zombie_fight_completed" );
  230.     level setclientfield( "mus_zmb_egg_snapshot_loop", 0 );
  231.     level.music_override = 0;
  232.     wait 0,05;
  233.     ent delete();
  234. }
  235.  
  236. sndwait()
  237. {
  238.     counter = 0;
  239.     while ( is_true( level.music_override ) )
  240.     {
  241.         wait 1;
  242.         counter++;
  243.         if ( counter >= 60 )
  244.         {
  245.             return 0;
  246.         }
  247.     }
  248.     return 1;
  249. }
Advertisement
Add Comment
Please, Sign In to add comment