Return to post
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.7"
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 Blizz World"
}
lobby
{
Allow Players Who Are In Queue: Yes
}
modes
{
Skirmish
{
enabled maps
{
Blizzard World
}
}
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(All Players(All Teams), Null, Custom String("Map difficulty: Medium {0}", Icon String(Warning), Null, Null), Null,
Right, 1, White, Orange, White, Visible To and String, Default Visibility);
Create HUD Text(Event Player, Null, Custom String("Map difficulty: Medium {0}", Icon String(Warning), Null, Null), Null, Right, 1,
White, Orange, 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 2nd checkpoint, explaining Jump pads"
Create In-World Text(Filtered Array(All Players(All Teams), Compare(Player Variable(Current Array Element, CurrentCheckpoint), ==,
1)), 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), 2), Vector(0, -2, 0)), 1, Do Not Clip,
Visible To Position and String, Blue, Default Visibility);
"----- Instructions on 3rd checkpoint, explaining grapple"
Create In-World Text(Filtered Array(All Players(All Teams), Compare(Player Variable(Current Array Element, CurrentCheckpoint), ==,
2)), 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), 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, False);
Set Secondary Fire Enabled(Event Player, True);
Else If(Compare(Player Variable(Event Player, CurrentCheckpoint), ==, 2));
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), ==, 3));
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), ==, 4));
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), ==, 5));
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), ==, 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, True);
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, False);
Set Ability 2 Enabled(Event Player, True);
Set Secondary Fire Enabled(Event Player, True);
Else If(Compare(Player Variable(Event Player, CurrentCheckpoint), ==, 10));
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), ==, 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, False);
Set Ability 2 Enabled(Event Player, True);
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, False);
Else If(Compare(Player Variable(Event Player, CurrentCheckpoint), ==, 15));
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
{
Set Global Variable(CheckpointPositions, Empty Array);
Set Global Variable(CheckpointRadius, Empty Array);
"--- Start"
Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(2.947, 1.599, 11.921)));
Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 2.500));
"--- Statue"
Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(3.297, 5.299, 41.802)));
Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 3.850));
"--- First control point"
Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(2.948, 3.599, 74.192)));
Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 2.500));
"--- At tank"
Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(-26.488, 7.701, 87.481)));
Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 2.500));
"--- First bridge, upper entrance"
Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(-63.110, 8.269, 80.420)));
Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 2.500));
"--- Second control point"
Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(-54.107, 1.305, 110.376)));
Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 2.500));
"--- After pit near last control point"
Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(-110.260, -2.548, 113.069)));
Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 2.500));
"--- Exit of last defenders spawn"
Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(-141.306, 2.452, 104.917)));
Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 3.500));
"--- Balcony area half way through last control point"
Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(-111.281, 6.446, 146.319)));
Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 4.500));
"--- Above payload spawn"
Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(5.829, 7.722, 86.132)));
Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 3));
"--- Flower fontain at attacker spawn"
Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(3.028, -0.102, -6.994)));
Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 2.750));
"--- Above Mike Morhaime"
Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(-77.278, 6.574, 66.153)));
Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 3));
"--- Second bridge bridge on way to second control point"
Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(-62.731, 7.243, 101.033)));
Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 2.500));
"--- Under second bridge bridge on way to second control point"
Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(-61.445, 1.305, 100.506)));
Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 2.500));
"--- Water side near mr. Shark"
Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(-18.564, 1.990, 112.210)));
Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 2.500));
"--- Flight to Duskwood"
Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(-8.276, 7.764, 52.207)));
Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 3));
"--- Final control point"
Set Global Variable(CheckpointPositions, Append To Array(Global Variable(CheckpointPositions), Vector(-122.052, 1.546, 110.544)));
Set Global Variable(CheckpointRadius, Append To Array(Global Variable(CheckpointRadius), 3.150));
}
}
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);
}
}
rule("Disable jumping for specific checkpoint")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Player Variable(Event Player, CurrentCheckpoint) == 12;
}
actions
{
Disallow Button(Event Player, Jump);
}
}
rule("Enable jumping for non-specific checkpoints")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Player Variable(Event Player, CurrentCheckpoint) != 12;
}
actions
{
Allow Button(Event Player, Jump);
}
}
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(-71.538, 5.299, 125.205)));
"------------------------"
Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), 6));
Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(-122.073, 6.547, 110.555)));
"------------------------"
Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), 8));
Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(-61.614, 14.499, 118.687)));
"------------------------ These are just pushed out of the way so they can't be seen"
Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), 9));
Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(1, -10, 1)));
Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(1, -10, 1)));
Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(1, -10, 1)));
Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(1, -10, 1)));
"------------------------"
Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), 10));
Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(3, 6.604, 28.235)));
Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(3, 15.302, 43.733)));
Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(-17.081, 17, 73.483)));
Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(-47.842, 2.494, 63.699)));
"------------------------"
Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), 14));
Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(4.751, 17.730, 132.878)));
Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(29.246, 15.927, 110.057)));
Set Global Variable(RingPositions, Append To Array(Global Variable(RingPositions), Vector(18.788, 10.699, 78.598)));
}
}
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);
Create Effect(Event Player, Good Aura, Yellow, Value In Array(Player Variable(Event Player, CurrentCheckpointRingsArray), 0),
1.500, Visible To Position and Radius);
Create Effect(Event Player, Good Aura, Yellow, Value In Array(Player Variable(Event Player, CurrentCheckpointRingsArray), 1),
1.500, Visible To Position and Radius);
Create Effect(Event Player, Good Aura, Yellow, Value In Array(Player Variable(Event Player, CurrentCheckpointRingsArray), 2),
1.500, Visible To Position and Radius);
Create Effect(Event Player, Good Aura, Yellow, Value In Array(Player Variable(Event Player, CurrentCheckpointRingsArray), 3),
1.500, Visible To Position and Radius);
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);
Set Player Variable(Event Player, BestTime, Min(Player Variable(Event Player, FinalTime), Player Variable(Event Player,
BestTime)));
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);
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;
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;
}
}