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

Category:
Custom UI

Author:
OrangeUtan

Rating:
10

Version:
1.3.0

Posted:
10 months ago

Last updated:
2 days ago

Tags:
ui menu radial selection utility

Project Links

Share this workshop!

Options

A menu where the items are positioned on a circle around a center point.

How to use: Hold “interact” to open the menu. Release “interact” on the hero you want to switch to.

Features:

  • Shows only allowed heroes of the player
  • Heroes are sorted by type
  • Animated opening/closing sequence
  • Radius is dependent on the number of items
  • Menu follows the players position and reticle
variables
{
    player:
        0: menuItems
        1: menuCenter
        2: menuItemPositions
        3: menuItemIDs
        4: menuScale
        5: menuVisibleTo
        6: angleFromMenuCenter
        7: tmp
}

// Extended collection variables:
// global [0]: _arrayBuilderStore

subroutines
{
    0: updateMenu
}

rule("Update Menu")
{

	event
	{
		Subroutine;
		updateMenu;
	}
	
	// Action count: 50
	actions
	{
		Set Player Variable(Event Player, menuItems, Filtered Array(Append To Array(Append To Array(Append To Array(Empty Array, All Support Heroes), All Tank Heroes), All Damage Heroes), Array Contains(Allowed Heroes(Event Player), Current Array Element)));
		Set Player Variable(Event Player, menuItemPositions, Empty Array);
		If(Compare(Count Of(Player Variable(Event Player, menuItems)), <=, 2));
			Set Player Variable(Event Player, menuItemPositions, Append To Array(Append To Array(Empty Array, Left), Right));
		Else;
			For Player Variable(Event Player, tmp, 0, Count Of(Player Variable(Event Player, menuItems)), 1);
				Set Player Variable At Index(Event Player, menuItemPositions, Player Variable(Event Player, tmp), Vector(Sine From Degrees(Multiply(Divide(360, Count Of(Player Variable(Event Player, menuItems))), Player Variable(Event Player, tmp))), Cosine From Degrees(Multiply(Divide(360, Count Of(Player Variable(Event Player, menuItems))), Player Variable(Event Player, tmp))), 0));
			End;
		End;
		For Player Variable(Event Player, tmp, 0, Count Of(Player Variable(Event Player, menuItemIDs)), 1);
			Destroy In-World Text(Value In Array(Player Variable(Event Player, menuItemIDs), Player Variable(Event Player, tmp)));
		End;
		Set Player Variable(Event Player, menuItemIDs, Empty Array);
		Set Player Variable(Event Player, tmp, Add(Last Text ID, 1));
		Skip(Subtract(31, Count Of(Player Variable(Event Player, menuItems))));
		Create In-World Text(Player Variable(Event Player, menuVisibleTo), Hero Icon String(Value In Array(Player Variable(Event Player, menuItems), 30)), World Vector Of(Add(Local Vector Of(Add(Eye Position(Event Player), Player Variable(Event Player, menuCenter)), Event Player, Rotation), Multiply(Value In Array(Player Variable(Event Player, menuItemPositions), 30), Player Variable(Event Player, menuScale))), Event Player, Rotation), 2.5, Do Not Clip, Visible To Position and String, White, Default Visibility);
		Create In-World Text(Player Variable(Event Player, menuVisibleTo), Hero Icon String(Value In Array(Player Variable(Event Player, menuItems), 29)), World Vector Of(Add(Local Vector Of(Add(Eye Position(Event Player), Player Variable(Event Player, menuCenter)), Event Player, Rotation), Multiply(Value In Array(Player Variable(Event Player, menuItemPositions), 29), Player Variable(Event Player, menuScale))), Event Player, Rotation), 2.5, Do Not Clip, Visible To Position and String, White, Default Visibility);
		Create In-World Text(Player Variable(Event Player, menuVisibleTo), Hero Icon String(Value In Array(Player Variable(Event Player, menuItems), 28)), World Vector Of(Add(Local Vector Of(Add(Eye Position(Event Player), Player Variable(Event Player, menuCenter)), Event Player, Rotation), Multiply(Value In Array(Player Variable(Event Player, menuItemPositions), 28), Player Variable(Event Player, menuScale))), Event Player, Rotation), 2.5, Do Not Clip, Visible To Position and String, White, Default Visibility);
		Create In-World Text(Player Variable(Event Player, menuVisibleTo), Hero Icon String(Value In Array(Player Variable(Event Player, menuItems), 27)), World Vector Of(Add(Local Vector Of(Add(Eye Position(Event Player), Player Variable(Event Player, menuCenter)), Event Player, Rotation), Multiply(Value In Array(Player Variable(Event Player, menuItemPositions), 27), Player Variable(Event Player, menuScale))), Event Player, Rotation), 2.5, Do Not Clip, Visible To Position and String, White, Default Visibility);
		Create In-World Text(Player Variable(Event Player, menuVisibleTo), Hero Icon String(Value In Array(Player Variable(Event Player, menuItems), 26)), World Vector Of(Add(Local Vector Of(Add(Eye Position(Event Player), Player Variable(Event Player, menuCenter)), Event Player, Rotation), Multiply(Value In Array(Player Variable(Event Player, menuItemPositions), 26), Player Variable(Event Player, menuScale))), Event Player, Rotation), 2.5, Do Not Clip, Visible To Position and String, White, Default Visibility);
		Create In-World Text(Player Variable(Event Player, menuVisibleTo), Hero Icon String(Value In Array(Player Variable(Event Player, menuItems), 25)), World Vector Of(Add(Local Vector Of(Add(Eye Position(Event Player), Player Variable(Event Player, menuCenter)), Event Player, Rotation), Multiply(Value In Array(Player Variable(Event Player, menuItemPositions), 25), Player Variable(Event Player, menuScale))), Event Player, Rotation), 2.5, Do Not Clip, Visible To Position and String, White, Default Visibility);
		Create In-World Text(Player Variable(Event Player, menuVisibleTo), Hero Icon String(Value In Array(Player Variable(Event Player, menuItems), 24)), World Vector Of(Add(Local Vector Of(Add(Eye Position(Event Player), Player Variable(Event Player, menuCenter)), Event Player, Rotation), Multiply(Value In Array(Player Variable(Event Player, menuItemPositions), 24), Player Variable(Event Player, menuScale))), Event Player, Rotation), 2.5, Do Not Clip, Visible To Position and String, White, Default Visibility);
		Create In-World Text(Player Variable(Event Player, menuVisibleTo), Hero Icon String(Value In Array(Player Variable(Event Player, menuItems), 23)), World Vector Of(Add(Local Vector Of(Add(Eye Position(Event Player), Player Variable(Event Player, menuCenter)), Event Player, Rotation), Multiply(Value In Array(Player Variable(Event Player, menuItemPositions), 23), Player Variable(Event Player, menuScale))), Event Player, Rotation), 2.5, Do Not Clip, Visible To Position and String, White, Default Visibility);
		Create In-World Text(Player Variable(Event Player, menuVisibleTo), Hero Icon String(Value In Array(Player Variable(Event Player, menuItems), 22)), World Vector Of(Add(Local Vector Of(Add(Eye Position(Event Player), Player Variable(Event Player, menuCenter)), Event Player, Rotation), Multiply(Value In Array(Player Variable(Event Player, menuItemPositions), 22), Player Variable(Event Player, menuScale))), Event Player, Rotation), 2.5, Do Not Clip, Visible To Position and String, White, Default Visibility);
		Create In-World Text(Player Variable(Event Player, menuVisibleTo), Hero Icon String(Value In Array(Player Variable(Event Player, menuItems), 21)), World Vector Of(Add(Local Vector Of(Add(Eye Position(Event Player), Player Variable(Event Player, menuCenter)), Event Player, Rotation), Multiply(Value In Array(Player Variable(Event Player, menuItemPositions), 21), Player Variable(Event Player, menuScale))), Event Player, Rotation), 2.5, Do Not Clip, Visible To Position and String, White, Default Visibility);
		Create In-World Text(Player Variable(Event Player, menuVisibleTo), Hero Icon String(Value In Array(Player Variable(Event Player, menuItems), 20)), World Vector Of(Add(Local Vector Of(Add(Eye Position(Event Player), Player Variable(Event Player, menuCenter)), Event Player, Rotation), Multiply(Value In Array(Player Variable(Event Player, menuItemPositions), 20), Player Variable(Event Player, menuScale))), Event Player, Rotation), 2.5, Do Not Clip, Visible To Position and String, White, Default Visibility);
		Create In-World Text(Player Variable(Event Player, menuVisibleTo), Hero Icon String(Value In Array(Player Variable(Event Player, menuItems), 19)), World Vector Of(Add(Local Vector Of(Add(Eye Position(Event Player), Player Variable(Event Player, menuCenter)), Event Player, Rotation), Multiply(Value In Array(Player Variable(Event Player, menuItemPositions), 19), Player Variable(Event Player, menuScale))), Event Player, Rotation), 2.5, Do Not Clip, Visible To Position and String, White, Default Visibility);
		Create In-World Text(Player Variable(Event Player, menuVisibleTo), Hero Icon String(Value In Array(Player Variable(Event Player, menuItems), 18)), World Vector Of(Add(Local Vector Of(Add(Eye Position(Event Player), Player Variable(Event Player, menuCenter)), Event Player, Rotation), Multiply(Value In Array(Player Variable(Event Player, menuItemPositions), 18), Player Variable(Event Player, menuScale))), Event Player, Rotation), 2.5, Do Not Clip, Visible To Position and String, White, Default Visibility);
		Create In-World Text(Player Variable(Event Player, menuVisibleTo), Hero Icon String(Value In Array(Player Variable(Event Player, menuItems), 17)), World Vector Of(Add(Local Vector Of(Add(Eye Position(Event Player), Player Variable(Event Player, menuCenter)), Event Player, Rotation), Multiply(Value In Array(Player Variable(Event Player, menuItemPositions), 17), Player Variable(Event Player, menuScale))), Event Player, Rotation), 2.5, Do Not Clip, Visible To Position and String, White, Default Visibility);
		Create In-World Text(Player Variable(Event Player, menuVisibleTo), Hero Icon String(Value In Array(Player Variable(Event Player, menuItems), 16)), World Vector Of(Add(Local Vector Of(Add(Eye Position(Event Player), Player Variable(Event Player, menuCenter)), Event Player, Rotation), Multiply(Value In Array(Player Variable(Event Player, menuItemPositions), 16), Player Variable(Event Player, menuScale))), Event Player, Rotation), 2.5, Do Not Clip, Visible To Position and String, White, Default Visibility);
		Create In-World Text(Player Variable(Event Player, menuVisibleTo), Hero Icon String(Value In Array(Player Variable(Event Player, menuItems), 15)), World Vector Of(Add(Local Vector Of(Add(Eye Position(Event Player), Player Variable(Event Player, menuCenter)), Event Player, Rotation), Multiply(Value In Array(Player Variable(Event Player, menuItemPositions), 15), Player Variable(Event Player, menuScale))), Event Player, Rotation), 2.5, Do Not Clip, Visible To Position and String, White, Default Visibility);
		Create In-World Text(Player Variable(Event Player, menuVisibleTo), Hero Icon String(Value In Array(Player Variable(Event Player, menuItems), 14)), World Vector Of(Add(Local Vector Of(Add(Eye Position(Event Player), Player Variable(Event Player, menuCenter)), Event Player, Rotation), Multiply(Value In Array(Player Variable(Event Player, menuItemPositions), 14), Player Variable(Event Player, menuScale))), Event Player, Rotation), 2.5, Do Not Clip, Visible To Position and String, White, Default Visibility);
		Create In-World Text(Player Variable(Event Player, menuVisibleTo), Hero Icon String(Value In Array(Player Variable(Event Player, menuItems), 13)), World Vector Of(Add(Local Vector Of(Add(Eye Position(Event Player), Player Variable(Event Player, menuCenter)), Event Player, Rotation), Multiply(Value In Array(Player Variable(Event Player, menuItemPositions), 13), Player Variable(Event Player, menuScale))), Event Player, Rotation), 2.5, Do Not Clip, Visible To Position and String, White, Default Visibility);
		Create In-World Text(Player Variable(Event Player, menuVisibleTo), Hero Icon String(Value In Array(Player Variable(Event Player, menuItems), 12)), World Vector Of(Add(Local Vector Of(Add(Eye Position(Event Player), Player Variable(Event Player, menuCenter)), Event Player, Rotation), Multiply(Value In Array(Player Variable(Event Player, menuItemPositions), 12), Player Variable(Event Player, menuScale))), Event Player, Rotation), 2.5, Do Not Clip, Visible To Position and String, White, Default Visibility);
		Create In-World Text(Player Variable(Event Player, menuVisibleTo), Hero Icon String(Value In Array(Player Variable(Event Player, menuItems), 11)), World Vector Of(Add(Local Vector Of(Add(Eye Position(Event Player), Player Variable(Event Player, menuCenter)), Event Player, Rotation), Multiply(Value In Array(Player Variable(Event Player, menuItemPositions), 11), Player Variable(Event Player, menuScale))), Event Player, Rotation), 2.5, Do Not Clip, Visible To Position and String, White, Default Visibility);
		Create In-World Text(Player Variable(Event Player, menuVisibleTo), Hero Icon String(Value In Array(Player Variable(Event Player, menuItems), 10)), World Vector Of(Add(Local Vector Of(Add(Eye Position(Event Player), Player Variable(Event Player, menuCenter)), Event Player, Rotation), Multiply(Value In Array(Player Variable(Event Player, menuItemPositions), 10), Player Variable(Event Player, menuScale))), Event Player, Rotation), 2.5, Do Not Clip, Visible To Position and String, White, Default Visibility);
		Create In-World Text(Player Variable(Event Player, menuVisibleTo), Hero Icon String(Value In Array(Player Variable(Event Player, menuItems), 9)), World Vector Of(Add(Local Vector Of(Add(Eye Position(Event Player), Player Variable(Event Player, menuCenter)), Event Player, Rotation), Multiply(Value In Array(Player Variable(Event Player, menuItemPositions), 9), Player Variable(Event Player, menuScale))), Event Player, Rotation), 2.5, Do Not Clip, Visible To Position and String, White, Default Visibility);
		Create In-World Text(Player Variable(Event Player, menuVisibleTo), Hero Icon String(Value In Array(Player Variable(Event Player, menuItems), 8)), World Vector Of(Add(Local Vector Of(Add(Eye Position(Event Player), Player Variable(Event Player, menuCenter)), Event Player, Rotation), Multiply(Value In Array(Player Variable(Event Player, menuItemPositions), 8), Player Variable(Event Player, menuScale))), Event Player, Rotation), 2.5, Do Not Clip, Visible To Position and String, White, Default Visibility);
		Create In-World Text(Player Variable(Event Player, menuVisibleTo), Hero Icon String(Value In Array(Player Variable(Event Player, menuItems), 7)), World Vector Of(Add(Local Vector Of(Add(Eye Position(Event Player), Player Variable(Event Player, menuCenter)), Event Player, Rotation), Multiply(Value In Array(Player Variable(Event Player, menuItemPositions), 7), Player Variable(Event Player, menuScale))), Event Player, Rotation), 2.5, Do Not Clip, Visible To Position and String, White, Default Visibility);
		Create In-World Text(Player Variable(Event Player, menuVisibleTo), Hero Icon String(Value In Array(Player Variable(Event Player, menuItems), 6)), World Vector Of(Add(Local Vector Of(Add(Eye Position(Event Player), Player Variable(Event Player, menuCenter)), Event Player, Rotation), Multiply(Value In Array(Player Variable(Event Player, menuItemPositions), 6), Player Variable(Event Player, menuScale))), Event Player, Rotation), 2.5, Do Not Clip, Visible To Position and String, White, Default Visibility);
		Create In-World Text(Player Variable(Event Player, menuVisibleTo), Hero Icon String(Value In Array(Player Variable(Event Player, menuItems), 5)), World Vector Of(Add(Local Vector Of(Add(Eye Position(Event Player), Player Variable(Event Player, menuCenter)), Event Player, Rotation), Multiply(Value In Array(Player Variable(Event Player, menuItemPositions), 5), Player Variable(Event Player, menuScale))), Event Player, Rotation), 2.5, Do Not Clip, Visible To Position and String, White, Default Visibility);
		Create In-World Text(Player Variable(Event Player, menuVisibleTo), Hero Icon String(Value In Array(Player Variable(Event Player, menuItems), 4)), World Vector Of(Add(Local Vector Of(Add(Eye Position(Event Player), Player Variable(Event Player, menuCenter)), Event Player, Rotation), Multiply(Value In Array(Player Variable(Event Player, menuItemPositions), 4), Player Variable(Event Player, menuScale))), Event Player, Rotation), 2.5, Do Not Clip, Visible To Position and String, White, Default Visibility);
		Create In-World Text(Player Variable(Event Player, menuVisibleTo), Hero Icon String(Value In Array(Player Variable(Event Player, menuItems), 3)), World Vector Of(Add(Local Vector Of(Add(Eye Position(Event Player), Player Variable(Event Player, menuCenter)), Event Player, Rotation), Multiply(Value In Array(Player Variable(Event Player, menuItemPositions), 3), Player Variable(Event Player, menuScale))), Event Player, Rotation), 2.5, Do Not Clip, Visible To Position and String, White, Default Visibility);
		Create In-World Text(Player Variable(Event Player, menuVisibleTo), Hero Icon String(Value In Array(Player Variable(Event Player, menuItems), 2)), World Vector Of(Add(Local Vector Of(Add(Eye Position(Event Player), Player Variable(Event Player, menuCenter)), Event Player, Rotation), Multiply(Value In Array(Player Variable(Event Player, menuItemPositions), 2), Player Variable(Event Player, menuScale))), Event Player, Rotation), 2.5, Do Not Clip, Visible To Position and String, White, Default Visibility);
		Create In-World Text(Player Variable(Event Player, menuVisibleTo), Hero Icon String(Value In Array(Player Variable(Event Player, menuItems), 1)), World Vector Of(Add(Local Vector Of(Add(Eye Position(Event Player), Player Variable(Event Player, menuCenter)), Event Player, Rotation), Multiply(Value In Array(Player Variable(Event Player, menuItemPositions), 1), Player Variable(Event Player, menuScale))), Event Player, Rotation), 2.5, Do Not Clip, Visible To Position and String, White, Default Visibility);
		Create In-World Text(Player Variable(Event Player, menuVisibleTo), Hero Icon String(First Of(Player Variable(Event Player, menuItems))), World Vector Of(Add(Local Vector Of(Add(Eye Position(Event Player), Player Variable(Event Player, menuCenter)), Event Player, Rotation), Multiply(First Of(Player Variable(Event Player, menuItemPositions)), Player Variable(Event Player, menuScale))), Event Player, Rotation), 2.5, Do Not Clip, Visible To Position and String, White, Default Visibility);
		For Player Variable(Event Player, tmp, Player Variable(Event Player, tmp), Add(Last Text ID, 1), 1);
			Set Player Variable(Event Player, menuItemIDs, Append To Array(Player Variable(Event Player, menuItemIDs), Player Variable(Event Player, tmp)));
		End;
		Set Player Variable(Event Player, menuScale, Add(0.2, Multiply(Count Of(Player Variable(Event Player, menuItems)), 0.03)));
	}
}

rule("Init Player")
{

	event
	{
		Ongoing - Each Player;
		All;
		All;
	}
	
	// Action count: 2
	actions
	{
		Chase Player Variable At Rate(Event Player, angleFromMenuCenter, Horizontal Angle Towards(Event Player, World Vector Of(Local Vector Of(Add(Add(Eye Position(Event Player), Vector(0, 0.15, 0)), Player Variable(Event Player, menuCenter)), Event Player, Rotation), Event Player, Rotation)), 360, Destination And Rate);
		Call Subroutine(updateMenu);
	}
}

rule("Open Menu")
{

	event
	{
		Ongoing - Each Player;
		All;
		All;
	}
	
	conditions
	{
		Is Button Held(Event Player, Interact) == True;
		Player Variable(Event Player, menuScale) == 0;
	}
	
	// Action count: 3
	actions
	{
		Set Player Variable(Event Player, menuVisibleTo, Event Player);
		Set Player Variable(Event Player, menuCenter, Add(Vector(-0, -0.15, -0), Multiply(2, Direction From Angles(Horizontal Facing Angle Of(Event Player), Min(40, Max(-40, Vertical Facing Angle Of(Event Player)))))));
		Chase Player Variable Over Time(Event Player, menuScale, Add(0.2, Multiply(Count Of(Player Variable(Event Player, menuItems)), 0.03)), 0.15, Destination And Duration);
	}
}

