Back to home

Map puzzle / Map escape

B75XH2
click to copy
This game is archived.
If you with to unarchive it, click the "restore" button in the options menu.
This code can also be found at workshop.codes/B75XH2

Thumbnail for Map puzzle / Map escape

Category:
Custom game mode

Author:
Kleator

Rating:
15

Version:
3.5.7-P1

Posted:
about 1 year ago

Last updated:
22 days ago

Tags:
competitive highscore timer room puzzle jump levels challange hard kleator parkour escape speedrun

Share this workshop!

Options

Check out Part 2!

You have to solve different levels with different heroes to find and reach the checkpoint.

How it works:

  • Press F (INTERACT) on the checkpoint to jump to the next Level
  • Hold F (INTERACT) to respawn (for 3sec)
  • Hold F (INTERACT) + corugh to reset your progress (for 10sec)
  • Look at the Time Run-Button and press F (INTERACT) to activate the Speedrun
  • Always stay outside the real world (the normal playable world areas)

Mode settings:

  • ON/OFF - Server crash saver (slowmotion) - OFF by default
  • ON/OFF - Map rotation after win - OFF by default
  • ON/OFF - Punish (freeze) people who kill - ON by default
  • ON/OFF - Highscore-Speedrun (activate/deactivate speedrun system) - ON by default

Highscores:

If you beat the highscore on the latest workshop version and want to have it set into the next version, you have to record your run (video) and upload it (or provide a reference link to YouTube / Twitch / ...)

Also list of all recorded map highscores

Full competitive speedrun support:

More infos at Highscores


Supported maps:

Paris (9 lvl - medium)

  • lvl 1 Solider76
  • lvl 2 Ash
  • lvl 3 Pharah
  • lvl 4 Hanzo
  • lvl 5 Reaper
  • lvl 6 Genji
  • lvl 7 Widowmaker
  • lvl 8 Pharah
  • lvl 9 Sombra

Busan (8 lvl - hard)

  • lvl 1 Reaper
  • lvl 2 Ana
  • lvl 3 Soldier76
  • lvl 4 Genji
  • lvl 5 Junkrat
  • lvl 6 Hanzo
  • lvl 7 Wrecking Ball
  • lvl 8 Sombra

Oasis (8 lvl - easy)

  • lvl 1 Baptiste
  • lvl 2 Hanzo
  • lvl 3 Genji
  • lvl 4 Doomfist
  • lvl 5 Ana
  • lvl 6 Pharah
  • lvl 7 Lucio
  • lvl 8 Sombra

Havanna (8 lvl - easy)

  • lvl 1 Reinhardt
  • lvl 2 Moira
  • lvl 3 Mei
  • lvl 4 Mei
  • lvl 5 Soldier76
  • lvl 6 Sombra
  • lvl 7 Sombra
  • lvl 8 Hanzo

Hollywood (8 lvl - hard)

  • lvl 1 Reaper
  • lvl 2 Pharah
  • lvl 3 Genji
  • lvl 4 Pharah
  • lvl 5 Ashe
  • lvl 6 Baptiste
  • lvl 7 Doomfist
  • lvl 8 Soldier76

Kings Row (8 lvl - medium)

  • lvl 1 Mei
  • lvl 2 Torbjörn
  • lvl 3 Brigitte
  • lvl 4 Doomfist
  • lvl 5 Ashe
  • lvl 6 Soldier76
  • lvl 7 Widowmaker
  • lvl 8 Sombra

Hanamura (5 lvl - medium)

  • lvl 1 Pharah
  • lvl 2 Zenyata
  • lvl 3 Hanzo
  • lvl 4 Genji
  • lvl 5 Sombra

Planned:

(!) This mode has reached it max element size by Blizzard. This means no rules and actions cant be added anymore. This mode will still receive bugfixes.

Known Bugs / Error:

  • Switching anybody from team to team, cousing the gamemode to crash (workaround: move into spectator and than back into the other team).
  • The mode could get canceld in some rarly cases couse of to complex workshop scripting.
  • The Snippet (Elohell-workshop) cant hold the whole code. So its not complete. Get the full snipet here.

This mode is also linked to workshop.codes

einstellungen
{
	hauptregeln
	{
		Beschreibung: "Map puzzle / Find the exit point - Hold F to respawn - Press F on circle to jump to the next lvl - Hold Crough Interact to reset progress - Hint: The checkpoints are always outside the normal accessable area (=out of the real map) - Always-updated on: https://workshop.elohell.gg                                                   v.3.5.5 Created by Kleator"
	}

	Lobby
	{
		Kartenrotation: Nach einem Match
		Max. Anzahl Zuschauer: 12
		Zurück zur Lobby: Nie
	}

	modi
	{
		Ãœbungsgefecht
		{
			verfügbare karten
			{
				Busan
				Hanamura
				Hanamura Winter
				Havanna
				Hollywood
				King's Row
				Oasis
				Paris
			}
		}

		Allgemein
		{
			Wiederbelebungszeit: 0%
			Zufälliger Held nach Tod: Ein
		}
	}

	helden
	{
		Allgemein
		{
			Ana
			{
				Betäubungspfeil: Aus
			}

			Ashe
			{
				Doppelflinte – Abklingzeit: 60%
				Doppelflinte – Rückstoß Gegner: 0%
				Doppelflinte – Rückstoß selbst: 52%
			}

			Baptiste
			{
				Vertikale Sprunggeschwindigkeit: 60%
			}

			Brigitte
			{
				Flegelstoß: Aus
				Schildstoß – Abklingzeit: 80%
				Schildstoß – Rückstoß: 25%
				Ultimeteraufladung – Passiv Inbrunst: 500%
			}

			D.Va
			{
				Booster: Aus
				Booster – Rückstoß: 0%
				Mech anfordern – Rückstoß: 0%
				Mit aufgeladenem Ultimate starten: Ein
				Selbstzerstörung – Rückstoß: 0%
				Ultimeteraufladung Selbstzerstörung: 10%
				Ultimeteraufladung – Passiv Selbstzerstörung: 500%
			}

			Doomfist
			{
				Dampfhammer – Rückstoß: 0%
				Seismischer Schlag: Aus
				Ultimative Fähigkeit Meteorschlag: Aus
				Uppercut – Rückstoß: 0%
				Vertikale Sprunggeschwindigkeit: 150%
			}

			Genji
			{
				Mit aufgeladenem Ultimate starten: Ein
				Sturmschlag – Abklingzeit: 70%
				Unbegrenzte Ultimatedauer: Ein
			}

			Junkrat
			{
				Ferngezündete Mine – Abklingzeit: 30%
				Granatwerfer – Rückstoß: 0%
			}

			Lúcio
			{
				Schallwelle – Rückstoß: 0%
			}

			Mei
			{
				Blizzard – Einfrierrate: 0%
				Eiswall – Abklingzeit: 80%
			}

			Mercy
			{
				Schutzengel: Aus
				Wiederauferstehung: Aus
			}

			Moira
			{
				Phasensprung – Abklingzeit: 30%
			}

			Pharah
			{
				Erschütterungsimpuls: Aus
			}

			Reaper
			{
				Schattenschritt – Abklingzeit: 50%
			}

			Reinhardt
			{
				Ansturm – Abklingzeit: 60%
				Ansturm – Rückstoß: 0%
				Raketenhammer – Rückstoß: 0%
			}

			Soldier: 76
			{
				Helix-Raketen – Abklingzeit: 0%
				Helix-Raketen – Rückstoß: 145%
			}

			Torbjörn
			{
				Geschütz aufstellen: Aus
			}

			Widowmaker
			{
				Spinnenfaden – Abklingzeit: 60%
			}

			Wrecking Ball
			{
				Abrissbirne – Rückstoß: 0%
				Minenfeld – Rückstoß: 0%
			}

			verfügbare helden
			{
				Soldier: 76
			}
		}
	}
}

Variablen
{
	global:
		1: Highscorebutton
		7: TopHighscore
		11: LastWinner
		18: Serverload
		19: DEVHUD
		21: WinGlobalFix
		22: Win
		23: WinMaprotation
		24: WinMaprestartdoublevalfix
		25: Currentmap

	player:
		0: Playerlevel
		1: Timerrunning
		2: TimerHUD
		3: Timer
		15: PreWinPos
		22: Won
		23: Winparticle
}

Subroutinen
{
	1: DEVHudTextServerload
}

regel("----------------------------------------------------------=== Init ===--------------------------------------------------------")
{
	event
	{
		Ongoing - Global;
	}
}

regel("Init")
{
	event
	{
		Ongoing - Global;
	}

	aktionen
	{
		Set Match Time(10000);
		Global.Currentmap = Current Map;
		Global.Win = False;
		Global.WinMaprotation = False;
		Global.TopHighscore[4] = False;
		Create HUD Text(All Players(All Teams), Null, Custom String("Hold Interact to respawn // Hold Crouch   Interact to reset"),
			Custom String("Goal: Find the checkpoint (which is always out of the real map)"), Left, -0.050, Purple, Purple, Blue,
			Visible To and String, Visible Always);
		Create HUD Text(All Players(All Teams), Null, Custom String("Newest code always on Elo-Hell Workshop:"), Custom String(
			"Map puzzle / Map escape (v3.5.5)"), Right, -0.100, Green, Orange, Green, Visible To and String, Visible Always);
		Call Subroutine(DEVHudTextServerload);
	}
}

regel("Init player")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Has Spawned(Event Player) == True;
	}

	aktionen
	{
		Event Player.Playerlevel[0] = 0;
		Event Player.Playerlevel[1] = False;
		Set Damage Received(Event Player, 0);
		Set Status(Event Player, Null, Unkillable, 9999);
		Set Status(Event Player, Null, Phased Out, 9999);
		Create HUD Text(Event Player, String("{0} {1}", Hero Icon String(Hero Of(Event Player)), String("{0}: {1}", String(
			"Aktueller Level"), 1   Event Player.Playerlevel[0])), Null, Null, Top, 1, Green, White, White, Visible To and String,
			Default Visibility);
		Wait(2.200, Ignore Condition);
		Create HUD Text(Filtered Array(Event Player, Event Player.Timerrunning[1] == True), String("{0}:{1}", String("{0}:{1}",
			Event Player.TimerHUD[1], Event Player.TimerHUD[0]), Event Player.Timer), String("<- {0}", String("Zeit")), String("{0}: {1}",
			Custom String("Best Time"), String("{0}:{1}", Global.TopHighscore[0], String("{0}:{1}", Global.TopHighscore[1],
			Global.TopHighscore[2]))), Right, -0.001, White, White, Purple, Visible To and String, Default Visibility);
		Event Player.TimerHUD[2] = Last Text ID;
		Event Player.Won = False;
	}
}

regel("-------------------------------------------------------=== SETTINGS ===-------------------------------------------------------")
{
	event
	{
		Ongoing - Global;
	}
}

deaktiviert regel("ON/OFF - Server Crash Saver (Slowmotion)")
{
	event
	{
		Ongoing - Global;
	}

	bedingungen
	{
		Server Load >= 99;
	}

	aktionen
	{
		Set Slow Motion((100 - (Server Load Average * 1.200 - 100)) / 1);
		Global.Serverload[0] = Server Load;
		Global.Serverload[1] = Server Load Average;
		Global.Serverload[2] = Server Load Peak;
		Wait(0.500, Restart When True);
		Set Slow Motion(100);
	}
}

deaktiviert regel("ON/OFF - Map rotation after Win")
{
	event
	{
		Ongoing - Global;
	}

	aktionen
	{
		Global.WinMaprotation = True;
	}
}

regel("ON/OFF - Punish (freeze) people who kill")
{
	event
	{
		Player Dealt Final Blow;
		All;
		All;
	}

	aktionen
	{
		Set Status(Event Player, Null, Frozen, 15);
	}
}

