Login Issues
Forgot password?Activate Issues
Account activation email not received? Wrong account activation email used?Other Problems?
Contact Support - Help Center Get help on the UGX Discord. Join it now!#include maps\_utility;
#include common_scripts\utility;
#include maps\_zombiemode_utility;
#include maps\_anim;
PreCache_soul_chest()
{
level._effect["blst_chest_soul"] = loadfx("blst_custom/blst_fx_chest_soul");
}
main()
{
reward_trigger = getentarray( "soul_chest_reward" , "targetname" );
for(i=0;i<reward_trigger.size;i++)
{
reward_trigger[i] disable_trigger();
}
soul_chest_area = getentarray( "soul_chest_area" , "targetname") ;
for(i=0;i<soul_chest_area.size;i++)
{
soul_chest_area[i] thread spawn_initial_model();
}
level.chest_amount = soul_chest_area.size;
level.chest_active = true;
level.chest_completed = 0;
level.chest_counting = 0;
}
spawn_initial_model()
{
self.death_count = 0;
}
chest_anims()
{
///////////////////////////////////////////////////// EDIT AMOUNT OF KILLS NEEDED HERE /////////////////////////////////////////////////////////////////////////////
players = getplayers();
if(players.size > 1)
{
chest_1_kills = 100;
}
else
{
chest_1_kills = 10;
}
chest_2_kills = 25;
chest_3_kills = 45;
chest_4_kills = 65;
chest_5_kills = 90;
chest_6_kills = 140;
///////////////////////////////////////////////////// EDIT AMOUNT OF KILLS NEEDED HERE /////////////////////////////////////////////////////////////////////////////
chest_clip = getentarray( "soul_chest_clip" , "targetname" );
self.max_count = undefined;
if( level.chest_completed == 0 )
{
if( level.chest_counting == 1 )
{
self.max_count = chest_1_kills;
}
else if( level.chest_counting == 2 )
{
self.max_count = chest_2_kills;
}
else if( level.chest_counting == 3 )
{
self.max_count = chest_3_kills;
}
else if( level.chest_counting == 4 )
{
self.max_count = chest_4_kills;
}
else if( level.chest_counting == 5 )
{
self.max_count = chest_5_kills;
}
else if( level.chest_counting == 6 )
{
self.max_count = chest_6_kills;
}
}
else if( level.chest_completed >= 1 )
{
if( level.chest_counting + level.chest_completed == 2 )
{
self.max_count = chest_2_kills;
}
if( level.chest_counting + level.chest_completed == 3 )
{
self.max_count = chest_3_kills;
}
if( level.chest_counting + level.chest_completed == 4 )
{
self.max_count = chest_4_kills;
}
if( level.chest_counting + level.chest_completed == 5 )
{
self.max_count = chest_5_kills;
}
if( level.chest_counting + level.chest_completed == 6 )
{
self.max_count = chest_6_kills;
}
}
wait 0.2;
self playsound( "chest_open");
wait 1;
self waittill( "chest_full" );
if( self.max_count == self.death_count || self.death_count >= 9000 )
{
level.chest_counting--;
self playsound( "chest_full") ;
wait 0.3;
self playsound( "chest_full") ;
wait 1;
self playsound( "chest_full2") ;
self playsound( "chest_close_lid" );
for(i=0;i<chest_clip.size;i++)
{
if( self IsTouching( chest_clip[i] ) == true )
{
chest_clip[i] delete();
}
}
wait 1;
self playsound( "chest_full2" );
wait 2.1;
self delete();
self delete();
}
else if( self.max_count < self.death_count )
{
iprintlnbold( "death count exceeded due to timeout" );
}
else if( self.max_count > self.death_count )
{
level.chest_counting--;
self.death_count = -10;
self playsound( "chest_close_lid" );
wait 0.7;
self thread spawn_initial_model();
}
}
chest_death_count( last_origin, area_radius )
{
self notify( "chest_kill" );
self_origin = self.origin;
self.death_count++;
if( self.death_count == -9 || self.death_count >= 9000)
{
self.death_count--;
}
else if( self.death_count == 1)
{
level.chest_counting++;
self notify( "chest_activated" );
self thread chest_anims();
thread chest_death_fx( last_origin, self_origin, area_radius );
self thread time_out();
}
else if( self.death_count >= 2 && self.death_count <= self.max_count-1 )
{
thread chest_death_fx( last_origin, self_origin, area_radius );
self thread time_out();
}
else if( self.death_count == self.max_count )
{
self.death_count = 9000;
thread chest_death_fx( last_origin, self_origin, area_radius );
level.chest_completed++;
thread progres_check();
self notify( "time_out" );
wait 2;
self notify( "chest_full" );
}
}
time_out()
{
self endon( "chest_kill" );
self endon( "chest_full" );
self endon( "disconnect" );
self.timer = 999; //////////////////////////////// EDIT TIME-OUT TIMER HERE ////////////////////////////////////////////////
while(1)
{
if( self.timer <= 999 && self.timer >= 6 ) //////////////////////////////// AND HERE //////////////////////////////////////////////////
{
self.timer-= 5;
wait 5;
}
else if( self.timer <= 5 )
{
self.timer-= 0.2;
wait 0.2;
if( self.timer <= 0 )
{
self notify( "time_out" );
wait 2;
self notify( "chest_full" );
}
}
}
}
chest_death_fx( last_origin, self_origin, area_radius )
{
soul = Spawn( "script_model", last_origin+( 0,0,50) );
soul setmodel( "tag_origin" );
dist = DistanceSquared( last_origin, self_origin );
radius = area_radius * area_radius;
time = undefined;
if( dist >= radius* 0.66 )
{
time = 1.3;
}
else if( dist <= radius* 0.65 && dist >= radius* 0.33 )
{
time = 1;
}
else if( dist <= radius* 0.32 )
{
time = 0.5;
}
PlayFxOnTag( level._effect["blst_chest_soul"], soul, "tag_origin" );
soul moveto( self_origin+( 0,0,30) , time, 0.5, 0);
wait time;
soul movez( 200, 0.4);
soul playsound( "soul_fly" );
wait 0.4;
soul delete();
}
progres_check()
{
if( level.chest_completed == level.chest_amount )
{
thread soul_chest_reward(); //////// THIS IS WHERE THE REWARD IS GIVEN WHEN ALL CHESTS ARE COMPLETED
level thread maps\_zombiemode_powerups::special_powerup_drop( self.origin );
level.chest_active = false; //// leave this line in here, it deactivates the thread in _zombiemode_spawner
}
}
soul_chest_reward()
{
self endon( "took_gun" );
self endon( "disconnect" );
reward_trigger = getentarray( "soul_chest_reward" , "targetname" );
players = get_players();
for(i=0;i<players.size;i++)
{
players[i].free_ray_gun = false;
reward_trigger[i] enable_trigger();
reward_trigger[i] thread reward_trigger( );
}
}
zb_thompson_rotate( zb_thompson )
{
self endon( "took_gun" );
self endon( "disconnect" );
while(1)
{
zb_thompson rotateyaw( 360 ,1.5 );
wait 1.5;
}
}
reward_trigger( )
{
player = undefined;
zb_thompson = Spawn( "script_model", self.origin );
zb_thompson.angles = (-30,0,-30);
zb_thompson setmodel( "weapon_zombie_thompson_smg" );
self thread zb_thompson_rotate( zb_thompson );
playfxontag (level._effect["powerup_on"], zb_thompson, "tag_origin");
self setCursorHint("HINT_NOICON");
self UseTriggerRequireLookAt();
self setHintString( "Press and hold &&1 to collect your reward" );
while(1)
{
self waittill( "trigger", player );
player.has_gun = false;
player.has_gun_upgr = false;
if( player.free_ray_gun == false)
{
player.free_ray_gun = true;
old_gun = player getcurrentweapon();
weaplist = player GetWeaponsListPrimaries();
for(i=0;i<weaplist.size;i++)
{
if( weaplist[i] == "zombie_thompson" )
{
player.has_gun = true;
}
else if ( weaplist[i] == "zombie_thompson_upgraded" )
{
player.has_gun_upgr = true;
}
}
if( player.has_gun == true )
{
player switchtoweapon( "zombie_thompson" );
player givemaxammo( "zombie_thompson" );
player playsound( "ammo_pickup" );
self notify( "took_gun" );
zb_thompson delete();
self delete();
break;
}
else if( player.has_gun_upgr == true )
{
player switchtoweapon( "zombie_thompson_upgraded" );
player givemaxammo( "zombie_thompson_upgraded" );
player playsound( "ammo_pickup" );
self notify( "took_gun" );
zb_thompson delete();
self delete();
break;
}
else if( weaplist.size <= 1 )
{
player giveweapon( "zombie_thompson" );
player switchtoweapon( "zombie_thompson" );
player playsound( "weap_pickup_plr" );
self notify( "took_gun" );
zb_thompson delete();
self delete();
break;
}
else if( weaplist.size >= 2 )
{
player takeweapon( old_gun );
player giveweapon( "zombie_thompson" );
player switchtoweapon( "zombie_thompson" );
player playsound( "weap_pickup_plr" );
self notify( "took_gun" );
zb_thompson delete();
self delete();
break;
}
}
else if( player.free_ray_gun == true )
{
iprintlnbold( "This one is not for you.." );
}
wait 0.1;
}
}
chest_anims()
{
players = getplayers();
if(players.size > 1)
{
chest_1_kills = 100;
}
else
{
chest_1_kills = 10;
}
chest_2_kills = 25; //this chest isnt used
chest_3_kills = 45; //this chest isnt used
chest_4_kills = 65; //this chest isnt used
chest_5_kills = 90; //this chest isnt used
chest_6_kills = 140; //this chest isnt used
else if(players.size <= 1)