Create
Return to post

Comparing difference between and

View raw
  • settings
  • {
  • main
  • {
  • Description: "Use many different abilities to make your way across the map from checkpoint to checkpoint. Made by Mitsiee. More info on https://workshop.codes/echo-parkour. v1.0.9 - Rialto"
  • Description: "Use many different abilities to make your way across the map from checkpoint to checkpoint. Made by Mitsiee. More info on https://workshop.codes/echo-parkour. v1.0.10 - Rialto"
  • }
  • lobby
  • {
  • Allow Players Who Are In Queue: Yes
  • }
  • modes
  • {
  • Skirmish
  • {
  • enabled maps
  • {
  • Rialto
  • }
  • }
  • General
  • {
  • Game Mode Start: Manual
  • Hero Limit: Off
  • Kill Cam: Off
  • Kill Feed: Off
  • Respawn Time Scalar: 0%
  • Spawn Health Packs: Disabled
  • }
  • }
  • heroes
  • {
  • General
  • {
  • Echo
  • {
  • Damage Dealt: 10%
  • Damage Received: 10%
  • Flight Cooldown Time: 0%
  • Focusing Beam Cooldown Time: 15%
  • Glide: Off
  • No Ammunition Requirement: On
  • Quick Melee: Off
  • Sticky Bombs Cooldown Time: 0%
  • Ultimate Ability Duplicate: Off
  • }
  • enabled heroes
  • {
  • Echo
  • }
  • }
  • }
  • }
  • variables
  • {
  • global:
  • 0: CheckpointPositions
  • 1: CheckpointRadius
  • 2: RingPositions
  • player:
  • 0: JumpPadLocations
  • 1: JumpPadLoop
  • 2: JumpPadEffects
  • 3: RemoveEffectsLoop
  • 4: FindJumpPadLoop
  • 5: GrapplePoint
  • 6: GrappleEffect
  • 7: IsGrappling
  • 8: CurrentCheckpoint
  • 10: Timer
  • 11: FindRingLoop
  • 12: CurrentCheckpointRingsArray
  • 13: RingsArrayLoop
  • 14: CutOffArray
  • 15: InstructionsShown
  • 16: InstructionsText1
  • 17: InstructionsText2
  • 18: InstructionsText3
  • 19: InstructionsText4
  • 20: InstructionsText5
  • 21: InstructionsText6
  • 22: FinalTime
  • 23: BestTime
  • 24: TimerChase
  • 25: InstructionsText7
  • }
  • subroutines
  • {
  • 0: SetCurrentRingsArray
  • 1: ResetJumpPads
  • 2: SetAvailableAbilities
  • }
  • disabled rule("Made by Mitsiee. More info on https://workshop.codes/echo-parkour")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • disabled rule("Initialise")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Initialise player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • Set Player Variable(Event Player, CurrentCheckpoint, 0);
  • Set Player Variable(Event Player, InstructionsShown, False);
  • Set Player Variable(Event Player, TimerChase, 100000);
  • Set Status(Event Player, Null, Phased Out, 9999);
  • Call Subroutine(SetCurrentRingsArray);
  • Call Subroutine(SetAvailableAbilities);
  • }
  • }
  • rule("Phase out player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Set Status(Event Player, Null, Phased Out, 9999);
  • }
  • }
  • rule("Teleport player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Is In Spawn Room(Event Player) == True;
  • }
  • actions
  • {
  • Teleport(Event Player, Add(Value In Array(Global Variable(CheckpointPositions), Player Variable(Event Player, CurrentCheckpoint)),
  • Vector(0, 0.250, 0)));
  • Wait(0.250, Ignore Condition);
  • Set Facing(Event Player, Direction Towards(Eye Position(Event Player), Value In Array(Global Variable(CheckpointPositions), Add(
  • Player Variable(Event Player, CurrentCheckpoint), 1))), To World);
  • }
  • }
  • disabled rule("HUD")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Number of checkpoints reached")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • Create HUD Text(Event Player, Null, Custom String("Map difficulty: Easy {0}", Icon String(Happy), Null, Null), Null, Right, 1,
  • White, Green, White, Visible To and String, Default Visibility);
  • Create HUD Text(Event Player, Null, Custom String("Checkpoint {0} / {1} {2}", Player Variable(Event Player, CurrentCheckpoint),
  • Subtract(Count Of(Global Variable(CheckpointPositions)), 1), Icon String(Flag)), Null, Right, 2, White, Turquoise, White,
  • Visible To and String, Default Visibility);
  • }
  • }
  • rule("Timer")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • Create HUD Text(Event Player, Null, Custom String("Timer: {0}", Player Variable(Event Player, Timer), Null, Null), Null, Top, 5,
  • White, White, White, Visible To and String, Default Visibility);
  • }
  • }
  • rule("Start timer")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Or(Or(Is Using Ability 1(Event Player), Is Using Ability 2(Event Player)), Is Button Held(Event Player, Jump)) == True;
  • Player Variable(Event Player, Timer) == 0;
  • Add(Player Variable(Event Player, CurrentCheckpoint), 1) != Count Of(Global Variable(CheckpointPositions));
  • }
  • actions
  • {
  • Set Player Variable(Event Player, TimerChase, 10000);
  • Chase Player Variable At Rate(Event Player, Timer, Player Variable(Event Player, TimerChase), 1, Destination and Rate);
  • }
  • }
  • rule("How to show controls")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • Create HUD Text(Event Player, Null, Custom String(" ", Null, Null, Null), Null, Left, 0, White, White, White,
  • Visible To and String, Default Visibility);
  • Create HUD Text(Event Player, Null, Custom String(" ", Null, Null, Null), Null, Left, 0, White, White, White,
  • Visible To and String, Default Visibility);
  • Create HUD Text(Event Player, Null, Custom String(" ", Null, Null, Null), Null, Left, 0, White, White, White,
  • Visible To and String, Default Visibility);
  • Create HUD Text(Event Player, Null, Custom String(" ", Null, Null, Null), Null, Left, 0, White, White, White,
  • Visible To and String, Default Visibility);
  • Create HUD Text(Event Player, Null, Custom String(" ", Null, Null, Null), Null, Left, 0, White, White, White,
  • Visible To and String, Default Visibility);
  • Create HUD Text(Event Player, Null, Custom String("{0} Press [Interact] to toggle full instructions", Icon String(Question Mark),
  • Null, Null), Null, Left, 0, White, Blue, White, Visible To and String, Default Visibility);
  • }
  • }
  • rule("Pressing interact to show controls")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Interact) == True;
  • Player Variable(Event Player, InstructionsShown) == False;
  • }
  • actions
  • {
  • Disallow Button(Event Player, Interact);
  • Create HUD Text(Event Player, Null, Custom String("Pressing [Ability 1] will give you 2 quick boosts forward.", Null, Null, Null),
  • Null, Left, 1, White, White, White, Visible To and String, Default Visibility);
  • Set Player Variable(Event Player, InstructionsText1, Last Text ID);
  • Create HUD Text(Event Player, Null, Custom String(
  • "Pressing [Ability 2] will attach a grappling hook to a surface (20 meters range).", Null, Null, Null), Null, Left, 2, White,
  • White, White, Visible To and String, Default Visibility);
  • Set Player Variable(Event Player, InstructionsText2, Last Text ID);
  • Create HUD Text(Event Player, Null, Custom String(
  • "Pressing [Secondary fire] will spawn jump pads on the location of each sticky bomb.", Null, Null, Null), Null, Left, 3, White,
  • White, White, Visible To and String, Default Visibility);
  • Set Player Variable(Event Player, InstructionsText3, Last Text ID);
  • Create HUD Text(Event Player, Null, Custom String("The abilities you have available will vary per checkpoint.", Null, Null, Null),
  • Null, Left, 4, White, White, White, Visible To and String, Default Visibility);
  • Set Player Variable(Event Player, InstructionsText4, Last Text ID);
  • Create HUD Text(Event Player, Null, Custom String(
  • "Each checkpoint may have one or more yellow rings. Flying through these rings will recharge [Ability 1].", Null, Null, Null),
  • Null, Left, 5, White, Yellow, White, Visible To and String, Default Visibility);
  • Set Player Variable(Event Player, InstructionsText5, Last Text ID);
  • Create HUD Text(Event Player, Null, Custom String("Press [Reload] for a quick reset.", Null, Null, Null), Null, Left, 6, White,
  • Aqua, White, Visible To and String, Default Visibility);
  • Set Player Variable(Event Player, InstructionsText6, Last Text ID);
  • Create HUD Text(Event Player, Null, Custom String("Press [Crouch] + [Ultimate] + [Interact] for a full reset back to the start.",
  • Null, Null, Null), Null, Left, 7, White, Orange, White, Visible To and String, Default Visibility);
  • Set Player Variable(Event Player, InstructionsText7, Last Text ID);
  • Wait(0.100, Ignore Condition);
  • Set Player Variable(Event Player, InstructionsShown, True);
  • Allow Button(Event Player, Interact);
  • }
  • }
  • rule("Pressing interact to hide controls")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Interact) == True;
  • Player Variable(Event Player, InstructionsShown) == True;
  • }
  • actions
  • {
  • Disallow Button(Event Player, Interact);
  • Destroy HUD Text(Player Variable(Event Player, InstructionsText1));
  • Destroy HUD Text(Player Variable(Event Player, InstructionsText2));
  • Destroy HUD Text(Player Variable(Event Player, InstructionsText3));
  • Destroy HUD Text(Player Variable(Event Player, InstructionsText4));
  • Destroy HUD Text(Player Variable(Event Player, InstructionsText5));
  • Destroy HUD Text(Player Variable(Event Player, InstructionsText6));
  • Destroy HUD Text(Player Variable(Event Player, InstructionsText7));
  • Wait(0.100, Ignore Condition);
  • Set Player Variable(Event Player, InstructionsShown, False);
  • Allow Button(Event Player, Interact);
  • }
  • }
  • rule("In-world instructions")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • "----- Instructions on first checkpoint, explaining Flight"
  • Create In-World Text(Filtered Array(All Players(All Teams), Compare(Player Variable(Current Array Element, CurrentCheckpoint), ==,
  • 0)), Custom String("{0} Press [Ability 1] to launch yourself", Icon String(Question Mark), Null, Null), Add(Value In Array(
  • Global Variable(CheckpointPositions), 1), Vector(0, -2, 0)), 1, Do Not Clip, Visible To Position and String, Blue,
  • Default Visibility);
  • "----- Instructions on 2rd checkpoint, explaining grapple"
  • Create In-World Text(Filtered Array(All Players(All Teams), Compare(Player Variable(Current Array Element, CurrentCheckpoint), ==,
  • 1)), Custom String("{0} Press [Ability 2] to grapple, Press again to let go early", Icon String(Question Mark), Null, Null),
  • Add(Value In Array(Global Variable(CheckpointPositions), 2), Vector(0, -2, 0)), 1, Do Not Clip, Visible To Position and String,
  • Blue, Default Visibility);
  • "----- Instructions on 3rd checkpoint, explaining Jump pads"
  • Create In-World Text(Filtered Array(All Players(All Teams), Compare(Player Variable(Current Array Element, CurrentCheckpoint), ==,
  • 2)), Custom String("{0} Press [Secondary fire] to spawn jump pads on location of bombs", Icon String(Question Mark), Null,
  • Null), Add(Value In Array(Global Variable(CheckpointPositions), 3), Vector(0, -2, 0)), 1, Do Not Clip,
  • Visible To Position and String, Blue, Default Visibility);
  • "----- Instructions explaining Rings"
  • Create In-World Text(Filtered Array(All Players(All Teams), Compare(Player Variable(Current Array Element, CurrentCheckpoint), ==,
  • 5)), Custom String("{0} Pick up to charge [Ability 1]", Icon String(Question Mark), Null, Null), Value In Array(
  • Global Variable(RingPositions), 2), 1, Clip Against Surfaces, Visible To Position and String, Yellow, Default Visibility);
  • }
  • }
  • rule("Best and Final timer")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • Create HUD Text(Filtered Array(Event Player, Compare(Player Variable(Current Array Element, FinalTime), >, 0)), Null,
  • Custom String("Final time: {0}", Player Variable(Event Player, FinalTime), Null, Null), Null, Top, 1, White, Orange, White,
  • Visible To and String, Default Visibility);
  • Create HUD Text(Filtered Array(Event Player, Compare(Player Variable(Current Array Element, BestTime), >, 0)), Null, Custom String(
  • "Your best time: {0}", Player Variable(Event Player, BestTime), Null, Null), Null, Top, 2, White, Turquoise, White,
  • Visible To and String, Default Visibility);
  • }
  • }
  • disabled rule("Checkpoints")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Subroutine - Available abilities")
  • {
  • event
  • {
  • Subroutine;
  • SetAvailableAbilities;
  • }
  • actions
  • {
  • Wait(0.050, Ignore Condition);
  • If(Compare(Player Variable(Event Player, CurrentCheckpoint), ==, 0));
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, False);
  • Else If(Compare(Player Variable(Event Player, CurrentCheckpoint), ==, 1));
  • Set Ability 1 Enabled(Event Player, False);
  • Set Ability 2 Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, False);
  • Else If(Compare(Player Variable(Event Player, CurrentCheckpoint), ==, 2));
  • Set Ability 1 Enabled(Event Player, False);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, True);
  • Else If(Compare(Player Variable(Event Player, CurrentCheckpoint), ==, 3));
  • Set Ability 1 Enabled(Event Player, False);
  • Set Ability 2 Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, True);
  • Else If(Compare(Player Variable(Event Player, CurrentCheckpoint), ==, 4));
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, False);
  • Else If(Compare(Player Variable(Event Player, CurrentCheckpoint), ==, 5));
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, False);
  • Else If(Compare(Player Variable(Event Player, CurrentCheckpoint), ==, 6));
  • Set Ability 1 Enabled(Event Player, False);
  • Set Ability 2 Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, False);
  • Else If(Compare(Player Variable(Event Player, CurrentCheckpoint), ==, 7));
  • Set Ability 1 Enabled(Event Player, False);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, True);
  • Else If(Compare(Player Variable(Event Player, CurrentCheckpoint), ==, 8));
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, False);
  • Else If(Compare(Player Variable(Event Player, CurrentCheckpoint), ==, 9));
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, False);
  • Else If(Compare(Player Variable(Event Player, CurrentCheckpoint), ==, 10));
  • Set Ability 1 Enabled(Event Player, False);
  • Set Ability 2 Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, False);
  • Else If(Compare(Player Variable(Event Player, CurrentCheckpoint), ==, 11));
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, True);
  • Else If(Compare(Player Variable(Event Player, CurrentCheckpoint), ==, 12));
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, False);
  • Else If(Compare(Player Variable(Event Player, CurrentCheckpoint), ==, 13));
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, False);
  • Else If(Compare(Player Variable(Event Player, CurrentCheckpoint), ==, 14));
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, True);
  • Else If(Compare(Player Variable(Event Player, CurrentCheckpoint), ==, 15));
  • Set Ability 1 Enabled(Event Player, False);
  • Set Ability 2 Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, False);
  • Else If(Compare(Player Variable(Event Player, CurrentCheckpoint), ==, 16));
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, False);
  • Else If(Compare(Player Variable(Event Player, CurrentCheckpoint), ==, 17));
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, False);
  • Else If(Compare(Player Variable(Event Player, CurrentCheckpoint), ==, 18));
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, False);
  • Else If(Compare(Player Variable(Event Player, CurrentCheckpoint), ==, 19));
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, False);
  • Else If(Compare(Player Variable(Event Player, CurrentCheckpoint), ==, 20));
  • Set Ability 1 Enabled(Event Player, False);
  • Set Ability 2 Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, True);
  • Else If(Compare(Player Variable(Event Player, CurrentCheckpoint), ==, 21));
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, False);
  • Else;
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, True);
  • End;
  • }
  • }
  • rule("Set checkpoints")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Set Global Variable(CheckpointPositions, Empty Array);
  • Set Global Variable(CheckpointRadius, Empty Array);
  • "--- Start"
  • Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(97.238, 0.278, -21.009)));
  • Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 2.500));
  • "--- Balcony on first corner"
  • Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(66.435, 6.448, -21.573)));
  • Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 2.500));
  • "--- Balcony on second corner"
  • Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(61.023, 6.448, -40.104)));
  • Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 3.500));
  • "--- Window on 3rd corner, Widow likes to camp there"
  • Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(42.971, 7.448, -49.990)));
  • Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 2.500));
  • "--- Stairs back alley before first tunnel"
  • Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(44.253, 6.438, -85.948)));
  • Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 2.500));
  • "--- After tunnel and bridge on way to second control point"
  • Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(7.140, 1.449, -76.333)));
  • Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 5));
  • "--- Turn on way to second control point"
  • Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(-20.034, 0.299, -43.104)));
  • Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 2.500));
  • "--- Brush near the water near second control point"
  • Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(-45.916, 3.048, -67.089)));
  • Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 2.500));
  • "--- Brush on the way to 3rd control point"
  • Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(-72.963, 4.655, -100.477)));
  • Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 2.500));
  • "--- 3rd control point"
  • Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(-57.004, 4.503, -131.500)));
  • Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 2.500));
  • "--- Flank area at attacker spawn"
  • Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(99.585, 1.452, -49.574)));
  • Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 2.500));
  • "--- Left balcony after attack spawn"
  • Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(78.146, 5.457, -13.575)));
  • Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 4.500));
  • "--- Sewers thingie in park"
  • Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(39.938, 3.837, -31.764)));
  • Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 2.500));
  • "--- Outskirts near first control point"
  • Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(53.913, 0.451, -92.050)));
  • Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 3.500));
  • "--- Gelato terrace"
  • Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(63.108, 1.448, -70.408)));
  • Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 2.500));
  • "--- Theater top right"
  • Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(1.335, 7.451, -71.033)));
  • Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 4.500));
  • "--- Theater exit"
  • Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(-6.969, 1.448, -47.870)));
  • Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 2.500));
  • "--- Inside bridge to last control point"
  • Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(-35.987, 6.448, -79.025)));
  • Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 4.500));
  • "--- Back of last control point"
  • Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(-57.026, 6.449, -145.760)));
  • Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 3.500));
  • "--- Right before last control point"
  • Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(-56.811, 3.299, -100.677)));
  • Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 2.500));
  • "--- Outskirts of second control point, near docks"
  • Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(-27.727, 0.449, -31.575)));
  • Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 2.500));
  • "--- Middle of bridge, on way to second control point"
  • Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(20.535, 3.306, -68.513)));
  • Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 3.500));
  • "--- Bridge at attackers flank first point"
  • Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(90.883, 2.449, -49.963)));
  • Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 3.500));
  • "--- The very end"
  • Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(-56.965, 4.299, -136.381)));
  • Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 2.500));
  • }
  • }
  • rule("Create checkpoint effects for player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • Wait(0.250, Ignore Condition);
  • Create Effect(Event Player, Ring, Blue, Subtract(Value In Array(Global Variable(CheckpointPositions), Player Variable(Event Player,
  • CurrentCheckpoint)), Vector(0, 1, 0)), Subtract(Value In Array(Global Variable(CheckpointRadius), Player Variable(Event Player,
  • CurrentCheckpoint)), 0.500), Visible To Position and Radius);
  • Create Effect(Event Player, Ring, Blue, Subtract(Value In Array(Global Variable(CheckpointPositions), Add(Player Variable(
  • Event Player, CurrentCheckpoint), 1)), Vector(0, 1, 0)), Subtract(Value In Array(Global Variable(CheckpointRadius), Add(
  • Player Variable(Event Player, CurrentCheckpoint), 1)), 0.500), Visible To Position and Radius);
  • Create Icon(Event Player, Subtract(Value In Array(Global Variable(CheckpointPositions), Add(Player Variable(Event Player,
  • CurrentCheckpoint), 1)), Vector(0, 1, 0)), Flag, Visible To and Position, Blue, True);
  • }
  • }
  • rule("Player has entered Checkpoint")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Is On Ground(Event Player) == True;
  • Distance Between(Position Of(Event Player), Value In Array(Global Variable(CheckpointPositions), Add(Player Variable(Event Player,
  • CurrentCheckpoint), 1))) <= Value In Array(Global Variable(CheckpointRadius), Add(Player Variable(Event Player,
  • CurrentCheckpoint), 1));
  • Add(Player Variable(Event Player, CurrentCheckpoint), 1) < Count Of(Global Variable(CheckpointPositions));
  • }
  • actions
  • {
  • Play Effect(Event Player, Buff Impact Sound, White, Event Player, 100);
  • Play Effect(All Players(All Teams), Good Explosion, Sky Blue, Event Player, 5);
  • Modify Player Variable(Event Player, CurrentCheckpoint, Add, 1);
  • Small Message(Event Player, Custom String("Checkpoint {0} / {1} reached", Player Variable(Event Player, CurrentCheckpoint),
  • Subtract(Count Of(Global Variable(CheckpointPositions)), 1), Null));
  • Call Subroutine(ResetJumpPads);
  • Call Subroutine(SetCurrentRingsArray);
  • Call Subroutine(SetAvailableAbilities);
  • }
  • }
  • disabled rule("Rings")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Ring positions")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • "------------------------"
  • Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), 5));
  • Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(6.955, 4.299, -42.932)));
  • "------------------------"
  • Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), 6));
  • Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(-19.820, 4.299, -66.865)));
  • "------------------------"
  • Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), 7));
  • Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(-36.027, 11.448, -78.984)));
  • Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(-36.522, 11.302, -100.247)));
  • "------------------------"
  • Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), 9));
  • Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(-56.984, 14.299, -106.494)));
  • Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(-56.982, 18.448, -84.755)));
  • Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(-57.020, 14.449, -42.586)));
  • Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(-24.237, 10.449, -42.117)));
  • Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(-1.822, 14.061, -41.909)));
  • Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(34.125, 12.499, -41.182)));
  • Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(65.194, 14.299, -43.848)));
  • "------------------------"
  • Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), 12));
  • Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(20.523, -1.682, -61.582)));
  • Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(20.473, -1.708, -75.391)));
  • "------------------------"
  • Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), 16));
  • Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(-24.954, 2.952, -48.514)));
  • "------------------------"
  • Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), 18));
  • Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(-56.991, 8.503, -133.703)));
  • "------------------------"
  • Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), 19));
  • Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(-33.345, 15.043, -84.678)));
  • Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(-4.407, 14.796, -78.245)));
  • Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(31.602, 8.472, -78.210)));
  • Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(31.799, 10.448, -54.482)));
  • Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(-1.927, 14.053, -41.940)));
  • "------------------------"
  • Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), 21));
  • Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(21.202, 1.458, -31.979)));
  • Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(23.550, 1.448, -9.306)));
  • Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(54.374, 1.449, -1.365)));
  • Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(78.955, 1.452, 5.959)));
  • Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(90.015, 3.291, -21.036)));
  • }
  • }
  • rule("Subroutine - Set current rings array")
  • {
  • event
  • {
  • Subroutine;
  • SetCurrentRingsArray;
  • }
  • actions
  • {
  • Wait(0.100, Ignore Condition);
  • Set Player Variable(Event Player, CutOffArray, False);
  • "Get the rings starting from current checkpoint"
  • Set Player Variable(Event Player, CurrentCheckpointRingsArray, Array Slice(Global Variable(RingPositions), Index Of Array Value(
  • Global Variable(RingPositions), Player Variable(Event Player, CurrentCheckpoint)), 10));
  • "Remove checkpoint number value"
  • Set Player Variable(Event Player, CurrentCheckpointRingsArray, Remove From Array(Player Variable(Event Player,
  • CurrentCheckpointRingsArray), Player Variable(Event Player, CurrentCheckpoint)));
  • For Player Variable(Event Player, RingsArrayLoop, 0, Count Of(Player Variable(Event Player, CurrentCheckpointRingsArray)), 1);
  • "Check if value is a vector, if it is, remove all further elements"
  • If(Compare(Y Component Of(Value In Array(Player Variable(Event Player, CurrentCheckpointRingsArray), Player Variable(Event Player,
  • RingsArrayLoop))), ==, 0));
  • Set Player Variable(Event Player, CutOffArray, True);
  • End;
  • If(Player Variable(Event Player, CutOffArray));
  • Set Player Variable(Event Player, CurrentCheckpointRingsArray, Remove From Array(Player Variable(Event Player,
  • CurrentCheckpointRingsArray), Value In Array(Player Variable(Event Player, CurrentCheckpointRingsArray), Player Variable(
  • Event Player, RingsArrayLoop))));
  • Modify Player Variable(Event Player, RingsArrayLoop, Subtract, 1);
  • End;
  • End;
  • }
  • }
  • rule("Create ring effects")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • Wait(0.250, Ignore Condition);
  • Wait(0.250, Ignore Condition);
  • Create Effect(Filtered Array(Event Player, Compare(Count Of(Player Variable(Event Player, CurrentCheckpointRingsArray)), >, 0)),
  • Good Aura, Yellow, Value In Array(Player Variable(Event Player, CurrentCheckpointRingsArray), 0), 1.500,
  • Visible To Position and Radius);
  • Create Effect(Filtered Array(Event Player, Compare(Count Of(Player Variable(Event Player, CurrentCheckpointRingsArray)), >, 0)),
  • Good Aura, Yellow, Value In Array(Player Variable(Event Player, CurrentCheckpointRingsArray), 1), 1.500,
  • Visible To Position and Radius);
  • Create Effect(Filtered Array(Event Player, Compare(Count Of(Player Variable(Event Player, CurrentCheckpointRingsArray)), >, 0)),
  • Good Aura, Yellow, Value In Array(Player Variable(Event Player, CurrentCheckpointRingsArray), 2), 1.500,
  • Visible To Position and Radius);
  • Create Effect(Filtered Array(Event Player, Compare(Count Of(Player Variable(Event Player, CurrentCheckpointRingsArray)), >, 0)),
  • Good Aura, Yellow, Value In Array(Player Variable(Event Player, CurrentCheckpointRingsArray), 3), 1.500,
  • Visible To Position and Radius);
  • }
  • }
  • rule("Check if player is in Ring")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is In Air(Event Player) == True;
  • Is True For Any(Player Variable(Event Player, CurrentCheckpointRingsArray), And(Compare(Distance Between(Current Array Element,
  • Event Player), <=, 2.500), Compare(Y Component Of(Current Array Element), !=, 0))) == True;
  • }
  • actions
  • {
  • For Player Variable(Event Player, FindRingLoop, 0, Count Of(Player Variable(Event Player, CurrentCheckpointRingsArray)), 1);
  • If(Compare(Distance Between(Event Player, Value In Array(Player Variable(Event Player, CurrentCheckpointRingsArray),
  • Player Variable(Event Player, FindRingLoop))), <=, 2.500));
  • Set Player Variable(Event Player, CurrentCheckpointRingsArray, Remove From Array(Player Variable(Event Player,
  • CurrentCheckpointRingsArray), Value In Array(Player Variable(Event Player, CurrentCheckpointRingsArray), Player Variable(
  • Event Player, FindRingLoop))));
  • Set Player Variable(Event Player, FindRingLoop, 10);
  • End;
  • End;
  • Small Message(Event Player, Custom String("You picked up a ring!", Null, Null, Null));
  • Set Ability 1 Enabled(Event Player, True);
  • Play Effect(Event Player, Ring Explosion Sound, White, Event Player, 90);
  • }
  • }
  • disabled rule("Death zone")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Player is on the ground and not in a checkpoint")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is In Spawn Room(Event Player) != True;
  • Is Alive(Event Player) == True;
  • Is On Ground(Event Player) == True;
  • Or(Compare(Distance Between(Position Of(Event Player), Value In Array(Global Variable(CheckpointPositions), Add(Player Variable(
  • Event Player, CurrentCheckpoint), 1))), <=, Value In Array(Global Variable(CheckpointRadius), Add(Player Variable(Event Player,
  • CurrentCheckpoint), 1))), Compare(Distance Between(Position Of(Event Player), Value In Array(Global Variable(
  • CheckpointPositions), Player Variable(Event Player, CurrentCheckpoint))), <=, Value In Array(Global Variable(CheckpointRadius),
  • Player Variable(Event Player, CurrentCheckpoint)))) != True;
  • }
  • actions
  • {
  • Kill(Event Player, Null);
  • }
  • }
  • disabled rule("Sticky bomb")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Create Sticky Bomb jump pads")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Firing Secondary(Event Player) == True;
  • }
  • actions
  • {
  • Set Player Variable(Event Player, JumpPadLocations, Empty Array);
  • For Player Variable(Event Player, JumpPadLoop, 0, 6, 1);
  • Wait(0.065, Ignore Condition);
  • Set Player Variable At Index(Event Player, JumpPadLocations, Player Variable(Event Player, JumpPadLoop), Ray Cast Hit Position(
  • Eye Position(Event Player), Add(Eye Position(Event Player), Multiply(Facing Direction Of(Event Player), 200)), Null,
  • All Players(All Teams), False));
  • End;
  • Set Secondary Fire Enabled(Event Player, False);
  • }
  • }
  • rule("Remove previous effects")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Firing Secondary(Event Player) == True;
  • }
  • actions
  • {
  • For Player Variable(Event Player, RemoveEffectsLoop, 0, Count Of(Player Variable(Event Player, JumpPadEffects)), 1);
  • Destroy Effect(Value In Array(Player Variable(Event Player, JumpPadEffects), Player Variable(Event Player, RemoveEffectsLoop)));
  • End;
  • }
  • }
  • rule("[0] Sticky bomb pad delay")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Value In Array(Player Variable(Event Player, JumpPadLocations), 0) != 0;
  • }
  • actions
  • {
  • Wait(Divide(Distance Between(Position Of(Event Player), Value In Array(Player Variable(Event Player, JumpPadLocations), 0)), 50),
  • Ignore Condition);
  • Create Effect(Event Player, Sphere, Green, Value In Array(Player Variable(Event Player, JumpPadLocations), 0), 1, None);
  • Set Player Variable At Index(Event Player, JumpPadEffects, 0, Last Created Entity);
  • }
  • }
  • rule("[1] Sticky bomb pad delay")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Value In Array(Player Variable(Event Player, JumpPadLocations), 1) != 0;
  • }
  • actions
  • {
  • Wait(Divide(Distance Between(Position Of(Event Player), Value In Array(Player Variable(Event Player, JumpPadLocations), 1)), 50),
  • Ignore Condition);
  • Create Effect(Event Player, Sphere, Green, Value In Array(Player Variable(Event Player, JumpPadLocations), 1), 1, None);
  • Set Player Variable At Index(Event Player, JumpPadEffects, 1, Last Created Entity);
  • }
  • }
  • rule("[2] Sticky bomb pad delay")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Value In Array(Player Variable(Event Player, JumpPadLocations), 2) != 0;
  • }
  • actions
  • {
  • Wait(Divide(Distance Between(Position Of(Event Player), Value In Array(Player Variable(Event Player, JumpPadLocations), 2)), 50),
  • Ignore Condition);
  • Create Effect(Event Player, Sphere, Green, Value In Array(Player Variable(Event Player, JumpPadLocations), 2), 1, None);
  • Set Player Variable At Index(Event Player, JumpPadEffects, 2, Last Created Entity);
  • }
  • }
  • rule("[3] Sticky bomb pad delay")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Value In Array(Player Variable(Event Player, JumpPadLocations), 3) != 0;
  • }
  • actions
  • {
  • Wait(Divide(Distance Between(Position Of(Event Player), Value In Array(Player Variable(Event Player, JumpPadLocations), 3)), 50),
  • Ignore Condition);
  • Create Effect(Event Player, Sphere, Green, Value In Array(Player Variable(Event Player, JumpPadLocations), 3), 1, None);
  • Set Player Variable At Index(Event Player, JumpPadEffects, 3, Last Created Entity);
  • }
  • }
  • rule("[4] Sticky bomb pad delay")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Value In Array(Player Variable(Event Player, JumpPadLocations), 4) != 0;
  • }
  • actions
  • {
  • Wait(Divide(Distance Between(Position Of(Event Player), Value In Array(Player Variable(Event Player, JumpPadLocations), 4)), 50),
  • Ignore Condition);
  • Create Effect(Event Player, Sphere, Green, Value In Array(Player Variable(Event Player, JumpPadLocations), 4), 1, None);
  • Set Player Variable At Index(Event Player, JumpPadEffects, 4, Last Created Entity);
  • }
  • }
  • rule("[5] Sticky bomb pad delay")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Value In Array(Player Variable(Event Player, JumpPadLocations), 5) != 0;
  • }
  • actions
  • {
  • Wait(Divide(Distance Between(Position Of(Event Player), Value In Array(Player Variable(Event Player, JumpPadLocations), 5)), 50),
  • Ignore Condition);
  • Create Effect(Event Player, Sphere, Green, Value In Array(Player Variable(Event Player, JumpPadLocations), 5), 1, None);
  • Set Player Variable At Index(Event Player, JumpPadEffects, 5, Last Created Entity);
  • }
  • }
  • rule("Check if player is on jump pad")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is True For Any(Player Variable(Event Player, JumpPadLocations), Compare(Distance Between(Current Array Element, Event Player), <=,
  • 3)) == True;
  • }
  • actions
  • {
  • For Player Variable(Event Player, FindJumpPadLoop, 0, Count Of(Player Variable(Event Player, JumpPadLocations)), 1);
  • If(Compare(Distance Between(Event Player, Value In Array(Player Variable(Event Player, JumpPadLocations), Player Variable(
  • Event Player, FindJumpPadLoop))), <=, 3));
  • Set Player Variable At Index(Event Player, JumpPadLocations, Player Variable(Event Player, FindJumpPadLoop), Vector(0, 0, 0));
  • Destroy Effect(Value In Array(Player Variable(Event Player, JumpPadEffects), Player Variable(Event Player, FindJumpPadLoop)));
  • Set Player Variable(Event Player, FindJumpPadLoop, 6);
  • End;
  • End;
  • Apply Impulse(Event Player, Up, 15, To World, Cancel Contrary Motion);
  • Play Effect(Event Player, Explosion Sound, White, Event Player, 50);
  • }
  • }
  • rule("Subroutine - Reset jump pads")
  • {
  • event
  • {
  • Subroutine;
  • ResetJumpPads;
  • }
  • actions
  • {
  • For Player Variable(Event Player, RemoveEffectsLoop, 0, Count Of(Player Variable(Event Player, JumpPadEffects)), 1);
  • Destroy Effect(Value In Array(Player Variable(Event Player, JumpPadEffects), Player Variable(Event Player, RemoveEffectsLoop)));
  • End;
  • Set Player Variable(Event Player, JumpPadLocations, Empty Array);
  • Set Player Variable(Event Player, JumpPadEffects, Empty Array);
  • }
  • }
  • disabled rule("Flight")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Disable flight after using it")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Using Ability 1(Event Player) == True;
  • }
  • actions
  • {
  • Disallow Button(Event Player, Ability 1);
  • Wait(0.230, Ignore Condition);
  • Allow Button(Event Player, Ability 1);
  • Wait(0.020, Ignore Condition);
  • Press Button(Event Player, Ability 1);
  • Wait(0.020, Ignore Condition);
  • Set Ability 1 Enabled(Event Player, False);
  • }
  • }
  • rule("Cheat control")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Using Ability 1(Event Player) == True;
  • }
  • actions
  • {
  • Wait(0.650, Abort When False);
  • Small Message(Event Player, Custom String("It looks like you encountered a bug by spamming [Ability 1]. Sorry.", Null, Null,
  • Null));
  • Kill(Event Player, Null);
  • }
  • }
  • disabled rule("Beam - Grapple Hook")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Get position of grapple")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Using Ability 2(Event Player) == True;
  • }
  • actions
  • {
  • Set Player Variable(Event Player, GrapplePoint, Ray Cast Hit Position(Eye Position(Event Player), Add(Eye Position(Event Player),
  • Multiply(Facing Direction Of(Event Player), 200)), Null, All Players(All Teams), False));
  • If(Compare(Distance Between(Position Of(Event Player), Player Variable(Event Player, GrapplePoint)), <=, 20));
  • Set Player Variable(Event Player, IsGrappling, True);
  • Create Beam Effect(All Players(All Teams), Good Beam, Event Player, Player Variable(Event Player, GrapplePoint), Sky Blue,
  • Visible To Position and Radius);
  • Set Player Variable(Event Player, GrappleEffect, Last Created Entity);
  • End;
  • }
  • }
  • rule("Is using Grapple")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Player Variable(Event Player, IsGrappling) == True;
  • Is Using Ability 2(Event Player) == True;
  • }
  • actions
  • {
  • Apply Impulse(Event Player, Vector Towards(Position Of(Event Player), Player Variable(Event Player, GrapplePoint)), Max(Min(Divide(
  • Distance Between(Position Of(Event Player), Player Variable(Event Player, GrapplePoint)), 7.500), 2), 1.500), To World,
  • Incorporate Contrary Motion);
  • Wait(0.035, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Is no longer using Grapple")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Using Ability 2(Event Player) != True;
  • }
  • actions
  • {
  • Set Player Variable(Event Player, IsGrappling, False);
  • Destroy Effect(Player Variable(Event Player, GrappleEffect));
  • }
  • }
  • disabled rule("Misc stuff")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Reset yourself")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Reload) == True;
  • }
  • actions
  • {
  • Kill(Event Player, Null);
  • }
  • }
  • rule("Reset on death")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • actions
  • {
  • Set Status(Event Player, Null, Hacked, 0.250);
  • Teleport(Event Player, Add(Value In Array(Global Variable(CheckpointPositions), Player Variable(Event Player, CurrentCheckpoint)),
  • Vector(0, 0.250, 0)));
  • Call Subroutine(SetCurrentRingsArray);
  • If(Compare(Count Of(Player Variable(Event Player, CurrentCheckpointRingsArray)), >, 0));
  • Set Facing(Event Player, Direction Towards(Eye Position(Event Player), Value In Array(Player Variable(Event Player,
  • CurrentCheckpointRingsArray), 0)), To World);
  • Else;
  • Set Facing(Event Player, Direction Towards(Eye Position(Event Player), Value In Array(Global Variable(CheckpointPositions), Add(
  • Player Variable(Event Player, CurrentCheckpoint), 1))), To World);
  • End;
  • Resurrect(Event Player);
  • Wait(0.020, Ignore Condition);
  • Apply Impulse(Event Player, Down, 1, To Player, Cancel Contrary Motion);
  • Call Subroutine(ResetJumpPads);
  • Call Subroutine(SetAvailableAbilities);
  • }
  • }
  • rule("Full reset")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Interact) == True;
  • Is Button Held(Event Player, Ultimate) == True;
  • Is Button Held(Event Player, Crouch) == True;
  • }
  • actions
  • {
  • Set Player Variable(Event Player, CurrentCheckpoint, 0);
  • Set Player Variable(Event Player, Timer, 0);
  • Set Player Variable(Event Player, TimerChase, 0);
  • Kill(Event Player, Null);
  • }
  • }
  • rule("Last Checkpoint reached")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Add(Player Variable(Event Player, CurrentCheckpoint), 1) == Count Of(Global Variable(CheckpointPositions));
  • }
  • actions
  • {
  • Set Player Variable(Event Player, FinalTime, Player Variable(Event Player, Timer));
  • Set Player Variable(Event Player, TimerChase, Player Variable(Event Player, FinalTime));
  • Create HUD Text(Event Player, Null, Custom String("Final time: {0}", Player Variable(Event Player, FinalTime), Null, Null), Null,
  • Top, 1, White, Orange, White, Visible To and String, Default Visibility);
  • If(Compare(Player Variable(Event Player, BestTime), >, 0));
  • Set Player Variable(Event Player, BestTime, Min(Player Variable(Event Player, FinalTime), Player Variable(Event Player,
  • BestTime)));
  • Else;
  • Set Player Variable(Event Player, BestTime, Player Variable(Event Player, FinalTime));
  • End;
  • Create HUD Text(Event Player, Null, Custom String("Your best time: {0}", Player Variable(Event Player, BestTime), Null, Null),
  • Null, Top, 2, White, Turquoise, White, Visible To and String, Default Visibility);
  • Big Message(All Players(All Teams), Custom String("{0} Completed the course in {1}!", Event Player, Player Variable(Event Player,
  • FinalTime), Null));
  • Play Effect(All Players(All Teams), Good Explosion, Sky Blue, Event Player, 15);
  • Play Effect(All Players(All Teams), Good Explosion, Blue, Event Player, 10);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, White, Event Player, 100);
  • }
  • }
  • rule("Infinite match timer")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Match Time < 1800;
  • }
  • actions
  • {
  • Set Match Time(3599);
  • }
  • }
  • rule("Disable inspector")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Disable Inspector Recording;
  • }
  • }
Join the Workshop.codes Discord