regel("ON/OFF - Highscore-Speedrun")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Has Spawned(Event Player) == True;
	}

	aktionen
	{
		Wait(0.016, Ignore Condition);
		Global.TopHighscore[4] = True;
		Wait(0.980, Ignore Condition);
		Skip If(Global.Currentmap != Map(Paris), 3);
		Global.TopHighscore[0] = 0;
		Global.TopHighscore[1] = 1;
		Global.TopHighscore[2] = 59.980;
		Skip If(Global.Currentmap != Map(Busan), 3);
		Global.TopHighscore[0] = 0;
		Global.TopHighscore[1] = 1;
		Global.TopHighscore[2] = 30.130;
		Skip If(Global.Currentmap != Map(Oasis), 3);
		Global.TopHighscore[0] = 0;
		Global.TopHighscore[1] = 2;
		Global.TopHighscore[2] = 25.140;
		Skip If(Global.Currentmap != Map(Havanna), 3);
		Global.TopHighscore[0] = 0;
		Global.TopHighscore[1] = 2;
		Global.TopHighscore[2] = 9.440;
		Skip If(Global.Currentmap != Map(Hollywood), 3);
		Global.TopHighscore[0] = 0;
		Global.TopHighscore[1] = 3;
		Global.TopHighscore[2] = 4.930;
		Skip If(Global.Currentmap != Map(King's Row), 3);
		Global.TopHighscore[0] = 0;
		Global.TopHighscore[1] = 2;
		Global.TopHighscore[2] = 9.040;
		Skip If(Global.Currentmap != Map(Hanamura) && Global.Currentmap != Map(Hanamura Winter), 3);
		Global.TopHighscore[0] = 0;
		Global.TopHighscore[1] = 0;
		Global.TopHighscore[2] = 45.980;
	}
}

regel("ON/OFF - DEV - Disable Inspector Recording (Serverload improving)")
{
	event
	{
		Ongoing - Global;
	}

	aktionen
	{
		Disable Inspector Recording;
	}
}

deaktiviert regel("ON/OFF - DEV - HUD: Facing direction")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	aktionen
	{
		Event Player.Z = Facing Direction Of(Event Player);
		Wait(3, Ignore Condition);
		Loop;
	}
}

deaktiviert regel("ON/OFF - DEV - HUD: Player Pos")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Has Spawned(Event Player) == True;
	}

	aktionen
	{
		Create HUD Text(Event Player, Position Of(Event Player), Null, Null, Left, 0, White, White, White, Visible To and String,
			Default Visibility);
		Global.DEVHUD = True;
	}
}

deaktiviert regel("ON/OFF - DEV - HUD: Serverload")
{
	event
	{
		Subroutine;
		DEVHudTextServerload;
	}

	aktionen
	{
		Create HUD Text(All Players(All Teams), String("{0}: {1}", String("Serverauslastung"), Server Load), Null, Null, Left, 1, White,
			White, White, Visible To and String, Default Visibility);
		Create HUD Text(All Players(All Teams), String("{0}: {1}", String("Durchschnittliche Serverauslastung"), Server Load Average),
			Null, Null, Left, 1, White, White, White, Visible To and String, Default Visibility);
	}
}

deaktiviert regel("ON/OFF - DEV - Add Level")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		(Is Button Held(Event Player, Ultimate) && Is Button Held(Event Player, Interact)) == True;
		deaktiviert True == False;
	}

	aktionen
	{
		Event Player.Playerlevel[0]  = 1;
		Teleport(Event Player, Vector(0, -10000, 0));
		Global.TopHighscore[4] = False;
		Clear Status(Event Player, Hacked);
	}
}

deaktiviert regel("ON/OFF - DEV - Teleport")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		(Is Button Held(Event Player, Interact) && Is Button Held(Event Player, Crouch)) == True;
		deaktiviert True == False;
	}

	aktionen
	{
		Teleport(Event Player, Position Of(Event Player)   3 * Facing Direction Of(Event Player));
		Global.TopHighscore[4] = False;
	}
}

deaktiviert regel("ON/OFF - DEV - Phara switch")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		(Is Button Held(Event Player, Primary Fire) && Is Button Held(Event Player, Jump) && Is Button Held(Event Player, Interact))
			== True;
		deaktiviert True == False;
	}

	aktionen
	{
		Start Forcing Player To Be Hero(Event Player, Hero(Pharah));
		Global.TopHighscore[4] = False;
	}
}

regel("-------------------------------------------------------### Mode Setup ###-------------------------------------------------------")
{
	event
	{
		Ongoing - Global;
	}
}

regel("BUTTON: GLOBAL: INIT")
{
	event
	{
		Ongoing - Global;
	}

	bedingungen
	{
		Global.TopHighscore[4] == True;
	}

	aktionen
	{
		Global.Highscorebutton = Empty Array;
		Skip If(Global.Currentmap != Map(Hollywood), 1);
		Global.Highscorebutton = Append To Array(Global.Highscorebutton, Vector(-64.090, 10.784, 87.980));
		Skip If(Global.Currentmap != Map(Busan), 1);
		Global.Highscorebutton = Append To Array(Global.Highscorebutton, Vector(-18.477, 18, -137.805));
		Skip If(Global.Currentmap != Map(Havanna), 1);
		Global.Highscorebutton = Append To Array(Global.Highscorebutton, Vector(-34.723, 8.600, 69.340));
		Skip If(Global.Currentmap != Map(Paris), 1);
		Global.Highscorebutton = Append To Array(Global.Highscorebutton, Vector(19.418, 11.583, -38.434));
		Skip If(Global.Currentmap != Map(Oasis), 1);
		Global.Highscorebutton = Append To Array(Global.Highscorebutton, Vector(-163.052, 22.800, -32.134));
		Skip If(Global.Currentmap != Map(King's Row), 1);
		Global.Highscorebutton = Append To Array(Global.Highscorebutton, Vector(3.239, 0.194, -65.968));
		Skip If(Global.Currentmap != Map(Hanamura) && Global.Currentmap != Map(Hanamura Winter), 1);
		Global.Highscorebutton = Append To Array(Global.Highscorebutton, Vector(27.829, -0.356, -34.120));
		Global.Highscorebutton = Append To Array(Global.Highscorebutton, 0.500);
		Global.Highscorebutton = Append To Array(Global.Highscorebutton, 5);
		Global.Highscorebutton[3] = Global.Highscorebutton[0]   Vector(0, 0.500, 0);
	}
}

regel("BUTTON: player init")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Global.TopHighscore[4] == True;
	}

	aktionen
	{
		Event Player.Timerrunning = Empty Array;
		Event Player.Timerrunning = Append To Array(Event Player.Timerrunning, False);
		Event Player.Timerrunning = Append To Array(Event Player.Timerrunning, False);
	}
}

regel("BUTTON: EFFECTS")
{
	event
	{
		Ongoing - Global;
	}

	bedingungen
	{
		Global.TopHighscore[4] == True;
	}

	aktionen
	{
		Create In-World Text(Filtered Array(All Players(All Teams), !Current Array Element.Timerrunning[1]), String("Aus"),
			Global.Highscorebutton[0], 1, Clip Against Surfaces, Visible To and String, White, Default Visibility);
		Create Effect(Filtered Array(All Players(All Teams), !Current Array Element.Timerrunning[1]), Sphere, Red,
			Global.Highscorebutton[0], Global.Highscorebutton[1], Visible To);
		Create Effect(Filtered Array(Filtered Array(All Players(All Teams), Current Array Element.Timerrunning[0]),
			!Current Array Element.Timerrunning[1]), Good Aura, Red, Global.Highscorebutton[0], Global.Highscorebutton[1], Visible To);
		Create In-World Text(Filtered Array(All Players(All Teams), Current Array Element.Timerrunning[1]), String("Ein"),
			Global.Highscorebutton[0], 1, Clip Against Surfaces, Visible To and String, White, Default Visibility);
		Create Effect(Filtered Array(All Players(All Teams), Current Array Element.Timerrunning[1]), Sphere, Yellow,
			Global.Highscorebutton[0], Global.Highscorebutton[1] / 2, Visible To);
		Create Effect(Filtered Array(Filtered Array(All Players(All Teams), Current Array Element.Timerrunning[0]),
			Current Array Element.Timerrunning[1]), Good Aura, Yellow, Global.Highscorebutton[0], Global.Highscorebutton[1] / 2,
			Visible To);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Zeit"), String("Rennen")), Global.Highscorebutton[3], 1,
			Clip Against Surfaces, Visible To and String, White, Default Visibility);
	}
}

regel("BUTTON: focus")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Event Player.Timerrunning[0] == False;
		(Distance Between(Global.Highscorebutton[0], Eye Position(Event Player)) <= Global.Highscorebutton[2] && Distance Between(
			Global.Highscorebutton[0], Eye Position(Event Player)   Facing Direction Of(Event Player) * Distance Between(Eye Position(
			Event Player), Global.Highscorebutton[0])) <= Global.Highscorebutton[1] && Is In Line of Sight(Eye Position(Event Player),
			Eye Position(Event Player)   Facing Direction Of(Event Player) * Distance Between(Eye Position(Event Player),
			Global.Highscorebutton[0]), Barriers Do Not Block LOS)) == True;
		Event Player.Playerlevel[0] == 0;
	}

	aktionen
	{
		Event Player.Timerrunning[0] = True;
	}
}

regel("BUTTON: UNfocus")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Event Player.Timerrunning[0] == True;
		(Distance Between(Global.Highscorebutton[0], Eye Position(Event Player)) <= Global.Highscorebutton[2] && Distance Between(
			Global.Highscorebutton[0], Eye Position(Event Player)   Facing Direction Of(Event Player) * Distance Between(Eye Position(
			Event Player), Global.Highscorebutton[0])) <= Global.Highscorebutton[1] && Is In Line of Sight(Eye Position(Event Player),
			Eye Position(Event Player)   Facing Direction Of(Event Player) * Distance Between(Eye Position(Event Player),
			Global.Highscorebutton[0]), Barriers Do Not Block LOS)) == False;
	}

	aktionen
	{
		Event Player.Timerrunning[0] = False;
	}
}

regel("BUTTON: INTERACT")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Timerrunning[0] == True;
		Event Player.Playerlevel[0] == 0;
	}

	aktionen
	{
		Play Effect(Event Player, Ring Explosion, White, Global.Highscorebutton[0], 2);
		Play Effect(Event Player, Debuff Impact Sound, White, Event Player, 100);
		Skip If(Event Player.Timerrunning[1], 2);
		Event Player.Timerrunning[1] = True;
		Abort;
		Skip If(!Event Player.Timerrunning[1], 3);
		Event Player.Timerrunning[1] = False;
		Stop Chasing Player Variable(Event Player, Timer);
		Event Player.Timer = 0;
	}
}

regel("Soldier avoid bug: phased out")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Hero Of(Event Player) == Hero(Soldier: 76);
		Is Button Held(Event Player, Secondary Fire) == True;
	}

	aktionen
	{
		Clear Status(Event Player, Phased Out);
		Wait(0.500, Restart When True);
		Set Status(Event Player, Null, Phased Out, 9999);
	}
}

regel("Self kill")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Is Button Held(Event Player, Crouch) == False;
		Global.Win == False;
	}

	aktionen
	{
		Wait(0.500, Ignore Condition);
		Skip If(Is Button Held(Event Player, Interact) == False, 2);
		Small Message(Event Player, String("{0} Sek.", 3));
		Wait(0.800, Ignore Condition);
		Skip If(Is Button Held(Event Player, Interact) == False, 2);
		Small Message(Event Player, String("{0} Sek.", 2));
		Wait(0.800, Ignore Condition);
		Skip If(Is Button Held(Event Player, Interact) == False, 2);
		Small Message(Event Player, String("{0} Sek.", 1));
		Wait(0.800, Ignore Condition);
		Skip If(Is Button Held(Event Player, Interact) == False, 1);
		Teleport(Event Player, Vector(0, -10000, 0));
	}
}

