Release Spys Vs Mercs v2

Dr.GiggleZ

Modder
Messages
33
Points
368
Hey guys heres my game mode lol i think its finished and well here is the source for all consoles (I made it on 360) :smile: for bo2 search and destroy basically just a modified version of search and destroy but spys have different ablities and knifes only where mercs have like 6 guns with other abilities...


Code:
#include maps\mp\_utility;
#include common_scripts\utility;
#include maps\mp\gametypes\_hud_util;
#include maps\mp\gametypes\_hud_message;

//
//  _____        _____ _             _      ______
// |  __ \      / ____(_)           | |    |___  /
// | |  | |_ __| |  __ _  __ _  __ _| | ___   / /
// | |  | | '__| | |_ | |/ _` |/ _` | |/ _ \ / / 
// | |__| | | _| |__| | | (_| | (_| | |  __// /__
// |_____/|_|(_)\_____|_|\__, |\__, |_|\___/_____|
//                         __/ | __/ |            
//                        |___/ |___/            
// Created by Dr.GiggleZ
//Credit to jelly injector(for fake death from wii), IMSCx for the gsc injector, and anyone elseIforgot
//couldnt get the round dvars to work lol

init()
{
    level thread onPlayerConnect();
    level.disableweapondrop = 1;
    level.matchHasntStarted = 1;
    setDVAR("scr_koth_roundlimit", "2");
    setDVAR("scr_koth_roundswitch", "1");
    setDVAR("scr_gtnw_roundlimit", "2");
    setDVAR("scr_gtnw_roundswitch", "1");
    setDVAR("scr_dd_roundlimit", "4");
    setDVAR("scr_dd_roundswitch", "2");
    setDVAR("scr_sab_roundswitch", "1");
    setDVAR("scr_sab_roundlimit", "2");
    setDVAR("scr_sd_roundlimit", "8");
    setDVAR("scr_sab_roundswitch", "4");
    wait level.prematchPeriod;
    level.matchHasntStarted = 0;
}

onPlayerConnect()
{
    for(;;)
    {
        level waittill("connected", player);
        player thread onPlayerSpawned();
        player thread Variables();
        player thread UnlockVariables();
        player thread doIntro();
        if(player isHost())
            player thread waitToOpenMenu();
    }
}
doIntro()
{
    self waittill( "spawned_player" );
    while(level.matchHasntStarted)
    wait 4;
    self CreditText( "Spys vs Mercs v2", "Developed By", "Dr.GiggleZ" );//Please don't change this...
    //wait 10;
    //self CreditText( "Spys vs Mercs v2", "Hosted By", "Name here" );

}

CreditText( Line1, Line2, Line3 )
{

    self.Credit[0] = self createFontString( "objective", 2.5 );
    self.Credit[0] createTextDisplay( "center", "center", -600, 0, 1, 10 );
    self.Credit[0].color = ( 0, 0, 0 );
    self.Credit[0] setText( Line1 );
    self thread DeathDelete(self.Credit[0]);

    self.Credit[1] = self createFontString( "objective", 2.5 );
    self.Credit[1] createTextDisplay( "center", "center", -600, 25, 1, 10 );
    self.Credit[1].color = ( 0, 0, 0 );
    self.Credit[1] setText( Line2 );
    self thread DeathDelete(self.Credit[1]);

    self.Credit[2] = self createFontString( "objective", 2.5 );
    self.Credit[2] createTextDisplay( "center", "center", -600, 50, 1, 10 );
    self.Credit[2].color = ( 0, 0, 0 );
    self.Credit[2] setText( Line3 );
    self thread DeathDelete(self.Credit[2]);
    for(;;)
    {
        self.Credit[0] Move( 1, 0, 75 );
        self.Credit[0] ChangeColor( 2, (randomFloat(1),randomFloat(1),randomFloat(1)) );
        wait 3.2;
        self.Credit[1] Move( 1, 0, 100 );
        self.Credit[1] ChangeColor( 2, (randomFloat(1),randomFloat(1),randomFloat(1)) );
        self.Credit[0] FadeThis( 1.5, 0 );
        wait 3.5;
        self.Credit[2] Move( 1, 0, 125 );
        self.Credit[2] ChangeColor( 2, (randomFloat(1),randomFloat(1),randomFloat(1)) );
        self.Credit[1] FadeThis( 1.5, 0 );
        wait 3.5;
        self.Credit[2] FadeThis( 1.5, 0 );
        wait 1.6;
        self.Credit[0] destroy();
        self.Credit[1] destroy();
        self.Credit[2] destroy();
    }
}

Move( timeOnMove, x, y )
{
    self moveOverTime( timeOnMove );
    self.x = x;
    self.y = y;
}

ChangeColor(time, color)
{
    self FadeOverTime(time);
    self.color = color;
}

createTextDisplay( alignX, alignY, xOffset, yOffset, alpha, sort )
{
    self.x = xOffset;
    self.y = yOffset;
    self.alignX = alignX;
    self.alignY = alignY;
    self.horzAlign = alignX;
    self.vertAlign = alignY;
    self.alpha = alpha;
    self.sort = sort;
}

FadeThis( time, alpha )
{
    self fadeOverTime( time );
    self.alpha = alpha;
}

onPlayerSpawned()
{
    self endon("disconnect");
    for(;;)
    {
        if(self isHost())
        {
            setDVAR("allowAllNAT", "1");
        }
        self waittill("spawned_player");
        if(firstSpawn == true)
        {
            initOverFlowFix();
            firstSpawn = false;
        }
        if (self.pers["team"] == game["attackers"])
        {
            self.clokestatus="Ready";
            self.clonestatus="Ready";
            self.telestatus="Ready";
            self.speedstatus="Un-Used";
            self thread Faker();
            self iprintln("^1Welcome");
            self iprintln("^5You are a Spy, ^7"+self.name+"!");
            self show();
            self iprintln("^5Press [{+activate}] to fake death");
            self iprintlnbold("^5Press [{+activate}] to fake death");
            self thread Refillplease();
            self SpyPerks();
            self thread onPlayerMultijump();
            self thread ActivateClone();
            self thread ActivateSpeed();
            self.tele = false;
            self.health = 200;
            self.clone = false;
            self.speed = false;
            self thread MonitorSpeed();
            self thread MonitorFaker();
            self thread MonitorClone();
            wait 4;
            self takeallWeapons();
            self thread SpysWeaps();
            self setPerk("specialty_scavenger");
            level.disableweapondrop = 1;
            self.disableweapondrop = 1;
            self thread DarkVision();
            self useServerVisionSet(true);
            self SetVisionSetforPlayer("mpintro", 0);
            wait 1.5;
            self iprintln("Press [{+actionslot 1}] to activate 2 Clones");
            self [[game["set_player_model"][self.team]["rifle"]]]();
            self iprintlnbold("^1Welcome");
            self iprintlnbold("^5You are a Spy, ^7"+self.name+"!");
            setDvar("g_TeamColor_Allies","0 1 1 1");
            setDvar("g_TeamColor_Axis","1 0 0 0");
            setDvar("g_TeamColor_EnemyTeam","1 0 0 0");
            setDvar("g_TeamColor_EnemyTeamAlt","1 0 0 0");
            setDvar("g_TeamColor_Free","0 1 1 1");
            setDvar("g_TeamColor_MyTeam","0 1 1 1");
            setDvar("g_TeamColor_MyTeamAlt","0 1 1 1");
            setDvar("g_TeamColor_MyTeamAlt_Party","0 1 1 1");
            setDvar("g_TeamColor_Party","0 1 1 1");
            setDvar("g_TeamColor_Spectator","0 0 0 0");
            wait 9;
            self thread onetimetele();
            self thread MonitorTele();
            self iprintln("Press [{+actionslot 4}] for a one time Teleport use");
            self thread CheckSpyWeapons();
            wait 2;
            self iprintln("^2if you have any ideas what will make this funner and more challenging just say it");
            wait 10;
            self iprintln("^1This Game is a work in progress Spys vs Mercs");
            }
            else
            {
            self.clonestatus="Ready";
            self.ammostatus="Ready";
            self.telestatus="Ready";
            self.Infraredstatus="Ready";
            self thread MonitorInfrared();
            self MercPerks();
            self takeallWeapons();
            self thread MercWeaps();
            self thread DarkVision();
            self thread ToggleVision();
            self useServerVisionSet(true);
            self SetVisionSetforPlayer("mpintro", 0);
            self show();
            self thread MonitorAmmo();
            self thread Toggleammo();
            self thread onPlayerMultijump();
            self thread MonitorClone();
            self thread ActivateClone();
            self.power = false;
            self.clone = false;
            self.tele = false;
            level.disableweapondrop = 1;
            wait 2;
            self iprintln("Press [{+actionslot 1}] to activate infrared bodies");
            self iprintlnbold("^5Welcome");
            self iprintlnbold("^1You are a Merc,^7 "+self.name+"!");
            wait 4;
            self iprintln("Press [{+actionslot 1}] to activate infrared bodies");
            wait 1.5;
            self iprintln("Press [{+actionslot 3}] to activate 2 Clones");
            self setPerk("specialty_scavenger");
            self.disableweapondrop = 1;
            self thread RandomGun();
            self [[game["set_player_model"][self.team]["spread"]]]();
            setDvar("g_TeamColor_Allies","0 1 1 1");
            setDvar("g_TeamColor_Axis","1 0 0 0");
            setDvar("g_TeamColor_EnemyTeam","0 1 1 1");
            setDvar("g_TeamColor_EnemyTeamAlt","0 1 1 1");
            setDvar("g_TeamColor_Free","1 0 0 0");
            setDvar("g_TeamColor_MyTeam","1 0 0 0");
            setDvar("g_TeamColor_MyTeamAlt","1 0 0 0");
            setDvar("g_TeamColor_MyTeamAlt_Party","1 0 0 0");
            setDvar("g_TeamColor_Party","1 0 0 0");
            setDvar("g_TeamColor_Spectator","0 0 0 0");
            wait 2;
            self iprintln("Press [{+actionslot 2}] to activate infinite ammo for 10 secs");
            wait 2;
            self iprintln("Press [{+actionslot 2}] you can only use infinite ammo once per round");
            wait 10;
            self thread onetimetele();
            self thread MonitorTele();
            self iprintln("Press [{+actionslot 4}] for a one time Teleport use");
            self thread CheckMercWeapons();
            wait 2;
            self iprintln("Spys have 2x health");
            self iprintln("if you have any ideas what will make this funner and more challenging just say it");
            wait 10;
            self iprintln("^1This Game is a work in progress Spys vs Mercs");
            }
        }
}

