Back to home

3-Stage Tower Defense

D1Q9Q
click to copy
This game is archived.
If you with to unarchive it, click the "restore" button in the options menu.

Category:
Custom game mode

Author:
Lemiral

Rating:
2

Version:
2.3.0

Posted:
about 1 month ago

Last updated:
about 1 month ago

Tags:
lijiang tower lijiang garden lijiang night market all heroes torbjörn

Share this workshop!

Options

Known Bugs:

  • NONE
  • (Please inform me, if you found a bug in this gamemode)
  • Contact: lemiral.gaming@gmail.com

Future Updates:

  • More Maps!!
  • QoL Changes

Features:

  • Tower Defence on Lijiang Map (All 3 connected with Portals (Elevators)).
  • Team 1 spawns in Lijiang Market.
  • Team 2 spawns in Lijiang Tower.
  • Every Teams has a Tower (Torbijorn Bot, Slot 0 & Slot 6).
  • The Teams have to use the Elevators to get to the Enemy Base.
  • The Torbjorns spawn with 1250/1500 HP.
  • Every Player sees the Health of the Enemy and the Friendly Tower.
  • Match Timer: 30 minutes

Note:

  • The Torbjorn Bots have to be placed manually.

Inspired by Scales' Workshop (thats becouse it started at v2.0.0)

Some fixes of Scales' Version:

  • If you walk through a Portal, everyone would be teleported.
  • The Torbjorns will start to move (but i dont know why my change fixed it lol)
  • I changed the Portals mechanic, so you dont have to press "Interact" or "Crouch".
  • I also moved some Portals to other locations.
  • i changed the recieved damage, recieved heal, damage and max health of the Tower.

Pictures: UI Lijiang Night Market Lijiang Garden Elevators Lijiang Tower Tower Base Team 1 Tower Base Team 2

rule("--------Basic Setup---------")
{
	event
	{
		Ongoing - Global;
	}

	conditions
	{
		Is Game In Progress == False;
	}

	actions
	{
		Set Global Variable(Z, 0);
	}
}

rule("setup")
{
	event
	{
		Ongoing - Global;
	}

	conditions
	{
		Is Game In Progress == True;
	}

	actions
	{
		Disable Built-In Game Mode Completion;
		Disable Built-In Game Mode Scoring;
		Disable Built-In Game Mode Announcer;
		Set Match Time(1800);
	}
}

rule("invis slot 0")
{
	event
	{
		Ongoing - Each Player;
		Team 1;
		Torbjörn;
	}

	actions
	{
		Set Invisible(Event Player, None);
	}
}

rule("invis slot 6")
{
	event
	{
		Ongoing - Each Player;
		Team 2;
		Torbjörn;
	}

	actions
	{
		Set Invisible(Event Player, None);
	}
}

rule("SLOT 0 TORB")
{
	event
	{
		Ongoing - Each Player;
		All;
		Slot 0;
	}

	actions
	{
		Set Player Allowed Heroes(Event Player, Hero(Torbjörn));
	}
}

rule("SLOT 6 TORB")
{
	event
	{
		Ongoing - Each Player;
		All;
		Slot 6;
	}

	actions
	{
		Set Player Allowed Heroes(Event Player, Hero(Torbjörn));
	}
}

rule("VICTORY TEAM 1")
{
	event
	{
		Ongoing - Each Player;
		Team 2;
		Torbjörn;
	}

	conditions
	{
		Is Dead(Event Player) == True;
	}

	actions
	{
		Modify Team Score(Team 1, 1);
		Declare Team Victory(Team 1);
	}
}

rule("VICTORY TEAM 2")
{
	event
	{
		Ongoing - Each Player;
		Team 1;
		Torbjörn;
	}

	conditions
	{
		Is Dead(Event Player) == True;
	}

	actions
	{
		Declare Team Victory(Team 2);
		Modify Team Score(Team 2, 1);
	}
}

rule("spawning hud")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	conditions
	{
		Is In Spawn Room(Event Player) == True;
	}

	actions
	{
		Big Message(Event Player, String("{0} {1} {2}", String("Wait", Null, Null, Null), String("Player", Null, Null, Null), String(
			"Spawning", Null, Null, Null)));
		Wait(1, Ignore Condition);
		Destroy HUD Text(Last Text ID);
	}
}

