Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*============================================= SOULBOX =============================================*/
- function soulbox__init__() {
- s_soul = struct::get("soul_goto_struct", "targetname");
- s_soul thread soulbox__main__();
- level waittill( "soulbox_finished" );
- wait(2);
- level thread soulbox_powerup_reward();
- }
- function soulbox__main__() {
- self.souls_required = 5;
- self.soulbox_radius = 350;
- self.souls_collected = 0;
- self thread soulbox_zombie_monitor_think();
- }
- function soulbox_zombie_monitor_think() { // self == soulbox struct
- level endon("soulbox_finished");
- while(true) {
- ai = GetAISpeciesArray("axis", "all");
- for(i = 0; i < ai.size; i++) {
- if(!IsDefined(ai[i].death_monitor)) {
- ai[i] thread zombie_wait_for_death(self);
- }
- }
- wait(1);
- }
- }
- function zombie_wait_for_death(soulbox) { // self == zombie & soulbox == soulbox struct
- level endon("soulbox_finished");
- self.death_monitor = true;
- self waittill("death");
- soul_start = self.origin + (0, 0, 60);
- dist = Distance(soulbox.origin, self.origin);
- if(dist <= soulbox.soulbox_radius) {
- if(soulbox.souls_collected < soulbox.souls_required) {
- soulbox.souls_collected++;
- soulbox thread send_soul(soul_start);
- }
- }
- }
- function send_soul(soul_start) { // soul_start == ai origin & self == soulbox struct
- soul_end = self.origin;
- temp_ent = util::spawn_model("tag_origin", soul_start);
- PlayFXOnTag( level._effect["ritual_pap_energy_trail"], temp_ent, "tag_origin" );
- temp_ent PlaySound( "evt_nuked" );
- soul_move_time = Distance( soul_start, soul_end ) / 200;
- temp_ent MoveTo( soul_end + ( 0,0,20 ), soul_move_time );
- wait( soul_move_time - .05 );
- temp_ent MoveTo( soul_end, .5 );
- temp_ent waittill( "movedone" );
- temp_ent Delete();
- PlaySoundAtPosition( "evt_soul_release", self.origin );
- wait(.05);
- if(self.souls_collected >= self.souls_required) {
- level notify( "soulbox_finished" );
- }
- }
- function soulbox_powerup_reward() {
- s_powerup_drop = struct::get("powerup_drop", "targetname");
- if(isdefined(s_powerup_drop)) {
- zm_powerups::special_powerup_drop(s_powerup_drop.origin);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement