Return to post
settings
{
main
{
Description: "v1.10: Game mode for Lucios to race to the finish line with a little bit of wallriding skill! - Initially created by waycoolway - Heavily updated by Giacomand - Additional maps by Fahzix - https://workshop.elohell.gg/uOi5fgHDI/"
Description: "v1.11: Game mode for Lucios to race to the finish line with a little bit of wallriding skill! - Initially created by waycoolway - Heavily updated by Giacomand - Additional maps by Fahzix - https://workshop.elohell.gg/uOi5fgHDI/"
}
lobby
{
Allow Players Who Are In Queue: Yes
Match Voice Chat: Enabled
Return To Lobby: Never
}
modes
{
disabled Deathmatch
{
Self Initiated Respawn: Off
}
disabled Hybrid
{
Capture Speed Modifier: 10%
Payload Speed Modifier: 10%
}
Skirmish
{
enabled maps
{
Eichenwalde
Havana
Hollywood
King's Row
Lijiang Tower
Nepal
Numbani
Temple of Anubis
}
}
General
{
Allow Hero Switching: Off
Game Mode Start: Manual
Hero Limit: Off
Respawn Time Scalar: 0%
}
}
heroes
{
General
{
Lúcio
{
Healing Received: 500%
Health: 500%
Primary Fire: Off
Soundwave: Off
Ultimate Ability Sound Barrier: Off
}
enabled heroes
{
Lúcio
}
}
}
}
variables
{
global:
2: StartingPosition
4: CheckpointList
6: CheckpointRadius
8: DebugEnabled
9: MapVoteTimeStart
10: MapVoteDuration
11: LoopIndex
13: MapEditorCheckpointList
15: BestRecordsNameList
19: TeleportEntranceList
20: TeleportExitList
21: VotingForNewMap
22: StartingPositionRadius
25: BestRecordsTimeList
player:
2: NewCheckpointLocation
5: CurrentCheckpointID
7: RaceTime
11: PlayerLoopIndex
12: LastCreatedSpeedometerID
17: RespawningSelf
18: Spawning
21: VotedForNewMap
23: InSavingMode
25: BestTime
}
disabled rule("DEBUG: Enable Debug? (Enable this rule to enable debug mode)")
{
event
{
Ongoing - Global;
}
actions
{
Global.DebugEnabled = True;
}
}
rule("DEBUG: Setup Global Debug")
{
event
{
Ongoing - Global;
}
conditions
{
Global.DebugEnabled == True;
}
actions
{
Create HUD Text(All Players(All Teams), String("{0}: {1}", Custom String("No. Checkpoints In Play"), Count Of(
Global.CheckpointList)), Null, Null, Right, 0, White, White, White, Visible To and String, Default Visibility);
Global.CheckpointList)), Null, Null, Right, 0, Color(White), Color(White), Color(White), Visible To and String,
Default Visibility);
Create HUD Text(All Players(All Teams), String("{0}: {1}", Custom String("No. Checkpoints In Planning Mode"), Count Of(
Global.MapEditorCheckpointList)), Null, Null, Right, 0, White, White, White, Visible To and String, Default Visibility);
Global.MapEditorCheckpointList)), Null, Null, Right, 0, Color(White), Color(White), Color(White), Visible To and String,
Default Visibility);
Create HUD Text(All Players(All Teams), Null, Custom String(
"Primary Fire: Select new checkpoint location - Secondary Fire: Save selected checkpoint location"), Custom String(
"Soundwave: Undo last save - Ultimate: Put saved checkpoints into play - Ult Status: Toggle save mode"), Right, 0, White,
White, White, Visible To and String, Default Visibility);
"Soundwave: Undo last save - Ultimate: Put saved checkpoints into play - Ult Status: Toggle save mode"), Right, 0, Color(
White), Color(White), Color(White), Visible To and String, Default Visibility);
Set Match Time(3599);
}
}
rule("DEBUG: Label Rings")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Global.DebugEnabled == True;
}
actions
{
Create In-World Text(Event Player, String("#{0}", Event Player.CurrentCheckpointID + -2),
Global.CheckpointList[Event Player.CurrentCheckpointID + -3], 2, Clip Against Surfaces, Visible To Position and String, White,
Default Visibility);
Global.CheckpointList[Event Player.CurrentCheckpointID + -3], 2, Clip Against Surfaces, Visible To Position and String, Color(
White), Default Visibility);
Create In-World Text(Event Player, String("#{0}", Event Player.CurrentCheckpointID + -1),
Global.CheckpointList[Event Player.CurrentCheckpointID + -2], 2, Clip Against Surfaces, Visible To Position and String, White,
Default Visibility);
Global.CheckpointList[Event Player.CurrentCheckpointID + -2], 2, Clip Against Surfaces, Visible To Position and String, Color(
White), Default Visibility);
Create In-World Text(Event Player, String("#{0}", Event Player.CurrentCheckpointID + 0),
Global.CheckpointList[Event Player.CurrentCheckpointID + -1], 2, Clip Against Surfaces, Visible To Position and String, White,
Default Visibility);
Global.CheckpointList[Event Player.CurrentCheckpointID + -1], 2, Clip Against Surfaces, Visible To Position and String, Color(
White), Default Visibility);
Create In-World Text(Event Player, String("#{0}", Event Player.CurrentCheckpointID + 1),
Global.CheckpointList[Event Player.CurrentCheckpointID + 0], 2, Clip Against Surfaces, Visible To Position and String, White,
Default Visibility);
Global.CheckpointList[Event Player.CurrentCheckpointID + 0], 2, Clip Against Surfaces, Visible To Position and String, Color(
White), Default Visibility);
Create In-World Text(Event Player, String("#{0}", Event Player.CurrentCheckpointID + 2),
Global.CheckpointList[Event Player.CurrentCheckpointID + 1], 2, Clip Against Surfaces, Visible To Position and String, White,
Default Visibility);
Global.CheckpointList[Event Player.CurrentCheckpointID + 1], 2, Clip Against Surfaces, Visible To Position and String, Color(
White), Default Visibility);
Create In-World Text(Event Player, String("#{0}", Event Player.CurrentCheckpointID + 3),
Global.CheckpointList[Event Player.CurrentCheckpointID + 2], 2, Clip Against Surfaces, Visible To Position and String, White,
Default Visibility);
Global.CheckpointList[Event Player.CurrentCheckpointID + 2], 2, Clip Against Surfaces, Visible To Position and String, Color(
White), Default Visibility);
}
}
rule("DEBUG: Display Coordinates")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Global.DebugEnabled == True;
}
actions
{
Create HUD Text(All Players(All Teams), Null, Event Player, Event Player.NewCheckpointLocation, Left, 0, White, Blue, White,
Visible To and String, Default Visibility);
Create HUD Text(All Players(All Teams), Null, Event Player, Event Player.NewCheckpointLocation, Left, 0, Color(White), Color(Blue),
Color(White), Visible To and String, Default Visibility);
Global.MapEditorCheckpointList = Empty Array;
Create HUD Text(Event Player, Null, Custom String("Saving Mode:"), Event Player.InSavingMode, Right, 10, Red, Red, White,
Visible To and String, Default Visibility);
Create HUD Text(Event Player, Null, Custom String("Saving Mode:"), Event Player.InSavingMode, Right, 10, Color(Red), Color(Red),
Color(White), Visible To and String, Default Visibility);
Event Player.InSavingMode = False;
Event Player.NewCheckpointLocation = Vector(0, 0, 0);
Event Player.D = Vector(0, 0, 0);
Event Player.E = Vector(0, 0, 0);
}
}
rule("DEBUG - CREATE MODE: Coordinate Finding (Primary Fire)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Button Held(Event Player, Primary Fire) == True;
Is Button Held(Event Player, Button(Primary Fire)) == True;
Global.DebugEnabled == True;
Event Player.InSavingMode == False;
}
actions
{
Event Player.D = Ray Cast Hit Position(Eye Position(Event Player), Facing Direction Of(Event Player) * 1000 + Position Of(
Event Player), Empty Array, Event Player, True);
Event Player.D = Vector(Round To Integer(X Component Of(Event Player.D), To Nearest), Round To Integer(Y Component Of(
Event Player.D), To Nearest), Round To Integer(Z Component Of(Event Player.D), To Nearest));
Event Player.G = Ray Cast Hit Normal(Eye Position(Event Player), Facing Direction Of(Event Player) * 1000 + Position Of(
Event Player), Empty Array, Event Player, True);
Skip If(Event Player.D == Event Player.E, 3);
Event Player.NewCheckpointLocation = Event Player.D;
Event Player.E = Event Player.D;
Skip(1);
Event Player.NewCheckpointLocation += Event Player.G * 0.500;
Play Effect(All Players(All Teams), Good Explosion, White, Event Player.NewCheckpointLocation, 0.200);
Play Effect(All Players(All Teams), Good Explosion, Color(White), Event Player.NewCheckpointLocation, 0.200);
Event Player.G = Vector(Round To Integer(0, Up), 0, 0);
}
}
rule("DEBUG - CREATE MODE: Save Ring (Secondary Fire)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Global.DebugEnabled == True;
Is Button Held(Event Player, Secondary Fire) == True;
Is Button Held(Event Player, Button(Secondary Fire)) == True;
Array Contains(Global.MapEditorCheckpointList, Event Player.NewCheckpointLocation) == False;
Event Player.InSavingMode == False;
}
actions
{
Modify Global Variable(MapEditorCheckpointList, Append To Array, Event Player.NewCheckpointLocation);
Play Effect(All Players(All Teams), Ring Explosion Sound, Green, Event Player, 75);
Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Green), Event Player, 75);
Big Message(Event Player, String("Saved"));
Wait(0.250, Ignore Condition);
}
}
rule("DEBUG - CREATE MODE: Undo Ring (Interact)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Global.DebugEnabled == True;
Is Button Held(Event Player, Interact) == True;
Is Button Held(Event Player, Button(Interact)) == True;
Event Player.InSavingMode == False;
}
actions
{
Modify Global Variable(MapEditorCheckpointList, Remove From Array By Index, Count Of(Global.MapEditorCheckpointList) - 1);
Play Effect(All Players(All Teams), Explosion Sound, Green, Event Player, 75);
Play Effect(All Players(All Teams), Explosion Sound, Color(Green), Event Player, 75);
Wait(0.250, Ignore Condition);
Big Message(Event Player, String("Backward"));
}
}
rule("DEBUG - CREATE MODE: Play Rings (Ultimate)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Global.DebugEnabled == True;
Is Button Held(Event Player, Ultimate) == True;
Is Button Held(Event Player, Button(Ultimate)) == True;
Event Player.InSavingMode == False;
}
actions
{
Play Effect(All Players(All Teams), Buff Explosion Sound, Green, Event Player, 75);
Play Effect(All Players(All Teams), Buff Explosion Sound, Color(Green), Event Player, 75);
Global.CheckpointList = Global.MapEditorCheckpointList;
Big Message(Event Player, String("Ready"));
}
}
rule("DEBUG: Toggle Save Mode - Teleport to the rings so you can save them in the editor easily")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Global.DebugEnabled == True;
Is Communicating(Event Player, Ultimate Status) == True;
}
actions
{
Event Player.InSavingMode = !Event Player.InSavingMode;
Event Player.Y = 0;
Event Player.CurrentCheckpointID = 0;
Skip If(Event Player.InSavingMode == False, 3);
Big Message(All Players(All Teams), String("{0} {1}", String("Save"), String("Status", Distance Between(Vector(0, 0, 0), Vector(0,
0, 0)))));
Start Camera(Event Player, Global.CheckpointList[Event Player.Y], Global.CheckpointList[Event Player.Y + 1], 0);
Skip(1);
Stop Camera(Event Player);
}
}
rule("DEBUG - SAVE MODE: Go to next ring")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Button Held(Event Player, Secondary Fire) == True;
Is Button Held(Event Player, Button(Secondary Fire)) == True;
Global.DebugEnabled == True;
Event Player.InSavingMode == True;
(Event Player.Y < Count Of(Global.CheckpointList) - 1) == True;
}
actions
{
Event Player.Y += 1;
Big Message(All Players(All Teams), String("{0} {1}", String("Checkpoint"), Event Player.Y + 1));
Event Player.CurrentCheckpointID = Event Player.Y;
}
}
rule("DEBUG - SAVE MODE: Go to previous ring")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Button Held(Event Player, Primary Fire) == True;
Is Button Held(Event Player, Button(Primary Fire)) == True;
Global.DebugEnabled == True;
Event Player.InSavingMode == True;
(Event Player.Y > 0) == True;
}
actions
{
Event Player.Y -= 1;
Big Message(All Players(All Teams), String("{0} {1}", String("Checkpoint"), Event Player.Y + 1));
Event Player.CurrentCheckpointID = Event Player.Y;
}
}
rule("ON: Assembling Heroes")
{
event
{
Ongoing - Global;
}
conditions
{
Is Assembling Heroes == True;
}
actions
{
Set Match Time(0);
Disable Built-In Game Mode Completion;
}
}
rule("ON: Setup")
{
event
{
Ongoing - Global;
}
conditions
{
Is In Setup == True;
}
actions
{
Set Match Time(0);
}
}
rule("MAP: Echeinwalde Rings by waycoolway")
{
event
{
Ongoing - Global;
}
conditions
{
disabled Distance Between(Nearest Walkable Position(Vector(0, 0, 0)), Vector(1.880, 0.350, -2.380)) < 0.010;
Current Map == Map(Eichenwalde);
}
actions
{
Global.StartingPosition = Vector(127.090, 15.939, -13.110);
Global.TeleportEntranceList = Empty Array;
Global.TeleportExitList = Empty Array;
Global.CheckpointList = Empty Array;
Modify Global Variable(CheckpointList, Append To Array, Vector(125, 18, -25));
Modify Global Variable(CheckpointList, Append To Array, Vector(125, 16, -40));
Modify Global Variable(CheckpointList, Append To Array, Vector(127, 12.500, -55));
Modify Global Variable(CheckpointList, Append To Array, Vector(115, 14, -60));
Modify Global Variable(CheckpointList, Append To Array, Vector(108, 16, -31));
Modify Global Variable(CheckpointList, Append To Array, Vector(90.500, 17.500, -19));
Modify Global Variable(CheckpointList, Append To Array, Vector(89.500, 18.500, -53));
Modify Global Variable(CheckpointList, Append To Array, Vector(89.390, 21, -63.500));
Modify Global Variable(CheckpointList, Append To Array, Vector(92.500, 14.500, -79));
Modify Global Variable(CheckpointList, Append To Array, Vector(89.399, 10, -94));
Modify Global Variable(CheckpointList, Append To Array, Vector(96, 8, -84.500));
Modify Global Variable(CheckpointList, Append To Array, Vector(83.500, 4.500, -86.500));
Modify Global Variable(CheckpointList, Append To Array, Vector(67, 6, -83.500));
Modify Global Variable(CheckpointList, Append To Array, Vector(59, 7.500, -79));
Modify Global Variable(CheckpointList, Append To Array, Vector(52, 7.500, -67));
Modify Global Variable(CheckpointList, Append To Array, Vector(46.500, 9.500, -56));
Modify Global Variable(CheckpointList, Append To Array, Vector(42.500, 11, -44));
Modify Global Variable(CheckpointList, Append To Array, Vector(46.399, 13, -38));
Modify Global Variable(CheckpointList, Append To Array, Vector(43, 15.500, -30));
Modify Global Variable(CheckpointList, Append To Array, Vector(26, 3, -6.500));
Modify Global Variable(CheckpointList, Append To Array, Vector(18, 5, -9));
Modify Global Variable(CheckpointList, Append To Array, Vector(7, 9, -11));
Modify Global Variable(CheckpointList, Append To Array, Vector(-4, 9.500, -15));
Modify Global Variable(CheckpointList, Append To Array, Vector(-17, 10, -19));
Modify Global Variable(CheckpointList, Append To Array, Vector(-29.500, 14, -19));
Modify Global Variable(CheckpointList, Append To Array, Vector(-30, 15, -24));
Modify Global Variable(CheckpointList, Append To Array, Vector(-31, 19, -35.500));
Modify Global Variable(CheckpointList, Append To Array, Vector(-13, 19, -35));
Modify Global Variable(CheckpointList, Append To Array, Vector(5.500, 16, -31.500));
Modify Global Variable(CheckpointList, Append To Array, Vector(11.500, 14, -26));
Modify Global Variable(CheckpointList, Append To Array, Vector(32, 21, -35));
Modify Global Variable(CheckpointList, Append To Array, Vector(30, 23, -41));
Modify Global Variable(CheckpointList, Append To Array, Vector(33, 25, -56));
Modify Global Variable(CheckpointList, Append To Array, Vector(30, 26, -67));
Modify Global Variable(CheckpointList, Append To Array, Vector(30, 24, -82.500));
Modify Global Variable(CheckpointList, Append To Array, Vector(42, 21.500, -103));
Modify Global Variable(CheckpointList, Append To Array, Vector(56, 24, -105.500));
Modify Global Variable(CheckpointList, Append To Array, Vector(83, 20, -105));
Modify Global Variable(CheckpointList, Append To Array, Vector(94.500, 22, -90.500));
Modify Global Variable(CheckpointList, Append To Array, Vector(97.500, 16, -77));
}
}
rule("MAP: Lijiang Tower Rings by Giacomand")
{
event
{
Ongoing - Global;
}
conditions
{
disabled Distance Between(Nearest Walkable Position(Vector(0, 0, 0)), Vector(5.880, 0, -10.130)) < 0.010;
Current Map == Map(Lijiang Tower);
}
actions
{
Global.StartingPosition = Vector(-65.501, 4.839, -32.011);
Global.StartingPosition = Vector(-55.359, 266.173, 326.081);
Global.StartingPosition = Vector(-64.012, 99.177, 162.586);
Global.TeleportEntranceList = Empty Array;
Global.TeleportExitList = Empty Array;
Modify Global Variable(TeleportEntranceList, Append To Array, Vector(53, 95, 149));
Modify Global Variable(TeleportExitList, Append To Array, Vector(-65.500, 5, -32));
Modify Global Variable(TeleportEntranceList, Append To Array, Vector(61, 21, -14));
Modify Global Variable(TeleportExitList, Append To Array, Vector(-54.338, 266.176, 325.986));
Global.CheckpointList = Empty Array;
Modify Global Variable(CheckpointList, Append To Array, Vector(-60, 100, 148));
Modify Global Variable(CheckpointList, Append To Array, Vector(-51, 102, 142));
Modify Global Variable(CheckpointList, Append To Array, Vector(-15, 97, 148));
Modify Global Variable(CheckpointList, Append To Array, Vector(-4, 99, 160));
Modify Global Variable(CheckpointList, Append To Array, Vector(15, 97, 147));
Modify Global Variable(CheckpointList, Append To Array, Vector(10, 97, 115));
Modify Global Variable(CheckpointList, Append To Array, Vector(-6, 97, 108));
Modify Global Variable(CheckpointList, Append To Array, Vector(-18, 96, 124));
Modify Global Variable(CheckpointList, Append To Array, Vector(-7, 99, 157));
Modify Global Variable(CheckpointList, Append To Array, Vector(-9, 104, 189));
Modify Global Variable(CheckpointList, Append To Array, Vector(-25, 98, 186));
Modify Global Variable(CheckpointList, Append To Array, Vector(-60, 99, 170));
Modify Global Variable(CheckpointList, Append To Array, Vector(-50, 102, 142));
Modify Global Variable(CheckpointList, Append To Array, Vector(-14, 99, 133));
Modify Global Variable(CheckpointList, Append To Array, Vector(15, 98, 134));
Modify Global Variable(CheckpointList, Append To Array, Vector(36, 97, 150));
Modify Global Variable(CheckpointList, Append To Array, Vector(49, 96, 149));
Skip If(True == False, 10000);
Modify Global Variable(CheckpointList, Append To Array, Vector(-53, 4, -34));
Modify Global Variable(CheckpointList, Append To Array, Vector(-39, 3, -42));
Modify Global Variable(CheckpointList, Append To Array, Vector(-12, 5, -54));
Modify Global Variable(CheckpointList, Append To Array, Vector(-8, 10, -70));
Modify Global Variable(CheckpointList, Append To Array, Vector(10, 10, -70));
Modify Global Variable(CheckpointList, Append To Array, Vector(13, 5, -44));
Modify Global Variable(CheckpointList, Append To Array, Vector(21, 9, -24));
Modify Global Variable(CheckpointList, Append To Array, Vector(15, 15, -10));
Modify Global Variable(CheckpointList, Append To Array, Vector(22, 19, -50));
Modify Global Variable(CheckpointList, Append To Array, Vector(34, 11, -68));
Modify Global Variable(CheckpointList, Append To Array, Vector(44, 10, -48));
Modify Global Variable(CheckpointList, Append To Array, Vector(46, 22, -15));
Skip If(True == False, 10000);
Modify Global Variable(CheckpointList, Append To Array, Vector(-33, 269, 311));
Modify Global Variable(CheckpointList, Append To Array, Vector(-8, 270, 277));
Modify Global Variable(CheckpointList, Append To Array, Vector(14, 277, 274));
Modify Global Variable(CheckpointList, Append To Array, Vector(0, 283, 294));
Modify Global Variable(CheckpointList, Append To Array, Vector(5, 275, 264));
Modify Global Variable(CheckpointList, Append To Array, Vector(26, 274, 278));
Modify Global Variable(CheckpointList, Append To Array, Vector(45, 271, 305));
Modify Global Variable(CheckpointList, Append To Array, Vector(35, 270, 338));
Modify Global Variable(CheckpointList, Append To Array, Vector(24, 272, 341));
Modify Global Variable(CheckpointList, Append To Array, Vector(9, 272, 319));
Modify Global Variable(CheckpointList, Append To Array, Vector(-5, 274, 293));
Modify Global Variable(CheckpointList, Append To Array, Vector(0, 274, 280));
Skip If(True == True, 10000);
Modify Global Variable(CheckpointList, Append To Array, Vector(0, 0, 0));
}
}
rule("MAP: Temple of Anubis Rings by Giacomand")
{
event
{
Ongoing - Global;
}
conditions
{
disabled Distance Between(Nearest Walkable Position(Vector(0, 0, 0)), Vector(1.880, -2.440, 2.130)) < 0.010;
Current Map == Map(Temple of Anubis);
}
actions
{
Global.StartingPosition = Vector(-0.123, 1.217, -20.343);
Global.TeleportEntranceList = Empty Array;
Global.TeleportExitList = Empty Array;
Global.CheckpointList = Empty Array;
Modify Global Variable(CheckpointList, Append To Array, Vector(-9, 1, -11));
Modify Global Variable(CheckpointList, Append To Array, Vector(-12, 2, 8));
Modify Global Variable(CheckpointList, Append To Array, Vector(-6.500, 2.500, 19));
Modify Global Variable(CheckpointList, Append To Array, Vector(5, 6, 39));
Modify Global Variable(CheckpointList, Append To Array, Vector(-7, 11, 35));
Modify Global Variable(CheckpointList, Append To Array, Vector(-20, 12, 32));
Modify Global Variable(CheckpointList, Append To Array, Vector(-22, 12.500, 42));
Modify Global Variable(CheckpointList, Append To Array, Vector(-12, 13, 48));
Modify Global Variable(CheckpointList, Append To Array, Vector(-6, 13, 38));
Modify Global Variable(CheckpointList, Append To Array, Vector(-21, 13, 21));
Skip If(False == True, 0);
Modify Global Variable(CheckpointList, Append To Array, Vector(-42, 12, 14));
Modify Global Variable(CheckpointList, Append To Array, Vector(-53, 13, 48));
Modify Global Variable(CheckpointList, Append To Array, Vector(-36, 13, 64));
Modify Global Variable(CheckpointList, Append To Array, Vector(-26, 14, 67));
Modify Global Variable(CheckpointList, Append To Array, Vector(-15, 15, 72));
Modify Global Variable(CheckpointList, Append To Array, Vector(-5, 12, 91));
Modify Global Variable(CheckpointList, Append To Array, Vector(-2, 11, 104));
Modify Global Variable(CheckpointList, Append To Array, Vector(4, 15, 116));
Modify Global Variable(CheckpointList, Append To Array, Vector(-8, 14, 114));
Modify Global Variable(CheckpointList, Append To Array, Vector(-24, 13, 120));
Skip If(False == True, 0);
Modify Global Variable(CheckpointList, Append To Array, Vector(-18, 8, 127));
Modify Global Variable(CheckpointList, Append To Array, Vector(-27, 7, 121));
Modify Global Variable(CheckpointList, Append To Array, Vector(-23, 8, 91));
Modify Global Variable(CheckpointList, Append To Array, Vector(-38, 7, 63));
Modify Global Variable(CheckpointList, Append To Array, Vector(-53, 3, 43));
Modify Global Variable(CheckpointList, Append To Array, Vector(-47, 11, 33));
Modify Global Variable(CheckpointList, Append To Array, Vector(-36, 11, 51));
Modify Global Variable(CheckpointList, Append To Array, Vector(-15, 14, 72));
Modify Global Variable(CheckpointList, Append To Array, Vector(3.050, 13, 78));
Modify Global Variable(CheckpointList, Append To Array, Vector(11, 16, 67));
Skip If(False == True, 0);
Modify Global Variable(CheckpointList, Append To Array, Vector(-4, 18, 62));
Modify Global Variable(CheckpointList, Append To Array, Vector(-32, 2.500, 74));
Modify Global Variable(CheckpointList, Append To Array, Vector(-42, 6, 70));
Modify Global Variable(CheckpointList, Append To Array, Vector(-38, 10, 70));
Modify Global Variable(CheckpointList, Append To Array, Vector(-39, 20.500, 75));
}
}
rule("MAP: Kings Row Rings by Giacomand")
{
event
{
Ongoing - Global;
}
conditions
{
disabled Distance Between(Nearest Walkable Position(Vector(0, 100, 0)), Vector(2.630, 6.300, 0.380)) < 0.010;
Current Map == Map(King's Row);
}
actions
{
Global.StartingPosition = Vector(16.858, 7.173, 16.918);
Global.TeleportEntranceList = Empty Array;
Global.TeleportExitList = Empty Array;
Global.CheckpointList = Empty Array;
Modify Global Variable(CheckpointList, Append To Array, Vector(8, 8, 14));
Modify Global Variable(CheckpointList, Append To Array, Vector(3, 7, 5));
Modify Global Variable(CheckpointList, Append To Array, Vector(-5, 2, -13));
Modify Global Variable(CheckpointList, Append To Array, Vector(-15, 2, -25));
Modify Global Variable(CheckpointList, Append To Array, Vector(-32, 2, -27));
Modify Global Variable(CheckpointList, Append To Array, Vector(-58, 1, -30));
Modify Global Variable(CheckpointList, Append To Array, Vector(-71, 2, -24));
Modify Global Variable(CheckpointList, Append To Array, Vector(-85, 2, -20));
Skip If(False == True, 0);
Modify Global Variable(CheckpointList, Append To Array, Vector(-94, 2, -16));
Modify Global Variable(CheckpointList, Append To Array, Vector(-116, 0, -1));
Modify Global Variable(CheckpointList, Append To Array, Vector(-127, 0, 14));
Modify Global Variable(CheckpointList, Append To Array, Vector(-139, -2, 31));
Modify Global Variable(CheckpointList, Append To Array, Vector(-149, 2, 42));
Modify Global Variable(CheckpointList, Append To Array, Vector(-158, 6, 40));
Modify Global Variable(CheckpointList, Append To Array, Vector(-147, 0, 34));
Modify Global Variable(CheckpointList, Append To Array, Vector(-138, 0, 29));
Modify Global Variable(CheckpointList, Append To Array, Vector(-127, 1, 14));
Modify Global Variable(CheckpointList, Append To Array, Vector(-115, 1, -1));
Skip If(False == True, 0);
Modify Global Variable(CheckpointList, Append To Array, Vector(-102, 2, -13));
Modify Global Variable(CheckpointList, Append To Array, Vector(-94, 3, -17));
Modify Global Variable(CheckpointList, Append To Array, Vector(-90, 3, -34));
Modify Global Variable(CheckpointList, Append To Array, Vector(-82, 2, -45));
Modify Global Variable(CheckpointList, Append To Array, Vector(-73, 4, -46));
Modify Global Variable(CheckpointList, Append To Array, Vector(-62, 2, -46));
Modify Global Variable(CheckpointList, Append To Array, Vector(-53, 2, -39));
Modify Global Variable(CheckpointList, Append To Array, Vector(-49, 1, -28));
Modify Global Variable(CheckpointList, Append To Array, Vector(-38, 2, -22));
Modify Global Variable(CheckpointList, Append To Array, Vector(-19, 2, -26));
Skip If(False == True, 0);
Modify Global Variable(CheckpointList, Append To Array, Vector(-6, 3, -25));
}
}
rule("MAP: Numbani Rings by Giacomand")
{
event
{
Ongoing - Global;
}
conditions
{
disabled Distance Between(Nearest Walkable Position(Vector(0, 0, 0)), Vector(-2.130, 0.350, 3.130)) < 0.010;
Current Map == Map(Numbani);
}
actions
{
Global.StartingPosition = Vector(6.079, 1.002, -0.311);
Global.TeleportEntranceList = Empty Array;
Global.TeleportExitList = Empty Array;
Global.CheckpointList = Empty Array;
Modify Global Variable(CheckpointList, Append To Array, Vector(19, 1.500, 12));
Modify Global Variable(CheckpointList, Append To Array, Vector(55.003, 3.500, 15.991));
Modify Global Variable(CheckpointList, Append To Array, Vector(70, 4, 4));
Modify Global Variable(CheckpointList, Append To Array, Vector(85.646, 6.001, -20.354));
Modify Global Variable(CheckpointList, Append To Array, Vector(97.832, 8, -32.471));
Modify Global Variable(CheckpointList, Append To Array, Vector(113.830, 9.010, -22.558));
Modify Global Variable(CheckpointList, Append To Array, Vector(128, 10, 1));
Modify Global Variable(CheckpointList, Append To Array, Vector(141.764, 11.047, 13.438));
Modify Global Variable(CheckpointList, Append To Array, Vector(143.500, 8.999, 30.981));
Modify Global Variable(CheckpointList, Append To Array, Vector(134.796, 10.016, 38.979));
Skip If(False == True, 0);
Modify Global Variable(CheckpointList, Append To Array, Vector(112.446, 11.171, 24.814));
Modify Global Variable(CheckpointList, Append To Array, Vector(89.354, 1, 24.646));
Modify Global Variable(CheckpointList, Append To Array, Vector(83.354, 10.008, 19.646));
Modify Global Variable(CheckpointList, Append To Array, Vector(80, 2, -7));
Modify Global Variable(CheckpointList, Append To Array, Vector(99, 1.500, -9));
Modify Global Variable(CheckpointList, Append To Array, Vector(117, -1.500, 2));
Modify Global Variable(CheckpointList, Append To Array, Vector(139, -2.500, 4));
Modify Global Variable(CheckpointList, Append To Array, Vector(178, 0.500, -4));
Modify Global Variable(CheckpointList, Append To Array, Vector(204, 2, 3));
Modify Global Variable(CheckpointList, Append To Array, Vector(191.999, 2.140, 28.520));
Skip If(False == True, 0);
Modify Global Variable(CheckpointList, Append To Array, Vector(177, 7, 16));
Modify Global Variable(CheckpointList, Append To Array, Vector(177, -1, 4.999));
Modify Global Variable(CheckpointList, Append To Array, Vector(161.876, 0, 6.516));
Modify Global Variable(CheckpointList, Append To Array, Vector(157.021, 2, 12.968));
Modify Global Variable(CheckpointList, Append To Array, Vector(150.221, 4.992, 24.373));
Modify Global Variable(CheckpointList, Append To Array, Vector(137.354, 9.007, 22.646));
Modify Global Variable(CheckpointList, Append To Array, Vector(143.242, 9.049, 13.435));
Modify Global Variable(CheckpointList, Append To Array, Vector(163, 6, -3));
Modify Global Variable(CheckpointList, Append To Array, Vector(178, 5.500, 13));
Modify Global Variable(CheckpointList, Append To Array, Vector(184, 1.500, 37));
Skip If(False == True, 0);
Modify Global Variable(CheckpointList, Append To Array, Vector(219, 1, 38));
Modify Global Variable(CheckpointList, Append To Array, Vector(219, 1, 8));
Modify Global Variable(CheckpointList, Append To Array, Vector(187.699, 2.022, 2.047));
Modify Global Variable(CheckpointList, Append To Array, Vector(142.072, 0.000, 11.495));
Modify Global Variable(CheckpointList, Append To Array, Vector(101, -0.500, 21));
Skip If(True == False, 0);
}
}
rule("MAP: Havana Rings by Giacomand")
{
event
{
Ongoing - Global;
}
conditions
{
disabled Distance Between(Nearest Walkable Position(Vector(0, 0, 0)), Vector(-10.130, 8.050, -30.130)) < 0.010;
Current Map == Map(Havana);
}
actions
{
Global.StartingPosition = Vector(-4.271, 7.174, -93.840);
Global.TeleportEntranceList = Empty Array;
Global.TeleportExitList = Empty Array;
Global.CheckpointList = Empty Array;
Modify Global Variable(CheckpointList, Append To Array, Vector(-7, 11, -73));
Modify Global Variable(CheckpointList, Append To Array, Vector(-20, 15, -65));
Modify Global Variable(CheckpointList, Append To Array, Vector(-42, 16, -55.500));
Modify Global Variable(CheckpointList, Append To Array, Vector(-62, 14, -44));
Modify Global Variable(CheckpointList, Append To Array, Vector(-78.449, 10.627, -55.551));
Modify Global Variable(CheckpointList, Append To Array, Vector(-68, 14, -72.500));
Modify Global Variable(CheckpointList, Append To Array, Vector(-64, 21, -57));
Modify Global Variable(CheckpointList, Append To Array, Vector(-44, 22, -55.500));
Modify Global Variable(CheckpointList, Append To Array, Vector(-29.981, 20, -47.195));
Modify Global Variable(CheckpointList, Append To Array, Vector(-34, 6.500, -27));
Skip If(False == True, 0);
Modify Global Variable(CheckpointList, Append To Array, Vector(-37, 14, -41));
Modify Global Variable(CheckpointList, Append To Array, Vector(-29.040, 14.999, -54.979));
Modify Global Variable(CheckpointList, Append To Array, Vector(-25, 7.500, -87));
Modify Global Variable(CheckpointList, Append To Array, Vector(-19.109, 8.200, -90.249));
Modify Global Variable(CheckpointList, Append To Array, Vector(-23.874, 15.505, -62));
Skip If(False == True, 0);
}
}
rule("MAP: Nepal Rings by Fahzix")
{
event
{
Ongoing - Global;
}
conditions
{
disabled Distance Between(Nearest Walkable Position(Vector(0, 0, 0)), Vector(-18.130, 13.300, -1.880)) < 0.010;
Current Map == Map(Nepal);
}
actions
{
Global.StartingPosition = Vector(-37.771, 15.973, -61.176);
Global.TeleportEntranceList = Empty Array;
Global.TeleportExitList = Empty Array;
Global.CheckpointList = Empty Array;
Modify Global Variable(TeleportEntranceList, Append To Array, Vector(-23, 17, -21));
Modify Global Variable(TeleportExitList, Append To Array, Vector(76, 130, -70));
Modify Global Variable(CheckpointList, Append To Array, Vector(-40, 16, -53));
Modify Global Variable(CheckpointList, Append To Array, Vector(-44, 14, -29));
Modify Global Variable(CheckpointList, Append To Array, Vector(-44, 16, -20));
Modify Global Variable(CheckpointList, Append To Array, Vector(-42, 18, 4));
Modify Global Variable(CheckpointList, Append To Array, Vector(-44, 17, 20));
Modify Global Variable(CheckpointList, Append To Array, Vector(-48, 21, 29));
Modify Global Variable(CheckpointList, Append To Array, Vector(-57, 25, 29));
Modify Global Variable(CheckpointList, Append To Array, Vector(-60, 29, 30));
Modify Global Variable(CheckpointList, Append To Array, Vector(-52, 30, 32));
Modify Global Variable(CheckpointList, Append To Array, Vector(-42, 32, 30));
Modify Global Variable(CheckpointList, Append To Array, Vector(-30, 28, 48));
Modify Global Variable(CheckpointList, Append To Array, Vector(-30, 28, 57));
Modify Global Variable(CheckpointList, Append To Array, Vector(-20, 30, 70));
Modify Global Variable(CheckpointList, Append To Array, Vector(-28, 31, 79));
Modify Global Variable(CheckpointList, Append To Array, Vector(-44, 30, 83));
Modify Global Variable(CheckpointList, Append To Array, Vector(-67, 2, 70));
Modify Global Variable(CheckpointList, Append To Array, Vector(-67, 8, 69));
Modify Global Variable(CheckpointList, Append To Array, Vector(-68, 13, 69));
Modify Global Variable(CheckpointList, Append To Array, Vector(-71, 17, 58));
Modify Global Variable(CheckpointList, Append To Array, Vector(-82, 22, 53));
Modify Global Variable(CheckpointList, Append To Array, Vector(-81, 15, 42));
Modify Global Variable(CheckpointList, Append To Array, Vector(-78, 4, 25));
Modify Global Variable(CheckpointList, Append To Array, Vector(-87, 5, 9));
Modify Global Variable(CheckpointList, Append To Array, Vector(-87, 6, -8));
Modify Global Variable(CheckpointList, Append To Array, Vector(-81, 11, -40));
Modify Global Variable(CheckpointList, Append To Array, Vector(-81, 17, -54));
Modify Global Variable(CheckpointList, Append To Array, Vector(-59, 16, -60));
Modify Global Variable(CheckpointList, Append To Array, Vector(-54, 21, -48));
Modify Global Variable(CheckpointList, Append To Array, Vector(-28, 22, -51));
Modify Global Variable(CheckpointList, Append To Array, Vector(-24, 22, -45));
Modify Global Variable(CheckpointList, Append To Array, Vector(-23, 16, -31));
Modify Global Variable(CheckpointList, Append To Array, Vector(74, 132, -64));
Modify Global Variable(CheckpointList, Append To Array, Vector(79, 132, -52));
Modify Global Variable(CheckpointList, Append To Array, Vector(84, 134, -30));
Modify Global Variable(CheckpointList, Append To Array, Vector(89, 135, -11));
Modify Global Variable(CheckpointList, Append To Array, Vector(88, 135, 12));
Modify Global Variable(CheckpointList, Append To Array, Vector(81, 137, 17));
Modify Global Variable(CheckpointList, Append To Array, Vector(69, 136, 7));
Modify Global Variable(CheckpointList, Append To Array, Vector(57, 133, -3));
Modify Global Variable(CheckpointList, Append To Array, Vector(59, 140, -28));
Modify Global Variable(CheckpointList, Append To Array, Vector(59, 148, -28));
Modify Global Variable(CheckpointList, Append To Array, Vector(59, 148, -18));
Modify Global Variable(CheckpointList, Append To Array, Vector(51, 151, -4));
Modify Global Variable(CheckpointList, Append To Array, Vector(47, 150, 0));
Modify Global Variable(CheckpointList, Append To Array, Vector(52, 150, 4));
Modify Global Variable(CheckpointList, Append To Array, Vector(58, 154, -18));
Modify Global Variable(CheckpointList, Append To Array, Vector(55, 155, -29));
Modify Global Variable(CheckpointList, Append To Array, Vector(-161, -97, -56));
Modify Global Variable(TeleportEntranceList, Append To Array, Vector(75, 147, -36));
Modify Global Variable(TeleportExitList, Append To Array, Vector(-170, -99, -68));
Modify Global Variable(CheckpointList, Append To Array, Vector(-165, -93, -41));
Modify Global Variable(CheckpointList, Append To Array, Vector(-184, -92, -26));
Modify Global Variable(CheckpointList, Append To Array, Vector(-204, -92, -12));
Modify Global Variable(CheckpointList, Append To Array, Vector(-210, -86, 10));
Modify Global Variable(CheckpointList, Append To Array, Vector(-209, -83, 23));
Modify Global Variable(CheckpointList, Append To Array, Vector(-197, -88, 33));
Modify Global Variable(CheckpointList, Append To Array, Vector(-185, -83, 41));
Modify Global Variable(CheckpointList, Append To Array, Vector(-175, -87, 55));
Modify Global Variable(CheckpointList, Append To Array, Vector(-168, -99, 68));
Skip If(False == True, 0);
}
}
rule("MAP: Hollywood Rings by Giacomand")
{
event
{
Ongoing - Global;
}
conditions
{
Current Map == Map(Hollywood);
}
actions
{
Global.StartingPosition = Vector(12.292, 7.179, 49.685);
Global.TeleportEntranceList = Empty Array;
Global.TeleportExitList = Empty Array;
Global.CheckpointList = Empty Array;
Modify Global Variable(CheckpointList, Append To Array, Vector(5.135, 10.807, 27.654));
Modify Global Variable(CheckpointList, Append To Array, Vector(-10.292, 13.958, 15.678));
Modify Global Variable(CheckpointList, Append To Array, Vector(-4.289, 13, -2.767));
Modify Global Variable(CheckpointList, Append To Array, Vector(2.620, 13.003, -17.451));
Modify Global Variable(CheckpointList, Append To Array, Vector(-5.227, 9.883, -48.082));
Modify Global Variable(CheckpointList, Append To Array, Vector(-12.080, 10, -61.560));
Modify Global Variable(CheckpointList, Append To Array, Vector(-15.550, 4, -83.384));
Modify Global Variable(CheckpointList, Append To Array, Vector(-30.036, 10.069, -97.255));
Modify Global Variable(CheckpointList, Append To Array, Vector(-35.031, 4, -119.246));
Modify Global Variable(CheckpointList, Append To Array, Vector(-27.905, 7.002, -131.574));
Modify Global Variable(CheckpointList, Append To Array, Vector(-18, 11, -103));
Modify Global Variable(CheckpointList, Append To Array, Vector(18, 3, -92));
Modify Global Variable(CheckpointList, Append To Array, Vector(39.039, 5, -77.724));
Modify Global Variable(CheckpointList, Append To Array, Vector(26.754, 9, -64.969));
Modify Global Variable(CheckpointList, Append To Array, Vector(-1, 8, -33));
Modify Global Variable(CheckpointList, Append To Array, Vector(-3.632, 12.698, -4.971));
Modify Global Variable(CheckpointList, Append To Array, Vector(-25, 3, 31));
}
}
rule("SETUP: Global Vars")
{
event
{
Ongoing - Global;
}
actions
{
Global.A = False;
Global.B = 5;
Global.H = 0;
Global.Y = Empty Array;
Global.StartingPositionRadius = 4;
Create In-World Text(Filtered Array(All Players(All Teams), Current Array Element.RespawningSelf != True), String("{0}: {1}",
String("Try Again"), String("Crouching")), Direction Towards(Global.StartingPosition, Global.CheckpointList[0])
* Global.StartingPositionRadius + Global.StartingPosition, 2, Clip Against Surfaces, Visible To Position and String, White,
Default Visibility);
* Global.StartingPositionRadius + Global.StartingPosition, 2, Clip Against Surfaces, Visible To Position and String, Color(
White), Default Visibility);
Global.MapVoteTimeStart = 900;
Global.MapVoteDuration = 45;
}
}
rule("SETUP: Player Vars")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Has Spawned(Event Player) == True;
}
actions
{
Event Player.CurrentCheckpointID = 0;
Event Player.RaceTime = 0;
Event Player.BestTime = 999.990;
Create In-World Text(All Players(All Teams), String("{0}: {1}", String("Time"), Event Player.RaceTime), Event Player, 2,
Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
Clip Against Surfaces, Visible To Position and String, Color(White), Default Visibility);
Create HUD Text(Event Player, Null, Null, String("{0}: {1}", String("Time"), String("{0} sec", Event Player.RaceTime)), Left, -10,
White, Red, White, Visible To and String, Default Visibility);
Color(White), Color(Red), Color(White), Visible To and String, Default Visibility);
Create HUD Text(Event Player, Null, Null, String("{0}: {1}", String("{0} {1}", String("Best"), String("Record")), String("{0} sec",
Event Player.BestTime)), Left, -9, White, Red, White, Visible To and String, Default Visibility);
Event Player.BestTime)), Left, -9, Color(White), Color(Red), Color(White), Visible To and String, Default Visibility);
Event Player.Spawning = True;
Create Icon(Filtered Array(Event Player, !Is In View Angle(Current Array Element,
Global.CheckpointList[Current Array Element.CurrentCheckpointID], 103) || !Is In Line of Sight(Eye Position(
Current Array Element), Global.CheckpointList[Current Array Element.CurrentCheckpointID], Barriers Do Not Block LOS)),
Global.CheckpointList[Event Player.CurrentCheckpointID], Ring Thick, Visible To and Position, Green, True);
Global.CheckpointList[Event Player.CurrentCheckpointID], Ring Thick, Visible To and Position, Color(Green), True);
Disable Movement Collision With Players(Event Player);
}
}
rule("SETUP: Checkpoint Vars")
{
event
{
Ongoing - Global;
}
actions
{
Global.F = 2;
Global.CheckpointRadius = 3;
}
}
rule("SETUP: Time Records")
{
event
{
Ongoing - Global;
}
actions
{
Create HUD Text(All Players(All Teams), Null, String("{0} {1}", String("Best"), String("Times")), Null, Right, -5, White, Red,
White, Visible To and String, Default Visibility);
Create HUD Text(All Players(All Teams), Null, String("{0} {1}", String("Best"), String("Times")), Null, Right, -5, Color(White),
Color(Red), Color(White), Visible To and String, Default Visibility);
Create HUD Text(All Players(All Teams), Null, Null, String("{0} {1}", String("#{0}", 1), String("{0} - {1}",
Global.BestRecordsNameList[0], String("{0} sec", Global.BestRecordsTimeList[0]))), Right, -4, White, White, White,
Visible To and String, Default Visibility);
Global.BestRecordsNameList[0], String("{0} sec", Global.BestRecordsTimeList[0]))), Right, -4, Color(White), Color(White),
Color(White), Visible To and String, Default Visibility);
Create HUD Text(All Players(All Teams), Null, Null, String("{0} {1}", String("#{0}", 2), String("{0} - {1}",
Global.BestRecordsNameList[1], String("{0} sec", Global.BestRecordsTimeList[1]))), Right, -3, White, White, White,
Visible To and String, Default Visibility);
Global.BestRecordsNameList[1], String("{0} sec", Global.BestRecordsTimeList[1]))), Right, -3, Color(White), Color(White),
Color(White), Visible To and String, Default Visibility);
Create HUD Text(All Players(All Teams), Null, Null, String("{0} {1}", String("#{0}", 3), String("{0} - {1}",
Global.BestRecordsNameList[2], String("{0} sec", Global.BestRecordsTimeList[2]))), Right, -2, White, White, White,
Visible To and String, Default Visibility);
Global.BestRecordsNameList[2], String("{0} sec", Global.BestRecordsTimeList[2]))), Right, -2, Color(White), Color(White),
Color(White), Visible To and String, Default Visibility);
}
}
rule("SETUP: Create Rings")
{
event
{
Ongoing - Each Player;
All;
All;
}
actions
{
Create Effect(Event Player, Good Aura, Green, Global.CheckpointList[Event Player.CurrentCheckpointID], Global.F,
Create Effect(Event Player, Good Aura, Color(Green), Global.CheckpointList[Event Player.CurrentCheckpointID], Global.F,
Visible To Position and Radius);
Create Effect(Event Player, Good Aura, Yellow, Global.CheckpointList[1 + Event Player.CurrentCheckpointID], Global.F,
Create Effect(Event Player, Good Aura, Color(Yellow), Global.CheckpointList[1 + Event Player.CurrentCheckpointID], Global.F,
Visible To Position and Radius);
Create Effect(Event Player, Good Aura, Red, Global.CheckpointList[2 + Event Player.CurrentCheckpointID], Global.F,
Create Effect(Event Player, Good Aura, Color(Red), Global.CheckpointList[2 + Event Player.CurrentCheckpointID], Global.F,
Visible To Position and Radius);
}
}
rule("SETUP: Create Teleporters")
{
event
{
Ongoing - Global;
}
conditions
{
Count Of(Global.TeleportEntranceList) > 0;
}
actions
{
Create Effect(All Players(All Teams), Light Shaft, Purple, Global.TeleportEntranceList[Global.LoopIndex] + Vector(0, -1, 0),
Create Effect(All Players(All Teams), Light Shaft, Color(Purple), Global.TeleportEntranceList[Global.LoopIndex] + Vector(0, -1, 0),
Global.CheckpointRadius, Visible To);
Create Effect(All Players(All Teams), Light Shaft, Blue, Global.TeleportExitList[Global.LoopIndex] + Vector(0, -1, 0),
Create Effect(All Players(All Teams), Light Shaft, Color(Blue), Global.TeleportExitList[Global.LoopIndex] + Vector(0, -1, 0),
Global.CheckpointRadius, Visible To);
Global.LoopIndex += 1;
Wait(0.016, Ignore Condition);
Loop If(Global.LoopIndex < Count Of(Global.TeleportEntranceList));
}
}
rule("SETUP: Create Spawn Ring")
{
event
{
Ongoing - Global;
}
actions
{
Create Effect(All Players(All Teams), Ring, Blue, Global.StartingPosition, Global.StartingPositionRadius,
Create Effect(All Players(All Teams), Ring, Color(Blue), Global.StartingPosition, Global.StartingPositionRadius,
Visible To Position and Radius);
}
}
rule("SETUP: Match Timer")
{
event
{
Ongoing - Global;
}
conditions
{
Global.A == True;
}
actions
{
Chase Global Variable Over Time(H, 500, 500.001, Destination and Duration);
}
}
rule("ON: Player Spawning (Disable to stop forced spawns)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
(Event Player.Spawning || Is Button Held(Event Player, Crouch)) == True;
(Event Player.Spawning || Is Button Held(Event Player, Button(Crouch))) == True;
}
actions
{
Skip If(!Is Button Held(Event Player, Crouch), 1);
Skip If(!Is Button Held(Event Player, Button(Crouch)), 1);
Event Player.RespawningSelf = True;
Resurrect(Event Player);
Skip If(Global.StartingPosition == 0, 1);
Teleport(Event Player, Global.StartingPosition);
Set Facing(Event Player, Direction Towards(Global.StartingPosition, Vector(X Component Of(First Of(Global.CheckpointList)),
Y Component Of(Position Of(Event Player)), Z Component Of(First Of(Global.CheckpointList)))), To World);
Event Player.CurrentCheckpointID = 0;
Event Player.RaceTime = 0;
Set Status(Event Player, Null, Phased Out, 9999);
disabled Set Status(Event Player, Null, Phased Out, 9999);
Event Player.Spawning = False;
Wait(0.100, Ignore Condition);
Set Ability Cooldown(Event Player, Button(Ability 2), 0);
Set Status(Event Player, Null, Stunned, 0.050);
}
}
rule("ON: Player Death")
{
event
{
Player Died;
All;
All;
}
actions
{
Wait(1, Ignore Condition);
Event Player.Spawning = True;
}
}
rule("ON: Collision of Rings")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Array Contains(Players Within Radius(Global.CheckpointList[Event Player.CurrentCheckpointID], Global.CheckpointRadius + 0.500,
All Teams, Off), Event Player) == True;
}
actions
{
Event Player.CurrentCheckpointID += 1;
Small Message(Event Player, String("{0} / {1}", Event Player.CurrentCheckpointID, Count Of(Global.CheckpointList)));
Play Effect(Event Player, Ring Explosion Sound, White, Event Player, 75);
Play Effect(Event Player, Ring Explosion Sound, Color(White), Event Player, 75);
}
}
rule("ON: Collision with Teleporter")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Count Of(Global.TeleportEntranceList) > 0;
Is True For Any(Global.TeleportEntranceList, Array Contains(Players Within Radius(Current Array Element,
Global.CheckpointRadius + 0.500, All Teams, Off), Event Player) == True) == True;
}
actions
{
Skip If(Event Player.PlayerLoopIndex > 0, 1);
Event Player.PlayerLoopIndex = Count Of(Global.TeleportEntranceList) - 1;
Event Player.T = Global.TeleportEntranceList[Event Player.PlayerLoopIndex];
Skip If(Distance Between(Event Player.T, Event Player) < Global.CheckpointRadius + 0.500, 3);
Event Player.PlayerLoopIndex -= 1;
Wait(0.016, Ignore Condition);
Loop If(Event Player.PlayerLoopIndex > 0);
Big Message(Event Player, String("{0} sec", Event Player.RaceTime));
Teleport(Event Player, Global.TeleportExitList[Event Player.PlayerLoopIndex]);
Event Player.PlayerLoopIndex = 0;
}
}
rule("ON: Finished Race - Announcement & Respawn")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Count Of(Global.CheckpointList) != 0;
Event Player.CurrentCheckpointID == Count Of(Global.CheckpointList);
Global.DebugEnabled != True;
}
actions
{
Big Message(Event Player, String("{0}: {1}", String("Finished"), Event Player.RaceTime));
Event Player.Spawning = True;
}
}
rule("ON: Finished Race - Update Personal Record")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.CurrentCheckpointID == Count Of(Global.CheckpointList);
}
actions
{
Event Player.BestTime = Min(Event Player.RaceTime, Event Player.BestTime);
}
}
rule("ON: Player Leaves Spawn")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Global.StartingPosition, Position Of(Event Player)) >= Global.StartingPositionRadius;
Event Player.CurrentCheckpointID <= 0;
}
actions
{
Chase Player Variable Over Time(Event Player, RaceTime, 9999, 9999, Destination and Duration);
}
}
rule("ON: Player In Spawn")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Global.StartingPosition, Position Of(Event Player)) < Global.StartingPositionRadius;
Event Player.CurrentCheckpointID <= 0;
}
actions
{
Stop Chasing Player Variable(Event Player, RaceTime);
Event Player.RaceTime = 0;
}
}
rule("ON: Speedometer (Slow)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Horizontal Speed Of(Event Player) <= 12;
}
actions
{
Destroy HUD Text(Event Player.LastCreatedSpeedometerID);
Create HUD Text(Event Player, Null, Null, String("{0} m/s", Horizontal Speed Of(Event Player)), Left, -101, White, White, Yellow,
Visible To and String, Default Visibility);
Create HUD Text(Event Player, Null, Null, String("{0} m/s", Horizontal Speed Of(Event Player)), Left, -101, Color(White), Color(
White), Color(Yellow), Visible To and String, Default Visibility);
Event Player.LastCreatedSpeedometerID = Last Text ID;
}
}
rule("ON: Speedometer (Fast)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Horizontal Speed Of(Event Player) > 12;
}
actions
{
Destroy HUD Text(Event Player.LastCreatedSpeedometerID);
Create HUD Text(Event Player, Null, Null, String("{0} m/s", Horizontal Speed Of(Event Player)), Left, -101, White, White, Green,
Visible To and String, Default Visibility);
Create HUD Text(Event Player, Null, Null, String("{0} m/s", Horizontal Speed Of(Event Player)), Left, -101, Color(White), Color(
White), Color(Green), Visible To and String, Default Visibility);
Event Player.LastCreatedSpeedometerID = Last Text ID;
}
}
rule("LOOP: Update Records")
{
event
{
Ongoing - Global;
}
actions
{
Skip If(Count Of(All Players(All Teams)) <= 0, 5);
Global.BestRecordsNameList = Array Slice(Sorted Array(Filtered Array(Filtered Array(All Players(All Teams), Has Spawned(
Current Array Element)), Current Array Element.BestTime < 999.990), Current Array Element.BestTime), 0, 3);
Skip If(Count Of(Global.BestRecordsNameList) >= 3, 1);
Modify Global Variable(BestRecordsNameList, Append To Array, Hero(Lúcio));
Skip If(Count Of(Global.BestRecordsNameList) >= 3, 1);
Modify Global Variable(BestRecordsNameList, Append To Array, Hero(Lúcio));
Skip If(Count Of(Global.BestRecordsNameList) >= 3, 1);
Modify Global Variable(BestRecordsNameList, Append To Array, Hero(Lúcio));
Global.BestRecordsTimeList = Empty Array;
Modify Global Variable(BestRecordsTimeList, Append To Array, Global.BestRecordsNameList[0].BestTime);
Modify Global Variable(BestRecordsTimeList, Append To Array, Global.BestRecordsNameList[1].BestTime);
Modify Global Variable(BestRecordsTimeList, Append To Array, Global.BestRecordsNameList[2].BestTime);
Wait(10, Ignore Condition);
Loop;
}
}
disabled rule("SETUP: Voting UI")
{
event
{
Ongoing - Global;
}
actions
{
Create HUD Text(Filtered Array(All Players(All Teams), Global.VotingForNewMap == True), Null, Custom String("Map Vote"),
Custom String("Use 'Interact' (F) to toggle your vote"), Left, 20, White, Red, White, Visible To and String,
Default Visibility);
Custom String("Use 'Interact' (F) to toggle your vote"), Left, 20, Color(White), Color(Red), Color(White),
Visible To and String, Default Visibility);
Create HUD Text(Filtered Array(All Players(All Teams), Global.VotingForNewMap == True), Null, Null, Custom String(
"Total Votes: {0} / {1}", Count Of(Filtered Array(All Players(All Teams), Current Array Element.VotedForNewMap == True)),
Round To Integer(Count Of(All Players(All Teams)) * 0.500, Up)), Left, 21, White, Red, White, Visible To and String,
Default Visibility);
Create HUD Text(Filtered Array(All Players(All Teams), Global.VotingForNewMap == True), Null, Null, Custom String(
"Time Remaining: {0} sec", Match Time - (Global.MapVoteTimeStart - Global.MapVoteDuration)), Left, 22, White, Red, White,
Round To Integer(Count Of(All Players(All Teams)) * 0.500, Up)), Left, 21, Color(White), Color(Red), Color(White),
Visible To and String, Default Visibility);
Create HUD Text(Filtered Array(All Players(All Teams), Global.VotingForNewMap == True), Null, Null, Custom String(
"Time Remaining: {0} sec", Match Time - (Global.MapVoteTimeStart - Global.MapVoteDuration)), Left, 22, Color(White), Color(
Red), Color(White), Visible To and String, Default Visibility);
Create HUD Text(Filtered Array(All Players(All Teams),
Global.VotingForNewMap == True && Current Array Element.VotedForNewMap == True), Null, Null, Custom String(
"You have voted 'Yes'"), Left, 23, White, Red, White, Visible To and String, Default Visibility);
"You have voted 'Yes'"), Left, 23, Color(White), Color(Red), Color(White), Visible To and String, Default Visibility);
}
}
disabled rule("ON: Voting Started")
{
event
{
Ongoing - Global;
}
conditions
{
Match Time <= Global.MapVoteTimeStart;
Global.DebugEnabled != True;
All Players(All Teams) != Host Player;
}
actions
{
Big Message(All Players(All Teams), Custom String("NEW MAP VOTE STARTED"));
Global.VotingForNewMap = True;
Wait(6, Ignore Condition);
Big Message(All Players(All Teams), Custom String("Use 'Interact' (F) to vote!"));
}
}
disabled rule("ON: Voted For New Map")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Global.VotingForNewMap == True;
Is Button Held(Event Player, Interact) == True;
Is Button Held(Event Player, Button(Interact)) == True;
}
actions
{
Event Player.VotedForNewMap = !Event Player.VotedForNewMap;
Big Message(Event Player, Custom String("Vote Toggled"));
}
}
disabled rule("ON: Voting Finished")
{
event
{
Ongoing - Global;
}
conditions
{
Match Time <= Global.MapVoteTimeStart - Global.MapVoteDuration;
}
actions
{
Global.VotingForNewMap = False;
Skip If(Count Of(Filtered Array(All Players(All Teams), Current Array Element.VotedForNewMap == True)) >= Count Of(All Players(
All Teams)) * 0.500, 2);
Big Message(All Players(All Teams), Custom String("Vote Failed"));
Abort;
Big Message(All Players(All Teams), Custom String("Vote Successful - 60 seconds remain"));
Set Match Time(60);
}
}
rule("ENABLE FOR FAST ROUNDS")
{
event
{
Ongoing - Global;
}
conditions
{
Is Game In Progress == True;
}
actions
{
Set Match Time(420);
}
}