disabled rule("freeze trap visuals and effects")
{
	event
	{
		Ongoing - Each Player;
		Team 1;
		All;
	}

	conditions
	{
		Is Button Held(Event Player, Ultimate) == True;
	}

	actions
	{
		Modify Player Variable(Event Player, A, Append To Array, Position Of(Event Player));
		Modify Player Variable(Event Player, B, Add, 1);
		Create Effect(All Players(All Teams), Orb, Purple, Value In Array(Player Variable(Event Player, A), Player Variable(Event Player,
			B)), 1, Visible To Position and Radius);
		Set Status(Event Player, All Players(All Teams), Frozen, 3);
	}
}

rule("torb force sombra on")
{
	event
	{
		Ongoing - Each Player;
		All;
		Torbjörn;
	}

	conditions
	{
		Hero(Torbjörn) == True;
	}

	actions
	{
		Start Forcing Player To Be Hero(Event Player, Hero(Sombra));
		Wait(0.250, Ignore Condition);
		Stop Forcing Player To Be Hero(Event Player);
	}
}

rule("sombra force all off")
{
	event
	{
		Ongoing - Each Player;
		All;
		Sombra;
	}

	conditions
	{
		Hero(Sombra) == True;
	}

	actions
	{
		Stop Forcing Player To Be Hero(Event Player);
	}
}

rule("ends")
{
	event
	{
		Ongoing - Global;
	}

	conditions
	{
		Match Time != True;
	}

	actions
	{
		Declare Match Draw;
	}
}

rule("Set Global Variable for Health")
{
	event
	{
		Ongoing - Global;
	}

	actions
	{
		Set Global Variable(A, Health(Players On Hero(Hero(Torbjörn), Team 1)));
		Set Global Variable(B, Health(Players On Hero(Hero(Torbjörn), Team 2)));
		Wait(2, Ignore Condition);
		Loop;
	}
}

rule("Warning if an Enemy is near Tower T1")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	conditions
	{
		Compare(Health(Players On Hero(Hero(Torbjörn), Team 1)), >=, Global Variable(A)) == False;
		Is Game In Progress == True;
	}

	actions
	{
		Big Message(All Players(Team 1), String("{0} {1} {2}", Hero Icon String(Hero(Torbjörn)), String("Under", Null, Null, Null), String(
			"Attack", Null, Null, Null)));
		disabled Wait(1, Ignore Condition);
		disabled Big Message(All Players(Team 1), String("{0} {1} {2}", Hero Icon String(Hero(Torbjörn)), String("Under", Null, Null, Null), String(
			"Attack", Null, Null, Null)));
		disabled Wait(1, Ignore Condition);
		disabled Big Message(All Players(Team 1), String("{0} {1} {2}", Hero Icon String(Hero(Torbjörn)), String("Under", Null, Null, Null), String(
			"Attack", Null, Null, Null)));
	}
}

rule("Warning if an Enemy is near Tower T2")
{
	event
	{
		Ongoing - Each Player;
		All;
		Slot 6;
	}

	conditions
	{
		Compare(Health(Players On Hero(Hero(Torbjörn), Team 1)), >=, Global Variable(A)) == False;
		Is Game In Progress == True;
	}

	actions
	{
		Big Message(All Players(Team 2), String("{0} {1} {2}", Hero Icon String(Hero(Torbjörn)), String("Under", Null, Null, Null), String(
			"Attack", Null, Null, Null)));
		disabled Wait(1, Ignore Condition);
		disabled Big Message(All Players(Team 2), String("{0} {1} {2}", Hero Icon String(Hero(Torbjörn)), String("Under", Null, Null, Null), String(
			"Attack", Null, Null, Null)));
		disabled Wait(1, Ignore Condition);
		disabled Big Message(All Players(Team 2), String("{0} {1} {2}", Hero Icon String(Hero(Torbjörn)), String("Under", Null, Null, Null), String(
			"Attack", Null, Null, Null)));
	}
}