regel("Progress reset")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Is Button Held(Event Player, Crouch) == True;
		Global.Win == False;
	}

	aktionen
	{
		Wait(1, Ignore Condition);
		Skip If((Is Button Held(Event Player, Crouch) && Is Button Held(Event Player, Interact)) == False, 3);
		Play Effect(Event Player, Explosion Sound, White, Event Player, 50);
		Big Message(Event Player, String("{0}!", String("{0}: {1}", String("Neuer Versuch"), 10), String("Neuer Highscore")));
		Wait(1, Ignore Condition);
		Skip If((Is Button Held(Event Player, Crouch) && Is Button Held(Event Player, Interact)) == False, 2);
		Big Message(Event Player, String("{0}!", String("{0}: {1}", String("Neuer Versuch"), 9), String("Neuer Highscore")));
		Wait(1, Ignore Condition);
		Skip If((Is Button Held(Event Player, Crouch) && Is Button Held(Event Player, Interact)) == False, 1);
		Wait(1, Ignore Condition);
		Skip If((Is Button Held(Event Player, Crouch) && Is Button Held(Event Player, Interact)) == False, 2);
		Big Message(Event Player, String("{0}!", String("{0}: {1}", String("Neuer Versuch"), 7), String("Neuer Highscore")));
		Wait(1, Ignore Condition);
		Skip If((Is Button Held(Event Player, Crouch) && Is Button Held(Event Player, Interact)) == False, 2);
		Play Effect(Event Player, Explosion Sound, White, Event Player, 70);
		Wait(1, Ignore Condition);
		Skip If((Is Button Held(Event Player, Crouch) && Is Button Held(Event Player, Interact)) == False, 2);
		Big Message(Event Player, String("{0}!!", String("{0}: {1}", String("Neuer Versuch"), 5), String("Neuer Highscore")));
		Wait(1, Ignore Condition);
		Skip If((Is Button Held(Event Player, Crouch) && Is Button Held(Event Player, Interact)) == False, 1);
		Wait(1, Ignore Condition);
		Skip If((Is Button Held(Event Player, Crouch) && Is Button Held(Event Player, Interact)) == False, 3);
		Big Message(Event Player, String("{0}!!!", String("{0}: {1}", String("Neuer Versuch"), 3), String("Neuer Highscore")));
		Play Effect(Event Player, Explosion Sound, White, Event Player, 80);
		Wait(1, Ignore Condition);
		Skip If((Is Button Held(Event Player, Crouch) && Is Button Held(Event Player, Interact)) == False, 3);
		Big Message(Event Player, String("{0}!!!", String("{0}: {1}", String("Neuer Versuch"), 2), String("Neuer Highscore")));
		Play Effect(Event Player, Explosion Sound, White, Event Player, 100);
		Wait(1, Ignore Condition);
		Skip If((Is Button Held(Event Player, Crouch) && Is Button Held(Event Player, Interact)) == False, 8);
		Big Message(Event Player, String("{0}!!!", String("{0}: {1}", String("Neuer Versuch"), 1), String("Neuer Highscore")));
		Play Effect(Event Player, Explosion Sound, White, Event Player, 120);
		Wait(1, Ignore Condition);
		Play Effect(Event Player, Bad Explosion, Red, Event Player, 30);
		Wait(0.100, Ignore Condition);
		Event Player.Playerlevel[0] = 0;
		Event Player.Timerrunning[1] = False;
		Teleport(Event Player, Vector(0, -10000, 0));
	}
}

regel("Speedrun-Timer")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Event Player.Timerrunning[1] == True;
	}

	aktionen
	{
		Event Player.Timer[0] = 0;
		Event Player.TimerHUD[0] = 0;
		Event Player.TimerHUD[1] = 0;
		Chase Player Variable At Rate(Event Player, Timer, 60, 1, Destination and Rate);
	}
}

regel("Speedrun-Timer count reset")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Event Player.Timerrunning[1] == True;
	}

	aktionen
	{
		Skip If(Event Player.Timer != 60, 2);
		Event Player.TimerHUD[0]  = 1;
		Event Player.Timer = 0;
		Skip If(Event Player.TimerHUD[0] != 60, 2);
		Event Player.TimerHUD[1]  = 1;
		Event Player.TimerHUD[0] = 0;
		Wait(0.250, Ignore Condition);
		Loop If Condition Is True;
	}
}

regel("Map Win-Player")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Global.Win == True;
		Event Player.Won == True;
	}

	aktionen
	{
		Chase Player Variable At Rate(All Players(All Teams), Timer, 60, 0, Destination and Rate);
		Global.WinGlobalFix = True;
		Global.LastWinner = Event Player;
		Wait(0.250, Ignore Condition);
		Set Match Time(17);
		Skip If(Global.TopHighscore[4] == False, 3);
		Destroy HUD Text(Event Player.TimerHUD[2]);
		Skip If(Event Player.Timer == 0, 1);
		Create HUD Text(All Players(All Teams), String("{0}:{1}", String("{0}:{1}", Event Player.TimerHUD[1], Event Player.TimerHUD[0]),
			Event Player.Timer), String("<- {0}", String("Zeit")), String("{0}: {1}", String("Highscore"), String("{0}:{1}",
			Global.TopHighscore[0], String("{0}:{1}", Global.TopHighscore[1], Global.TopHighscore[2]))), Right, -0.001, Red, Yellow,
			Purple, Visible To and String, Default Visibility);
		Create HUD Text(All Players(All Teams), String("{0}: {1}", String("Gewonnen"), Event Player), Null, Null, Top, 998, Purple, White,
			White, Visible To and String, Default Visibility);
		Big Message(All Players(All Teams), String("{0}: {1}", String("Spiele gewonnen"), Event Player));
		Wait(1, Ignore Condition);
		Destroy Effect(Event Player.Winparticle);
		Wait(0.100, Ignore Condition);
		Create Effect(All Players(All Teams), Sparkles, Purple, Position Of(Event Player), 1, Visible To Position and Radius);
		Event Player.Winparticle = Last Created Entity;
		Wait(15, Ignore Condition);
		Skip If(Global.WinMaprotation == True, 7);
		Skip If(Event Player.Won == False, 6);
		Event Player.Playerlevel = 0;
		Event Player.Timerrunning[1] = False;
		Event Player.Timer = 0;
		Teleport(Event Player, Vector(0, -10000, 0));
		Wait(5, Ignore Condition);
		Event Player.Won = False;
	}
}

regel("Map Win-Global")
{
	event
	{
		Ongoing - Global;
	}

	bedingungen
	{
		Global.WinGlobalFix == True;
		Global.Win == True;
		Global.WinMaprotation != True;
	}

	aktionen
	{
		Wait(15.750, Ignore Condition);
		Set Match Time(9999);
		Global.WinMaprestartdoublevalfix = True;
		Wait(0.100, Ignore Condition);
		Global.Win = False;
		Play Effect(All Players(All Teams), Ring Explosion Sound, White, All Players(All Teams), 80);
		Global.WinGlobalFix = False;
	}
}

regel("Map teleport back   HUD Recover")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Global.Win == False;
		Global.WinMaprotation == False;
		Global.WinMaprestartdoublevalfix == True;
	}

	aktionen
	{
		Skip If(Event Player.Won == True, 2);
		Teleport(Event Player, Event Player.PreWinPos);
		Chase Player Variable At Rate(Event Player, Timer, 60, 1, Destination and Rate);
		Wait(0.250, Ignore Condition);
		Destroy All HUD Text;
		Wait(0.050, Ignore Condition);
		Create HUD Text(Event Player, String("{0} {1}", Hero Icon String(Hero Of(Event Player)), String("{0}: {1}", String(
			"Aktueller Level"), 1   Event Player.Playerlevel[0])), Custom String("Last winner:"), Global.LastWinner, Top, 1, Green, Red,
			Red, Visible To and String, Default Visibility);
		Create HUD Text(Filtered Array(Event Player, Event Player.Timerrunning[1] == True), String("{0}:{1}", String("{0}:{1}",
			Event Player.TimerHUD[1], Event Player.TimerHUD[0]), Event Player.Timer), String("<- {0}", String("Zeit")), String("{0}: {1}",
			Custom String("Best Time"), String("{0}:{1}", Global.TopHighscore[0], String("{0}:{1}", Global.TopHighscore[1],
			Global.TopHighscore[2]))), Right, -0.001, White, White, Purple, Visible To and String, Default Visibility);
		Global.WinMaprestartdoublevalfix = False;
	}
}

regel("Map teleport HUD Recover")
{
	event
	{
		Ongoing - Global;
	}

	bedingungen
	{
		Global.Win == False;
		Global.WinMaprotation == False;
		Global.WinMaprestartdoublevalfix == True;
	}

	aktionen
	{
		Wait(0.300, Ignore Condition);
		Create HUD Text(All Players(All Teams), Null, Custom String("Hold Interact to respawn // Hold Crouch   Interact to reset"),
			Custom String("Goal: Find the checkpoint (which is always out of the real map)"), Left, -0.050, Purple, Purple, Blue,
			Visible To and String, Visible Always);
		Create HUD Text(All Players(All Teams), Null, Custom String("Newest code always on Elo-Hell Workshop:"), Custom String(
			"Map puzzle / Map escape (v3.5.5)"), Right, -0.100, Green, Orange, Green, Visible To and String, Visible Always);
		Call Subroutine(DEVHudTextServerload);
	}
}

regel("-------------------------------------------------------===[ Paris ]===-------------------------------------------------------")
{
	event
	{
		Ongoing - Global;
	}
}

regel("Init player")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Global.Currentmap == Map(Paris);
		Has Spawned(Event Player) == True;
	}

	aktionen
	{
		Start Forcing Player To Be Hero(Event Player, Hero(Soldier: 76));
		Teleport(Event Player, Vector(33.106, 11.381, -25.405));
		Wait(2, Ignore Condition);
		Set Facing(Event Player, Direction Towards(Event Player, Vector(19.408, 10.079, -38.424)), To World);
	}
}

regel("Respawn Death")
{
	event
	{
		Player Died;
		All;
		All;
	}

	bedingungen
	{
		Global.Win == False;
		Global.Currentmap == Map(Paris);
	}

	aktionen
	{
		Respawn(Event Player);
		Wait(0.016, Ignore Condition);
		Skip If(Event Player.Playerlevel[0] != 0, 3);
		Start Forcing Player To Be Hero(Event Player, Hero(Soldier: 76));
		Teleport(Event Player, Vector(33.106, 11.381, -25.405));
		Set Facing(Event Player, Direction Towards(Event Player, Vector(19.408, 10.079, -38.424)), To World);
		Skip If(Event Player.Playerlevel[0] != 1, 3);
		Start Forcing Player To Be Hero(Event Player, Hero(Ashe));
		Teleport(Event Player, Vector(-3.783, 12.843, -22.029));
		Set Facing(Event Player, Vector(-0.910, 0, 0.420), To World);
		Skip If(Event Player.Playerlevel[0] != 2, 3);
		Start Forcing Player To Be Hero(Event Player, Hero(Pharah));
		Teleport(Event Player, Vector(-36.472, 14.366, 47.005));
		Set Facing(Event Player, Vector(0.700, 0, -0.720), To World);
		Skip If(Event Player.Playerlevel[0] != 3, 3);
		Start Forcing Player To Be Hero(Event Player, Hero(Hanzo));
		Teleport(Event Player, Vector(-35.138, 45.203, 44.705));
		Set Facing(Event Player, Vector(0.300, 0, -0.950), To World);
		Skip If(Event Player.Playerlevel[0] != 4, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Reaper));
		Teleport(Event Player, Vector(30.115, 13.928, -64.258));
		Skip If(Event Player.Playerlevel[0] != 5, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Genji));
		Teleport(Event Player, Vector(3.516, 17.102, -53.139));
		Skip If(Event Player.Playerlevel[0] != 6, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Widowmaker));
		Teleport(Event Player, Vector(-9.019, 21.098, -58.354));
		Skip If(Event Player.Playerlevel[0] != 7, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Pharah));
		Teleport(Event Player, Vector(-63.168, 13.307, -27.835));
		Skip If(Event Player.Playerlevel[0] != 8, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Sombra));
		Teleport(Event Player, Vector(-91.295, 24.599, -113.311));
		Set Match Time(10000);
	}
}

