//Map Dedicated to my Beloved Vistic.
main()
{
 maps\mp\_load::main();
 
 game["allies"] = "marines";
 game["axis"] = "opfor";
 game["attackers"] = "axis";
 game["defenders"] = "allies";
 game["allies_soldiertype"] = "desert";
 game["axis_soldiertype"]= "desert";
 
   setdvar("g_speed" ,"210");
   
   thread vistic1();
   thread vistic2();
   thread music();
   thread endmap_trig();
   thread roomselection();
   thread beams();
   thread beamers();
   thread messages();
   thread actitele1();
   thread actitele2();
   thread actitele3();
   thread jumperfailb();
   thread bounceactif();
   thread givesniper();
   thread jumproom();
   thread scoperoom();
   thread kniferoom();
   thread trap2();
   thread trap3();
   thread trap1();
   thread actideagle();
}

vistic1()
{
 vistic_logo = getent("vistic","targetname");
	                                  
  for(;;) 
  {
   vistic_logo rotateYaw (360,7);
   wait 1;
  }
      
}

vistic2()
{
 vistic_logo = getent("vistik","targetname");
	                                  
  for(;;) 
  {
   vistic_logo rotateYaw (360,7);
   wait 1;
  }
      
}

music()
{  
    wait 0.1;

   ambientPlay("songy");
}

endmap_trig()
{ 
	trig = getEnt("endmap_trig", "targetname"); 	
	trig waittill ("trigger",player );
	firstPlace = newHudElem();
	firstPlace.foreground = true;
	firstPlace.alpha = 1;
	firstPlace.alignX = "left";
	firstPlace.alignY = "middle";
	firstPlace.horzAlign = "left";
	firstPlace.vertAlign = "middle"; 
	firstPlace.x = -400;
	firstPlace.y = 0;
	firstPlace.sort = 0;
	firstPlace.font = "default";
	firstPlace.fontScale = 1.4;
	firstplace.hidewheninmenu = false;
	firstPlace.glowAlpha = 1;
	firstPlace.glowColor = (.3,.0,3);
	firstPlace settext("^6"+ player.name+ " ^7Finished ^7First");
	firstPlace moveOverTime(2); 
	firstPlace.x = 5;
	wait 5;
	firstPlace moveOverTime(2); 
	firstPlace.x = -500;
	wait 7;
	firstPlace destroy(); 
}

roomselection()
{
   trig = getent("roomselection_trig", "targetname");
   tele1 = getent ("origin_roomselection", "targetname");
   trig setHintString ("^0Press ^4[&&1]^0 to enter ^4Room Selection^0!");
   
   while(1)
    {   
     trig waittill ("trigger", player);
	 player setOrigin(tele1.origin);
     player setPlayerAngles(tele1.angles);
     while (isDefined(player) && isAlive(player))
        wait .05;
    }
}


beams()//LITE
{  

    beam1 = getent("beam1","targetname");
    beam2 = getent("beam2","targetname");

    for (;;)
   {
     wait 0.1;

     beam1 rotateYaw (-10, 1);
     beam2 rotateYaw (10, 1);

     wait 2;

	 beam1 rotateYaw (10, 1);
     beam2 rotateYaw (-10, 1);

   }
}

beamers()//KAMERA
{  

    beamer1 = getent("beamer1","targetname");
    beamer2 = getent("beamer2","targetname");

    for (;;)
   {
     wait 0.1;

     beamer1 rotateYaw (-10, 1);
     beamer2 rotateYaw (10, 1);

     wait 2;

	  beamer1 rotateYaw (10, 1);
     beamer2 rotateYaw (-10, 1);

   }
}

messages()
{    
    wait 15;

     iprintln ("^7Map Dedicated to my ^5Beloved ^7Vistic.");

     wait 10;

     iprintln ("^7Thanks to ^5Death ^7for being here.");

     wait 10;
     
     iprintln ("^7Diskord ^5eG0sxs#1823");
    
}

actitele1()//Room 1 of acti
{
   trig = getent("trig_actiroom1", "targetname");
   tele1 = getent ("origin_actiroom1", "targetname");
   trig setHintString ("^7Tele 2 next area");
   
   while(1)
    {   
     trig waittill ("trigger", player);
	 player setOrigin(tele1.origin);
     player setPlayerAngles(tele1.angles);
     while (isDefined(player) && isAlive(player))
        wait .05;
    }
}

actitele2()//Room 2 of acti
{
   trig = getent("trig_actiroom2", "targetname");
   tele1 = getent ("origin_actiroom2", "targetname");
   trig setHintString ("^7Tele 2 next area");
   
   while(1)
    {   
     trig waittill ("trigger", player);
	 player setOrigin(tele1.origin);
     player setPlayerAngles(tele1.angles);
     while (isDefined(player) && isAlive(player))
        wait .05;
    }
}