rule("Tower Health")
{
	event
	{
		Ongoing - Global;
	}

	actions
	{
		Create HUD Text(All Players(All Teams), String("{0} / {1}", Health(Players On Hero(Hero(Torbjörn), Team 1)), Max Health(
			Players On Hero(Hero(Torbjörn), Team 1)), Null), Null, Null, Top, 0, Team 2, White, White, Visible To and String);
		Create HUD Text(All Players(All Teams), String("{0} / {1}", Health(Players On Hero(Hero(Torbjörn), Team 2)), Max Health(
			Players On Hero(Hero(Torbjörn), Team 2)), Null), Null, Null, Top, 0, Team 1, White, White, Visible To and String);
	}
}

rule("Map detector setup")
{
	event
	{
		Ongoing - Global;
	}

	actions
	{
		Set Global Variable(X, Nearest Walkable Position(Vector(100, 100, 100)));
		Set Global Variable(Y, Round To Integer(X Component Of(Global Variable(X)), Up));
		disabled Disable Built-In Game Mode Scoring;
		disabled Disable Built-In Game Mode Announcer;
		disabled Set Global Variable(G, Empty Array);
		disabled Set Global Variable(H, Empty Array);
		disabled Set Global Variable(A, True);
		disabled Create HUD Text(All Players(All Teams), String("{0}: {1}", String("Location", Null, Null, Null), Global Variable(Y), Null), Null,
			Null, Right, 0, Purple, White, White, Visible To and String);
	}
}

rule("-----------Lijiang-------------")
{
	event
	{
		Ongoing - Global;
	}
}

rule("teleport from market to garden (door) cords")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	conditions
	{
		disabled Is Button Held(Event Player, Interact) == True;
		Players Within Radius(Vector(52, 8, -2.332), 2, All Teams, Surfaces) == True;
		Global Variable(Y) == 70;
	}

	actions
	{
		Set Status(Closest Player To(Vector(52, 8, -2.332), All Teams), Null, Rooted, 0.400);
		Wait(0.100, Abort When False);
		Set Facing(Closest Player To(Vector(52, 8, -2.332), All Teams), Direction From Angles(0, 0), To World);
		Wait(0.100, Abort When False);
		Teleport(Players Within Radius(Vector(52, 8, -2.332), 2.500, All Teams, Surfaces), Vector(51, 96.199, 131.505));
	}
}

rule("teleport to market from garden (platform) cords")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	conditions
	{
		disabled Is Button Held(Event Player, Crouch) == True;
		Players Within Radius(Vector(-51.000, 96.500, 131.505), 1.800, All Teams, Surfaces) == True;
		Global Variable(Y) == 70;
	}

	actions
	{
		Set Status(Closest Player To(Vector(-51.000, 96.500, 131.505), All Teams), Null, Rooted, 0.400);
		Wait(0.100, Abort When False);
		Set Facing(Closest Player To(Vector(-51.000, 96.500, 131.505), All Teams), Direction From Angles(180, 0), To World);
		Wait(0.100, Abort When False);
		Teleport(Players Within Radius(Vector(-51.000, 96.500, 131.505), 2.500, All Teams, Surfaces), Vector(-49.500, 7.574, -2.332));
	}
}

rule("teleport to tower from garden (door) cords")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	conditions
	{
		disabled Is Button Held(Event Player, Interact) == True;
		Players Within Radius(Vector(-1.492, 95.199, 189.245), 1.400, All Teams, Surfaces) == True;
		Global Variable(Y) == 70;
	}

	actions
	{
		Set Status(Closest Player To(Vector(-1.492, 95.199, 189.245), All Teams), Null, Rooted, 0.400);
		Wait(0.100, Abort When False);
		Set Facing(Closest Player To(Vector(-1.492, 95.199, 189.245), All Teams), Direction From Angles(135, 0), To World);
		Wait(0.100, Abort When False);
		Teleport(Players Within Radius(Vector(-1.492, 95.199, 189.245), 2, All Teams, Surfaces), Vector(-44.000, 268.199, 300));
	}
}

rule("teleport to garden from tower (platform) cords")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	conditions
	{
		disabled Is Button Held(Event Player, Crouch) == True;
		Players Within Radius(Vector(44, 268.500, 301), 2, All Teams, Surfaces) == True;
		Global Variable(Y) == 70;
	}

	actions
	{
		Set Status(Closest Player To(Vector(44, 268.500, 301), All Teams), Null, Rooted, 0.400);
		Wait(0.100, Abort When False);
		Set Facing(Closest Player To(Vector(44, 268.500, 301), All Teams), Direction From Angles(180, 0), To World);
		Wait(0.100, Abort When False);
		Teleport(Players Within Radius(Vector(44, 268.500, 301), 2, All Teams, Off), Vector(1.488, 95.199, 189.245));
	}
}

rule("cord 1 market")
{
	event
	{
		Ongoing - Global;
	}

	conditions
	{
		Global Variable(Y) == 70;
	}

	actions
	{
		Create Icon(All Players(All Teams), Vector(52, 8, -2.335), Arrow: Up, Visible To and Position, Yellow, True);
		Create Effect(All Players(All Teams), Good Aura, Green, Vector(52, 8, -2.332), 1.500, Visible To Position and Radius);
		Create Icon(All Players(All Teams), Vector(-49.500, 8, -2.332), Stop, Visible To and Position, Red, False);
		Create Effect(All Players(All Teams), Good Aura, Red, Vector(-49.500, 8, -2.332), 1.500, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1} {2}", String("Green", Null, Null, Null), String("Zone", Null, Null,
			Null), String("Connected", Null, Null, Null)), Vector(52, 8, -2.335), 1, Clip Against Surfaces,
			Visible To Position and String);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Zone", Null, Null, Null), String("Disconnected", Null, Null,
			Null), Null), Vector(-49.500, 8, -2.335), 1, Clip Against Surfaces, Visible To Position and String);
	}
}

rule("cord 2 garden platform")
{
	event
	{
		Ongoing - Global;
	}

	conditions
	{
		Global Variable(Y) == 70;
	}

	actions
	{
		Create Icon(All Players(All Teams), Vector(-51.000, 96.500, 131.505), Arrow: Down, Visible To and Position, Green, True);
		Create Effect(All Players(All Teams), Good Aura, Green, Vector(-51.000, 96.500, 131.505), 1.500, Visible To Position and Radius);
		Create Icon(All Players(All Teams), Vector(51, 96.500, 131.505), Stop, Visible To and Position, Red, False);
		Create Effect(All Players(All Teams), Good Aura, Red, Vector(51, 96.500, 131.505), 1.500, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1} {2}", String("Yellow", Null, Null, Null), String("Zone", Null, Null,
			Null), String("Connected", Null, Null, Null)), Vector(-51.000, 95.500, 131.505), 1, Clip Against Surfaces,
			Visible To Position and String);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Zone", Null, Null, Null), String("Disconnected", Null, Null,
			Null), Null), Vector(51, 95.500, 131.505), 1, Clip Against Surfaces, Visible To Position and String);
	}
}

rule("cord 3 garden door")
{
	event
	{
		Ongoing - Global;
	}

	conditions
	{
		Global Variable(Y) == 70;
	}

	actions
	{
		Create Icon(All Players(All Teams), Vector(-1.492, 95.500, 189.245), Arrow: Up, Visible To and Position, Green, True);
		Create Effect(All Players(All Teams), Good Aura, Green, Vector(-1.492, 95.500, 189.245), 1.500, Visible To Position and Radius);
		Create Icon(All Players(All Teams), Vector(1.488, 95.500, 189.245), Stop, Visible To and Position, Red, False);
		Create Effect(All Players(All Teams), Good Aura, Red, Vector(1.488, 95.500, 189.245), 1.500, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1} {2}", String("Blue", Null, Null, Null), String("Zone", Null, Null,
			Null), String("Connected", Null, Null, Null)), Vector(-1.492, 95.500, 189.245), 1, Clip Against Surfaces,
			Visible To Position and String);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Zone", Null, Null, Null), String("Disconnected", Null, Null,
			Null), Null), Vector(1.488, 95.500, 189.245), 1, Clip Against Surfaces, Visible To Position and String);
	}
}