regel("Setup (Circles / text / barrier bubble)")
{
	event
	{
		Ongoing - Global;
	}

	bedingungen
	{
		Global.Currentmap == Map(Paris);
	}

	aktionen
	{
		Create Effect(All Players(All Teams), Ring, Yellow, Vector(9.738, 12.849, -30.461), 1.500, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 2), Vector(9.738, 12.849, -30.461), 1,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Ring, Yellow, Vector(-30.610, 11.338, 28.828), 0.200, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 3), Vector(-30.610, 11.338, 28.828), 1,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Ring, Yellow, Vector(-49.969, 13.339, 28.572), 0.200, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 4), Vector(-49.969, 13.339, 28.572), 1,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Ring, Green, Vector(12.498, 11.376, -74.610), 0.500, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 6), Vector(12.498, 11.376, -74.610), 1,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Ring, Green, Vector(-16.233, 41.264, -96.604), 0.500, Visible To Position and Radius);
		Create Effect(All Players(All Teams), Ring, Green, Vector(-2.160, 7.630, -48.380), 0.800, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 7), Vector(-2.160, 7.630, -48.380), 1,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Ring, Green, Vector(-71.930, 14.646, -100.333), 1, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 8), Vector(-71.930, 14.646, -100.333), 1,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Ring, Green, Vector(-63.449, 21.088, 3.301), 1, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 9), Vector(-63.449, 21.089, 3.301), 1,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Ring, Blue, Vector(-112.112, 10.041, -47.387), 0.800, Visible To Position and Radius);
		Skip If(Global.WinMaprotation != True, 2);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), String("Beenden")), Vector(-112.112, 10, -47.387),
			1, Clip Against Surfaces, Visible To Position and String, Red, Default Visibility);
		Abort;
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), String("Beenden")), Vector(-112.112, 10, -47.387),
			1, Clip Against Surfaces, Visible To Position and String, Blue, Default Visibility);
		Create In-World Text(All Players(All Teams), Custom String("Hold INTERACT to respawn"), Vector(-37.391, 13, -20.442), 1.700,
			Clip Against Surfaces, Visible To Position and String, Red, Default Visibility);
	}
}

regel("Bubble impulse Paris")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Global.Currentmap == Map(Paris);
		Event Player.Playerlevel[0] == 5;
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(-2.690, -2.500, -47.620)) > 10.100, 2);
		Start Accelerating(Event Player, Direction Towards(Vector(-2.690, -2.500, -47.620), Event Player), 1000, 4.200, To World, None);
		Wait(0.016, Ignore Condition);
		Skip If(Distance Between(Event Player, Vector(-2.690, -2.500, -47.620)) <= 10, 1);
		Stop Accelerating(Event Player);
		Wait(0.020, Ignore Condition);
		Loop;
	}
}

regel("Lvl1 = Soldier")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 0;
		Global.Currentmap == Map(Paris);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(9.738, 11.599, -30.461)) > 1.500, 8);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(9.738, 11.599, -30.461), 4);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 1;
		Start Forcing Player To Be Hero(Event Player, Hero(Ashe));
		Teleport(Event Player, Vector(-3.783, 12.843, -22.029));
		Set Facing(Event Player, Vector(-0.910, 0, 0.420), To World);
	}
}

regel("Lvl2 - Teleport")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Distance Between(Event Player, Vector(-14.303, 11.316, -8.622)) < 1;
		Event Player.Playerlevel[0] == 1;
		Global.Currentmap == Map(Paris);
	}

	aktionen
	{
		Teleport(Event Player, Vector(-13.450, 10.964, -7.805));
	}
}

regel("Lvl2 = Ash")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 1;
		Global.Currentmap == Map(Paris);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(-30.910, 10.089, 28.828)) > 1.500, 8);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(-30.910, 10.338, 28.828), 4);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 2;
		Start Forcing Player To Be Hero(Event Player, Hero(Pharah));
		Teleport(Event Player, Vector(-36.472, 14.366, 47.005));
		Set Facing(Event Player, Vector(0.700, 0, -0.720), To World);
	}
}

regel("Lvl3 = Pharah")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 2;
		Global.Currentmap == Map(Paris);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(-49.969, 12.088, 28.572)) > 1, 8);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(-49.969, 12.088, 28.572), 4);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 3;
		Start Forcing Player To Be Hero(Event Player, Hero(Hanzo));
		Teleport(Event Player, Vector(-35.138, 45.203, 44.705));
		Set Facing(Event Player, Vector(0.300, 0, -0.950), To World);
	}
}

regel("Lvl4 = Hanzo")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 3;
		Global.Currentmap == Map(Paris);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(-16.233, 40.014, -96.604)) > 1, 7);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(-16.233, 40.014, -96.604), 4);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 4;
		Start Forcing Player To Be Hero(Event Player, Hero(Reaper));
		Teleport(Event Player, Vector(30.115, 13.928, -64.258));
	}
}

regel("Lvl5 = Reaper")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 4;
		Global.Currentmap == Map(Paris);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(12.498, 10.376, -74.610)) > 1, 7);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(12.498, 10.126, -74.610), 4);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 5;
		Start Forcing Player To Be Hero(Event Player, Hero(Genji));
		Teleport(Event Player, Vector(3.516, 17.102, -53.139));
	}
}

regel("Lvl6 = Genji")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 5;
		Global.Currentmap == Map(Paris);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(-2.160, 7.630, -48.380)) > 1.500, 7);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(-2.160, 6.380, -48.380), 4);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 6;
		Start Forcing Player To Be Hero(Event Player, Hero(Widowmaker));
		Teleport(Event Player, Vector(-9.019, 21.098, -58.354));
	}
}

regel("Lvl7 - Teleport")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Distance Between(Event Player, Vector(-21.138, 10.104, -62.225)) < 0.700;
		Event Player.Playerlevel[0] == 6;
		Global.Currentmap == Map(Paris);
	}

	aktionen
	{
		Teleport(Event Player, Vector(-22.102, 11.354, -63.185));
	}
}

regel("Lvl8 = Widow")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 6;
		Global.Currentmap == Map(Paris);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(-71.930, 13.396, -100.333)) > 1.500, 7);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(-71.930, 13.396, -100.333), 4);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 7;
		Start Forcing Player To Be Hero(Event Player, Hero(Pharah));
		Teleport(Event Player, Vector(-63.181, 13.307, -27.848));
	}
}

regel("Lvl9 = Pharah")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 7;
		Global.Currentmap == Map(Paris);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(-63.449, 19.839, 3.301)) > 1.500, 7);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(-63.449, 19.839, 3.301), 4);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 8;
		Start Forcing Player To Be Hero(Event Player, Hero(Sombra));
		Teleport(Event Player, Vector(-91.295, 24.599, -113.311));
	}
}

regel("Lvl10 = Sombra")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] >= 8;
		Global.Currentmap == Map(Paris);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(-112.112, 9.791, -47.387)) > 0.800, 12);
		Chase Player Variable At Rate(Event Player, Timer, 60, 0, Destination and Rate);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Play Effect(All Players(All Teams), Ring Explosion, Blue, Vector(-112.112, 9.791, -47.387), 4);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 9;
		Start Forcing Player To Be Hero(Event Player, Hero(Symmetra));
		Wait(0.100, Ignore Condition);
		Teleport(Event Player, Vector(-57.725, 13.339, -27.813));
		Event Player.Won = True;
		Global.Win = True;
	}
}

regel("Map restart")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Global.Win == True;
		Global.Currentmap == Map(Paris);
	}

	aktionen
	{
		Event Player.PreWinPos = Position Of(Event Player);
		Skip If(Event Player.Won == True, 1);
		Teleport(Event Player, Vector(-53.695, 13.339, -29.742));
	}
}

regel("----------------------------------------------------===[ Busan ]===----------------------------------------------------")
{
	event
	{
		Ongoing - Global;
	}
}

regel("Init player")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Has Spawned(Event Player) == True;
		Global.Currentmap == Map(Busan);
	}

	aktionen
	{
		Start Forcing Player To Be Hero(Event Player, Hero(Reaper));
		Teleport(Event Player, Vector(-15.605, 17.348, -136.857));
	}
}

regel("Respawn Death")
{
	event
	{
		Player Died;
		All;
		All;
	}

	bedingungen
	{
		Global.Win == False;
		Global.Currentmap == Map(Busan);
	}

	aktionen
	{
		Set Match Time(10000);
		Respawn(Event Player);
		Wait(0.016, Ignore Condition);
		Skip If(Event Player.Playerlevel[0] != 2, 2);
		Teleport(Event Player, Vector(36.698, 7.375, -97.828));
		Start Forcing Player To Be Hero(Event Player, Hero(Soldier: 76));
		Skip If(Event Player.Playerlevel[0] != 3, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Genji));
		Teleport(Event Player, Vector(7.572, 9.072, -81.552));
		Skip If(Event Player.Playerlevel[0] != 4, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Junkrat));
		Teleport(Event Player, Vector(9.615, 28.600, -96.453));
		Skip If(Event Player.Playerlevel[0] != 1, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Ana));
		Teleport(Event Player, Vector(31.142, 20, -120.899));
		Skip If(Event Player.Playerlevel[0] != 0, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Reaper));
		Teleport(Event Player, Vector(-15.605, 17.348, -136.857));
		Skip If(Event Player.Playerlevel[0] != 5, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Hanzo));
		Teleport(Event Player, Vector(7.318, 44.990, -185.474));
		Skip If(Event Player.Playerlevel[0] != 6, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Wrecking Ball));
		Teleport(Event Player, Vector(114.159, 41.908, -188.284));
		Skip If(Event Player.Playerlevel[0] != 7, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Sombra));
		Teleport(Event Player, Vector(178.829, 20.619, 220.148));
	}
}

regel("Setup (Circles / text / barrier bubble)")
{
	event
	{
		Ongoing - Global;
	}

	bedingungen
	{
		Global.Currentmap == Map(Busan);
	}

	aktionen
	{
		Create Effect(All Players(All Teams), Ring, Yellow, Vector(26.853, 9.549, -84.039), 0.600, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 4), Vector(26.852, 9.547, -84.039), 1,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Ring, Yellow, Vector(3.275, 17.348, -95.832), 0.500, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 5), Vector(3.152, 17.198, -95.854), 1,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Ring, Yellow, Vector(-22.400, 35.670, -95.510), 1, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 6), Vector(-22.400, 35.670, -95.510), 1,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Ring, Yellow, Vector(-47.196, 23.400, -127.941), 0.500, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 2), Vector(-47.196, 23.400, -127.941), 1,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Ring, Yellow, Vector(35.100, 11.348, -132.936), 0.400, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 3), Vector(35.100, 11.348, -132.936), 1,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Ring, Yellow, Vector(1.550, 17.348, -176.169), 0.600, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 7), Vector(1.550, 17.348, -176.169), 1,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Ring, Yellow, Vector(92.806, 17.110, -165.104), 0.400, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 8), Vector(92.806, 17.110, -165.104), 1,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Ring, Blue, Vector(195.313, 12.474, 269.956), 0.800, Visible To Position and Radius);
		Skip If(Global.WinMaprotation != True, 2);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), String("Beenden")), Vector(195.313, 12, 269.956),
			1, Clip Against Surfaces, Visible To Position and String, Red, Default Visibility);
		Abort;
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), String("Beenden")), Vector(195.313, 12, 269.956),
			1, Clip Against Surfaces, Visible To Position and String, Blue, Default Visibility);
	}
}

regel("Kill bubble")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Global.Currentmap == Map(Busan);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(11.330, -55, -97.824)) > 55, 1);
		Teleport(Event Player, Vector(0, -10000, 0));
		Skip If(Distance Between(Event Player, Vector(27.878, -45, -126.915)) > 55, 1);
		Teleport(Event Player, Vector(0, -10000, 0));
		Skip If(Distance Between(Event Player, Vector(1.995, -45, -180.095)) > 55, 1);
		Teleport(Event Player, Vector(0, -10000, 0));
		Skip If(Distance Between(Event Player, Vector(91.446, -45, -165.440)) > 55, 1);
		Teleport(Event Player, Vector(0, -10000, 0));
		Skip If(Distance Between(Event Player, Vector(141.277, -45, -190.043)) > 55, 1);
		Teleport(Event Player, Vector(0, -10000, 0));
		Skip If(Distance Between(Event Player, Vector(-48.421, -45, -169.660)) > 55, 1);
		Teleport(Event Player, Vector(0, -10000, 0));
		Skip If(Distance Between(Event Player, Vector(-40.235, -45, -126.299)) > 55, 1);
		Teleport(Event Player, Vector(0, -10000, 0));
		Skip If(Distance Between(Event Player, Vector(42.500, 7.549, -97.404)) > 5, 1);
		Teleport(Event Player, Vector(0, -10000, 0));
		Wait(0.300, Ignore Condition);
		Loop;
	}
}