rule("Close Menu")
{

	event
	{
		Ongoing - Each Player;
		All;
		All;
	}
	
	conditions
	{
		Not(Is Button Held(Event Player, Interact)) == True;
		Player Variable(Event Player, menuScale) > 0;
	}
	
	// Action count: 3
	actions
	{
		Chase Player Variable Over Time(Event Player, menuScale, 0, 0.15, Destination And Duration);
		Wait(0.12, Ignore Condition);
		Set Player Variable(Event Player, menuVisibleTo, Empty Array);
	}
}

rule("Let menu follow reticle")
{

	event
	{
		Ongoing - Each Player;
		All;
		All;
	}
	
	conditions
	{
		Player Variable(Event Player, menuScale) == Add(0.2, Multiply(Count Of(Player Variable(Event Player, menuItems)), 0.03));
		Absolute Value(Player Variable(Event Player, angleFromMenuCenter)) > Multiply(30, Add(Player Variable(Event Player, menuScale), 0.5));
	}
	
	// Action count: 1
	actions
	{
		Chase Player Variable Over Time(Event Player, menuCenter, Add(Vector(-0, -0.15, -0), Multiply(2, Direction From Angles(Add(Horizontal Facing Angle Of(Event Player), Multiply(Divide(Player Variable(Event Player, angleFromMenuCenter), Absolute Value(Player Variable(Event Player, angleFromMenuCenter))), 28)), Min(40, Max(-40, Vertical Facing Angle Of(Event Player)))))), 0.1, Destination And Duration);
	}
}