rule("cord 4 tower")
{
	event
	{
		Ongoing - Global;
	}

	conditions
	{
		Global Variable(Y) == 70;
	}

	actions
	{
		Create Icon(All Players(All Teams), Vector(44, 268.500, 301), Arrow: Down, Visible To and Position, Blue, True);
		Create Effect(All Players(All Teams), Good Aura, Green, Vector(44, 268.500, 301), 1.500, Visible To Position and Radius);
		Create Icon(All Players(All Teams), Vector(-44.000, 268.500, 301), Stop, Visible To and Position, Red, False);
		Create Effect(All Players(All Teams), Good Aura, Red, Vector(-44.000, 268.500, 301), 1.500, Visible To Position and Radius);
		Create In-World Text(All Players(All Teams), String("{0} {1} {2}", String("Green", Null, Null, Null), String("Zone", Null, Null,
			Null), String("Connected", Null, Null, Null)), Vector(44, 268.500, 301), 1, Clip Against Surfaces,
			Visible To Position and String);
		Create In-World Text(All Players(All Teams), String("{0} {1}", String("Zone", Null, Null, Null), String("Disconnected", Null, Null,
			Null), Null), Vector(-44.000, 268.500, 301), 1, Clip Against Surfaces, Visible To Position and String);
	}
}

rule("SPAWN TEAM 1")
{
	event
	{
		Ongoing - Each Player;
		Team 1;
		All;
	}

	conditions
	{
		Is In Spawn Room(Event Player) == True;
		Global Variable(Y) == 70;
	}

	actions
	{
		Set Status(Event Player, Null, Unkillable, 5);
		Teleport(Event Player, Vector(60, 3.298, -43.000));
	}
}

rule("SPAWN TEAM 2")
{
	event
	{
		Ongoing - Each Player;
		Team 2;
		All;
	}

	conditions
	{
		Is In Spawn Room(Event Player) == True;
		Global Variable(Y) == 70;
	}

	actions
	{
		Set Status(Event Player, Null, Unkillable, 5);
		Teleport(Event Player, Vector(49, 266.349, 330));
	}
}

rule("torb 1 setup")
{
	event
	{
		Ongoing - Each Player;
		Team 1;
		Torbjörn;
	}

	conditions
	{
		disabled Is In Spawn Room(Event Player) == True;
		Global Variable(Z) <= 1;
		Global Variable(Y) == 70;
	}

	actions
	{
		Teleport(Event Player, Vector(60, 3.298, -43.000));
		Set Status(Event Player, Null, Rooted, 9999);
		Create In-World Text(All Players(Team 2), String("Destroy", Null, Null, Null), Event Player, 2, Clip Against Surfaces,
			Visible To Position and String);
		Create Icon(All Players(All Teams), Players On Hero(Hero(Torbjörn), Team 1), Skull, Visible To and Position, Team 1, True);
		Create In-World Text(All Players(Team 1), String("Defend", Null, Null, Null), Event Player, 2, Clip Against Surfaces,
			Visible To Position and String);
		disabled Set Move Speed(Event Player, 0.500);
		Modify Global Variable(Z, Add, 1);
		Set Healing Received(Event Player, 5);
		Set Max Health(Event Player, 120);
		Set Gravity(Event Player, 9999);
		disabled Heal(Event Player, Null, 9999);
		Set Damage Received(Event Player, 110);
	}
}

rule("torb 2 setup")
{
	event
	{
		Ongoing - Each Player;
		Team 2;
		Torbjörn;
	}

	conditions
	{
		disabled Is In Spawn Room(Event Player) == True;
		Global Variable(Z) <= 1;
		Global Variable(Y) == 70;
	}

	actions
	{
		Teleport(Event Player, Vector(49, 266.298, 330));
		Set Status(Event Player, Null, Rooted, 9999);
		Create In-World Text(All Players(Team 1), String("Destroy", Null, Null, Null), Event Player, 2, Clip Against Surfaces,
			Visible To Position and String);
		Create Icon(All Players(All Teams), Players On Hero(Hero(Torbjörn), Team 2), Skull, Visible To and Position, Team 2, True);
		Create In-World Text(All Players(Team 2), String("Defend", Null, Null, Null), Event Player, 2, Clip Against Surfaces,
			Visible To Position and String);
		disabled Set Move Speed(Event Player, 0.500);
		Modify Global Variable(Z, Add, 1);
		Set Healing Received(Event Player, 5);
		Set Max Health(Event Player, 120);
		disabled Heal(Event Player, Null, 9999);
		Set Damage Received(Event Player, 110);
	}
}

