#include common_scripts\utility; #include maps\mp\_utility; #include maps\mp\zombies\_zm_utility; #include maps\mp\zombies\_zm_sidequests; #include maps\mp\zm_tomb_ee_main; #include maps\mp\zombies\_zm_powerup_zombie_blood; #include maps\mp\zombies\_zm_unitrigger; #include maps\mp\zm_tomb_craftables; #include maps\mp\zm_tomb_ee_main_step_2; create_robot_head_trigger( unitrigger_stub ) { playfx( level._effect["teleport_1p"], unitrigger_stub.origin ); playsoundatposition( "zmb_footprintbox_disappear", unitrigger_stub.origin ); wait 3; unitrigger_stub.radius = 50; unitrigger_stub.height = 256; unitrigger_stub.script_unitrigger_type = "unitrigger_radius_use"; unitrigger_stub.cursor_hint = "HINT_NOICON"; unitrigger_stub.require_look_at = 1; m_coll = spawn( "script_model", unitrigger_stub.origin ); m_coll setmodel( "drone_collision" ); unitrigger_stub.m_coll = m_coll; wait_network_frame(); m_plinth = spawn( "script_model", unitrigger_stub.origin ); m_plinth.angles = unitrigger_stub.angles; m_plinth setmodel( "p6_zm_tm_staff_holder" ); unitrigger_stub.m_plinth = m_plinth; wait_network_frame(); m_sign = spawn( "script_model", unitrigger_stub.origin ); m_sign setmodel( "p6_zm_tm_runes" ); m_sign linkto( unitrigger_stub.m_plinth, "tag_origin", ( 0, 15, 40 ) ); m_sign hidepart( "j_fire" ); m_sign hidepart( "j_ice" ); m_sign hidepart( "j_lightning" ); m_sign hidepart( "j_wind" ); switch ( unitrigger_stub.script_noteworthy ) { case "fire": m_sign showpart( "j_fire" ); break; case "water": m_sign showpart( "j_ice" ); break; case "lightning": m_sign showpart( "j_lightning" ); break; case "air": m_sign showpart( "j_wind" ); break; } m_sign maps\mp\zombies\_zm_powerup_zombie_blood::make_zombie_blood_entity(); unitrigger_stub.m_sign = m_sign; unitrigger_stub.origin += vectorscale( ( 0, 0, 1 ), 30.0 ); maps\mp\zombies\_zm_unitrigger::register_static_unitrigger( unitrigger_stub, ::robot_head_trigger_think ); } robot_head_trigger_think() { self endon( "kill_trigger" ); str_weap_staffs = array("staff_air_upgraded_zm", "staff_lightning_upgraded_zm", "staff_fire_upgraded_zm", "staff_water_upgraded_zm"); while ( true ) { self waittill( "trigger", player ); if (is_true(self.stub.staff_placed)) { continue; } for (i = 0; i < str_weap_staffs.size; i++) { if ( player hasweapon( str_weap_staffs[i] ) ) { self.stub.staff_placed = 1; e_upgraded_staff = maps\mp\zm_tomb_craftables::get_staff_info_from_weapon_name( str_weap_staffs[i] ); for (j = 0; j < level.a_elemental_staffs_upgraded.size; j++) { if (level.a_elemental_staffs_upgraded[j].weapname == str_weap_staffs[i]) { level.a_elemental_staffs_upgraded[j].ee_in_use = 1; } } player takeweapon( str_weap_staffs[i] ); maps\mp\zm_tomb_craftables::clear_player_staff( str_weap_staffs[i] ); level.n_ee_robot_staffs_planted++; if ( level.n_ee_robot_staffs_planted == 4 ) { flag_set( "ee_all_staffs_placed" ); } e_upgraded_staff thread place_staff( self.stub.m_plinth ); } } } } remove_plinth() { playfx( level._effect["teleport_1p"], self.m_plinth.origin ); playsoundatposition( "zmb_footprintbox_disappear", self.m_plinth.origin ); wait 3; if ( isdefined( self.m_plinth.m_staff ) ) { self.m_plinth.m_staff unlink(); self.m_plinth.m_staff.origin = self.m_plinth.v_old_origin; self.m_plinth.m_staff.angles = self.m_plinth.v_old_angles; for (i = 0; i < level.a_elemental_staffs_upgraded.size; i++) { if (level.a_elemental_staffs_upgraded[i].weapname == self.m_plinth.e_staff.upgrade.weapname) { level.a_elemental_staffs_upgraded[i].ee_in_use = undefined; } } } self.m_sign delete(); self.m_plinth delete(); self.m_coll delete(); unregister_unitrigger( self ); }