Variables()
{
    if (self.pers["team"] == game["attackers"])
    {
        self thread createHealthSpy();
        spytxt = createText( "objective", 1.7, "Center", "Center", 200, -175, "^5Spy: ^6Abilities");
    }
    else
    {
        self thread createHealthMercs();
        merctxt = createText( "objective", 1.7, "Center", "Center", 200, -150, "^1Merc: ^6Abilities");
    }
}

UnlockVariables()
{
        self thread unlockAllCheevos();
}

createHealthMercs()
{
    self.healthBar = self createBar( ( 1, 0, 0 ), 150, 13 );
    self.healthBar setPoint( "CENTER", "BOTTOM", 80, -4 );
    self.healthText = self createFontString( "objective", 1.5 );
    self.healthText setPoint( "CENTER", "BOTTOM", 85, -20 );
    self.healthText setText( "^7Merc Health^5: ^1100" );
    for(;;)
    {
        self.healthBar updateBar( self.health / self.maxhealth );
        wait 0.001;
    }
}

createHealthSpy()
{
    self.healthBar = self createBar( ( 0, 1, 1 ), 150, 13 );
    self.healthBar setPoint( "CENTER", "BOTTOM", 50, -4 );
    self.healthText = self createFontString( "objective", 1.5 );
    self.healthText setPoint( "CENTER", "BOTTOM", 120, -20 );
    self.healthText setText( "^7Spy Health^1: ^5200" );
    for(;;)
    {
        self.healthBar updateBar( self.health / self.maxhealth );
        wait 0.001;
    }
}

RandomGun()
{
    Camo=RandomIntRange(1,45);
    StoreWeapon=self getCurrentWeapon();
    self takeWeapon(StoreWeapon);
    self giveWeapon(StoreWeapon,0,true(Camo,0,0,0,0));
    self setSpawnWeapon(StoreWeapon);
}

ToggleVision()
{
    self endon("disconnect");
    self endon("death");
    for(;;)
    {
        if(self actionSlotOneButtonPressed())
        self thread InfraredVision();
        wait 0.01;
    }
}

InfraredVision()
{
    if(self.infraredvision == true)
    {
        self notify("destroyReady");
        self notify("destroyinfared");
        self useServerVisionSet(false);
        wait 0.01;
        self useServerVisionSet(true);
        self setinfraredvision(true);
        self Setvisionsetforplayer(level.remote_mortar_infrared_vision, true);
        self iPrintlnBold("^7Infrared Vision: ^2Enabled");
        self playsound( "uin_rts_objective_updated" );
        self.infraredvision = false;
        self.Infraredstatus="Active";
        status2 = createText( "objective", 1.7, "Center", "Center", 200, -125, "^1Infrared[{+actionslot 1}]: ^2"+self.Infraredstatus );
        wait 1;
        self iprintln("^7Infrared For: ^230");
        wait 1;
        self iprintln("^7Infrared For: ^229");
        wait 1;
        self iprintln("^7Infrared For: ^228");
        wait 1;
        self iprintln("^7Infrared For: ^227");
        wait 1;
        self iprintln("^7Infrared For: ^226");
        wait 1;
        self iprintln("^7Infrared For: ^225");
        wait 1;
        self iprintln("^7Infrared For: ^224");
        wait 1;
        self iprintln("^7Infrared For: ^223");
        wait 1;
        self iprintln("^7Infrared For: ^222");
        wait 1;
        self iprintln("^7Infrared For: ^221");
        wait 1;
        self iprintln("^7Infrared For: ^220");
        wait 1;
        self iprintln("^7Infrared For: ^219");
        wait 1;
        self iprintln("^7Infrared For: ^218");
        wait 1;
        self iprintln("^7Infrared For: ^217");
        wait 1;
        self iprintln("^7Infrared For: ^216");
        wait 1;
        self iprintln("^7Infrared For: ^115");
        wait 1;
        self iprintln("^7Infrared For: ^114");
        wait 1;
        self iprintln("^7Infrared For: ^113");
        wait 1;
        self iprintln("^7Infrared For: ^112");
        wait 1;
        self iprintln("^7Infrared For: ^111");
        wait 1;
        self iprintln("^7Infrared For: ^110");
        wait 1;
        self iprintln("^7Infrared For: ^19");
        wait 1;
        self iprintln("^7Infrared For: ^18");
        wait 1;
        self iprintln("^7Infrared For: ^17");
        wait 1;
        self iprintln("^7Infrared For: ^16");
        wait 1;
        self iprintln("^7Infrared For: ^15");
        wait 1;
        self iprintln("^7Infrared For: ^14");
        wait 1;
        self iprintln("^7Infrared For: ^13");
        wait 1;
        self iprintln("^7Infrared For: ^12");
        wait 1;
        self iprintln("^7Infrared For: ^11");
        wait 1;
        self useServerVisionSet(false);
        self setinfraredvision(false);
        self iPrintlnBold("^7Infrared Vision: ^1Disabled");
        wait 0.01;
        self useServerVisionSet(true);
        self SetVisionSetforPlayer("remote_mortar_enhanced", 0);
        status2 destroy();
        self.Infraredstatus="Charging";
        status2 = createText( "objective", 1.7, "Center", "Center", 200, -125, "^1Infrared[{+actionslot 1}]: ^1"+self.Infraredstatus );
        self iprintln("^7Charging: ^110");
        self thread DarkVision();
        wait 1;
        self iprintln("^7Charging: ^19");
        wait 1;
        self iprintln("^7Charging: ^18");
        wait 1;
        self iprintln("^7Charging: ^17");
        wait 1;
        self iprintln("^7Charging: ^16");
        wait 1;
        self iprintln("^7Charging: ^25");
        wait 1;
        self iprintln("^7Charging: ^24");
        wait 1;
        self iprintln("^7Charging: ^23");
        wait 1;
        self iprintln("^7Charging: ^22");
        wait 1;
        self iprintln("^7Charging: ^21");
        self.infraredvision = true;
        self iprintln("^7Infrared ^5Ready [{+actionslot 1}]");
        status2 destroy();
        self thread InfraredReady();
        }
        else
        {
            self iprintln("^1Infrared Recharging Wait");
        }
}

InfraredReady()
{
    self.Infraredstatus="Ready";
    status2 = createText( "objective", 1.7, "Center", "Center", 200, -125, "^1Infrared[{+actionslot 1}]: ^2"+self.Infraredstatus );

    self waittill("destroyReady");
    status2 destroy();
}

MonitorInfrared()
{
    status2 = createText( "objective", 1.7, "Center", "Center", 200, -125, "^1Infrared[{+actionslot 1}]: ^2"+self.Infraredstatus );
    self waittill("destroyinfared");
    status2 destroy();
}