regel("Bubble impulse")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Global.Currentmap == Map(Busan);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(42, 7.549, -97.404)) > 5.600, 2);
		Start Accelerating(Event Player, Direction Towards(Vector(42, 7.549, -97.404), Event Player), 300, 100, To World, None);
		Wait(0.016, Ignore Condition);
		Skip If(Distance Between(Event Player, Vector(42, 7.549, -97.404)) <= 5, 1);
		Stop Accelerating(Event Player);
		Skip If(Distance Between(Event Player, Vector(43, 12, -97.404)) > 5.100, 2);
		Start Accelerating(Event Player, Direction Towards(Vector(43, 12, -97.404), Event Player), 300, 100, To World, None);
		Wait(0.016, Ignore Condition);
		Skip If(Distance Between(Event Player, Vector(43, 12, -97.404)) <= 5.500, 1);
		Stop Accelerating(Event Player);
		Wait(0.250, Ignore Condition);
		Loop;
	}
}

regel("Lvl1 = Reaper")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 0;
		Global.Currentmap == Map(Busan);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(-47.196, 22.150, -127.941)) > 0.800, 7);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(-47.196, 22.150, -127.941), 3);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 1;
		Start Forcing Player To Be Hero(Event Player, Hero(Ana));
		Teleport(Event Player, Vector(31.142, 20.352, -120.899));
	}
}

regel("Lvl2 = Ana")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 1;
		Global.Currentmap == Map(Busan);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(35.100, 10.098, -132.936)) > 0.500, 7);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(35.100, 10.098, -132.936), 3);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 2;
		Start Forcing Player To Be Hero(Event Player, Hero(Soldier: 76));
		Teleport(Event Player, Vector(36.698, 7.375, -97.828));
	}
}

regel("Lvl3 = Soldier")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 2;
		Global.Currentmap == Map(Busan);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(26.853, 8.299, -84.039)) > 0.500, 7);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(26.852, 8.299, -84.039), 4);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 3;
		Start Forcing Player To Be Hero(Event Player, Hero(Genji));
		Teleport(Event Player, Vector(7.572, 9.072, -81.552));
	}
}

regel("Lvl3 - Teleport 1")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Distance Between(Event Player, Vector(14.082, 14.785, -86.474)) < 0.300;
		Event Player.Playerlevel[0] == 3;
		Global.Currentmap == Map(Busan);
	}

	aktionen
	{
		Teleport(Event Player, Vector(14.678, 11, -97.733));
	}
}

regel("Lvl3 - Teleport 2")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Distance Between(Event Player, Vector(9.594, 11.349, -97.493)) < 0.300;
		Event Player.Playerlevel[0] == 3;
		Global.Currentmap == Map(Busan);
	}

	aktionen
	{
		Teleport(Event Player, Vector(8.813, 12.749, -97.493));
	}
}

regel("Lvl4 = Genji")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 3;
		Global.Currentmap == Map(Busan);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(3.275, 16.098, -95.832)) > 1, 7);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(3.275, 16.098, -95.832), 4);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 4;
		Start Forcing Player To Be Hero(Event Player, Hero(Junkrat));
		Teleport(Event Player, Vector(9.615, 28.600, -96.453));
	}
}

regel("Lvl4 - Teleport 1")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Distance Between(Event Player, Vector(12.641, 30.093, -96.148)) < 0.500;
		Event Player.Playerlevel[0] == 4;
		Global.Currentmap == Map(Busan);
	}

	aktionen
	{
		Teleport(Event Player, Vector(12.654, 31.433, -95.047));
	}
}

regel("Lvl4 - Teleport 2")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Distance Between(Event Player, Vector(15.010, 24.900, -88.100)) < 1;
		Event Player.Playerlevel[0] == 4;
		Global.Currentmap == Map(Busan);
	}

	aktionen
	{
		Teleport(Event Player, Vector(10.210, 25.818, -88.073));
	}
}

regel("Lvl4 - Teleport 3")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Distance Between(Event Player, Vector(16.320, 23.800, -86.040)) < 0.500;
		Event Player.Playerlevel[0] == 4;
		Global.Currentmap == Map(Busan);
	}

	aktionen
	{
		Teleport(Event Player, Vector(15.592, 25.481, -83.514));
	}
}

regel("Lvl4 - Teleport 4")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Distance Between(Event Player, Vector(14.699, 24.952, -82.182)) < 0.400;
		Event Player.Playerlevel[0] == 4;
		Global.Currentmap == Map(Busan);
	}

	aktionen
	{
		Teleport(Event Player, Vector(12.990, 26.198, -82.552));
	}
}

regel("Lvl5 = Junkrat")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Distance Between(Event Player, Vector(-22.400, 34.420, -95.510)) < 2;
		Event Player.Playerlevel[0] == 4;
		Global.Currentmap == Map(Busan);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(-22.400, 34.420, -95.510)) > 2, 7);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(-22.400, 34.420, -95.510), 4);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 5;
		Start Forcing Player To Be Hero(Event Player, Hero(Hanzo));
		Teleport(Event Player, Vector(7.318, 44.990, -185.474));
	}
}

regel("Lvl6 = Hanzo")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 5;
		Global.Currentmap == Map(Busan);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(1.550, 16.098, -176.169)) > 1, 7);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(1.550, 16.098, -176.169), 3);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 6;
		Start Forcing Player To Be Hero(Event Player, Hero(Wrecking Ball));
		Teleport(Event Player, Vector(114.159, 41.908, -188.284));
	}
}

regel("Lvl7 = Wrecking Ball")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 6;
		Global.Currentmap == Map(Busan);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(92.806, 15.860, -165.104)) > 1, 7);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(92.806, 15.860, -165.104), 3);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 7;
		Start Forcing Player To Be Hero(Event Player, Hero(Sombra));
		Teleport(Event Player, Vector(178.829, 20.620, 220.148));
	}
}

regel("Lvl8 = Sombra")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] >= 7;
		Global.Currentmap == Map(Busan);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(195.313, 11.224, 269.956)) > 0.800, 12);
		Chase Player Variable At Rate(Event Player, Timer, 60, 0, Destination and Rate);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Play Effect(All Players(All Teams), Ring Explosion, Blue, Vector(195.313, 11.224, 269.956), 4);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 8;
		Start Forcing Player To Be Hero(Event Player, Hero(Symmetra));
		Wait(0.100, Ignore Condition);
		Teleport(Event Player, Vector(161.720, 16.446, 249.536));
		Event Player.Won = True;
		Global.Win = True;
	}
}

regel("Map restart")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Global.Win == True;
		Global.Currentmap == Map(Busan);
	}

	aktionen
	{
		Event Player.PreWinPos = Position Of(Event Player);
		Skip If(Event Player.Won == True, 1);
		Teleport(Event Player, Vector(163.576, 11.449, 254.271));
	}
}

regel("----------------------------------------------------===[ Oasis ]===----------------------------------------------------")
{
	event
	{
		Ongoing - Global;
	}
}

regel("Init player")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Has Spawned(Event Player) == True;
		Global.Currentmap == Map(Oasis);
	}

	aktionen
	{
		Start Forcing Player To Be Hero(Event Player, Hero(Baptiste));
		Teleport(Event Player, Vector(-165.096, 23.101, -28.632));
	}
}

regel("Respawn Death")
{
	event
	{
		Player Died;
		All;
		All;
	}

	bedingungen
	{
		Global.Win == False;
		Global.Currentmap == Map(Oasis);
	}

	aktionen
	{
		Set Match Time(10000);
		Respawn(Event Player);
		Wait(0.016, Ignore Condition);
		Skip If(Event Player.Playerlevel[0] != 0, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Baptiste));
		Teleport(Event Player, Vector(-165.096, 23.101, -28.632));
		Skip If(Event Player.Playerlevel[0] != 1, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Hanzo));
		Teleport(Event Player, Vector(165.659, 62.542, 288.602));
		Skip If(Event Player.Playerlevel[0] != 2, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Genji));
		Teleport(Event Player, Vector(59.444, 2.348, 327.050));
		Skip If(Event Player.Playerlevel[0] != 3, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Doomfist));
		Teleport(Event Player, Vector(148.175, 3.349, 287.812));
		Skip If(Event Player.Playerlevel[0] != 4, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Ana));
		Teleport(Event Player, Vector(197.066, 25.682, -185.987));
		Skip If(Event Player.Playerlevel[0] != 5, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Pharah));
		Teleport(Event Player, Vector(130.243, 6.848, -234.036));
		Skip If(Event Player.Playerlevel[0] != 6, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Lúcio));
		Teleport(Event Player, Vector(76.061, 25.682, -306.829));
		Skip If(Event Player.Playerlevel[0] != 7, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Sombra));
		Teleport(Event Player, Vector(222.789, 10.571, 191.276));
	}
}

regel("Setup (Circles / text / barrier bubble)")
{
	event
	{
		Ongoing - Global;
	}

	bedingungen
	{
		Global.Currentmap == Map(Oasis);
	}

	aktionen
	{
		Create Effect(All Players(All Teams), Ring, Yellow, Vector(-170.705, 17.351, 20.487), 0.500, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 2), Vector(-170.705, 16.351, 20.487), 1,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Ring, Yellow, Vector(235.528, 32.203, 192.779), 0.500, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 3), Vector(235.528, 32.204, 192.779), 1,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Ring, Yellow, Vector(68.430, 31.848, 321.471), 0.500, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 4), Vector(68.430, 31.848, 321.471), 1,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Ring, Yellow, Vector(125.805, 2.571, 316.856), 0.600, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 5), Vector(125.805, 1.521, 316.856), 0.700,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Ring, Yellow, Vector(224.932, 16.767, -189.910), 1, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 6), Vector(224.932, 16.767, -189.910), 1,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Ring, Yellow, Vector(127.105, 3.848, -197.997), 0.500, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 7), Vector(127.105, 3.848, -197.997), 1,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Ring, Yellow, Vector(90.673, 10.272, -288.766), 0.700, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 8), Vector(90.673, 10.272, -288.766), 1,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Ring, Blue, Vector(185.068, 3.299, 253.885), 0.800, Visible To Position and Radius);
		Skip If(Global.WinMaprotation != True, 2);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), String("Beenden")), Vector(185.068, 3.299,
			253.885), 1, Clip Against Surfaces, Visible To Position and String, Red, Default Visibility);
		Abort;
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), String("Beenden")), Vector(185.068, 3.299,
			253.885), 1, Clip Against Surfaces, Visible To Position and String, Blue, Default Visibility);
		Create In-World Text(All Players(All Teams), Custom String("Hold INTERACT to respawn"), Vector(-187.921, 18.500, -0.106), 1.700,
			Clip Against Surfaces, Visible To Position and String, Red, Default Visibility);
	}
}

regel("Bubble impulse")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Global.Currentmap == Map(Oasis);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(145.564, 2.500, 297.516)) > 5, 2);
		Start Accelerating(Event Player, Direction Towards(Vector(145.564, 2.500, 297.516), Event Player), 1000, 6, To World, None);
		Wait(0.016, Ignore Condition);
		Skip If(Distance Between(Event Player, Vector(145.564, 2.500, 297.516)) <= 4.900, 1);
		Stop Accelerating(Event Player);
		Skip If(Distance Between(Event Player, Vector(240.170, 10.090, 191.250)) > 7.800, 2);
		Start Accelerating(Event Player, Direction Towards(Vector(240.170, 10.090, 191.250), Event Player), 1000, 4, To World, None);
		Wait(0.016, Ignore Condition);
		Skip If(Distance Between(Event Player, Vector(240.170, 10.090, 191.250)) <= 7.700, 1);
		Stop Accelerating(Event Player);
		Wait(0.250, Ignore Condition);
		Loop;
	}
}