rule("Stop menu following reticle")
{

	event
	{
		Ongoing - Each Player;
		All;
		All;
	}
	
	conditions
	{
		Absolute Value(Player Variable(Event Player, angleFromMenuCenter)) < Multiply(30, Add(Player Variable(Event Player, menuScale), 0.5));
	}
	
	// Action count: 1
	actions
	{
		Stop Chasing Player Variable(Event Player, menuCenter);
	}
}

rule("Select Menu Item")
{

	event
	{
		Ongoing - Each Player;
		All;
		All;
	}
	
	conditions
	{
		Not(Is Button Held(Event Player, Interact)) == True;
		Player Variable(Event Player, menuScale) == Add(0.2, Multiply(Count Of(Player Variable(Event Player, menuItems)), 0.03));
	}
	
	// Action count: 10
	actions
	{
		If(Compare(Hero Of(Event Player), ==, Hero(Winston)));
			Set Player Variable(Event Player, tmp, Vector(0, 0.3, 0));
		Else;
			Set Player Variable(Event Player, tmp, Vector(0, 0.15, 0));
		End;
		Set Player Variable(Event Player, tmp, Index Of Array Value(Player Variable(Event Player, menuItemPositions), First Of(Filtered Array(Player Variable(Event Player, menuItemPositions), Compare(Angle Between Vectors(Facing Direction Of(Event Player), Direction Towards(Eye Position(Event Player), World Vector Of(Add(Local Vector Of(Add(Add(Eye Position(Event Player), Player Variable(Event Player, menuCenter)), Player Variable(Event Player, tmp)), Event Player, Rotation), Multiply(Current Array Element, Player Variable(Event Player, menuScale))), Event Player, Rotation))), <, 0.5)))));
		If(Compare(Player Variable(Event Player, tmp), >=, 0));
			Start Forcing Player To Be Hero(Event Player, Value In Array(Player Variable(Event Player, menuItems), Player Variable(Event Player, tmp)));
			Stop Forcing Player To Be Hero(Event Player);
		End;
	}
}