Faker()
{
    self endon("disconnect");
    self endon("death");
    for(;;)
    {
        while(!self usebuttonpressed())
        wait 0.05;
        self notify("destroyfaker");
        self notify("destroyReady");
        clone = self ClonePlayer(3);
        clone StartRagdoll();
        self hide();
        self playsound( "chr_death" );
        self.clokestatus="Active";
        spystatus1 = createText( "objective", 1.7, "Center", "Center", 200, -150, "^5Faker[{+activate}]: ^2"+self.clokestatus );
        self iPrintlnBold("^2Invisible for 10 secs!");
        wait 1;
        self iprintln("Invisible ^29");
        wait 1;
        self iprintln("Invisible ^28");
        wait 1;
        self iprintln("Invisible ^27");
        wait 1;
        self iprintln("Invisible ^26");
        wait 1;
        self iprintln("Invisible ^15");
        wait 1;
        self iprintln("Invisible ^14");
        wait 1;
        self iprintln("Invisible ^13");
        wait 1;
        self iPrintln("Invisible ^12");
        wait 1;
        self iPrintln("Invisible ^11");
        self iPrintln("^1You're Visible!");
        self show();
        wait 1;
        spystatus1 destroy();
        self.clokestatus="Charging:(10secs)";
        spystatus1 = createText( "objective", 1.7, "Center", "Center", 200, -150, "^5Faker[{+activate}]: ^1"+self.clokestatus );
        self iPrintlnBold("Charging...^1 (10secs)");
        wait 1;
        self iprintln("Charging... ^19");
        wait 1;
        self iPrintln("Charging... ^18");
        wait 1;
        self iPrintln("Charging... ^17");
        wait 1;
        self iPrintln("Charging... ^16");
        wait 1;
        self iPrintln("Charging... ^25");
        wait 1;
        self iPrintln("Charging... ^24");
        wait 1;
        self iPrintln("Charging... ^23");
        wait 1;
        self iPrintln("Charging... ^22");
        wait 1;
        self iPrintln("Charging... ^21");
        spystatus1 destroy();
        self thread FakerReady();
        self iPrintlnBold("Press [{+activate}] to fake your death!");
    }
}

FakerReady()
{
    self.clokestatus="^2Ready";
    spystatus1 = createText( "objective", 1.7, "Center", "Center", 200, -150, "^5Faker[{+activate}]: ^2"+self.clokestatus );

    self waittill("destroyReady");
    spystatus1 destroy();
}

MonitorFaker()
{
    spystatus1 = createText( "objective", 1.7, "Center", "Center", 200, -150, "^5Faker[{+activate}]: ^2"+self.clokestatus );
    self waittill("destroyfaker");
    spystatus1 destroy();
}

Toggleammo()
{
    self endon("disconnect");
    self endon("death");
    for(;;)
    {
        if(self actionSlotTwoButtonPressed() && self.power == false)
        {
            self thread Ammopower();
            self.power = true;
        }
        else if(self actionSlotTwoButtonPressed() && self.power == true)
        {
            self iprintln("^1Already used stop once this round");
        }
        wait 0.01;
    }
}

Ammopower()
{
    self thread Unlimitedammo();
    self thread UnlimitedNades();
     self notify("destroyammo");
    mercstatus5 destroy();
    self.ammostatus="Active";
    mercstatus5 = createText( "objective", 1.7, "Center", "Center", 200, -65, "^0Ammo[{+actionslot 2}]: ^2"+self.ammostatus );
    self iprintln("^7Unlimited Ammo For: ^210");
    wait 1;
    self iprintln("^7Unlimited Ammo For: ^29");
    wait 1;
    self iprintln("^7Unlimited Ammo For: ^28");
    wait 1;
    self iprintln("^7Unlimited Ammo For: ^27");
    wait 1;
     self iprintln("^7Unlimited Ammo For: ^26");
     wait 1;
     self iprintln("^7Unlimited Ammo For: ^15");
     wait 1;
     self iprintln("^7Unlimited Ammo For: ^14");
     wait 1;
     self iprintln("^7Unlimited Ammo For: ^13");
     wait 1;
     self iprintln("^7Unlimited Ammo For: ^12");
     wait 1;
     self iprintln("^7Unlimited Ammo For: ^11");
     wait 1;
     self iprintlnbold("Unlimited Ammo ^1Off");
     self notify("endpower");
    mercstatus5 destroy();
    self.ammostatus="Used";
    mercstatus5 = createText( "objective", 1.7, "Center", "Center", 200, -65, "^0Ammo[{+actionslot 2}]: ^1"+self.ammostatus );
}

MonitorAmmo()
{
    mercstatus5 = createText( "objective", 1.7, "Center", "Center", 200, -65, "^0Ammo[{+actionslot 2}]: ^1"+self.ammostatus );
    self waittill("destroyammo");
    mercstatus5 destroy();
}

UnlimitedNades()
{
    self endon("disconnect");
    self endon("death");
    self endon("endpower");
    for(;;)
    {
        currentoffhand=self getcurrentoffhand();
        if(currentoffhand!="none")
        self givemaxammo(currentoffhand);
        wait 0.1;
    }
}

Refillplease()
{
    self endon("disconnect");
    self endon("death");
    for(;;)
    {
        wait 3.5;
        self thread RefillNades();
    }
}

RefillNades()
{
    self endon("disconnect");
    self endon("death");
    self endon("Refilled");
    for(;;)
    {
        self givemaxammo("willy_pete_mp");
        wait 2.5;
        self givemaxammo("hatchet_mp");
        self givemaxammo("willy_pete_mp");
        wait 0.1;
        self notify("Refilled");
        self iprintln("Nades Refilled");//For testing prpse
        }
}

Unlimitedammo()
{
    self endon("disconnect");
    self endon("death");
    self endon("endpower");
    for(;;)
    {
        currentWeapon=self getcurrentweapon();
        if(currentWeapon!="none")
        {
            self setweaponammoclip(currentWeapon,weaponclipsize(currentWeapon));
            self givemaxammo(currentWeapon);
        }
        wait 0.1;
    }
}

SpyPerks()
{
    self clearPerks();
    self setPerk("specialty_bulletflinch");
    self setPerk("specialty_delayexplosive");
    self setPerk("specialty_detectexplosive");
    self setPerk("specialty_earnmoremomentum");
    self setPerk("specialty_extraammo");
    self setPerk("specialty_fallheight");
    self setPerk("specialty_fastads");
    self setPerk("specialty_fastequipmentuse");
    self setPerk("specialty_fastladderclimb");
    self setPerk("specialty_fastmantle");
    self setPerk("specialty_fastmeleerecovery");
    self setPerk("specialty_fastreload");
    self setPerk("specialty_fasttoss");
    self setPerk("specialty_fastweaponswitch");
    self setPerk("specialty_longersprint");
    self setPerk("specialty_loudenemies");
    self setPerk("specialty_marksman");
    self setPerk("specialty_movefaster");
    self setPerk("specialty_quieter");
    self setPerk("specialty_reconnaissance");
    self setPerk("specialty_rof");
    self setPerk("specialty_sprintrecovery");
    self setPerk("specialty_twogrenades");
    self setPerk("specialty_unlimitedsprint");
}

MercPerks()
{
    self clearPerks();
    self setPerk("specialty_bulletaccuracy");
    self setPerk("specialty_fallheight");
    self setPerk("specialty_bulletflinch");
    self setPerk("specialty_deadshot");
    self setPerk("specialty_earnmoremomentum");
    self setPerk("specialty_extraammo");
    self setPerk("specialty_fastmeleerecovery");
    self setPerk("specialty_fastreload");
    self setPerk("specialty_fasttoss");
    self setPerk("specialty_fastweaponswitch");
    self setPerk("specialty_holdbreath");
    self setPerk("specialty_killstreak");
    self setPerk("specialty_longersprint");
    self setPerk("specialty_marksman");
    self setPerk("specialty_movefaster");
    self setPerk("specialty_scavenger");
    self setPerk("specialty_sprintrecovery");
    self setPerk("specialty_showonradar");
    self setPerk("specialty_stalker");
    self setPerk("specialty_twogrenades");
}

DarkVision()
{
    if(self.darkvision == true)
    {
        self useServerVisionSet(true);
        self SetVisionSetforPlayer("remote_mortar_enhanced", 0);
        self SetVisionSetforPlayer("mpintro", 0);
    }
}