regel("Kill bubble")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Global.Currentmap == Map(Oasis);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(204.030, 23.958, 225.003)) > 5, 1);
		Teleport(Event Player, Vector(0, -10000, 0));
		Skip If(Distance Between(Event Player, Vector(221.766, 25, 200.751)) > 7.500, 1);
		Teleport(Event Player, Vector(0, -10000, 0));
		Skip If(Distance Between(Event Player, Vector(224.580, 25, 190.430)) > 9.500, 1);
		Teleport(Event Player, Vector(0, -10000, 0));
		Skip If(Distance Between(Event Player, Vector(172.395, 33, 276.980)) > 25, 1);
		Teleport(Event Player, Vector(0, -10000, 0));
		Skip If(Distance Between(Event Player, Vector(225.194, 10.521, 209.775)) > 2, 1);
		Teleport(Event Player, Vector(0, -10000, 0));
		Skip If(Distance Between(Event Player, Vector(221.813, -5, 211.964)) > 8, 1);
		Teleport(Event Player, Vector(0, -10000, 0));
		Skip If(Distance Between(Event Player, Vector(233.870, 3.740, 189.200)) > 5, 1);
		Teleport(Event Player, Vector(0, -10000, 0));
		Wait(0.250, Ignore Condition);
		Loop If Condition Is True;
	}
}

regel("Lvl1 = Baptiste")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 0;
		Global.Currentmap == Map(Oasis);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(-170.705, 16.101, 20.487)) > 0.500, 7);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(-170.705, 16.101, 20.487), 3);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 1;
		Start Forcing Player To Be Hero(Event Player, Hero(Hanzo));
		Teleport(Event Player, Vector(165.659, 62.542, 288.602));
	}
}

regel("Lvl2 = Hanzo")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 1;
		Global.Currentmap == Map(Oasis);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(235.528, 30.954, 192.779)) > 1, 8);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(235.528, 30.954, 192.779), 3);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 2;
		Start Forcing Player To Be Hero(Event Player, Hero(Genji));
		Set Ability 1 Enabled(Event Player, False);
		Teleport(Event Player, Vector(59.444, 2.348, 327.050));
	}
}

regel("Lvl3 = Genji")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 2;
		Global.Currentmap == Map(Oasis);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(68.430, 30.598, 321.471)) > 0.500, 9);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(68.430, 30.598, 321.471), 3);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 3;
		Start Forcing Player To Be Hero(Event Player, Hero(Doomfist));
		Set Ability 1 Enabled(Event Player, True);
		Set Secondary Fire Enabled(Event Player, False);
		Teleport(Event Player, Vector(148.175, 3.349, 287.812));
	}
}

regel("Lvl3 - Teleport")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Distance Between(Event Player, Vector(158.447, 11.235, 302.011)) < 0.500;
		Event Player.Playerlevel[0] == 3;
		Global.Currentmap == Map(Oasis);
	}

	aktionen
	{
		Teleport(Event Player, Vector(157.667, 12.330, 303.656));
	}
}

regel("Lvl4 = Doomfist")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 3;
		Global.Currentmap == Map(Oasis);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(125.805, 1.321, 316.856)) > 0.600, 9);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(125.805, 1.321, 316.856), 3);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 4;
		Start Forcing Player To Be Hero(Event Player, Hero(Ana));
		Set Ability 1 Enabled(Event Player, True);
		Set Secondary Fire Enabled(Event Player, False);
		Teleport(Event Player, Vector(197.066, 25.682, -185.987));
	}
}

regel("Lvl5 = Ana")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 4;
		Global.Currentmap == Map(Oasis);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(224.932, 15.517, -189.910)) > 1, 7);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(224.932, 15.517, -189.910), 3);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 5;
		Start Forcing Player To Be Hero(Event Player, Hero(Pharah));
		Teleport(Event Player, Vector(130.243, 6.848, -234.036));
	}
}

regel("Lvl6 = pharah")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 5;
		Global.Currentmap == Map(Oasis);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(127.105, 2.598, -197.997)) > 0.500, 7);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(127.105, 2.598, -197.997), 3);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 6;
		Start Forcing Player To Be Hero(Event Player, Hero(Lúcio));
		Teleport(Event Player, Vector(76.061, 25.682, -306.829));
	}
}

regel("Lvl7 = lucio")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 6;
		Global.Currentmap == Map(Oasis);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(90.673, 9.022, -288.766)) > 0.700, 7);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(90.673, 9.022, -288.766), 3);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 7;
		Start Forcing Player To Be Hero(Event Player, Hero(Sombra));
		Teleport(Event Player, Vector(222.789, 10.571, 191.276));
	}
}

regel("Lvl8 = Sombra")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] >= 7;
		Global.Currentmap == Map(Oasis);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(185.068, 2.049, 253.885)) > 1, 12);
		Chase Player Variable At Rate(Event Player, Timer, 60, 0, Destination and Rate);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Play Effect(All Players(All Teams), Ring Explosion, Blue, Vector(185.068, 2.049, 253.885), 3);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 8;
		Start Forcing Player To Be Hero(Event Player, Hero(Symmetra));
		Wait(0.100, Ignore Condition);
		Teleport(Event Player, Vector(182.061, 16.767, -188.671));
		Event Player.Won = True;
		Global.Win = True;
	}
}

regel("Map restart")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Global.Win == True;
		Global.Currentmap == Map(Oasis);
	}

	aktionen
	{
		Event Player.PreWinPos = Position Of(Event Player);
		Skip If(Event Player.Won == True, 1);
		Teleport(Event Player, Vector(179.800, 16.767, -186.339));
	}
}

regel("-------------------------------------------------------===[ Havanna ]===-------------------------------------------------------")
{
	event
	{
		Ongoing - Global;
	}
}

regel("Init player")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Has Spawned(Event Player) == True;
		Global.Currentmap == Map(Havanna);
	}

	aktionen
	{
		Start Forcing Player To Be Hero(Event Player, Hero(Reinhardt));
		Teleport(Event Player, Vector(-35.648, 8.195, 63.607));
	}
}

regel("Respawn Death")
{
	event
	{
		Player Died;
		All;
		All;
	}

	bedingungen
	{
		Global.Win == False;
		Global.Currentmap == Map(Havanna);
	}

	aktionen
	{
		Set Match Time(10000);
		Respawn(Event Player);
		Wait(0.016, Ignore Condition);
		Skip If(Event Player.Playerlevel[0] != 0, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Reinhardt));
		Teleport(Event Player, Vector(-35.648, 8.195, 63.607));
		Skip If(Event Player.Playerlevel[0] != 1, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Moira));
		Teleport(Event Player, Vector(-35.648, 8.195, 63.607));
		Skip If(Event Player.Playerlevel[0] != 2, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Mei));
		Teleport(Event Player, Vector(33.518, 11.048, -101.696));
		Skip If(Event Player.Playerlevel[0] != 3, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Mei));
		Teleport(Event Player, Vector(33.518, 11.048, -101.696));
		Skip If(Event Player.Playerlevel[0] != 4, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Soldier: 76));
		Teleport(Event Player, Vector(73.659, 5.425, -65.261));
		Skip If(Event Player.Playerlevel[0] != 5, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Sombra));
		Teleport(Event Player, Vector(161.024, 13.424, -74.496));
		Skip If(Event Player.Playerlevel[0] != 6, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Sombra));
		Teleport(Event Player, Vector(-58.269, 4.500, -65.466));
		Skip If(Event Player.Playerlevel[0] != 7, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Hanzo));
		Teleport(Event Player, Vector(-68.979, 11.101, -38.794));
	}
}

regel("Setup (Circles / text / barrier bubble)")
{
	event
	{
		Ongoing - Global;
	}

	bedingungen
	{
		Global.Currentmap == Map(Havanna);
	}

	aktionen
	{
		Create Effect(All Players(All Teams), Ring, Yellow, Vector(40.409, 5.500, -44.144), 0.300, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 2), Vector(40.409, 6.942, -44.144), 0.700,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Ring, Yellow, Vector(-75.039, 5.348, -39.683), 0.300, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 3), Vector(-75.039, 5, -39.683), 0.800,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Ring, Yellow, Vector(19.146, 27.779, -79.244), 0.500, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 4), Vector(19.146, 27.780, -79.244), 1,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Ring, Yellow, Vector(39.084, 4, -90.743), 0.800, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 5), Vector(39.084, 4.500, -90.743), 0.800,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Ring, Yellow, Vector(61.116, 23, -84.590), 0.300, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 6), Vector(61.116, 24, -84.590), 0.600,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Ring, Yellow, Vector(202.949, 25, -50.679), 0.500, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 7), Vector(202.949, 25, -50.679), 0.500,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Ring, Yellow, Vector(-50.180, 17, -87.115), 0.400, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 8), Vector(-50.180, 17, -87.115), 0.600,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Ring, Blue, Vector(-44.417, 3.500, -44.984), 0.700, Visible To Position and Radius);
		Skip If(Global.WinMaprotation != True, 2);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), String("Beenden")), Vector(-44.417, 4, -44.984),
			0.700, Clip Against Surfaces, Visible To Position and String, Red, Default Visibility);
		Abort;
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), String("Beenden")), Vector(-44.417, 4, -44.984),
			0.700, Clip Against Surfaces, Visible To Position and String, Blue, Default Visibility);
	}
}

regel("Kill bubble")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Global.Currentmap == Map(Havanna);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(41.659, 6, -97.091)) > 2.800, 1);
		Teleport(Event Player, Vector(0, -10000, 0));
		Wait(0.250, Ignore Condition);
		Loop;
	}
}

regel("Lvl1 = Reinhardt")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 0;
		Global.Currentmap == Map(Havanna);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(40.409, 5.692, -44.144)) > 0.400, 7);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(40.409, 5.692, -44.144), 3);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 1;
		Start Forcing Player To Be Hero(Event Player, Hero(Moira));
		Teleport(Event Player, Vector(-35.648, 8.195, 63.607));
	}
}

regel("Lvl2 = Moira")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 1;
		Global.Currentmap == Map(Havanna);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(-75.039, 4.098, -39.683)) > 0.400, 7);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(-75.039, 4.098, -39.683), 3);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 2;
		Start Forcing Player To Be Hero(Event Player, Hero(Mei));
		Teleport(Event Player, Vector(33.518, 11.048, -101.696));
	}
}

regel("Lvl3 = Mei")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 2;
		Global.Currentmap == Map(Havanna);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(19.146, 26.529, -79.244)) > 0.500, 7);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(19.146, 26.529, -79.244), 3);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 3;
		Start Forcing Player To Be Hero(Event Player, Hero(Mei));
		Teleport(Event Player, Vector(33.518, 11.048, -101.696));
	}
}

regel("Lvl4 = Mei")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 3;
		Global.Currentmap == Map(Havanna);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(39.084, 4.048, -90.743)) > 0.800, 7);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(39.084, 4.048, -90.743), 3);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 4;
		Start Forcing Player To Be Hero(Event Player, Hero(Soldier: 76));
		Teleport(Event Player, Vector(73.659, 5.425, -65.261));
	}
}

regel("Lvl5 = soldier")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 4;
		Global.Currentmap == Map(Havanna);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(61.116, 23.866, -84.590)) > 0.800, 7);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(61.116, 23.866, -84.590), 3);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 5;
		Start Forcing Player To Be Hero(Event Player, Hero(Sombra));
		Teleport(Event Player, Vector(161.517, 13.414, -74.907));
	}
}

regel("Lvl6 = Sombra")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 5;
		Global.Currentmap == Map(Havanna);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(202.949, 26, -50.679)) > 0.800, 7);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(202.949, 25.500, -50.679), 3);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 6;
		Start Forcing Player To Be Hero(Event Player, Hero(Sombra));
		Teleport(Event Player, Vector(-58.269, 4.500, -65.466));
	}
}