actitele3()//Room 3 of acti
{
   trig = getent("trig_actiroom3", "targetname");
   tele1 = getent ("origin_actiroom3", "targetname");
   trig setHintString ("^7Tele 2 next area");
   
   while(1)
    {   
     trig waittill ("trigger", player);
	 player setOrigin(tele1.origin);
     player setPlayerAngles(tele1.angles);
     while (isDefined(player) && isAlive(player))
        wait .05;
    }
}

jumperfailb()//JUMPER FAIL Bounce respawn
{
   trigb = getent("trigger_jumperf", "targetname");
   teleb = getent ("origin_bouncejumper", "targetname");

   for(;;)
    {   
	  trigb waittill("trigger", player);
	  player setOrigin(teleb.origin);
	  player setPlayerAngles (teleb.angles);
    }
}

bounceactif()//ACTI FAIL Bounce respawn
{
   trigb = getent("trigger_bounceactif", "targetname");
   teleb = getent ("origin_bounceactif", "targetname");

   for(;;)
    {   
	  trigb waittill("trigger", player);
	  player setOrigin(teleb.origin);
	  player setPlayerAngles (teleb.angles);
    }
}

givesniper()//bounce sniper crate
{
givesnip = getEnt("givesnip_trig","targetname");

	for (;;)
	{
		givesnip waittill("trigger", player);
		player takeallweapons();
		wait 0.1;
		player giveweapon("deserteagle_mp");
		player giveweapon("m40a3_mp");
		player switchtoweapon("deserteagle_mp");
		player givemaxammo("deserteagle_mp");
		player givemaxammo("m40a3_mp");
	}
}

GetActivator()
{
	players = getentarray( "player", "classname" );
	
	for(i = 0;i < players.size;i++)
	{
		player = players[i];
		
		if( isdefined( player ) && isplayer( player ) && isalive( player ) && player.pers["team"] == "axis"	)
			return player;
	}
	
	return "Noactivator";
}

waitdead()
{
    activator = GetActivator();
    scope = getent("trig_scope","targetname");
    jump = getent("trig_jump","targetname");
    scope thread maps\mp\_utility::triggerOff();
    jump thread maps\mp\_utility::triggerOff();
    self common_scripts\utility::waittill_any("death","disconnect");
    activator freezeControls(false);
    self freezeControls(false);
    activator.health = activator.maxhealth;
    scope thread maps\mp\_utility::triggerOn();
    jump thread maps\mp\_utility::triggerOn();
}

jumproom()
{
   level.trigger_jump = getEnt ("trig_bouncejum", "targetname");

    jumperk = getEnt ("origin_bouncejumper", "targetname");
    actik = getEnt ("origin_bounceactif", "targetname");

  for(;;)
    {
        level.trigger_jump setHintString ("Press [&&1] to enter JumpRoom");
        level.trigger_jump waittill ("trigger", player);

        activator = getactivator();
        player thread waitdead();
	    player setOrigin (jumperk.origin);
        player setPlayerAngles (jumperk.angles);
        activator setOrigin (actik.origin);
        activator setPlayerAngles (actik.angles);
        player takeAllWeapons();
        activator takeAllWeapons();
        player giveWeapon("knife_mp");
        activator giveWeapon("knife_mp");
        player switchToWeapon("knife_mp");
        activator switchToWeapon("knife_mp");
        player.maxhealth = 100;
        player.health = player.maxhealth;
                       while(isDefined(player) && isAlive(player))
            wait .05;
        
        iPrintLnBold ("" + player.name + " has died in Jump Room");
    }
}

scoperoom()
{
    
    level.trigger_scope = getEnt ("trig_scope", "targetname");

    jumpersc = getEnt ("origin_scopejumper", "targetname");
    actisc = getEnt ("origin_sniperacti", "targetname");

    for(;;)
    {   
        level.trigger_scope setHintString ("Press [&&1] to enter Sniper Room");
        level.trigger_scope waittill ("trigger", player);

        player thread waitdead();
        activator = GetActivator();
        player setOrigin (jumpersc.origin);
        player setPlayerAngles (jumpersc.angles);    
        activator setOrigin (actisc.origin);
        activator setPlayerAngles (actisc.angles);
        player takeAllWeapons();
        activator takeAllWeapons();
        player giveWeapon("remington700_mp");
        activator giveWeapon("remington700_mp");
        player giveMaxAmmo("remington700_mp");
        activator giveMaxAmmo("remington700_mp");
        player giveWeapon("m40a3_mp");
        activator giveWeapon("m40a3_mp");
        player giveMaxAmmo("m40a3_mp");
        activator giveMaxAmmo("m40a3_mp");
        player switchToWeapon("m40a3_mp");
        activator switchToWeapon("m40a3_mp");   
        player.maxhealth = 100;
        

        while(isDefined(player) && isAlive(player))
            wait .05;

        iPrintLnBold ("" + player.name + " died in scope room");
    }
}