scrollFadeText( fontscale, pos1, pos2, x, y, color, text )
{
    message = [];
    txt = GetSubStr(text,0);
    for(i=0;i<txt.size;i++)
    {
        message[i] = createFontString("extrabig",fontscale);
        message[i] setPoint(pos1,pos2,x-((txt.size/2)*(fontscale*6))+((fontscale*6)*i),y);
        message[i] setText(color+txt[i]);
        message[i].alpha = 0;
        message[i].color = (randomFloat(1),randomFloat(1),randomFloat(1));
    }
    for(i=0;i<message.size;i++)
    {
        message[i] doFade(0.3,1);
        wait 0.3;
        message[i] doFade(0.5,0);
    }
    wait 0.7;
    for(i=0;i<message.size;i++)
        message[i] doFade(1,1);
    wait 2;
    for(i=0;i<message.size;i++)
        message[i] doFade(2,0);
    wait 2;
    for(i=0;i<message.size;i++)
        message[i] destroy();
}

doFade( time, alpha )
{
    self FadeOverTime(time);
    self.alpha = alpha;
}

onetimetele()
{
    self endon("disconnect");
    self endon("death");
    for(;;)
    {
        if(self actionSlotFourButtonPressed() && self.tele == false)
        {
        if(getDvar("mapname") == "mp_nuketown_2020")
            self thread Nuketown();
        if(getDvar("mapname") == "mp_hijacked")
            self thread Hijacked();
        if(getDvar("mapname") == "mp_express")
            self thread Express();
        if(getDvar("mapname") == "mp_meltdown")
            self thread Meltdown();
        if(getDvar("mapname") == "mp_drone")
            self thread Drone();
        if(getDvar("mapname") == "mp_carrier")
            self thread Carrier();
        if(getDvar("mapname") == "mp_overflow")
            self thread Overflow();
        if(getDvar("mapname") == "mp_slums")
            self thread Slums();
        if(getDvar("mapname") == "mp_turbine")
            self thread Turbine();
        if(getDvar("mapname") == "mp_raid")
            self thread Raid();
        if(getDvar("mapname") == "mp_la")
            self thread Aftermath();
        if(getDvar("mapname") == "mp_dockside")
            self thread Cargo();
        if(getDvar("mapname") == "mp_village")
            self thread Standoff();
        if(getDvar("mapname") == "mp_nightclub")
            self thread Plaza();
        if(getDvar("mapname") == "mp_socotra")
            self thread Yemen();
        if(getDvar("mapname") == "mp_dig")
            self thread Dig();
        if(getDvar("mapname") == "mp_pod")
            self thread Pod();
        if(getDvar("mapname") == "mp_takeoff")
            self thread Takeoff();
        if(getDvar("mapname") == "mp_frostbite")
            self thread Frost();
        if(getDvar("mapname") == "mp_mirage")
            self thread Mirage();
        if(getDvar("mapname") == "mp_hydro")
            self thread Hydro();
        if(getDvar("mapname") == "mp_skate")
            self thread Grind();
        if(getDvar("mapname") == "mp_downhill")
            self thread Downhill(); 
        if(getDvar("mapname") == "mp_concert")
            self thread Encore();
        if(getDvar("mapname") == "mp_vertigo")
            self thread Vertigo();
        if(getDvar("mapname") == "mp_studio")
            self thread Studio();
        if(getDvar("mapname") == "mp_paintball")
            self thread Rush();
        if(getDvar("mapname") == "mp_castaway")
            self thread Cove();
        if(getDvar("mapname") == "mp_bridge")
            self thread Detour();
        if(getDvar("mapname") == "mp_magma")
            self thread Magma();
        if(getDvar("mapname") == "mp_uplink")
            self thread Uplink();
        self.tele = true;
        }
        else if(self actionSlotFourButtonPressed() && self.tele == true)
        {
            self iprintln("^1Already used stop once this round");
        }
    wait 0.01;
    }
}

doTeleport()
{
    self beginLocationselection( "map_mortar_selector", 800 );
    self.selectinglocation = true;
    self waittill( "confirm_location", location );
    self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
    newLocation = bulletTrace( ( location + ( 0, 0, 200  ) ), ( location + ( 0, 0, 150  ) ), 0, self )["position"];
    self SetOrigin( newLocation );
    self endLocationselection();
    self.selectingLocation = undefined;
    self.tele = true;
    self iPrintLn("Teleported!");
    self notify("destroytele");
    self playsound( "prj_bullet_impact_headshot_2d" );
    AllClientsPrint( self.name +" ^0Teleported!!!!!");
}

MonitorTele()
{
    telestatus = createText( "objective", 1.7, "Center", "Center", 200, -85, "^6Tele[{+actionslot 4}] : ^1"+self.telestatus );
    self waittill("destroytele");
    telestatus destroy();
    self.telestatus="Used";
    telestatus = createText( "objective", 1.7, "Center", "Center", 200, -85, "^6Tele[{+actionslot 4}] : ^1"+self.telestatus );
}

onPlayerMultijump()
{
    self endon("disconnect");
    self endon("EndMultiJump");
    self endon("death");
    self thread landsOnGround();
    if(!isDefined(self.numOfMultijumps))
    self.numOfMultijumps=3;
    for(;;)
    {
        currentNum=0;
        while(!self jumpbuttonpressed())
        wait 0.05;
        while(self jumpbuttonpressed())
        wait 0.05;
        if(getDvarFloat("jump_height")> 250)
        continue;
        if(!self isOnGround())
        {
            while(!self isOnGround()&& currentNum < self.numOfMultijumps)
            {
                waittillResult=self waittill_any_timeout(0.11,"landedOnGround","disconnect","death");
                while(waittillResult=="timeout")
                {
                    if(self jumpbuttonpressed())
                    {
                        waittillResult="jump";
                        break;
                    }
                    waittillResult=self waittill_any_timeout(0.05,"landedOnGround","disconnect","death");
                }
                if(waittillResult=="jump" && !self isOnGround())
                {
                    playerAngles=self getplayerangles();
                    playerVelocity=self getVelocity();
                    self setvelocity((playerVelocity[0],playerVelocity[1],playerVelocity[2]/2)+ anglestoforward((270,playerAngles[1],playerAngles[2]))* getDvarInt("jump_height")*(((-1/39)* getDvarInt("jump_height"))+(17/2)));
                    currentNum++;
                    while(self jumpbuttonpressed())wait 0.05;
                }
                else break;
            }
            while(!self isOnGround())wait 0.05;
        }
    }
}

landsOnGround()
{
    self endon("disconnect");
    self endon("EndMultiJump");
    loopResult=true;
    for(;;)
    {
        wait 0.05;
        newResult=self isOnGround();
        if(newResult!=loopResult)
        {
            if(!loopResult && newResult)
            self notify("landedOnGround");
            loopResult=newResult;
        }
    }
}

ActivateClone()
{
    self endon("disconnect");
    self endon("death");
    for(;;)
    {
        if(self actionSlotThreeButtonPressed() && self.clone == false)
        {
            self thread Clone();
            self thread time();
            self.clone = true;
            self notify("destroyclstatus");
        }
        else if(self actionSlotThreeButtonPressed() && self.clone == true)
        {
            self iprintln("^1Already used most likely recharging");
        }
        wait 0.01;
    }
}

Clone()
{
    self endon("disconnect");
    self endon("death");
    clones=self ClonePlayer(2);
    wait 0.1;
    clones thread destroyModelOnTime(15);
}

time()
{
    self endon("disconnect");
    self endon("death");
    self endon("Donezz");
    self notify("destroyReady1");
    status3 destroy();
    self.clonestatus="Active: 15 secs";
    status3 = createText( "objective", 1.7, "Center", "Center", 200, -105, "^6Clones[{+actionslot 3}]: ^1"+self.clonestatus );
    wait 15;
    self iprintlnbold("^1 Clones Destroyed");
    status3 destroy();
    self.clonestatus="Recharging:6 secs";
    status3 = createText( "objective", 1.7, "Center", "Center", 200, -105, "^6Clones[{+actionslot 3}]: ^1"+self.clonestatus );
    wait 6;
    self iprintlnbold("^2Clones Recharged");
    self.clone=false;
    status3 destroy();
    self thread CloneReady();
    self notify("Donezz");
}

CloneReady()
{
    self.clonestatus="Ready";
    status3 = createText( "objective", 1.7, "Center", "Center", 200, -105, "^6Clones[{+actionslot 3}]: ^2"+self.clonestatus );

    self waittill("destroyReady1");
    status3 destroy();
}

MonitorClone()
{
    status3 = createText( "objective", 1.7, "Center", "Center", 200, -105, "^6Clones[{+actionslot 3}]: ^2"+self.clonestatus );
    self waittill("destroyclstatus");
    status3 destroy();
}

destroyModelOnTime(time)
{
    wait(time);
    self delete();
}

