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.11.2 - Numbani"
  • }
  • lobby
  • {
  • Allow Players Who Are In Queue: Yes
  • }
  • modes
  • {
  • Skirmish
  • {
  • enabled maps
  • {
  • Numbani
  • }
  • }
  • 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
  • 4: DeathDoorPositions
  • 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
  • {
  • Event Player.CurrentCheckpoint = -1;
  • Event Player.InstructionsShown = False;
  • 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, Global.CheckpointPositions[Event Player.CurrentCheckpoint] + Vector(0, 0.250, 0));
  • Wait(0.250, Ignore Condition);
  • Set Facing(Event Player, Direction Towards(Eye Position(Event Player),
  • Global.CheckpointPositions[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: Very Hard {0}", Icon String(Poison)), Null, Right, 1, White,
  • Red, White, Visible To and String, Default Visibility);
  • Create HUD Text(Event Player, Null, Custom String("Map difficulty: Very Hard {0}", Icon String(Poison)), Null, Right, 1, Color(
  • White), Color(Red), Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(Event Player, Null, Custom String("Checkpoint {0} / {1} {2}", Event Player.CurrentCheckpoint, Count Of(
  • Global.CheckpointPositions) - 1, Icon String(Flag)), Null, Right, 2, White, Turquoise, White, Visible To and String,
  • Default Visibility);
  • Global.CheckpointPositions) - 1, Icon String(Flag)), Null, Right, 2, Color(White), Color(Turquoise), Color(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}", Event Player.Timer), Null, Top, 5, White, White, White,
  • Visible To and String, Default Visibility);
  • Create HUD Text(Event Player, Null, Custom String("Timer: {0}", Event Player.Timer), Null, Top, 5, Color(White), Color(White),
  • Color(White), Visible To and String, Default Visibility);
  • }
  • }
  • rule("Start timer")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Is Using Ability 1(Event Player) || Is Using Ability 2(Event Player) || Is Button Held(Event Player, Jump)) == True;
  • (Is Using Ability 1(Event Player) || Is Using Ability 2(Event Player) || Is Button Held(Event Player, Button(Jump))) == True;
  • Event Player.Timer == 0;
  • Event Player.CurrentCheckpoint + 1 != Count Of(Global.CheckpointPositions);
  • }
  • actions
  • {
  • Event Player.TimerChase = 10000;
  • Chase Player Variable At Rate(Event Player, Timer, 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, Left, 0, White, White, White, Visible To and String,
  • Default Visibility);
  • Create HUD Text(Event Player, Null, Custom String(" "), Null, Left, 0, White, White, White, Visible To and String,
  • Default Visibility);
  • Create HUD Text(Event Player, Null, Custom String(" "), Null, Left, 0, White, White, White, Visible To and String,
  • Default Visibility);
  • Create HUD Text(Event Player, Null, Custom String(" "), Null, Left, 0, White, White, White, Visible To and String,
  • Default Visibility);
  • Create HUD Text(Event Player, Null, Custom String(" "), Null, Left, 0, White, White, White, Visible To and String,
  • Default Visibility);
  • Create HUD Text(Event Player, Null, Custom String(" "), Null, Left, 0, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Create HUD Text(Event Player, Null, Custom String(" "), Null, Left, 0, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Create HUD Text(Event Player, Null, Custom String(" "), Null, Left, 0, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Create HUD Text(Event Player, Null, Custom String(" "), Null, Left, 0, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Create HUD Text(Event Player, Null, Custom String(" "), Null, Left, 0, Color(White), Color(White), Color(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, Left, 0, White, Blue, White, Visible To and String, Default Visibility);
  • Null, Left, 0, Color(White), Color(Blue), Color(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;
  • Is Button Held(Event Player, Button(Interact)) == True;
  • Event Player.InstructionsShown == False;
  • }
  • actions
  • {
  • Disallow Button(Event Player, Interact);
  • Disallow Button(Event Player, Button(Interact));
  • Create HUD Text(Event Player, Null, Custom String("Pressing [Ability 1] will give you 2 quick boosts forward."), Null, Left, 1,
  • White, White, White, Visible To and String, Default Visibility);
  • Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
  • 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, Left, 2, White, White, White,
  • Visible To and String, Default Visibility);
  • "Pressing [Ability 2] will attach a grappling hook to a surface (20 meters range)."), Null, Left, 2, Color(White), Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • 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, Left, 3, White, White, White,
  • Visible To and String, Default Visibility);
  • "Pressing [Secondary fire] will spawn jump pads on the location of each sticky bomb."), Null, Left, 3, Color(White), Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • Event Player.InstructionsText3 = Last Text ID;
  • Create HUD Text(Event Player, Null, Custom String("The abilities you have available will vary per checkpoint."), Null, Left, 4,
  • White, White, White, Visible To and String, Default Visibility);
  • Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
  • 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, Left, 5,
  • White, Yellow, White, Visible To and String, Default Visibility);
  • Color(White), Color(Yellow), Color(White), Visible To and String, Default Visibility);
  • Event Player.InstructionsText5 = Last Text ID;
  • Create HUD Text(Event Player, Null, Custom String("Press [Reload] for a quick reset."), Null, Left, 6, White, Aqua, White,
  • Visible To and String, Default Visibility);
  • Create HUD Text(Event Player, Null, Custom String("Press [Reload] for a quick reset."), Null, Left, 6, Color(White), Color(Aqua),
  • Color(White), Visible To and String, Default Visibility);
  • 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, Left, 7, White, Orange, White, Visible To and String, Default Visibility);
  • Null, Left, 7, Color(White), Color(Orange), Color(White), Visible To and String, Default Visibility);
  • Event Player.InstructionsText7 = Last Text ID;
  • Wait(0.100, Ignore Condition);
  • Event Player.InstructionsShown = True;
  • Allow Button(Event Player, Interact);
  • Allow Button(Event Player, Button(Interact));
  • }
  • }
  • rule("Pressing interact to hide controls")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Interact) == True;
  • Is Button Held(Event Player, Button(Interact)) == True;
  • Event Player.InstructionsShown == True;
  • }
  • actions
  • {
  • Disallow Button(Event Player, Interact);
  • Disallow Button(Event Player, Button(Interact));
  • Destroy HUD Text(Event Player.InstructionsText1);
  • Destroy HUD Text(Event Player.InstructionsText2);
  • Destroy HUD Text(Event Player.InstructionsText3);
  • Destroy HUD Text(Event Player.InstructionsText4);
  • Destroy HUD Text(Event Player.InstructionsText5);
  • Destroy HUD Text(Event Player.InstructionsText6);
  • Destroy HUD Text(Event Player.InstructionsText7);
  • Wait(0.100, Ignore Condition);
  • Event Player.InstructionsShown = False;
  • Allow Button(Event Player, Interact);
  • Allow Button(Event Player, Button(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), Current Array Element.CurrentCheckpoint == 0), Custom String(
  • "{0} Press [Ability 1] to launch yourself", Icon String(Question Mark)), Global.CheckpointPositions[1] + Vector(0, -2, 0), 1,
  • Do Not Clip, Visible To Position and String, Blue, Default Visibility);
  • Do Not Clip, Visible To Position and String, Color(Blue), Default Visibility);
  • "----- Instructions on 2nd checkpoint, explaining grapple"
  • Create In-World Text(Filtered Array(All Players(All Teams), Current Array Element.CurrentCheckpoint == 1), Custom String(
  • "{0} Press [Ability 2] to grapple, Press again to let go early", Icon String(Question Mark)),
  • Global.CheckpointPositions[2] + Vector(0, -2, 0), 1, Do Not Clip, Visible To Position and String, Blue, Default Visibility);
  • Global.CheckpointPositions[2] + Vector(0, -2, 0), 1, Do Not Clip, Visible To Position and String, Color(Blue),
  • Default Visibility);
  • "----- Instructions on 3rd checkpoint, explaining Jump pads"
  • Create In-World Text(Filtered Array(All Players(All Teams), Current Array Element.CurrentCheckpoint == 2), Custom String(
  • "{0} Press [Secondary fire] to spawn jump pads on location of bombs", Icon String(Question Mark)),
  • Global.CheckpointPositions[3] + Vector(0, -2, 0), 1, Do Not Clip, Visible To Position and String, Blue, Default Visibility);
  • Global.CheckpointPositions[3] + Vector(0, -2, 0), 1, Do Not Clip, Visible To Position and String, Color(Blue),
  • Default Visibility);
  • "----- Instructions explaining Rings"
  • Create In-World Text(Filtered Array(All Players(All Teams), Current Array Element.CurrentCheckpoint == 4), Custom String(
  • "{0} Pick up to charge [Ability 1]", Icon String(Question Mark)), Global.RingPositions[2], 1, Clip Against Surfaces,
  • Visible To Position and String, Yellow, Default Visibility);
  • Visible To Position and String, Color(Yellow), Default Visibility);
  • "----- Sorry."
  • Create In-World Text(Filtered Array(All Players(All Teams), Current Array Element.CurrentCheckpoint == 12), Custom String("Sorry.",
  • Icon String(Question Mark)), Global.CheckpointPositions[13] + Vector(0, -2, 0), 1, Do Not Clip, Visible To Position and String,
  • Blue, Default Visibility);
  • Color(Blue), Default Visibility);
  • }
  • }
  • rule("Best and Final timer")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.FinalTime > 0), Null, Custom String("Final time: {0}",
  • Event Player.FinalTime), Null, Top, 1, White, Orange, White, Visible To and String, Default Visibility);
  • Event Player.FinalTime), Null, Top, 1, Color(White), Color(Orange), Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(Filtered Array(Event Player, Current Array Element.BestTime > 0), Null, Custom String("Your best time: {0}",
  • Event Player.BestTime), Null, Top, 2, White, Turquoise, White, Visible To and String, Default Visibility);
  • Event Player.BestTime), Null, Top, 2, Color(White), Color(Turquoise), Color(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(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(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(Event Player.CurrentCheckpoint == 2);
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, True);
  • Else If(Event Player.CurrentCheckpoint == 3);
  • Set Ability 1 Enabled(Event Player, False);
  • Set Ability 2 Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, False);
  • Else If(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(Event Player.CurrentCheckpoint == 5);
  • Set Ability 1 Enabled(Event Player, False);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, True);
  • Else If(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(Event Player.CurrentCheckpoint == 7);
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, True);
  • Else If(Event Player.CurrentCheckpoint == 8);
  • Set Ability 1 Enabled(Event Player, False);
  • Set Ability 2 Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, False);
  • Else If(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(Event Player.CurrentCheckpoint == 10);
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, False);
  • Else If(Event Player.CurrentCheckpoint == 11);
  • Set Ability 1 Enabled(Event Player, False);
  • Set Ability 2 Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, False);
  • Else If(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(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(Event Player.CurrentCheckpoint == 14);
  • Set Ability 1 Enabled(Event Player, True);
  • Set Ability 2 Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, True);
  • 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
  • {
  • Global.CheckpointPositions = Empty Array;
  • Global.CheckpointRadius = Empty Array;
  • "--- Start, Final control point"
  • Global.CheckpointPositions = Append To Array(Global.CheckpointPositions, Vector(206.887, -0.488, 22.420));
  • Global.CheckpointRadius = Append To Array(Global.CheckpointRadius, 4);
  • "--- Balcony after tunnel"
  • Global.CheckpointPositions = Append To Array(Global.CheckpointPositions, Vector(176.856, 5.952, 13.540));
  • Global.CheckpointRadius = Append To Array(Global.CheckpointRadius, 4);
  • "--- Outskirts near last checkpoint"
  • Global.CheckpointPositions = Append To Array(Global.CheckpointPositions, Vector(205.467, -2.102, -6.722));
  • Global.CheckpointRadius = Append To Array(Global.CheckpointRadius, 5.500);
  • "--- Right before tunnel"
  • Global.CheckpointPositions = Append To Array(Global.CheckpointPositions, Vector(160.660, -2.470, 1.738));
  • Global.CheckpointRadius = Append To Array(Global.CheckpointRadius, 3.500);
  • "--- Balcony road to second control point"
  • Global.CheckpointPositions = Append To Array(Global.CheckpointPositions, Vector(117.672, 5.949, 2.940));
  • Global.CheckpointRadius = Append To Array(Global.CheckpointRadius, 4);
  • "--- Stairs flank of first control point"
  • Global.CheckpointPositions = Append To Array(Global.CheckpointPositions, Vector(86.160, 5.951, -26.518));
  • Global.CheckpointRadius = Append To Array(Global.CheckpointRadius, 2.500);
  • "--- Upper area ramp to first controlpoint"
  • Global.CheckpointPositions = Append To Array(Global.CheckpointPositions, Vector(76.456, 7.951, 10.913));
  • Global.CheckpointRadius = Append To Array(Global.CheckpointRadius, 2.500);
  • "--- Vending machine room before ramp to first controlpoint"
  • Global.CheckpointPositions = Append To Array(Global.CheckpointPositions, Vector(70.870, -0.052, 18.161));
  • Global.CheckpointRadius = Append To Array(Global.CheckpointRadius, 2.500);
  • "--- On top of car right outside attacker spawn"
  • Global.CheckpointPositions = Append To Array(Global.CheckpointPositions, Vector(6.132, 3.776, -4.017));
  • Global.CheckpointRadius = Append To Array(Global.CheckpointRadius, 2.500);
  • "--- Golden statue"
  • Global.CheckpointPositions = Append To Array(Global.CheckpointPositions, Vector(112.715, 7.196, 22.596));
  • Global.CheckpointRadius = Append To Array(Global.CheckpointRadius, 2.750);
  • "--- Near first control point, clothes store entrace"
  • Global.CheckpointPositions = Append To Array(Global.CheckpointPositions, Vector(107.934, -0.052, -2.791));
  • Global.CheckpointRadius = Append To Array(Global.CheckpointRadius, 2.500);
  • "--- Outskirts at final control point"
  • Global.CheckpointPositions = Append To Array(Global.CheckpointPositions, Vector(210.343, 3.898, 50.315));
  • Global.CheckpointRadius = Append To Array(Global.CheckpointRadius, 2.500);
  • "--- Room to the left after tunnel"
  • Global.CheckpointPositions = Append To Array(Global.CheckpointPositions, Vector(183.914, -0.052, -17.381));
  • Global.CheckpointRadius = Append To Array(Global.CheckpointRadius, 3);
  • "--- Pillar before tunnel"
  • Global.CheckpointPositions = Append To Array(Global.CheckpointPositions, Vector(151.923, 6.036, -5.422));
  • Global.CheckpointRadius = Append To Array(Global.CheckpointRadius, 3);
  • "--- Side area near attacker spawn"
  • Global.CheckpointPositions = Append To Array(Global.CheckpointPositions, Vector(12.828, 1.952, 41.911));
  • Global.CheckpointRadius = Append To Array(Global.CheckpointRadius, 3);
  • "--- Museum stairs"
  • Global.CheckpointPositions = Append To Array(Global.CheckpointPositions, Vector(218.853, 1.596, 22.557));
  • Global.CheckpointRadius = Append To Array(Global.CheckpointRadius, 3);
  • }
  • }
  • rule("Create checkpoint effects for player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • Wait(0.250, Ignore Condition);
  • Create Effect(Event Player, Ring, Blue, Global.CheckpointPositions[Event Player.CurrentCheckpoint] - Vector(0, 1, 0),
  • Create Effect(Event Player, Ring, Color(Blue), Global.CheckpointPositions[Event Player.CurrentCheckpoint] - Vector(0, 1, 0),
  • Global.CheckpointRadius[Event Player.CurrentCheckpoint] - 0.500, Visible To Position and Radius);
  • Create Effect(Event Player, Ring, Blue, Global.CheckpointPositions[Event Player.CurrentCheckpoint + 1] - Vector(0, 1, 0),
  • Create Effect(Event Player, Ring, Color(Blue), Global.CheckpointPositions[Event Player.CurrentCheckpoint + 1] - Vector(0, 1, 0),
  • Global.CheckpointRadius[Event Player.CurrentCheckpoint + 1] - 0.500, Visible To Position and Radius);
  • Create Icon(Event Player, Global.CheckpointPositions[Event Player.CurrentCheckpoint + 1] - Vector(0, 1, 0), Flag,
  • Visible To and Position, Blue, True);
  • Visible To and Position, Color(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), Global.CheckpointPositions[Event Player.CurrentCheckpoint + 1])
  • <= Global.CheckpointRadius[Event Player.CurrentCheckpoint + 1];
  • Event Player.CurrentCheckpoint + 1 < Count Of(Global.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);
  • Play Effect(Event Player, Buff Impact Sound, Color(White), Event Player, 100);
  • Play Effect(All Players(All Teams), Good Explosion, Color(Sky Blue), Event Player, 5);
  • Event Player.CurrentCheckpoint += 1;
  • Small Message(Event Player, Custom String("Checkpoint {0} / {1} reached", Event Player.CurrentCheckpoint, Count Of(
  • Global.CheckpointPositions) - 1));
  • Call Subroutine(ResetJumpPads);
  • Call Subroutine(SetCurrentRingsArray);
  • Call Subroutine(SetAvailableAbilities);
  • }
  • }
  • disabled rule("Rings")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Ring positions")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • "------------------------"
  • Global.RingPositions = Append To Array(Global.RingPositions, 4);
  • Global.RingPositions = Append To Array(Global.RingPositions, Vector(98.593, 10.485, 25.148));
  • Global.RingPositions = Append To Array(Global.RingPositions, Vector(88.628, 3.094, 14.747));
  • "------------------------"
  • Global.RingPositions = Append To Array(Global.RingPositions, 7);
  • Global.RingPositions = Append To Array(Global.RingPositions, Vector(45.940, 15.473, 13.020));
  • "------------------------"
  • Global.RingPositions = Append To Array(Global.RingPositions, 9);
  • Global.RingPositions = Append To Array(Global.RingPositions, Vector(123.929, 15.226, -10.396));
  • Global.RingPositions = Append To Array(Global.RingPositions, Vector(116.143, -2.940, -32.034));
  • Global.RingPositions = Append To Array(Global.RingPositions, Vector(86.659, 8.951, -27.748));
  • Global.RingPositions = Append To Array(Global.RingPositions, Vector(90.847, 2.773, -7.266));
  • "------------------------"
  • Global.RingPositions = Append To Array(Global.RingPositions, 10);
  • Global.RingPositions = Append To Array(Global.RingPositions, Vector(146.703, 0.051, 28.920));
  • "------------------------"
  • Global.RingPositions = Append To Array(Global.RingPositions, 12);
  • Global.RingPositions = Append To Array(Global.RingPositions, Vector(172.688, 6.349, -5.274));
  • "------------------------"
  • Global.RingPositions = Append To Array(Global.RingPositions, 13);
  • Global.RingPositions = Append To Array(Global.RingPositions, Vector(146.001, -1.224, 26.139));
  • Global.RingPositions = Append To Array(Global.RingPositions, Vector(136.207, 5.052, 45.934));
  • Global.RingPositions = Append To Array(Global.RingPositions, Vector(118.161, 5.049, 25.483));
  • Global.RingPositions = Append To Array(Global.RingPositions, Vector(88.441, 3.135, 14.591));
  • Global.RingPositions = Append To Array(Global.RingPositions, Vector(76.183, 3.537, -17.834));
  • Global.RingPositions = Append To Array(Global.RingPositions, Vector(52.315, 7.952, -25.938));
  • Global.RingPositions = Append To Array(Global.RingPositions, Vector(41.995, 7.948, -14.458));
  • Global.RingPositions = Append To Array(Global.RingPositions, Vector(27.725, 2.518, 21.608));
  • Global.RingPositions = Append To Array(Global.RingPositions, Vector(8.168, 8.514, 20.394));
  • }
  • }
  • rule("Subroutine - Set current rings array")
  • {
  • event
  • {
  • Subroutine;
  • SetCurrentRingsArray;
  • }
  • actions
  • {
  • Wait(0.100, Ignore Condition);
  • Event Player.CutOffArray = False;
  • "Get the rings starting from current checkpoint"
  • Event Player.CurrentCheckpointRingsArray = Array Slice(Global.RingPositions, Index Of Array Value(Global.RingPositions,
  • Event Player.CurrentCheckpoint), 10);
  • "Remove checkpoint number value"
  • Event Player.CurrentCheckpointRingsArray = Remove From Array(Event Player.CurrentCheckpointRingsArray,
  • Event Player.CurrentCheckpoint);
  • For Player Variable(Event Player, RingsArrayLoop, 0, Count Of(Event Player.CurrentCheckpointRingsArray), 1);
  • "Check if value is a vector, if it is, remove all further elements"
  • If(Y Component Of(Event Player.CurrentCheckpointRingsArray[Event Player.RingsArrayLoop]) == 0);
  • Event Player.CutOffArray = True;
  • End;
  • If(Event Player.CutOffArray);
  • Event Player.CurrentCheckpointRingsArray = Remove From Array(Event Player.CurrentCheckpointRingsArray,
  • Event Player.CurrentCheckpointRingsArray[Event Player.RingsArrayLoop]);
  • Event Player.RingsArrayLoop -= 1;
  • End;
  • End;
  • }
  • }
  • rule("Create ring effects")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • Wait(0.250, Ignore Condition);
  • Create Effect(Filtered Array(Event Player, Count Of(Event Player.CurrentCheckpointRingsArray) > 0), Good Aura, Yellow,
  • Create Effect(Filtered Array(Event Player, Count Of(Event Player.CurrentCheckpointRingsArray) > 0), Good Aura, Color(Yellow),
  • Event Player.CurrentCheckpointRingsArray[0], 1.500, Visible To Position and Radius);
  • Create Effect(Filtered Array(Event Player, Count Of(Event Player.CurrentCheckpointRingsArray) > 0), Good Aura, Yellow,
  • Create Effect(Filtered Array(Event Player, Count Of(Event Player.CurrentCheckpointRingsArray) > 0), Good Aura, Color(Yellow),
  • Event Player.CurrentCheckpointRingsArray[1], 1.500, Visible To Position and Radius);
  • Create Effect(Filtered Array(Event Player, Count Of(Event Player.CurrentCheckpointRingsArray) > 0), Good Aura, Yellow,
  • Create Effect(Filtered Array(Event Player, Count Of(Event Player.CurrentCheckpointRingsArray) > 0), Good Aura, Color(Yellow),
  • Event Player.CurrentCheckpointRingsArray[2], 1.500, Visible To Position and Radius);
  • Create Effect(Filtered Array(Event Player, Count Of(Event Player.CurrentCheckpointRingsArray) > 0), Good Aura, Yellow,
  • Create Effect(Filtered Array(Event Player, Count Of(Event Player.CurrentCheckpointRingsArray) > 0), Good Aura, Color(Yellow),
  • 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(Event Player.CurrentCheckpointRingsArray, Distance Between(Current Array Element, Event Player)
  • <= 2.500 && Y Component Of(Current Array Element) != 0) == True;
  • }
  • actions
  • {
  • For Player Variable(Event Player, FindRingLoop, 0, Count Of(Event Player.CurrentCheckpointRingsArray), 1);
  • If(Distance Between(Event Player, Event Player.CurrentCheckpointRingsArray[Event Player.FindRingLoop]) <= 2.500);
  • Event Player.CurrentCheckpointRingsArray = Remove From Array(Event Player.CurrentCheckpointRingsArray,
  • Event Player.CurrentCheckpointRingsArray[Event Player.FindRingLoop]);
  • Event Player.FindRingLoop = 10;
  • End;
  • End;
  • Small Message(Event Player, Custom String("You picked up a ring!"));
  • Set Ability 1 Enabled(Event Player, True);
  • Play Effect(Event Player, Ring Explosion Sound, White, Event Player, 90);
  • Play Effect(Event Player, Ring Explosion Sound, Color(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;
  • (Distance Between(Position Of(Event Player), Global.CheckpointPositions[Event Player.CurrentCheckpoint + 1])
  • <= Global.CheckpointRadius[Event Player.CurrentCheckpoint + 1] || Distance Between(Position Of(Event Player),
  • Global.CheckpointPositions[Event Player.CurrentCheckpoint]) <= Global.CheckpointRadius[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
  • {
  • Event Player.JumpPadLocations = Empty Array;
  • For Player Variable(Event Player, JumpPadLoop, 0, 6, 1);
  • Wait(0.065, Ignore Condition);
  • Event Player.JumpPadLocations[Event Player.JumpPadLoop] = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(
  • Event Player) + 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(Event Player.JumpPadEffects), 1);
  • Destroy Effect(Event Player.JumpPadEffects[Event Player.RemoveEffectsLoop]);
  • End;
  • }
  • }
  • rule("[0] Sticky bomb pad delay")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.JumpPadLocations[0] != 0;
  • }
  • actions
  • {
  • Wait(Distance Between(Position Of(Event Player), Event Player.JumpPadLocations[0]) / 50, Ignore Condition);
  • Create Effect(Event Player, Sphere, Green, Event Player.JumpPadLocations[0], 1, None);
  • Create Effect(Event Player, Sphere, Color(Green), Event Player.JumpPadLocations[0], 1, None);
  • Event Player.JumpPadEffects[0] = Last Created Entity;
  • }
  • }
  • rule("[1] Sticky bomb pad delay")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.JumpPadLocations[1] != 0;
  • }
  • actions
  • {
  • Wait(Distance Between(Position Of(Event Player), Event Player.JumpPadLocations[1]) / 50, Ignore Condition);
  • Create Effect(Event Player, Sphere, Green, Event Player.JumpPadLocations[1], 1, None);
  • Create Effect(Event Player, Sphere, Color(Green), Event Player.JumpPadLocations[1], 1, None);
  • Event Player.JumpPadEffects[1] = Last Created Entity;
  • }
  • }
  • rule("[2] Sticky bomb pad delay")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.JumpPadLocations[2] != 0;
  • }
  • actions
  • {
  • Wait(Distance Between(Position Of(Event Player), Event Player.JumpPadLocations[2]) / 50, Ignore Condition);
  • Create Effect(Event Player, Sphere, Green, Event Player.JumpPadLocations[2], 1, None);
  • Create Effect(Event Player, Sphere, Color(Green), Event Player.JumpPadLocations[2], 1, None);
  • Event Player.JumpPadEffects[2] = Last Created Entity;
  • }
  • }
  • rule("[3] Sticky bomb pad delay")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.JumpPadLocations[3] != 0;
  • }
  • actions
  • {
  • Wait(Distance Between(Position Of(Event Player), Event Player.JumpPadLocations[3]) / 50, Ignore Condition);
  • Create Effect(Event Player, Sphere, Green, Event Player.JumpPadLocations[3], 1, None);
  • Create Effect(Event Player, Sphere, Color(Green), Event Player.JumpPadLocations[3], 1, None);
  • Event Player.JumpPadEffects[3] = Last Created Entity;
  • }
  • }
  • rule("[4] Sticky bomb pad delay")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.JumpPadLocations[4] != 0;
  • }
  • actions
  • {
  • Wait(Distance Between(Position Of(Event Player), Event Player.JumpPadLocations[4]) / 50, Ignore Condition);
  • Create Effect(Event Player, Sphere, Green, Event Player.JumpPadLocations[4], 1, None);
  • Create Effect(Event Player, Sphere, Color(Green), Event Player.JumpPadLocations[4], 1, None);
  • Event Player.JumpPadEffects[4] = Last Created Entity;
  • }
  • }
  • rule("[5] Sticky bomb pad delay")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.JumpPadLocations[5] != 0;
  • }
  • actions
  • {
  • Wait(Distance Between(Position Of(Event Player), Event Player.JumpPadLocations[5]) / 50, Ignore Condition);
  • Create Effect(Event Player, Sphere, Green, Event Player.JumpPadLocations[5], 1, None);
  • Create Effect(Event Player, Sphere, Color(Green), Event Player.JumpPadLocations[5], 1, None);
  • 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(Event Player.JumpPadLocations, Distance Between(Current Array Element, Event Player) <= 3) == True;
  • }
  • actions
  • {
  • For Player Variable(Event Player, FindJumpPadLoop, 0, Count Of(Event Player.JumpPadLocations), 1);
  • If(Distance Between(Event Player, Event Player.JumpPadLocations[Event Player.FindJumpPadLoop]) <= 3);
  • Event Player.JumpPadLocations[Event Player.FindJumpPadLoop] = Vector(0, 0, 0);
  • Destroy Effect(Event Player.JumpPadEffects[Event Player.FindJumpPadLoop]);
  • 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);
  • Play Effect(Event Player, Explosion Sound, Color(White), Event Player, 50);
  • }
  • }
  • rule("Subroutine - Reset jump pads")
  • {
  • event
  • {
  • Subroutine;
  • ResetJumpPads;
  • }
  • actions
  • {
  • For Player Variable(Event Player, RemoveEffectsLoop, 0, Count Of(Event Player.JumpPadEffects), 1);
  • Destroy Effect(Event Player.JumpPadEffects[Event Player.RemoveEffectsLoop]);
  • End;
  • Event Player.JumpPadLocations = Empty Array;
  • 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);
  • Disallow Button(Event Player, Button(Ability 1));
  • Wait(0.230, Ignore Condition);
  • Allow Button(Event Player, Ability 1);
  • Allow Button(Event Player, Button(Ability 1));
  • Wait(0.020, Ignore Condition);
  • Press Button(Event Player, Ability 1);
  • Press Button(Event Player, Button(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."));
  • 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
  • {
  • Event Player.GrapplePoint = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(
  • Event Player) * 200, Null, All Players(All Teams), False);
  • If(Distance Between(Position Of(Event Player), Event Player.GrapplePoint) <= 20);
  • Event Player.IsGrappling = True;
  • Create Beam Effect(All Players(All Teams), Good Beam, Event Player, Event Player.GrapplePoint, Sky Blue,
  • Create Beam Effect(All Players(All Teams), Good Beam, Event Player, Event Player.GrapplePoint, Color(Sky Blue),
  • Visible To Position and Radius);
  • Event Player.GrappleEffect = Last Created Entity;
  • End;
  • }
  • }
  • rule("Is using Grapple")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.IsGrappling == True;
  • Is Using Ability 2(Event Player) == True;
  • }
  • actions
  • {
  • Apply Impulse(Event Player, Vector Towards(Position Of(Event Player), Event Player.GrapplePoint), Max(Min(Distance Between(
  • Position Of(Event Player), 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
  • {
  • Event Player.IsGrappling = False;
  • Destroy Effect(Event Player.GrappleEffect);
  • }
  • }
  • disabled rule("Death door")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Death door position")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.DeathDoorPositions = Empty Array;
  • Global.DeathDoorPositions = Append To Array(Global.DeathDoorPositions, Vector(117.530, -2.052, -5.727));
  • Create Beam Effect(All Players(All Teams), Good Beam, Global.DeathDoorPositions[0] + Vector(0, 2, 0),
  • Global.DeathDoorPositions[0] + Vector(0, -2, 0), Red, Visible To Position and Radius);
  • Global.DeathDoorPositions[0] + Vector(0, -2, 0), Color(Red), Visible To Position and Radius);
  • Global.DeathDoorPositions = Append To Array(Global.DeathDoorPositions, Vector(101.954, -0.052, 15.638));
  • Create Beam Effect(All Players(All Teams), Good Beam, Global.DeathDoorPositions[1] + Vector(0, 2, 0),
  • Global.DeathDoorPositions[1] + Vector(0, -2, 0), Red, Visible To Position and Radius);
  • Global.DeathDoorPositions[1] + Vector(0, -2, 0), Color(Red), Visible To Position and Radius);
  • }
  • }
  • rule("Kill when in death door")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is True For Any(Global.DeathDoorPositions, Distance Between(Current Array Element, Event Player) <= 2) == True;
  • }
  • actions
  • {
  • Kill(Event Player, Null);
  • }
  • }
  • disabled rule("Misc stuff")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Reset yourself")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Reload) == True;
  • Is Button Held(Event Player, Button(Reload)) == True;
  • }
  • actions
  • {
  • Kill(Event Player, Null);
  • }
  • }
  • rule("Reset on death")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • actions
  • {
  • Wait(0.032, Ignore Condition);
  • Set Status(Event Player, Null, Hacked, 0.500);
  • Teleport(Event Player, Global.CheckpointPositions[Event Player.CurrentCheckpoint] + Vector(0, 0.250, 0));
  • Wait(0.032, Ignore Condition);
  • Call Subroutine(SetCurrentRingsArray);
  • If(Count Of(Event Player.CurrentCheckpointRingsArray) > 0);
  • Set Facing(Event Player, Direction Towards(Eye Position(Event Player), Event Player.CurrentCheckpointRingsArray[0]), To World);
  • Else;
  • Set Facing(Event Player, Direction Towards(Eye Position(Event Player),
  • Global.CheckpointPositions[Event Player.CurrentCheckpoint + 1]), To World);
  • End;
  • Wait(0.250, Ignore Condition);
  • Resurrect(Event Player);
  • Wait(0.016, 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;
  • Is Button Held(Event Player, Button(Interact)) == True;
  • Is Button Held(Event Player, Button(Ultimate)) == True;
  • Is Button Held(Event Player, Button(Crouch)) == True;
  • }
  • actions
  • {
  • Event Player.CurrentCheckpoint = 0;
  • Event Player.Timer = 0;
  • Event Player.TimerChase = 0;
  • Kill(Event Player, Null);
  • }
  • }
  • rule("Last Checkpoint reached")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.CurrentCheckpoint + 1 == Count Of(Global.CheckpointPositions);
  • }
  • actions
  • {
  • Event Player.FinalTime = Event Player.Timer;
  • Event Player.TimerChase = Event Player.FinalTime;
  • If(Event Player.BestTime > 0);
  • Event Player.BestTime = Min(Event Player.FinalTime, Event Player.BestTime);
  • Else;
  • Event Player.BestTime = Event Player.FinalTime;
  • End;
  • Big Message(All Players(All Teams), Custom String("{0} Completed the course in {1}!", Event Player, Event Player.FinalTime));
  • 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);
  • Play Effect(All Players(All Teams), Good Explosion, Color(Sky Blue), Event Player, 15);
  • Play Effect(All Players(All Teams), Good Explosion, Color(Blue), Event Player, 10);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(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