regel("Lvl7 = Sombra")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 6;
		Global.Currentmap == Map(Havanna);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(-50.180, 16.799, -87.115)) > 0.500, 7);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(-50.180, 16.799, -87.115), 3);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 7;
		Start Forcing Player To Be Hero(Event Player, Hero(Hanzo));
		Teleport(Event Player, Vector(-68.979, 11.101, -38.794));
	}
}

regel("Lvl8 = Hanzo")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] >= 7;
		Global.Currentmap == Map(Havanna);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(-44.417, 3.500, -44.984)) > 0.700, 12);
		Chase Player Variable At Rate(Event Player, Timer, 60, 0, Destination and Rate);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Play Effect(All Players(All Teams), Ring Explosion, Blue, Vector(-44.417, 4, -44.984), 3);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 8;
		Start Forcing Player To Be Hero(Event Player, Hero(Symmetra));
		Wait(0.100, Ignore Condition);
		Teleport(Event Player, Vector(-81.657, 5.349, -91.259));
		Event Player.Won = True;
		Global.Win = True;
	}
}

regel("Map restart")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Global.Win == True;
		Global.Currentmap == Map(Havanna);
	}

	aktionen
	{
		Event Player.PreWinPos = Position Of(Event Player);
		Skip If(Event Player.Won == True, 1);
		Teleport(Event Player, Vector(-84.020, 5.351, -89.106));
	}
}

regel("-------------------------------------------------------===[ Hollywood ]===------------------------------------------------------")
{
	event
	{
		Ongoing - Global;
	}
}

regel("Init player")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Has Spawned(Event Player) == True;
		Global.Currentmap == Map(Hollywood);
	}

	aktionen
	{
		Start Forcing Player To Be Hero(Event Player, Hero(Reaper));
		Teleport(Event Player, Vector(-58.258, 10.571, 85.074));
	}
}

regel("Respawn Death")
{
	event
	{
		Player Died;
		All;
		All;
	}

	bedingungen
	{
		Global.Win == False;
		Global.Currentmap == Map(Hollywood);
	}

	aktionen
	{
		Set Match Time(10000);
		Respawn(Event Player);
		Set Move Speed(Event Player, 0);
		Wait(0.016, Ignore Condition);
		Skip If(Event Player.Playerlevel[0] != 0, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Reaper));
		Teleport(Event Player, Vector(-58.258, 10.571, 85.074));
		Skip If(Event Player.Playerlevel[0] != 1, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Pharah));
		Teleport(Event Player, Vector(-36.763, 1.345, 24.012));
		Skip If(Event Player.Playerlevel[0] != 2, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Genji));
		Teleport(Event Player, Vector(30.260, 9.694, -28.576));
		Skip If(Event Player.Playerlevel[0] != 3, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Pharah));
		Teleport(Event Player, Vector(-10.749, 3.097, 18.637));
		Skip If(Event Player.Playerlevel[0] != 4, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Ashe));
		Teleport(Event Player, Vector(-2.309, 3.098, 9.727));
		Skip If(Event Player.Playerlevel[0] != 5, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Baptiste));
		Teleport(Event Player, Vector(35.586, 32.799, 47.628));
		Skip If(Event Player.Playerlevel[0] != 6, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Doomfist));
		Teleport(Event Player, Vector(-12.667, 3.275, -23.461));
		Skip If(Event Player.Playerlevel[0] != 7, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Soldier: 76));
		Teleport(Event Player, Vector(-23.385, 3.349, 98.078));
		Set Move Speed(Event Player, 100);
	}
}

regel("Setup (Circles / text / barrier bubble)")
{
	event
	{
		Ongoing - Global;
	}

	bedingungen
	{
		Global.Currentmap == Map(Hollywood);
	}

	aktionen
	{
		Create Effect(All Players(All Teams), Ring, Yellow, Vector(-34.298, -1, 77.378), 0.300, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 2), Vector(-34.298, 1, 77), 1,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Ring, Yellow, Vector(-40.822, -1, 4.228), 0.500, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 3), Vector(-40.822, 0.400, 4.228), 0.700,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Light Shaft, Yellow, Vector(73.589, 8, -46.748), 0.300, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 4), Vector(73.589, 9.800, -46.748), 0.700,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Ring, Yellow, Vector(-61.350, 10.573, 49.462), 1, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 5), Vector(-61.350, 10.573, 49.462), 0.700,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Ring, Yellow, Vector(8.660, 2, -14.690), 1, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 6), Vector(8.660, 3, -14.690), 0.700,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Ring, Yellow, Vector(17.487, 41.087, 38.256), 0.800, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 7), Vector(17.487, 42.607, 38.256), 0.700,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Ring, Yellow, Vector(-41.390, 1, -138.421), 1, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 8), Vector(-41.390, 2.300, -138.421), 0.700,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Light Shaft, Blue, Vector(86.877, -1, -14.007), 0.300, Visible To Position and Radius);
		Skip If(Global.WinMaprotation != True, 2);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), String("Beenden")), Vector(86.877, 9.678, -14.007),
			1, Clip Against Surfaces, Visible To Position and String, Red, Default Visibility);
		Abort;
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), String("Beenden")), Vector(86.877, 9.678, -14.007),
			1, Clip Against Surfaces, Visible To Position and String, Blue, Default Visibility);
	}
}

regel("Kill bubble")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Global.Currentmap == Map(Hollywood);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(-38.473, -41, 5.604)) > 40, 1);
		Teleport(Event Player, Vector(0, -10000, 0));
		Skip If(Distance Between(Event Player, Vector(-23, -2.660, 15.500)) > 7, 1);
		Teleport(Event Player, Vector(0, -10000, 0));
		Skip If(Distance Between(Event Player, Vector(-34.010, -6, 16.500)) > 7, 1);
		Teleport(Event Player, Vector(0, -10000, 0));
		Skip If(Distance Between(Event Player, Vector(9.456, -42, 1.470)) > 45, 1);
		Teleport(Event Player, Vector(0, -10000, 0));
		Skip If(Distance Between(Event Player, Vector(-21.760, 3.430, -32.120)) > 7, 1);
		Teleport(Event Player, Vector(0, -10000, 0));
		Skip If(Distance Between(Event Player, Vector(3.386, 8, 12.066)) > 4, 1);
		Teleport(Event Player, Vector(0, -10000, 0));
		Wait(0.250, Ignore Condition);
		Loop;
	}
}

regel("Lvl1 = Reaper")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 0;
		Global.Currentmap == Map(Hollywood);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(-34.298, 0.298, 77.378)) > 0.500, 7);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(-34.298, 0.298, 77.378), 3);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 1;
		Start Forcing Player To Be Hero(Event Player, Hero(Pharah));
		Teleport(Event Player, Vector(-36.763, 1.345, 24.012));
	}
}

regel("Lvl2 = Pharah")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 1;
		Global.Currentmap == Map(Hollywood);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(-40.822, -0.151, 4.228)) > 0.300, 8);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(-40.822, -0.151, 4.228), 3);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 2;
		Start Forcing Player To Be Hero(Event Player, Hero(Genji));
		Teleport(Event Player, Vector(30.260, 9.694, -28.576));
		Set Ability 1 Enabled(Event Player, False);
	}
}

regel("Lvl3 = Genji")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 2;
		Global.Currentmap == Map(Hollywood);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(73.589, 9.007, -46.748)) > 0.500, 8);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(73.589, 9.007, -46.748), 3);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 3;
		Start Forcing Player To Be Hero(Event Player, Hero(Pharah));
		Teleport(Event Player, Vector(-10.749, 3.097, 18.637));
		Set Ability 1 Enabled(Event Player, True);
	}
}

regel("Lvl4 = Pharah")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 3;
		Global.Currentmap == Map(Hollywood);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(-61.350, 9.323, 49.462)) > 1, 7);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(-61.350, 9.323, 49.462), 3);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 4;
		Start Forcing Player To Be Hero(Event Player, Hero(Ashe));
		Teleport(Event Player, Vector(-2.309, 3.098, 9.727));
	}
}

regel("Lvl5 = Ashe")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 4;
		Global.Currentmap == Map(Hollywood);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(8.660, 1.848, -14.690)) > 1, 7);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(8.660, 1.848, -14.690), 3);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Teleport(Event Player, Vector(35.586, 32.799, 47.628));
		Start Forcing Player To Be Hero(Event Player, Hero(Baptiste));
		Event Player.Playerlevel[0] = 5;
	}
}

regel("Lvl6 = Baptiste - Teleport")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Distance Between(Event Player, Vector(15.797, 32.631, 30.786)) < 1;
		Event Player.Playerlevel[0] == 5;
		Global.Currentmap == Map(Hollywood);
	}

	aktionen
	{
		Teleport(Event Player, Vector(17.328, 32.854, 32.324));
	}
}

regel("Lvl6 = Baptiste - Kill bubble")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Event Player.Playerlevel[0] == 5;
		Distance Between(Event Player, Vector(22.870, 105, 39.410)) > 80;
		Global.Win == False;
		Global.Currentmap == Map(Hollywood);
	}

	aktionen
	{
		Teleport(Event Player, Vector(0, -10000, 0));
	}
}

regel("Lvl6 = Baptiste")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 5;
		Global.Currentmap == Map(Hollywood);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(17.487, 41.357, 38.256)) > 1, 7);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(17.487, 41.357, 38.256), 3);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 6;
		Start Forcing Player To Be Hero(Event Player, Hero(Doomfist));
		Teleport(Event Player, Vector(-12.667, 3.276, -23.461));
	}
}

regel("Lvl7 = Doomfist")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] == 6;
		Global.Currentmap == Map(Hollywood);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(-41.390, 1.849, -138.421)) > 1, 7);
		Play Effect(All Players(All Teams), Ring Explosion, Yellow, Vector(-41.390, 1.849, -138.421), 3);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 7;
		Start Forcing Player To Be Hero(Event Player, Hero(Soldier: 76));
		Teleport(Event Player, Vector(-23.385, 3.349, 98.078));
	}
}

regel("Lvl8 = Soldier")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Is Button Held(Event Player, Interact) == True;
		Event Player.Playerlevel[0] >= 7;
		Global.Currentmap == Map(Hollywood);
	}

	aktionen
	{
		Skip If(Distance Between(Event Player, Vector(86.850, 8.427, -14.105)) > 0.300, 12);
		Chase Player Variable At Rate(Event Player, Timer, 60, 0, Destination and Rate);
		Play Effect(Event Player, Buff Explosion Sound, White, Event Player, 50);
		Play Effect(All Players(All Teams), Ring Explosion, Blue, Vector(86.850, 8.427, -14.105), 3);
		Small Message(Event Player, String("{0} {1}", String("Level"), String("Freigeschaltet")));
		Wait(2, Ignore Condition);
		Event Player.Playerlevel[0] = 8;
		Start Forcing Player To Be Hero(Event Player, Hero(Symmetra));
		Wait(0.100, Ignore Condition);
		Teleport(Event Player, Vector(-12.038, 3.352, 94.060));
		Event Player.Won = True;
		Global.Win = True;
	}
}

regel("Map restart")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Global.Win == True;
		Global.Currentmap == Map(Hollywood);
	}

	aktionen
	{
		Event Player.PreWinPos = Position Of(Event Player);
		Skip If(Event Player.Won == True, 1);
		Teleport(Event Player, Vector(-12.276, 3.298, 89.504));
	}
}

regel("-------------------------------------------------------===[ Kings Row ]===------------------------------------------------------")
{
	event
	{
		Ongoing - Global;
	}
}

regel("Init player")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	bedingungen
	{
		Has Spawned(Event Player) == True;
		Global.Currentmap == Map(King's Row);
	}

	aktionen
	{
		Start Forcing Player To Be Hero(Event Player, Hero(Mei));
		Teleport(Event Player, Vector(5.019, 0.244, -67.962));
	}
}

