Return to post
- 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;
- }
- }