Create
Return to post

Comparing difference between and

View raw
  • settings
  • {
  • main
  • {
  • Description: "Storm Rising PVE - made by Waitedboat4#2760 - Update v1.1: Score and Balancing"
  • Description: "Storm Rising PVE - made by Waitedboat4#2760 - Update v5.1: OW2 Update\r\nhttps://workshop.codes/stormrising"
  • Mode Name: "Overwatch: Storm Rising"
  • }
  • lobby
  • {
  • Max Team 1 Players: 0
  • Max Team 2 Players: 4
  • Return To Lobby: Never
  • Swap Teams After Match: No
  • }
  • modes
  • {
  • Escort
  • {
  • enabled maps
  • {
  • Havana
  • Havana 972777519512068154
  • }
  • }
  • General
  • {
  • Allow Hero Switching: Off
  • Game Mode Start: Immediately
  • Hero Limit: Off
  • Kill Feed: Off
  • Skins: Off
  • Spawn Health Packs: Disabled
  • }
  • }
  • heroes
  • {
  • Team 1
  • {
  • Healing Received: 10%
  • Genji
  • {
  • Infinite Ultimate Duration: On
  • Spawn With Ultimate Ready: On
  • }
  • Reaper
  • {
  • Movement Speed: 60%
  • }
  • Widowmaker
  • {
  • Grappling Hook Cooldown Time: 0%
  • }
  • Wrecking Ball
  • {
  • Movement Speed: 50%
  • }
  • }
  • General
  • {
  • enabled heroes
  • {
  • Genji
  • Mercy
  • Tracer
  • Winston
  • }
  • }
  • }
  • extensions
  • {
  • Beam Effects
  • Beam Sounds
  • Spawn More Dummy Bots
  • }
  • }
  • variables
  • {
  • global:
  • 0: _extendedGlobalCollection
  • 2: Nodes
  • 3: Segments
  • 4: Attributes
  • 5: map
  • 6: _classIndexes
  • 7: _tempNodes
  • 8: _tempSegments
  • 9: _tempAttributes
  • 10: AssemblingHeroes
  • 11: Countdown
  • 12: ObjectiveIcon
  • 14: FirstWave
  • 15: Normal
  • 16: Hard
  • 17: Expert
  • 18: Legendary
  • 19: SecureDistillery
  • 20: Survive
  • 21: Round
  • 22: SmokeSpawned
  • 23: NextSpawns
  • 24: Mercy
  • 25: Genji
  • 26: Winston
  • 27: Tracer
  • 28: HeroesPicked
  • 29: NextSpawns2
  • 30: ClearSeaFort
  • 31: ArmTruck
  • 32: Outro
  • 32: BloodMoonRising
  • 33: TruckArmed
  • 34: Allheroes
  • 35: TeamScore
  • 36: StormRaging
  • 37: CreateSelfPromotionText
  • 38: LineofSight
  • 39: CurrentSpawn
  • 40: Spawns
  • 41: SecondWave
  • 42: ThirdWave
  • 43: FourthWave
  • 44: PayloadReachedpos
  • 45: SniperPos
  • 46: _objectVariable_0
  • 47: _objectVariable_1
  • 48: bake
  • 49: i
  • 50: AssassinPOS
  • 51: BeforeSpawns
  • 52: compressBakeMatcher
  • 53: compressedNodes
  • 54: compressBakeResult
  • 55: compressCurrentNodeArray
  • 56: compressBakeNodeLoop
  • 57: compressBakeStringLoop
  • 58: compressMapper
  • 59: FinishSpawns
  • 60: ThunderStorm
  • 61: Smokeeffect
  • 62: _arrayBuilder1
  • 63: AllPos
  • 64: AllDir
  • 65: firstpos
  • 66: secondpos
  • 67: firstpoint2
  • 68: secondpoint2
  • 69: smokeffect2
  • 70: z
  • 71: Wall_ID
  • 72: showwalls
  • 73: smokeffect3
  • 74: NewSpawnArea
  • 75: beam_ID
  • 76: g_beamType
  • 77: initialized
  • 78: sphereRadius
  • 79: x
  • 80: BOTProperties
  • player:
  • 0: _extendedPlayerCollection
  • 1: AsssasinPositions
  • 3: Assasindopositions
  • 4: Washeavyassault
  • 5: ReviveEffect
  • 5: ReviveRing
  • 6: ReviveText
  • 7: IsInMenuMode
  • 8: pathfinderDoGetCurrent
  • 9: pathfinderCurrent
  • 10: pathmapReference
  • 11: parentArray
  • 12: destination
  • 13: lastAttribute
  • 14: Dijkstra_Final_Path
  • 15: Dijkstra_Final_Path_Attributes
  • 16: Dijkstra_Current
  • 17: Dijkstra_Distances
  • 18: Dijkstra_Unvisited
  • 19: Dijkstra_Connected_Segments
  • 20: Dijkstra_Neighbor_Index
  • 21: Dijkstra_Distance
  • 22: Dijkstra_Neighbor_Attributes
  • 23: Dijkstra_Parent_Array
  • 24: Invis
  • 25: LineofSight
  • 26: Charge
  • 27: PreviousHP
  • 28: Charging
  • 112: MenuVFX
  • 113: MenuZAxis
  • 114: MenuYAxis
  • 115: MenuXAxis
  • 116: CursorPos
  • 117: CurrActionID
  • 118: ButtonExitMenu
  • 119: ButtonProperties
  • 120: CursorX
  • 121: CursorY
  • 122: MenuEyePos
  • 123: MenuOriginalFacing
  • 124: ActionIDQueue
  • 125: CurrActionID_Secondary
  • 126: ActionIDQueue_Secondary
  • 127: __iter__
  • 29: IsAttacking
  • 30: HasRage
  • 32: LightningSound
  • 33: Spawns
  • 40: ReviveTimer
  • 41: BeingRevived
  • 42: NeedsReviving
  • 43: Lightning
  • 44: MenuVFX
  • 45: MenuZAxis
  • 46: MenuYAxis
  • 47: MenuXAxis
  • 48: CursorPos
  • 49: CurrActionID
  • 50: ButtonExitMenu
  • 51: ButtonProperties
  • 52: CursorX
  • 53: CursorY
  • 54: MenuEyePos
  • 55: MenuOriginalFacing
  • 56: ActionIDQueue
  • 57: CurrActionID_Secondary
  • 58: ActionIDQueue_Secondary
  • 59: __iter__
  • 61: filterpos
  • 62: lastsavedpos
  • 63: closestbodypos
  • 64: fullbodypos
  • 65: prevpos_intersection
  • 66: active_wall
  • 67: closestwall
  • 68: is_Grounded
  • 69: x
  • 70: intersection_length
  • 71: thickness
  • 72: intersection_length_0
  • 73: thickness_0
  • 74: intersection_length_1
  • 75: intersection_length_2
  • 76: dir
  • 77: intersection_length_3
  • 78: ReviveBar
  • 79: RevivingTimer
  • 80: RevivingBar
  • }
  • subroutines
  • {
  • 0: SpawnBOT
  • 125: CreateMenuFrame
  • 126: CreateMenuButtons
  • 127: CreateMenuCursor
  • }
  • rule("Me")
  • rule("SpawnBOT - Subroutine")
  • {
  • event
  • {
  • Subroutine;
  • SpawnBOT;
  • }
  • actions
  • {
  • Disable Built-In Game Mode Respawning(All Players(Team 1));
  • If(Number Of Dead Players(Team 1) <= 0);
  • Create Dummy Bot(Global.BOTProperties[0], Team 1, -1, Global.BOTProperties[1], Vector(0, 0, 0));
  • Else;
  • Skip If(Is Alive(Global.BOTProperties[2]) == True, 4);
  • Start Forcing Player To Be Hero(Global.BOTProperties[2], Global.BOTProperties[0]);
  • Resurrect(Global.BOTProperties[2]);
  • Teleport(Global.BOTProperties[2], Global.BOTProperties[1]);
  • Skip(2);
  • Global.BOTProperties[2] = Random Value In Array(All Dead Players(Team 1));
  • Start Rule(SpawnBOT, Restart Rule);
  • }
  • }
  • rule("Reset Trooper Health")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Baptiste;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Remove All Health Pools From Player(Event Player);
  • Set Max Health(Event Player, 100);
  • Wait(0.250, Ignore Condition);
  • Set Player Health(Event Player, 200);
  • }
  • }
  • rule("Reset on death")
  • {
  • event
  • {
  • Player Died;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.LineofSight = False;
  • Event Player.Washeavyassault = False;
  • Event Player.Assasindopositions = False;
  • Stop Throttle In Direction(Event Player);
  • Stop Facing(Event Player);
  • Stop Holding Button(Event Player, Button(Primary Fire));
  • Stop Holding Button(Event Player, Button(Secondary Fire));
  • Event Player.Charge = False;
  • Clear Status(Event Player, Phased Out);
  • Set Invisible(Event Player, None);
  • }
  • }
  • rule("Initial Global")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Create HUD Text(All Players(Team 2), Null, Custom String("https://workshop.codes/stormrising"), Null, Right, 0, White, Green,
  • Green, Visible To and String, Default Visibility);
  • Create HUD Text(All Players(Team 2), Null, Null, Custom String("Created by Waitedboat4#2760"), Right, 0, White, White, Green,
  • Visible To and String, Default Visibility);
  • Global._classIndexes[1000] = 0;
  • Global._classIndexes[0] = -1;
  • Global._extendedGlobalCollection[1] = Index Of Array Value(Global._classIndexes, 0);
  • Global._classIndexes[Global._extendedGlobalCollection[1]] = -1;
  • Global._tempNodes = Empty Array;
  • Global._tempSegments = Empty Array;
  • Global._tempAttributes = Empty Array;
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-89.100, 4, -84.170));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-72.660, 4, -64.510));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-70.990, 3.850, -50.540));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-34.410, 5.850, -51.760));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-32.540, 5.850, -78.810));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-10.040, 5.850, -79.490));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-8.100, 6, -94.240));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(19.590, 5.860, -78.340));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(20.330, 5.830, -67.360));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(39.930, 5.830, -67.960));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(40.850, 5.830, -83.350));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(56.980, 5.830, -82.830));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(53.850, 6, -93.420));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(33.730, 10, -92.440));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(32.660, 10, -87.410));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(27.620, 10, -86.720));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(23.350, 10, -87.050));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(23.750, 10, -96.500));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(10.250, 6, -96.970));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(11.500, 6, -91.510));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(18.390, 6, -91.740));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(27.780, 12, -61.310));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(46.760, 11, -61.910));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(46.990, 5.980, -81.430));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(69.310, 6.040, -83.380));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(89.350, 3.990, -78.490));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(96.040, 7, -46.730));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(133.120, 6.080, -46.720));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(133.550, 6, -57.050));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(145.560, 9.010, -57.500));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(145.160, 9.020, -62.880));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(126.070, 12.290, -62.610));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(124.080, 12.030, -55.580));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(149.240, 9, -30.770));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(149.520, 9, -27.490));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(124.570, 10.010, -33.570));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(103.010, 2.050, -78.690));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(101.150, 2.330, -67.550));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(103.460, 2.580, -33.070));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(97.890, 4.460, -36.780));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(85.650, 6.990, -53.230));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(78.200, 6.990, -62.120));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(77.430, 6.990, -76.490));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(70.910, 5.990, -77.030));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(106.520, -0.340, -47.930));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(81.190, 6.990, -52.780));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(82.580, 9, -33.140));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(86.160, 9, -33.440));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(85.780, 12.100, -48.910));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(47.710, 11, -67.480));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(53.530, 11, -71.670));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(59.750, 11, -68.450));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(64.350, 11, -68.850));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(64.360, 12, -83.070));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(64.630, 10, -100.550));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(52.610, 6, -100.820));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(51.920, 11, -67.950));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(57.510, 11, -73.020));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-101.850, 4, -71.930));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-108.690, 4, -69.760));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-96.120, 10, -58.960));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-91.870, 10, -62.290));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-90.790, 4, -62.130));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-82.010, 4, -65.050));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-77.550, 3.850, -60.620));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-99.060, 4, -51.540));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-100.230, 4.180, -40.500));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-91.720, 4, -36.690));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-65.880, 4, -61.330));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-65.240, 6, -77.560));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-54.690, 6, -75.420));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-53.580, 6, -70.370));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-46.350, 6, -68.190));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-45.770, 6, -61.100));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-59.500, 6, -60.550));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-59.810, 6, -69.760));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-46.230, 6, -56.320));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-69.450, 3.950, -39.350));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-54.460, 3.950, -37.940));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-53.680, 3.950, -28.330));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-49.280, 4, -28.540));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-48.030, 6, -37.600));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-41, 6, -38.150));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-17.190, 6.050, -68.990));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-16.500, 11.340, -51.720));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-28.460, 12, -51.010));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-9.290, 11, -50.610));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-10.410, 8, -31.340));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-16.290, 8, -32.330));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-16.280, 6, -43.120));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-25.930, 6.030, -43.290));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-37.370, 6, -86.730));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-37.280, 10, -98.320));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-23.890, 10, -98.240));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-19.500, 10, -96.670));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-24.830, 6, -85.050));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-24.280, 6, -89.790));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-12.390, 6, -90.900));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-0.200, 6, -79.770));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(12.630, 6, -62));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(5.370, 8, -61.690));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(5.030, 12, -76.100));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-0.930, 12, -79.180));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(12.430, 12, -79.420));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(19.160, 6, -50.010));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(34.440, 6, -61.400));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(34.970, 12, -62.080));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(64.850, 11, -73.890));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(149.080, 9, -31.590));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(148.340, 9, -26.790));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(124.030, 10, -29.960));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(124.460, 6.010, -40.740));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(126.600, 6.010, -35.320));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(127.360, 6, -31.290));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(138.540, 6, -33.250));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(123.430, 6.070, -49.340));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(133.330, 6, -62.540));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(123.560, 6, -61.580));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(124.850, 6, -53.170));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(39.250, 6.100, -88.930));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(38, 4, -96.080));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(30.440, 4, -96.160));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(28.940, 4, -101.170));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(10.700, 6, -100.730));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(105.470, 7.020, -46.530));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(82.010, 7, -45.690));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-47.270, 10, -38.610));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-45.270, 10, -42.670));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-49.440, 9.980, -43.060));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-49.510, 10, -35.330));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-49.120, 10, -32.270));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-36.520, 5.840, -31.710));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-37.230, 6, -35.710));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-47.420, 5.310, -50.320));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(43.510, 6, -63.360));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(47.410, 6.010, -62.640));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(47.400, 6.010, -66.890));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(57.110, 4, -67.420));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(57.030, 6.080, -77.360));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(92.450, 6.840, -51.020));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(101.980, 1.950, -72.720));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-79.170, 4, -75.470));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(85.200, 4.650, -75.390));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(90.040, 6.990, -44.530));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(92.440, 7, -35.950));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(92.530, 9, -24.260));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(98.210, 8.960, -24.560));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(98.200, 9.070, -32.380));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(102.166, 1.295, -59.050));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(117.385, 1.922, -31.630));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(120.082, 1.927, -31.814));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(120.732, 4.932, -18.005));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(137.860, 4.983, -17.631));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(131.670, 4.895, -17.313));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-65.580, 4.001, -44.294));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-41.594, 6, -45.665));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-57.779, 4, -44.757));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-57.107, 3.948, -40.081));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-60.842, 5.990, -55.650));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-60.688, 6, -60.276));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-3.838, 6, -93.227));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-5.455, 6.043, -65.942));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(0.235, 6, -64.634));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(1, 2, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(3, 4, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(4, 5, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(5, 6, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(18, 19, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(19, 20, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(20, 7, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(8, 9, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(9, 10, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(10, 23, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(23, 11, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(11, 12, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(12, 13, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(13, 14, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(14, 15, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(15, 16, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(16, 17, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(17, 18, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(15, 21, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(24, 43, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(43, 42, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(42, 41, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(27, 28, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(28, 29, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(29, 30, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(30, 31, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(31, 32, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(39, 38, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(38, 44, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(36, 25, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(25, 24, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(25, 26, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(40, 45, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(45, 41, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(46, 47, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(47, 48, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(48, 40, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(23, 49, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(49, 22, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(49, 56, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(56, 50, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(50, 57, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(57, 51, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(51, 52, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(53, 54, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(54, 55, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(55, 12, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(57, 11, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(58, 59, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(59, 60, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(60, 61, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(58, Empty Array, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(58, 62, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(62, 63, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(1, 64, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(64, 63, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(62, 65, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(65, 66, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(66, 67, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(67, 2, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(2, 64, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(2, 68, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(68, 69, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(69, 70, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(70, 71, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(71, 72, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(72, 73, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(73, 74, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(74, 75, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(75, 71, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(73, 76, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(76, 3, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(2, 77, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(77, 78, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(78, 79, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(79, 80, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(80, 81, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(81, 82, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(82, 3, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(5, 83, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(83, 84, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(84, 85, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(85, 3, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(84, 86, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(86, 87, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(87, 88, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(88, 89, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(89, 90, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(90, 82, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(4, 91, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(91, 92, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(92, 93, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(93, 94, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(94, 6, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(4, 95, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(95, 96, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(96, 97, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(97, 6, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(98, 7, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(8, 99, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(99, 100, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(100, 101, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(101, 103, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(102, 5, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(105, 9, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(106, 21, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(106, 22, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(53, 11, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(52, 107, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(107, 53, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(39, 26, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(108, 109, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(109, 110, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(110, 111, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(111, 27, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(111, 112, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(112, 113, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(108, 114, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(114, 27, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(114, 113, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(32, 115, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(115, 27, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(28, 116, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(116, 117, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(117, 118, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(118, 115, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(10, 119, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(119, 120, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(120, 121, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(121, 122, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(122, 123, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(123, 18, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(27, 124, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(124, 26, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(45, 125, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(125, 46, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(82, 132, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(132, 131, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(131, 130, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(130, 129, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(129, 126, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(126, 127, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(126, 128, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(133, 3, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(128, 133, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(127, 133, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(103, 7, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(7, 8, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(9, 134, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(134, 135, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(135, 136, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(136, 137, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(137, 138, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(138, 11, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(40, 139, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(139, 26, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(36, 140, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(140, 37, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(1, 141, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(141, Empty Array, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(26, 143, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(143, 125, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(143, 144, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(144, 145, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(145, 146, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(146, 147, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(147, 144, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(37, 148, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(148, 44, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(38, 149, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(149, 150, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(150, 151, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(152, 114, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(151, 153, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(153, 152, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(2, 154, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(154, 156, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(156, 155, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(155, 133, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(156, 157, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(157, 78, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(76, 158, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(158, 159, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(159, 74, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(160, 6, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(5, 161, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(161, 162, Empty Array));
  • Modify Global Variable(_tempAttributes, Append To Array, Vector(40, 48, 1));
  • Modify Global Variable(_tempAttributes, Append To Array, Vector(3, 85, 1));
  • Modify Global Variable(_tempAttributes, Append To Array, Vector(5, 102, 1));
  • Modify Global Variable(_tempAttributes, Append To Array, Vector(11, 53, 1));
  • Modify Global Variable(_tempAttributes, Append To Array, Vector(11, 57, 1));
  • Modify Global Variable(_tempAttributes, Append To Array, Vector(111, 110, 1));
  • Modify Global Variable(_tempAttributes, Append To Array, Vector(115, 32, 1));
  • Modify Global Variable(_tempAttributes, Append To Array, Vector(133, 127, 1));
  • Modify Global Variable(_tempAttributes, Append To Array, Vector(133, 128, 1));
  • Modify Global Variable(_tempAttributes, Append To Array, Vector(7, 103, 1));
  • Modify Global Variable(_tempAttributes, Append To Array, Vector(144, 147, 1));
  • Global.Nodes[Global._extendedGlobalCollection[1]] = Global._tempNodes;
  • Global.Segments[Global._extendedGlobalCollection[1]] = Global._tempSegments;
  • Global.Attributes[Global._extendedGlobalCollection[1]] = Global._tempAttributes;
  • Global.map = Global._extendedGlobalCollection[1];
  • Global.i = 0;
  • Global.compressBakeMatcher = Array(Custom String(""), Custom String(""), Custom String(""), Custom String(""), Custom String(
  • ""), Custom String(""), Custom String(""), Custom String(""), Custom String(" "), Custom String(" "), Custom String(" "),
  • Custom String(""), Custom String(""), Custom String(""), Custom String(""), Custom String(""), Custom String(""),
  • Custom String(""), Custom String(""), Custom String(""), Custom String(""), Custom String(""), Custom String(""),
  • Custom String(""), Custom String(""), Custom String(""), Custom String(""), Custom String(""), Custom String(""),
  • Custom String(" "), Custom String("!"), Custom String("#"), Custom String("$"), Custom String("%"), Custom String("&"),
  • Custom String("'"), Custom String("("), Custom String(")"), Custom String("*"), Custom String("+"), Custom String(","),
  • Custom String("-"), Custom String("."), Custom String("/"), Custom String("0"), Custom String("1"), Custom String("2"),
  • Custom String("3"), Custom String("4"), Custom String("5"), Custom String("6"), Custom String("7"), Custom String("8"),
  • Custom String("9"), Custom String(":"), Custom String(";"), Custom String("<"), Custom String("="), Custom String(">"),
  • Custom String("?"), Custom String("@"), Custom String("A"), Custom String("B"), Custom String("C"), Custom String("D"),
  • Custom String("E"), Custom String("F"), Custom String("G"), Custom String("H"), Custom String("I"), Custom String("J"),
  • Custom String("*"), Custom String("L"), Custom String("M"), Custom String("N"), Custom String("O"), Custom String("P"),
  • Custom String("Q"), Custom String("R"), Custom String("S"), Custom String("T"), Custom String("U"), Custom String("V"),
  • Custom String("W"), Custom String("X"), Custom String("Y"), Custom String("Z"), Custom String("["), Custom String("]"),
  • Custom String("^"), Custom String("_"), Custom String("`"), Custom String("a"), Custom String("b"), Custom String("c"),
  • Custom String("d"), Custom String("e"), Custom String("f"), Custom String("g"), Custom String("h"), Custom String("i"),
  • Custom String("j"), Custom String("*"), Custom String("l"), Custom String("m"), Custom String("n"), Custom String("o"),
  • Custom String("p"), Custom String("q"), Custom String("r"), Custom String("s"), Custom String("t"), Custom String("u"),
  • Custom String("v"), Custom String("w"), Custom String("x"), Custom String("y"), Custom String("z"), Custom String("|"),
  • Custom String("}"), Custom String("~"), Custom String(""), Custom String("€"), Custom String(""), Custom String("‚"),
  • Custom String("ƒ"), Custom String("„"), Custom String("…"), Custom String("†"), Custom String("‡"), Custom String("ˆ"),
  • Custom String("‰"), Custom String("Š"), Custom String("‹"), Custom String("Œ"), Custom String(""), Custom String("Ž"),
  • Custom String(""), Custom String(""), Custom String("‘"), Custom String("’"), Custom String("“"), Custom String("”"),
  • Custom String("•"), Custom String("–"), Custom String("—"), Custom String("˜"), Custom String("™"), Custom String("š"),
  • Custom String("›"), Custom String("œ"), Custom String(""), Custom String("ž"), Custom String("Ÿ"), Custom String(" "),
  • Custom String("¡"), Custom String("¢"), Custom String("£"), Custom String("¤"), Custom String("¥"), Custom String("¦"),
  • Custom String("§"), Custom String("¨"), Custom String("©"));
  • }
  • }
  • rule("Team Score")
  • rule("bake")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.compressedNodes = Array(Array(Custom String(
  • "”Œg?@A?ECFIJKLMPLN¤STUVYZY^_`Wabcef†Œ"),
  • Custom String("Œ…ˆ‹W¢£¡£¦O¨")), Array(Custom String(
  • "”ŒgC?@ADECFIJKLMPLN¤STUVYZY^_`Wabcef†Œ"),
  • Custom String("Œ…ˆ‹W¢£¡£¦O¨")), Array(Custom String(
  • "”ŒgC?@ADECHIJKLMPLN¤STUVYZY^_`Wabcef†Œ"),
  • Custom String("Œ…ˆ‹W¢£¡£¦O¨")), Array(Custom String(
  • "”¡gC?@ADECHJKLMNQNLS¤UVWYZY[_`Wabcef†Œ"),
  • Custom String("Œ…ˆ‹W£Œ¢£Q¥¨")), Array(Custom String(
  • "”¡gC?@ADECHJKLMNQNLS¤UVWZY[_`Wabcef†Œ"),
  • Custom String("Œ…ˆ‹W£Œ¢£Q¥¨")), Array(Custom String(
  • "”¡C?@ADECHJKLMNQNLS¤UVWXYY[]^Wadg†Œ"),
  • Custom String("Œ…ˆ‹W£Œ¢£Q¥¨")), Array(Custom String(
  • "”¡eC?@ADECHJKLMNQNLS¤UVWXYY[]^Wcdfg†Œ"),
  • Custom String("Œ…ˆ‹W£Œ¢£Q¥¨")), Array(Custom String(
  • "  6=>8:6 im  :~‚"),
  • Custom String(" Ž")), Array(Custom String(
  • "   p6=>8:6 im  :~‚"),
  • Custom String(" Ž")), Array(Custom String(
  • "   p6=>8:6 im  :~€"),
  • Custom String(" Ž")), Array(Custom String(
  • " ‚ p6=>8:6 im  :~€"),
  • Custom String(" Ž‘")), Array(Custom String(
  • " ‚ p6=>>8:7 im  :~€"),
  • Custom String("Ž‘")), Array(Custom String(
  • " 6=>>8<7 im  :~€"),
  • Custom String("Ž‘")), Array(Custom String(
  • " p=>>8<7 im  :~‚"),
  • Custom String("Ž‘")), Array(Custom String(
  • " p>>8<7 im  :~‚"),
  • Custom String("Ž‘")), Array(Custom String(
  • " p>>8<6 im  :€‚"),
  • Custom String("Ž‘")), Array(Custom String(
  • " p>>8<6 im  :€‚"),
  • Custom String("Ž‘")), Array(Custom String(
  • " ~p>>8<6 im  :€‚"),
  • Custom String(" ‘")), Array(Custom String(
  • " ~p=>8<6 im  :€‚"),
  • Custom String(" Ž‘")), Array(Custom String(
  • " ~p=>8<6 im  :€‚"),
  • Custom String(" Ž")), Array(Custom String(
  • " p=>8<6 im  :€‚"),
  • Custom String(" Ž")), Array(Custom String(
  • " p6=>8<67 im  9~€"),
  • Custom String(" ‘")), Array(Custom String(
  • " p6=>8:67 im  9~€"),
  • Custom String(" ‘")), Array(Custom String(
  • " ‚ p6=>8:6 im  :~€"),
  • Custom String(" ‘")), Array(Custom String(
  • "ƒ !%y“,2/0›.„3-xruuv }y2"),
  • Custom String("-)„–—š—*+œ ž")), Array(Custom String(
  • "ƒ !%y“,’/0›-„3-xruuv }y–"),
  • Custom String(")–—š—*+œ ž")), Array(Custom String(
  • "ƒ !%y›,’2./+-„3-xruuv }y–"),
  • Custom String(")–—š—1+œ ž")), Array(Custom String(
  • "ƒ !%y›,’2./+-„3-xruuv }y–"),
  • Custom String(")–—š—1ž xŸ")), Array(Custom String(
  • "ƒ  !%y›,’2./+-„3-xruuv z|–"),
  • Custom String(")–—š—1ž xŸ")), Array(Custom String(
  • "ƒ !!#$›,’2./+-„3-xruuv z|–"),
  • Custom String(")–—š—1ž xŸ")), Array(Custom String(
  • "ƒ !##$›,’2./+-„3-xruuv z|–"),
  • Custom String(")–—š—1ž xŸ")), Array(Custom String(
  • "ƒ !#$$›,’2./+-„3-xruuv z|–"),
  • Custom String(")–—š—1ž xŸ")), Array(Custom String(
  • "ƒ !#$%›,’2./+-„3-xruuv z|–"),
  • Custom String(")–—š—1ž xŸ")), Array(Custom String(
  • ""),
  • Custom String("")), Array(Custom String(
  • ""),
  • Custom String("")), Array(Custom String(
  • ""),
  • Custom String("")), Array(Custom String(
  • ")ƒ !%y“1+’/0›-„3-xruuv }y–"),
  • Custom String(")–—š—*+œ ž")), Array(Custom String(
  • "),ƒ !%y“1+’/0›-„3-xruuvŸ }y–"),
  • Custom String("*–—š—*+œ ž")), Array(Custom String(
  • ",ƒ !%y“›+’2./+-„3-xruuvŸ }y–"),
  • Custom String("*–—š—1+œ ž")), Array(Custom String(
  • ",ƒ !%y“›,’2./+-„3-xruuv }y–"),
  • Custom String("*–—š—1+œ ž")), Array(Custom String(
  • "0’ƒ !%y›,2./+-„5-xruuv }y2"),
  • Custom String("-)–—š—1+œ ž")), Array(Custom String(
  • "0’ƒ !%y“,2./+.„3-xruuv }y2"),
  • Custom String("-)„–—š—1+œ ž")), Array(Custom String(
  • "0’ƒ !%y“,2//+.„3-xruuv }y2"),
  • Custom String("-)„–—š—*+œ ž")), Array(Custom String(
  • "0’ƒ !%y“,2/0›.„3-xruuv }y2"),
  • Custom String("-)„–—š—*+œ ž")), Array(Custom String(
  • "),ƒ !%y“›1+’2.-„3-xruuvŸ }y–"),
  • Custom String("*–—š—1+œ ž")), Array(Custom String(
  • "0’ƒ !%y›,22./+„3-xruuv }y2"),
  • Custom String("-)„–—š—1+œ ž")), Array(Custom String(
  • "0–ƒ !%y›,22./+„34xruuv }y3"),
  • Custom String("-)„–—š—1+œ ž")), Array(Custom String(
  • "0–ƒ !%y›,22./+„44xruuv }y3"),
  • Custom String("-)„–—š—1+œ ž")), Array(Custom String(
  • "0–ƒ !%y›,22./+„45xruuv }y3"),
  • Custom String("-)„–—š—1+œ ž")), Array(Custom String(
  • " ‚ p66=>8:67 im  9~€"),
  • Custom String(" ‘")), Array(Custom String(
  • " ‚ p66=>8q:77 im  9~€"),
  • Custom String(" ‘")), Array(Custom String(
  • " ‚ p66=>8q:;78 im  9~€"),
  • Custom String(" ‘")), Array(Custom String(
  • " <‚ p66=>9q:;78 im  9~€"),
  • Custom String(" ‘")), Array(Custom String(
  • " <p66=>9q:;78 im  :~€"),
  • Custom String(" ‘")), Array(Custom String(
  • " <6=>9q;;78 im  :~€"),
  • Custom String("Ž‘")), Array(Custom String(
  • " <6=>>8<7 im  :~€"),
  • Custom String("Ž‘")), Array(Custom String(
  • " ‚ p66==>8q:7 im  9~€"),
  • Custom String(" ‘")), Array(Custom String(
  • " ‚ p66=>>8q:;7 im  9~€"),
  • Custom String(" ‘")), Array(Custom String(
  • "?EEŒg?@A?CDCFGIJKLMPLN¤STUVYZY^_`Wabcef†Œ"),
  • Custom String("Œ…ˆ‹W¢£¡£¦O¨")), Array(Custom String(
  • "?EEŒg@@A?CDCFGIJKLMPLN¤STUVYZY^_`Wabcef†Œ"),
  • Custom String("Œ…ˆ‹W¢£¡£¦O¨")), Array(Custom String(
  • "?EEŒg@AA?CDCFGIJKLMPLN¤STUVYZY^_`Wabcef†Œ"),
  • Custom String("Œ…ˆ‹W¢£¡£¦O¨")), Array(Custom String(
  • "?EEŒg@AB?CDCFGIJKLMPLN¤STUVYZY^_`Wabcef†Œ"),
  • Custom String("Œ…ˆ‹W¢£¡£¦O¨")), Array(Custom String(
  • "?EEŒgC?@ACDCFGIJKLMPLN¤STUVYZY^_`Wabcef†Œ"),
  • Custom String("Œ…ˆ‹W¢£¡£¦O¨")), Array(Custom String(
  • "”EEŒgC?@ADDCFGIJKLMPLN¤STUVYZY^_`Wabcef†Œ"),
  • Custom String("Œ…ˆ‹W¢£¡£¦O¨")), Array(Custom String(
  • "”EEŒgC?@ADECFIJKLMPLN¤STUVYZY^_`Wabcef†Œ"),
  • Custom String("Œ…ˆ‹W¢£¡£¦O¨")), Array(Custom String(
  • "?EEŒgC?@AFCDFGIJKLMPLN¤STUVYZY^_`Wabcef†Œ"),
  • Custom String("Œ…ˆ‹W¢£¡£¦O¨")), Array(Custom String(
  • "?EHŒgC?@AFCDGGIJKLMPLN¤STUVYZY^_`Wabcef†Œ"),
  • Custom String("Œ…ˆ‹W¢£¡£¦O¨")), Array(Custom String(
  • "”HŒgC?@AFCGHIJKLMPLN¤STUVYZY^_`Wabcef†Œ"),
  • Custom String("Œ…ˆ‹W¢£¡£¦O¨")), Array(Custom String(
  • "”IQgC?@ADECHIJKLMPLN¤STUVYZY^_`Wabcef†Œ"),
  • Custom String("Œ…ˆ‹W¢£¡£¦O¨")), Array(Custom String(
  • "”IQgC?@ADECHJJKLMPLN¤STWYZY[_`Wabcef†Œ"),
  • Custom String("Œ…ˆ‹W£¡£¦O¨")), Array(Custom String(
  • "”IQgC?@ADECHJKKLMPLN¤SVWYZY[_`Wabcef†Œ"),
  • Custom String("Œ…ˆ‹WŒ¡£¦O¨")), Array(Custom String(
  • "”IQgC?@ADECHJKLLMPLN¤UVWYZY[_`Wabcef†Œ"),
  • Custom String("Œ…ˆ‹WŒ¡£¦O¨")), Array(Custom String(
  • "”IQgC?@ADECHJKLMMNLN¤UVWYZY[_`Wabcef†Œ"),
  • Custom String("Œ…ˆ‹WŒ¢£QO¨")), Array(Custom String(
  • "”IQgC?@ADECHJKLMNNLN¤UVWYZY[_`Wabcef†Œ"),
  • Custom String("Œ…ˆ‹W£Œ¢£QO¨")), Array(Custom String(
  • "”IQgC?@ADECHJKLPNOON¤UVWYZY[_`Wabcef†Œ"),
  • Custom String("Œ…ˆ‹WŒ¢£¦O¨")), Array(Custom String(
  • "”IQgC?@ADECHJKLPLMPN¤UVWYZY[_`Wabcef†Œ"),
  • Custom String("Œ…ˆ‹WŒ¡£¦O¨")), Array(Custom String(
  • "”IQgC?@ADECHJKLMNQNLS¤UVWYZY[_`Wabcef†Œ"),
  • Custom String("Œ…ˆ‹W£Œ¢£Q¥¨")), Array(Custom String(
  • "”RŒgC?@ADECHIJKLMPLRSTUVYZY^_`Wabcef†Œ"),
  • Custom String("Œ…Š‹W¢£¤S¦O¨")), Array(Custom String(
  • "”¡ŒgC?@ADECHIJKNQNLSSTUVYZY^_`Wabcef†Œ"),
  • Custom String("Œ…Š‹W¢££¤SQ¥¨")), Array(Custom String(
  • "”¡WgC?@ADECHIJMNQNLSTTUVYZY^_`WabcefˆŒ"),
  • Custom String("Œ‰Š‹W¢££¤SQ¥¨")), Array(Custom String(
  • "”¡WgC?@ADECHILMNQNLSTUUVYZY^_`Wabcefˆ…"),
  • Custom String("…‰Š‹W££¤SQ¥¨")), Array(Custom String(
  • "”¡WgC?@ADECHKLMNQNLSTUVVYZY^_`Wabcefˆ…"),
  • Custom String("…‰Š‹W£Œ¤SQ¥¨")), Array(Custom String(
  • "”¡WgC?@ADECHKLMNQNLSTUVWYZY^_`Wabcefˆ…"),
  • Custom String("…‰Š‹W£Œ¤SQ¥¨")), Array(Custom String(
  • "”¡XC?@ADECHJKLMNQNLS¤UVWXYY[]^_adg†Œ"),
  • Custom String("Œ…ˆ‹W£Œ¢£Q¥¨")), Array(Custom String(
  • "”¡XC?@ADECHKLMNQNLSTUVW`YYY[]^_adgˆŒ"),
  • Custom String("Œ‰Š‹W£Œ¤SQ¥¨")), Array(Custom String(
  • "”¡XC?@ADECHKLMNQNLSTUVW`YZY[]^_adgˆŒ"),
  • Custom String("Œ‰Š‹W£Œ¤SQ¥¨")), Array(Custom String(
  • "”¡WXC?@ADECHKLMNQNLSTUVW`Y[Y[]^_adgˆ…"),
  • Custom String("…‰Š‹W£Œ¤SQ¥¨")), Array(Custom String(
  • "”¡WXC?@ADECHKLMNQNLSTUVW`Y[Y]]^_adgˆ…"),
  • Custom String("…‰Š‹W£Œ¤SQ¥¨")), Array(Custom String(
  • "”¡WXC?@ADECHKLMNQNLSTUVW`Y[Y]^^_adeˆ…"),
  • Custom String("…‰Š‹W£Œ¤SQ¥¨")), Array(Custom String(
  • "”¡WXC?@ADECHKLMNQNLSTUVW`Y[]^__abefˆ…"),
  • Custom String("…‰Š‹W£Œ¤SQ¥¨")), Array(Custom String(
  • "”¡WgC?@ADECHKLMNQNLSTUVW`YZ]^_`abcefˆ…"),
  • Custom String("…‰Š‹W£Œ¤SQ¥¨")), Array(Custom String(
  • "”¡agC?@ADECHJKLMNQNLS¤UVWZY[_`Wabcef†Œ"),
  • Custom String("Œ…ˆ‹W£Œ¢£Q¥¨")), Array(Custom String(
  • "”¡adC?@ADECHJKLMNQNLS¤UVWZY[_`Wbbce†Œ"),
  • Custom String("Œ…ˆ‹W£Œ¢£Q¥¨")), Array(Custom String(
  • "”¡adC?@ADECHJKLMNQNLS¤UVWXY[]`Wbccfg†Œ"),
  • Custom String("Œ…ˆ‹W£Œ¢£Q¥¨")), Array(Custom String(
  • "”¡adC?@ADECHJKLMNQNLS¤UVWXYY[]^Wbcdfg†Œ"),
  • Custom String("Œ…ˆ‹W£Œ¢£Q¥¨")), Array(Custom String(
  • "”¡egC?@ADECHJKLMNQNLS¤UVWZY[_`Wadef†Œ"),
  • Custom String("Œ…ˆ‹W£Œ¢£Q¥¨")), Array(Custom String(
  • "”¡egC?@ADECHJKLMNQNLS¤UVWZY[_`Wadff†Œ"),
  • Custom String("Œ…ˆ‹W£Œ¢£Q¥¨")), Array(Custom String(
  • "”¡egC?@ADECHJKLMNQNLS¤UVWXY[]`Wcdfg†Œ"),
  • Custom String("Œ…ˆ‹W£Œ¢£Q¥¨")), Array(Custom String(
  • "h  6=>8:6 im  :~‚"),
  • Custom String(" Ž")), Array(Custom String(
  • " i  p6=>8:6 ij  :~‚"),
  • Custom String(" Ž")), Array(Custom String(
  • " i  p6=>8:6 jj* :~‚"),
  • Custom String(" Ž")), Array(Custom String(
  • " i  p6=>8:6 jk* :~‚"),
  • Custom String(" Ž")), Array(Custom String(
  • ""),
  • Custom String("")), Array(Custom String(
  • " i  p6=>8:6 jkm :~‚"),
  • Custom String(" Ž")), Array(Custom String(
  • ""),
  • Custom String("")), Array(Custom String(
  • " o  p6=>8:6 im :~€"),
  • Custom String(" Ž")), Array(Custom String(
  • " pp6=>8:67 im  9~€"),
  • Custom String(" ‘")), Array(Custom String(
  • " <‚ p66=>9qq:;78 im  ~€"),
  • Custom String(" ‘")), Array(Custom String(
  • "ƒx !%y›œ’2./+-„3-rsvwxr }y–"),
  • Custom String(")–—š—1ž xŸ")), Array(Custom String(
  • "ƒx !%y›œ’2./+-„3-ssvwxr }y–"),
  • Custom String(")–—š—1ž xŸ")), Array(Custom String(
  • "ƒx !%y›œ’2./+-„3-stvwxr }y–"),
  • Custom String(")–—š—1ž xŸ")), Array(Custom String(
  • "ƒu !%y›,’2./+-„3-xtuuvw }y–"),
  • Custom String(")–—š—1ž xŸ")), Array(Custom String(
  • "ƒu !%y›,’2./+-„3-xruvvw }y–"),
  • Custom String(")–—š—1ž xŸ")), Array(Custom String(
  • "ƒu !%y›,’2./+-„3-xruvww }y–"),
  • Custom String(")–—š—1ž xŸ")), Array(Custom String(
  • "ƒx !%y›œ’2./+-„3-xruvwx }y–"),
  • Custom String(")–—š—1ž xŸ")), Array(Custom String(
  • "ƒy $%y›,’2./+-„3-xruuv|}y–"),
  • Custom String(")–—š—1ž xŸ")), Array(Custom String(
  • "ƒ z !%y›,’2./+-„3-xruuv}z|–"),
  • Custom String(")–—š—1ž xŸ")), Array(Custom String(
  • "ƒyz !%y›,’2./+-„3-xruuv}||–"),
  • Custom String(")–—š—1ž xŸ")), Array(Custom String(
  • "ƒyz $%y›,’2./+-„3-xruuv}|}–"),
  • Custom String(")–—š—1ž xŸ")), Array(Custom String(
  • " ~‚p6=>8:6 im  :~€"),
  • Custom String(" Ž‘")), Array(Custom String(
  • " ~‚p6=>8:6 im  :€"),
  • Custom String(" Ž‘")), Array(Custom String(
  • " ~‚p6=>8:6 im  :€€"),
  • Custom String(" Ž‘")), Array(Custom String(
  • " ~‚p6=>8:6 im  :€"),
  • Custom String(" Ž‘")), Array(Custom String(
  • " ~‚6=>8<6 im  :€‚"),
  • Custom String(" Ž‘")), Array(Custom String(
  • "ƒƒ !%y›,’2./+-„3-xruuv }y–"),
  • Custom String(")–—š—1+œxŸ")), Array(Custom String(
  • "0–ƒ !%y›,22./+„„3-xruuv }y"),
  • Custom String("-)„–—š—1+œ ž")), Array(Custom String(
  • "”¡WgC?@ADECHKLMNQNLSTUVW‹YZY^_`Wabcef…"),
  • Custom String("……ˆ‰Š£Œ¤SQ¥¨")), Array(Custom String(
  • "”¡WgC?@ADECHKLMNQNLSTUVW‹YZY^_`Wabcef†"),
  • Custom String("……ˆ‰Š£Œ¤SQ¥¨")), Array(Custom String(
  • "”¡WgC?@ADECHKLMNQNLSTUVW‹YZY^_`Wabcef‡…"),
  • Custom String("…ˆ‰Š£Œ¤SQ¥¨")), Array(Custom String(
  • "”¡WgC?@ADECHKLMNQNLSTUVW‹YZY^_`Wabcefˆ…"),
  • Custom String("…ˆ‰Š£Œ¤SQ¥¨")), Array(Custom String(
  • "”¡WgC?@ADECHKLMNQNLSTUVW‹YZY^_`Wabcefˆ…"),
  • Custom String("…‰‰Š£Œ¤SQ¥¨")), Array(Custom String(
  • "”¡WgC?@ADECHKLMNQNLSTUVW‹YZY^_`Wabcefˆ…"),
  • Custom String("…‰ŠŠ£Œ¤SQ¥¨")), Array(Custom String(
  • "”¡WgC?@ADECHKLMNQNLSTUVW‹YZY^_`Wabcefˆ…"),
  • Custom String("…‰Š‹£Œ¤SQ¥¨")), Array(Custom String(
  • "”¡ŒgC?@ADECHKLMNQNLS¤SVWYZY[_`Wabcef†Œ"),
  • Custom String("Œ…ˆ‰W£Œ¢£Q¥¨")), Array(Custom String(
  • "  ‘ p6>>8:6 im  :~€"),
  • Custom String("Ž")), Array(Custom String(
  • "  ‘ p6>>8:7 im  :~€"),
  • Custom String("ŽŽ")), Array(Custom String(
  • "  ‘ p6=>>8:7 im  :~€"),
  • Custom String("Ž")), Array(Custom String(
  • " ‘‚ p6=>>8:7 im  :~€"),
  • Custom String("Ž")), Array(Custom String(
  • " ‘‚ p6=>>8:7 im  :~€"),
  • Custom String("Ž‘")), Array(Custom String(
  • "0’ƒ !%y›,’2./+-„5-xruuv }y2"),
  • Custom String(")–—š—1+œ ž")), Array(Custom String(
  • ")ƒ !%y““1+’/0›-„3-xruuv }y–"),
  • Custom String("–—š—*+œ ž")), Array(Custom String(
  • "””Œg?@ADECFIJKLMPLN¤STUVYZY^_`Wabcef†Œ"),
  • Custom String("Œ…ˆ‹W¢£¡£¦O¨")), Array(Custom String(
  • ""),
  • Custom String("")), Array(Custom String(
  • "0–ƒ !%y›,’2./+„„3-xruuv }y–"),
  • Custom String(")–—š—1+œ ž")), Array(Custom String(
  • "0–ƒ !%y›,’2./+„„3-xruuv }y–"),
  • Custom String(")——š—1+œ ž")), Array(Custom String(
  • "0–ƒ !%y›,’2./+„„3-xruuv }y–"),
  • Custom String(")—˜˜™1+œ ž")), Array(Custom String(
  • "0–ƒ !%y›,’2./+„„3-xruuv }y–"),
  • Custom String(")—˜™™1+œ ž")), Array(Custom String(
  • "0–ƒ !%y›,’2./+„„3-xruuv }y–"),
  • Custom String(")—˜™š1+œ ž")), Array(Custom String(
  • "),ƒ !%y“›1+’20›-„3-xruuvŸ }y–"),
  • Custom String("*–—š—+œ ž")), Array(Custom String(
  • ",x !%y“›œ+’2./+-„3-xruvwxŸ }y–"),
  • Custom String("*–—š—1œ ž")), Array(Custom String(
  • ",x !%y“›œ+’2./+-„3-xruvwxŸ }y–"),
  • Custom String("*–—š—1 ž")), Array(Custom String(
  • ",x !%y“›œ+’2./+-„3-xruvwxŸ }y–"),
  • Custom String("*–—š—1ž ž")), Array(Custom String(
  • ",x !%y“›œ+’2./+-„3-xruvwxŸ }y–"),
  • Custom String("*–—š—1ž Ÿ")), Array(Custom String(
  • ",x !%y“›œ+’2./+-„3-xruvwxŸ }y–"),
  • Custom String("*–—š—1ž  ")), Array(Custom String(
  • "”¡ŒgC?@ADECHIJKLQPL¤STUVYZY^_`Wabcef†Œ"),
  • Custom String("Œ…ˆ‹W¢£¡£QO¨")), Array(Custom String(
  • "”¡ŒgC?@ADECHILMNQNLS¤STWYZY[_`Wabcef†Œ"),
  • Custom String("Œ…ˆ‰W¢£¢£Q¥¨")), Array(Custom String(
  • "”¡ŒgC?@ADECHIJKNQNLS¤STUVYZY^_`Wabcef†Œ"),
  • Custom String("Œ…ˆ‹W¢£££Q¥¨")), Array(Custom String(
  • "”¡ŒgC?@ADECHIJKNQNLS¤STUVYZY^_`Wabcef†Œ"),
  • Custom String("Œ…ˆ‹W¢££¤Q¥¨")), Array(Custom String(
  • "”IQgC?@ADECHJKLPNQ¦O¥¤UVWYZY[_`Wabcef†Œ"),
  • Custom String("Œ…ˆ‹W£Œ¢£¥¨")), Array(Custom String(
  • "”IQgC?@ADECHJKLPNO¦O¥¤UVWYZY[_`Wabcef†Œ"),
  • Custom String("Œ…ˆ‹WŒ¢£¦¨")), Array(Custom String(
  • "”¡e§C?@ADECHJKLMNQNLS¤UVWXYY[]^Wcdfg†Œ"),
  • Custom String("Œ…ˆ‹W£Œ¢£Q¥¨")), Array(Custom String(
  • "”¡¨C?@ADECHJKLMNQNLS¤UVWXYY[]^Wadg†Œ"),
  • Custom String("Œ…ˆ‹W£Œ¢£Q¥¨")), Array(Custom String(
  • "”¡¨C?@ADECHJKLMNQNLS¤UVWXYY[]^Wadg†Œ"),
  • Custom String("Œ…ˆ‹W£Œ¢£Q¥©")));
  • Global.compressBakeResult = Empty Array;
  • For Global Variable(compressBakeNodeLoop, 0, Count Of(Global.compressedNodes), 1);
  • Global.compressCurrentNodeArray = Empty Array;
  • For Global Variable(compressBakeStringLoop, 0, Count Of(Global.compressedNodes[Global.compressBakeNodeLoop]), 1);
  • Global.compressMapper = Empty Array;
  • Global.compressMapper[String Length(Global.compressedNodes[Global.compressBakeNodeLoop][Global.compressBakeStringLoop]) - 1] = 0;
  • Modify Global Variable(compressCurrentNodeArray, Append To Array, Mapped Array(Global.compressMapper, Index Of Array Value(
  • Global.compressBakeMatcher, String Slice(Global.compressedNodes[Global.compressBakeNodeLoop][Global.compressBakeStringLoop],
  • Current Array Index, 1))));
  • Global.i += 1;
  • If(!(Global.i % 5));
  • Wait(0.016, Ignore Condition);
  • End;
  • End;
  • Global.compressBakeResult[Global.compressBakeNodeLoop] = Global.compressCurrentNodeArray;
  • End;
  • Global._extendedGlobalCollection[2] = Index Of Array Value(Global._classIndexes, 0);
  • Global._classIndexes[Global._extendedGlobalCollection[2]] = 1;
  • Global._objectVariable_1[Global._extendedGlobalCollection[2]] = Global.map;
  • Global._objectVariable_0[Global._extendedGlobalCollection[2]] = Global.compressBakeResult;
  • Global.bake = Global._extendedGlobalCollection[2];
  • }
  • }
  • rule("Me")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.CreateSelfPromotionText = True;
  • Create HUD Text(All Players(Team 2), Null, Custom String("https://workshop.codes/stormrising"), Null, Right, 0, Color(White),
  • Color(Green), Color(Green), Visible To and String, Default Visibility);
  • Create HUD Text(All Players(Team 2), Null, Null, Custom String("Created by Waitedboat4#2760"), Right, 0, Color(White), Color(
  • White), Color(Green), Visible To and String, Default Visibility);
  • }
  • }
  • rule("Spawn")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Global.AssemblingHeroes == False;
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • Event Player.Spawns == False;
  • Global.NewSpawnArea == False;
  • }
  • actions
  • {
  • Wait(0.250, Abort When False);
  • Create HUD Text(All Players(Team 2), Null, Null, Custom String("Team Score: {0}", Global.TeamScore), Left, 0, White, White, White,
  • Visible To and String, Default Visibility);
  • Event Player.Spawns = True;
  • Teleport(Event Player, Vector(-106.585, 5.366, -78.501));
  • }
  • }
  • rule("Spawn 2")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • Event Player.Spawns == False;
  • Global.NewSpawnArea == True;
  • }
  • actions
  • {
  • Event Player.Spawns = True;
  • Teleport(Event Player, Vector(-0.646, 6.455, -82.849));
  • }
  • }
  • rule("Team Score")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Create HUD Text(All Players(Team 2), Null, Null, Custom String("Team Score: {0}", Global.TeamScore), Left, 0, Color(White), Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • }
  • }
  • rule("Scoreboard")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Create HUD Text(All Players(Team 2), Null, Null, Custom String("{0} | {1} HP | {2}%", Custom String("{0} {1}", Is Alive(
  • Event Player) == True ? Hero Icon String(Hero Of(Event Player)) : Icon String(X), Event Player), Round To Integer(Health(
  • Event Player), To Nearest), Ultimate Charge Percent(Event Player)), Left, 2, White, White, White, Visible To and String,
  • Default Visibility);
  • Event Player), To Nearest), Ultimate Charge Percent(Event Player)), Left, 2, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • }
  • }
  • rule("▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒【Josbird's Cursor Menu】▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Toggle menu mode")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • "Dummy bots were getting menu stuff and causing server crashes, so we exclude them from these rules."
  • Is Dummy Bot(Event Player) == False;
  • Global.AssemblingHeroes == True;
  • Has Spawned(Event Player) == True;
  • Global.Allheroes == False;
  • }
  • actions
  • {
  • "If the menu is not open, opens the menu. Otherwise, closes it."
  • Event Player.IsInMenuMode = !Event Player.IsInMenuMode;
  • }
  • }
  • rule("Menu activated > Start setup")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • "Dummy bots were getting menu stuff and causing server crashes, so we exclude them from these rules."
  • Is Dummy Bot(Event Player) == False;
  • "Triggers once whenever the menu opens."
  • Event Player.IsInMenuMode == True;
  • }
  • actions
  • {
  • "Sets aim speed to minimum to reduce camera sway while in menu."
  • Set Aim Speed(Event Player, 10);
  • "These 2 rules disable primary and secondary fire for the purposes of click detection. Though personally I haven't actually thought of a use for secondary fire yet."
  • Set Primary Fire Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, False);
  • "These 2 rules disable the non-menu HUD. This is optional, I just think it looks cleaner."
  • Disable Hero HUD(Event Player);
  • Disable Game Mode HUD(Event Player);
  • "This (and the following rule) set the menu eye position to follow the player's eye position. Overwrite if you plan to separate the menu from the player's current position."
  • Event Player.MenuEyePos = Vector(-105.631, 5.551, -77.225);
  • Chase Player Variable At Rate(Event Player, MenuEyePos, Vector(-105.631, 5.551, -77.225), 100000, Destination and Rate);
  • "Stores original facing direction of player for the purpose of recording mouse movement. Don't recommend changing this."
  • Event Player.MenuOriginalFacing = Facing Direction Of(Event Player);
  • "Sets the forward axis of the menu view (into and out of the screen). Change this to match the facing direction of whatever camera you use if you decouple it from the first person view. (Make sure to normalize if the direction is not a unit vector.)"
  • Event Player.MenuZAxis = Normalize(Vector(-108.383, 5.550, -79.942));
  • "Sets vertical axis of menu (up and down the screen)."
  • Event Player.MenuYAxis = Direction From Angles(Horizontal Angle From Direction(Event Player.MenuZAxis),
  • Vertical Angle From Direction(Event Player.MenuZAxis) + -90);
  • "Sets horizontal axis of the menu (left and right on the screen)."
  • Event Player.MenuXAxis = Cross Product(Event Player.MenuZAxis, Event Player.MenuYAxis);
  • "These three rules scale up all 3 axes to 100 meters in order to stabilize the menu in-world texts by placing them far away from the camera view. Keep this in mind if you plan to make your own texts on the screen."
  • Event Player.MenuXAxis *= 100;
  • Event Player.MenuYAxis *= 100;
  • Event Player.MenuZAxis *= 100;
  • "This is where the magic happens. The first rule initializes the cursor position and the second moves it around the screen as the player moves their aim by projecting the angle difference onto a flat plane."
  • Event Player.CursorPos = Event Player.MenuEyePos + Event Player.MenuZAxis * 3;
  • Chase Player Variable At Rate(Event Player, CursorPos,
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * -0.750 * Angle Difference(
  • Horizontal Angle From Direction(Event Player.MenuOriginalFacing), Horizontal Angle From Direction(Facing Direction Of(
  • Event Player))) + Event Player.MenuYAxis * -0.750 * Angle Difference(Vertical Angle From Direction(
  • Event Player.MenuOriginalFacing), Vertical Angle From Direction(Facing Direction Of(Event Player))), 100000,
  • Destination and Rate);
  • "The next four rules provide a simpler way to track the position of the cursor relative to the screen. Use these instead of CursorPos to compare the cursor position to coordinates of onscreen elements."
  • Event Player.CursorX = 0;
  • Event Player.CursorY = 0;
  • Chase Player Variable At Rate(Event Player, CursorX, -0.750 * Angle Difference(Horizontal Angle From Direction(
  • Event Player.MenuOriginalFacing), Horizontal Angle From Direction(Facing Direction Of(Event Player))), 100000,
  • Destination and Rate);
  • Chase Player Variable At Rate(Event Player, CursorY, -0.750 * Angle Difference(Vertical Angle From Direction(
  • Event Player.MenuOriginalFacing), Vertical Angle From Direction(Facing Direction Of(Event Player))), 100000,
  • Destination and Rate);
  • "This rule initializes the array that stores all components of the menu in order to destroy them when it closes. Don't recommend changing this."
  • Event Player.MenuVFX = Empty Array;
  • "These subroutines do the actual work of constructing the menu. See subroutines for more details."
  • Call Subroutine(CreateMenuFrame);
  • Call Subroutine(CreateMenuButtons);
  • Call Subroutine(CreateMenuCursor);
  • }
  • }
  • rule("Menu activated > Create buttons")
  • {
  • event
  • {
  • Subroutine;
  • CreateMenuButtons;
  • }
  • actions
  • {
  • "This rule creates the actual button visuals when the menu is opened. Until we get color variables, this is where more experienced users can change button colors. In each set, 2nd action = inactive button color, 4th = hovered button color."
  • Wait(0.016, Ignore Condition);
  • " \r\nButtonProperties[0]"
  • Abort If(Count Of(Event Player.ButtonProperties) <= 0);
  • Create In-World Text(Filtered Array(Event Player, Event Player.ButtonProperties[0][7] && (
  • !Event Player.ButtonProperties[0][6] || Absolute Value(Event Player.CursorX - Event Player.ButtonProperties[0][2])
  • > Event Player.ButtonProperties[0][4] / 2 || Absolute Value(Event Player.CursorY - Event Player.ButtonProperties[0][3])
  • > Event Player.ButtonProperties[0][5] / 2)), Event Player.ButtonProperties[0][0],
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * Event Player.ButtonProperties[0][2] + Event Player.MenuYAxis * (
  • Event Player.ButtonProperties[0][3] - 0.200), Event Player.ButtonProperties[0][8], Do Not Clip, Visible To Position and String,
  • White, Default Visibility);
  • Color(White), Default Visibility);
  • Modify Player Variable(Event Player, MenuVFX, Append To Array, Last Text ID);
  • Create In-World Text(Filtered Array(Event Player,
  • Event Player.ButtonProperties[0][7] && Event Player.ButtonProperties[0][6] && Absolute Value(
  • Event Player.CursorX - Event Player.ButtonProperties[0][2]) <= Event Player.ButtonProperties[0][4] / 2 && Absolute Value(
  • Event Player.CursorY - Event Player.ButtonProperties[0][3]) <= Event Player.ButtonProperties[0][5] / 2),
  • Event Player.ButtonProperties[0][0],
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * Event Player.ButtonProperties[0][2] + Event Player.MenuYAxis * (
  • Event Player.ButtonProperties[0][3] - 0.200), Event Player.ButtonProperties[0][8], Do Not Clip, Visible To Position and String,
  • Yellow, Default Visibility);
  • Color(Yellow), Default Visibility);
  • Modify Player Variable(Event Player, MenuVFX, Append To Array, Last Text ID);
  • " \r\nButtonProperties[1]"
  • Abort If(Count Of(Event Player.ButtonProperties) <= 1);
  • Create In-World Text(Filtered Array(Event Player, Event Player.ButtonProperties[1][7] && (
  • !Event Player.ButtonProperties[1][6] || Absolute Value(Event Player.CursorX - Event Player.ButtonProperties[1][2])
  • > Event Player.ButtonProperties[1][4] / 2 || Absolute Value(Event Player.CursorY - Event Player.ButtonProperties[1][3])
  • > Event Player.ButtonProperties[1][5] / 2)), Event Player.ButtonProperties[1][0],
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * Event Player.ButtonProperties[1][2] + Event Player.MenuYAxis * (
  • Event Player.ButtonProperties[1][3] - 0.200), Event Player.ButtonProperties[1][8], Do Not Clip, Visible To Position and String,
  • White, Default Visibility);
  • Color(White), Default Visibility);
  • Modify Player Variable(Event Player, MenuVFX, Append To Array, Last Text ID);
  • Create In-World Text(Filtered Array(Event Player,
  • Event Player.ButtonProperties[1][7] && Event Player.ButtonProperties[1][6] && Absolute Value(
  • Event Player.CursorX - Event Player.ButtonProperties[1][2]) <= Event Player.ButtonProperties[1][4] / 2 && Absolute Value(
  • Event Player.CursorY - Event Player.ButtonProperties[1][3]) <= Event Player.ButtonProperties[1][5] / 2),
  • Event Player.ButtonProperties[1][0],
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * Event Player.ButtonProperties[1][2] + Event Player.MenuYAxis * (
  • Event Player.ButtonProperties[1][3] - 0.200), Event Player.ButtonProperties[1][8], Do Not Clip, Visible To Position and String,
  • Yellow, Default Visibility);
  • Color(Yellow), Default Visibility);
  • Modify Player Variable(Event Player, MenuVFX, Append To Array, Last Text ID);
  • " \r\nButtonProperties[2]"
  • Abort If(Count Of(Event Player.ButtonProperties) <= 2);
  • Create In-World Text(Filtered Array(Event Player, Event Player.ButtonProperties[2][7] && (
  • !Event Player.ButtonProperties[2][6] || Absolute Value(Event Player.CursorX - Event Player.ButtonProperties[2][2])
  • > Event Player.ButtonProperties[2][4] / 2 || Absolute Value(Event Player.CursorY - Event Player.ButtonProperties[2][3])
  • > Event Player.ButtonProperties[2][5] / 2)), Event Player.ButtonProperties[2][0],
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * Event Player.ButtonProperties[2][2] + Event Player.MenuYAxis * (
  • Event Player.ButtonProperties[2][3] - 0.200), Event Player.ButtonProperties[2][8], Do Not Clip, Visible To Position and String,
  • White, Default Visibility);
  • Color(White), Default Visibility);
  • Modify Player Variable(Event Player, MenuVFX, Append To Array, Last Text ID);
  • Create In-World Text(Filtered Array(Event Player,
  • Event Player.ButtonProperties[2][7] && Event Player.ButtonProperties[2][6] && Absolute Value(
  • Event Player.CursorX - Event Player.ButtonProperties[2][2]) <= Event Player.ButtonProperties[2][4] / 2 && Absolute Value(
  • Event Player.CursorY - Event Player.ButtonProperties[2][3]) <= Event Player.ButtonProperties[2][5] / 2),
  • Event Player.ButtonProperties[2][0],
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * Event Player.ButtonProperties[2][2] + Event Player.MenuYAxis * (
  • Event Player.ButtonProperties[2][3] - 0.200), Event Player.ButtonProperties[2][8], Do Not Clip, Visible To Position and String,
  • Yellow, Default Visibility);
  • Color(Yellow), Default Visibility);
  • Modify Player Variable(Event Player, MenuVFX, Append To Array, Last Text ID);
  • " \r\nButtonProperties[3]"
  • Abort If(Count Of(Event Player.ButtonProperties) <= 3);
  • Create In-World Text(Filtered Array(Event Player, Event Player.ButtonProperties[3][7] && (
  • !Event Player.ButtonProperties[3][6] || Absolute Value(Event Player.CursorX - Event Player.ButtonProperties[3][2])
  • > Event Player.ButtonProperties[3][4] / 2 || Absolute Value(Event Player.CursorY - Event Player.ButtonProperties[3][3])
  • > Event Player.ButtonProperties[3][5] / 2)), Event Player.ButtonProperties[3][0],
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * Event Player.ButtonProperties[3][2] + Event Player.MenuYAxis * (
  • Event Player.ButtonProperties[3][3] - 0.200), Event Player.ButtonProperties[3][8], Do Not Clip, Visible To Position and String,
  • White, Default Visibility);
  • Color(White), Default Visibility);
  • Modify Player Variable(Event Player, MenuVFX, Append To Array, Last Text ID);
  • Create In-World Text(Filtered Array(Event Player,
  • Event Player.ButtonProperties[3][7] && Event Player.ButtonProperties[3][6] && Absolute Value(
  • Event Player.CursorX - Event Player.ButtonProperties[3][2]) <= Event Player.ButtonProperties[3][4] / 2 && Absolute Value(
  • Event Player.CursorY - Event Player.ButtonProperties[3][3]) <= Event Player.ButtonProperties[3][5] / 2),
  • Event Player.ButtonProperties[3][0],
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * Event Player.ButtonProperties[3][2] + Event Player.MenuYAxis * (
  • Event Player.ButtonProperties[3][3] - 0.200), Event Player.ButtonProperties[3][8], Do Not Clip, Visible To Position and String,
  • Yellow, Default Visibility);
  • Color(Yellow), Default Visibility);
  • Modify Player Variable(Event Player, MenuVFX, Append To Array, Last Text ID);
  • " \r\nButtonProperties[4]"
  • Abort If(Count Of(Event Player.ButtonProperties) <= 4);
  • Create In-World Text(Filtered Array(Event Player, Event Player.ButtonProperties[4][7] && (
  • !Event Player.ButtonProperties[4][6] || Absolute Value(Event Player.CursorX - Event Player.ButtonProperties[4][2])
  • > Event Player.ButtonProperties[4][4] / 2 || Absolute Value(Event Player.CursorY - Event Player.ButtonProperties[4][3])
  • > Event Player.ButtonProperties[4][5] / 2)), Event Player.ButtonProperties[4][0],
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * Event Player.ButtonProperties[4][2] + Event Player.MenuYAxis * (
  • Event Player.ButtonProperties[4][3] - 0.200), Event Player.ButtonProperties[4][8], Do Not Clip, Visible To Position and String,
  • White, Default Visibility);
  • Color(White), Default Visibility);
  • Modify Player Variable(Event Player, MenuVFX, Append To Array, Last Text ID);
  • Create In-World Text(Filtered Array(Event Player,
  • Event Player.ButtonProperties[4][7] && Event Player.ButtonProperties[4][6] && Absolute Value(
  • Event Player.CursorX - Event Player.ButtonProperties[4][2]) <= Event Player.ButtonProperties[4][4] / 2 && Absolute Value(
  • Event Player.CursorY - Event Player.ButtonProperties[4][3]) <= Event Player.ButtonProperties[4][5] / 2),
  • Event Player.ButtonProperties[4][0],
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * Event Player.ButtonProperties[4][2] + Event Player.MenuYAxis * (
  • Event Player.ButtonProperties[4][3] - 0.200), Event Player.ButtonProperties[4][8], Do Not Clip, Visible To Position and String,
  • Yellow, Default Visibility);
  • Color(Yellow), Default Visibility);
  • Modify Player Variable(Event Player, MenuVFX, Append To Array, Last Text ID);
  • " \r\nButtonProperties[5]"
  • Abort If(Count Of(Event Player.ButtonProperties) <= 5);
  • Create In-World Text(Filtered Array(Event Player, Event Player.ButtonProperties[5][7] && (
  • !Event Player.ButtonProperties[5][6] || Absolute Value(Event Player.CursorX - Event Player.ButtonProperties[5][2])
  • > Event Player.ButtonProperties[5][4] / 2 || Absolute Value(Event Player.CursorY - Event Player.ButtonProperties[5][3])
  • > Event Player.ButtonProperties[5][5] / 2)), Event Player.ButtonProperties[5][0],
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * Event Player.ButtonProperties[5][2] + Event Player.MenuYAxis * (
  • Event Player.ButtonProperties[5][3] - 0.200), Event Player.ButtonProperties[5][8], Do Not Clip, Visible To Position and String,
  • White, Default Visibility);
  • Color(White), Default Visibility);
  • Modify Player Variable(Event Player, MenuVFX, Append To Array, Last Text ID);
  • Create In-World Text(Filtered Array(Event Player,
  • Event Player.ButtonProperties[5][7] && Event Player.ButtonProperties[5][6] && Absolute Value(
  • Event Player.CursorX - Event Player.ButtonProperties[5][2]) <= Event Player.ButtonProperties[5][4] / 2 && Absolute Value(
  • Event Player.CursorY - Event Player.ButtonProperties[5][3]) <= Event Player.ButtonProperties[5][5] / 2),
  • Event Player.ButtonProperties[5][0],
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * Event Player.ButtonProperties[5][2] + Event Player.MenuYAxis * (
  • Event Player.ButtonProperties[5][3] - 0.200), Event Player.ButtonProperties[5][8], Do Not Clip, Visible To Position and String,
  • Yellow, Default Visibility);
  • Color(Yellow), Default Visibility);
  • Modify Player Variable(Event Player, MenuVFX, Append To Array, Last Text ID);
  • " \r\nButtonProperties[6]"
  • Abort If(Count Of(Event Player.ButtonProperties) <= 6);
  • Create In-World Text(Filtered Array(Event Player, Event Player.ButtonProperties[6][7] && (
  • !Event Player.ButtonProperties[6][6] || Absolute Value(Event Player.CursorX - Event Player.ButtonProperties[6][2])
  • > Event Player.ButtonProperties[6][4] / 2 || Absolute Value(Event Player.CursorY - Event Player.ButtonProperties[6][3])
  • > Event Player.ButtonProperties[6][5] / 2)), Event Player.ButtonProperties[6][0],
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * Event Player.ButtonProperties[6][2] + Event Player.MenuYAxis * (
  • Event Player.ButtonProperties[6][3] - 0.200), Event Player.ButtonProperties[6][8], Do Not Clip, Visible To Position and String,
  • White, Default Visibility);
  • Color(White), Default Visibility);
  • Modify Player Variable(Event Player, MenuVFX, Append To Array, Last Text ID);
  • Create In-World Text(Filtered Array(Event Player,
  • Event Player.ButtonProperties[6][7] && Event Player.ButtonProperties[6][6] && Absolute Value(
  • Event Player.CursorX - Event Player.ButtonProperties[6][2]) <= Event Player.ButtonProperties[6][4] / 2 && Absolute Value(
  • Event Player.CursorY - Event Player.ButtonProperties[6][3]) <= Event Player.ButtonProperties[6][5] / 2),
  • Event Player.ButtonProperties[6][0],
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * Event Player.ButtonProperties[6][2] + Event Player.MenuYAxis * (
  • Event Player.ButtonProperties[6][3] - 0.200), Event Player.ButtonProperties[6][8], Do Not Clip, Visible To Position and String,
  • Yellow, Default Visibility);
  • Color(Yellow), Default Visibility);
  • Modify Player Variable(Event Player, MenuVFX, Append To Array, Last Text ID);
  • " \r\nButtonProperties[7]"
  • Abort If(Count Of(Event Player.ButtonProperties) <= 7);
  • Create In-World Text(Filtered Array(Event Player, Event Player.ButtonProperties[7][7] && (
  • !Event Player.ButtonProperties[7][6] || Absolute Value(Event Player.CursorX - Event Player.ButtonProperties[7][2])
  • > Event Player.ButtonProperties[7][4] / 2 || Absolute Value(Event Player.CursorY - Event Player.ButtonProperties[7][3])
  • > Event Player.ButtonProperties[7][5] / 2)), Event Player.ButtonProperties[7][0],
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * Event Player.ButtonProperties[7][2] + Event Player.MenuYAxis * (
  • Event Player.ButtonProperties[7][3] - 0.200), Event Player.ButtonProperties[7][8], Do Not Clip, Visible To Position and String,
  • White, Default Visibility);
  • Color(White), Default Visibility);
  • Modify Player Variable(Event Player, MenuVFX, Append To Array, Last Text ID);
  • Create In-World Text(Filtered Array(Event Player,
  • Event Player.ButtonProperties[7][7] && Event Player.ButtonProperties[7][6] && Absolute Value(
  • Event Player.CursorX - Event Player.ButtonProperties[7][2]) <= Event Player.ButtonProperties[7][4] / 2 && Absolute Value(
  • Event Player.CursorY - Event Player.ButtonProperties[7][3]) <= Event Player.ButtonProperties[7][5] / 2),
  • Event Player.ButtonProperties[7][0],
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * Event Player.ButtonProperties[7][2] + Event Player.MenuYAxis * (
  • Event Player.ButtonProperties[7][3] - 0.200), Event Player.ButtonProperties[7][8], Do Not Clip, Visible To Position and String,
  • Yellow, Default Visibility);
  • Color(Yellow), Default Visibility);
  • Modify Player Variable(Event Player, MenuVFX, Append To Array, Last Text ID);
  • " \r\nButtonProperties[8]"
  • Abort If(Count Of(Event Player.ButtonProperties) <= 8);
  • Create In-World Text(Filtered Array(Event Player, Event Player.ButtonProperties[8][7] && (
  • !Event Player.ButtonProperties[8][6] || Absolute Value(Event Player.CursorX - Event Player.ButtonProperties[8][2])
  • > Event Player.ButtonProperties[8][4] / 2 || Absolute Value(Event Player.CursorY - Event Player.ButtonProperties[8][3])
  • > Event Player.ButtonProperties[8][5] / 2)), Event Player.ButtonProperties[8][0],
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * Event Player.ButtonProperties[8][2] + Event Player.MenuYAxis * (
  • Event Player.ButtonProperties[8][3] - 0.200), Event Player.ButtonProperties[8][8], Do Not Clip, Visible To Position and String,
  • White, Default Visibility);
  • Color(White), Default Visibility);
  • Modify Player Variable(Event Player, MenuVFX, Append To Array, Last Text ID);
  • Create In-World Text(Filtered Array(Event Player,
  • Event Player.ButtonProperties[8][7] && Event Player.ButtonProperties[8][6] && Absolute Value(
  • Event Player.CursorX - Event Player.ButtonProperties[8][2]) <= Event Player.ButtonProperties[8][4] / 2 && Absolute Value(
  • Event Player.CursorY - Event Player.ButtonProperties[8][3]) <= Event Player.ButtonProperties[8][5] / 2),
  • Event Player.ButtonProperties[8][0],
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * Event Player.ButtonProperties[8][2] + Event Player.MenuYAxis * (
  • Event Player.ButtonProperties[8][3] - 0.200), Event Player.ButtonProperties[8][8], Do Not Clip, Visible To Position and String,
  • Yellow, Default Visibility);
  • Color(Yellow), Default Visibility);
  • Modify Player Variable(Event Player, MenuVFX, Append To Array, Last Text ID);
  • " \r\nButtonProperties[9]"
  • Abort If(Count Of(Event Player.ButtonProperties) <= 9);
  • Create In-World Text(Filtered Array(Event Player, Event Player.ButtonProperties[9][7] && (
  • !Event Player.ButtonProperties[9][6] || Absolute Value(Event Player.CursorX - Event Player.ButtonProperties[9][2])
  • > Event Player.ButtonProperties[9][4] / 2 || Absolute Value(Event Player.CursorY - Event Player.ButtonProperties[9][3])
  • > Event Player.ButtonProperties[9][5] / 2)), Event Player.ButtonProperties[9][0],
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * Event Player.ButtonProperties[9][2] + Event Player.MenuYAxis * (
  • Event Player.ButtonProperties[9][3] - 0.200), Event Player.ButtonProperties[9][8], Do Not Clip, Visible To Position and String,
  • White, Default Visibility);
  • Color(White), Default Visibility);
  • Modify Player Variable(Event Player, MenuVFX, Append To Array, Last Text ID);
  • Create In-World Text(Filtered Array(Event Player,
  • Event Player.ButtonProperties[9][7] && Event Player.ButtonProperties[9][6] && Absolute Value(
  • Event Player.CursorX - Event Player.ButtonProperties[9][2]) <= Event Player.ButtonProperties[9][4] / 2 && Absolute Value(
  • Event Player.CursorY - Event Player.ButtonProperties[9][3]) <= Event Player.ButtonProperties[9][5] / 2),
  • Event Player.ButtonProperties[9][0],
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * Event Player.ButtonProperties[9][2] + Event Player.MenuYAxis * (
  • Event Player.ButtonProperties[9][3] - 0.200), Event Player.ButtonProperties[9][8], Do Not Clip, Visible To Position and String,
  • Yellow, Default Visibility);
  • Color(Yellow), Default Visibility);
  • Modify Player Variable(Event Player, MenuVFX, Append To Array, Last Text ID);
  • " \r\nButtonProperties[10]"
  • Abort If(Count Of(Event Player.ButtonProperties) <= 10);
  • Create In-World Text(Filtered Array(Event Player, Event Player.ButtonProperties[10][7] && (
  • !Event Player.ButtonProperties[10][6] || Absolute Value(Event Player.CursorX - Event Player.ButtonProperties[10][2])
  • > Event Player.ButtonProperties[10][4] / 2 || Absolute Value(Event Player.CursorY - Event Player.ButtonProperties[10][3])
  • > Event Player.ButtonProperties[10][5] / 2)), Event Player.ButtonProperties[10][0],
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * Event Player.ButtonProperties[10][2] + Event Player.MenuYAxis * (
  • Event Player.ButtonProperties[10][3] - 0.200), Event Player.ButtonProperties[10][8], Do Not Clip,
  • Visible To Position and String, White, Default Visibility);
  • Visible To Position and String, Color(White), Default Visibility);
  • Modify Player Variable(Event Player, MenuVFX, Append To Array, Last Text ID);
  • Create In-World Text(Filtered Array(Event Player,
  • Event Player.ButtonProperties[10][7] && Event Player.ButtonProperties[10][6] && Absolute Value(
  • Event Player.CursorX - Event Player.ButtonProperties[10][2]) <= Event Player.ButtonProperties[10][4] / 2 && Absolute Value(
  • Event Player.CursorY - Event Player.ButtonProperties[10][3]) <= Event Player.ButtonProperties[10][5] / 2),
  • Event Player.ButtonProperties[10][0],
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * Event Player.ButtonProperties[10][2] + Event Player.MenuYAxis * (
  • Event Player.ButtonProperties[10][3] - 0.200), Event Player.ButtonProperties[10][8], Do Not Clip,
  • Visible To Position and String, Yellow, Default Visibility);
  • Visible To Position and String, Color(Yellow), Default Visibility);
  • Modify Player Variable(Event Player, MenuVFX, Append To Array, Last Text ID);
  • " \r\nButtonProperties[11]"
  • Abort If(Count Of(Event Player.ButtonProperties) <= 11);
  • Create In-World Text(Filtered Array(Event Player, Event Player.ButtonProperties[11][7] && (
  • !Event Player.ButtonProperties[11][6] || Absolute Value(Event Player.CursorX - Event Player.ButtonProperties[11][2])
  • > Event Player.ButtonProperties[11][4] / 2 || Absolute Value(Event Player.CursorY - Event Player.ButtonProperties[11][3])
  • > Event Player.ButtonProperties[11][5] / 2)), Event Player.ButtonProperties[11][0],
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * Event Player.ButtonProperties[11][2] + Event Player.MenuYAxis * (
  • Event Player.ButtonProperties[11][3] - 0.200), Event Player.ButtonProperties[11][8], Do Not Clip,
  • Visible To Position and String, White, Default Visibility);
  • Visible To Position and String, Color(White), Default Visibility);
  • Modify Player Variable(Event Player, MenuVFX, Append To Array, Last Text ID);
  • Create In-World Text(Filtered Array(Event Player,
  • Event Player.ButtonProperties[11][7] && Event Player.ButtonProperties[11][6] && Absolute Value(
  • Event Player.CursorX - Event Player.ButtonProperties[11][2]) <= Event Player.ButtonProperties[11][4] / 2 && Absolute Value(
  • Event Player.CursorY - Event Player.ButtonProperties[11][3]) <= Event Player.ButtonProperties[11][5] / 2),
  • Event Player.ButtonProperties[11][0],
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * Event Player.ButtonProperties[11][2] + Event Player.MenuYAxis * (
  • Event Player.ButtonProperties[11][3] - 0.200), Event Player.ButtonProperties[11][8], Do Not Clip,
  • Visible To Position and String, Yellow, Default Visibility);
  • Visible To Position and String, Color(Yellow), Default Visibility);
  • Modify Player Variable(Event Player, MenuVFX, Append To Array, Last Text ID);
  • " \r\nButtonProperties[12]"
  • Abort If(Count Of(Event Player.ButtonProperties) <= 12);
  • Create In-World Text(Filtered Array(Event Player, Event Player.ButtonProperties[12][7] && (
  • !Event Player.ButtonProperties[12][6] || Absolute Value(Event Player.CursorX - Event Player.ButtonProperties[12][2])
  • > Event Player.ButtonProperties[12][4] / 2 || Absolute Value(Event Player.CursorY - Event Player.ButtonProperties[12][3])
  • > Event Player.ButtonProperties[12][5] / 2)), Event Player.ButtonProperties[12][0],
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * Event Player.ButtonProperties[12][2] + Event Player.MenuYAxis * (
  • Event Player.ButtonProperties[12][3] - 0.200), Event Player.ButtonProperties[12][8], Do Not Clip,
  • Visible To Position and String, White, Default Visibility);
  • Visible To Position and String, Color(White), Default Visibility);
  • Modify Player Variable(Event Player, MenuVFX, Append To Array, Last Text ID);
  • Create In-World Text(Filtered Array(Event Player,
  • Event Player.ButtonProperties[12][7] && Event Player.ButtonProperties[12][6] && Absolute Value(
  • Event Player.CursorX - Event Player.ButtonProperties[12][2]) <= Event Player.ButtonProperties[12][4] / 2 && Absolute Value(
  • Event Player.CursorY - Event Player.ButtonProperties[12][3]) <= Event Player.ButtonProperties[12][5] / 2),
  • Event Player.ButtonProperties[12][0],
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * Event Player.ButtonProperties[12][2] + Event Player.MenuYAxis * (
  • Event Player.ButtonProperties[12][3] - 0.200), Event Player.ButtonProperties[12][8], Do Not Clip,
  • Visible To Position and String, Yellow, Default Visibility);
  • Visible To Position and String, Color(Yellow), Default Visibility);
  • Modify Player Variable(Event Player, MenuVFX, Append To Array, Last Text ID);
  • " \r\nButtonProperties[13]"
  • Abort If(Count Of(Event Player.ButtonProperties) <= 13);
  • Create In-World Text(Filtered Array(Event Player, Event Player.ButtonProperties[13][7] && (
  • !Event Player.ButtonProperties[13][6] || Absolute Value(Event Player.CursorX - Event Player.ButtonProperties[13][2])
  • > Event Player.ButtonProperties[13][4] / 2 || Absolute Value(Event Player.CursorY - Event Player.ButtonProperties[13][3])
  • > Event Player.ButtonProperties[13][5] / 2)), Event Player.ButtonProperties[13][0],
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * Event Player.ButtonProperties[13][2] + Event Player.MenuYAxis * (
  • Event Player.ButtonProperties[13][3] - 0.200), Event Player.ButtonProperties[13][8], Do Not Clip,
  • Visible To Position and String, White, Default Visibility);
  • Visible To Position and String, Color(White), Default Visibility);
  • Modify Player Variable(Event Player, MenuVFX, Append To Array, Last Text ID);
  • Create In-World Text(Filtered Array(Event Player,
  • Event Player.ButtonProperties[13][7] && Event Player.ButtonProperties[13][6] && Absolute Value(
  • Event Player.CursorX - Event Player.ButtonProperties[13][2]) <= Event Player.ButtonProperties[13][4] / 2 && Absolute Value(
  • Event Player.CursorY - Event Player.ButtonProperties[13][3]) <= Event Player.ButtonProperties[13][5] / 2),
  • Event Player.ButtonProperties[13][0],
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * Event Player.ButtonProperties[13][2] + Event Player.MenuYAxis * (
  • Event Player.ButtonProperties[13][3] - 0.200), Event Player.ButtonProperties[13][8], Do Not Clip,
  • Visible To Position and String, Yellow, Default Visibility);
  • Visible To Position and String, Color(Yellow), Default Visibility);
  • Modify Player Variable(Event Player, MenuVFX, Append To Array, Last Text ID);
  • " \r\nButtonProperties[14]"
  • Abort If(Count Of(Event Player.ButtonProperties) <= 14);
  • Create In-World Text(Filtered Array(Event Player, Event Player.ButtonProperties[14][7] && (
  • !Event Player.ButtonProperties[14][6] || Absolute Value(Event Player.CursorX - Event Player.ButtonProperties[14][2])
  • > Event Player.ButtonProperties[14][4] / 2 || Absolute Value(Event Player.CursorY - Event Player.ButtonProperties[14][3])
  • > Event Player.ButtonProperties[14][5] / 2)), Event Player.ButtonProperties[14][0],
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * Event Player.ButtonProperties[14][2] + Event Player.MenuYAxis * (
  • Event Player.ButtonProperties[14][3] - 0.200), Event Player.ButtonProperties[14][8], Do Not Clip,
  • Visible To Position and String, White, Default Visibility);
  • Visible To Position and String, Color(White), Default Visibility);
  • Modify Player Variable(Event Player, MenuVFX, Append To Array, Last Text ID);
  • Create In-World Text(Filtered Array(Event Player,
  • Event Player.ButtonProperties[14][7] && Event Player.ButtonProperties[14][6] && Absolute Value(
  • Event Player.CursorX - Event Player.ButtonProperties[14][2]) <= Event Player.ButtonProperties[14][4] / 2 && Absolute Value(
  • Event Player.CursorY - Event Player.ButtonProperties[14][3]) <= Event Player.ButtonProperties[14][5] / 2),
  • Event Player.ButtonProperties[14][0],
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * Event Player.ButtonProperties[14][2] + Event Player.MenuYAxis * (
  • Event Player.ButtonProperties[14][3] - 0.200), Event Player.ButtonProperties[14][8], Do Not Clip,
  • Visible To Position and String, Yellow, Default Visibility);
  • Visible To Position and String, Color(Yellow), Default Visibility);
  • Modify Player Variable(Event Player, MenuVFX, Append To Array, Last Text ID);
  • " \r\nButtonProperties[15]"
  • Abort If(Count Of(Event Player.ButtonProperties) <= 15);
  • Create In-World Text(Filtered Array(Event Player, Event Player.ButtonProperties[15][7] && (
  • !Event Player.ButtonProperties[15][6] || Absolute Value(Event Player.CursorX - Event Player.ButtonProperties[15][2])
  • > Event Player.ButtonProperties[15][4] / 2 || Absolute Value(Event Player.CursorY - Event Player.ButtonProperties[15][3])
  • > Event Player.ButtonProperties[15][5] / 2)), Event Player.ButtonProperties[15][0],
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * Event Player.ButtonProperties[15][2] + Event Player.MenuYAxis * (
  • Event Player.ButtonProperties[15][3] - 0.200), Event Player.ButtonProperties[15][8], Do Not Clip,
  • Visible To Position and String, White, Default Visibility);
  • Visible To Position and String, Color(White), Default Visibility);
  • Modify Player Variable(Event Player, MenuVFX, Append To Array, Last Text ID);
  • Create In-World Text(Filtered Array(Event Player,
  • Event Player.ButtonProperties[15][7] && Event Player.ButtonProperties[15][6] && Absolute Value(
  • Event Player.CursorX - Event Player.ButtonProperties[15][2]) <= Event Player.ButtonProperties[15][4] / 2 && Absolute Value(
  • Event Player.CursorY - Event Player.ButtonProperties[15][3]) <= Event Player.ButtonProperties[15][5] / 2),
  • Event Player.ButtonProperties[15][0],
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * Event Player.ButtonProperties[15][2] + Event Player.MenuYAxis * (
  • Event Player.ButtonProperties[15][3] - 0.200), Event Player.ButtonProperties[15][8], Do Not Clip,
  • Visible To Position and String, Yellow, Default Visibility);
  • Visible To Position and String, Color(Yellow), Default Visibility);
  • Modify Player Variable(Event Player, MenuVFX, Append To Array, Last Text ID);
  • }
  • }
  • rule("Menu activated > Create cursor")
  • {
  • event
  • {
  • Subroutine;
  • CreateMenuCursor;
  • }
  • actions
  • {
  • "The next four rules create the actual cursor that the player can move around. For the cursor to render over all other text, it must be the last in-world text to become visible. Thus, we create two identical cursors that alternate visibility every frame."
  • Create In-World Text(Filtered Array(Event Player, Total Time Elapsed % 0.032 > 0.016), Custom String("▲"), World Vector Of(
  • Local Vector Of(Event Player.CursorPos + Event Player.MenuYAxis * -0.200, Event Player, Rotation And Translation),
  • Event Player, Rotation And Translation), 3, Do Not Clip, Visible To and Position, White, Default Visibility);
  • Event Player, Rotation And Translation), 3, Do Not Clip, Visible To and Position, Color(White), Default Visibility);
  • Modify Player Variable(Event Player, MenuVFX, Append To Array, Last Text ID);
  • Create In-World Text(Filtered Array(Event Player, Total Time Elapsed % 0.032 < 0.016), Custom String("▲"), World Vector Of(
  • Local Vector Of(Event Player.CursorPos + Event Player.MenuYAxis * -0.200, Event Player, Rotation And Translation),
  • Event Player, Rotation And Translation), 3, Do Not Clip, Visible To and Position, White, Default Visibility);
  • Event Player, Rotation And Translation), 3, Do Not Clip, Visible To and Position, Color(White), Default Visibility);
  • Modify Player Variable(Event Player, MenuVFX, Append To Array, Last Text ID);
  • }
  • }
  • rule("Menu deactivated > Clean up")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • "Dummy bots were getting menu stuff and causing server crashes, so we exclude them from these rules."
  • Is Dummy Bot(Event Player) == False;
  • "Triggers once whenever the menu is closed. Technically also triggers when the game starts but that, uh, probably won't cause any problems."
  • Event Player.IsInMenuMode == False;
  • }
  • actions
  • {
  • "Return aim speed to normal."
  • Set Aim Speed(Event Player, 100);
  • "Reenable buttons previously reserved for menu clicking."
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, True);
  • "Reenable the HUD."
  • Enable Game Mode HUD(Event Player);
  • Enable Hero HUD(Event Player);
  • "Stop all active chases"
  • Stop Chasing Player Variable(Event Player, MenuEyePos);
  • Stop Chasing Player Variable(Event Player, CursorPos);
  • Stop Chasing Player Variable(Event Player, CursorX);
  • Stop Chasing Player Variable(Event Player, CursorY);
  • "Loops through all the components of the menu, destroying each one. Note that there is currently no wait in here, so if the array has a lot of elements, the server may be under a lot of stress for a moment. This may be a good place to reduce load if needed."
  • For Player Variable(Event Player, __iter__, 0, Count Of(Event Player.MenuVFX), 1);
  • "Since trying to destroy the wrong type of entity doesn't cause any errors, we simply try each type on the current entity, allowing for any type of effect or icon to be placed in MenuVFX for cleanup when the menu is closed."
  • Destroy In-World Text(Event Player.MenuVFX[Event Player.__iter__]);
  • disabled Destroy Effect(Event Player.MenuVFX[Event Player.__iter__]);
  • disabled Destroy Icon(Event Player.MenuVFX[Event Player.__iter__]);
  • disabled Destroy HUD Text(Event Player.MenuVFX[Event Player.__iter__]);
  • End;
  • }
  • }
  • rule("Detect primary fire button press")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • "Dummy bots were getting menu stuff and causing server crashes, so we exclude them from these rules."
  • Is Dummy Bot(Event Player) == False;
  • "Rather than checking for a button click in conditions, we only check for a mouse click so that the player can't press down primary fire then move the cursor onto the button."
  • Event Player.IsInMenuMode == True;
  • Is Button Held(Event Player, Primary Fire) == True;
  • Is Button Held(Event Player, Button(Primary Fire)) == True;
  • }
  • actions
  • {
  • "Clears the primary action ID queue."
  • Event Player.ActionIDQueue = Empty Array;
  • "Checks if the cursor is currently within radius of the exit button."
  • If(Distance Between(Event Player.CursorPos,
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * Event Player.ButtonExitMenu[2] + Event Player.MenuYAxis * Event Player.ButtonExitMenu[3])
  • <= 100 * Event Player.ButtonExitMenu[4]);
  • "Add the exit button's action ID to the primary action ID queue."
  • Modify Player Variable(Event Player, ActionIDQueue, Append To Array, Event Player.ButtonExitMenu[1]);
  • End;
  • "For each button, checks if the cursor is within that button's click area."
  • For Player Variable(Event Player, __iter__, 0, Count Of(Event Player.ButtonProperties), 1);
  • If(Absolute Value(Event Player.CursorX - Event Player.ButtonProperties[Event Player.__iter__][2])
  • <= Event Player.ButtonProperties[Event Player.__iter__][4] / 2 && Absolute Value(
  • Event Player.CursorY - Event Player.ButtonProperties[Event Player.__iter__][3])
  • <= Event Player.ButtonProperties[Event Player.__iter__][5] / 2);
  • "If so, add that button's primary action ID to the queue."
  • Modify Player Variable(Event Player, ActionIDQueue, Append To Array, Event Player.ButtonProperties[Event Player.__iter__][1]);
  • End;
  • End;
  • "Set the current action ID variable to the first button clicked for one tick."
  • Event Player.CurrActionID = First Of(Event Player.ActionIDQueue);
  • Wait(0.016, Ignore Condition);
  • Event Player.CurrActionID = Null;
  • }
  • }
  • rule("Detect secondary fire button press")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • "Dummy bots were getting menu stuff and causing server crashes, so we exclude them from these rules."
  • Is Dummy Bot(Event Player) == False;
  • "Rather than checking for a button click in conditions, we only check for a mouse click so that the player can't press down secondary fire then move the cursor onto the button."
  • Event Player.IsInMenuMode == True;
  • Is Button Held(Event Player, Secondary Fire) == True;
  • Is Button Held(Event Player, Button(Secondary Fire)) == True;
  • }
  • actions
  • {
  • "Clears the secondary action ID queue."
  • Event Player.ActionIDQueue_Secondary = Empty Array;
  • "Checks if the cursor is currently within radius of the exit button."
  • If(Distance Between(Event Player.CursorPos,
  • Event Player.MenuEyePos + Event Player.MenuZAxis * 3 + Event Player.MenuXAxis * Event Player.ButtonExitMenu[2] + Event Player.MenuYAxis * Event Player.ButtonExitMenu[3])
  • <= 100 * Event Player.ButtonExitMenu[4]);
  • "Add the exit button's action ID to the secondary action ID queue."
  • Modify Player Variable(Event Player, ActionIDQueue_Secondary, Append To Array, Event Player.ButtonExitMenu[1]);
  • End;
  • "For each button, checks if the cursor is within that button's click area."
  • For Player Variable(Event Player, __iter__, 0, Count Of(Event Player.ButtonProperties), 1);
  • If(Absolute Value(Event Player.CursorX - Event Player.ButtonProperties[Event Player.__iter__][2])
  • <= Event Player.ButtonProperties[Event Player.__iter__][4] / 2 && Absolute Value(
  • Event Player.CursorY - Event Player.ButtonProperties[Event Player.__iter__][3])
  • <= Event Player.ButtonProperties[Event Player.__iter__][5] / 2);
  • "If so, add that button's secondary action ID to the queue."
  • Modify Player Variable(Event Player, ActionIDQueue_Secondary, Append To Array,
  • Event Player.ButtonProperties[Event Player.__iter__][9]);
  • End;
  • End;
  • "Set the current action ID variable to the first button clicked for one tick."
  • Event Player.CurrActionID_Secondary = First Of(Event Player.ActionIDQueue_Secondary);
  • Wait(0.016, Ignore Condition);
  • Event Player.CurrActionID_Secondary = Null;
  • }
  • }
  • rule("Pick Hero")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • Global.AssemblingHeroes == True;
  • Event Player.CurrActionID == Custom String("Mercy");
  • Global.Mercy == False;
  • }
  • actions
  • {
  • Start Forcing Player To Be Hero(Event Player, Hero(Mercy));
  • Global.Mercy = True;
  • Event Player.IsInMenuMode = False;
  • Communicate(Filtered Array(Players On Hero(Hero(Mercy), Team 2), Is Dummy Bot(Current Array Element)), Hello);
  • Global.HeroesPicked += 1;
  • Create In-World Text(All Players(Team 2), Event Player, Filtered Array(Players On Hero(Hero(Mercy), Team 2), Is Dummy Bot(
  • Current Array Element)), 1, Clip Against Surfaces, Visible To Position and String, Blue, Default Visibility);
  • Current Array Element)), 1, Clip Against Surfaces, Visible To Position and String, Color(Blue), Default Visibility);
  • }
  • }
  • rule("Select Hero")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • Global.AssemblingHeroes == True;
  • Event Player.CurrActionID == Custom String("Genji");
  • Global.Genji == False;
  • }
  • actions
  • {
  • Global.Genji = True;
  • Start Forcing Player To Be Hero(Event Player, Hero(Genji));
  • Event Player.IsInMenuMode = False;
  • Communicate(Filtered Array(Players On Hero(Hero(Genji), Team 2), Is Dummy Bot(Current Array Element)), Hello);
  • Global.HeroesPicked += 1;
  • Create In-World Text(All Players(Team 2), Event Player, Filtered Array(Players On Hero(Hero(Genji), Team 2), Is Dummy Bot(
  • Current Array Element)), 1, Clip Against Surfaces, Visible To Position and String, Blue, Default Visibility);
  • Current Array Element)), 1, Clip Against Surfaces, Visible To Position and String, Color(Blue), Default Visibility);
  • }
  • }
  • rule("Select Hero")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • Global.AssemblingHeroes == True;
  • Event Player.CurrActionID == Custom String("Winston");
  • Global.Winston == False;
  • }
  • actions
  • {
  • Global.Winston = True;
  • Start Forcing Player To Be Hero(Event Player, Hero(Winston));
  • Event Player.IsInMenuMode = False;
  • Communicate(Filtered Array(Players On Hero(Hero(Winston), Team 2), Is Dummy Bot(Current Array Element)), Hello);
  • Global.HeroesPicked += 1;
  • Create In-World Text(All Players(Team 2), Event Player, Filtered Array(Players On Hero(Hero(Winston), Team 2), Is Dummy Bot(
  • Current Array Element)), 1, Clip Against Surfaces, Visible To Position and String, Blue, Default Visibility);
  • Current Array Element)), 1, Clip Against Surfaces, Visible To Position and String, Color(Blue), Default Visibility);
  • }
  • }
  • rule("Select Hero")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • Global.AssemblingHeroes == True;
  • Event Player.CurrActionID == Custom String("Tracer");
  • Global.Tracer == False;
  • }
  • actions
  • {
  • Global.Tracer = True;
  • Start Forcing Player To Be Hero(Event Player, Hero(Tracer));
  • Event Player.IsInMenuMode = False;
  • Communicate(Filtered Array(Players On Hero(Hero(Tracer), Team 2), Is Dummy Bot(Current Array Element)), Hello);
  • Global.HeroesPicked += 1;
  • Create In-World Text(All Players(Team 2), Event Player, Filtered Array(Players On Hero(Hero(Tracer), Team 2), Is Dummy Bot(
  • Current Array Element)), 1, Clip Against Surfaces, Visible To Position and String, Blue, Default Visibility);
  • Current Array Element)), 1, Clip Against Surfaces, Visible To Position and String, Color(Blue), Default Visibility);
  • }
  • }
  • rule("Picked all heroes")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Global.HeroesPicked == Count Of(Filtered Array(All Players(Team 2), !Is Dummy Bot(Current Array Element)));
  • Global.Allheroes == False;
  • }
  • actions
  • {
  • Wait(0.250, Ignore Condition);
  • Global.Countdown = True;
  • }
  • }
  • rule("Picked all heroes")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Global.HeroesPicked < Count Of(Filtered Array(All Players(Team 2), !Is Dummy Bot(Current Array Element)));
  • Global.Allheroes == False;
  • }
  • actions
  • {
  • Wait(0.250, Ignore Condition);
  • Global.Countdown = False;
  • }
  • }
  • rule(">>>EDIT BUTTON & LABEL STARTING VALUES HERE<<<")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • "Dummy bots were getting menu stuff and causing server crashes, so we exclude them from these rules."
  • Is Dummy Bot(Event Player) == False;
  • "This rule currently resets all buttons to their initial states any time the menu is opened. If you want button states to persist between menu uses, disable this condition."
  • Event Player.IsInMenuMode == True;
  • }
  • actions
  • {
  • "Empty the button properties array."
  • Event Player.ButtonProperties = Empty Array;
  • "Sample button"
  • Modify Player Variable(Event Player, ButtonProperties, Append To Array, Array(Array(Custom String("Mercy"), Custom String("Mercy"),
  • -2, -1, 1, 0.150, True, Global.Mercy == True ? False : True, 3, Null, Null, Null)));
  • "Sample button"
  • Modify Player Variable(Event Player, ButtonProperties, Append To Array, Array(Array(Custom String("Genji"), Custom String("Genji"),
  • -0.500, -1, 1, 0.150, True, Global.Genji == True ? False : True, 3, Null, Null, Null)));
  • "Sample button"
  • Modify Player Variable(Event Player, ButtonProperties, Append To Array, Array(Array(Custom String("Winston"), Custom String(
  • "Winston"), 0.500, -1, 1, 0.150, True, Global.Winston == True ? False : True, 3, Null, Null, Null)));
  • "Sample button"
  • Modify Player Variable(Event Player, ButtonProperties, Append To Array, Array(Array(Custom String("Tracer"), Custom String(
  • "Tracer"), 2, -1.500, 1, 0.150, True, Global.Tracer == True ? False : True, 3, Null, Null, Null)));
  • }
  • }
  • rule("▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒a")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Allheroes")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.Allheroes = Workshop Setting Toggle(Custom String("Settings"), Custom String("All Heroes"), False);
  • Global.Allheroes = Workshop Setting Toggle(Custom String("Settings"), Custom String("All Heroes"), False, 0);
  • }
  • }
  • rule("All heroes - Pause Time")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Allheroes == True;
  • Is Assembling Heroes == False;
  • }
  • actions
  • {
  • Wait(0.250, Ignore Condition);
  • If(Global.Allheroes == True);
  • Wait(0.250, Ignore Condition);
  • Set Player Allowed Heroes(All Players(All Teams), All Heroes);
  • Else;
  • Wait(0.250, Ignore Condition);
  • Set Player Allowed Heroes(All Players(Team 2), Array(Hero(Winston), Hero(Mercy), Hero(Tracer), Hero(Genji)));
  • End;
  • Wait Until(Is Assembling Heroes == False, 99999);
  • Pause Match Time;
  • }
  • }
  • rule("Initial Global")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global._classIndexes[1000] = 0;
  • Global._extendedGlobalCollection[1] = Index Of Array Value(Global._classIndexes, 0);
  • Global._classIndexes[Global._extendedGlobalCollection[1]] = -1;
  • Global._tempNodes = Empty Array;
  • Global._tempSegments = Empty Array;
  • Global._tempAttributes = Empty Array;
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-89.100, 4, -84.170));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-72.660, 4, -64.510));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-70.990, 3.850, -50.540));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-34.410, 5.850, -51.760));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-32.540, 5.850, -78.810));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-10.040, 5.850, -79.490));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-8.100, 6, -94.240));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-0.850, 6, -92.990));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(19.590, 5.860, -78.340));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(20.330, 5.830, -67.360));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(39.930, 5.830, -67.960));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(40.850, 5.830, -83.350));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(56.980, 5.830, -82.830));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(53.850, 6, -93.420));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(33.730, 10, -92.440));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(32.660, 10, -87.410));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(27.620, 10, -86.720));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(23.350, 10, -87.050));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(23.750, 10, -96.500));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(10.250, 6, -96.970));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(11.500, 6, -91.510));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(18.390, 6, -91.740));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(27.780, 12, -61.310));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(46.760, 11, -61.910));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(46.990, 5.980, -81.430));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(71, 5.990, -92.900));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(69.310, 6.040, -83.380));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(89.350, 3.990, -78.490));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(96.040, 7, -46.730));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(133.120, 6.080, -46.720));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(133.550, 6, -57.050));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(145.560, 9.010, -57.500));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(145.160, 9.020, -62.880));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(126.070, 12.290, -62.610));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(124.080, 12.030, -55.580));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(149.240, 9, -30.770));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(149.520, 9, -27.490));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(124.570, 10.010, -33.570));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(103.010, 2.050, -78.690));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(101.150, 2.330, -67.550));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(103.460, 2.580, -33.070));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(97.890, 4.460, -36.780));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(85.650, 6.990, -53.230));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(78.200, 6.990, -62.120));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(77.430, 6.990, -76.490));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(70.910, 5.990, -77.030));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(0.360, 6, -96.610));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(106.520, -0.340, -47.930));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(81.190, 6.990, -52.780));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(82.580, 9, -33.140));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(86.160, 9, -33.440));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(85.780, 12.100, -48.910));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(47.710, 11, -67.480));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(53.530, 11, -71.670));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(59.750, 11, -68.450));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(64.350, 11, -68.850));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(64.360, 12, -83.070));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(64.630, 10, -100.550));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(52.610, 6, -100.820));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(51.920, 11, -67.950));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(57.510, 11, -73.020));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-101.850, 4, -71.930));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-108.690, 4, -69.760));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-96.120, 10, -58.960));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-91.870, 10, -62.290));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-90.790, 4, -62.130));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-82.010, 4, -65.050));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-77.550, 3.850, -60.620));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-99.060, 4, -51.540));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-100.230, 4.180, -40.500));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-91.720, 4, -36.690));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-65.880, 4, -61.330));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-65.240, 6, -77.560));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-54.690, 6, -75.420));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-53.580, 6, -70.370));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-46.350, 6, -68.190));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-45.770, 6, -61.100));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-59.500, 6, -60.550));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-59.810, 6, -69.760));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-46.230, 6, -56.320));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-69.450, 3.950, -39.350));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-54.460, 3.950, -37.940));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-53.680, 3.950, -28.330));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-49.280, 4, -28.540));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-48.030, 6, -37.600));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-41, 6, -38.150));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-17.190, 6.050, -68.990));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-16.500, 11.340, -51.720));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-28.460, 12, -51.010));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-9.290, 11, -50.610));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-10.410, 8, -31.340));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-16.290, 8, -32.330));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-16.280, 6, -43.120));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-25.930, 6.030, -43.290));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-37.370, 6, -86.730));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-37.280, 10, -98.320));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-23.890, 10, -98.240));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-19.500, 10, -96.670));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-24.830, 6, -85.050));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-24.280, 6, -89.790));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-12.390, 6, -90.900));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-0.200, 6, -79.770));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(0.750, 6, -55.800));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(16.220, 6, -57.570));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(12.630, 6, -62));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(5.370, 8, -61.690));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(5.030, 12, -76.100));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-0.930, 12, -79.180));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(12.430, 12, -79.420));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(34.390, 12, -57.790));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(19.160, 6, -50.010));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(33.600, 6.080, -52.390));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(34.440, 6, -61.400));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(34.970, 12, -62.080));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(64.850, 11, -73.890));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(74.630, 7.270, -73.690));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(149.080, 9, -31.590));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(148.340, 9, -26.790));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(124.030, 10, -29.960));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(124.460, 6.010, -40.740));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(126.600, 6.010, -35.320));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(127.360, 6, -31.290));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(138.540, 6, -33.250));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(123.430, 6.070, -49.340));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(133.330, 6, -62.540));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(123.560, 6, -61.580));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(124.850, 6, -53.170));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(39.250, 6.100, -88.930));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(38, 4, -96.080));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(30.440, 4, -96.160));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(28.940, 4, -101.170));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(10.700, 6, -100.730));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(105.470, 7.020, -46.530));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(82.010, 7, -45.690));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-47.270, 10, -38.610));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-45.270, 10, -42.670));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-49.440, 9.980, -43.060));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-49.510, 10, -35.330));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-49.120, 10, -32.270));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-36.520, 5.840, -31.710));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-37.230, 6, -35.710));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(-47.420, 5.310, -50.320));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(43.510, 6, -63.360));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(47.410, 6.010, -62.640));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(47.400, 6.010, -66.890));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(57.110, 4, -67.420));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(57.030, 6.080, -77.360));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(92.450, 6.840, -51.020));
  • Modify Global Variable(_tempNodes, Append To Array, Vector(101.980, 1.950, -72.720));
  • Modify Global Variable(_tempSegments, Append To Array, Up);
  • Modify Global Variable(_tempSegments, Append To Array, Vector(1, 2, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(3, 4, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(4, 5, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(5, 6, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(6, 7, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(7, 46, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(46, 19, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(19, 20, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(20, 21, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(21, 8, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(9, 10, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(10, 11, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(11, 24, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(24, 12, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(12, 13, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(13, 14, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(14, 15, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(15, 16, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(16, 17, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(17, 18, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(18, 19, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(16, 22, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(13, 25, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(26, 45, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(45, 44, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(44, 43, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(29, 30, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(30, 31, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(31, 32, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(32, 33, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(33, 34, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(41, 40, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(40, 47, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(38, 27, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(27, 26, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(27, 28, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(42, 48, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(48, 43, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(49, 50, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(50, 51, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(51, 42, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(24, 52, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(52, 23, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(52, 59, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(59, 53, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(53, 60, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(60, 54, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(54, 55, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(56, 57, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(57, 58, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(58, 13, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(60, 12, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(61, 62, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(62, 63, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(63, 64, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(61, Empty Array, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(61, 65, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(65, 66, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(1, 67, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(67, 66, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(65, 68, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(68, 69, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(69, 70, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(70, 2, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(2, 67, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(2, 71, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(71, 72, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(72, 73, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(73, 74, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(74, 75, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(75, 76, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(76, 77, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(77, 78, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(78, 74, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(76, 79, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(79, 3, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(2, 80, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(80, 81, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(81, 82, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(82, 83, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(83, 84, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(84, 85, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(85, 3, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(5, 86, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(86, 87, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(87, 88, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(88, 3, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(87, 89, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(89, 90, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(90, 91, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(91, 92, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(92, 93, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(93, 85, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(4, 94, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(94, 95, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(95, 96, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(96, 97, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(97, 6, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(4, 98, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(98, 99, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(99, 100, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(100, 6, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(7, 101, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(101, 8, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(101, 102, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(102, 103, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(103, 9, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(9, 104, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(104, 105, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(105, 106, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(106, 107, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(106, 108, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(107, 5, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(103, 109, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(103, 110, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(110, 111, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(111, 112, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(112, 10, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(109, 113, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(113, 22, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(113, 23, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(56, 12, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(55, 114, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(114, 56, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(114, 115, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(115, 44, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(25, 26, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(41, 28, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(116, 117, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(117, 118, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(118, 119, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(119, 29, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(119, 120, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(120, 121, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(116, 122, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(122, 29, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(122, 121, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(34, 123, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(123, 29, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(30, 124, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(124, 125, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(125, 126, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(126, 123, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(47, 39, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(11, 127, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(127, 128, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(128, 129, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(129, 130, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(130, 131, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(131, 19, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(29, 132, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(132, 28, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(48, 133, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(133, 49, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(85, 140, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(140, 139, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(139, 138, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(138, 137, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(137, 134, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(134, 135, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(134, 136, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(2, 141, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(141, 3, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(136, 141, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(135, 141, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(108, 8, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(8, 9, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(10, 142, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(142, 143, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(143, 144, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(144, 145, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(145, 146, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(146, 12, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(42, 147, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(147, 28, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(38, 148, Empty Array));
  • Modify Global Variable(_tempSegments, Append To Array, Vector(148, 39, Empty Array));
  • Modify Global Variable(_tempAttributes, Append To Array, Vector(42, 51, 1));
  • Modify Global Variable(_tempAttributes, Append To Array, Vector(3, 88, 1));
  • Modify Global Variable(_tempAttributes, Append To Array, Vector(5, 107, 1));
  • Modify Global Variable(_tempAttributes, Append To Array, Vector(12, 56, 1));
  • Modify Global Variable(_tempAttributes, Append To Array, Vector(12, 60, 1));
  • Modify Global Variable(_tempAttributes, Append To Array, Vector(119, 118, 1));
  • Modify Global Variable(_tempAttributes, Append To Array, Vector(123, 34, 1));
  • Modify Global Variable(_tempAttributes, Append To Array, Vector(141, 135, 1));
  • Modify Global Variable(_tempAttributes, Append To Array, Vector(141, 136, 1));
  • Modify Global Variable(_tempAttributes, Append To Array, Vector(8, 108, 1));
  • Global.Nodes[Global._extendedGlobalCollection[1]] = Global._tempNodes;
  • Global.Segments[Global._extendedGlobalCollection[1]] = Global._tempSegments;
  • Global.Attributes[Global._extendedGlobalCollection[1]] = Global._tempAttributes;
  • Global.map = Global._extendedGlobalCollection[1];
  • }
  • }
  • rule("Disable - Global")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Disable Built-In Game Mode Completion;
  • Global.AssassinPOS = Array(Vector(-78.313, 13.522, -77.060), Vector(-64.277, 13.522, -64.392), Vector(-58.908, 13.522, -44.747),
  • Vector(-50.669, 14.322, -54.952), Vector(-29.720, 16.922, -47.415), Vector(-46.746, 12.522, -44.080), Vector(-41.927, 12.522,
  • -38.959), Vector(-25.027, 15.322, -82.695), Vector(-4.157, 11.522, -79.130), Vector(54.862, 10.522, -77.292), Vector(61.512,
  • 11.322, -83.056), Vector(50.246, 9.322, -96.612), Vector(52.849, 11.522, -100.711), Vector(30.010, 11.522, -64.098), Vector(
  • 13.745, 15.723, -73.875), Vector(28.244, 15.723, -88.148), Vector(66.444, 14.122, -82.941), Vector(92.841, 9.122, -72.874),
  • Vector(89.613, 11.723, -46.078), Vector(116.497, 14.922, -46.650), Vector(146.095, 15.723, -46.396), Vector(132.061, 11.922,
  • -35.860), Vector(129.180, 10.322, -51.105), Vector(93.015, 14.723, -33.499), Vector(100.348, 9.723, -42.829), Vector(83.554,
  • 9.723, -75.314));
  • Disable Built-In Game Mode Announcer;
  • Disable Built-In Game Mode Scoring;
  • }
  • }
  • rule("Disable - Player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Global.AssemblingHeroes == True;
  • }
  • actions
  • {
  • Wait(0.250, Ignore Condition);
  • Disable Game Mode HUD(Event Player);
  • Disable Movement Collision With Players(Event Player);
  • Disable Hero HUD(Event Player);
  • Set Ability 1 Enabled(Event Player, False);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Primary Fire Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, False);
  • }
  • }
  • rule("Assemble Screen")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Assembling Heroes == True;
  • Global.Allheroes == False;
  • }
  • actions
  • {
  • Wait(0.250, Ignore Condition);
  • Global.AssemblingHeroes = True;
  • Set Match Time(0);
  • Disable Game Mode In-World UI(All Players(Team 2));
  • Wait(0.250, Ignore Condition);
  • Pause Match Time;
  • disabled Pause Match Time;
  • }
  • }
  • rule("Assemble Screen - BOTS")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.AssemblingHeroes == True;
  • Global.Allheroes == False;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Mercy), Team 2, 5, Vector(-108.578, 5.550, -77.872), Vector(-105.631, 5.551, -77.225));
  • Create Dummy Bot(Hero(Genji), Team 2, 6, Vector(-108.068, 5.550, -78.356), Vector(-105.631, 5.551, -77.225));
  • Create Dummy Bot(Hero(Winston), Team 2, 7, Vector(-107.364, 5.551, -79.024), Vector(-105.631, 5.551, -77.225));
  • Create Dummy Bot(Hero(Tracer), Team 2, 8, Vector(-106.471, 5.549, -79.874), Vector(-105.631, 5.551, -77.225));
  • Wait(1, Ignore Condition);
  • Create Dummy Bot(Hero(Mercy), Team 2, 5, Vector(-108.470, 4, -77.460), Vector(-105.631, 5.551, -77.225));
  • Create Dummy Bot(Hero(Genji), Team 2, 6, Vector(-108, 4, -78.410), Vector(-105.631, 5.551, -77.225));
  • Create Dummy Bot(Hero(Winston), Team 2, 7, Vector(-107.590, 4, -79.260), Vector(-105.631, 5.551, -77.225));
  • Create Dummy Bot(Hero(Tracer), Team 2, 8, Vector(-106.530, 4, -79.740), Vector(-105.631, 5.551, -77.225));
  • Wait(1, Ignore Condition);
  • Teleport(Players On Hero(Hero(Mercy), Team 2), Vector(-108.470, 4, -77.460));
  • Teleport(Players On Hero(Hero(Genji), Team 2), Vector(-108, 4, -78.410));
  • Teleport(Players On Hero(Hero(Winston), Team 2), Vector(-107.590, 4, -79.260));
  • Teleport(Players On Hero(Hero(Tracer), Team 2), Vector(-106.530, 4, -79.740));
  • }
  • }
  • rule("Assemble Screen - BOTS")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Global.AssemblingHeroes == True;
  • Is Dummy Bot(Event Player) == True;
  • Global.Allheroes == False;
  • }
  • actions
  • {
  • Start Facing(Event Player, Direction Towards(Event Player, Vector(-105.284, 5.250, -76.645)), 100000000, To World,
  • Start Facing(Event Player, Direction Towards(Event Player, World Vector Of(Forward, Event Player, Rotation)), 100000000, To World,
  • Direction and Turn Rate);
  • }
  • }
  • rule("Assemble Screen")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Global.AssemblingHeroes == True;
  • Is Dummy Bot(Event Player) == False;
  • Global.Allheroes == False;
  • }
  • actions
  • {
  • Wait(0.160, Ignore Condition);
  • Start Camera(All Players(Team 2), Vector(-105.631, 5.551, -77.225), Vector(-108.383, 5.550, -79.942), 0);
  • Start Forcing Player To Be Hero(Event Player, Hero(Soldier: 76));
  • Set Invisible(Event Player, All);
  • Set Status(Event Player, Null, Rooted, 9999);
  • Disable Hero HUD(Event Player);
  • Disable Nameplates(All Players(Team 2), Event Player);
  • }
  • }
  • rule("Countdown")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Global.Countdown == True;
  • }
  • actions
  • {
  • Small Message(Event Player, Custom String("3"));
  • Wait(1, Abort When False);
  • Small Message(Event Player, Custom String("2"));
  • Wait(1, Abort When False);
  • Small Message(Event Player, Custom String("1"));
  • Wait(1, Abort When False);
  • Event Player.IsInMenuMode = False;
  • Clear Status(Event Player, Rooted);
  • Stop Camera(Event Player);
  • Destroy All In-World Text;
  • Destroy All Dummy Bots;
  • Global.AssemblingHeroes = False;
  • Enable Game Mode In-World UI(Event Player);
  • Enable Hero HUD(Event Player);
  • Set Invisible(Event Player, None);
  • Enable Nameplates(All Players(Team 2), Event Player);
  • }
  • }
  • rule("Assassin Name")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Genji;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Start Forcing Dummy Bot Name(Event Player, Custom String("******in"));
  • }
  • }
  • rule("Heavy Assault Name")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Hero Of(Event Player) == Hero(Wrecking Ball);
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Start Forcing Dummy Bot Name(Event Player, Custom String("Heavy ***ault"));
  • }
  • }
  • rule("Sniper Name")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Widowmaker;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Start Forcing Dummy Bot Name(Event Player, Custom String("Sniper"));
  • }
  • }
  • rule("Enforcer Name")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Reaper;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Start Forcing Dummy Bot Name(Event Player, Custom String("Enforcer"));
  • }
  • }
  • rule("Trooper Name")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Baptiste;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Start Forcing Dummy Bot Name(Event Player, Custom String("Trooper"));
  • }
  • }
  • rule("Icons - Open")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.AssemblingHeroes == False;
  • }
  • actions
  • {
  • Wait(0.250, Ignore Condition);
  • Create In-World Text(All Players(Team 2), Custom String(" {0}\r\nOPEN", Ability Icon String(Hero(Pharah), Button(Ability 2))),
  • Vector(-95.524, 5.450, -77.836), 1.500, Do Not Clip, Visible To Position and String, Blue, Default Visibility);
  • Vector(-95.524, 5.450, -77.836), 1.500, Do Not Clip, Visible To Position and String, Color(Blue), Default Visibility);
  • Global.ObjectiveIcon = Last Text ID;
  • Set Objective Description(All Players(Team 2), Custom String("EXIT THE GARAGE"), Visible To and String);
  • Wait(0.250, Ignore Condition);
  • Big Message(All Players(Team 2), Custom String("Exit the garage"));
  • }
  • }
  • rule("Open")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Distance Between(Event Player, Vector(-95.613, 5.359, -77.624)) <= 2;
  • Is Game In Progress == False;
  • }
  • actions
  • {
  • Small Message(Event Player, Custom String("Press {0} to open door", Input Binding String(Button(Interact))));
  • }
  • }
  • rule("Open")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Distance Between(Event Player, Vector(-95.613, 5.359, -77.624)) <= 2;
  • Is Button Held(Event Player, Interact) == True;
  • Is Button Held(Event Player, Button(Interact)) == True;
  • Is Game In Progress == False;
  • }
  • actions
  • {
  • Unpause Match Time;
  • Wait(0.250, Ignore Condition);
  • Set Match Time(0);
  • Destroy In-World Text(Global.ObjectiveIcon);
  • Wait(0.250, Ignore Condition);
  • Pause Match Time;
  • Set Match Time(100000000);
  • Big Message(All Players(Team 2), Custom String("GET TO THE DISTILLERY"));
  • Create In-World Text(All Players(Team 2), Custom String(" {0}\r\nDISTILLERY", Ability Icon String(Hero(Pharah), Button(
  • Ability 2))), Vector(-3.846, 7.175, -79.123), 1.500, Do Not Clip, Visible To Position and String, Blue, Default Visibility);
  • Ability 2))), Vector(-3.846, 7.175, -79.123), 1.500, Do Not Clip, Visible To Position and String, Color(Blue),
  • Default Visibility);
  • Set Objective Description(All Players(Team 2), Custom String("GET TO THE DISTILLERY"), Visible To and String);
  • Global.ObjectiveIcon = Last Text ID;
  • }
  • }
  • rule("Contest here")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Distance Between(Payload Position, Vector(56.125, 7.213, -82.903)) <= 5;
  • Global.Round < 6;
  • Is Game In Progress == True;
  • Number of Heroes(Hero(Ana), Team 1) == 0;
  • Number Of Heroes(Hero(Ana), Team 1) == 0;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Ana), Team 1, -1, Vector(56.125, 7.213, -82.903), Vector(Empty Array, Empty Array, Empty Array));
  • }
  • }
  • rule("Invis bot")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Ana;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Set Invisible(Event Player, All);
  • Set Status(Event Player, Null, Phased Out, 9999);
  • }
  • }
  • rule("Create Enemies - First Area")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(-72.032, 5.360, -60.926), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(-72.032, 5.360, -60.926), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(-72.032, 5.360, -60.926), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(-45.040, 11.368, -42.694), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(-49.438, 11.363, -42.912), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(-36.587, 7.213, -49.100), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(-36.587, 7.213, -49.100), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(-34.928, 7.214, -55.927), Vector(Empty Array, Empty Array, Empty Array));
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(-72.032, 5.360, -60.926), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(-72.032, 5.360, -60.926), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(-72.032, 5.360, -60.926), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(-41.717, 7.051, -50.493), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(-41.717, 7.051, -50.493), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(-41.717, 7.051, -50.493), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(-41.717, 7.051, -50.493), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(-49.575, 10.496, -42.367), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Global.FirstWave = True;
  • }
  • }
  • rule("Is dead remove")
  • rule("Create Enemies - First Area Part 2")
  • {
  • event
  • {
  • Player Died;
  • Team 1;
  • All;
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Global.FirstWave == True;
  • Number Of Living Players(Team 1) == 0;
  • }
  • actions
  • {
  • Destroy Dummy Bot(Team Of(Event Player), Slot Of(Event Player));
  • Global.BOTProperties = Array(Hero(Reaper), Vector(-40.030, 24.406, -40.539), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(-30.326, 24.403, -47.800), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(-30.326, 24.403, -47.800), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(-23.031, 12.455, -51.262), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(-23.031, 12.455, -51.262), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(-23.539, 6.480, -50.658), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Global.SecondWave = True;
  • Wait(0.250, Ignore Condition);
  • Global.FirstWave = False;
  • }
  • }
  • rule("Create Enemies - First Area Part 3")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.SecondWave == True;
  • Number Of Living Players(Team 1) <= 4;
  • }
  • actions
  • {
  • Global.BOTProperties = Array(Hero(Reaper), Vector(-31.766, 20.398, -47.684), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(-38.485, 21.054, -44.372), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Global.ThirdWave = True;
  • Wait(0.250, Ignore Condition);
  • Global.SecondWave = False;
  • }
  • }
  • rule("Create Enemies - Second Area")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ThirdWave == True;
  • Number Of Living Players(Team 1) == 0;
  • }
  • actions
  • {
  • Global.BOTProperties = Array(Hero(Reaper), Vector(-11.405, 6.305, -79.291), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(-11.405, 6.305, -79.291), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(-7.207, 6.320, -75.051), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(-7.128, 6.303, -77.813), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(-7.254, 6.303, -80.495), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(-7.090, 6.445, -83.533), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait Until(Number Of Living Players(Team 1) <= 5, 99999);
  • Global.BOTProperties = Array(Hero(Widowmaker), Vector(-1.107, 12.455, -80.166), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Global.FourthWave = True;
  • Wait(0.250, Ignore Condition);
  • Global.ThirdWave = False;
  • }
  • }
  • rule("Create Enemies - Second Area Part 2")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.FourthWave == True;
  • Number Of Living Players(Team 1) == 0;
  • }
  • actions
  • {
  • Global.FourthWave = False;
  • Create Effect(All Players(All Teams), Cloud, Color(White), Vector(-8.753, 6.455, -87.713), 1, Visible To Position and Radius);
  • Global.Smokeeffect = Last Created Entity;
  • Global.BOTProperties = Array(Hero(Reaper), Vector(-8.753, 6.455, -87.713), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(-8.753, 6.455, -87.713), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(-8.753, 6.455, -87.713), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(-8.753, 6.455, -87.713), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(1, Ignore Condition);
  • Destroy Effect(Global.Smokeeffect);
  • Create Effect(All Players(All Teams), Cloud, Color(White), Vector(-8.753, 6.455, -87.713), 1, Visible To Position and Radius);
  • Global.Smokeeffect = Last Created Entity;
  • Global.BOTProperties = Array(Hero(Reaper), Vector(-8.360, 6.521, -69.313), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(-8.360, 6.521, -69.313), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(-8.360, 6.521, -69.313), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(-8.360, 6.521, -69.313), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(1, Ignore Condition);
  • Destroy Effect(Global.Smokeeffect);
  • }
  • }
  • rule("Shooting - Reaper")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Reaper;
  • }
  • conditions
  • {
  • Is In Line of Sight(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Distance Between(Event Player, Current Array Element))), Barriers Do Not Block LOS) == True;
  • Is Dummy Bot(Event Player) == True;
  • Event Player.LineofSight == True;
  • Count Of(Filtered Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)))
  • > 0;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Wait(1.500, Ignore Condition);
  • Press Button(Event Player, Primary Fire);
  • Press Button(Event Player, Button(Primary Fire));
  • Loop If Condition Is True;
  • }
  • }
  • rule("Pathfinder: Resolve Current")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.pathfinderDoGetCurrent == True;
  • }
  • actions
  • {
  • Event Player.pathfinderCurrent = Index Of Array Value(Global.Nodes[Event Player.pathmapReference], First Of(Sorted Array(
  • Global.Nodes[Event Player.pathmapReference], Distance Between(Position Of(Event Player), Current Array Element))));
  • Filtered Array(Global.Nodes[Event Player.pathmapReference], Is In Line of Sight(Eye Position(Event Player),
  • Current Array Element, Barriers Do Not Block LOS) == True), Distance Between(Position Of(Event Player),
  • Current Array Element))));
  • Start Throttle In Direction(Event Player, Direction Towards(Position Of(Event Player),
  • Event Player.pathfinderCurrent == -1 ? Event Player.destination : Global.Nodes[Event Player.pathmapReference][Event Player.pathfinderCurrent]),
  • 1, To World, Replace existing throttle, Direction and Magnitude);
  • Event Player.pathfinderDoGetCurrent = False;
  • }
  • }
  • rule("Pathfinder: Resolve Next")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Distance Between(Position Of(Event Player),
  • Event Player.pathfinderCurrent == -1 ? Event Player.destination : Global.Nodes[Event Player.pathmapReference][Event Player.pathfinderCurrent])
  • <= 0.400;
  • Event Player.parentArray != Null;
  • }
  • actions
  • {
  • If(Event Player.pathfinderCurrent != -1);
  • Event Player.lastAttribute = Mapped Array(Filtered Array(Global.Attributes[Event Player.pathmapReference], X Component Of(
  • Current Array Element) == Event Player.pathfinderCurrent && Y Component Of(Current Array Element)
  • == Event Player.parentArray[Event Player.pathfinderCurrent] - 1), Z Component Of(Current Array Element));
  • Event Player.pathfinderCurrent = Event Player.parentArray[Event Player.pathfinderCurrent] - 1;
  • Else;
  • Stop Throttle In Direction(Event Player);
  • Event Player.parentArray = Null;
  • End;
  • Loop If Condition Is True;
  • }
  • }
  • rule("Pathfinder: skip if visible")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.parentArray != Null;
  • Event Player.pathfinderCurrent != -1;
  • Y Component Of(
  • Event Player.pathfinderCurrent == -1 ? Event Player.destination : Global.Nodes[Event Player.pathmapReference][Event Player.pathfinderCurrent])
  • - Y Component Of(
  • Event Player.parentArray[Event Player.pathfinderCurrent] - 1 == -1 ? Event Player.destination : Global.Nodes[Event Player.pathmapReference][Event Player.parentArray[Event Player.pathfinderCurrent] - 1])
  • == True;
  • Is In Line of Sight(Position Of(Event Player) + Vector(Empty Array, 0.250, Empty Array), (
  • Event Player.parentArray[Event Player.pathfinderCurrent] - 1 == -1 ? Event Player.destination : Global.Nodes[Event Player.pathmapReference][Event Player.parentArray[Event Player.pathfinderCurrent] - 1])
  • + Vector(Empty Array, 0.250, Empty Array), Barriers Do Not Block LOS) == True;
  • }
  • actions
  • {
  • Wait(0.100, Ignore Condition);
  • If(Event Player.pathfinderCurrent != -1);
  • Event Player.lastAttribute = Mapped Array(Filtered Array(Global.Attributes[Event Player.pathmapReference], X Component Of(
  • Current Array Element) == Event Player.pathfinderCurrent && Y Component Of(Current Array Element)
  • == Event Player.parentArray[Event Player.pathfinderCurrent] - 1), Z Component Of(Current Array Element));
  • Event Player.pathfinderCurrent = Event Player.parentArray[Event Player.pathfinderCurrent] - 1;
  • Else;
  • Stop Throttle In Direction(Event Player);
  • Event Player.parentArray = Null;
  • End;
  • Wait(0.100, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Moving")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Distance Between(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Distance Between(
  • Event Player, Current Array Element)))) > 5;
  • Hero Of(Event Player) != Hero(Ana);
  • Hero Of(Event Player) != Hero(Widowmaker);
  • Hero Of(Event Player) != Hero(Genji);
  • Is In Line of Sight(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Distance Between(Event Player, Current Array Element))), Barriers Do Not Block LOS) == True;
  • Event Player.LineofSight == True;
  • Distance Between(Event Player, First Of(Sorted Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Distance Between(Event Player, Current Array Element)))) > 5;
  • Count Of(Filtered Array(All Players(Opposite Team Of(Team Of(Event Player))), Current Array Element.Invis == False)) > 0;
  • Hero Of(Event Player) != Hero(Reinhardt);
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • Hero Of(Event Player) != Hero(Baptiste);
  • }
  • actions
  • {
  • Event Player._extendedPlayerCollection[0] = First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Distance Between(Event Player, Current Array Element)));
  • Event Player.Dijkstra_Final_Path = Empty Array;
  • Event Player.Dijkstra_Final_Path_Attributes = Empty Array;
  • Event Player.Dijkstra_Current = Index Of Array Value(Global.Nodes[Global.map], First Of(Sorted Array(Global.Nodes[Global.map],
  • Distance Between(First Of(Event Player._extendedPlayerCollection), Current Array Element))));
  • Event Player.Dijkstra_Distances[Event Player.Dijkstra_Current] = 0.000;
  • Event Player.Dijkstra_Unvisited = Mapped Array(Global.Nodes[Global.map], Current Array Index);
  • While(Is True For Any(Event Player.Dijkstra_Unvisited, Event Player.Dijkstra_Distances[Current Array Element] != 0));
  • Wait(0.016, Ignore Condition);
  • Event Player.Dijkstra_Connected_Segments = Filtered Array(Global.Segments[Global.map], Array Contains(Append To Array(
  • Append To Array(Empty Array, X Component Of(Current Array Element)), Y Component Of(Current Array Element)),
  • Event Player.Dijkstra_Current));
  • Event Player._extendedPlayerCollection[1] = 0;
  • While(Event Player._extendedPlayerCollection[1] < Count Of(Event Player.Dijkstra_Connected_Segments));
  • Wait(0.016, Ignore Condition);
  • Event Player.Dijkstra_Neighbor_Index = First Of(Filtered Array(Append To Array(Append To Array(Empty Array, X Component Of(
  • Event Player.Dijkstra_Connected_Segments[Event Player._extendedPlayerCollection[1]])), Y Component Of(
  • Event Player.Dijkstra_Connected_Segments[Event Player._extendedPlayerCollection[1]])),
  • Current Array Element != Event Player.Dijkstra_Current));
  • Event Player.Dijkstra_Distance = Distance Between(Global.Nodes[Global.map][Event Player.Dijkstra_Neighbor_Index],
  • Global.Nodes[Global.map][Event Player.Dijkstra_Current]) + Event Player.Dijkstra_Distances[Event Player.Dijkstra_Current];
  • Event Player.Dijkstra_Neighbor_Attributes = Filtered Array(Global.Attributes[Global.map], Y Component Of(Current Array Element)
  • == Event Player.Dijkstra_Current && X Component Of(Current Array Element) == Event Player.Dijkstra_Neighbor_Index);
  • If((
  • Event Player.Dijkstra_Distances[Event Player.Dijkstra_Neighbor_Index] == 0 || Event Player.Dijkstra_Distance < Event Player.Dijkstra_Distances[Event Player.Dijkstra_Neighbor_Index])
  • && (!Count Of(Event Player.Dijkstra_Neighbor_Attributes) || Is True For Any(Event Player.Dijkstra_Neighbor_Attributes,
  • Array Contains(Null, Z Component Of(Current Array Element)))));
  • Event Player.Dijkstra_Distances[Event Player.Dijkstra_Neighbor_Index] = Event Player.Dijkstra_Distance;
  • Event Player.Dijkstra_Parent_Array[Event Player.Dijkstra_Neighbor_Index] = Event Player.Dijkstra_Current + 1;
  • End;
  • Event Player._extendedPlayerCollection[1] += 1;
  • End;
  • Modify Player Variable(Event Player, Dijkstra_Unvisited, Remove From Array By Value, Event Player.Dijkstra_Current);
  • Skip If(Index Of Array Value(Global.Nodes[Global.map], First Of(Sorted Array(Global.Nodes[Global.map], Distance Between(
  • Position Of(Event Player), Current Array Element)))) == Event Player.Dijkstra_Current, 2);
  • Event Player.Dijkstra_Current = First Of(Sorted Array(Filtered Array(Event Player.Dijkstra_Unvisited,
  • Event Player.Dijkstra_Distances[Current Array Element] != 0), Event Player.Dijkstra_Distances[Current Array Element]));
  • End;
  • Event Player.pathmapReference = Global.map;
  • Event Player.parentArray = Event Player.Dijkstra_Parent_Array;
  • Event Player.destination = First Of(Event Player._extendedPlayerCollection);
  • Event Player.pathmapReference = Global._objectVariable_1[Global.bake];
  • Event Player.destination = First Of(Sorted Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Distance Between(Event Player, Current Array Element)));
  • Event Player.parentArray = Global._objectVariable_0[Global.bake][Index Of Array Value(
  • Global.Nodes[Global._objectVariable_1[Global.bake]], First Of(Sorted Array(Global.Nodes[Global._objectVariable_1[Global.bake]],
  • Distance Between(Current Array Element, Event Player.destination))))];
  • Event Player.pathfinderDoGetCurrent = True;
  • Wait(5, Abort When False);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Moving - Baptiste")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Baptiste;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Event Player.LineofSight == True;
  • Count Of(Filtered Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)))
  • <= 0;
  • Distance Between(Event Player, First Of(Sorted Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Distance Between(Event Player, Current Array Element)))) > 10;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.pathmapReference = Global._objectVariable_1[Global.bake];
  • Event Player.destination = First Of(Sorted Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Distance Between(Event Player, Current Array Element)));
  • Event Player.parentArray = Global._objectVariable_0[Global.bake][Index Of Array Value(
  • Global.Nodes[Global._objectVariable_1[Global.bake]], First Of(Sorted Array(Global.Nodes[Global._objectVariable_1[Global.bake]],
  • Distance Between(Current Array Element, Event Player.destination))))];
  • Event Player.pathfinderDoGetCurrent = True;
  • Wait(5, Abort When False);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Stop Moving - Baptiste")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Baptiste;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Event Player.LineofSight == True;
  • Count Of(Filtered Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)))
  • > 0;
  • Distance Between(Event Player, First Of(Sorted Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Distance Between(Event Player, Current Array Element)))) > 10;
  • }
  • actions
  • {
  • Wait(1, Ignore Condition);
  • Stop Throttle In Direction(Event Player);
  • }
  • }
  • rule("Move Away - Baptiste")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Baptiste;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Event Player.LineofSight == True;
  • Count Of(Filtered Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)))
  • > 0;
  • Distance Between(Event Player, First Of(Sorted Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Distance Between(Event Player, Current Array Element)))) <= 10;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.pathmapReference = Global._objectVariable_1[Global.bake];
  • Event Player.destination = Last Of(Sorted Array(Filtered Array(Global._tempNodes, Is In Line of Sight(Event Player,
  • Current Array Element, Barriers Do Not Block LOS)), Distance Between(Event Player, Current Array Element)));
  • Event Player.parentArray = Global._objectVariable_0[Global.bake][Index Of Array Value(
  • Global.Nodes[Global._objectVariable_1[Global.bake]], First Of(Sorted Array(Global.Nodes[Global._objectVariable_1[Global.bake]],
  • Distance Between(Current Array Element, Event Player.destination))))];
  • Event Player.pathfinderDoGetCurrent = True;
  • Event Player.Dijkstra_Current = 0;
  • Event Player.Dijkstra_Distances = 0;
  • Event Player.Dijkstra_Connected_Segments = 0;
  • Event Player.Dijkstra_Neighbor_Index = 0;
  • Event Player.Dijkstra_Distance = 0;
  • Event Player.Dijkstra_Parent_Array = 0;
  • Wait(5, Ignore Condition);
  • Loop If(Distance Between(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Distance Between(Event Player, Current Array Element)))) > 5);
  • }
  • }
  • rule("Moving Closer")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Distance Between(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Distance Between(
  • Event Player, Current Array Element)))) <= 5;
  • Distance Between(Event Player, First Of(Sorted Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Distance Between(Event Player, Current Array Element)))) <= 5;
  • Hero Of(Event Player) != Hero(Ana);
  • Hero Of(Event Player) != Hero(Widowmaker);
  • Hero Of(Event Player) != Hero(Genji);
  • Count Of(Filtered Array(All Players(Opposite Team Of(Team Of(Event Player))), Current Array Element.Invis == False)) > 0;
  • Hero Of(Event Player) != Hero(Baptiste);
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Stop Throttle In Direction(Event Player);
  • Wait(Random Integer(1, 2), Ignore Condition);
  • Wait(Random Integer(1, 2), Abort When False);
  • Start Throttle In Direction(Event Player, Direction Towards(Position Of(Event Player), Position Of(First Of(Sorted Array(
  • Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Is In Line of Sight(Event Player,
  • Current Array Element, Barriers Do Not Block LOS)), Distance Between(Event Player, Current Array Element))))
  • + Direction From Angles(Total Time Elapsed * 135, 0) * 5), 1, To World, Replace existing throttle, Direction and Magnitude);
  • Filtered Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)),
  • Distance Between(Event Player, Current Array Element)))) + Direction From Angles(Total Time Elapsed * 135, 0) * 5), 1,
  • To World, Replace existing throttle, Direction and Magnitude);
  • Wait(Random Integer(1, 2), Ignore Condition);
  • Loop If(Distance Between(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Distance Between(Event Player, Current Array Element)))) <= 5);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Shooting - Baptiste")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Baptiste;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is In Line of Sight(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Distance Between(Event Player, Current Array Element))), Barriers Do Not Block LOS) == True;
  • Is Firing Primary(Event Player) == False;
  • Event Player.LineofSight == True;
  • Count Of(Filtered Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)))
  • > 0;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Start Holding Button(Event Player, Primary Fire);
  • Press Button(Event Player, Button(Primary Fire));
  • Wait(1, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Stop Shooting - Baptiste")
  • rule("Start Facing")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Baptiste;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is In Line of Sight(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Distance Between(Event Player, Current Array Element))), Barriers Do Not Block LOS) == False;
  • Event Player.LineofSight == True;
  • Count Of(Filtered Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)))
  • > 0;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Stop Holding Button(Event Player, Primary Fire);
  • Start Facing(Event Player, Direction Towards(Event Player, Eye Position(First Of(Sorted Array(Filtered Array(Filtered Array(
  • All Living Players(Opposite Team Of(Team Of(Event Player))), Current Array Element.Invis == False), Is In Line of Sight(
  • Event Player, Current Array Element, Barriers Do Not Block LOS)), Distance Between(Event Player, Current Array Element))))
  • + Down + Down), 200, To World, Direction and Turn Rate);
  • }
  • }
  • rule("Start Facing")
  • rule("Stop Facing")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Count Of(Filtered Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)))
  • <= 0;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Start Facing(Event Player, Direction Towards(Event Player, First Of(Sorted Array(Filtered Array(All Living Players(
  • Opposite Team Of(Team Of(Event Player))), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)),
  • Distance Between(Event Player, Current Array Element)))), 200, To World, Direction and Turn Rate);
  • Stop Facing(Event Player);
  • }
  • }
  • rule("All Dead")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Number of Living Players(Team 2) == 0;
  • Number Of Living Players(Team 2) == 0;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Declare Team Victory(Team 1);
  • }
  • }
  • rule("No Respawn")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • actions
  • {
  • Disable Built-In Game Mode Respawning(Event Player);
  • }
  • }
  • rule("Set Spawn After Game Starts")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Start Forcing Spawn Room(Team 2, 1);
  • }
  • }
  • rule("Damage - Assassin")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Genji;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Set Damage Dealt(Event Player, 25);
  • }
  • }
  • rule("Create Enemies - Second Area")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.FirstWave == True;
  • Number of Players(Team 1) == 0;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Widowmaker), Team 1, -1, Vector(-2.502, 13.830, -79.598), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(-8.911, 7.210, -79.347), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(-8.911, 7.210, -79.347), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(-8.911, 7.210, -79.347), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(-8.911, 7.210, -79.347), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(-8.911, 7.210, -79.347), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(-8.911, 7.210, -79.347), Vector(Empty Array, Empty Array, Empty Array));
  • Global.FirstWave = False;
  • }
  • }
  • rule("Shooting - Widow")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Widowmaker;
  • }
  • conditions
  • {
  • Is In Line of Sight(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Distance Between(Event Player, Current Array Element))), Barriers Do Not Block LOS) == True;
  • Is Dummy Bot(Event Player) == True;
  • Is Firing Secondary(Event Player) == True;
  • Count Of(Filtered Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)))
  • > 0;
  • Distance Between(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Distance Between(
  • Event Player, Current Array Element)))) > 5;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Wait(1, Ignore Condition);
  • Press Button(Event Player, Primary Fire);
  • Wait(2, Restart When True);
  • Press Button(Event Player, Button(Primary Fire));
  • Loop If Condition Is True;
  • }
  • }
  • rule("Aiming Widow")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Widowmaker;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Distance Between(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Distance Between(
  • Event Player, Current Array Element)))) <= 5;
  • Count Of(Filtered Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)))
  • > 0;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Stop Holding Button(Event Player, Secondary Fire);
  • Start Throttle In Direction(Event Player, Facing Direction Of(Event Player) + Backward, 1, To World, Replace existing throttle,
  • Direction and Magnitude);
  • Stop Holding Button(Event Player, Button(Primary Fire));
  • Stop Holding Button(Event Player, Button(Secondary Fire));
  • Event Player.pathmapReference = Global._objectVariable_1[Global.bake];
  • Event Player.destination = Last Of(Sorted Array(Global.SniperPos, Distance Between(Event Player, Current Array Element)));
  • Event Player.parentArray = Global._objectVariable_0[Global.bake][Index Of Array Value(
  • Global.Nodes[Global._objectVariable_1[Global.bake]], First Of(Sorted Array(Global.Nodes[Global._objectVariable_1[Global.bake]],
  • Distance Between(Current Array Element, Event Player.destination))))];
  • Event Player.pathfinderDoGetCurrent = True;
  • }
  • }
  • rule("Aiming Widow")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Widowmaker;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Distance Between(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Distance Between(
  • Event Player, Current Array Element)))) > 5;
  • Count Of(Filtered Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)))
  • > 0;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Start Holding Button(Event Player, Secondary Fire);
  • Start Holding Button(Event Player, Button(Secondary Fire));
  • Stop Throttle In Direction(Event Player);
  • }
  • }
  • rule("Shooting - Widow")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Widowmaker;
  • }
  • conditions
  • {
  • Is In Line of Sight(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Distance Between(Event Player, Current Array Element))), Barriers Do Not Block LOS) == True;
  • Is Dummy Bot(Event Player) == True;
  • Is Firing Secondary(Event Player) == False;
  • Count Of(Filtered Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)))
  • > 0;
  • Distance Between(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Distance Between(
  • Event Player, Current Array Element)))) <= 5;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Start Holding Button(Event Player, Primary Fire);
  • Start Holding Button(Event Player, Button(Primary Fire));
  • }
  • }
  • rule("Shooting - Widow")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Widowmaker;
  • }
  • conditions
  • {
  • Is In Line of Sight(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Distance Between(Event Player, Current Array Element))), Barriers Do Not Block LOS) == False;
  • Is Dummy Bot(Event Player) == True;
  • Is Firing Secondary(Event Player) == False;
  • }
  • actions
  • {
  • Stop Holding Button(Event Player, Primary Fire);
  • }
  • }
  • rule("Smoke Create")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.FirstWave == False;
  • Is Game In Progress == True;
  • Number of Players(Team 1) < 4;
  • Global.SmokeSpawned == False;
  • Count Of(Filtered Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)))
  • <= 0;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Wait(3, Abort When False);
  • Create Effect(All Players(All Teams), Cloud, White, Vector(-9.639, 7.450, -88.632), 5, Visible To Position and Radius);
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(-9.639, 7.450, -88.632), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(-9.639, 7.450, -88.632), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(-9.639, 7.450, -88.632), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(-9.639, 7.450, -88.632), Vector(Empty Array, Empty Array, Empty Array));
  • Wait(1, Ignore Condition);
  • Destroy All Effects;
  • Global.SmokeSpawned = True;
  • Stop Holding Button(Event Player, Button(Primary Fire));
  • }
  • }
  • rule("Sniper HP")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Widowmaker;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Remove All Health Pools From Player(Event Player);
  • If(Global.Normal == True);
  • Set Damage Dealt(Event Player, 33);
  • Set Max Health(Event Player, 150);
  • Wait(0.160, Ignore Condition);
  • Set Player Health(Event Player, 300);
  • Else If(Global.Hard == True);
  • Set Damage Dealt(Event Player, 83);
  • Set Max Health(Event Player, 225);
  • Wait(0.160, Ignore Condition);
  • Set Player Health(Event Player, 450);
  • Else If(Global.Expert == True);
  • Set Damage Dealt(Event Player, 125);
  • Set Max Health(Event Player, 300);
  • Wait(0.160, Ignore Condition);
  • Set Player Health(Event Player, 600);
  • Else If(Global.Legendary == True);
  • Set Damage Dealt(Event Player, 167);
  • Set Max Health(Event Player, 400);
  • Wait(0.160, Ignore Condition);
  • Set Player Health(Event Player, 800);
  • End;
  • }
  • }
  • rule("Modes")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.Normal = Workshop Setting Toggle(Custom String("Difficulty"), Custom String("Normal"), True);
  • Global.Hard = Workshop Setting Toggle(Custom String("Difficulty"), Custom String("Hard"), False);
  • Global.Expert = Workshop Setting Toggle(Custom String("Difficulty"), Custom String("Expert"), False);
  • Global.Legendary = Workshop Setting Toggle(Custom String("Difficulty"), Custom String("Legendary"), False);
  • Global.Normal = Workshop Setting Toggle(Custom String("Difficulty"), Custom String("Normal"), True, 0);
  • Global.Hard = Workshop Setting Toggle(Custom String("Difficulty"), Custom String("Hard"), False, 0);
  • Global.Expert = Workshop Setting Toggle(Custom String("Difficulty"), Custom String("Expert"), False, 0);
  • Global.Legendary = Workshop Setting Toggle(Custom String("Difficulty"), Custom String("Legendary"), False, 0);
  • }
  • }
  • rule("Distillery")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Distance Between(Payload Position, Vector(-5.929, 7.097, -79.301)) <= 5;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Small Message(All Players(Team 2), Custom String("Objective bonus: 1350"));
  • Global.TeamScore += 1350;
  • Destroy In-World Text(Global.ObjectiveIcon);
  • Set Objective Description(All Players(Team 2), Custom String("SECURE THE DISTILLERY"), Visible To and String);
  • Big Message(All Players(Team 2), Custom String("SECURE THE DISTILLERY"));
  • Global.SecureDistillery = True;
  • }
  • }
  • rule("Secure Distillery")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.SecureDistillery == True;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Global.NewSpawnArea = True;
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(17.768, 7.250, -86.534), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(17.768, 7.250, -86.534), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(17.768, 7.250, -86.534), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(17.768, 7.250, -86.534), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(27.843, 7.250, -72.872), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(52.726, 7.070, -83.137), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(52.726, 7.070, -83.137), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(51.839, 7.250, -87.605), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(51.839, 7.250, -87.605), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(64.232, 13.250, -83.238), Vector(Empty Array, Empty Array, Empty Array));
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(27.843, 7.250, -72.872), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(52.726, 7.070, -83.137), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(52.726, 7.070, -83.137), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(51.839, 7.250, -87.605), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(51.839, 7.250, -87.605), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(64.232, 13.250, -83.238), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • }
  • }
  • rule("Survive Talon Forces")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.SecureDistillery == True;
  • Is Game In Progress == True;
  • Distance Between(Payload Position, Vector(56.125, 7.213, -82.903)) <= 5;
  • }
  • actions
  • {
  • Wait(1, Abort When False);
  • Big Message(All Players(Team 2), Custom String("SURVIVE THE INCOMING TALON FORCES"));
  • Set Objective Description(All Players(Team 2), Custom String("SURVIVE THE INCOMING TALON FORCES"), Visible To and String);
  • Global.Survive = True;
  • Global.SecureDistillery = False;
  • Global.Round = 1;
  • }
  • }
  • rule("Round 1")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Survive == True;
  • Global.Round == 1;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(52.453, 7.250, -91.326), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(52.453, 7.250, -91.326), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(52.453, 7.250, -91.326), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Genji), Team 1, -1, Vector(63.729, 13.250, -83.541), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(40.504, 7.217, -69.022), Vector(Empty Array, Empty Array, Empty Array));
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(52.366, 7.250, -101.304), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(52.366, 7.250, -101.304), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(52.366, 7.250, -101.304), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(Random Integer(4, 6), Ignore Condition);
  • Global.BOTProperties = Array(Hero(Genji), Vector(0, 0, 0), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait Until(Number Of Players(Team 1) <= 1, 99999);
  • Create Effect(All Players(All Teams), Cloud, Color(White), Vector(19.887, 7.250, -62.647), 5, Visible To Position and Radius);
  • Global.Smokeeffect = Last Created Entity;
  • Create Effect(All Players(All Teams), Cloud, Color(White), Vector(56.097, 12.250, -71.812), 5, Visible To Position and Radius);
  • Global.smokeffect2 = Last Created Entity;
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(19.887, 7.250, -62.647), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(19.887, 7.250, -62.647), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(19.887, 7.250, -62.647), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(55.831, 12.250, -72.611), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(55.831, 12.250, -72.611), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(55.831, 12.250, -72.611), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(55.831, 12.250, -72.611), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(1, Ignore Condition);
  • Destroy Effect(Global.Smokeeffect);
  • Destroy Effect(Global.smokeffect2);
  • }
  • }
  • rule("Assassin")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Genji;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Global.Survive == True;
  • Global.Outro == False;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.AsssasinPositions = Array(Vector(48.975, 12.166, -98.075), Vector(63.562, 13.250, -83.233), Vector(55.949, 12.358,
  • -75.544));
  • Event Player.Assasindopositions = True;
  • }
  • }
  • rule("Force Pos")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Genji;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Event Player.Assasindopositions == True;
  • Global.Outro == False;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Wait(0.250, Ignore Condition);
  • Skip If(Is Using Ultimate(Event Player) == True, 1);
  • Press Button(Event Player, Ultimate);
  • Start Forcing Player Position(Event Player, Random Value In Array(Event Player.AsssasinPositions), False);
  • Wait(1, Ignore Condition);
  • Start Forcing Player Position(Event Player, Random Value In Array(Event Player.AsssasinPositions), False);
  • Wait(1, Ignore Condition);
  • Press Button(Event Player, Button(Ultimate));
  • Start Forcing Player Position(Event Player, Random Value In Array(Filtered Array(Global.AssassinPOS, Distance Between(
  • Current Array Element, All Living Players(Opposite Team Of(Team Of(Event Player)))) <= 20)), False);
  • Wait(Random Integer(0.150, 1.500), Ignore Condition);
  • Start Forcing Player Position(Event Player, Random Value In Array(Filtered Array(Global.AssassinPOS, Distance Between(
  • Current Array Element, All Living Players(Opposite Team Of(Team Of(Event Player)))) <= 20)), False);
  • Wait(Random Integer(0.150, 1.500), Ignore Condition);
  • Start Forcing Player Position(Event Player, Random Value In Array(Filtered Array(Global.AssassinPOS, Distance Between(
  • Current Array Element, All Living Players(Opposite Team Of(Team Of(Event Player)))) <= 20)), False);
  • Wait(Random Integer(0.150, 1.500), Ignore Condition);
  • Start Forcing Player Position(Event Player, Random Value In Array(Filtered Array(Global.AssassinPOS, Distance Between(
  • Current Array Element, All Living Players(Opposite Team Of(Team Of(Event Player)))) <= 20)), False);
  • Wait(Random Integer(0.150, 1.500), Ignore Condition);
  • Start Forcing Player Position(Event Player, Random Value In Array(Filtered Array(Global.AssassinPOS, Distance Between(
  • Current Array Element, All Living Players(Opposite Team Of(Team Of(Event Player)))) <= 20)), False);
  • Wait(Random Integer(0.150, 1.500), Ignore Condition);
  • Start Forcing Player Position(Event Player, Random Value In Array(Filtered Array(Global.AssassinPOS, Distance Between(
  • Current Array Element, All Living Players(Opposite Team Of(Team Of(Event Player)))) <= 20)), False);
  • Wait(0.250, Ignore Condition);
  • Stop Forcing Player Position(Event Player);
  • Wait(0.250, Ignore Condition);
  • Start Throttle In Direction(Event Player, Direction Towards(Event Player, First Of(Sorted Array(All Living Players(
  • Opposite Team Of(Team Of(Event Player))), Distance Between(Event Player, Current Array Element)))), 1, To World,
  • Replace existing throttle, Direction and Magnitude);
  • Event Player.Assasindopositions = False;
  • }
  • }
  • rule("Assassin Do Ult When No Ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Genji;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is Alive(Event Player) == True;
  • Is Using Ultimate(Event Player) == False;
  • }
  • actions
  • {
  • If(Ultimate Charge Percent(Event Player) < 100);
  • Set Ultimate Charge(Event Player, 100);
  • End;
  • Wait(0.500, Ignore Condition);
  • Press Button(Event Player, Button(Ultimate));
  • }
  • }
  • rule("Melee to get Assassin off")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • Has Status(Event Player, Knocked Down) == True;
  • Is Button Held(Event Player, Button(Melee)) == True;
  • }
  • actions
  • {
  • Clear Status(Event Player, Knocked Down);
  • Set Status(Sorted Array(Players On Hero(Hero(Genji), Team 1), Distance Between(Event Player, Current Array Element)), Null,
  • Stunned, 2);
  • Wait(2, Ignore Condition);
  • Sorted Array(Players On Hero(Hero(Genji), Team 1), Distance Between(Event Player, Current Array Element)).IsAttacking = False;
  • Sorted Array(Players On Hero(Hero(Genji), Team 1), Distance Between(Event Player, Current Array Element))
  • .Assasindopositions = True;
  • }
  • }
  • rule("Attack")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Genji;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Distance Between(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Distance Between(
  • Event Player, Current Array Element)))) <= 2;
  • Distance Between(Event Player, First Of(Sorted Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Distance Between(Event Player, Current Array Element)))) <= 2;
  • Has Status(Event Player, Stunned) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Distance Between(Event Player,
  • Current Array Element))), Phased Out) == False;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Damage(First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Distance Between(Event Player,
  • Current Array Element))), Event Player, Global.Expert == True ? 100 : (Global.Legendary == True ? 150 : 50));
  • Stop Throttle In Direction(Event Player);
  • Set Status(Event Player, Null, Rooted, 9999);
  • Start Holding Button(Event Player, Primary Fire);
  • Start Holding Button(Event Player, Button(Primary Fire));
  • Event Player.IsAttacking = True;
  • Set Status(First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Distance Between(Event Player,
  • Current Array Element))), Null, Knocked Down, 9999);
  • }
  • }
  • rule("Attack")
  • {
  • event
  • {
  • Player Took Damage;
  • Team 1;
  • Genji;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Event Player.Assasindopositions == False;
  • Event Player.IsAttacking == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Wait(2, Ignore Condition);
  • Clear Status(Event Player, Rooted);
  • Set Status(Event Player, Null, Stunned, 1);
  • Clear Status(First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Distance Between(Event Player,
  • Current Array Element))), Knocked Down);
  • Stop Holding Button(Event Player, Primary Fire);
  • Stop Holding Button(Event Player, Button(Primary Fire));
  • Wait(1, Ignore Condition);
  • Event Player.IsAttacking = False;
  • Event Player.Assasindopositions = True;
  • }
  • }
  • rule("Attack")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Genji;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Event Player.Assasindopositions == False;
  • Event Player.IsAttacking == False;
  • Has Status(Event Player, Stunned) == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Wait Until(Has Status(Event Player, Stunned) == False, 99999);
  • Wait(0.160, Ignore Condition);
  • Clear Status(Event Player, Rooted);
  • Set Status(Event Player, Null, Stunned, 3);
  • Clear Status(All Players(Team 2), Knocked Down);
  • Stop Holding Button(Event Player, Button(Primary Fire));
  • Wait(3, Ignore Condition);
  • Event Player.IsAttacking = False;
  • Event Player.Assasindopositions = True;
  • }
  • }
  • rule("Stop Attack")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Genji;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Distance Between(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Distance Between(
  • Event Player, Current Array Element)))) > 2;
  • Event Player.Assasindopositions == False;
  • Event Player.IsAttacking == True;
  • Distance Between(Event Player, First Of(Sorted Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Distance Between(Event Player, Current Array Element)))) > 5;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Clear Status(Event Player, Rooted);
  • Set Status(Event Player, Null, Stunned, 1);
  • Clear Status(First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Distance Between(Event Player,
  • Current Array Element))), Knocked Down);
  • Stop Holding Button(Event Player, Primary Fire);
  • Clear Status(All Players(Team 2), Knocked Down);
  • Stop Holding Button(Event Player, Button(Primary Fire));
  • Wait(1, Ignore Condition);
  • Event Player.Assasindopositions = True;
  • Event Player.IsAttacking = False;
  • }
  • }
  • rule("Dead Geji")
  • {
  • event
  • {
  • Player Died;
  • Team 1;
  • Genji;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Clear Status(Event Player, Rooted);
  • Set Status(Event Player, Null, Stunned, 1);
  • Clear Status(All Players(Team 2), Knocked Down);
  • Stop Holding Button(Event Player, Primary Fire);
  • Stop Holding Button(Event Player, Button(Primary Fire));
  • }
  • }
  • rule("Genji")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Genji;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Start Holding Button(Event Player, Jump);
  • Start Holding Button(Event Player, Button(Jump));
  • }
  • }
  • rule("Round 2")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Survive == True;
  • Global.Round == 2;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(43.079, 7.359, -62.750), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(43.079, 7.359, -62.750), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(43.079, 7.359, -62.750), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(43.079, 7.359, -62.750), Vector(Empty Array, Empty Array, Empty Array));
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(44.490, 7.250, -63.348), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(44.490, 7.250, -63.348), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(44.490, 7.250, -63.348), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(44.490, 7.250, -63.348), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(57.123, 7.250, -75.865), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • }
  • }
  • rule("Change Round")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Survive == True;
  • Count Of(Filtered Array(All Players(Team 1), Hero Of(Current Array Element) != Hero(Ana))) == 0;
  • Count Of(Filtered Array(All Living Players(Team 1), Hero Of(Current Array Element) != Hero(Ana))) == 0;
  • }
  • actions
  • {
  • Global.Round += 1;
  • }
  • }
  • rule("Round 3")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Survive == True;
  • Global.Round == 3;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(27.759, 23.770, -79), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(27.759, 23.770, -79), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(27.759, 23.770, -79), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(27.759, 23.770, -79), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(27.759, 23.770, -79), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(27.759, 23.770, -79), Vector(Empty Array, Empty Array, Empty Array));
  • Global.BOTProperties = Array(Hero(Reaper), Vector(27.337, 20.326, -79.188), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(27.337, 20.326, -79.188), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(27.337, 20.326, -79.188), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(27.337, 20.326, -79.188), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • }
  • }
  • rule("Round 4")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Survive == True;
  • Global.Round == 4;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Widowmaker), Team 1, -1, Vector(63.672, 13.450, -82.896), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(18.366, 6.455, -63.778), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(18.366, 6.455, -63.778), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(18.366, 6.455, -63.778), Vector(Empty Array, Empty Array, Empty Array));
  • Global.BOTProperties = Array(Hero(Reaper), Vector(38.995, 6.455, -90.064), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(31.662, 10.456, -95.158), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(27.515, 10.532, -89.070), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(10.411, 6.532, -99.799), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(10.411, 6.532, -99.799), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(10.411, 6.532, -99.799), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(10.411, 6.532, -99.799), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • }
  • }
  • rule("Round 5")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Survive == True;
  • Global.Round == 5;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(28.732, 20.854, -79.084), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(28.732, 20.854, -79.084), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(28.732, 20.854, -79.084), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Wrecking Ball), Team 1, -1, Vector(28.732, 20.854, -79.084), Vector(Empty Array, Empty Array, Empty Array));
  • Global.BOTProperties = Array(Hero(Reaper), Vector(27.291, 20.553, -80.092), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(27.291, 20.553, -80.092), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(27.291, 20.553, -80.092), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(20.906, 16.072, -69.660), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(20.906, 16.072, -69.660), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(20.906, 16.072, -69.660), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • }
  • }
  • rule("Round 6")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Survive == True;
  • Global.Round == 6;
  • }
  • actions
  • {
  • Global.BOTProperties = Array(Hero(Widowmaker), Vector(63.898, 12.455, -82.597), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(Random Integer(2, 3), Ignore Condition);
  • Global.BOTProperties = Array(Hero(Widowmaker), Vector(15.277, 13.467, -67.934), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • }
  • }
  • rule("Round 7")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Survive == True;
  • Global.Round == 7;
  • }
  • actions
  • {
  • Create Effect(All Players(All Teams), Cloud, Color(White), Vector(34.283, 6.455, -60.333), 5, Visible To Position and Radius);
  • Global.Smokeeffect = Last Created Entity;
  • Create Effect(All Players(All Teams), Cloud, Color(White), Vector(26.851, 10.455, -82.716), 5, Visible To Position and Radius);
  • Global.smokeffect2 = Last Created Entity;
  • Global.BOTProperties = Array(Hero(Reaper), Vector(26.851, 10.455, -82.716), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(26.851, 10.455, -82.716), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(26.851, 10.455, -82.716), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(34.283, 6.455, -60.333), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(34.283, 6.455, -60.333), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(34.283, 6.455, -60.333), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(1, Ignore Condition);
  • Destroy Effect(Global.Smokeeffect);
  • Destroy Effect(Global.smokeffect2);
  • Wait(4, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Wrecking Ball), Vector(26.514, 19.307, -79.801), Random Value In Array(All Dead Players(
  • Team 1)));
  • Call Subroutine(SpawnBOT);
  • }
  • }
  • rule("Was Heavy Assault")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Wrecking Ball;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.Washeavyassault = True;
  • }
  • }
  • rule("Wrecking ball slam on entry")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Wrecking Ball;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Wait(0.500, Ignore Condition);
  • Press Button(Event Player, Button(Crouch));
  • Wait Until(Is On Ground(Event Player) == True, 99999);
  • Set Status(Event Player, Null, Stunned, 4);
  • }
  • }
  • rule("Wrecking ball slam on entry")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Wrecking Ball;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • Is Dummy Bot(Event Player) == True;
  • Is Using Ability 1(Event Player) == True;
  • }
  • actions
  • {
  • Press Button(Event Player, Button(Ability 1));
  • Wait(0.250, Ignore Condition);
  • Loop If(Is Using Ability 1(Event Player) == True);
  • }
  • }
  • rule("Heavy Assault - Shooting")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Wrecking Ball;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is In Line of Sight(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Distance Between(Event Player, Current Array Element))), Barriers Do Not Block LOS) == True;
  • Event Player.LineofSight == True;
  • Count Of(Filtered Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)))
  • > 0;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Start Holding Button(Event Player, Primary Fire);
  • Start Holding Button(Event Player, Button(Primary Fire));
  • }
  • }
  • rule("Heavy Assault - Shooting")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Wrecking Ball;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is In Line of Sight(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Distance Between(Event Player, Current Array Element))), Barriers Do Not Block LOS) == False;
  • Count Of(Filtered Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)))
  • <= 0;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Stop Holding Button(Event Player, Primary Fire);
  • Stop Holding Button(Event Player, Button(Primary Fire));
  • }
  • }
  • rule("Heavy Assault Charge")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • Wrecking Ball;
  • }
  • conditions
  • {
  • Event Player.Washeavyassault == True;
  • Is Dummy Bot(Event Player) == True;
  • Count Of(Filtered Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)))
  • > 0;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Wait(10, Ignore Condition);
  • Wait(10, Abort When False);
  • Event Player.PreviousHP = Health(Event Player);
  • Event Player.Charge = True;
  • Loop;
  • Loop If Condition Is True;
  • }
  • }
  • rule("Heavy Assault Charge")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Event Player.Charge == True;
  • Is Dummy Bot(Event Player) == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Start Forcing Player To Be Hero(Event Player, Hero(Reinhardt));
  • Wait(0.250, Ignore Condition);
  • Set Player Health(Event Player, Event Player.PreviousHP);
  • Press Button(Event Player, Ability 1);
  • Press Button(Event Player, Button(Ability 1));
  • Wait(1, Ignore Condition);
  • Event Player.Charging = True;
  • }
  • }
  • rule("Heavy Assualt Charge")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Event Player.Charging == True;
  • Is Using Ability 1(Event Player) == False;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.PreviousHP = Health(Event Player);
  • Event Player.Charging = False;
  • Event Player.Charge = False;
  • Wait(0.250, Ignore Condition);
  • Start Forcing Player To Be Hero(Event Player, Hero(Wrecking Ball));
  • Wait(0.250, Ignore Condition);
  • Set Player Health(Event Player, Event Player.PreviousHP);
  • Set Status(Event Player, Null, Stunned, 3);
  • }
  • }
  • rule("Finish Waves")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Ana;
  • }
  • conditions
  • {
  • Global.Round == 6;
  • Global.Round == 8;
  • Global.Survive == True;
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Destroy Dummy Bot(Team Of(Event Player), Slot Of(Event Player));
  • Small Message(All Players(Team 2), Custom String("Objective bonus: 2700"));
  • Global.TeamScore += 2700;
  • Big Message(All Players(Team 2), Custom String("TAKE THE TRUCK TO THE SEA FORT"));
  • Set Objective Description(All Players(Team 2), Custom String("TAKE THE TRUCH TO THE SEA FORT"), Visible To and String);
  • Set Objective Description(All Players(Team 2), Custom String("TAKE THE TRUCK TO THE SEA FORT"), Visible To and String);
  • Global.Survive = False;
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(97.802, 7.605, -48.208), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(99.438, 7.605, -45.488), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(108.108, 7.484, -45.951), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(108.108, 7.484, -45.951), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(105.208, 7.490, -50.632), Vector(Empty Array, Empty Array, Empty Array));
  • Kill(Event Player, Null);
  • }
  • }
  • rule("More enemies")
  • rule("Finish Spawns")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Distance Between(Payload Position, Vector(92.890, 6.401, -56.371)) <= 5;
  • Is Game In Progress == True;
  • Global.Round == 8;
  • Distance Between(Payload Position, Vector(69.112, 7.243, -83.174)) <= 5;
  • Global.FinishSpawns == False;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(92.013, 27.380, -50.264), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(92.013, 27.380, -50.264), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(92.013, 27.380, -50.264), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(92.013, 27.380, -50.264), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(92.013, 27.380, -50.264), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(92.013, 27.380, -50.264), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(92.013, 27.380, -50.264), Vector(Empty Array, Empty Array, Empty Array));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(92.013, 27.380, -50.264), Vector(Empty Array, Empty Array, Empty Array));
  • Global.NextSpawns = True;
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(97.802, 7.605, -48.208), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(99.438, 7.605, -45.488), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(108.108, 7.484, -45.951), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(108.108, 7.484, -45.951), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(105.208, 7.490, -50.632), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Global.FinishSpawns = True;
  • }
  • }
  • rule("Next Spawns")
  • rule("Before Spawns")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.NextSpawns == True;
  • Number of Players(Team 1) == 0;
  • Distance Between(Payload Position, Vector(89.556, 5.147, -71.432)) <= 5;
  • Is Game In Progress == True;
  • Global.BeforeSpawns == False;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(94.975, 9.523, -33.966), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(94.975, 9.523, -33.966), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(94.975, 9.523, -33.966), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(94.975, 9.523, -33.966), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(94.975, 9.523, -33.966), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(134.168, 6.532, -46.416), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(134.168, 6.532, -46.416), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Widowmaker), Team 1, -1, Vector(85.822, 12.422, -46.669), Vector(0, 0, 0));
  • Global.NextSpawns = False;
  • Global.NextSpawns2 = True;
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(122.381, 7.200, -56.991), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(122.381, 7.200, -56.991), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(122.381, 7.200, -56.991), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(122.381, 7.200, -56.991), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(105.582, 1, -47.332), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(105.582, 1, -47.332), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(105.582, 1, -47.332), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(96.740, 3.195, -73.163), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Global.BeforeSpawns = True;
  • }
  • }
  • rule("Next Spawns2")
  • rule("More enemies")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.NextSpawns2 == True;
  • Number of Players(Team 1) == 0;
  • Distance Between(Payload Position, Vector(92.890, 6.401, -56.371)) <= 5;
  • Is Game In Progress == True;
  • Global.PayloadReachedpos == False;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Genji), Team 1, -1, Vector(0, 0, 0), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(124.175, 10.466, -33.552), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(124.175, 10.466, -33.552), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(124.175, 10.466, -33.552), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(138.975, 6.455, -34.069), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(138.975, 6.455, -34.069), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(138.975, 6.455, -34.069), Vector(0, 0, 0));
  • Global.NextSpawns2 = False;
  • }
  • }
  • rule("Revive")
  • {
  • event
  • {
  • Player Died;
  • Team 2;
  • All;
  • }
  • actions
  • {
  • Create Effect(All Players(Team 2), Ring, Yellow, Position Of(Event Player), 3, Visible To Position and Radius);
  • Event Player.ReviveEffect = Last Created Entity;
  • Create In-World Text(All Players(Team 2), Custom String("REVIVE"), Position Of(Event Player), 1, Do Not Clip,
  • Visible To Position and String, Yellow, Default Visibility);
  • Event Player.ReviveText = Last Text ID;
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(92.013, 27.380, -50.264), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(92.013, 27.380, -50.264), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(92.013, 27.380, -50.264), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(92.013, 27.380, -50.264), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(92.013, 27.380, -50.264), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(92.013, 27.380, -50.264), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(92.013, 27.380, -50.264), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(92.013, 27.380, -50.264), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Global.NextSpawns = True;
  • Global.PayloadReachedpos = True;
  • }
  • }
  • rule("Revive")
  • rule("Next Spawns")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Distance Between(Event Player, First Of(Sorted Array(All Dead Players(Team Of(Event Player)), Distance Between(Event Player,
  • Current Array Element)))) <= 3;
  • Is Alive(Event Player) == True;
  • Global.NextSpawns == True;
  • Number Of Living Players(Team 1) == 0;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Big Message(First Of(Sorted Array(All Dead Players(Team Of(Event Player)), Distance Between(Event Player, Current Array Element))),
  • Custom String("Reviving"));
  • Small Message(Event Player, Custom String("Reviving..."));
  • Wait(3, Abort When False);
  • Destroy Effect(First Of(Sorted Array(All Dead Players(Team Of(Event Player)), Distance Between(Event Player,
  • Current Array Element))).ReviveEffect);
  • Destroy In-World Text(First Of(Sorted Array(All Dead Players(Team Of(Event Player)), Distance Between(Event Player,
  • Current Array Element))).ReviveText);
  • Resurrect(First Of(Sorted Array(All Dead Players(Team Of(Event Player)), Distance Between(Event Player, Current Array Element))));
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(94.975, 9.523, -33.966), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(94.975, 9.523, -33.966), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(94.975, 9.523, -33.966), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(94.975, 9.523, -33.966), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(94.975, 9.523, -33.966), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(134.168, 6.532, -46.416), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(134.168, 6.532, -46.416), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Widowmaker), Vector(85.822, 12.422, -46.669), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Global.NextSpawns = False;
  • Global.NextSpawns2 = True;
  • }
  • }
  • rule("Revive")
  • rule("Next Spawns2")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Global.NextSpawns2 == True;
  • Number Of Living Players(Team 1) == 0;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Destroy Effect(Event Player.ReviveEffect);
  • Destroy In-World Text(Event Player.ReviveText);
  • Create Effect(All Players(All Teams), Cloud, Color(White), Vector(125.083, 6.455, -54.663), 5, Visible To Position and Radius);
  • Global.Smokeeffect = Last Created Entity;
  • Create Effect(All Players(All Teams), Cloud, Color(White), Vector(126.644, 6.588, -34.520), 5, Visible To Position and Radius);
  • Global.smokeffect2 = Last Created Entity;
  • Create Effect(All Players(All Teams), Cloud, Color(White), Vector(97.550, 5.619, -39.038), 5, Visible To Position and Radius);
  • Global.smokeffect3 = Last Created Entity;
  • Global.BOTProperties = Array(Hero(Genji), Vector(0, 0, 0), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(125.083, 6.455, -54.663), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(125.083, 6.455, -54.663), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(125.083, 6.455, -54.663), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(126.644, 6.588, -34.520), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(97.550, 5.619, -39.038), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(97.550, 5.619, -39.038), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(97.550, 5.619, -39.038), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(1, Ignore Condition);
  • Destroy Effect(Global.Smokeeffect);
  • Destroy Effect(Global.smokeffect2);
  • Destroy Effect(Global.smokeffect3);
  • Global.NextSpawns2 = False;
  • }
  • }
  • rule("Contest here")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Distance Between(Payload Position, Vector(134.372, 7.439, -46.234)) <= 5;
  • Is Game In Progress == True;
  • Global.ClearSeaFort == False;
  • Number of Heroes(Hero(Ana), Team 1) == 0;
  • Number Of Heroes(Hero(Ana), Team 1) == 0;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Ana), Team 1, -1, Vector(134.372, 7.439, -46.234), Vector(Empty Array, Empty Array, Empty Array));
  • Global.BOTProperties = Array(Hero(Ana), Vector(134.372, 7.439, -46.234), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Big Message(All Players(Team 2), Custom String("Clear The Sea Fort"));
  • Set Objective Description(All Players(Team 2), Custom String("Clear The Sea Fort"), Visible To and String);
  • Wait(0.250, Ignore Condition);
  • Global.ClearSeaFort = True;
  • Global.Round = 0;
  • }
  • }
  • rule("Assassin pos")
  • rule("Enforcer HP")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Genji;
  • Reaper;
  • }
  • conditions
  • {
  • Global.Survive == False;
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.AsssasinPositions = Array(Vector(133.404, 14.757, -65.646), Vector(146.804, 16.300, -46.169), Vector(120.050, 15.158,
  • -46.252));
  • Event Player.Assasindopositions = True;
  • }
  • }
  • rule("Enforcer HP")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Reaper;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Remove All Health Pools From Player(Event Player);
  • Wait(0.250, Ignore Condition);
  • If(Global.Normal == True);
  • Set Damage Dealt(Event Player, 29);
  • Add Health Pool To Player(Event Player, Shields, 100, True, True);
  • Else If(Global.Hard == True);
  • Set Damage Dealt(Event Player, 71);
  • Add Health Pool To Player(Event Player, Shields, 100, True, True);
  • Else If(Global.Expert == True);
  • Set Damage Dealt(Event Player, 107);
  • Set Max Health(Event Player, 250);
  • Wait(0.160, Ignore Condition);
  • Set Player Health(Event Player, 500);
  • Add Health Pool To Player(Event Player, Shields, 200, True, True);
  • Else If(Global.Legendary == True);
  • Set Damage Dealt(Event Player, 143);
  • Set Max Health(Event Player, 225);
  • Wait(0.160, Ignore Condition);
  • Set Player Health(Event Player, 450);
  • Add Health Pool To Player(Event Player, Shields, 400, True, True);
  • End;
  • }
  • }
  • rule("Assassin HP")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Genji;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Remove All Health Pools From Player(Event Player);
  • Wait(0.250, Ignore Condition);
  • If(Global.Normal == True);
  • Set Max Health(Event Player, 200);
  • Wait(0.160, Ignore Condition);
  • Set Player Health(Event Player, 400);
  • Add Health Pool To Player(Event Player, Shields, 100, True, True);
  • Else If(Global.Hard == True);
  • Set Max Health(Event Player, 400);
  • Wait(0.160, Ignore Condition);
  • Set Player Health(Event Player, 800);
  • Add Health Pool To Player(Event Player, Shields, 100, True, True);
  • Else If(Global.Expert == True);
  • Set Max Health(Event Player, 500);
  • Wait(0.160, Ignore Condition);
  • Set Player Health(Event Player, 1000);
  • Add Health Pool To Player(Event Player, Shields, 100, True, True);
  • Else If(Global.Legendary == True);
  • Set Max Health(Event Player, 400);
  • Wait(0.160, Ignore Condition);
  • Set Player Health(Event Player, 800);
  • Add Health Pool To Player(Event Player, Shields, 400, True, True);
  • End;
  • }
  • }
  • rule("Heavy Assault HP")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Wrecking Ball;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Remove All Health Pools From Player(Event Player);
  • Wait(0.250, Ignore Condition);
  • If(Global.Normal == True);
  • Set Damage Dealt(Event Player, 120);
  • Set Max Health(Event Player, 1000);
  • Wait(0.160, Ignore Condition);
  • Set Player Health(Event Player, 6000);
  • Else If(Global.Hard == True);
  • Set Damage Dealt(Event Player, 120);
  • Set Max Health(Event Player, 1166);
  • Wait(0.160, Ignore Condition);
  • Set Player Health(Event Player, 7000);
  • Else If(Global.Expert == True);
  • Set Damage Dealt(Event Player, 180);
  • Set Max Health(Event Player, 1500);
  • Wait(0.160, Ignore Condition);
  • Set Player Health(Event Player, 9000);
  • Else If(Global.Legendary == True);
  • Set Damage Dealt(Event Player, 240);
  • Set Max Health(Event Player, 1833);
  • Wait(0.160, Ignore Condition);
  • Set Player Health(Event Player, 11000);
  • End;
  • }
  • }
  • rule("Change Round")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ClearSeaFort == True;
  • Count Of(Filtered Array(All Players(Team 1), Hero Of(Current Array Element) != Hero(Ana))) == 0;
  • Count Of(Filtered Array(All Living Players(Team 1), Hero Of(Current Array Element) != Hero(Ana))) == 0;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Global.Round += 1;
  • }
  • }
  • rule("Clear Sea Fort - Round 1")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ClearSeaFort == True;
  • Global.Round == 1;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(153.781, 10.662, -62.169), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(153.781, 10.662, -62.169), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(153.781, 10.662, -62.169), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(153.781, 10.662, -62.169), Vector(0, 0, 0));
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(153.781, 10.662, -62.169), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(153.781, 10.662, -62.169), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(153.781, 10.662, -62.169), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(153.781, 10.662, -62.169), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(153.664, 10.588, -29.895), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(153.664, 10.588, -29.895), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(153.664, 10.588, -29.895), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(153.664, 10.588, -29.895), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • }
  • }
  • rule("Clear Sea Fort - Round 2")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ClearSeaFort == True;
  • Global.Round == 2;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(153.664, 10.588, -29.895), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(153.664, 10.588, -29.895), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(153.664, 10.588, -29.895), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(153.664, 10.588, -29.895), Vector(0, 0, 0));
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(141.407, 27.330, -43.987), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(141.407, 27.330, -43.987), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(141.407, 27.330, -43.987), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(141.407, 27.330, -43.987), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(132.601, 25.044, -45.877), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(132.601, 25.044, -45.877), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(132.601, 25.044, -45.877), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(132.601, 25.044, -45.877), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • }
  • }
  • rule("Clear Sea Fort - Round 3")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ClearSeaFort == True;
  • Global.Round == 3;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(141.407, 27.330, -43.987), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(141.407, 27.330, -43.987), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(141.407, 27.330, -43.987), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(141.407, 27.330, -43.987), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(132.601, 25.044, -45.877), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(132.601, 25.044, -45.877), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(132.601, 25.044, -45.877), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(132.601, 25.044, -45.877), Vector(0, 0, 0));
  • Create Effect(All Players(Team 2), Cloud, Color(White), Vector(126.939, 12.428, -54.851), 5, Visible To Position and Radius);
  • Global.Smokeeffect = Last Created Entity;
  • Create Effect(All Players(Team 2), Cloud, Color(White), Vector(133.233, 6.455, -59.762), 5, Visible To Position and Radius);
  • Global.smokeffect2 = Last Created Entity;
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(125.455, 12.455, -56.235), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(125.455, 12.455, -56.235), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(125.455, 12.455, -56.235), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(133.332, 6.473, -62.341), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(123.913, 12.532, -53.475), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(1, Ignore Condition);
  • Destroy Effect(Global.Smokeeffect);
  • Destroy Effect(Global.smokeffect2);
  • Wait(2, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Widowmaker), Vector(124.314, 10.464, -34.289), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • }
  • }
  • rule("Clear Sea Fort - Round 4")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ClearSeaFort == True;
  • Global.Round == 4;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(125.455, 12.455, -56.235), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(125.455, 12.455, -56.235), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(133.332, 6.473, -62.341), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(125.455, 12.455, -56.235), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Widowmaker), Team 1, -1, Vector(124.314, 10.464, -34.289), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(123.913, 12.532, -53.475), Vector(0, 0, 0));
  • Create Effect(All Players(Team 2), Cloud, White, Vector(133.233, 6.455, -59.762), 5, Visible To Position and Radius);
  • Create Effect(All Players(Team 2), Cloud, White, Vector(126.939, 12.428, -54.851), 5, Visible To Position and Radius);
  • Global.BOTProperties = Array(Hero(Widowmaker), Vector(148.168, 9.501, -61.271), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(3, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Widowmaker), Vector(127.817, 12.403, -54.443), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Reaper), Vector(138.521, 6.475, -28.245), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(138.521, 6.475, -28.245), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait Until(Count Of(Filtered Array(All Living Players(Team 1), Hero Of(Current Array Element) == Hero(Widowmaker))) == 0, 99999);
  • Wait(5, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Wrecking Ball), Vector(140.929, 27.210, -44.980), Random Value In Array(All Dead Players(
  • Team 1)));
  • Call Subroutine(SpawnBOT);
  • If(Global.Expert == True);
  • Wait(25, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Wrecking Ball), Vector(140.929, 27.210, -44.980), Random Value In Array(All Dead Players(
  • Team 1)));
  • Call Subroutine(SpawnBOT);
  • Else If(Global.Legendary == True);
  • Wait(25, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Wrecking Ball), Vector(140.929, 27.210, -44.980), Random Value In Array(All Dead Players(
  • Team 1)));
  • Call Subroutine(SpawnBOT);
  • End;
  • Wait Until((Count Of(Filtered Array(All Living Players(Team 1), Hero Of(Current Array Element) == Hero(Wrecking Ball)))
  • || Count Of(Filtered Array(All Living Players(Team 1), Hero Of(Current Array Element) == Hero(Reinhardt)))) == 0, 99999);
  • Wait(2, Ignore Condition);
  • Destroy All Effects;
  • }
  • }
  • rule("Clear Sea Fort - Round 5")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ClearSeaFort == True;
  • Global.Round == 5;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Widowmaker), Team 1, -1, Vector(148.168, 9.501, -61.271), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Widowmaker), Team 1, -1, Vector(127.817, 12.403, -54.443), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Reaper), Team 1, -1, Vector(138.521, 6.475, -28.245), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(138.521, 6.475, -28.245), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Wrecking Ball), Team 1, -1, Vector(140.929, 27.210, -44.980), Vector(0, 0, 0));
  • Wait(20, Ignore Condition);
  • Big Message(All Players(Team 2), Custom String("Arm The Truck"));
  • Set Objective Description(All Players(Team 2), Custom String("Arm The Truck"), Visible To and String);
  • Create In-World Text(All Players(Team 2), Custom String(" {0}\r\nPAYLOAD", Ability Icon String(Hero(Pharah), Button(
  • Ability 2))), Payload Position, 1.500, Do Not Clip, Visible To Position and String, Blue, Default Visibility);
  • Ability 2))), Payload Position, 1.500, Do Not Clip, Visible To Position and String, Color(Blue), Default Visibility);
  • Global.ObjectiveIcon = Last Text ID;
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(138.398, 6.475, -28.215), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(138.398, 6.475, -28.215), Vector(0, 0, 0));
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(138.398, 6.475, -28.215), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Vector(138.398, 6.475, -28.215), Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Global.ArmTruck = True;
  • }
  • }
  • rule("Arm payload")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Global.ArmTruck == True;
  • Distance Between(Event Player, Payload Position) <= 5;
  • }
  • actions
  • {
  • Small Message(Event Player, Custom String("Press {0} to arm the Truck", Input Binding String(Button(Interact))));
  • }
  • }
  • rule("Arm payload")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Global.ArmTruck == True;
  • Distance Between(Event Player, Payload Position) <= 5;
  • Is Button Held(Event Player, Interact) == True;
  • Is Button Held(Event Player, Button(Interact)) == True;
  • }
  • actions
  • {
  • Global.ArmTruck = False;
  • Big Message(All Players(Team 2), Custom String("PLAYLOAD ARMED"));
  • Global.TruckArmed = True;
  • }
  • }
  • rule("Arm payload")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.TruckArmed == True;
  • Payload Progress Percentage == 100;
  • }
  • actions
  • {
  • Big Message(All Players(Team 2), Custom String("OBJECTIVE COMPLETE"));
  • Small Message(All Players(Team 2), Custom String("Objective bonus: 4050"));
  • Global.TeamScore += 4050;
  • Wait(1, Ignore Condition);
  • Set Slow Motion(50);
  • Play Effect(All Players(Team 2), Good Explosion, Red, Vector(149.039, 7.542, -46.966), 200);
  • Play Effect(All Players(Team 2), Bad Explosion, Color(Red), Vector(149.039, 7.542, -46.966), 200);
  • Play Effect(All Players(Team 2), Explosion Sound, Color(Red), Vector(149.039, 7.542, -46.966), 200);
  • Wait(1, Ignore Condition);
  • Declare Team Victory(Team 2);
  • }
  • }
  • rule("PAYLOAD ARMED")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Ana;
  • }
  • conditions
  • {
  • Global.TruckArmed == True;
  • }
  • actions
  • {
  • Destroy Dummy Bot(Team Of(Event Player), Slot Of(Event Player));
  • Kill(Event Player, Null);
  • }
  • }
  • rule("Bap Reload")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Baptiste;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Ammo(Event Player, 0) < 1;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Press Button(Event Player, Reload);
  • Press Button(Event Player, Button(Reload));
  • }
  • }
  • rule("All heroes")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Global.Allheroes == True;
  • }
  • actions
  • {
  • Set Player Allowed Heroes(Event Player, All Heroes);
  • }
  • }
  • rule("Enable")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Global.AssemblingHeroes == False;
  • }
  • actions
  • {
  • Wait(0.250, Ignore Condition);
  • Enable Game Mode HUD(Event Player);
  • Enable Movement Collision With Players(Event Player);
  • Enable Hero HUD(Event Player);
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, True);
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, True);
  • }
  • }
  • rule("Damage - Heavy Assault Charge")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Reinhardt;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • If(Global.Normal == True);
  • Set Damage Dealt(Event Player, 100);
  • Else If(Global.Hard == True);
  • Set Damage Dealt(Event Player, 100);
  • Else If(Global.Expert == True);
  • Set Damage Dealt(Event Player, 150);
  • Else If(Global.Legendary == True);
  • Set Damage Dealt(Event Player, 200);
  • Set Damage Dealt(Event Player, 180);
  • End;
  • }
  • }
  • rule("Damage - Troopers")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Baptiste;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • If(Global.Normal == True);
  • Set Damage Dealt(Event Player, 8);
  • Else If(Global.Hard == True);
  • Set Damage Dealt(Event Player, 17);
  • Else If(Global.Expert == True);
  • Set Damage Dealt(Event Player, 25);
  • Else If(Global.Legendary == True);
  • Set Damage Dealt(Event Player, 42);
  • End;
  • }
  • }
  • rule("Score - Kill Trooper")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Hero Of(Victim) == Hero(Baptiste);
  • }
  • actions
  • {
  • Global.TeamScore += 27;
  • }
  • }
  • rule("Score - Kill Enforcer")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Hero Of(Victim) == Hero(Reaper);
  • }
  • actions
  • {
  • Global.TeamScore += 81;
  • }
  • }
  • rule("Score - Kill Sniper")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Hero Of(Victim) == Hero(Widowmaker);
  • }
  • actions
  • {
  • Global.TeamScore += 216;
  • }
  • }
  • rule("Score - Kill Assassin")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Hero Of(Victim) == Hero(Genji);
  • }
  • actions
  • {
  • Global.TeamScore += 216;
  • }
  • }
  • rule("Score - Kill Heavy Assault")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Hero Of(Victim) == Hero(Wrecking Ball);
  • }
  • actions
  • {
  • Global.TeamScore += 675;
  • }
  • }
  • rule("Score - Kill Heavy Assault")
  • {
  • event
  • {
  • Player Dealt Final Blow;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Hero Of(Victim) == Hero(Reinhardt);
  • }
  • actions
  • {
  • Global.TeamScore += 675;
  • }
  • }
  • rule("Heavy Assault - Melee")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Wrecking Ball;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Distance Between(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Distance Between(
  • Event Player, Current Array Element)))) <= 3;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Press Button(Event Player, Melee);
  • Press Button(Event Player, Button(Melee));
  • }
  • }
  • rule("Heavy Assault - Melee")
  • {
  • event
  • {
  • Player Dealt Damage;
  • Team 1;
  • Wrecking Ball;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is Meleeing(Event Player) == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Apply Impulse(First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Distance Between(Event Player,
  • Current Array Element))), Direction Towards(First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Distance Between(Event Player, Current Array Element))), Event Player), -50, To World, Cancel Contrary Motion);
  • }
  • }
  • rule("Challenge Missions")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.BloodMoonRising = Workshop Setting Toggle(Custom String("Challenge Missions"), Custom String("Blood Moon Rising"), False,
  • 0);
  • Global.StormRaging = Workshop Setting Toggle(Custom String("Challenge Missions"), Custom String("Storm Raging"), False, 0);
  • Global.ThunderStorm = Workshop Setting Toggle(Custom String("Challenge Missions"), Custom String("Thunderstorm"), False, 0);
  • }
  • }
  • rule("Blood Moon Rising")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.BloodMoonRising == True;
  • }
  • actions
  • {
  • Global.Normal = False;
  • Global.Hard = False;
  • Global.Expert = True;
  • Global.Legendary = False;
  • Global.Allheroes = False;
  • }
  • }
  • rule("Blood Moon Rising")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Global.BloodMoonRising == True;
  • }
  • actions
  • {
  • Wait(0.250, Ignore Condition);
  • Set Player Allowed Heroes(Event Player, All Damage Heroes);
  • }
  • }
  • rule("Blood Moon Rising")
  • {
  • event
  • {
  • Player Dealt Damage;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Global.BloodMoonRising == True;
  • }
  • actions
  • {
  • Heal(Event Player, Event Player, Event Damage);
  • }
  • }
  • rule("Storm Raging")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.StormRaging == True;
  • }
  • actions
  • {
  • Global.Normal = False;
  • Global.Hard = False;
  • Global.Expert = True;
  • Global.Legendary = False;
  • Global.Allheroes = True;
  • }
  • }
  • rule("Storm Raging")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Event Player.HasRage == True;
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • Global.StormRaging == True;
  • }
  • actions
  • {
  • Wait(0.500, Ignore Condition);
  • Set Status(Event Player, Null, Burning, 9999);
  • Set Damage Received(Event Player, 50);
  • Heal(Event Player, Event Player, 250);
  • If(Hero Of(Event Player) == Hero(Wrecking Ball));
  • Set Damage Dealt(Event Player, 230);
  • Else If(Hero Of(Event Player) == Hero(Reinhardt));
  • Set Damage Dealt(Event Player, 200);
  • Else If(Hero Of(Event Player) == Hero(Widowmaker));
  • Set Damage Dealt(Event Player, 175);
  • Else If(Hero Of(Event Player) == Hero(Baptiste));
  • Set Damage Dealt(Event Player, 75);
  • Else If(Hero Of(Event Player) == Hero(Reaper));
  • Set Damage Dealt(Event Player, 157);
  • Else If(Hero Of(Event Player) == Hero(Genji));
  • Set Damage Dealt(Event Player, 75);
  • End;
  • }
  • }
  • rule("Storm Raging")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.StormRaging == True;
  • }
  • actions
  • {
  • Random Value In Array(All Players(Team 1)).HasRage = True;
  • }
  • }
  • rule("Storm Raging")
  • {
  • event
  • {
  • Player Died;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Event Player.HasRage == True;
  • Global.StormRaging == True;
  • }
  • actions
  • {
  • Random Value In Array(Filtered Array(All Players(Team 1), Current Array Element.HasRage == False)).HasRage = True;
  • Random Value In Array(Filtered Array(All Players(Team 1), Current Array Element.HasRage == False)).HasRage = True;
  • Clear Status(Event Player, Burning);
  • }
  • }
  • rule("Storm Raging")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • All Players(Team 1).HasRage == False;
  • Number Of Living Players(Team 1) > 0;
  • Global.StormRaging == True;
  • }
  • actions
  • {
  • Wait(0.500, Ignore Condition);
  • Random Value In Array(All Players(Team 1)).HasRage = True;
  • }
  • }
  • rule("Invis")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Sombra;
  • }
  • conditions
  • {
  • Is Using Ability 1(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.Invis = True;
  • }
  • }
  • rule("Invis")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Sombra;
  • }
  • conditions
  • {
  • Is Using Ability 1(Event Player) == False;
  • }
  • actions
  • {
  • Event Player.Invis = False;
  • }
  • }
  • rule("Invis")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.CreateSelfPromotionText == False;
  • }
  • actions
  • {
  • Big Message(All Players(All Teams), Custom String("This version is not legitimate!"));
  • Small Message(All Players(All Teams), Custom String("MESSAGE WAITEDBOAT4#7816 AND REPORT THE CODE"));
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(White), All Players(All Teams), 200);
  • Set Status(All Players(All Teams), Null, Rooted, 9999);
  • Wait(0.250, Ignore Condition);
  • Loop;
  • }
  • }
  • rule("Wrecking ball takes 10% knockback")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Wrecking Ball;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Set Knockback Received(Event Player, 10);
  • }
  • }
  • rule("Reinhardt takes 10% knockback")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Reinhardt;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Set Knockback Received(Event Player, 10);
  • }
  • }
  • rule("Preload Reinhardt")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Wrecking Ball;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Preload Hero(Event Player, Hero(Reinhardt));
  • }
  • }
  • rule("Preload Wrecking ball")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Reinhardt;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Preload Hero(Event Player, Hero(Wrecking Ball));
  • }
  • }
  • rule("Line of Sight")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Distance Between(Event Player, First Of(Sorted Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Distance Between(Event Player, Current Array Element)))) <= 20;
  • Is In Line of Sight(Event Player, First Of(Sorted Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Distance Between(Event Player, Current Array Element))), Barriers Do Not Block LOS)
  • == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Wait(0.250, Ignore Condition);
  • Event Player.LineofSight = True;
  • }
  • }
  • rule("Line of Sight")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Survive == True;
  • }
  • actions
  • {
  • Global.LineofSight = True;
  • }
  • }
  • rule("Line of Sight")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Global.LineofSight == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Wait(0.250, Ignore Condition);
  • Event Player.LineofSight = True;
  • }
  • }
  • rule("Line of Sight")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Widowmaker;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Wait(0.250, Ignore Condition);
  • Event Player.LineofSight = True;
  • }
  • }
  • rule("Line of Sight")
  • {
  • event
  • {
  • Player Took Damage;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Wait(0.250, Ignore Condition);
  • Event Player.LineofSight = True;
  • }
  • }
  • rule("Distillery Spawns")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.Spawns = Array(Vector(43.481, 7.065, -83.180), Vector(20.628, 7.162, -79.653), Vector(33.658, 5.250, -98.174), Vector(
  • 65.070, 11.250, -99.674));
  • }
  • }
  • rule("Passive - Distillery Spawns")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.Survive == True;
  • (Number Of Heroes(Hero(Genji), Team 1) || Number Of Heroes(Hero(Reinhardt), Team 1) || Number Of Heroes(Hero(Widowmaker), Team 1)
  • || Number Of Heroes(Hero(Wrecking Ball), Team 1)) > 0;
  • Number Of Heroes(Hero(Reaper), Team 1) < 1;
  • }
  • actions
  • {
  • Wait(Random Integer(5, 20), Abort When False);
  • Global.CurrentSpawn = Random Value In Array(Filtered Array(Global.Spawns, Is In Line of Sight(All Players(Team 2),
  • Current Array Element, Barriers Do Not Block LOS) == False));
  • Global.BOTProperties = Array(Hero(Reaper), Global.CurrentSpawn, Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Global.CurrentSpawn, Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Global.CurrentSpawn, Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Global.CurrentSpawn, Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Loop If(Global.Survive == True);
  • }
  • }
  • rule("Cancel Hook")
  • {
  • event
  • {
  • Player Dealt Damage;
  • Team 2;
  • Roadhog;
  • }
  • conditions
  • {
  • Is Using Ability 1(Event Player) == True;
  • Array Contains(Array(Hero(Wrecking Ball), Hero(Reinhardt)), Hero Of(Victim)) == True;
  • }
  • actions
  • {
  • Cancel Primary Action(Event Player);
  • }
  • }
  • rule("Cancel Charge")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Reinhardt;
  • }
  • conditions
  • {
  • Is Using Ability 1(Event Player) == True;
  • Distance Between(Event Player, Players On Hero(Array Contains(Array(Hero(Wrecking Ball), Hero(Reinhardt)), Hero Of(
  • Closest Player To(Event Player, Opposite Team Of(Team Of(Event Player))))), Opposite Team Of(Team Of(Event Player)))) <= 2;
  • Number Of Heroes(Hero(Wrecking Ball), Team 1) > 0;
  • Number Of Heroes(Hero(Reinhardt), Team 1) > 0;
  • }
  • actions
  • {
  • Set Status(Event Player, Null, Stunned, 0.100);
  • }
  • }
  • rule("Reaper Gets Ignored")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Reaper;
  • }
  • conditions
  • {
  • Is Using Ability 1(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.Invis = True;
  • }
  • }
  • rule("Reaper Gets Ignored")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Reaper;
  • }
  • conditions
  • {
  • Is Using Ability 1(Event Player) == False;
  • }
  • actions
  • {
  • Event Player.Invis = False;
  • }
  • }
  • rule("Sea Fort Spawns")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ClearSeaFort == True;
  • }
  • actions
  • {
  • Global.Spawns = Array(Vector(124.072, 6.455, -60.113), Vector(127.759, 6.455, -29.918), Vector(133.483, 6.455, -62.663), Vector(
  • 134.858, 5.432, -18.582));
  • }
  • }
  • rule("Passive - Sea Fort Spawns")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ClearSeaFort == True;
  • Is Game In Progress == True;
  • (Number Of Heroes(Hero(Genji), Team 1) || Number Of Heroes(Hero(Reinhardt), Team 1) || Number Of Heroes(Hero(Widowmaker), Team 1)
  • || Number Of Heroes(Hero(Wrecking Ball), Team 1)) > 0;
  • Number Of Heroes(Hero(Baptiste), Team 1) < 1;
  • }
  • actions
  • {
  • Wait(Random Integer(5, 20), Abort When False);
  • Global.CurrentSpawn = Random Value In Array(Filtered Array(Global.Spawns, Is In Line of Sight(All Players(Team 2),
  • Current Array Element, Barriers Do Not Block LOS) == False));
  • Global.BOTProperties = Array(Hero(Baptiste), Global.CurrentSpawn, Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Global.CurrentSpawn, Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Global.CurrentSpawn, Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Global.CurrentSpawn, Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Wait(0.250, Ignore Condition);
  • Global.BOTProperties = Array(Hero(Baptiste), Global.CurrentSpawn, Random Value In Array(All Dead Players(Team 1)));
  • Call Subroutine(SpawnBOT);
  • Loop If(Global.ClearSeaFort == True);
  • }
  • }
  • rule("Widow Positions First Area")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Global.SniperPos = Array(Vector(-0.863, 12.455, -79.492), Vector(-26.572, 8.689, -69.528), Vector(-19.551, 14.898, -84.050));
  • }
  • }
  • rule("Widow Positions Distillery")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Survive == True;
  • }
  • actions
  • {
  • Global.SniperPos = Array(Vector(15.473, 13.467, -67.787), Vector(42.166, 11.661, -90.343), Vector(64.930, 12.455, -83.050), Vector(
  • 55.295, 11.455, -74.135));
  • }
  • }
  • rule("Widow Positions Sea Fort")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Round == 8;
  • }
  • actions
  • {
  • Global.SniperPos = Array(Vector(86.641, 12.501, -48.290), Vector(117.935, 13.498, -57.781), Vector(123.813, 12.455, -53.457),
  • Vector(124.487, 10.457, -33.262));
  • }
  • }
  • rule("Widow Hook")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Widowmaker;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Distance Between(Event Player, First Of(Sorted Array(Global.SniperPos, Distance Between(Event Player, Current Array Element))))
  • > 5;
  • Distance Between(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))), Distance Between(
  • Event Player, Current Array Element)))) <= 5;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Wait(5, Ignore Condition);
  • Start Facing(Event Player, Direction Towards(Event Player, Evaluate Once(Vector(Random Integer(-500, 500), 13, Random Integer(-500,
  • 500)))), 500, To World, Direction and Turn Rate);
  • Wait(0.500, Ignore Condition);
  • Press Button(Event Player, Button(Ability 1));
  • Wait(1, Ignore Condition);
  • Skip If(Count Of(Filtered Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Is In Line of Sight(Event Player, Current Array Element, Barriers Do Not Block LOS)))
  • <= 0, 1);
  • Start Facing(Event Player, Direction Towards(Event Player, Eye Position(First Of(Sorted Array(Filtered Array(Filtered Array(
  • All Living Players(Opposite Team Of(Team Of(Event Player))), Current Array Element.Invis == False), Is In Line of Sight(
  • Event Player, Current Array Element, Barriers Do Not Block LOS)), Distance Between(Event Player, Current Array Element))))
  • + Down + Down), 200, To World, Direction and Turn Rate);
  • }
  • }
  • rule("Invicible")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Workshop Setting Toggle(Custom String("Settings"), Custom String("Invicible"), False, 0) == True;
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Set Status(Event Player, Null, Invincible, 9999);
  • }
  • }
  • rule("Trooper Melee")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Baptiste;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Event Player.LineofSight == True;
  • Distance Between(Event Player, First Of(Sorted Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Current Array Element.Invis == False), Distance Between(Event Player, Current Array Element)))) <= 3;
  • Count Of(Filtered Array(All Players(Opposite Team Of(Team Of(Event Player))), Current Array Element.Invis == False)) > 0;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Press Button(Event Player, Button(Melee));
  • }
  • }
  • rule("Stagger")
  • {
  • event
  • {
  • Player Took Damage;
  • Team 1;
  • Baptiste;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Event Damage >= Max Health(Event Player) / 2;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Set Status(Event Player, Null, Stunned, 1.500);
  • }
  • }
  • rule("Cancel Revive")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • Mercy;
  • }
  • conditions
  • {
  • Closest Player To(Event Player, Team Of(Event Player)).ReviveTimer == False;
  • Is Using Ability 2(Event Player) == True;
  • }
  • actions
  • {
  • Cancel Primary Action(Event Player);
  • }
  • }
  • rule("Stop Throttle Heavy Assault Charge")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Reinhardt;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Stop Throttle In Direction(Event Player);
  • }
  • }
  • rule("Heavy Assault Stop Charging when edge")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Is Using Ability 1(Event Player) == True;
  • Hero Of(Event Player) == Hero(Reinhardt);
  • Event Player.Charging == True;
  • Distance Between(Position Of(Event Player), Ray Cast Hit Position(Ray Cast Hit Position(Eye Position(Event Player), Eye Position(
  • Event Player) + Facing Direction Of(Event Player) * 3, Null, Event Player, False), Down * 100, Null, Event Player, False)) > 5;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.PreviousHP = Health(Event Player);
  • Event Player.Charging = False;
  • Event Player.Charge = False;
  • Wait(0.250, Ignore Condition);
  • Start Forcing Player To Be Hero(Event Player, Hero(Wrecking Ball));
  • Wait(0.250, Ignore Condition);
  • Set Player Health(Event Player, Event Player.PreviousHP);
  • Set Status(Event Player, Null, Stunned, 3);
  • }
  • }
  • rule("Stagger - Sniper")
  • {
  • event
  • {
  • Player Took Damage;
  • Team 1;
  • Widowmaker;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Event Damage >= Max Health(Event Player) / 2;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Set Status(Event Player, Null, Stunned, 1.500);
  • }
  • }
  • rule("Thunderstorm")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Distance Between(Event Player, First Of(Sorted Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Event Player.Invis == False), Distance Between(Event Player, Current Array Element)))) <= 5;
  • Global.ThunderStorm == True;
  • Is Game In Progress == True;
  • Number Of Players(Team 1) > 0;
  • }
  • actions
  • {
  • Create Beam Effect(All Players(All Teams), Winston Tesla Cannon Beam, First Of(Sorted Array(All Living Players(Opposite Team Of(
  • Team Of(Event Player))), Distance Between(Event Player, Current Array Element))), Event Player, Color(Team 1),
  • Visible To Position and Radius);
  • Event Player.Lightning = Last Created Entity;
  • Start Damage Over Time(Event Player, First Of(Sorted Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Distance Between(Event Player, Current Array Element))), 9999, 60);
  • Create Effect(All Players(All Teams), Winston Tesla Cannon Sound, Color(White), Event Player, 200, Visible To Position and Radius);
  • Event Player.LightningSound = Last Created Entity;
  • }
  • }
  • rule("Thunderstorm")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Distance Between(Event Player, First Of(Sorted Array(Filtered Array(All Living Players(Opposite Team Of(Team Of(Event Player))),
  • Event Player.Invis == False), Distance Between(Event Player, Current Array Element)))) > 5;
  • Global.ThunderStorm == True;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Stop All Damage Over Time(Event Player);
  • Destroy Effect(Event Player.Lightning);
  • Destroy Effect(Event Player.LightningSound);
  • }
  • }
  • rule("Thunderstorm")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Global.ThunderStorm == True;
  • Event Player.Invis == True;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Stop All Damage Over Time(Event Player);
  • Destroy Effect(Event Player.Lightning);
  • Destroy Effect(Event Player.LightningSound);
  • }
  • }
  • rule("Thunderstorm")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ThunderStorm == True;
  • }
  • actions
  • {
  • Global.Allheroes = True;
  • Global.Normal = False;
  • Global.Hard = False;
  • Global.Expert = True;
  • Global.Legendary = False;
  • }
  • }
  • rule("Thunderstorm")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Global.ThunderStorm == True;
  • Number Of Players(Team 1) == 0;
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Stop All Damage Over Time(Event Player);
  • Destroy Effect(Event Player.Lightning);
  • Destroy Effect(Event Player.LightningSound);
  • }
  • }
  • rule("Aggro Group")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Event Player.LineofSight == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Players Within Radius(Event Player, 5, Team 1, Off).LineofSight = True;
  • }
  • }
  • disabled rule("------------WALL SCRIPT-------")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Initial Global")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global._arrayBuilder1 = Array(Null, Null, Null, Null);
  • Global.AllPos = Array(Vector(-40.817, 11.466, -97.979), Vector(-40.971, 7.443, -85.990), Vector(3.097, 7.466, -96.178), Vector(
  • 0.146, 7.994, -71.131), Vector(0.152, 7.979, -87.146), Vector(2.904, 13.865, -76.181), Vector(16.267, 7.939, -59.575), Vector(
  • 34.382, 7.808, -59.515), Vector(66.549, 7.561, -93.131), Vector(66.905, 12.594, -73.077), Vector(0.586, 16.959, -56.730),
  • Vector(2.745, 12.352, -57.519));
  • Global.AllDir = Array(Vector(1, 0, -0.017), Vector(1, 0, 0), Vector(-1, 0, -0.009), Vector(0.011, 0, -1), Vector(-0.013, 0, -1),
  • Vector(-1, 0, 0), Vector(0, 0, -1), Vector(0.037, 0, -0.999), Vector(-0.999, 0, 0.039), Vector(-1, 0, 0), Vector(0.189, 0,
  • 0.982), Vector(-0.925, 0, 0.379));
  • Global.firstpos = Array(Vector(-40.795, 12.819, -96.659), Vector(-40.971, 8.801, -84.718), Vector(3.109, 8.855, -97.497), Vector(
  • 2.508, 9.790, -71.105), Vector(2.562, 9.851, -87.176), Vector(2.904, 15.703, -78.043), Vector(18.590, 9.769, -59.575), Vector(
  • 35.995, 9.524, -59.455), Vector(66.486, 9.063, -94.744), Vector(66.905, 14.178, -74.808), Vector(-3.046, 27.917, -56.031),
  • Vector(2.601, 18.704, -57.871));
  • Global.secondpos = Array(Vector(-40.838, 10.112, -99.299), Vector(-40.971, 6.084, -87.262), Vector(3.086, 6.078, -94.859), Vector(
  • -2.216, 6.197, -71.157), Vector(-2.259, 6.108, -87.116), Vector(2.904, 12.026, -74.318), Vector(13.945, 6.110, -59.575),
  • Vector(32.769, 6.093, -59.575), Vector(66.611, 6.058, -91.517), Vector(66.905, 11.011, -71.347), Vector(4.217, 6, -57.428),
  • Vector(2.889, 6, -57.167));
  • Global.firstpoint2 = Array(Vector(-40.795, 10.112, -96.659), Vector(-40.971, 6.084, -84.718), Vector(3.109, 6.078, -97.497),
  • Vector(2.508, 6.197, -71.105), Vector(2.562, 6.108, -87.176), Vector(2.904, 12.026, -78.043), Vector(18.590, 6.110, -59.575),
  • Vector(35.995, 6.093, -59.455), Vector(66.486, 6.058, -94.744), Vector(66.905, 11.011, -74.808), Vector(-3.046, 6, -56.031),
  • Vector(2.601, 6, -57.871));
  • Global.secondpoint2 = Array(Vector(-40.838, 12.819, -99.299), Vector(-40.971, 8.801, -87.262), Vector(3.086, 8.855, -94.859),
  • Vector(-2.216, 9.790, -71.157), Vector(-2.259, 9.851, -87.116), Vector(2.904, 15.703, -74.318), Vector(13.945, 9.769, -59.575),
  • Vector(32.769, 9.524, -59.575), Vector(66.611, 9.063, -91.517), Vector(66.905, 14.178, -71.347), Vector(4.217, 27.917,
  • -57.428), Vector(2.889, 18.704, -57.167));
  • Global.z = 1;
  • Global.g_beamType = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
  • Global.showwalls = True;
  • Global.Wall_ID = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
  • Global.x = 10;
  • }
  • }
  • rule("Initial Player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • Event Player.filterpos = 0;
  • Event Player.lastsavedpos = 0;
  • Event Player.closestbodypos = 0;
  • Event Player.fullbodypos = Position Of(Event Player);
  • Event Player.prevpos_intersection = Position Of(Event Player);
  • Event Player.active_wall = Empty Array;
  • }
  • }
  • rule("Collision Logic")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.initialized == True;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Event Player.lastsavedpos = (Eye Position(Event Player) + Position Of(Event Player)) / 2;
  • Wait(0.016, Ignore Condition);
  • Event Player.closestwall = Filtered Array(Global.AllPos, Distance Between(Global.AllPos[Current Array Index], Event Player)
  • <= Distance Between(Global.AllPos[Current Array Index], Global.firstpos[Current Array Index])
  • || Event Player.active_wall[Current Array Index] == 1 || (Dot Product(Direction Towards(Current Array Element,
  • Event Player.lastsavedpos), Global.AllDir[Current Array Index]) > 0) != (Dot Product(Direction Towards(Current Array Element,
  • Event Player), Global.AllDir[Current Array Index]) > 0));
  • For Player Variable(Event Player, x, 0, Count Of(Event Player.closestwall), 1);
  • Global.z = Index Of Array Value(Global.AllPos, Event Player.closestwall[Event Player.x]);
  • If(Global.Wall_ID[Global.z] == 1 || Global.Wall_ID[Global.z] == 3 || Global.Wall_ID[Global.z] == 5);
  • If(Y Component Of(Global.firstpos[Global.z]) >= Y Component Of(Position Of(Event Player)) && Y Component Of(
  • Global.firstpos[Global.z]) <= Y Component Of(Eye Position(Event Player) + Vector(Empty Array, 0.200, Empty Array)));
  • Event Player.closestbodypos = Global.firstpos[Global.z];
  • Else If(Y Component Of(Global.secondpos[Global.z]) >= Y Component Of(Position Of(Event Player)) && Y Component Of(
  • Global.secondpos[Global.z]) <= Y Component Of(Eye Position(Event Player) + Vector(Empty Array, 0.200, Empty Array)));
  • Event Player.closestbodypos = Global.secondpos[Global.z];
  • Else;
  • Event Player.closestbodypos = Position Of(Event Player);
  • End;
  • Event Player.fullbodypos = Vector(X Component Of(Eye Position(Event Player)), Y Component Of(Event Player.closestbodypos),
  • Z Component Of(Eye Position(Event Player)));
  • Event Player.filterpos = Event Player.fullbodypos + Global.AllDir[Global.z] * Dot Product(
  • Global.AllPos[Global.z] - Event Player.fullbodypos, Global.AllDir[Global.z]) / Dot Product(Global.AllDir[Global.z],
  • Global.AllDir[Global.z]);
  • If(Global.Wall_ID[Global.z] == 1 || Global.Wall_ID[Global.z] == 3);
  • If((Dot Product(Direction Towards(Global.AllPos[Global.z], Event Player.lastsavedpos), Global.AllDir[Global.z]) > 0) != (
  • Dot Product(Direction Towards(Global.AllPos[Global.z], Event Player.fullbodypos), Global.AllDir[Global.z]) > 0));
  • Event Player.intersection_length = Dot Product(Global.AllPos[Global.z] - Event Player.fullbodypos, Global.AllDir[Global.z])
  • / Dot Product(Direction Towards(Event Player.lastsavedpos, Event Player.fullbodypos), Global.AllDir[Global.z]);
  • Event Player.prevpos_intersection = Event Player.fullbodypos + Direction Towards(Event Player.lastsavedpos,
  • Event Player.fullbodypos) * Vector(1, Empty Array, 1) * Event Player.intersection_length;
  • If(Dot Product(Direction Towards(Global.firstpos[Global.z], Vector(X Component Of(Global.secondpos[Global.z]), Y Component Of(
  • Global.firstpos[Global.z]), Z Component Of(Global.secondpos[Global.z]))), Direction Towards(Global.firstpos[Global.z],
  • Event Player.prevpos_intersection)) >= 0 && Dot Product(Direction Towards(Global.firstpos[Global.z], Vector(X Component Of(
  • Global.firstpos[Global.z]), Y Component Of(Global.secondpos[Global.z]), Z Component Of(Global.firstpos[Global.z]))),
  • Direction Towards(Global.firstpos[Global.z], Event Player.prevpos_intersection)) >= 0 && Dot Product(Direction Towards(
  • Global.secondpos[Global.z], Vector(X Component Of(Global.secondpos[Global.z]), Y Component Of(Global.firstpos[Global.z]),
  • Z Component Of(Global.secondpos[Global.z]))), Direction Towards(Global.secondpos[Global.z], Event Player.prevpos_intersection))
  • >= 0 && Dot Product(Direction Towards(Global.secondpos[Global.z], Vector(X Component Of(Global.firstpos[Global.z]),
  • Y Component Of(Global.secondpos[Global.z]), Z Component Of(Global.firstpos[Global.z]))), Direction Towards(
  • Global.secondpos[Global.z], Event Player.prevpos_intersection)) >= 0);
  • Cancel Primary Action(Event Player);
  • Teleport(Event Player, Event Player.prevpos_intersection + Direction Towards(Event Player.prevpos_intersection,
  • Event Player.lastsavedpos) * Vector(1, Empty Array, 1) * 2);
  • End;
  • End;
  • End;
  • Event Player.thickness = 0;
  • If(Global.Wall_ID[Global.z] == 5);
  • Event Player.thickness = 4;
  • Else;
  • Event Player.thickness = 1;
  • End;
  • If(Distance Between(Event Player.fullbodypos, Event Player.filterpos) <= Event Player.thickness && Dot Product(Direction Towards(
  • Global.firstpos[Global.z], Vector(X Component Of(Global.secondpos[Global.z]), Y Component Of(Global.firstpos[Global.z]),
  • Z Component Of(Global.secondpos[Global.z]))), Direction Towards(Global.firstpos[Global.z], Event Player.filterpos))
  • >= 0 && Dot Product(Direction Towards(Global.firstpos[Global.z], Vector(X Component Of(Global.firstpos[Global.z]),
  • Y Component Of(Global.secondpos[Global.z]), Z Component Of(Global.firstpos[Global.z]))), Direction Towards(
  • Global.firstpos[Global.z], Event Player.filterpos)) >= 0 && Dot Product(Direction Towards(Global.secondpos[Global.z], Vector(
  • X Component Of(Global.secondpos[Global.z]), Y Component Of(Global.firstpos[Global.z]), Z Component Of(
  • Global.secondpos[Global.z]))), Direction Towards(Global.secondpos[Global.z], Event Player.filterpos)) >= 0 && Dot Product(
  • Direction Towards(Global.secondpos[Global.z], Vector(X Component Of(Global.firstpos[Global.z]), Y Component Of(
  • Global.secondpos[Global.z]), Z Component Of(Global.firstpos[Global.z]))), Direction Towards(Global.secondpos[Global.z],
  • Event Player.filterpos)) >= 0);
  • If(!Event Player.is_Grounded);
  • Set Gravity(Event Player, 100);
  • End;
  • If(Event Player.active_wall[Global.z] == False);
  • Event Player.active_wall[Global.z] = 1;
  • If((Global.Wall_ID[Global.z] == 1 || Global.Wall_ID[Global.z] == 3) && Event Player.is_Grounded == False);
  • Set Gravity(Event Player, 100);
  • Else If(Global.Wall_ID[Global.z] == 5);
  • Disable Movement Collision With Environment(Event Player, False);
  • End;
  • End;
  • If(Global.Wall_ID[Global.z] == 1);
  • Apply Impulse(Event Player, Direction Towards(Event Player.filterpos, Event Player.fullbodypos) * Vector(1, Empty Array, 1), 0.001,
  • To World, Cancel Contrary Motion);
  • Set Move Speed(Event Player, 100 - Dot Product(Direction Towards(Eye Position(Event Player), Eye Position(Event Player)
  • + World Vector Of(Throttle Of(Event Player), Event Player, Rotation)), Direction Towards(Event Player.filterpos,
  • Event Player.fullbodypos) * -1) * 100);
  • Else If(Global.Wall_ID[Global.z] == 3);
  • Apply Impulse(Event Player, Direction Towards(Event Player.filterpos, Event Player.fullbodypos), Speed Of(Event Player), To World,
  • Cancel Contrary Motion);
  • End;
  • Else;
  • Event Player.active_wall[Global.z] = 0;
  • Set Move Speed(Event Player, 100);
  • End;
  • Else If(Global.Wall_ID[Global.z] == 2 || Global.Wall_ID[Global.z] == 6 || Global.Wall_ID[Global.z] == 7);
  • If(Y Component Of(Global.firstpos[Global.z]) >= Y Component Of(Position Of(Event Player)) && Y Component Of(
  • Global.firstpos[Global.z]) <= Y Component Of(Eye Position(Event Player) + Vector(Empty Array, 0.200, Empty Array)));
  • Event Player.closestbodypos = Global.firstpos[Global.z];
  • Else If(Y Component Of(Global.firstpos[Global.z]) <= Y Component Of(Position Of(Event Player)));
  • Event Player.closestbodypos = Position Of(Event Player);
  • Else If(Y Component Of(Global.firstpos[Global.z]) >= Y Component Of(Eye Position(Event Player)));
  • Event Player.closestbodypos = Eye Position(Event Player);
  • End;
  • Event Player.fullbodypos = Vector(X Component Of(Eye Position(Event Player)), Y Component Of(Event Player.closestbodypos),
  • Z Component Of(Eye Position(Event Player)));
  • Event Player.filterpos = Event Player.fullbodypos + Global.AllDir[Global.z] * Dot Product(
  • Global.AllPos[Global.z] - Event Player.fullbodypos, Global.AllDir[Global.z]) / Dot Product(Global.AllDir[Global.z],
  • Global.AllDir[Global.z]);
  • If(Global.Wall_ID[Global.z] == 2 || Global.Wall_ID[Global.z] == 7);
  • If((Dot Product(Direction Towards(Global.AllPos[Global.z], Event Player.lastsavedpos), Global.AllDir[Global.z]) > 0) != (
  • Dot Product(Direction Towards(Global.AllPos[Global.z], Event Player.fullbodypos), Global.AllDir[Global.z]) > 0));
  • Event Player.intersection_length_0 = Dot Product(Global.AllPos[Global.z] - Event Player.fullbodypos, Global.AllDir[Global.z])
  • / Dot Product(Direction Towards(Event Player.lastsavedpos, Event Player.fullbodypos), Global.AllDir[Global.z]);
  • Event Player.prevpos_intersection = Event Player.fullbodypos + Direction Towards(Event Player.lastsavedpos,
  • Event Player.fullbodypos) * Up * Event Player.intersection_length_0;
  • If(Dot Product(Down, Direction Towards(Event Player.lastsavedpos, Event Player.prevpos_intersection)) > 0);
  • If(Dot Product(Direction Towards(Global.firstpos[Global.z], Global.secondpoint2[Global.z]), Direction Towards(
  • Global.firstpos[Global.z], Event Player.prevpos_intersection)) >= 0 && Dot Product(Direction Towards(Global.firstpos[Global.z],
  • Global.firstpoint2[Global.z]), Direction Towards(Global.firstpos[Global.z], Event Player.prevpos_intersection))
  • >= 0 && Dot Product(Direction Towards(Global.secondpos[Global.z], Global.secondpoint2[Global.z]), Direction Towards(
  • Global.secondpos[Global.z], Event Player.prevpos_intersection)) >= 0 && Dot Product(Direction Towards(
  • Global.secondpos[Global.z], Global.firstpoint2[Global.z]), Direction Towards(Global.secondpos[Global.z],
  • Event Player.prevpos_intersection)) >= 0);
  • Cancel Primary Action(Event Player);
  • If(Hero Of(Event Player) == Hero(Wrecking Ball));
  • Teleport(Event Player, Nearest Walkable Position(Event Player.prevpos_intersection));
  • Wait(0.016, Ignore Condition);
  • Teleport(Event Player, Event Player.prevpos_intersection + Up);
  • Else;
  • Teleport(Event Player, Event Player.prevpos_intersection + Up);
  • End;
  • End;
  • End;
  • End;
  • End;
  • Event Player.thickness_0 = 0;
  • If(Global.Wall_ID[Global.z] == 6);
  • Event Player.thickness_0 = 6;
  • Else;
  • Event Player.thickness_0 = 0.500;
  • End;
  • If(Distance Between(Event Player.filterpos, Event Player.fullbodypos) <= Event Player.thickness_0 && Dot Product(Direction Towards(
  • Global.firstpos[Global.z], Global.secondpoint2[Global.z]), Direction Towards(Global.firstpos[Global.z],
  • Event Player.filterpos)) >= 0 && Dot Product(Direction Towards(Global.firstpos[Global.z], Global.firstpoint2[Global.z]),
  • Direction Towards(Global.firstpos[Global.z], Event Player.filterpos)) >= 0 && Dot Product(Direction Towards(
  • Global.secondpos[Global.z], Global.secondpoint2[Global.z]), Direction Towards(Global.secondpos[Global.z],
  • Event Player.filterpos)) >= 0 && Dot Product(Direction Towards(Global.secondpos[Global.z], Global.firstpoint2[Global.z]),
  • Direction Towards(Global.secondpos[Global.z], Event Player.filterpos)) >= 0);
  • If(Global.Wall_ID[Global.z] == 2);
  • If(Dot Product(Down, Direction Towards(Event Player.fullbodypos, Event Player.filterpos)) > 0);
  • If(Event Player.active_wall[Global.z] == False);
  • Event Player.is_Grounded = True;
  • Set Gravity(Event Player, 0);
  • Event Player.active_wall[Global.z] = 1;
  • Apply Impulse(Event Player, Up, 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Down, 0.001, To World, Cancel Contrary Motion);
  • If(Horizontal Speed Of(Event Player) > 0.010);
  • Apply Impulse(Event Player, Left, 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Right, 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Forward, 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Backward, 0.001, To World, Cancel Contrary Motion);
  • End;
  • End;
  • If(Is Button Held(Event Player, Button(Jump)));
  • Apply Impulse(Event Player, Up, 5.500, To World, Cancel Contrary Motion);
  • End;
  • If(Throttle Of(Event Player) != Vector(Empty Array, Empty Array, Empty Array));
  • Apply Impulse(Event Player, Cross Product(Up, Normalize(World Vector Of(Throttle Of(Event Player), Event Player, Rotation))),
  • 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Cross Product(Down, Normalize(World Vector Of(Throttle Of(Event Player), Event Player, Rotation))),
  • 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Direction Towards(Eye Position(Event Player), Eye Position(Event Player) + Normalize(World Vector Of(
  • Throttle Of(Event Player), Event Player, Rotation))), 3, To World, Cancel Contrary Motion);
  • End;
  • If(Throttle Of(Event Player) == Vector(Empty Array, Empty Array, Empty Array) && Horizontal Speed Of(Event Player) > 0.010);
  • Apply Impulse(Event Player, Left, 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Right, 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Forward, 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Backward, 0.001, To World, Cancel Contrary Motion);
  • End;
  • Else;
  • Apply Impulse(Event Player, Down, 0.001, To World, Cancel Contrary Motion);
  • End;
  • Else If(Global.Wall_ID[Global.z] == 6);
  • If(Event Player.active_wall[Global.z] == False);
  • Event Player.active_wall[Global.z] = 1;
  • Disable Movement Collision With Environment(Event Player, True);
  • End;
  • Else If(Global.Wall_ID[Global.z] == 7);
  • If(Dot Product(Down, Direction Towards(Event Player.fullbodypos, Event Player.filterpos)) >= 0);
  • If(Is Button Held(Event Player, Button(Jump)));
  • Apply Impulse(Event Player, Up, 5.500, To World, Cancel Contrary Motion);
  • End;
  • If(Event Player.active_wall[Global.z] == False);
  • Event Player.active_wall[Global.z] = 1;
  • Set Gravity(Event Player, 0);
  • End;
  • Apply Impulse(Event Player, Up, 0.001, To World, Cancel Contrary Motion);
  • Else;
  • Apply Impulse(Event Player, Down, 0.001, To World, Cancel Contrary Motion);
  • End;
  • End;
  • Else;
  • Event Player.active_wall[Global.z] = 0;
  • Event Player.is_Grounded = False;
  • End;
  • Else If(Global.Wall_ID[Global.z] == 4);
  • Event Player.closestbodypos = Position Of(Event Player) + Vector(Empty Array, 0.500, Empty Array);
  • Event Player.fullbodypos = Vector(X Component Of(Eye Position(Event Player)), Y Component Of(Event Player.closestbodypos),
  • Z Component Of(Eye Position(Event Player)));
  • Event Player.filterpos = Event Player.fullbodypos + Global.AllDir[Global.z] * Dot Product(
  • Global.AllPos[Global.z] - Event Player.fullbodypos, Global.AllDir[Global.z]) / Dot Product(Global.AllDir[Global.z],
  • Global.AllDir[Global.z]);
  • If((Dot Product(Direction Towards(Global.AllPos[Global.z], Event Player.lastsavedpos), Global.AllDir[Global.z]) > 0) != (
  • Dot Product(Direction Towards(Global.AllPos[Global.z], Event Player.fullbodypos), Global.AllDir[Global.z]) > 0));
  • Event Player.intersection_length_1 = Dot Product(Global.AllPos[Global.z] - Event Player.fullbodypos, Global.AllDir[Global.z])
  • / Dot Product(Direction Towards(Event Player.lastsavedpos, Event Player.fullbodypos), Global.AllDir[Global.z]);
  • Event Player.prevpos_intersection = Ray Cast Hit Position(Event Player.fullbodypos, Event Player.fullbodypos + Direction Towards(
  • Event Player.lastsavedpos, Event Player.fullbodypos) * Event Player.intersection_length_1, Null, Event Player, True);
  • If(Dot Product(Direction Towards(Global.firstpos[Global.z], Global.secondpoint2[Global.z]), Direction Towards(
  • Global.firstpos[Global.z], Event Player.prevpos_intersection)) >= 0 && Dot Product(Direction Towards(Global.firstpos[Global.z],
  • Global.firstpoint2[Global.z]), Direction Towards(Global.firstpos[Global.z], Event Player.prevpos_intersection))
  • >= 0 && Dot Product(Direction Towards(Global.secondpos[Global.z], Global.secondpoint2[Global.z]), Direction Towards(
  • Global.secondpos[Global.z], Event Player.prevpos_intersection)) >= 0 && Dot Product(Direction Towards(
  • Global.secondpos[Global.z], Global.firstpoint2[Global.z]), Direction Towards(Global.secondpos[Global.z],
  • Event Player.prevpos_intersection)) >= 0);
  • Teleport(Event Player, Ray Cast Hit Position(Event Player.prevpos_intersection,
  • Event Player.prevpos_intersection + Direction Towards(Event Player.prevpos_intersection, Event Player.lastsavedpos) * Vector(1,
  • Empty Array, 1), Null, Event Player, True));
  • If(Hero Of(Event Player) == Hero(Doomfist) && Is Using Ability 2(Event Player));
  • Teleport(Event Player, Nearest Walkable Position(Event Player.prevpos_intersection));
  • Wait(0.016, Ignore Condition);
  • Teleport(Event Player, Ray Cast Hit Position(Event Player.prevpos_intersection, Event Player.prevpos_intersection + Up, Null,
  • Event Player, True));
  • Cancel Primary Action(Event Player);
  • Else If(Hero Of(Event Player) == Hero(Wrecking Ball));
  • Cancel Primary Action(Event Player);
  • Teleport(Event Player, Nearest Walkable Position(Event Player.prevpos_intersection));
  • Wait(0.016, Ignore Condition);
  • Teleport(Event Player, Ray Cast Hit Position(Event Player.prevpos_intersection, Event Player.prevpos_intersection + Up, Null,
  • Event Player, True));
  • End;
  • Apply Impulse(Event Player, Global.AllDir[Global.z], 0.001, To World, Cancel Contrary Motion XYZ);
  • End;
  • End;
  • If(Distance Between(Event Player.filterpos, Event Player.fullbodypos) <= 1 && Dot Product(Direction Towards(
  • Global.firstpos[Global.z], Global.secondpoint2[Global.z]), Direction Towards(Global.firstpos[Global.z],
  • Event Player.filterpos)) >= 0 && Dot Product(Direction Towards(Global.firstpos[Global.z], Global.firstpoint2[Global.z]),
  • Direction Towards(Global.firstpos[Global.z], Event Player.filterpos)) >= 0 && Dot Product(Direction Towards(
  • Global.secondpos[Global.z], Global.secondpoint2[Global.z]), Direction Towards(Global.secondpos[Global.z],
  • Event Player.filterpos)) >= 0 && Dot Product(Direction Towards(Global.secondpos[Global.z], Global.firstpoint2[Global.z]),
  • Direction Towards(Global.secondpos[Global.z], Event Player.filterpos)) >= 0);
  • If(Dot Product(Up, Direction Towards(Event Player.filterpos, Event Player.closestbodypos)) > 0);
  • Apply Impulse(Event Player, Global.AllDir[Global.z], 0.001, To World, Cancel Contrary Motion XYZ);
  • Else;
  • Apply Impulse(Event Player, Global.AllDir[Global.z], 0.001, To Player, Cancel Contrary Motion XYZ);
  • End;
  • Else;
  • Event Player.active_wall[Global.z] = 0;
  • End;
  • Else If(Global.Wall_ID[Global.z] == 8);
  • Event Player.closestbodypos = Position Of(Event Player) + Vector(Empty Array, 0.500, Empty Array);
  • Event Player.fullbodypos = Vector(X Component Of(Eye Position(Event Player)), Y Component Of(Event Player.closestbodypos),
  • Z Component Of(Eye Position(Event Player)));
  • Event Player.filterpos = Event Player.fullbodypos + Global.AllDir[Global.z] * Dot Product(
  • Global.AllPos[Global.z] - Event Player.fullbodypos, Global.AllDir[Global.z]) / Dot Product(Global.AllDir[Global.z],
  • Global.AllDir[Global.z]);
  • If((Dot Product(Direction Towards(Global.AllPos[Global.z], Event Player.lastsavedpos), Global.AllDir[Global.z]) > 0) != (
  • Dot Product(Direction Towards(Global.AllPos[Global.z], Event Player.fullbodypos), Global.AllDir[Global.z]) > 0));
  • Event Player.intersection_length_2 = Dot Product(Global.AllPos[Global.z] - Event Player.fullbodypos, Global.AllDir[Global.z])
  • / Dot Product(Direction Towards(Event Player.lastsavedpos, Event Player.fullbodypos), Global.AllDir[Global.z]);
  • Event Player.prevpos_intersection = Ray Cast Hit Position(Event Player.fullbodypos, Event Player.fullbodypos + Direction Towards(
  • Event Player.lastsavedpos, Event Player.fullbodypos) * Event Player.intersection_length_2, Null, Event Player, True);
  • If(Dot Product(Direction Towards(Global.firstpos[Global.z], Global.secondpoint2[Global.z]), Direction Towards(
  • Global.firstpos[Global.z], Event Player.prevpos_intersection)) >= 0 && Dot Product(Direction Towards(Global.firstpos[Global.z],
  • Global.firstpoint2[Global.z]), Direction Towards(Global.firstpos[Global.z], Event Player.prevpos_intersection))
  • >= 0 && Dot Product(Direction Towards(Global.secondpos[Global.z], Global.secondpoint2[Global.z]), Direction Towards(
  • Global.secondpos[Global.z], Event Player.prevpos_intersection)) >= 0 && Dot Product(Direction Towards(
  • Global.secondpos[Global.z], Global.firstpoint2[Global.z]), Direction Towards(Global.secondpos[Global.z],
  • Event Player.prevpos_intersection)) >= 0);
  • Teleport(Event Player, Ray Cast Hit Position(Event Player.prevpos_intersection,
  • Event Player.prevpos_intersection + Direction Towards(Event Player.prevpos_intersection, Event Player.lastsavedpos) * Vector(1,
  • Empty Array, 1), Null, Event Player, True));
  • If(Hero Of(Event Player) == Hero(Doomfist) && Is Using Ability 2(Event Player));
  • Teleport(Event Player, Nearest Walkable Position(Event Player.prevpos_intersection));
  • Wait(0.016, Ignore Condition);
  • Teleport(Event Player, Ray Cast Hit Position(Event Player.prevpos_intersection, Event Player.prevpos_intersection + Up, Null,
  • Event Player, True));
  • Cancel Primary Action(Event Player);
  • Else If(Hero Of(Event Player) == Hero(Wrecking Ball));
  • Cancel Primary Action(Event Player);
  • Teleport(Event Player, Nearest Walkable Position(Event Player.prevpos_intersection));
  • Wait(0.016, Ignore Condition);
  • Teleport(Event Player, Ray Cast Hit Position(Event Player.prevpos_intersection, Event Player.prevpos_intersection + Up, Null,
  • Event Player, True));
  • End;
  • Apply Impulse(Event Player, Global.AllDir[Global.z], 0.001, To World, Cancel Contrary Motion);
  • End;
  • End;
  • If(Distance Between(Event Player.filterpos, Event Player.fullbodypos) <= 1 && Dot Product(Direction Towards(
  • Global.firstpos[Global.z], Global.secondpoint2[Global.z]), Direction Towards(Global.firstpos[Global.z],
  • Event Player.filterpos)) >= 0 && Dot Product(Direction Towards(Global.firstpos[Global.z], Global.firstpoint2[Global.z]),
  • Direction Towards(Global.firstpos[Global.z], Event Player.filterpos)) >= 0 && Dot Product(Direction Towards(
  • Global.secondpos[Global.z], Global.secondpoint2[Global.z]), Direction Towards(Global.secondpos[Global.z],
  • Event Player.filterpos)) >= 0 && Dot Product(Direction Towards(Global.secondpos[Global.z], Global.firstpoint2[Global.z]),
  • Direction Towards(Global.secondpos[Global.z], Event Player.filterpos)) >= 0);
  • If(Dot Product(Up, Direction Towards(Event Player.filterpos, Event Player.closestbodypos)) > 0);
  • Apply Impulse(Event Player, Global.AllDir[Global.z], 0.001, To World, Cancel Contrary Motion XYZ);
  • Else;
  • Apply Impulse(Event Player, Direction Towards(Event Player.filterpos, Event Player.fullbodypos), 0.001, To World,
  • Cancel Contrary Motion);
  • End;
  • Else;
  • Event Player.active_wall[Global.z] = 0;
  • End;
  • Else If(Global.Wall_ID[Global.z] == 9);
  • Event Player.dir = Direction Towards(Global.AllPos[Global.z] + Direction Towards(Global.AllPos[Global.z], Event Player)
  • * Global.sphereRadius[Global.z], Event Player);
  • If((Dot Product(Direction Towards(Global.AllPos[Global.z], Event Player.lastsavedpos), Event Player.dir) > 0) != (Dot Product(
  • Direction Towards(Global.AllPos[Global.z], Event Player), Event Player.dir) > 0));
  • Event Player.intersection_length_3 = Dot Product(Global.AllPos[Global.z] - Event Player, Event Player.dir) / Dot Product(
  • Direction Towards(Event Player.lastsavedpos, Event Player), Event Player.dir);
  • Event Player.prevpos_intersection = Ray Cast Hit Position(Event Player, Event Player + Direction Towards(Event Player.lastsavedpos,
  • Event Player) * Event Player.intersection_length_3, Null, Event Player, True);
  • Teleport(Event Player, Ray Cast Hit Position(Event Player.prevpos_intersection,
  • Event Player.prevpos_intersection + Direction Towards(Event Player.prevpos_intersection, Event Player.lastsavedpos), Null,
  • Event Player, True));
  • Apply Impulse(Event Player, Event Player.dir, 0.001, To World, Cancel Contrary Motion XYZ);
  • End;
  • If(Distance Between(Event Player, Global.AllPos[Global.z] + Direction Towards(Global.AllPos[Global.z], Event Player)
  • * Global.sphereRadius[Global.z]) < 1);
  • Apply Impulse(Event Player, Event Player.dir, 1, To World, Cancel Contrary Motion XYZ);
  • Else;
  • Event Player.active_wall[Global.z] = 0;
  • End;
  • End;
  • End;
  • Loop;
  • }
  • }
  • rule("Disables stuff")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Count Of(Filtered Array(Event Player.active_wall, Current Array Element != 0)) == 0;
  • }
  • actions
  • {
  • Set Gravity(Event Player, 100);
  • Stop Forcing Throttle(Event Player);
  • Stop Accelerating(Event Player);
  • Enable Movement Collision With Environment(Event Player);
  • }
  • }
  • rule("Throttle Loop")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is True For Any(Event Player.active_wall, Current Array Element) == True;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Start Throttle In Direction(Event Player, Null, False, To World, Add to existing throttle, None);
  • Wait(0.016, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Throttle Loop")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Wait(0.016, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Effect Creation")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Wait(5, Ignore Condition);
  • If(Global.showwalls);
  • For Global Variable(x, 0, Count Of(Global.AllPos), 1);
  • If(Array Contains(Array(1, 3, 5), Global.Wall_ID[Global.x]));
  • If(Global.Wall_ID[Global.x] == 5);
  • Create Beam Effect(All Players(All Teams), Good Beam, Global.firstpos[Global.x], Vector(X Component Of(Global.secondpos[Global.x]),
  • Y Component Of(Global.firstpos[Global.x]), Z Component Of(Global.secondpos[Global.x])), Color(Red), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID)];
  • Global._arrayBuilder1[0] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID)] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Good Beam, Vector(X Component Of(Global.secondpos[Global.x]), Y Component Of(
  • Global.firstpos[Global.x]), Z Component Of(Global.secondpos[Global.x])), Global.secondpos[Global.x] + Vector(Empty Array,
  • Empty Array, 0.001), Color(Red), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[1] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Good Beam, Global.firstpos[Global.x] + Vector(0.001, Empty Array, Empty Array), Vector(
  • X Component Of(Global.firstpos[Global.x]), Y Component Of(Global.secondpos[Global.x]), Z Component Of(
  • Global.firstpos[Global.x])), Color(Red), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[2] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Good Beam, Vector(X Component Of(Global.firstpos[Global.x]), Y Component Of(
  • Global.secondpos[Global.x]), Z Component Of(Global.firstpos[Global.x])), Global.secondpos[Global.x] + Vector(Empty Array,
  • Empty Array, 0.001), Color(Red), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[3] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Else;
  • Skip(Array(50, 0, 17, 34)[Index Of Array Value(Array(1, 2, 3), Global.g_beamType[Global.x]) + 1]);
  • Create Beam Effect(All Players(All Teams), Grapple Beam, Global.firstpos[Global.x], Vector(X Component Of(
  • Global.secondpos[Global.x]), Y Component Of(Global.firstpos[Global.x]), Z Component Of(Global.secondpos[Global.x])), Color(
  • Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID)];
  • Global._arrayBuilder1[0] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID)] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Grapple Beam, Vector(X Component Of(Global.secondpos[Global.x]), Y Component Of(
  • Global.firstpos[Global.x]), Z Component Of(Global.secondpos[Global.x])), Global.secondpos[Global.x] + Vector(Empty Array,
  • Empty Array, 0.001), Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[1] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Grapple Beam, Global.firstpos[Global.x] + Vector(0.001, Empty Array, Empty Array),
  • Vector(X Component Of(Global.firstpos[Global.x]), Y Component Of(Global.secondpos[Global.x]), Z Component Of(
  • Global.firstpos[Global.x])), Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[2] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Grapple Beam, Vector(X Component Of(Global.firstpos[Global.x]), Y Component Of(
  • Global.secondpos[Global.x]), Z Component Of(Global.firstpos[Global.x])), Global.secondpos[Global.x] + Vector(Empty Array,
  • Empty Array, 0.001), Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[3] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Skip(33);
  • Create Beam Effect(All Players(All Teams), Good Beam, Global.firstpos[Global.x], Vector(X Component Of(Global.secondpos[Global.x]),
  • Y Component Of(Global.firstpos[Global.x]), Z Component Of(Global.secondpos[Global.x])), Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID)];
  • Global._arrayBuilder1[0] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID)] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Good Beam, Vector(X Component Of(Global.secondpos[Global.x]), Y Component Of(
  • Global.firstpos[Global.x]), Z Component Of(Global.secondpos[Global.x])), Global.secondpos[Global.x] + Vector(Empty Array,
  • Empty Array, 0.001), Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[1] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Good Beam, Global.firstpos[Global.x] + Vector(0.001, Empty Array, Empty Array), Vector(
  • X Component Of(Global.firstpos[Global.x]), Y Component Of(Global.secondpos[Global.x]), Z Component Of(
  • Global.firstpos[Global.x])), Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[2] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Good Beam, Vector(X Component Of(Global.firstpos[Global.x]), Y Component Of(
  • Global.secondpos[Global.x]), Z Component Of(Global.firstpos[Global.x])), Global.secondpos[Global.x] + Vector(Empty Array,
  • Empty Array, 0.001), Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[3] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Skip(16);
  • Create Beam Effect(All Players(All Teams), Bad Beam, Global.firstpos[Global.x], Vector(X Component Of(Global.secondpos[Global.x]),
  • Y Component Of(Global.firstpos[Global.x]), Z Component Of(Global.secondpos[Global.x])), Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID)];
  • Global._arrayBuilder1[0] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID)] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Bad Beam, Vector(X Component Of(Global.secondpos[Global.x]), Y Component Of(
  • Global.firstpos[Global.x]), Z Component Of(Global.secondpos[Global.x])), Global.secondpos[Global.x] + Vector(Empty Array,
  • Empty Array, 0.001), Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[1] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Bad Beam, Global.firstpos[Global.x] + Vector(0.001, Empty Array, Empty Array), Vector(
  • X Component Of(Global.firstpos[Global.x]), Y Component Of(Global.secondpos[Global.x]), Z Component Of(
  • Global.firstpos[Global.x])), Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[2] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Bad Beam, Vector(X Component Of(Global.firstpos[Global.x]), Y Component Of(
  • Global.secondpos[Global.x]), Z Component Of(Global.firstpos[Global.x])), Global.secondpos[Global.x] + Vector(Empty Array,
  • Empty Array, 0.001), Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[3] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • End;
  • Else If(Array Contains(Array(2, 4, 6, 7, 8), Global.Wall_ID[Global.x]));
  • If(Global.Wall_ID[Global.x] == 6);
  • Create Beam Effect(All Players(All Teams), Good Beam, Global.firstpos[Global.x], Global.firstpoint2[Global.x] + Vector(Empty Array,
  • Empty Array, 0.001), Color(Red), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID)];
  • Global._arrayBuilder1[0] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID)] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Good Beam, Global.firstpoint2[Global.x] + Vector(Empty Array, Empty Array, 0.001),
  • Global.secondpos[Global.x], Color(Red), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[1] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Good Beam, Global.secondpos[Global.x], Global.secondpoint2[Global.x] + Vector(
  • Empty Array, Empty Array, 0.001), Color(Red), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[2] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Good Beam, Global.secondpoint2[Global.x] + Vector(Empty Array, Empty Array, 0.001),
  • Global.firstpos[Global.x], Color(Red), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[3] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Else;
  • Skip(Array(50, 0, 17, 34)[Index Of Array Value(Array(1, 2, 3), Global.g_beamType[Global.x]) + 1]);
  • Create Beam Effect(All Players(All Teams), Grapple Beam, Global.firstpos[Global.x], Global.firstpoint2[Global.x] + Vector(
  • Empty Array, Empty Array, 0.001), Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID)];
  • Global._arrayBuilder1[0] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID)] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Grapple Beam, Global.firstpoint2[Global.x] + Vector(Empty Array, Empty Array, 0.001),
  • Global.secondpos[Global.x], Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[1] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Grapple Beam, Global.secondpos[Global.x], Global.secondpoint2[Global.x] + Vector(
  • Empty Array, Empty Array, 0.001), Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[2] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Grapple Beam, Global.secondpoint2[Global.x] + Vector(Empty Array, Empty Array, 0.001),
  • Global.firstpos[Global.x], Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[3] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Skip(33);
  • Create Beam Effect(All Players(All Teams), Good Beam, Global.firstpos[Global.x], Global.firstpoint2[Global.x] + Vector(Empty Array,
  • Empty Array, 0.001), Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID)];
  • Global._arrayBuilder1[0] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID)] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Good Beam, Global.firstpoint2[Global.x] + Vector(Empty Array, Empty Array, 0.001),
  • Global.secondpos[Global.x], Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[1] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Good Beam, Global.secondpos[Global.x], Global.secondpoint2[Global.x] + Vector(
  • Empty Array, Empty Array, 0.001), Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[2] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Good Beam, Global.secondpoint2[Global.x] + Vector(Empty Array, Empty Array, 0.001),
  • Global.firstpos[Global.x], Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[3] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Skip(16);
  • Create Beam Effect(All Players(All Teams), Bad Beam, Global.firstpos[Global.x], Global.firstpoint2[Global.x] + Vector(Empty Array,
  • Empty Array, 0.001), Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID)];
  • Global._arrayBuilder1[0] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID)] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Bad Beam, Global.firstpoint2[Global.x] + Vector(Empty Array, Empty Array, 0.001),
  • Global.secondpos[Global.x], Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[1] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Bad Beam, Global.secondpos[Global.x], Global.secondpoint2[Global.x] + Vector(
  • Empty Array, Empty Array, 0.001), Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[2] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • Create Beam Effect(All Players(All Teams), Bad Beam, Global.secondpoint2[Global.x] + Vector(Empty Array, Empty Array, 0.001),
  • Global.firstpos[Global.x], Color(Aqua), Visible To);
  • Global._arrayBuilder1 = Global.beam_ID[Count Of(Global.beam_ID) - 1];
  • Global._arrayBuilder1[3] = Last Created Entity;
  • Global.beam_ID[Count Of(Global.beam_ID) - 1] = Global._arrayBuilder1;
  • End;
  • Else If(Global.Wall_ID[Global.x] == 9);
  • Create Effect(All Players(All Teams), Sphere, Color(Orange), Global.AllPos[Global.x], Global.sphereRadius[Global.x], Visible To);
  • End;
  • Wait(0.016, Ignore Condition);
  • End;
  • End;
  • Global.initialized = True;
  • }
  • }
  • disabled rule("")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • disabled rule("REVIVAL")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Died - Revive")
  • {
  • event
  • {
  • Player Died;
  • Team 2;
  • All;
  • }
  • actions
  • {
  • Event Player.NeedsReviving = True;
  • Create Effect(All Players(All Teams), Ring, Color(Yellow), Position Of(Event Player), 5, Visible To Position and Radius);
  • Event Player.ReviveRing = Last Created Entity;
  • Create In-World Text(All Players(All Teams), Custom String("REVIVE"), Position Of(Event Player), 1, Do Not Clip,
  • Visible To Position and String, Color(Yellow), Default Visibility);
  • Event Player.ReviveText = Last Text ID;
  • Event Player.ReviveTimer = 0;
  • Teleport(Event Player, Nearest Walkable Position(Event Player));
  • }
  • }
  • rule("Revive Player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Is Dead(Event Player) == True;
  • Distance Between(Event Player, First Of(Sorted Array(All Living Players(Team Of(Event Player)), Distance Between(Event Player,
  • Current Array Element)))) <= 5;
  • Number Of Living Players(Team Of(Event Player)) > 0;
  • }
  • actions
  • {
  • Big Message(Event Player, Custom String("REVIVING"));
  • Small Message(First Of(Sorted Array(All Living Players(Team Of(Event Player)), Distance Between(Event Player,
  • Current Array Element))), Custom String("Reviving..."));
  • Event Player.BeingRevived = True;
  • Wait(3, Abort When False);
  • Resurrect(Event Player);
  • Event Player.BeingRevived = False;
  • }
  • }
  • rule("Set Need Reviving to False")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Event Player.NeedsReviving == True;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.NeedsReviving = False;
  • Destroy Progress Bar In-World Text(Event Player.RevivingBar);
  • Destroy Effect(Event Player.ReviveRing);
  • Destroy In-World Text(Event Player.ReviveText);
  • Destroy Progress Bar In-World Text(Event Player.ReviveBar);
  • }
  • }
  • rule("Reviving Timer")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Event Player.NeedsReviving == True;
  • Event Player.BeingRevived == False;
  • Is Dead(Event Player) == True;
  • }
  • actions
  • {
  • Chase Player Variable At Rate(Event Player, ReviveTimer, 44, 1, Destination and Rate);
  • }
  • }
  • rule("Cancel Revive")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Is Dead(Event Player) == True;
  • Distance Between(Event Player, First Of(Sorted Array(All Living Players(Team Of(Event Player)), Distance Between(Event Player,
  • Current Array Element)))) > 5;
  • }
  • actions
  • {
  • Event Player.BeingRevived = False;
  • }
  • }
  • rule("Start Death Countdown")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Event Player.BeingRevived == False;
  • Is Dead(Event Player) == True;
  • }
  • actions
  • {
  • Chase Player Variable At Rate(Event Player, ReviveTimer, 44, 1, Destination and Rate);
  • Destroy Progress Bar In-World Text(Event Player.RevivingBar);
  • Stop Chasing Player Variable(Event Player, RevivingTimer);
  • Create Progress Bar In-World Text(All Players(All Teams), Event Player.ReviveTimer / 44 * 100, Custom String(""), Event Player, 1,
  • Do Not Clip, Color(Red), Color(White), Visible To Position Values and Color, Default Visibility);
  • Event Player.ReviveBar = Last Text ID;
  • }
  • }
  • rule("Stop Death Countdown")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Event Player.BeingRevived == True;
  • Is Dead(Event Player) == True;
  • }
  • actions
  • {
  • Stop Chasing Player Variable(Event Player, ReviveTimer);
  • Destroy Progress Bar In-World Text(Event Player.ReviveBar);
  • Event Player.RevivingTimer = 0;
  • Wait(0.250, Ignore Condition);
  • Create Progress Bar In-World Text(All Players(All Teams), Event Player.RevivingTimer / 3 * 100, Custom String(""), Position Of(
  • First Of(Sorted Array(All Dead Players(Team Of(Event Player)), Distance Between(Event Player, Current Array Element)))), 0.500,
  • Do Not Clip, Color(Yellow), Color(White), Visible To Position Values and Color, Default Visibility);
  • Event Player.RevivingBar = Last Text ID;
  • Chase Player Variable At Rate(Event Player, RevivingTimer, 3, 1, Destination and Rate);
  • Wait(3, Abort When False);
  • Destroy Progress Bar In-World Text(Event Player.RevivingBar);
  • Destroy Effect(Event Player.ReviveRing);
  • Destroy In-World Text(Event Player.ReviveText);
  • Destroy Progress Bar In-World Text(Event Player.ReviveBar);
  • }
  • }
  • rule("Declare Defeat")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Event Player.ReviveTimer >= 44;
  • Is Dead(Event Player) == True;
  • }
  • actions
  • {
  • Declare Team Victory(Opposite Team Of(Team Of(Event Player)));
  • }
  • }
  • rule("Damage Heal")
  • {
  • event
  • {
  • Player Dealt Damage;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Workshop Setting Toggle(Custom String("Settings"), Custom String("Damage Dealt Heals You"), False, 0) == True;
  • Global.BloodMoonRising == False;
  • }
  • actions
  • {
  • Heal(Event Player, Null, Event Damage);
  • }
  • }
  • rule("Spawn No TP")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 2;
  • All;
  • }
  • conditions
  • {
  • Is In Spawn Room(Event Player) == True;
  • }
  • actions
  • {
  • Disallow Button(Event Player, Button(Interact));
  • Wait Until(!Is In Spawn Room(Event Player), 99999);
  • Allow Button(Event Player, Button(Interact));
  • }
  • }
Join the Workshop.codes Discord