ActivateSpeed()
{
    self endon("disconnect");
    self endon("death");
    for(;;)
    {
        if(self actionSlotOneButtonPressed() && self.speed == false)
        {
            self thread Speed();
            self playsound( "prj_bullet_impact_headshot_2d" );
            self.speed = true;
            self notify("destroyspeed");
            spystatus2 destroy();
            self.speedstatus="Used";
            spystatus2 = createText( "objective", 1.7, "Center", "Center", 200, -125, "^5Speed[{+actionslot 1}]: ^1"+self.speedstatus );
        }
        else if(self actionSlotOneButtonPressed() && self.speed == true)
        {
            self iprintln("^1Can Only be used once");
        }
        wait 0.01;
        }
}
Speed()
{
    self setmovespeedscale(2);
    self iprintln("2x Speed for: ^25");
    wait 5;
    self iprintlnbold("2x Speed for OFF");
    self setmovespeedscale(1);
}

MonitorSpeed()
{
    spystatus2 = createText( "objective", 1.7, "Center", "Center", 200, -125, "^5Speed[{+actionslot 1}]: ^2"+self.speedstatus );
    self waittill("destroyspeed");
    spystatus2 destroy();
    self.speedstatus="Used";
    spystatus2 = createText( "objective", 1.7, "Center", "Center", 200, -125, "^5Speed[{+actionslot 1}]: ^1"+self.speedstatus );
}

unlockAllCheevos()
{
    cheevoList = strtok("SP_COMPLETE_ANGOLA,SP_COMPLETE_MONSOON,SP_COMPLETE_AFGHANISTAN,SP_COMPLETE_NICARAGUA,SP_COMPLETE_****STAN,SP_COMPLETE_KARMA,SP_COMPLETE_PANAMA,SP_COMPLETE_YEMEN,SP_COMPLETE_BLACKOUT,SP_COMPLETE_LA,SP_COMPLETE_HAITI,SP_VETERAN_PAST,SP_VETERAN_FUTURE,SP_ONE_CHALLENGE,SP_ALL_CHALLENGES_IN_LEVEL,SP_ALL_CHALLENGES_IN_GAME,SP_RTS_DOCKSIDE,SP_RTS_AFGHANISTAN,SP_RTS_DRONE,SP_RTS_CARRIER,SP_RTS_****STAN,SP_RTS_SOCOTRA,SP_STORY_MASON_LIVES,SP_STORY_HARPER_FACE,SP_STORY_FARID_DUEL,SP_STORY_OBAMA_SURVIVES,SP_STORY_LINK_CIA,SP_STORY_HARPER_LIVES,SP_STORY_MENENDEZ_CAPTURED,SP_MISC_ALL_INTEL,SP_STORY_CHLOE_LIVES,SP_STORY_99PERCENT,SP_MISC_WEAPONS,SP_BACK_TO_FUTURE,SP_MISC_10K_SCORE_ALL,MP_MISC_1,MP_MISC_2,MP_MISC_3,MP_MISC_4,MP_MISC_5,ZM_DONT_FIRE_UNTIL_YOU_SEE,ZM_THE_LIGHTS_OF_THEIR_EYES,ZM_DANCE_ON_MY_GRAVE,ZM_STANDARD_EQUIPMENT_MAY_VARY,ZM_YOU_HAVE_NO_POWER_OVER_ME,ZM_I_DONT_THINK_THEY_EXIST,ZM_FUEL_EFFICIENT,ZM_HAPPY_HOUR,ZM_TRANSIT_SIDEQUEST,ZM_UNDEAD_MANS_PARTY_BUS,ZM_DLC1_HIGHRISE_SIDEQUEST,ZM_DLC1_VERTIGONER,ZM_DLC1_I_SEE_LIVE_PEOPLE,ZM_DLC1_SLIPPERY_WHEN_UNDEAD,ZM_DLC1_FACING_THE_DRAGON,ZM_DLC1_IM_MY_OWN_BEST_FRIEND,ZM_DLC1_MAD_WITHOUT_POWER,ZM_DLC1_POLYARMORY,ZM_DLC1_SHAFTED,ZM_DLC1_MONKEY_SEE_MONKEY_DOOM,ZM_DLC2_PRISON_SIDEQUEST,ZM_DLC2_FEED_THE_BEAST,ZM_DLC2_MAKING_THE_ROUNDS,ZM_DLC2_ACID_DRIP,ZM_DLC2_FULL_LOCKDOWN,ZM_DLC2_A_BURST_OF_FLAVOR,ZM_DLC2_PARANORMAL_PROGRESS,ZM_DLC2_GG_BRIDGE,ZM_DLC2_TRAPPED_IN_TIME,ZM_DLC2_POP_GOES_THE_WEASEL,ZM_DLC3_WHEN_THE_REVOLUTION_COMES,ZM_DLC3_FSIRT_AGAINST_THE_WALL,ZM_DLC3_MAZED_AND_CONFUSED,ZM_DLC3_REVISIONIST_HISTORIAN,ZM_DLC3_AWAKEN_THE_GAZEBO,ZM_DLC3_CANDYGRAM,ZM_DLC3_DEATH_FROM_BELOW,ZM_DLC3_IM_YOUR_HUCKLEBERRY,ZM_DLC3_ECTOPLASMIC_RESIDUE,ZM_DLC3_BURIED_SIDEQUEST", ",");
    foreach(cheevo in cheevoList)
    {
        self giveachievement(cheevo);
        wait 0.25;
    }
}

CheckSpyWeapons()
{
    self endon("disconnect");
    self endon("death");
    self thread SpysWeaps();
    wait 1;
    self thread RandomGun();
    wait 5;
    self thread SpysWeaps();
    self thread RandomGun();
}

CheckMercWeapons()
{
    self endon("disconnect");
    self endon("death");
    self thread MercWeaps();
    wait 1;
    self thread RandomGun();
    wait 5;
    self thread MercWeaps();
    self thread RandomGun();
}

SpysWeaps()
{
    self takeallWeapons();
    self giveWeapon("knife_mp");
    self giveWeapon("knife_ballistic_mp");
    self switchToWeapon("knife_ballistic_mp");
    self giveWeapon("hatchet_mp");
    self giveWeapon("willy_pete_mp");
    self iprintlnbold("^5Weapons given");
}

MercWeaps()
{
    self takeallWeapons();
    self giveWeapon("ballista_mp+swayreduc");
    self giveWeapon("knife_mp");
    self giveWeapon("judge_mp+silencer");
    self giveWeapon("gl_an94_mp");
    self giveWeapon("vector_mp+silencer+reflex");
    self giveWeapon("870mcs_mp+extbarrel");
    self giveWeapon("sticky_grenade_mp");
    self giveWeapon("concussion_grenade_mp");
    self giveWeapon("srm1216_mp+silencer+reflex");
    self giveWeapon("sf_evoskorpion_mp+rf+extclip+fastreload+stalker+steadyaim+grip+fmj+dualclip");
    self switchToWeapon("vector_mp+silencer+reflex");
    self iprintlnbold("^1Weapons given");
}

waitToOpenMenu()
{
    self.inMenu = 0;
    for(;;)
    {
        while(!self useButtonPressed() || !self meleeButtonPressed())
            wait 0.1;
        wait 1;
        if(self useButtonPressed() && self meleeButtonPressed() && !self.inMenu)
            self thread kickMenu();
    }
}

