Create
Return to post

Comparing difference between and

View raw
  • variables
  • {
  • global:
  • 110: _extendedGlobalCollection
  • 111: _arrayBuilder
  • 112: _classIndexes
  • 113: _objectVariable_0
  • 114: _objectVariable_1
  • 115: _objectVariable_2
  • 116: _objectVariable_3
  • 117: _objectVariable_4
  • 118: _objectVariable_5
  • 119: _objectVariable_6
  • 120: _objectVariable_7
  • 121: heroesSorted
  • 107: _extendedGlobalCollection
  • 108: _arrayBuilder
  • 109: _classIndexes
  • 110: _objectVariable_0
  • 111: _objectVariable_1
  • 112: _objectVariable_2
  • 113: _objectVariable_3
  • 114: _objectVariable_4
  • 115: _objectVariable_5
  • 116: _objectVariable_6
  • 117: _objectVariable_7
  • 118: heroesSorted
  • 119: TankHeroes
  • 120: DamageHeroes
  • 121: SupportHeroes
  • 122: camPos
  • 123: camFacing
  • 124: liteMode
  • 125: AllCursors
  • 126: _func_recursiveContinue
  • 127: cursorsToUpdate
  • player:
  • 124: _extendedPlayerCollection
  • 125: isInHeroSelect
  • 126: cursor
  • 127: selectionIndex
  • }
  • subroutines
  • {
  • 126: switchToHero
  • 125: switchToHero
  • 126: setupHeroArrays
  • 127: sortAlphabetically
  • }
  • rule("▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒【Hero Select Anywhere by Josbird】▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Initial Global")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global._classIndexes[1000] = 0;
  • Global._classIndexes[0] = -1;
  • Global.heroesSorted = Empty Array;
  • Global.camPos = Vector(300, 300, 300);
  • Global.camFacing = Vector(0.707, 0, 0.707);
  • Global.liteMode = 1 == Workshop Setting Combo(Custom String("Hero Select Anywhere"), Custom String("Lightweight mode"), 0, Array(
  • Custom String("Off"), Custom String("On (overrides other text settings)")), 0);
  • Global.AllCursors = Empty Array;
  • Global._func_recursiveContinue = Empty Array;
  • }
  • }
  • rule("Initial Player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • Event Player.isInHeroSelect = False;
  • Event Player.selectionIndex = -1;
  • }
  • }
  • rule("[HeroSelectAnywhere.del] Hold reload to toggle hero select")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Reload)) == True;
  • }
  • actions
  • {
  • Wait(0.300, Abort When False);
  • Event Player.isInHeroSelect = !Event Player.isInHeroSelect;
  • }
  • }
  • rule("[HeroSelectAnywhere.del] Press interact to exit hero select")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.isInHeroSelect == True;
  • Is Button Held(Event Player, Button(Interact)) == True;
  • }
  • actions
  • {
  • Event Player.isInHeroSelect = False;
  • }
  • }
  • rule("[HeroSelectAnywhere.del] Pull out of hero select on death")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.isInHeroSelect == True;
  • }
  • actions
  • {
  • "test comment"
  • Event Player.isInHeroSelect = False;
  • }
  • }
  • rule("[HeroSelectAnywhere.del] Open hero select")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.isInHeroSelect == True;
  • }
  • actions
  • {
  • Disable Hero HUD(Event Player);
  • Disable Game Mode HUD(Event Player);
  • Cancel Primary Action(Event Player);
  • Set Status(Event Player, Null, Rooted, 9999);
  • Set Status(Event Player, Null, Hacked, 9999);
  • Start Camera(Event Player, Global.camPos, Global.camPos + Global.camFacing, 0);
  • If(!Global.liteMode);
  • Event Player.selectionIndex = Hero Of(Event Player) == Null ? Random Value In Array(Mapped Array(Allowed Heroes(Event Player),
  • Array Contains(Allowed Heroes(Event Player), Current Array Element))) : Index Of Array Value(Global.heroesSorted, Hero Of(
  • Event Player));
  • End;
  • Wait(0.016, Ignore Condition);
  • Event Player._extendedPlayerCollection[0] = Index Of Array Value(Global._classIndexes, 0);
  • Global._classIndexes[First Of(Event Player._extendedPlayerCollection)] = 3;
  • Global._objectVariable_2[First Of(Event Player._extendedPlayerCollection)] = 0;
  • Global._objectVariable_3[First Of(Event Player._extendedPlayerCollection)] = 0;
  • Global._objectVariable_0[First Of(Event Player._extendedPlayerCollection)] = Event Player;
  • Global._objectVariable_1[First Of(Event Player._extendedPlayerCollection)] = Facing Direction Of(Event Player);
  • Set Aim Speed(Event Player, 15);
  • Set Primary Fire Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, False);
  • Global._objectVariable_4[First Of(Event Player._extendedPlayerCollection)] = -3.750;
  • Global._objectVariable_5[First Of(Event Player._extendedPlayerCollection)] = 3.750;
  • Global._objectVariable_6[First Of(Event Player._extendedPlayerCollection)] = -2;
  • Global._objectVariable_7[First Of(Event Player._extendedPlayerCollection)] = 2;
  • Modify Global Variable(AllCursors, Append To Array, First Of(Event Player._extendedPlayerCollection));
  • Event Player.cursor = First Of(Event Player._extendedPlayerCollection);
  • }
  • }
  • rule("[HeroSelectAnywhere.del] Close hero select")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.cursor != Null;
  • !Event Player.isInHeroSelect == True;
  • }
  • actions
  • {
  • Enable Hero HUD(Event Player);
  • Enable Game Mode HUD(Event Player);
  • Clear Status(Event Player, Rooted);
  • Clear Status(Event Player, Hacked);
  • Stop Camera(Event Player);
  • Set Aim Speed(Global._objectVariable_0[Event Player.cursor], 100);
  • Set Primary Fire Enabled(Global._objectVariable_0[Event Player.cursor], True);
  • Set Secondary Fire Enabled(Global._objectVariable_0[Event Player.cursor], True);
  • Global._classIndexes[Event Player.cursor] = 0;
  • Global._objectVariable_0[Event Player.cursor] = 0;
  • Global._objectVariable_1[Event Player.cursor] = 0;
  • Global._objectVariable_2[Event Player.cursor] = 0;
  • Global._objectVariable_3[Event Player.cursor] = 0;
  • Global._objectVariable_4[Event Player.cursor] = 0;
  • Global._objectVariable_5[Event Player.cursor] = 0;
  • Global._objectVariable_6[Event Player.cursor] = 0;
  • Global._objectVariable_7[Event Player.cursor] = 0;
  • Event Player.cursor = Null;
  • }
  • }
  • rule("[HeroSelectAnywhere.del] (Subroutine) Switch hero")
  • {
  • event
  • {
  • Subroutine;
  • switchToHero;
  • }
  • actions
  • {
  • Start Forcing Player To Be Hero(Event Player, Global._extendedGlobalCollection[1]);
  • "Disable this action if Respawn As Random Hero is enabled"
  • If(!Workshop Setting Toggle(Custom String("Hero Select Anywhere"), Custom String("\"Respawn as random hero\" compatibility"),
  • False, 8));
  • Stop Forcing Player To Be Hero(Event Player);
  • End;
  • }
  • }
  • rule("[HeroSelectAnywhere.del] Click logic")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.isInHeroSelect == True;
  • Is Button Held(Event Player, Button(Primary Fire)) == True;
  • }
  • actions
  • {
  • If(!Global.liteMode);
  • If(Max(Global._objectVariable_4[Event Player.cursor], Min(Angle Difference(Horizontal Angle From Direction(Facing Direction Of(
  • Global._objectVariable_0[Event Player.cursor])), Horizontal Angle From Direction(
  • Global._objectVariable_1[Event Player.cursor])) + Global._objectVariable_2[Event Player.cursor],
  • Global._objectVariable_5[Event Player.cursor])) >= -3.500 && Max(Global._objectVariable_4[Event Player.cursor], Min(
  • Angle Difference(Horizontal Angle From Direction(Facing Direction Of(Global._objectVariable_0[Event Player.cursor])),
  • Horizontal Angle From Direction(Global._objectVariable_1[Event Player.cursor]))
  • + Global._objectVariable_2[Event Player.cursor], Global._objectVariable_5[Event Player.cursor])) <= 3.500 && Max(
  • Global._objectVariable_6[Event Player.cursor], Min(Angle Difference(Vertical Angle From Direction(Facing Direction Of(
  • Global._objectVariable_0[Event Player.cursor])), Vertical Angle From Direction(Global._objectVariable_1[Event Player.cursor]))
  • + Global._objectVariable_3[Event Player.cursor], Global._objectVariable_7[Event Player.cursor])) >= -1 - 7 / Count Of(
  • Global.heroesSorted) / 2 * 1.500 && Max(Global._objectVariable_6[Event Player.cursor], Min(Angle Difference(
  • Vertical Angle From Direction(Facing Direction Of(Global._objectVariable_0[Event Player.cursor])),
  • Vertical Angle From Direction(Global._objectVariable_1[Event Player.cursor])) + Global._objectVariable_3[Event Player.cursor],
  • Global._objectVariable_7[Event Player.cursor])) <= -1 + 7 / Count Of(Global.heroesSorted) / 2 * 1.500 && Array Contains(
  • Allowed Heroes(Event Player), Global.heroesSorted[Round To Integer((Max(Global._objectVariable_4[Event Player.cursor], Min(
  • Angle Difference(Horizontal Angle From Direction(Facing Direction Of(Global._objectVariable_0[Event Player.cursor])),
  • Horizontal Angle From Direction(Global._objectVariable_1[Event Player.cursor]))
  • + Global._objectVariable_2[Event Player.cursor], Global._objectVariable_5[Event Player.cursor])) / (7 / Count Of(
  • Global.heroesSorted) / 2) + Count Of(Global.heroesSorted)) / 2, Down)]));
  • Event Player.selectionIndex = Round To Integer((Max(Global._objectVariable_4[Event Player.cursor], Min(Angle Difference(
  • Horizontal Angle From Direction(Facing Direction Of(Global._objectVariable_0[Event Player.cursor])),
  • Horizontal Angle From Direction(Global._objectVariable_1[Event Player.cursor]))
  • + Global._objectVariable_2[Event Player.cursor], Global._objectVariable_5[Event Player.cursor])) / (7 / Count Of(
  • Global.heroesSorted) / 2) + Count Of(Global.heroesSorted)) / 2, Down);
  • Play Effect(Event Player, Buff Impact Sound, Color(White), Global.camPos + Global.camFacing, 75);
  • Wait Until(!Is Button Held(Event Player, Button(Primary Fire)), 0.250);
  • If(Is Button Held(Event Player, Button(Primary Fire)));
  • Abort;
  • End;
  • Wait Until(Is Button Held(Event Player, Button(Primary Fire)), 0.250);
  • If(!Is Button Held(Event Player, Button(Primary Fire)));
  • Abort;
  • Else If(Round To Integer((Max(Global._objectVariable_4[Event Player.cursor], Min(Angle Difference(Horizontal Angle From Direction(
  • Facing Direction Of(Global._objectVariable_0[Event Player.cursor])), Horizontal Angle From Direction(
  • Global._objectVariable_1[Event Player.cursor])) + Global._objectVariable_2[Event Player.cursor],
  • Global._objectVariable_5[Event Player.cursor])) / (7 / Count Of(Global.heroesSorted) / 2) + Count Of(Global.heroesSorted)) / 2,
  • Down) != Event Player.selectionIndex);
  • If(Array Contains(Allowed Heroes(Event Player), Global.heroesSorted[Round To Integer((Max(
  • Global._objectVariable_4[Event Player.cursor], Min(Angle Difference(Horizontal Angle From Direction(Facing Direction Of(
  • Global._objectVariable_0[Event Player.cursor])), Horizontal Angle From Direction(
  • Global._objectVariable_1[Event Player.cursor])) + Global._objectVariable_2[Event Player.cursor],
  • Global._objectVariable_5[Event Player.cursor])) / (7 / Count Of(Global.heroesSorted) / 2) + Count Of(Global.heroesSorted)) / 2,
  • Down)]));
  • Event Player.selectionIndex = Round To Integer((Max(Global._objectVariable_4[Event Player.cursor], Min(Angle Difference(
  • Horizontal Angle From Direction(Facing Direction Of(Global._objectVariable_0[Event Player.cursor])),
  • Horizontal Angle From Direction(Global._objectVariable_1[Event Player.cursor]))
  • + Global._objectVariable_2[Event Player.cursor], Global._objectVariable_5[Event Player.cursor])) / (7 / Count Of(
  • Global.heroesSorted) / 2) + Count Of(Global.heroesSorted)) / 2, Down);
  • Play Effect(Event Player, Buff Impact Sound, Color(White), Global.camPos + Global.camFacing, 75);
  • End;
  • Abort;
  • Else;
  • Global._extendedGlobalCollection[1] = Global.heroesSorted[Event Player.selectionIndex];
  • Call Subroutine(switchToHero);
  • Event Player.isInHeroSelect = Null;
  • Wait(0.100, Ignore Condition);
  • Play Effect(Event Player, Buff Impact Sound, Color(White), Eye Position(Event Player) + Facing Direction Of(Event Player), 75);
  • End;
  • Else If(Max(Global._objectVariable_4[Event Player.cursor], Min(Angle Difference(Horizontal Angle From Direction(
  • Facing Direction Of(Global._objectVariable_0[Event Player.cursor])), Horizontal Angle From Direction(
  • Global._objectVariable_1[Event Player.cursor])) + Global._objectVariable_2[Event Player.cursor],
  • Global._objectVariable_5[Event Player.cursor])) >= 0.220 && Max(Global._objectVariable_4[Event Player.cursor], Min(
  • Angle Difference(Horizontal Angle From Direction(Facing Direction Of(Global._objectVariable_0[Event Player.cursor])),
  • Horizontal Angle From Direction(Global._objectVariable_1[Event Player.cursor]))
  • + Global._objectVariable_2[Event Player.cursor], Global._objectVariable_5[Event Player.cursor])) <= 0.880 && Max(
  • Global._objectVariable_6[Event Player.cursor], Min(Angle Difference(Vertical Angle From Direction(Facing Direction Of(
  • Global._objectVariable_0[Event Player.cursor])), Vertical Angle From Direction(Global._objectVariable_1[Event Player.cursor]))
  • + Global._objectVariable_3[Event Player.cursor], Global._objectVariable_7[Event Player.cursor])) >= -1.750 && Max(
  • Global._objectVariable_6[Event Player.cursor], Min(Angle Difference(Vertical Angle From Direction(Facing Direction Of(
  • Global._objectVariable_0[Event Player.cursor])), Vertical Angle From Direction(Global._objectVariable_1[Event Player.cursor]))
  • + Global._objectVariable_3[Event Player.cursor], Global._objectVariable_7[Event Player.cursor])) <= -1.450);
  • Event Player.isInHeroSelect = Null;
  • Wait(0.100, Ignore Condition);
  • Play Effect(Event Player, Buff Impact Sound, Color(White), Eye Position(Event Player) + Facing Direction Of(Event Player), 75);
  • Else If(Max(Global._objectVariable_4[Event Player.cursor], Min(Angle Difference(Horizontal Angle From Direction(
  • Facing Direction Of(Global._objectVariable_0[Event Player.cursor])), Horizontal Angle From Direction(
  • Global._objectVariable_1[Event Player.cursor])) + Global._objectVariable_2[Event Player.cursor],
  • Global._objectVariable_5[Event Player.cursor])) >= -0.880 && Max(Global._objectVariable_4[Event Player.cursor], Min(
  • Angle Difference(Horizontal Angle From Direction(Facing Direction Of(Global._objectVariable_0[Event Player.cursor])),
  • Horizontal Angle From Direction(Global._objectVariable_1[Event Player.cursor]))
  • + Global._objectVariable_2[Event Player.cursor], Global._objectVariable_5[Event Player.cursor])) <= 0.220 && Max(
  • Global._objectVariable_6[Event Player.cursor], Min(Angle Difference(Vertical Angle From Direction(Facing Direction Of(
  • Global._objectVariable_0[Event Player.cursor])), Vertical Angle From Direction(Global._objectVariable_1[Event Player.cursor]))
  • + Global._objectVariable_3[Event Player.cursor], Global._objectVariable_7[Event Player.cursor])) >= -1.750 && Max(
  • Global._objectVariable_6[Event Player.cursor], Min(Angle Difference(Vertical Angle From Direction(Facing Direction Of(
  • Global._objectVariable_0[Event Player.cursor])), Vertical Angle From Direction(Global._objectVariable_1[Event Player.cursor]))
  • + Global._objectVariable_3[Event Player.cursor], Global._objectVariable_7[Event Player.cursor])) <= -1.450);
  • Global._extendedGlobalCollection[1] = Global.heroesSorted[Event Player.selectionIndex];
  • Call Subroutine(switchToHero);
  • Event Player.isInHeroSelect = Null;
  • Wait(0.100, Ignore Condition);
  • Play Effect(Event Player, Buff Impact Sound, Color(White), Eye Position(Event Player) + Facing Direction Of(Event Player), 75);
  • End;
  • Else If(Max(Global._objectVariable_4[Event Player.cursor], Min(Angle Difference(Horizontal Angle From Direction(
  • Facing Direction Of(Global._objectVariable_0[Event Player.cursor])), Horizontal Angle From Direction(
  • Global._objectVariable_1[Event Player.cursor])) + Global._objectVariable_2[Event Player.cursor],
  • Global._objectVariable_5[Event Player.cursor])) >= -3.500 && Max(Global._objectVariable_4[Event Player.cursor], Min(
  • Angle Difference(Horizontal Angle From Direction(Facing Direction Of(Global._objectVariable_0[Event Player.cursor])),
  • Horizontal Angle From Direction(Global._objectVariable_1[Event Player.cursor]))
  • + Global._objectVariable_2[Event Player.cursor], Global._objectVariable_5[Event Player.cursor])) <= 3.500 && Max(
  • Global._objectVariable_6[Event Player.cursor], Min(Angle Difference(Vertical Angle From Direction(Facing Direction Of(
  • Global._objectVariable_0[Event Player.cursor])), Vertical Angle From Direction(Global._objectVariable_1[Event Player.cursor]))
  • + Global._objectVariable_3[Event Player.cursor], Global._objectVariable_7[Event Player.cursor])) >= -1 - 7 / Count Of(
  • Global.heroesSorted) / 2 * 1.500 && Max(Global._objectVariable_6[Event Player.cursor], Min(Angle Difference(
  • Vertical Angle From Direction(Facing Direction Of(Global._objectVariable_0[Event Player.cursor])),
  • Vertical Angle From Direction(Global._objectVariable_1[Event Player.cursor])) + Global._objectVariable_3[Event Player.cursor],
  • Global._objectVariable_7[Event Player.cursor])) <= -1 + 7 / Count Of(Global.heroesSorted) / 2 * 1.500 && Array Contains(
  • Allowed Heroes(Event Player), Global.heroesSorted[Round To Integer((Max(Global._objectVariable_4[Event Player.cursor], Min(
  • Angle Difference(Horizontal Angle From Direction(Facing Direction Of(Global._objectVariable_0[Event Player.cursor])),
  • Horizontal Angle From Direction(Global._objectVariable_1[Event Player.cursor]))
  • + Global._objectVariable_2[Event Player.cursor], Global._objectVariable_5[Event Player.cursor])) / (7 / Count Of(
  • Global.heroesSorted) / 2) + Count Of(Global.heroesSorted)) / 2, Down)]));
  • Global._extendedGlobalCollection[1] = Global.heroesSorted[Round To Integer((Max(Global._objectVariable_4[Event Player.cursor], Min(
  • Angle Difference(Horizontal Angle From Direction(Facing Direction Of(Global._objectVariable_0[Event Player.cursor])),
  • Horizontal Angle From Direction(Global._objectVariable_1[Event Player.cursor]))
  • + Global._objectVariable_2[Event Player.cursor], Global._objectVariable_5[Event Player.cursor])) / (7 / Count Of(
  • Global.heroesSorted) / 2) + Count Of(Global.heroesSorted)) / 2, Down)];
  • Call Subroutine(switchToHero);
  • Event Player.isInHeroSelect = Null;
  • Wait(0.100, Ignore Condition);
  • Play Effect(Event Player, Buff Impact Sound, Color(White), Eye Position(Event Player) + Facing Direction Of(Event Player), 75);
  • End;
  • }
  • }
  • rule("[HeroSelectAnywhere.del] Deselect disallowed hero")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • !Global.liteMode == True;
  • Event Player.isInHeroSelect == True;
  • !Array Contains(Allowed Heroes(Event Player), Global.heroesSorted[Event Player.selectionIndex]) == True;
  • }
  • actions
  • {
  • Event Player.selectionIndex = Hero Of(Event Player) == Null ? Random Value In Array(Mapped Array(Allowed Heroes(Event Player),
  • Array Contains(Allowed Heroes(Event Player), Current Array Element))) : Index Of Array Value(Global.heroesSorted, Hero Of(
  • Event Player));
  • }
  • }
  • rule("[StringSorting.del] Sort array alphabetically")
  • rule("[HeroSelectAnywhere.del] (Subroutine) Define hero arrays <====== [Change hero roles here]")
  • {
  • event
  • {
  • Subroutine;
  • setupHeroArrays;
  • }
  • actions
  • {
  • "Edit these arrays to move heroes between roles"
  • Global.TankHeroes = All Tank Heroes;
  • Global.DamageHeroes = All Damage Heroes;
  • Global.SupportHeroes = All Support Heroes;
  • "Example: moving Doomfist/Mei to tank, Roadhog/Zenyatta to damage, and Sombra/Symmetra to support"
  • If(1 == 0);
  • "Tank"
  • Global.TankHeroes = All Tank Heroes;
  • Global.TankHeroes = Remove From Array(Global.TankHeroes, Hero(Roadhog));
  • Global.TankHeroes = Append To Array(Global.TankHeroes, Array(Hero(Doomfist), Hero(Mei)));
  • "Damage"
  • Global.DamageHeroes = All Damage Heroes;
  • Global.DamageHeroes = Remove From Array(Global.DamageHeroes, Array(Hero(Doomfist), Hero(Mei), Hero(Sombra), Hero(Symmetra)));
  • Global.DamageHeroes = Append To Array(Global.DamageHeroes, Array(Hero(Roadhog), Hero(Zenyatta)));
  • "Support"
  • Global.SupportHeroes = All Support Heroes;
  • Global.SupportHeroes = Remove From Array(Global.SupportHeroes, Hero(Zenyatta));
  • Global.SupportHeroes = Append To Array(Global.SupportHeroes, Array(Hero(Sombra), Hero(Symmetra)));
  • End;
  • }
  • }
  • rule("[StringSorting.del] (Subroutine) Sort array alphabetically")
  • {
  • event
  • {
  • Subroutine;
  • sortAlphabetically;
  • }
  • actions
  • {
  • Global._extendedGlobalCollection[4] = Empty Array;
  • While(Count Of(Global._extendedGlobalCollection[2]) > 1);
  • Global._extendedGlobalCollection[5] = Global._extendedGlobalCollection[2][0];
  • Modify Global Variable At Index(_extendedGlobalCollection, 2, Remove From Array By Index, 0);
  • Global._extendedGlobalCollection[6] = 0;
  • While(Global._extendedGlobalCollection[6] < Count Of(Global._extendedGlobalCollection[2]));
  • Global._arrayBuilder = Global._extendedGlobalCollection[9];
  • Global._arrayBuilder[Count Of(Global._extendedGlobalCollection[9]) - 1] = Custom String("{0}",
  • Global._extendedGlobalCollection[2][Global._extendedGlobalCollection[6]]);
  • Global._extendedGlobalCollection[9] = Global._arrayBuilder;
  • Global._arrayBuilder = Global._extendedGlobalCollection[10];
  • Global._arrayBuilder[Count Of(Global._extendedGlobalCollection[10]) - 1] = Custom String("{0}",
  • Global._extendedGlobalCollection[5]);
  • Global._extendedGlobalCollection[10] = Global._arrayBuilder;
  • While(True);
  • Skip(Global._extendedGlobalCollection[7]);
  • If(Last Of(Global._extendedGlobalCollection[9]) == Last Of(Global._extendedGlobalCollection[10]));
  • Global._extendedGlobalCollection[8] = 0;
  • Skip(18);
  • Else If(String Length(Last Of(Global._extendedGlobalCollection[9])) == 0);
  • Global._extendedGlobalCollection[8] = -1;
  • Skip(15);
  • Else If(String Length(Last Of(Global._extendedGlobalCollection[10])) == 0);
  • Global._extendedGlobalCollection[8] = 1;
  • Skip(12);
  • Else If((String Contains(Custom String(" 0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoÖöPpQqRrSsTtUuÚúVvWwXxYyZz"), Char In String(
  • Last Of(Global._extendedGlobalCollection[9]), 0)) ? Index Of String Char(Custom String(
  • " 0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoÖöPpQqRrSsTtUuÚúVvWwXxYyZz"), Char In String(Last Of(
  • Global._extendedGlobalCollection[9]), 0)) : String Length(Custom String(
  • " 0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoÖöPpQqRrSsTtUuÚúVvWwXxYyZz"))) > (String Contains(Custom String(
  • " 0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoÖöPpQqRrSsTtUuÚúVvWwXxYyZz"), Char In String(Last Of(
  • Global._extendedGlobalCollection[10]), 0)) ? Index Of String Char(Custom String(
  • " 0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoÖöPpQqRrSsTtUuÚúVvWwXxYyZz"), Char In String(Last Of(
  • Global._extendedGlobalCollection[10]), 0)) : String Length(Custom String(
  • " 0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoÖöPpQqRrSsTtUuÚúVvWwXxYyZz"))));
  • Global._extendedGlobalCollection[8] = 1;
  • Skip(9);
  • Else If((String Contains(Custom String(" 0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoÖöPpQqRrSsTtUuÚúVvWwXxYyZz"), Char In String(
  • Last Of(Global._extendedGlobalCollection[9]), 0)) ? Index Of String Char(Custom String(
  • " 0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoÖöPpQqRrSsTtUuÚúVvWwXxYyZz"), Char In String(Last Of(
  • Global._extendedGlobalCollection[9]), 0)) : String Length(Custom String(
  • " 0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoÖöPpQqRrSsTtUuÚúVvWwXxYyZz"))) < (String Contains(Custom String(
  • " 0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoÖöPpQqRrSsTtUuÚúVvWwXxYyZz"), Char In String(Last Of(
  • Global._extendedGlobalCollection[10]), 0)) ? Index Of String Char(Custom String(
  • " 0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoÖöPpQqRrSsTtUuÚúVvWwXxYyZz"), Char In String(Last Of(
  • Global._extendedGlobalCollection[10]), 0)) : String Length(Custom String(
  • " 0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoÖöPpQqRrSsTtUuÚúVvWwXxYyZz"))));
  • Global._extendedGlobalCollection[8] = -1;
  • Skip(6);
  • End;
  • Modify Global Variable At Index(_extendedGlobalCollection, 9, Append To Array, String Slice(Last Of(
  • Global._extendedGlobalCollection[9]), 1, Count Of(Last Of(Global._extendedGlobalCollection[9])) - 1));
  • Modify Global Variable At Index(_extendedGlobalCollection, 10, Append To Array, String Slice(Last Of(
  • Global._extendedGlobalCollection[10]), 1, Count Of(Last Of(Global._extendedGlobalCollection[10])) - 1));
  • Modify Global Variable(_func_recursiveContinue, Append To Array, 20);
  • Skip(6);
  • Global._extendedGlobalCollection[8] = Global._extendedGlobalCollection[8];
  • Modify Global Variable At Index(_extendedGlobalCollection, 9, Remove From Array By Index, Count Of(
  • Global._extendedGlobalCollection[9]) - 1);
  • Modify Global Variable At Index(_extendedGlobalCollection, 10, Remove From Array By Index, Count Of(
  • Global._extendedGlobalCollection[10]) - 1);
  • Skip If(Count Of(Global._func_recursiveContinue) == 0, 3);
  • Global._extendedGlobalCollection[7] = Last Of(Global._func_recursiveContinue);
  • Modify Global Variable(_func_recursiveContinue, Remove From Array By Index, Count Of(Global._func_recursiveContinue) - 1);
  • End;
  • Global._extendedGlobalCollection[7] = 0;
  • If(Global._extendedGlobalCollection[8] == -1);
  • Global._extendedGlobalCollection[11] = Global._extendedGlobalCollection[5];
  • Global._extendedGlobalCollection[5] = Global._extendedGlobalCollection[2][Global._extendedGlobalCollection[6]];
  • Global._arrayBuilder = Global._extendedGlobalCollection[2];
  • Global._arrayBuilder[Global._extendedGlobalCollection[6]] = Global._extendedGlobalCollection[11];
  • Global._extendedGlobalCollection[2] = Global._arrayBuilder;
  • End;
  • Global._extendedGlobalCollection[6] += 1;
  • End;
  • Modify Global Variable At Index(_extendedGlobalCollection, 4, Append To Array, Global._extendedGlobalCollection[5]);
  • Wait(0.016, Ignore Condition);
  • End;
  • Modify Global Variable At Index(_extendedGlobalCollection, 4, Append To Array, Global._extendedGlobalCollection[2]);
  • Global._extendedGlobalCollection[3] = Global._extendedGlobalCollection[4];
  • }
  • }
  • rule("[HeroSelectAnywhere.del] Main setup")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Call Subroutine(setupHeroArrays);
  • Disable Inspector Recording;
  • Global._extendedGlobalCollection[2] = All Tank Heroes;
  • Global._extendedGlobalCollection[2] = Global.TankHeroes;
  • Call Subroutine(sortAlphabetically);
  • Modify Global Variable(heroesSorted, Append To Array, Global._extendedGlobalCollection[3]);
  • Global._extendedGlobalCollection[2] = All Damage Heroes;
  • Global._extendedGlobalCollection[2] = Global.DamageHeroes;
  • Call Subroutine(sortAlphabetically);
  • Modify Global Variable(heroesSorted, Append To Array, Global._extendedGlobalCollection[3]);
  • Global._extendedGlobalCollection[2] = All Support Heroes;
  • Global._extendedGlobalCollection[2] = Global.SupportHeroes;
  • Call Subroutine(sortAlphabetically);
  • Modify Global Variable(heroesSorted, Append To Array, Global._extendedGlobalCollection[3]);
  • Wait(0.016, Ignore Condition);
  • Enable Inspector Recording;
  • Create Effect(Local Player, Orb, Color(Black), True * Global.camPos + -0.300 * Cross Product(Global.camFacing,
  • Direction From Angles(Horizontal Angle From Direction(Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90))
  • + Empty Array * Direction From Angles(Horizontal Angle From Direction(Global.camFacing), Vertical Angle From Direction(
  • Global.camFacing) - 90) + 0.800 * Global.camFacing, 0, Visible To);
  • Create Effect(Local Player, Orb, Color(Black), True * Global.camPos + 0.300 * Cross Product(Global.camFacing,
  • Direction From Angles(Horizontal Angle From Direction(Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90))
  • + Empty Array * Direction From Angles(Horizontal Angle From Direction(Global.camFacing), Vertical Angle From Direction(
  • Global.camFacing) - 90) + 0.800 * Global.camFacing, 0, Visible To);
  • Global._extendedGlobalCollection[12] = 0;
  • While(Global._extendedGlobalCollection[12] < Count Of(Global.heroesSorted) / 4);
  • Create In-World Text(Local Player.isInHeroSelect ? Local Player : Null, Custom String("{0}{1}", Custom String("{0} {1} {2}",
  • Evaluate Once(4 * Global._extendedGlobalCollection[12]) >= 0 && Evaluate Once(4 * Global._extendedGlobalCollection[12])
  • <= Count Of(Global.heroesSorted) - 1 ? (Array Contains(Allowed Heroes(Local Player), Global.heroesSorted[Evaluate Once(
  • 4 * Global._extendedGlobalCollection[12])]) ? Hero Icon String(Global.heroesSorted[Evaluate Once(
  • 4 * Global._extendedGlobalCollection[12])]) : Icon String(No)) : Custom String(" "), Evaluate Once(
  • 4 * Global._extendedGlobalCollection[12] + 1) >= 0 && Evaluate Once(4 * Global._extendedGlobalCollection[12] + 1) <= Count Of(
  • Global.heroesSorted) - 1 ? (Array Contains(Allowed Heroes(Local Player), Global.heroesSorted[Evaluate Once(
  • 4 * Global._extendedGlobalCollection[12] + 1)]) ? Hero Icon String(Global.heroesSorted[Evaluate Once(
  • 4 * Global._extendedGlobalCollection[12] + 1)]) : Icon String(No)) : Custom String(" "), Evaluate Once(
  • 4 * Global._extendedGlobalCollection[12] + 2) >= 0 && Evaluate Once(4 * Global._extendedGlobalCollection[12] + 2) <= Count Of(
  • Global.heroesSorted) - 1 ? (Array Contains(Allowed Heroes(Local Player), Global.heroesSorted[Evaluate Once(
  • 4 * Global._extendedGlobalCollection[12] + 2)]) ? Hero Icon String(Global.heroesSorted[Evaluate Once(
  • 4 * Global._extendedGlobalCollection[12] + 2)]) : Icon String(No)) : Custom String(" ")), Custom String(" {0}",
  • Evaluate Once(4 * Global._extendedGlobalCollection[12] + 3) >= 0 && Evaluate Once(4 * Global._extendedGlobalCollection[12] + 3)
  • <= Count Of(Global.heroesSorted) - 1 ? (Array Contains(Allowed Heroes(Local Player), Global.heroesSorted[Evaluate Once(
  • 4 * Global._extendedGlobalCollection[12] + 3)]) ? Hero Icon String(Global.heroesSorted[Evaluate Once(
  • 4 * Global._extendedGlobalCollection[12] + 3)]) : Icon String(No)) : Custom String(" "))), Update Every Frame(
  • True * Global.camPos + 100 * (-3.500 + 7 / Count Of(Global.heroesSorted) * (
  • 4 * Global._extendedGlobalCollection[12] + 1.500 + 0.500)) * Cross Product(Global.camFacing, Direction From Angles(
  • Horizontal Angle From Direction(Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90))
  • + -120 * Direction From Angles(Horizontal Angle From Direction(Global.camFacing), Vertical Angle From Direction(
  • Global.camFacing) - 90) + 300 * Global.camFacing), (436.300 - 7.250 * Count Of(Global.heroesSorted)) / 100, Do Not Clip,
  • Visible To and String, Color(White), Visible Never);
  • Global._extendedGlobalCollection[12] += 1;
  • End;
  • If(Workshop Setting Toggle(Custom String("Hero Select Anywhere"), Custom String("Controls texts (1 text)"), True, 1));
  • Create HUD Text(All Players(All Teams), Null, Null, Local Player.isInHeroSelect ? (Global.liteMode ? Custom String("")
  • : Custom String("   {0}\n\n   {1}\n{2}", Custom String("Hero Select Anywhere by Josbird {0}", Ability Icon String(Hero(
  • Mercy), Button(Ultimate))), Custom String("To select hero: Press primary fire [{0}]", Input Binding String(Button(
  • Primary Fire))), Custom String("To exit: Hold reload [{0}] or press interact [{1}]", Input Binding String(Button(Reload)),
  • Input Binding String(Button(Interact))))) : Custom String("Hold reload [{0}] to change hero", Input Binding String(Button(
  • Reload))), Top, 0.500, Color(White), Color(White), Color(Yellow), Visible To and String, Visible Never);
  • End;
  • If(!Global.liteMode);
  • If(Workshop Setting Toggle(Custom String("Hero Select Anywhere"), Custom String("Hero display (1 text)"), True, 2));
  • Create In-World Text(Local Player.isInHeroSelect ? Local Player : Null, Custom String("┌ ─ ┐\n│{0}│\n└ ─ ┘", Array Contains(Array(
  • Hero(Doomfist), Hero(Ashe)), Global.heroesSorted[Local Player.selectionIndex]) ? Custom String(" {0}", Hero Icon String(
  • Global.heroesSorted[Local Player.selectionIndex])) : Custom String("{0} ", Hero Icon String(
  • Global.heroesSorted[Local Player.selectionIndex]))), Update Every Frame(True * Global.camPos + Empty Array * Cross Product(
  • Global.camFacing, Direction From Angles(Horizontal Angle From Direction(Global.camFacing), Vertical Angle From Direction(
  • Global.camFacing) - 90)) + -20 * Direction From Angles(Horizontal Angle From Direction(Global.camFacing),
  • Vertical Angle From Direction(Global.camFacing) - 90) + 300 * Global.camFacing), 4, Do Not Clip, Visible To and String, Color(
  • White), Visible Never);
  • End;
  • If(Workshop Setting Toggle(Custom String("Hero Select Anywhere"), Custom String("Role dividers (4 texts)"), True, 4));
  • Create In-World Text(Local Player.isInHeroSelect ? Local Player : Null, Custom String("│\n│\n│"), Update Every Frame(
  • True * Global.camPos + -350 * Cross Product(Global.camFacing, Direction From Angles(Horizontal Angle From Direction(
  • Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90)) + -121 * Direction From Angles(
  • Horizontal Angle From Direction(Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90)
  • + 300 * Global.camFacing), 2, Do Not Clip, Visible To, Color(White), Visible Never);
  • Create In-World Text(Local Player.isInHeroSelect ? Local Player : Null, Custom String("│\n│\n│"), Update Every Frame(
  • True * Global.camPos + 100 * (-3.500 + 7 / Count Of(Global.heroesSorted) * (Count Of(All Tank Heroes) - 0.500 + 0.500))
  • True * Global.camPos + 100 * (-3.500 + 7 / Count Of(Global.heroesSorted) * (Count Of(Global.TankHeroes) - 0.500 + 0.500))
  • * Cross Product(Global.camFacing, Direction From Angles(Horizontal Angle From Direction(Global.camFacing),
  • Vertical Angle From Direction(Global.camFacing) - 90)) + -121 * Direction From Angles(Horizontal Angle From Direction(
  • Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90) + 300 * Global.camFacing), 2, Do Not Clip, Visible To,
  • Color(White), Visible Never);
  • Create In-World Text(Local Player.isInHeroSelect ? Local Player : Null, Custom String("│\n│\n│"), Update Every Frame(
  • True * Global.camPos + 100 * (-3.500 + 7 / Count Of(Global.heroesSorted) * (Count Of(All Tank Heroes) + Count Of(
  • All Damage Heroes) - 0.500 + 0.500)) * Cross Product(Global.camFacing, Direction From Angles(Horizontal Angle From Direction(
  • True * Global.camPos + 100 * (-3.500 + 7 / Count Of(Global.heroesSorted) * (Count Of(Global.TankHeroes) + Count Of(
  • Global.DamageHeroes) - 0.500 + 0.500)) * Cross Product(Global.camFacing, Direction From Angles(Horizontal Angle From Direction(
  • Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90)) + -121 * Direction From Angles(
  • Horizontal Angle From Direction(Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90)
  • + 300 * Global.camFacing), 2, Do Not Clip, Visible To, Color(White), Visible Never);
  • Create In-World Text(Local Player.isInHeroSelect ? Local Player : Null, Custom String("│\n│\n│"), Update Every Frame(
  • True * Global.camPos + 100 * (-3.500 + 7 / Count Of(Global.heroesSorted) * (Count Of(Global.heroesSorted) - 0.500 + 0.500))
  • * Cross Product(Global.camFacing, Direction From Angles(Horizontal Angle From Direction(Global.camFacing),
  • Vertical Angle From Direction(Global.camFacing) - 90)) + -121 * Direction From Angles(Horizontal Angle From Direction(
  • Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90) + 300 * Global.camFacing), 2, Do Not Clip, Visible To,
  • Color(White), Visible Never);
  • End;
  • If(Workshop Setting Toggle(Custom String("Hero Select Anywhere"), Custom String("Role headers (3 texts)"), True, 3));
  • Create In-World Text(Local Player.isInHeroSelect ? Local Player : Null, Custom String(" 【{0}】TANK", Ability Icon String(Hero(
  • Brigitte), Button(Secondary Fire))), Update Every Frame(True * Global.camPos + 100 * (-3.500 + 7 / Count Of(
  • Global.heroesSorted) * ((Count Of(All Tank Heroes) - 1) / 2 + 0.500)) * Cross Product(Global.camFacing, Direction From Angles(
  • Horizontal Angle From Direction(Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90)) + 100 * (
  • -1 + 7 / Count Of(Global.heroesSorted) / 2 + 0.100 - 0.200) * Direction From Angles(Horizontal Angle From Direction(
  • Global.heroesSorted) * ((Count Of(Global.TankHeroes) - 1) / 2 + 0.500)) * Cross Product(Global.camFacing,
  • Direction From Angles(Horizontal Angle From Direction(Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90))
  • + 100 * (-1 + 7 / Count Of(Global.heroesSorted) / 2 + 0.100 - 0.200) * Direction From Angles(Horizontal Angle From Direction(
  • Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90) + 300 * Global.camFacing), 2, Do Not Clip, Visible To,
  • Color(White), Visible Never);
  • Create In-World Text(Local Player.isInHeroSelect ? Local Player : Null, Custom String(" 【{0}】DAMAGE", Icon String(Skull)),
  • Update Every Frame(True * Global.camPos + 100 * (-3.500 + 7 / Count Of(Global.heroesSorted) * (Count Of(All Tank Heroes)
  • + Count Of(All Damage Heroes) / 2 - 0.500 + 0.500)) * Cross Product(Global.camFacing, Direction From Angles(
  • Update Every Frame(True * Global.camPos + 100 * (-3.500 + 7 / Count Of(Global.heroesSorted) * (Count Of(Global.TankHeroes)
  • + Count Of(Global.DamageHeroes) / 2 - 0.500 + 0.500)) * Cross Product(Global.camFacing, Direction From Angles(
  • Horizontal Angle From Direction(Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90)) + 100 * (
  • -1 + 7 / Count Of(Global.heroesSorted) / 2 + 0.100 - 0.200) * Direction From Angles(Horizontal Angle From Direction(
  • Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90) + 300 * Global.camFacing), 2, Do Not Clip, Visible To,
  • Color(White), Visible Never);
  • Create In-World Text(Local Player.isInHeroSelect ? Local Player : Null, Custom String(" 【{0}】SUPPORT", Ability Icon String(Hero(
  • Baptiste), Button(Ability 1))), Update Every Frame(True * Global.camPos + 100 * (-3.500 + 7 / Count Of(Global.heroesSorted) * (
  • Count Of(Global.heroesSorted) - Count Of(All Support Heroes) / 2 - 0.500 + 0.500)) * Cross Product(Global.camFacing,
  • Count Of(Global.heroesSorted) - Count Of(Global.SupportHeroes) / 2 - 0.500 + 0.500)) * Cross Product(Global.camFacing,
  • Direction From Angles(Horizontal Angle From Direction(Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90))
  • + 100 * (-1 + 7 / Count Of(Global.heroesSorted) / 2 + 0.100 - 0.200) * Direction From Angles(Horizontal Angle From Direction(
  • Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90) + 300 * Global.camFacing), 2, Do Not Clip, Visible To,
  • Color(White), Visible Never);
  • End;
  • If(Workshop Setting Toggle(Custom String("Hero Select Anywhere"), Custom String("Highlight hovered hero (4 texts)"), True, 5));
  • Create In-World Text(Local Player.isInHeroSelect ? Local Player : Null, Custom String("┌"), Update Every Frame(
  • True * Global.camPos + 100 * (-3.500 + 7 / Count Of(Global.heroesSorted) * (Round To Integer((Max(
  • Global._objectVariable_4[Local Player.cursor], Min(Angle Difference(Horizontal Angle From Direction(Facing Direction Of(
  • Global._objectVariable_0[Local Player.cursor])), Horizontal Angle From Direction(
  • Global._objectVariable_1[Local Player.cursor])) + Global._objectVariable_2[Local Player.cursor],
  • Global._objectVariable_5[Local Player.cursor])) / (7 / Count Of(Global.heroesSorted) / 2) + Count Of(Global.heroesSorted)) / 2,
  • Down) + 0.500) - 2 * (7 / Count Of(Global.heroesSorted) / 2) / 2) * Cross Product(Global.camFacing, Direction From Angles(
  • Horizontal Angle From Direction(Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90)) + 100 * (
  • -0.980 + 2 * (7 / Count Of(Global.heroesSorted) / 2) / 2 - 0.200) * Direction From Angles(Horizontal Angle From Direction(
  • Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90) + 300 * Global.camFacing), 1.500, Do Not Clip,
  • Visible To Position and Color, Max(Global._objectVariable_4[Local Player.cursor], Min(Angle Difference(
  • Horizontal Angle From Direction(Facing Direction Of(Global._objectVariable_0[Local Player.cursor])),
  • Horizontal Angle From Direction(Global._objectVariable_1[Local Player.cursor]))
  • + Global._objectVariable_2[Local Player.cursor], Global._objectVariable_5[Local Player.cursor])) >= -3.500 && Max(
  • Global._objectVariable_4[Local Player.cursor], Min(Angle Difference(Horizontal Angle From Direction(Facing Direction Of(
  • Global._objectVariable_0[Local Player.cursor])), Horizontal Angle From Direction(
  • Global._objectVariable_1[Local Player.cursor])) + Global._objectVariable_2[Local Player.cursor],
  • Global._objectVariable_5[Local Player.cursor])) <= 3.500 && Max(Global._objectVariable_6[Local Player.cursor], Min(
  • Angle Difference(Vertical Angle From Direction(Facing Direction Of(Global._objectVariable_0[Local Player.cursor])),
  • Vertical Angle From Direction(Global._objectVariable_1[Local Player.cursor])) + Global._objectVariable_3[Local Player.cursor],
  • Global._objectVariable_7[Local Player.cursor])) >= -1 - 7 / Count Of(Global.heroesSorted) / 2 * 1.500 && Max(
  • Global._objectVariable_6[Local Player.cursor], Min(Angle Difference(Vertical Angle From Direction(Facing Direction Of(
  • Global._objectVariable_0[Local Player.cursor])), Vertical Angle From Direction(Global._objectVariable_1[Local Player.cursor]))
  • + Global._objectVariable_3[Local Player.cursor], Global._objectVariable_7[Local Player.cursor])) <= -1 + 7 / Count Of(
  • Global.heroesSorted) / 2 * 1.500 && Round To Integer((Max(Global._objectVariable_4[Local Player.cursor], Min(Angle Difference(
  • Horizontal Angle From Direction(Facing Direction Of(Global._objectVariable_0[Local Player.cursor])),
  • Horizontal Angle From Direction(Global._objectVariable_1[Local Player.cursor]))
  • + Global._objectVariable_2[Local Player.cursor], Global._objectVariable_5[Local Player.cursor])) / (7 / Count Of(
  • Global.heroesSorted) / 2) + Count Of(Global.heroesSorted)) / 2, Down) != Local Player.selectionIndex && Array Contains(
  • Allowed Heroes(Local Player), Global.heroesSorted[Round To Integer((Max(Global._objectVariable_4[Local Player.cursor], Min(
  • Angle Difference(Horizontal Angle From Direction(Facing Direction Of(Global._objectVariable_0[Local Player.cursor])),
  • Horizontal Angle From Direction(Global._objectVariable_1[Local Player.cursor]))
  • + Global._objectVariable_2[Local Player.cursor], Global._objectVariable_5[Local Player.cursor])) / (7 / Count Of(
  • Global.heroesSorted) / 2) + Count Of(Global.heroesSorted)) / 2, Down)]) ? Color(White) : Null, Visible Never);
  • Create In-World Text(Local Player.isInHeroSelect ? Local Player : Null, Custom String("┐"), Update Every Frame(
  • True * Global.camPos + 100 * (-3.500 + 7 / Count Of(Global.heroesSorted) * (Round To Integer((Max(
  • Global._objectVariable_4[Local Player.cursor], Min(Angle Difference(Horizontal Angle From Direction(Facing Direction Of(
  • Global._objectVariable_0[Local Player.cursor])), Horizontal Angle From Direction(
  • Global._objectVariable_1[Local Player.cursor])) + Global._objectVariable_2[Local Player.cursor],
  • Global._objectVariable_5[Local Player.cursor])) / (7 / Count Of(Global.heroesSorted) / 2) + Count Of(Global.heroesSorted)) / 2,
  • Down) + 0.500) + 2 * (7 / Count Of(Global.heroesSorted) / 2) / 2) * Cross Product(Global.camFacing, Direction From Angles(
  • Horizontal Angle From Direction(Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90)) + 100 * (
  • -0.980 + 2 * (7 / Count Of(Global.heroesSorted) / 2) / 2 - 0.200) * Direction From Angles(Horizontal Angle From Direction(
  • Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90) + 300 * Global.camFacing), 1.500, Do Not Clip,
  • Visible To Position and Color, Max(Global._objectVariable_4[Local Player.cursor], Min(Angle Difference(
  • Horizontal Angle From Direction(Facing Direction Of(Global._objectVariable_0[Local Player.cursor])),
  • Horizontal Angle From Direction(Global._objectVariable_1[Local Player.cursor]))
  • + Global._objectVariable_2[Local Player.cursor], Global._objectVariable_5[Local Player.cursor])) >= -3.500 && Max(
  • Global._objectVariable_4[Local Player.cursor], Min(Angle Difference(Horizontal Angle From Direction(Facing Direction Of(
  • Global._objectVariable_0[Local Player.cursor])), Horizontal Angle From Direction(
  • Global._objectVariable_1[Local Player.cursor])) + Global._objectVariable_2[Local Player.cursor],
  • Global._objectVariable_5[Local Player.cursor])) <= 3.500 && Max(Global._objectVariable_6[Local Player.cursor], Min(
  • Angle Difference(Vertical Angle From Direction(Facing Direction Of(Global._objectVariable_0[Local Player.cursor])),
  • Vertical Angle From Direction(Global._objectVariable_1[Local Player.cursor])) + Global._objectVariable_3[Local Player.cursor],
  • Global._objectVariable_7[Local Player.cursor])) >= -1 - 7 / Count Of(Global.heroesSorted) / 2 * 1.500 && Max(
  • Global._objectVariable_6[Local Player.cursor], Min(Angle Difference(Vertical Angle From Direction(Facing Direction Of(
  • Global._objectVariable_0[Local Player.cursor])), Vertical Angle From Direction(Global._objectVariable_1[Local Player.cursor]))
  • + Global._objectVariable_3[Local Player.cursor], Global._objectVariable_7[Local Player.cursor])) <= -1 + 7 / Count Of(
  • Global.heroesSorted) / 2 * 1.500 && Round To Integer((Max(Global._objectVariable_4[Local Player.cursor], Min(Angle Difference(
  • Horizontal Angle From Direction(Facing Direction Of(Global._objectVariable_0[Local Player.cursor])),
  • Horizontal Angle From Direction(Global._objectVariable_1[Local Player.cursor]))
  • + Global._objectVariable_2[Local Player.cursor], Global._objectVariable_5[Local Player.cursor])) / (7 / Count Of(
  • Global.heroesSorted) / 2) + Count Of(Global.heroesSorted)) / 2, Down) != Local Player.selectionIndex && Array Contains(
  • Allowed Heroes(Local Player), Global.heroesSorted[Round To Integer((Max(Global._objectVariable_4[Local Player.cursor], Min(
  • Angle Difference(Horizontal Angle From Direction(Facing Direction Of(Global._objectVariable_0[Local Player.cursor])),
  • Horizontal Angle From Direction(Global._objectVariable_1[Local Player.cursor]))
  • + Global._objectVariable_2[Local Player.cursor], Global._objectVariable_5[Local Player.cursor])) / (7 / Count Of(
  • Global.heroesSorted) / 2) + Count Of(Global.heroesSorted)) / 2, Down)]) ? Color(White) : Null, Visible Never);
  • Create In-World Text(Local Player.isInHeroSelect ? Local Player : Null, Custom String("└"), Update Every Frame(
  • True * Global.camPos + 100 * (-3.500 + 7 / Count Of(Global.heroesSorted) * (Round To Integer((Max(
  • Global._objectVariable_4[Local Player.cursor], Min(Angle Difference(Horizontal Angle From Direction(Facing Direction Of(
  • Global._objectVariable_0[Local Player.cursor])), Horizontal Angle From Direction(
  • Global._objectVariable_1[Local Player.cursor])) + Global._objectVariable_2[Local Player.cursor],
  • Global._objectVariable_5[Local Player.cursor])) / (7 / Count Of(Global.heroesSorted) / 2) + Count Of(Global.heroesSorted)) / 2,
  • Down) + 0.500) - 2 * (7 / Count Of(Global.heroesSorted) / 2) / 2) * Cross Product(Global.camFacing, Direction From Angles(
  • Horizontal Angle From Direction(Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90)) + 100 * (
  • -0.980 - 2 * (7 / Count Of(Global.heroesSorted) / 2) / 2 - 0.200) * Direction From Angles(Horizontal Angle From Direction(
  • Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90) + 300 * Global.camFacing), 1.500, Do Not Clip,
  • Visible To Position and Color, Max(Global._objectVariable_4[Local Player.cursor], Min(Angle Difference(
  • Horizontal Angle From Direction(Facing Direction Of(Global._objectVariable_0[Local Player.cursor])),
  • Horizontal Angle From Direction(Global._objectVariable_1[Local Player.cursor]))
  • + Global._objectVariable_2[Local Player.cursor], Global._objectVariable_5[Local Player.cursor])) >= -3.500 && Max(
  • Global._objectVariable_4[Local Player.cursor], Min(Angle Difference(Horizontal Angle From Direction(Facing Direction Of(
  • Global._objectVariable_0[Local Player.cursor])), Horizontal Angle From Direction(
  • Global._objectVariable_1[Local Player.cursor])) + Global._objectVariable_2[Local Player.cursor],
  • Global._objectVariable_5[Local Player.cursor])) <= 3.500 && Max(Global._objectVariable_6[Local Player.cursor], Min(
  • Angle Difference(Vertical Angle From Direction(Facing Direction Of(Global._objectVariable_0[Local Player.cursor])),
  • Vertical Angle From Direction(Global._objectVariable_1[Local Player.cursor])) + Global._objectVariable_3[Local Player.cursor],
  • Global._objectVariable_7[Local Player.cursor])) >= -1 - 7 / Count Of(Global.heroesSorted) / 2 * 1.500 && Max(
  • Global._objectVariable_6[Local Player.cursor], Min(Angle Difference(Vertical Angle From Direction(Facing Direction Of(
  • Global._objectVariable_0[Local Player.cursor])), Vertical Angle From Direction(Global._objectVariable_1[Local Player.cursor]))
  • + Global._objectVariable_3[Local Player.cursor], Global._objectVariable_7[Local Player.cursor])) <= -1 + 7 / Count Of(
  • Global.heroesSorted) / 2 * 1.500 && Round To Integer((Max(Global._objectVariable_4[Local Player.cursor], Min(Angle Difference(
  • Horizontal Angle From Direction(Facing Direction Of(Global._objectVariable_0[Local Player.cursor])),
  • Horizontal Angle From Direction(Global._objectVariable_1[Local Player.cursor]))
  • + Global._objectVariable_2[Local Player.cursor], Global._objectVariable_5[Local Player.cursor])) / (7 / Count Of(
  • Global.heroesSorted) / 2) + Count Of(Global.heroesSorted)) / 2, Down) != Local Player.selectionIndex && Array Contains(
  • Allowed Heroes(Local Player), Global.heroesSorted[Round To Integer((Max(Global._objectVariable_4[Local Player.cursor], Min(
  • Angle Difference(Horizontal Angle From Direction(Facing Direction Of(Global._objectVariable_0[Local Player.cursor])),
  • Horizontal Angle From Direction(Global._objectVariable_1[Local Player.cursor]))
  • + Global._objectVariable_2[Local Player.cursor], Global._objectVariable_5[Local Player.cursor])) / (7 / Count Of(
  • Global.heroesSorted) / 2) + Count Of(Global.heroesSorted)) / 2, Down)]) ? Color(White) : Null, Visible Never);
  • Create In-World Text(Local Player.isInHeroSelect ? Local Player : Null, Custom String("┘"), Update Every Frame(
  • True * Global.camPos + 100 * (-3.500 + 7 / Count Of(Global.heroesSorted) * (Round To Integer((Max(
  • Global._objectVariable_4[Local Player.cursor], Min(Angle Difference(Horizontal Angle From Direction(Facing Direction Of(
  • Global._objectVariable_0[Local Player.cursor])), Horizontal Angle From Direction(
  • Global._objectVariable_1[Local Player.cursor])) + Global._objectVariable_2[Local Player.cursor],
  • Global._objectVariable_5[Local Player.cursor])) / (7 / Count Of(Global.heroesSorted) / 2) + Count Of(Global.heroesSorted)) / 2,
  • Down) + 0.500) + 2 * (7 / Count Of(Global.heroesSorted) / 2) / 2) * Cross Product(Global.camFacing, Direction From Angles(
  • Horizontal Angle From Direction(Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90)) + 100 * (
  • -0.980 - 2 * (7 / Count Of(Global.heroesSorted) / 2) / 2 - 0.200) * Direction From Angles(Horizontal Angle From Direction(
  • Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90) + 300 * Global.camFacing), 1.500, Do Not Clip,
  • Visible To Position and Color, Max(Global._objectVariable_4[Local Player.cursor], Min(Angle Difference(
  • Horizontal Angle From Direction(Facing Direction Of(Global._objectVariable_0[Local Player.cursor])),
  • Horizontal Angle From Direction(Global._objectVariable_1[Local Player.cursor]))
  • + Global._objectVariable_2[Local Player.cursor], Global._objectVariable_5[Local Player.cursor])) >= -3.500 && Max(
  • Global._objectVariable_4[Local Player.cursor], Min(Angle Difference(Horizontal Angle From Direction(Facing Direction Of(
  • Global._objectVariable_0[Local Player.cursor])), Horizontal Angle From Direction(
  • Global._objectVariable_1[Local Player.cursor])) + Global._objectVariable_2[Local Player.cursor],
  • Global._objectVariable_5[Local Player.cursor])) <= 3.500 && Max(Global._objectVariable_6[Local Player.cursor], Min(
  • Angle Difference(Vertical Angle From Direction(Facing Direction Of(Global._objectVariable_0[Local Player.cursor])),
  • Vertical Angle From Direction(Global._objectVariable_1[Local Player.cursor])) + Global._objectVariable_3[Local Player.cursor],
  • Global._objectVariable_7[Local Player.cursor])) >= -1 - 7 / Count Of(Global.heroesSorted) / 2 * 1.500 && Max(
  • Global._objectVariable_6[Local Player.cursor], Min(Angle Difference(Vertical Angle From Direction(Facing Direction Of(
  • Global._objectVariable_0[Local Player.cursor])), Vertical Angle From Direction(Global._objectVariable_1[Local Player.cursor]))
  • + Global._objectVariable_3[Local Player.cursor], Global._objectVariable_7[Local Player.cursor])) <= -1 + 7 / Count Of(
  • Global.heroesSorted) / 2 * 1.500 && Round To Integer((Max(Global._objectVariable_4[Local Player.cursor], Min(Angle Difference(
  • Horizontal Angle From Direction(Facing Direction Of(Global._objectVariable_0[Local Player.cursor])),
  • Horizontal Angle From Direction(Global._objectVariable_1[Local Player.cursor]))
  • + Global._objectVariable_2[Local Player.cursor], Global._objectVariable_5[Local Player.cursor])) / (7 / Count Of(
  • Global.heroesSorted) / 2) + Count Of(Global.heroesSorted)) / 2, Down) != Local Player.selectionIndex && Array Contains(
  • Allowed Heroes(Local Player), Global.heroesSorted[Round To Integer((Max(Global._objectVariable_4[Local Player.cursor], Min(
  • Angle Difference(Horizontal Angle From Direction(Facing Direction Of(Global._objectVariable_0[Local Player.cursor])),
  • Horizontal Angle From Direction(Global._objectVariable_1[Local Player.cursor]))
  • + Global._objectVariable_2[Local Player.cursor], Global._objectVariable_5[Local Player.cursor])) / (7 / Count Of(
  • Global.heroesSorted) / 2) + Count Of(Global.heroesSorted)) / 2, Down)]) ? Color(White) : Null, Visible Never);
  • End;
  • If(Workshop Setting Toggle(Custom String("Hero Select Anywhere"), Custom String("Highlight selected hero (4 texts)"), True, 6));
  • Create In-World Text(Local Player.isInHeroSelect ? Local Player : Null, Custom String("┌"), Update Every Frame(
  • True * Global.camPos + 100 * (-3.500 + 7 / Count Of(Global.heroesSorted) * (Local Player.selectionIndex + 0.500) - 2 * (
  • 7 / Count Of(Global.heroesSorted) / 2) / 2) * Cross Product(Global.camFacing, Direction From Angles(
  • Horizontal Angle From Direction(Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90)) + 100 * (
  • -0.980 + 2 * (7 / Count Of(Global.heroesSorted) / 2) / 2 - 0.200) * Direction From Angles(Horizontal Angle From Direction(
  • Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90) + 300 * Global.camFacing), 1.500, Do Not Clip,
  • Visible To and Position, Custom Color(255, 217, 0, 255), Visible Never);
  • Create In-World Text(Local Player.isInHeroSelect ? Local Player : Null, Custom String("┐"), Update Every Frame(
  • True * Global.camPos + 100 * (-3.500 + 7 / Count Of(Global.heroesSorted) * (Local Player.selectionIndex + 0.500) + 2 * (
  • 7 / Count Of(Global.heroesSorted) / 2) / 2) * Cross Product(Global.camFacing, Direction From Angles(
  • Horizontal Angle From Direction(Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90)) + 100 * (
  • -0.980 + 2 * (7 / Count Of(Global.heroesSorted) / 2) / 2 - 0.200) * Direction From Angles(Horizontal Angle From Direction(
  • Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90) + 300 * Global.camFacing), 1.500, Do Not Clip,
  • Visible To and Position, Custom Color(255, 217, 0, 255), Visible Never);
  • Create In-World Text(Local Player.isInHeroSelect ? Local Player : Null, Custom String("└"), Update Every Frame(
  • True * Global.camPos + 100 * (-3.500 + 7 / Count Of(Global.heroesSorted) * (Local Player.selectionIndex + 0.500) - 2 * (
  • 7 / Count Of(Global.heroesSorted) / 2) / 2) * Cross Product(Global.camFacing, Direction From Angles(
  • Horizontal Angle From Direction(Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90)) + 100 * (
  • -0.980 - 2 * (7 / Count Of(Global.heroesSorted) / 2) / 2 - 0.200) * Direction From Angles(Horizontal Angle From Direction(
  • Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90) + 300 * Global.camFacing), 1.500, Do Not Clip,
  • Visible To and Position, Custom Color(255, 217, 0, 255), Visible Never);
  • Create In-World Text(Local Player.isInHeroSelect ? Local Player : Null, Custom String("┘"), Update Every Frame(
  • True * Global.camPos + 100 * (-3.500 + 7 / Count Of(Global.heroesSorted) * (Local Player.selectionIndex + 0.500) + 2 * (
  • 7 / Count Of(Global.heroesSorted) / 2) / 2) * Cross Product(Global.camFacing, Direction From Angles(
  • Horizontal Angle From Direction(Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90)) + 100 * (
  • -0.980 - 2 * (7 / Count Of(Global.heroesSorted) / 2) / 2 - 0.200) * Direction From Angles(Horizontal Angle From Direction(
  • Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90) + 300 * Global.camFacing), 1.500, Do Not Clip,
  • Visible To and Position, Custom Color(255, 217, 0, 255), Visible Never);
  • End;
  • If(0 == Workshop Setting Combo(Custom String("Hero Select Anywhere"), Custom String("Fancy confirm/cancel buttons"), 0, Array(
  • Custom String("On (4 texts)"), Custom String("Off (2 texts)")), 7));
  • Create In-World Text(Local Player.isInHeroSelect ? Local Player : Null, Custom String("▒▒▒▒▒"), Update Every Frame(
  • True * Global.camPos + -33 * Cross Product(Global.camFacing, Direction From Angles(Horizontal Angle From Direction(
  • Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90)) + -180 * Direction From Angles(
  • Horizontal Angle From Direction(Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90)
  • + 300 * Global.camFacing), 4, Do Not Clip, Visible To and Color, Max(Global._objectVariable_4[Local Player.cursor], Min(
  • Angle Difference(Horizontal Angle From Direction(Facing Direction Of(Global._objectVariable_0[Local Player.cursor])),
  • Horizontal Angle From Direction(Global._objectVariable_1[Local Player.cursor]))
  • + Global._objectVariable_2[Local Player.cursor], Global._objectVariable_5[Local Player.cursor])) >= -0.880 && Max(
  • Global._objectVariable_4[Local Player.cursor], Min(Angle Difference(Horizontal Angle From Direction(Facing Direction Of(
  • Global._objectVariable_0[Local Player.cursor])), Horizontal Angle From Direction(
  • Global._objectVariable_1[Local Player.cursor])) + Global._objectVariable_2[Local Player.cursor],
  • Global._objectVariable_5[Local Player.cursor])) <= 0.220 && Max(Global._objectVariable_6[Local Player.cursor], Min(
  • Angle Difference(Vertical Angle From Direction(Facing Direction Of(Global._objectVariable_0[Local Player.cursor])),
  • Vertical Angle From Direction(Global._objectVariable_1[Local Player.cursor])) + Global._objectVariable_3[Local Player.cursor],
  • Global._objectVariable_7[Local Player.cursor])) >= -1.750 && Max(Global._objectVariable_6[Local Player.cursor], Min(
  • Angle Difference(Vertical Angle From Direction(Facing Direction Of(Global._objectVariable_0[Local Player.cursor])),
  • Vertical Angle From Direction(Global._objectVariable_1[Local Player.cursor])) + Global._objectVariable_3[Local Player.cursor],
  • Global._objectVariable_7[Local Player.cursor])) <= -1.450 ? Custom Color(207, 124, 0, 255) : Custom Color(255, 153, 0, 255),
  • Visible Never);
  • Create In-World Text(Local Player.isInHeroSelect ? Local Player : Null, Custom String("CONTINUE"), Update Every Frame(
  • True * Global.camPos + -33 * Cross Product(Global.camFacing, Direction From Angles(Horizontal Angle From Direction(
  • Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90)) + -181 * Direction From Angles(
  • Horizontal Angle From Direction(Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90)
  • + 300 * Global.camFacing), 3, Do Not Clip, Visible To, Color(White), Visible Never);
  • Create In-World Text(Local Player.isInHeroSelect ? Local Player : Null, Custom String("▒▒▒"), Update Every Frame(
  • True * Global.camPos + 55 * Cross Product(Global.camFacing, Direction From Angles(Horizontal Angle From Direction(
  • Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90)) + -180 * Direction From Angles(
  • Horizontal Angle From Direction(Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90)
  • + 300 * Global.camFacing), 4, Do Not Clip, Visible To and Color, Max(Global._objectVariable_4[Local Player.cursor], Min(
  • Angle Difference(Horizontal Angle From Direction(Facing Direction Of(Global._objectVariable_0[Local Player.cursor])),
  • Horizontal Angle From Direction(Global._objectVariable_1[Local Player.cursor]))
  • + Global._objectVariable_2[Local Player.cursor], Global._objectVariable_5[Local Player.cursor])) >= 0.220 && Max(
  • Global._objectVariable_4[Local Player.cursor], Min(Angle Difference(Horizontal Angle From Direction(Facing Direction Of(
  • Global._objectVariable_0[Local Player.cursor])), Horizontal Angle From Direction(
  • Global._objectVariable_1[Local Player.cursor])) + Global._objectVariable_2[Local Player.cursor],
  • Global._objectVariable_5[Local Player.cursor])) <= 0.880 && Max(Global._objectVariable_6[Local Player.cursor], Min(
  • Angle Difference(Vertical Angle From Direction(Facing Direction Of(Global._objectVariable_0[Local Player.cursor])),
  • Vertical Angle From Direction(Global._objectVariable_1[Local Player.cursor])) + Global._objectVariable_3[Local Player.cursor],
  • Global._objectVariable_7[Local Player.cursor])) >= -1.750 && Max(Global._objectVariable_6[Local Player.cursor], Min(
  • Angle Difference(Vertical Angle From Direction(Facing Direction Of(Global._objectVariable_0[Local Player.cursor])),
  • Vertical Angle From Direction(Global._objectVariable_1[Local Player.cursor])) + Global._objectVariable_3[Local Player.cursor],
  • Global._objectVariable_7[Local Player.cursor])) <= -1.450 ? Custom Color(0, 125, 197, 255) : Custom Color(0, 162, 255, 255),
  • Visible Never);
  • Create In-World Text(Local Player.isInHeroSelect ? Local Player : Null, Custom String("CANCEL"), Update Every Frame(
  • True * Global.camPos + 55 * Cross Product(Global.camFacing, Direction From Angles(Horizontal Angle From Direction(
  • Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90)) + -180 * Direction From Angles(
  • Horizontal Angle From Direction(Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90)
  • + 300 * Global.camFacing), 2.500, Do Not Clip, Visible To, Color(White), Visible Never);
  • Else;
  • Create In-World Text(Local Player.isInHeroSelect ? Local Player : Null, Custom String("CONTINUE"), Update Every Frame(
  • True * Global.camPos + -33 * Cross Product(Global.camFacing, Direction From Angles(Horizontal Angle From Direction(
  • Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90)) + -181 * Direction From Angles(
  • Horizontal Angle From Direction(Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90)
  • + 300 * Global.camFacing), 3, Do Not Clip, Visible To, Custom Color(255, 153, 0, 255), Visible Never);
  • Create In-World Text(Local Player.isInHeroSelect ? Local Player : Null, Custom String("CANCEL"), Update Every Frame(
  • True * Global.camPos + 55 * Cross Product(Global.camFacing, Direction From Angles(Horizontal Angle From Direction(
  • Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90)) + -180 * Direction From Angles(
  • Horizontal Angle From Direction(Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90)
  • + 300 * Global.camFacing), 2.500, Do Not Clip, Visible To, Custom Color(0, 162, 255, 255), Visible Never);
  • End;
  • End;
  • Create In-World Text(Local Player.cursor != Null ? Local Player : Null, Custom String("▲"), Update Every Frame(
  • True * Global.camPos + 100 * Max(Global._objectVariable_4[Local Player.cursor], Min(Angle Difference(
  • Horizontal Angle From Direction(Facing Direction Of(Global._objectVariable_0[Local Player.cursor])),
  • Horizontal Angle From Direction(Global._objectVariable_1[Local Player.cursor]))
  • + Global._objectVariable_2[Local Player.cursor], Global._objectVariable_5[Local Player.cursor])) * Cross Product(
  • Global.camFacing, Direction From Angles(Horizontal Angle From Direction(Global.camFacing), Vertical Angle From Direction(
  • Global.camFacing) - 90)) + 100 * (Max(Global._objectVariable_6[Local Player.cursor], Min(Angle Difference(
  • Vertical Angle From Direction(Facing Direction Of(Global._objectVariable_0[Local Player.cursor])),
  • Vertical Angle From Direction(Global._objectVariable_1[Local Player.cursor])) + Global._objectVariable_3[Local Player.cursor],
  • Global._objectVariable_7[Local Player.cursor])) - 0.200) * Direction From Angles(Horizontal Angle From Direction(
  • Global.camFacing), Vertical Angle From Direction(Global.camFacing) - 90) + 300 * Global.camFacing), 3.500, Do Not Clip,
  • Visible To and Position, Color(White), Visible Never);
  • }
  • }
  • rule("[Cursor.del] Cursor bounds")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.AllCursors != Empty Array;
  • Is True For Any(Global.AllCursors, !(Angle Difference(Horizontal Angle From Direction(Facing Direction Of(
  • Global._objectVariable_0[Current Array Element])), Horizontal Angle From Direction(
  • Global._objectVariable_1[Current Array Element]))
  • + Global._objectVariable_2[Current Array Element] >= Global._objectVariable_4[Current Array Element] && Angle Difference(
  • Horizontal Angle From Direction(Facing Direction Of(Global._objectVariable_0[Current Array Element])),
  • Horizontal Angle From Direction(Global._objectVariable_1[Current Array Element]))
  • + Global._objectVariable_2[Current Array Element] <= Global._objectVariable_5[Current Array Element]) || !(Angle Difference(
  • Vertical Angle From Direction(Facing Direction Of(Global._objectVariable_0[Current Array Element])),
  • Vertical Angle From Direction(Global._objectVariable_1[Current Array Element]))
  • + Global._objectVariable_3[Current Array Element] >= Global._objectVariable_6[Current Array Element] && Angle Difference(
  • Vertical Angle From Direction(Facing Direction Of(Global._objectVariable_0[Current Array Element])),
  • Vertical Angle From Direction(Global._objectVariable_1[Current Array Element]))
  • + Global._objectVariable_3[Current Array Element] <= Global._objectVariable_7[Current Array Element])) == True;
  • }
  • actions
  • {
  • Global.cursorsToUpdate = Filtered Array(Global.AllCursors, !(Angle Difference(Horizontal Angle From Direction(Facing Direction Of(
  • Global._objectVariable_0[Current Array Element])), Horizontal Angle From Direction(
  • Global._objectVariable_1[Current Array Element]))
  • + Global._objectVariable_2[Current Array Element] >= Global._objectVariable_4[Current Array Element] && Angle Difference(
  • Horizontal Angle From Direction(Facing Direction Of(Global._objectVariable_0[Current Array Element])),
  • Horizontal Angle From Direction(Global._objectVariable_1[Current Array Element]))
  • + Global._objectVariable_2[Current Array Element] <= Global._objectVariable_5[Current Array Element]) || !(Angle Difference(
  • Vertical Angle From Direction(Facing Direction Of(Global._objectVariable_0[Current Array Element])),
  • Vertical Angle From Direction(Global._objectVariable_1[Current Array Element]))
  • + Global._objectVariable_3[Current Array Element] >= Global._objectVariable_6[Current Array Element] && Angle Difference(
  • Vertical Angle From Direction(Facing Direction Of(Global._objectVariable_0[Current Array Element])),
  • Vertical Angle From Direction(Global._objectVariable_1[Current Array Element]))
  • + Global._objectVariable_3[Current Array Element] <= Global._objectVariable_7[Current Array Element]));
  • Global._extendedGlobalCollection[13] = 0;
  • While(Global._extendedGlobalCollection[13] < Count Of(Global.cursorsToUpdate));
  • Global._objectVariable_2[Global.cursorsToUpdate[Global._extendedGlobalCollection[13]]] -= Angle Difference(
  • Horizontal Angle From Direction(Facing Direction Of(
  • Global._objectVariable_0[Global.cursorsToUpdate[Global._extendedGlobalCollection[13]]])), Horizontal Angle From Direction(
  • Global._objectVariable_1[Global.cursorsToUpdate[Global._extendedGlobalCollection[13]]]))
  • + Global._objectVariable_2[Global.cursorsToUpdate[Global._extendedGlobalCollection[13]]] - Max(
  • Global._objectVariable_4[Global.cursorsToUpdate[Global._extendedGlobalCollection[13]]], Min(Angle Difference(
  • Horizontal Angle From Direction(Facing Direction Of(
  • Global._objectVariable_0[Global.cursorsToUpdate[Global._extendedGlobalCollection[13]]])), Horizontal Angle From Direction(
  • Global._objectVariable_1[Global.cursorsToUpdate[Global._extendedGlobalCollection[13]]]))
  • + Global._objectVariable_2[Global.cursorsToUpdate[Global._extendedGlobalCollection[13]]],
  • Global._objectVariable_5[Global.cursorsToUpdate[Global._extendedGlobalCollection[13]]]));
  • Global._objectVariable_3[Global.cursorsToUpdate[Global._extendedGlobalCollection[13]]] -= Angle Difference(
  • Vertical Angle From Direction(Facing Direction Of(
  • Global._objectVariable_0[Global.cursorsToUpdate[Global._extendedGlobalCollection[13]]])), Vertical Angle From Direction(
  • Global._objectVariable_1[Global.cursorsToUpdate[Global._extendedGlobalCollection[13]]]))
  • + Global._objectVariable_3[Global.cursorsToUpdate[Global._extendedGlobalCollection[13]]] - Max(
  • Global._objectVariable_6[Global.cursorsToUpdate[Global._extendedGlobalCollection[13]]], Min(Angle Difference(
  • Vertical Angle From Direction(Facing Direction Of(
  • Global._objectVariable_0[Global.cursorsToUpdate[Global._extendedGlobalCollection[13]]])), Vertical Angle From Direction(
  • Global._objectVariable_1[Global.cursorsToUpdate[Global._extendedGlobalCollection[13]]]))
  • + Global._objectVariable_3[Global.cursorsToUpdate[Global._extendedGlobalCollection[13]]],
  • Global._objectVariable_7[Global.cursorsToUpdate[Global._extendedGlobalCollection[13]]]));
  • Global._extendedGlobalCollection[13] += 1;
  • End;
  • }
  • }
  • rule("▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒a")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
Join the Workshop.codes Discord