kniferoom()
{
   
   level.trigger_knife = getEnt ("trigger_knife", "targetname");

    jumperk = getEnt ("origin_knifejumper", "targetname");
    actik = getEnt ("origin_knifeacti", "targetname");

   for(;;)
    {
        level.trigger_knife setHintString ("Press [&&1] to enter Knife Room.");
        level.trigger_knife waittill ("trigger", player);

        activator = getactivator();
        player thread waitdead();
	    player setOrigin (jumperk.origin);
        player setPlayerAngles (jumperk.angles);
        activator setOrigin (actik.origin);
        activator setPlayerAngles (actik.angles);
        player takeAllWeapons();
        activator takeAllWeapons();
        player giveWeapon("knife_mp");
        activator giveWeapon("knife_mp");
        player switchToWeapon("knife_mp");
        activator switchToWeapon("knife_mp");
        player.maxhealth = 100;
        player.health = player.maxhealth;
                       while(isDefined(player) && isAlive(player))
            wait .05;
        
        iPrintLnBold ("" + player.name + " has died in Knife Room");
    }
}

trap2()
{
 part1 = getentarray("vanish1","targetname");
 part2 = getentarray("vanish2","targetname");
 part3 = getentarray("vanish3","targetname");
 part4 = getentarray("vanish4","targetname");;
 trig = getent("trigger_vanisher","targetname");// Vanisher aka trap 2 trigg
 trig  setHintString("^7Make unstable 3 platforms.");
 trig waittill("trigger" , user );
 if(user.pers["team"] != "axis")
{
	wait 0.2;
}
 else if(level.trapsdisabled)
{

}
 else
 trig delete();
 trig SetHintString("^7Activated");
 random = randomint(2);
	switch(random)
	{
		case 0:
				part1[randomInt(part1.size)] notsolid();
				part2[randomInt(part2.size)] notsolid();
				
				break;
				
		case 1:	
				part3[randomInt(part3.size)] notsolid();
                part4[randomInt(part4.size)] notsolid();

                break;
				
		default: return;
	}
}

trap3()
{
 part1 = getentarray("vanisherr1","targetname");
 part2 = getentarray("vanisherr2","targetname");
 part3 = getentarray("vanisherr3","targetname");
 part4 = getentarray("vanisherr4","targetname");;
 trig = getent("trigger_vanisherz","targetname"); //Vanisherz aka trap 3 trigg
 trig  setHintString("^7Make unstable 3 platforms.");
 trig waittill("trigger" , user );
 if(user.pers["team"] != "axis")
{
	wait 0.2;
}
 else if(level.trapsdisabled)
{

}
 else
 trig delete();
 trig SetHintString("^7Activated");
 random = randomint(2);
	switch(random)
	{
		case 0:
				part1[randomInt(part1.size)] notsolid();
				part2[randomInt(part2.size)] notsolid();
				
				break;
				
		case 1:	
				part3[randomInt(part3.size)] notsolid();
                part4[randomInt(part4.size)] notsolid();

                break;
				
		default: return;
	}
}

trap1()
{
 part1 = getentarray("vanishz1","targetname");
 part2 = getentarray("vanishz2","targetname");
 part3 = getentarray("vanishz3","targetname");
 part4 = getentarray("vanishz4","targetname");;
 trig = getent("trigger_vanisherzes","targetname"); //Vanisherzes aka trap 1 trigg
 trig  setHintString("^7Make unstable 3 platforms.");
 trig waittill("trigger" , user );
 if(user.pers["team"] != "axis")
{
	wait 0.2;
}
 else if(level.trapsdisabled)
{

}
 else
 trig delete();
 trig SetHintString("^7Activated");
 random = randomint(2);
	switch(random)
	{
		case 0:
				part1[randomInt(part1.size)] notsolid();
				part2[randomInt(part2.size)] notsolid();
				
				break;
				
		case 1:	
				part3[randomInt(part3.size)] notsolid();
                part4[randomInt(part4.size)] notsolid();

                break;
				
		default: return;
	}
}

actideagle()//acti room crate deagle
{
givedgl = getEnt("trigger_please","targetname");
givedgl setHintString("If you please..");

	for (;;)
	{
		givedgl waittill("trigger", player);
		player takeallweapons();
		wait 0.1;
		player giveweapon("deserteagle_mp");
		player switchtoweapon("deserteagle_mp");
		player givemaxammo("deserteagle_mp");
	}
}