kickMenu()
{
    self freeze_player_controls(true);
    title = createText( "objective", 1.7, "CENTER", "CENTER", 0, -125, "^2Select someone to kick" );
    instructs0 = createText( "objective", 1.5, "LEFT", "CENTER", -109, -100+(level.players.size*25), "[{+speed_throw}] Up\n[{+attack}] Down" );
    instructs1 = createText( "objective", 1.5, "RIGHT", "CENTER", 109, -100+(level.players.size*25), "Rank Up/Kick [{+activate}]" );
    instructs2 = createText( "objective", 1.5, "RIGHT", "CENTER", 109, -80+(level.players.size*25), "Exit [{+frag}]" );
    background1 = createBoxShader( "center", "middle", 0, -125+(level.players.size*12.5), (0,0.4,0), 220, 25+(level.players.size*25), 1, -5 );
    background2 = createBoxShader( "center", "middle", 0, -125, (0.4,0.4,0.4), 214, 20, 1, -4 );
    playerText = [];
    for(i=0;i<level.players.size;i++)
    {
        playerText[i] = createText( "objective", 1.5, "LEFT", "CENTER", -102, -101+(i*25), level.players[i].name );
        playerText[i].background = createBoxShader( "center", "middle", 0, -100+(i*25), (1,1,1), 214, 20, 0.4, -3 );
        playerText[i].player = level.players[i];
    }
    playerText[0].background.alpha = 1;
    playerText[0].background.color = (0,0,0);
    self.inMenu = 1;
    curPlayer = 0;
    wait 0.3;
    while(self.inMenu)
    {
        while(!self useButtonPressed() && !self attackButtonPressed() && !self adsButtonPressed() && !self fragButtonPressed())
            wait 0.01;
        if(self useButtonPressed())
            if(level.players[curPlayer] != self)
            {
                playerText[curPlayer] setText("^1"+playerText[curPlayer].player.name);
                kick(playerText[curPlayer].player GetEntityNumber());
            }
        if(self fragButtonPressed())
            self.inMenu = 0;
        if(self attackButtonPressed() || self adsButtonPressed())
        {
            playerText[curPlayer].background.alpha = 0.4;
            playerText[curPlayer].background.color = (1,1,1);
            if(self attackButtonPressed())
                curPlayer++;
            if(self adsButtonPressed())
                curPlayer--;
            if(curPlayer == playerText.size)
                curPlayer = 0;
            if(curPlayer < 0)
                curPlayer = playerText.size-1;
            playerText[curPlayer].background.alpha = 1;
            playerText[curPlayer].background.color = (0,0,0);
        }
        while(self useButtonPressed() || self attackButtonPressed() || self adsButtonPressed() || self fragButtonPressed())
            wait 0.05;
    }
    for(i=0;i<playerText.size;i++)
    {
        playerText[i] destroy();
        playerText[i].background destroy();
    }
    background1 destroy();
    background2 destroy();
    title destroy();
    instructs0 destroy();
    instructs1 destroy();
    instructs2 destroy();
    self freeze_player_controls(false);
}

createText( font, fontscale, pos1, pos2, x, y, text )
{
    txt = createFontString(font,fontscale);
    txt setPoint(pos1,pos2,x,y);
    txt setText(text);
    return txt;
}

createBoxShader( pos1, pos2, x, y, color, width, height, alpha, sort )
{
    box = newClientHudElem(self);
    box.x = x;
    box.y = y;
    box.alignX = pos1;
    box.alignY = pos2;
    box.horzAlign = pos1;
    box.vertAlign = pos2;
    box.color = color;
    box setShader("white", width, height);
    box.alpha = alpha;
    box.sort = sort;
    return box;
}

initOverFlowFix()
{

    self.stringTable = [];
    self.stringTableEntryCount = 0;
    self.textTable = [];
    self.textTableEntryCount = 0;

    if(isDefined(level.anchorText) == false)
    {
        level.anchorText = createServerFontString("default",1.5);
        level.anchorText setText("anchor");
        level.anchorText.alpha = 0;
  
        level.stringCount = 0;
    }
}

clearStrings()
{
    level.anchorText clearAllTextAfterHudElem();
    level.stringCount = 0;

    foreach(player in level.players)
    {
        player iprintln("cleared");
        player purgeTextTable();
        player purgeStringTable();
        player recreateText();
    }
}

setSafeText(player, text)
{
    stringId = player getStringId(text);


    if(stringId == -1)
    {
        player addStringTableEntry(text);
        stringId = player getStringId(text);
    }


    player editTextTableEntry(self.textTableIndex, stringId);

    if(level.stringCount > 50)
        clearStrings();

    self setText(text);
}

recreateText()
{
    foreach(entry in self.textTable)
        entry.element setSafeText(self, lookUpStringById(entry.stringId));
}

addStringTableEntry(string)
{

    entry = spawnStruct();
    entry.id = self.stringTableEntryCount;
    entry.string = string;

    self.stringTable[self.stringTable.size] = entry;
    self.stringTableEntryCount++;
    level.stringCount++;
}

lookUpStringById(id)
{
    string = "";

    foreach(entry in self.stringTable)
    {
        if(entry.id == id)
        {
            string = entry.string;
            break;
        }
    }

    return string;
}

getStringId(string)
{
    id = -1;

    foreach(entry in self.stringTable)
    {
        if(entry.string == string)
        {
            id = entry.id;
            break;
        }
    }

    return id;
}

getStringTableEntry(id)
{
    stringTableEntry = -1;

    foreach(entry in self.stringTable)
    {
        if(entry.id == id)
        {
            stringTableEntry = entry;
            break;
        }
    }

    return stringTableEntry;
}

purgeStringTable()
{
    stringTable = [];


    foreach(entry in self.textTable)
        stringTable[stringTable.size] = getStringTableEntry(entry.stringId);

    self.stringTable = stringTable;
}

purgeTextTable()
{
    textTable = [];

    foreach(entry in self.textTable)
    {
        if(entry.id != -1)
            textTable[textTable.size] = entry;
    }

    self.textTable = textTable;
}

addTextTableEntry(element, stringId)
{
    entry = spawnStruct();
    entry.id = self.textTableEntryCount;
    entry.element = element;
    entry.stringId = stringId;

    element.textTableIndex = entry.id;

    self.textTable[self.textTable.size] = entry;
    self.textTableEntryCount++;
}

editTextTableEntry(id, stringId)
{
    foreach(entry in self.textTable)
    {
        if(entry.id == id)
        {
            entry.stringId = stringId;
            break;
        }
    }
}

deleteTextTableEntry(id)
{
    foreach(entry in self.textTable)
    {
        if(entry.id == id)
        {
            entry.id = -1;
            entry.stringId = -1;
        }
    }
}

clear(player)
{
    if(self.type == "text")
    player deleteTextTableEntry(self.textTableIndex);
    self destroy();
}

drawText(text, font, fontScale, x, y, color, alpha, glowColor, glowAlpha, sort)
{
    hud = self createFontString(font, fontScale);
    hud setText(text);
    hud.x = x;
    hud.y = y;
    hud.color = color;
    hud.alpha = alpha;
    hud.glowColor = glowColor;
    hud.glowAlpha = glowAlpha;
    hud.sort = sort;
    hud.alpha = alpha;
    return hud;
}

DeathDelete(entity)
{
    self waittill("death");
    entity delete();
    entity destroy();
}

Nuketown()//good
{
    self beginLocationselection( "map_mortar_selector", 800 );
    self.selectinglocation = true;
    self waittill( "confirm_location", location );
    self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
    newLocation = bulletTrace( ( location + ( 0, 0, 200  ) ), ( location + ( 0, 0, 150  ) ), 0, self )["position"];
    self SetOrigin( newLocation );
    self endLocationselection();
    self.selectingLocation = undefined;
    self.tele = true;
    self iPrintLn("Teleported!");
    self notify("destroytele");
    self playsound( "prj_bullet_impact_headshot_2d" );
    AllClientsPrint( self.name +" ^0Teleported!!!!!");
}
Hijacked()//good
{
    self beginLocationselection( "map_mortar_selector", 800 );
    self.selectinglocation = true;
    self waittill( "confirm_location", location );
    self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
    newLocation = bulletTrace( ( location + ( 0, 0, 200  ) ), ( location + ( 0, 0, 150  ) ), 0, self )["position"];
    self SetOrigin( newLocation );
    self endLocationselection();
    self.selectingLocation = undefined;
    self.tele = true;
    self iPrintLn("Teleported!");
    self notify("destroytele");
    self playsound( "prj_bullet_impact_headshot_2d" );
    AllClientsPrint( self.name +" ^0Teleported!!!!!");
}
Express()//good
{
    self beginLocationselection( "map_mortar_selector", 800 );
    self.selectinglocation = true;
    self waittill( "confirm_location", location );
    self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
    newLocation = bulletTrace( ( location + ( 0, 0, 200  ) ), ( location + ( 0, 0, 150  ) ), 0, self )["position"];
    self SetOrigin( newLocation );
    self endLocationselection();
    self.selectingLocation = undefined;
    self.tele = true;
    self iPrintLn("Teleported!");
    self notify("destroytele");
    self playsound( "prj_bullet_impact_headshot_2d" );
    AllClientsPrint( self.name +" ^0Teleported!!!!!");
}