rule("Player leaves")
{

	event
	{
		Player Left Match;
		All;
		All;
	}
	
	// Action count: 4
	actions
	{
		For Player Variable(Event Player, tmp, 0, Count Of(Player Variable(Event Player, menuItemIDs)), 1);
			Destroy In-World Text(Value In Array(Player Variable(Event Player, menuItemIDs), Player Variable(Event Player, tmp)));
		End;
		Set Player Variable(Event Player, menuItemIDs, Empty Array);
	}
}

rule("Update menu if number of allowed heroes change")
{

	event
	{
		Ongoing - Each Player;
		All;
		All;
	}
	
	conditions
	{
		Count Of(Player Variable(Event Player, menuItems)) != Count Of(Allowed Heroes(Event Player));
	}
	
	// Action count: 1
	actions
	{
		Call Subroutine(updateMenu);
	}
}

Changelog

2 days ago 1.3.0

  • rewritten in Deltins scripting language
  • ~20% smaller while having more features
  • Menu now follows reticle
  • Heroes are now sorted by type
  • Winston can now properly use the menu :)

ATARR
click to copy
2 days ago 1.23.0

  • rewritten in Deltins scripting language
  • ~20% smaller while having more features
  • Menu now follows reticle
  • Heroes are now sorted by type
  • Winston can now properly use the menu :)

ATARR
click to copy
10 months ago 1.2.3

This revision contains no notes

VHKQ9
click to copy