rule("Torb 1 TP")
{
	event
	{
		Ongoing - Each Player;
		Team 1;
		Torbjörn;
	}

	conditions
	{
		Is Game In Progress == True;
		Is Assembling Heroes == False;
		Is In Spawn Room(Event Player) == False;
		Distance Between(Event Player, Vector(60, 3.298, -43.000)) >= Absolute Value(5);
		Global Variable(Y) == 70;
	}

	actions
	{
		Teleport(Event Player, Vector(60, 3.298, -43.000));
		Wait(0.500, Ignore Condition);
		Loop If Condition Is True;
	}
}

rule("Torb 2 TP")
{
	event
	{
		Ongoing - Each Player;
		Team 2;
		Torbjörn;
	}

	conditions
	{
		Is Game In Progress == True;
		Is Assembling Heroes == False;
		Is In Spawn Room(Event Player) == False;
		Distance Between(Event Player, Vector(49, 266.298, 330)) >= Absolute Value(5);
		Global Variable(Y) == 70;
	}

	actions
	{
		Teleport(Event Player, Vector(49, 266.298, 330));
		Wait(0.500, Ignore Condition);
		Loop If Condition Is True;
	}
}

rule("VISUALS")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	conditions
	{
		Global Variable(Y) == 70;
	}

	actions
	{
		Create Effect(All Players(All Teams), Ring, Team 1, Vector(60, 3.349, -43.000), 10, Visible To Position and Radius);
		Create Effect(All Players(All Teams), Light Shaft, Team 1, Vector(60, 1, -43.000), 3, Position and Radius);
		Create Effect(All Players(All Teams), Ring, Team 2, Vector(49, 265.349, 330), 10, Visible To Position and Radius);
		Create Effect(All Players(All Teams), Light Shaft, Team 2, Vector(49, 260, 330), 3, Position and Radius);
	}
}

rule("-------------Ilios--------------")
{
	event
	{
		Ongoing - Global;
	}
}

rule("------------Nepal-------------")
{
	event
	{
		Ongoing - Global;
	}
}

rule("------------Oasis-------------")
{
	event
	{
		Ongoing - Global;
	}
}

Changelog

about 1 month ago 2.3.0

Changed the Red "Exit" Portals from "Bad Aura" to "Good Aura"

The Portals will now Display a tag, where it leads to. (For Example: "GREEN ZONE CONNECTED" or for Red Portals "ZONE DISCONNECTED")

If a Teammate heals the Tower, the Warning message now will not be displayed anymore.

D1Q9Q
click to copy
about 1 month ago 2.3.0

Changed the Red "Exit" Portals from "Bad Aura" to "Good Aura"

The Portals will now Display a tag, where it leads to. (For Example: "GREEN ZONE CONNECTED" or for Red Portals "ZONE DISCONNECTED")

If a Teammate heals the Tower, the Warning message now will not be displayed anymore.

BHBSG
click to copy
about 1 month ago 2.2.0

Changed the in-game description a little bit.

If the ally Tower is under attack, it will display a big message "TORBJORN UNDER ATTACK"

Fixed the Facing of the Player, when getting teleported, so they dont fall off the Map instantly.

MVMS3
click to copy
about 1 month ago 2.1.1

Changed the in-game description a little bit.

V878J
click to copy
about 1 month ago 2.1.0

Fixed a Bug that the Torbjorn will be teleported even if he is already at the specified location.

DGTNX
click to copy
about 1 month ago 2.0.2

Adding the Map-Code to Map-Based Rules, so it is easier to add new maps to this gamemode.

Thanks to KevlaR, the creator of Hot Potato, where i found the rule for determining the map.

07YKN
click to copy
about 1 month ago 2.0.1

Rearrangement and categorization of rules, so maybe it is easier to add more maps to the game.

887KX
click to copy
about 1 month ago 2.0.0

If you walk through a Portal, everyone would be teleported.

The Torbjorns will start to move (but i dont know why my change fixed it lol)

I changed the Portals mechanic, so you dont have to press "Interact" or "Crouch".

I also moved some Portals to other locations.

I changed the recieved damage, recieved heal, damage and max health of the Tower.

MXHS4
click to copy