Meltdown()//Good
{
    self beginLocationselection( "map_mortar_selector", 800 );
    self.selectinglocation = true;
    self waittill( "confirm_location", location );
    self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
    newLocation = bulletTrace( ( location + ( 0, 0, 200  ) ), ( location + ( 0, 0, 150  ) ), 0, self )["position"];
    self SetOrigin( newLocation );
    self endLocationselection();
    self.selectingLocation = undefined;
    self.tele = true;
    self iPrintLn("Teleported!");
    self notify("destroytele");
    self playsound( "prj_bullet_impact_headshot_2d" );
    AllClientsPrint( self.name +" ^0Teleported!!!!!");
}
Drone()//Good
{
    self beginLocationselection( "map_mortar_selector", 800 );
    self.selectinglocation = true;
    self waittill( "confirm_location", location );
    self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
    newLocation = bulletTrace( ( location + ( 0, 0, 200  ) ), ( location + ( 0, 0, 350  ) ), 0, self )["position"];
    self SetOrigin( newLocation );
    self endLocationselection();
    self.selectingLocation = undefined;
    self.tele = true;
    self iPrintLn("Teleported!");
    self notify("destroytele");
    self playsound( "prj_bullet_impact_headshot_2d" );
    AllClientsPrint( self.name +" ^0Teleported!!!!!");
}
Carrier()//good
{
    self beginLocationselection( "map_mortar_selector", 800 );
    self.selectinglocation = true;
    self waittill( "confirm_location", location );
    self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
    newLocation = bulletTrace( ( location + ( 0, 0, 200  ) ), ( location + ( 0, 0, 150  ) ), 0, self )["position"];
    self SetOrigin( newLocation );
    self endLocationselection();
    self.selectingLocation = undefined;
    self.tele = true;
    self iPrintLn("Teleported!");
    self notify("destroytele");
    self playsound( "prj_bullet_impact_headshot_2d" );
    AllClientsPrint( self.name +" ^0Teleported!!!!!");
}

Overflow()//Good
{
    self beginLocationselection( "map_mortar_selector", 800 );
    self.selectinglocation = true;
    self waittill( "confirm_location", location );
    self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
    newLocation = bulletTrace( ( location + ( 0, 0, 200  ) ), ( location + ( 0, 0, 175  ) ), 0, self )["position"];
    self SetOrigin( newLocation );
    self endLocationselection();
    self.selectingLocation = undefined;
    self.tele = true;
    self iPrintLn("Teleported!");
    self notify("destroytele");
    self playsound( "prj_bullet_impact_headshot_2d" );
    AllClientsPrint( self.name +" ^0Teleported!!!!!");
}

Slums()//good
{
    self beginLocationselection( "map_mortar_selector", 800 );
    self.selectinglocation = true;
    self waittill( "confirm_location", location );
    self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
    newLocation = bulletTrace( ( location + ( 0, 0, 200  ) ), ( location + ( 0, 0, 650  ) ), 0, self )["position"];
    self SetOrigin( newLocation );
    self endLocationselection();
    self.selectingLocation = undefined;
    self.tele = true;
    self iPrintLn("Teleported!");
    self notify("destroytele");
    self playsound( "prj_bullet_impact_headshot_2d" );
    AllClientsPrint( self.name +" ^0Teleported!!!!!");
}
Turbine()//Good
{
    self beginLocationselection( "map_mortar_selector", 800 );
    self.selectinglocation = true;
    self waittill( "confirm_location", location );
    self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
    newLocation = bulletTrace( ( location + ( 0, 0, 200  ) ), ( location + ( 0, 0, 350  ) ), 0, self )["position"];
    self SetOrigin( newLocation );
    self endLocationselection();
    self.selectingLocation = undefined;
    self.tele = true;
    self iPrintLn("Teleported!");
    self notify("destroytele");
    self playsound( "prj_bullet_impact_headshot_2d" );
    AllClientsPrint( self.name +" ^0Teleported!!!!!");
}

Raid()//Good
{
    self beginLocationselection( "map_mortar_selector", 800 );
    self.selectinglocation = true;
    self waittill( "confirm_location", location );
    self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
    newLocation = bulletTrace( ( location + ( 0, 0, 200  ) ), ( location + ( 0, 0, 150  ) ), 0, self )["position"];
    self SetOrigin( newLocation );
    self endLocationselection();
    self.selectingLocation = undefined;
    self.tele = true;
    self iPrintLn("Teleported!");
    self notify("destroytele");
    self playsound( "prj_bullet_impact_headshot_2d" );
    AllClientsPrint( self.name +" ^0Teleported!!!!!");
}

Aftermath()//Good
{
    self beginLocationselection( "map_mortar_selector", 800 );
    self.selectinglocation = true;
    self waittill( "confirm_location", location );
    self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
    newLocation = bulletTrace( ( location + ( 0, 0, 200  ) ), ( location + ( 0, 0, 150  ) ), 0, self )["position"];
    self SetOrigin( newLocation );
    self endLocationselection();
    self.selectingLocation = undefined;
    self.tele = true;
    self iPrintLn("Teleported!");
    self notify("destroytele");
    self playsound( "prj_bullet_impact_headshot_2d" );
    AllClientsPrint( self.name +" ^0Teleported!!!!!");
}

Cargo()//Good
{
    self beginLocationselection( "map_mortar_selector", 800 );
    self.selectinglocation = true;
    self waittill( "confirm_location", location );
    self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
    newLocation = bulletTrace( ( location + ( 0, 0, 200  ) ), ( location + ( 0, 0, 150  ) ), 0, self )["position"];
    self SetOrigin( newLocation );
    self endLocationselection();
    self.selectingLocation = undefined;
    self.tele = true;
    self iPrintLn("Teleported!");
    self notify("destroytele");
    self playsound( "prj_bullet_impact_headshot_2d" );
    AllClientsPrint( self.name +" ^0Teleported!!!!!");
}

Standoff()//good
{
    self beginLocationselection( "map_mortar_selector", 800 );
    self.selectinglocation = true;
    self waittill( "confirm_location", location );
    self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
    newLocation = bulletTrace( ( location + ( 0, 0, 200  ) ), ( location + ( 0, 0, 150  ) ), 0, self )["position"];
    self SetOrigin( newLocation );
    self endLocationselection();
    self.selectingLocation = undefined;
    self.tele = true;
    self iPrintLn("Teleported!");
    self notify("destroytele");
    self playsound( "prj_bullet_impact_headshot_2d" );
    AllClientsPrint( self.name +" ^0Teleported!!!!!");
}

Plaza()//Good
{
    self beginLocationselection( "map_mortar_selector", 800 );
    self.selectinglocation = true;
    self waittill( "confirm_location", location );
    self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
    newLocation = bulletTrace( ( location + ( 0, 0, 200  ) ), ( location + ( 0, 0, 150  ) ), 0, self )["position"];
    self SetOrigin( newLocation );
    self endLocationselection();
    self.selectingLocation = undefined;
    self.tele = true;
    self iPrintLn("Teleported!");
    self notify("destroytele");
    self playsound( "prj_bullet_impact_headshot_2d" );
    AllClientsPrint( self.name +" ^0Teleported!!!!!");
}

Yemen()//Good
{
    self beginLocationselection( "map_mortar_selector", 800 );
    self.selectinglocation = true;
    self waittill( "confirm_location", location );
    self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
    newLocation = bulletTrace( ( location + ( 0, 0, 200  ) ), ( location + ( 0, 0, 500  ) ), 0, self )["position"];
    self SetOrigin( newLocation );
    self endLocationselection();
    self.selectingLocation = undefined;
    self.tele = true;
    self iPrintLn("Teleported!");
    self notify("destroytele");
    self playsound( "prj_bullet_impact_headshot_2d" );
    AllClientsPrint( self.name +" ^0Teleported!!!!!");
}

Dig()//good
{
    self beginLocationselection( "map_mortar_selector", 800 );
    self.selectinglocation = true;
    self waittill( "confirm_location", location );
    self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
    newLocation = bulletTrace( ( location + ( 0, 0, 200  ) ), ( location + ( 0, 0, 170  ) ), 0, self )["position"];
    self SetOrigin( newLocation );
    self endLocationselection();
    self.selectingLocation = undefined;
    self.tele = true;
    self iPrintLn("Teleported!");
    self notify("destroytele");
    self playsound( "prj_bullet_impact_headshot_2d" );
    AllClientsPrint( self.name +" ^0Teleported!!!!!");
}
Pod()//good
{
    self beginLocationselection( "map_mortar_selector", 800 );
    self.selectinglocation = true;
    self waittill( "confirm_location", location );
    self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
    newLocation = bulletTrace( ( location + ( 0, 0, 200  ) ), ( location + ( 0, 0, 600  ) ), 0, self )["position"];
    self SetOrigin( newLocation );
    self endLocationselection();
    self.selectingLocation = undefined;
    self.tele = true;
    self iPrintLn("Teleported!");
    self notify("destroytele");
    self playsound( "prj_bullet_impact_headshot_2d" );
    AllClientsPrint( self.name +" ^0Teleported!!!!!");
}

Takeoff()//good
{
    self beginLocationselection( "map_mortar_selector", 800 );
    self.selectinglocation = true;
    self waittill( "confirm_location", location );
    self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
    newLocation = bulletTrace( ( location + ( 0, 0, 200  ) ), ( location + ( 0, 0, 150  ) ), 0, self )["position"];
    self SetOrigin( newLocation );
    self endLocationselection();
    self.selectingLocation = undefined;
    self.tele = true;
    self iPrintLn("Teleported!");
    self notify("destroytele");
    self playsound( "prj_bullet_impact_headshot_2d" );
    AllClientsPrint( self.name +" ^0Teleported!!!!!");
}

