#include maps\mp\zm_highrise_sq_ssp; #include common_scripts\utility; #include maps\mp\_utility; #include maps\mp\zombies\_zm_utility; #include maps\mp\zombies\_zm_sidequests; #include maps\mp\zombies\_zm_spawner; #include maps\mp\zm_highrise_sq; ssp1_watch_ball(str_complete_flag) { self watch_model_sliquification(10, str_complete_flag); self thread ssp1_rotate_ball(); self playloopsound("zmb_sq_ball_rotate_loop", 0.25); } watch_model_sliquification(n_end_limit, str_complete_flag) { n_count = 0; self setcandamage(1); while (!flag(str_complete_flag)) { self waittill("damage", amount, attacker, direction, point, mod, tagname, modelname, partname, weaponname); if (issubstr(weaponname, "slipgun") && !flag("sq_ball_picked_up")) { n_count++; if (n_count >= n_end_limit) { self notify("sq_sliquified"); if (isdefined(self.t_pickup)) self.t_pickup delete(); flag_set(str_complete_flag); } else if (n_count == 1) level notify("ssp1_ball_first_sliquified"); else if (n_count == 5) level notify("ssp1_ball_sliquified_2"); } } } init_2() { flag_init("ssp2_maxis_keep_going_said"); flag_init("ssp2_maxis_reincarnate_said"); flag_init("ssp2_corpses_in_place"); flag_init("ssp2_resurrection_done"); flag_init("ssp2_statue_complete"); maps\mp\zombies\_zm_spawner::add_custom_zombie_spawn_logic(::ssp_2_zombie_death_check); declare_sidequest_stage("sq_2", "ssp_2", ::init_stage_2, ::stage_logic_2, ::exit_stage_2); } stage_logic_2() { level thread ssp2_advance_dragon(); corpse_room_watcher(); stage_completed("sq_2", "ssp_2"); } ssp_2_zombie_death_check() { self waittill("death"); if (!isdefined(self)) return; t_corpse_room = getent("corpse_room_trigger", "targetname"); if (self istouching(t_corpse_room)) level notify("ssp2_corpse_made", 1); } corpse_room_watcher() { t_corpse_room = getent("corpse_room_trigger", "targetname"); n_count = 0; while (!flag("ssp2_resurrection_done")) { level waittill("ssp2_corpse_made", is_in_room); if (is_in_room) n_count++; else n_count = 0; if (n_count == 1 && !flag("ssp2_maxis_keep_going_said")) { flag_set("ssp2_maxis_keep_going_said"); level thread maps\mp\zm_highrise_sq::maxissay("vox_maxi_sidequest_reincar_zombie_0"); } else if (n_count >= 15) { flag_set("ssp2_corpses_in_place"); vo_maxis_ssp_complete(); flag_set("ssp2_resurrection_done"); } } }