regel("Respawn Death")
{
	event
	{
		Player Died;
		All;
		All;
	}

	bedingungen
	{
		Global.Win == False;
		Global.Currentmap == Map(King's Row);
	}

	aktionen
	{
		Set Match Time(10000);
		Respawn(Event Player);
		Set Move Speed(Event Player, 0);
		Wait(0.016, Ignore Condition);
		Skip If(Event Player.Playerlevel[0] != 0, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Mei));
		Teleport(Event Player, Vector(5.019, 0.245, -67.962));
		Skip If(Event Player.Playerlevel[0] != 1, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Torbjörn));
		Teleport(Event Player, Vector(-71.628, 9.353, -28.926));
		Skip If(Event Player.Playerlevel[0] != 2, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Brigitte));
		Teleport(Event Player, Vector(-69.258, 5.796, -51.445));
		Skip If(Event Player.Playerlevel[0] != 3, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Doomfist));
		Teleport(Event Player, Vector(-91.329, 10.512, -52.692));
		Skip If(Event Player.Playerlevel[0] != 4, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Ashe));
		Teleport(Event Player, Vector(32.157, 48.550, -97.987));
		Skip If(Event Player.Playerlevel[0] != 5, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Soldier: 76));
		Teleport(Event Player, Vector(-40.650, 1.230, 20.750));
		Skip If(Event Player.Playerlevel[0] != 6, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Widowmaker));
		Teleport(Event Player, Vector(-57.051, 1.105, -17.585));
		Skip If(Event Player.Playerlevel[0] != 7, 2);
		Start Forcing Player To Be Hero(Event Player, Hero(Sombra));
		Teleport(Event Player, Vector(-100.908, 2.409, -26.088));
		Set Move Speed(Event Player, 100);
	}
}

regel("Setup (Circles / text / barrier bubble)")
{
	event
	{
		Ongoing - Global;
	}

	bedingungen
	{
		Global.Currentmap == Map(King's Row);
	}

	aktionen
	{
		Create Effect(All Players(All Teams), Ring, Yellow, Vector(14.366, 0.349, -60.500), 0.800, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Level"), 2), Vector(14.366, 0.349, -60.500), 1,
			Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
		Create Effect(All Players(All Teams), Ring, Yellow, Vector(-80.365,

Changelog

22 days ago 3.5.7-P1

Changes:

  • Updated into Part 1 and Part 2

B75XH2
click to copy
25 days ago 3.5.5

Changes:

  • Renamed the "Hold F to respawn" into "Hold INTERACT to respawn"
  • Added the above mentioned sentence to Oasis

--== This mode has officialy reached it max element size by Blizzard ==-- This means, that no new stuff could be added anymore to this mode. This mode will still receive fixes. So please feels free to report any bugs. Thanks.

J6DXZ
click to copy
4 months ago 3.5.4

Fixed:

  • All maps now show the correct highscore time
  • Highscore-timer wont run anymore, when its deactivated (coused 60sec hud display)

Changes:

  • Hanamura new highscore: 42.51 by Kreston

PD6ZJ
click to copy
4 months ago 3.5.3

Fixed:

  • The red button for speedrunning shoud now appear again on other maps than hanamura.

NDEDN
click to copy
4 months ago 3.5.2

Fixed:

  • There was an issue that coused players not beeing reset after someone won a map.

NWJK5
click to copy
4 months ago 3.5.1

Fixed

  • Hanamura is now finaly activated

X3EQC
click to copy
4 months ago 3.5.0

Fixed:

  • Map restart after someone won the game
  • Map restart also after someone won the game and left within a few seconds

Changes

  • Hard reset now have less big-messages as those tend to stack up
  • Splitted up some DEV-Settings for more control + Option for inspector recording
  • General use of subroutines

New map added:

  • Hanamura (medium) lvl1: Pharah - lvl2: Zenyata - lvl3: Hanzo - lvl4: Genji - lvl5: Sombra

The map is a smal and very quickly doable map. It is also playable in the winter version. There's already a very good Highscore (PTR) so far:

  • 00:45.98 by Have0Stats

P4N7S
click to copy
5 months ago 3.4.9

Fixed:

  • Maps weren't configured as planed.

DK439
click to copy
5 months ago 3.4.8

Fixed:

  • Settings were not configured as planed.

QRPH6
click to copy
5 months ago 3.4.8

Fixed:

  • When "Next map after win" was turned off, it sometimes happened that the map still changed.

Changes:

  • Replaced old map detection function with the build in map-function.
  • Implemented (re)spawn facing for the first few level on paris.
  • Gamemode version is now displayed.

P8CMS
click to copy
5 months ago 3.4.7

Changes:

  • Added setting to turn on/off map-switch after someone wins
  • Last winner will now be shown
  • Nearly completly rebuild map winning rules. Now its all more simplyfied and including the option to stay on the same map. Also teleportation and timing is now much more accurate.

NQFS7
click to copy
5 months ago 3.4.0

The final update is here!!!

Fixed:

  • Investigated and fixed several actions/rules, wich coused a very high server load. The mode should now running stable again. Even with 12 players again!

Changes:

  • Left corner now have now some mode-instructions added.
  • Right corner now refering elo-hell workshop for the newest code.
  • Deactivated Server-Crash-Saver setting by default (hopefully no need anymore, couse of fixed server load).
  • Named several Global and Player variables to make it more understandable.

QZVSH
click to copy
5 months ago 3.2.5

Changes:

  • Highscores are updated again
  • Lobby slots reduced from 12 to 9 by default (due to server load)
  • Brough the settings to the top (so you can better find the settings section)

G69SP
click to copy
11 months ago 3.2.5

Changes:

  • Highscores are updated again
  • Lobby slots reduced from 12 to 9 by default (due to server load)
  • Brough the settings to the top (so you can better find the settings section)

3AEZJ
click to copy
12 months ago 3.2.4

Fixed:

  • Dev teleport is now off by default.

QN727
click to copy
12 months ago 3.2.3

Fixed:

  • There was an issue that coused a permanent slow motion (server crash save). This should be fixed now.

N55G1
click to copy
12 months ago 3.2.2

Changes:

  • Kings Row: Replaced Sombra Checkpoint (as the first one was to easy to find)
  • Kings Row: Replaced the Speedrun button (as player have often overseen it before)
  • Added an "Server Crash Saver" rule, that automaticly put the game in slowmotion for just an second (slowmotion streng is determined by the server load average over 100)
  • Highscores are now updated

7VSYB
click to copy
12 months ago 3.2.1

Highscores are now updated.

HF6SD
click to copy
12 months ago 3.2.0

New map added:

  • Kings Row (medium)

lvl1: Mei lvl2: Torbjörn lvl3: Brigitte lvl3: Doomfist lvl4: Ashe lvl5: Soldier76 lvl6: Widowmaker lvl7: Sombra

H0N8S
click to copy
12 months ago 3.1.0

Quality of lives update:

Fixed:

  • Issue where players die one time, while swithing to lvl 6

Changes:

  • Improved Highscore/Timer HUD - Also this fixing the HUD Display for Player 12 (last Player joining full lobby)

0TCJK
click to copy
about 1 year ago 3.0.54

News update: Beeing in vacation until 13. July, so there will be no progress in these two weeks.

However, as I found a way to implement the lvl list again, this gonna happen after that date. Also one spezific map is planned to be added. Stay tuned! *oh and dont forget to try to breacke the time-records. I'm still gonna try to update these at the spreadsheet table.

9RA0K
click to copy
about 1 year ago 3.0.52

Hotfix 2:

  • Now the time count works again (except of the last player joining / the 12th player)

Sadly its not possible to implement the lvl list again, as the element limit of Overwatch wont let me add any single new hud-element...

MKRXW
click to copy
about 1 year ago 3.0.51

Hotfix:

  • Fixed major issue, that coused to reach the hud-text element limit. Sadly I had to disable the lvl list for that (I'm trying to bring it back, but as OW got that dumb limit, I'm not sure about that...)

Q0FSZ
click to copy
about 1 year ago 3.0.5

Fix:

  • Increased the time of the lvl hud list so server errors might not appear that often.

9GF0N
click to copy
about 1 year ago 3.0.5

Changes:

  • Added a hud-list which show the level and hero of each player.

9ANTF
click to copy
about 1 year ago 3.0.5

Changes:

  • Added a hud-list which show the level and hero of each player.

X4WY5
click to copy
about 1 year ago 3.0.42

Changes:

  • Updated Highscores

0DERN
click to copy
about 1 year ago 3.0.41

Changes:

  • New Highscores

WTATC
click to copy
about 1 year ago 3.0.4

Fixed: Hollywood: Fixed an issue, where Baptiste died, when someone else finished the map.

Changes:

  • Highscores are updated now

XMP1Q
click to copy
about 1 year ago 3.0.3

Changes:

  • Checkpoints gives sound feedback now
  • Map finish gives sound feedback now
  • Included a progress reset option (Hold crough + interact)

MA8XM
click to copy
about 1 year ago 3.0.2

Fixed: Hollywood: Fixed an pathway for Ashe, thats not supposed to go.

Changes: Added Time Run (Speedrun) System to get your personal highscore. Contact me on Discord (with screenshot proof!) to get your Highscore written down for the next update!

NMC25
click to copy
about 1 year ago 3.0.1

Fixed: Deactivated knockback for all Doomfist abilitys.

3ZYX8
click to copy
about 1 year ago 3.0.0

New map: Hollywood lvl 1: Reaper lvl 2: Pharah lvl 3: Genji lvl 4: Ash lvl 5: Baptiste lvl 6: Doomfist lvl 7: Soldier76

Other changes:

  • New hud element indicates the winner of a match
  • fixed hud element order
  • Phased out bug: Soldier knockback got another solution, that don't need you to be killed once.

XD44N
click to copy
about 1 year ago 2.9.4

  • Difficutly adjustments
  • Now the version is right ;)

3H3T0
click to copy
about 1 year ago 2.9.3

Changes: Oasis:

  • Relocated Sombra (last lvl) checkpoint, so its now much harder

SCN8N
click to copy
about 1 year ago 2.9.3

Fixed:

  • Checkpoints are now visible again on Havanna and Oasis, as the hidden checkpoint feature didnt worked out, while playing with multiple players.

G9MPZ
click to copy
about 1 year ago 2.9.2

Changes: Havanna: Lvl order switched to: lvl 1 Reinhard (Moira before) lvl 2 Moira (Reinhard before)

Other changes:

  • Oasis and Havanna: Only the next checkpoints will be shown to the player. Other checkpoints are now hidden unless you reach the required lvl. (Checkpoints on Paris and Busan are well hidden, so no need here)
  • Removed annoying knockback and stun abilitys from heroes (-> no trolling)

GDC8A
click to copy
about 1 year ago 2.9.0

New Map added: Havanna

Including 8 lvl:

  1. Moira
  2. Reinhardt
  3. Mei
  4. Mei
  5. Soldier76
  6. Sombra
  7. Sombra
  8. Hanzo

Other changes: General:

  • Map wins are now fixed with effects and the right teleport

Oasis:

  • Fixed a way that sombra was able to use to get to the checkpoint, thats not supposed

XEZ61
click to copy
about 1 year ago 2.8.1

Fixed:

  • Paris and Busan now appears again

9TVZ0
click to copy
about 1 year ago 2.8.1

Following changes have been made on Oasis:

  • Fixed doomfist uppercut "cheating" pathway
  • Deactivated doomfist ultimate
  • Fixed a sombra teleporter spot, that made it way to easy for the last lvl
  • Fixed another corner to prevent sombra from reaching the checkpoint to easaly

NBQM4
click to copy
about 1 year ago 2.8.0

New Map added:

  • Oasis

Including 8 lvl:

  1. Baptiste
  2. Hanzo
  3. Genji
  4. Doomfist
  5. Ana
  6. Phara
  7. Lucio
  8. Sombra

(This updatefeed is weird and not saving sometimes...)

64508
click to copy
about 1 year ago 2.7.5

Changed the level order on Busan to prevent casual players from beeing trolling/blocking with soldier. New level order:

  1. Reaper (Soldier before)
  2. Ana (Genji before)
  3. Soldier (Junktrat before)
  4. Genji (Ana before)
  5. Junkrat (Reaper before)
  6. Hanzo
  7. Wrecking Ball
  8. Sombra

QX5G6
click to copy
about 1 year ago 2.7.0

New map added:

  • Busan Including: 9 level

4CEDC
click to copy
about 1 year ago 2.6.0

This revision contains no notes

AMTKS
click to copy