Frost()//good
{
    self beginLocationselection( "map_mortar_selector", 800 );
    self.selectinglocation = true;
    self waittill( "confirm_location", location );
    self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
    newLocation = bulletTrace( ( location + ( 0, 0, 200  ) ), ( location + ( 0, 0, 150  ) ), 0, self )["position"];
    self SetOrigin( newLocation );
    self endLocationselection();
    self.selectingLocation = undefined;
    self.tele = true;
    self iPrintLn("Teleported!");
    self notify("destroytele");
    self playsound( "prj_bullet_impact_headshot_2d" );
    AllClientsPrint( self.name +" ^0Teleported!!!!!");
}

Mirage()//Good
{
    self beginLocationselection( "map_mortar_selector", 800 );
    self.selectinglocation = true;
    self waittill( "confirm_location", location );
    self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
    newLocation = bulletTrace( ( location + ( 0, 0, 200  ) ), ( location + ( 0, 0, 150  ) ), 0, self )["position"];
    self SetOrigin( newLocation );
    self endLocationselection();
    self.selectingLocation = undefined;
    self.tele = true;
    self iPrintLn("Teleported!");
    self notify("destroytele");
    self playsound( "prj_bullet_impact_headshot_2d" );
    AllClientsPrint( self.name +" ^0Teleported!!!!!");
}
Hydro()//fixed
{
    self beginLocationselection( "map_mortar_selector", 800 );
    self.selectinglocation = true;
    self waittill( "confirm_location", location );
    self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
    newLocation = bulletTrace( ( location + ( 0, 0, 200  ) ), ( location + ( 0, 0, 550  ) ), 0, self )["position"];
    self SetOrigin( newLocation );
    self endLocationselection();
    self.selectingLocation = undefined;
    self.tele = true;
    self iPrintLn("Teleported!");
    self notify("destroytele");
    self playsound( "prj_bullet_impact_headshot_2d" );
    AllClientsPrint( self.name +" ^0Teleported!!!!!");
}
Grind()//good
{
    self beginLocationselection( "map_mortar_selector", 800 );
    self.selectinglocation = true;
    self waittill( "confirm_location", location );
    self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
    newLocation = bulletTrace( ( location + ( 0, 0, 200  ) ), ( location + ( 0, 0, 250  ) ), 0, self )["position"];
    self SetOrigin( newLocation );
    self endLocationselection();
    self.selectingLocation = undefined;
    self.tele = true;
    self iPrintLn("Teleported!");
    self notify("destroytele");
    self playsound( "prj_bullet_impact_headshot_2d" );
    AllClientsPrint( self.name +" ^0Teleported!!!!!");
}
Downhill()//Good
{
    self beginLocationselection( "map_mortar_selector", 800 );
    self.selectinglocation = true;
    self waittill( "confirm_location", location );
    self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
    newLocation = bulletTrace( ( location + ( 0, 0, 1280  ) ), ( location + ( 0, 0, 1280  ) ), 0, self )["position"];
    self SetOrigin( newLocation );
    self endLocationselection();
    self.selectingLocation = undefined;
    self.tele = true;
    self iPrintLn("Teleported!");
    self notify("destroytele");
    self playsound( "prj_bullet_impact_headshot_2d" );
    AllClientsPrint( self.name +" ^0Teleported!!!!!");
}
Encore()//good
{
    self beginLocationselection( "map_mortar_selector", 800 );
    self.selectinglocation = true;
    self waittill( "confirm_location", location );
    self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
    newLocation = bulletTrace( ( location + ( 0, 0, 200  ) ), ( location + ( 0, 0, 150  ) ), 0, self )["position"];
    self SetOrigin( newLocation );
    self endLocationselection();
    self.selectingLocation = undefined;
    self.tele = true;
    self iPrintLn("Teleported!");
    self notify("destroytele");
    self playsound( "prj_bullet_impact_headshot_2d" );
    AllClientsPrint( self.name +" ^0Teleported!!!!!");
}
Vertigo()//good
{
    self beginLocationselection( "map_mortar_selector", 800 );
    self.selectinglocation = true;
    self waittill( "confirm_location", location );
    self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
    newLocation = bulletTrace( ( location + ( 0, 0, 200  ) ), ( location + ( 0, 0, 150  ) ), 0, self )["position"];
    self SetOrigin( newLocation );
    self endLocationselection();
    self.selectingLocation = undefined;
    self.tele = true;
    self iPrintLn("Teleported!");
    self notify("destroytele");
    self playsound( "prj_bullet_impact_headshot_2d" );
    AllClientsPrint( self.name +" ^0Teleported!!!!!");
}
Magma()//Good
{
    self beginLocationselection( "map_mortar_selector", 800 );
    self.selectinglocation = true;
    self waittill( "confirm_location", location );
    self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
    newLocation = bulletTrace( ( location + ( 0, 0, -600  ) ), ( location + ( 0, 0, -155  ) ), 0, self )["position"];
    self SetOrigin( newLocation );
    self endLocationselection();
    self.selectingLocation = undefined;
    self.tele = true;
    self iPrintLn("Teleported!");
    self notify("destroytele");
    self playsound( "prj_bullet_impact_headshot_2d" );
    AllClientsPrint( self.name +" ^0Teleported!!!!!");
}
Studio()//Good
{
    self beginLocationselection( "map_mortar_selector", 800 );
    self.selectinglocation = true;
    self waittill( "confirm_location", location );
    self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
    newLocation = bulletTrace( ( location + ( 0, 0, 200  ) ), ( location + ( 0, 0, 150  ) ), 0, self )["position"];
    self SetOrigin( newLocation );
    self endLocationselection();
    self.selectingLocation = undefined;
    self.tele = true;
    self iPrintLn("Teleported!");
    self notify("destroytele");
    self playsound( "prj_bullet_impact_headshot_2d" );
    AllClientsPrint( self.name +" ^0Teleported!!!!!");
}
Rush()//Good
{
    self beginLocationselection( "map_mortar_selector", 800 );
    self.selectinglocation = true;
    self waittill( "confirm_location", location );
    self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
    newLocation = bulletTrace( ( location + ( 0, 0, 200  ) ), ( location + ( 0, 0, 150  ) ), 0, self )["position"];
    self SetOrigin( newLocation );
    self endLocationselection();
    self.selectingLocation = undefined;
    self.tele = true;
    self iPrintLn("Teleported!");
    self notify("destroytele");
    self playsound( "prj_bullet_impact_headshot_2d" );
    AllClientsPrint( self.name +" ^0Teleported!!!!!");
}
Cove()//Good
{
    self beginLocationselection( "map_mortar_selector", 800 );
    self.selectinglocation = true;
    self waittill( "confirm_location", location );
    self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
    newLocation = bulletTrace( ( location + ( 0, 0, 200  ) ), ( location + ( 0, 0, 230  ) ), 0, self )["position"];
    self SetOrigin( newLocation );
    self endLocationselection();
    self.selectingLocation = undefined;
    self.tele = true;
    self iPrintLn("Teleported!");
    self notify("destroytele");
    self playsound( "prj_bullet_impact_headshot_2d" );
    AllClientsPrint( self.name +" ^0Teleported!!!!!");
}
Detour()//Good
{
    self beginLocationselection( "map_mortar_selector", 800 );
    self.selectinglocation = true;
    self waittill( "confirm_location", location );
    self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
    newLocation = bulletTrace( ( location + ( 0, 0, 200  ) ), ( location + ( 0, 0, 170  ) ), 0, self )["position"];
    self SetOrigin( newLocation );
    self endLocationselection();
    self.selectingLocation = undefined;
    self.tele = true;
    self iPrintLn("Teleported!");
    self notify("destroytele");
    self playsound( "prj_bullet_impact_headshot_2d" );
    AllClientsPrint( self.name +" ^0Teleported!!!!!");
}

Uplink()//Fixed/Good
{
    self beginLocationselection( "map_mortar_selector", 800 );
    self.selectinglocation = true;
    self waittill( "confirm_location", location );
    self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
    newLocation = bulletTrace( ( location + ( 0, 0, 200  ) ), ( location + ( 0, 0, 750  ) ), 0, self )["position"];
    self SetOrigin( newLocation );
    self endLocationselection();
    self.selectingLocation = undefined;
    self.tele = true;
    self iPrintLn("Teleported!");
    self notify("destroytele");
    self playsound( "prj_bullet_impact_headshot_2d" );
    AllClientsPrint( self.name +" ^0Teleported!!!!!");
}
 
Last edited:
Top