Return to post
settings
{
main
{
Description: "Learn and practice Doomfist rollouts and various map spots with this parkour! Visit (https://workshop.codes/doomfist-academy) for more information. Version 1.6.1 by Big Smoke. CODE: E7MMF"
}
lobby
{
Allow Players Who Are In Queue: Yes
Map Rotation: After A Game
Match Voice Chat: Enabled
Max Spectators: 12
Max Team 1 Players: 12
Max Team 2 Players: 0
Return To Lobby: Never
}
modes
{
Skirmish
{
enabled maps
{
Busan
Dorado
King's Row
Hanamura Winter
Rialto
Temple of Anubis
Lijiang Tower Lunar New Year
}
}
Team Deathmatch
{
enabled maps
{
}
}
General
{
Allow Hero Switching: Off
Game Mode Start: Immediately
Hero Limit: Off
Kill Feed: Off
Respawn As Random Hero: On
Spawn Health Packs: Disabled
}
}
heroes
{
General
{
Damage Dealt: 10%
Infinite Ultimate Duration: On
Spawn With Ultimate Ready: On
Ultimate Generation: 500%
Ultimate Generation - Combat: 500%
Ultimate Generation - Passive: 500%
enabled heroes
{
Doomfist
}
}
}
}
variables
{
global:
00: TempIter
01: TempArray
02: Level_Text
03: Level_Color
04: Level_Effects
05: Start_Origin
06: Start_Radius
07: Start_Camera
08: Start_Abilities
09: Start_LevelFlag
10: End_Origin
11: End_Radius
12: Hint_Origin
13: Hint_Text
14: Hint_IndexFlag
15: Lava_Origin
16: Lava_Radius
17: Lava_IndexFlag
18: Time_Recorded
19: Time_Proper
20: Time_Rank
21: Time_LevelFlag
22: Time_PlayerID
23: Time_HUD
24: Time_Updating
25: Setting_MapRotation
26: Setting_ServerLoad
27: Setting_ScoreboardMax
28: Setting_EnableInspector
player:
00: TempIter
01: TempArray
02: Initialized
03: Transitioning
04: FreeMode
05: UsingPunch
06: GracePeriod
07: MidAirPeriod
08: Stopwatch
09: HUD_Text
10: HUD_ControlsDisabled
11: HUD_ScoreboardDisabled
12: Level_Current
13: Level_Checkpoints
14: Level_LocalIndex
15: Level_GlobalIndex
16: Checkpoint_Hints
17: Checkpoint_Lavas
18: Checkpoint_Effects
19: Developer_Mode
20: Developer_EffectType
21: Developer_StartRadius
22: Developer_EndRadius
23: Developer_LavaRadius
24: Developer_Distance
}
subroutines
{
00: Reposition
01: AbilityRefresh
02: Calculate_Checkpoints
03: Calculate_MissingEnds
04: Calculate_ExtraEffects
05: Calculate_RecordTime
06: Effects_DestroyPlayer
07: Effects_RefreshPlayer
08: Effects_RefreshGlobal
09: Effects_RefreshDeveloper
10: HUD_DestroyText
11: HUD_RefreshText
12: HUD_RefreshScoreboard
13: HUD_RefreshDeveloper
}
rule("Visit (https://workshop.codes/doomfist-academy) for more information! CODE: E7MMF")
{
event
{
Ongoing - Global;
}
conditions
{
}
actions
{
Global.Setting_EnableInspector = Workshop Setting Toggle(Custom String("General Settings"), Custom String("Enable Inspector"), False, 1);
If(Global.Setting_EnableInspector == False);
Disable Inspector Recording;
End;
}
}
rule("Made using Simple Multi-Level Doomfist Parkour Creator by Big Smoke. CODE: J8CA1")
{
event
{
Ongoing - Global;
}
conditions
{
}
actions
{
}
}
disabled rule("### CHECKPOINT PARAMETERS ###")
{
event
{
Ongoing - Global;
}
}
rule("CHECKPOINT PARAMETERS --- RIALTO")
{
event
{
Ongoing - Global;
}
conditions
{
Current Map == Map(Rialto);
}
actions
{
Global.Level_Text = Array(0, Custom String("Level 1\r\nRollouts"), Custom String("Level 2\r\nBounces"), Custom String("Level 3\r\nDiags"), Custom String("Level 4\r\nBalance"));
Global.Start_Origin = Array(Vector(42.962, 5.750, -49.246), Vector(58.614, 0.778, -55.398), Vector(72.649, -0.400, -49.194),
Vector(55.160, 4.750, -34.570), Vector(66.063, 4.750, -25.189), Vector(111.078, 5.750, -33.817), Vector(111.078, 5.750,
-33.817), Vector(110.510, 5.750, -8.890), Vector(109.759, 5.755, -8.972), Vector(96.521, -0.250, -45.028), Vector(74.469,
3.758, -15.692), Vector(58.923, 4.748, -25.090), Vector(35.439, 5.750, -70.078), Vector(-10.196, -0.250, -67.093), Vector(
8.521, -0.400, -50.053), Vector(-42.130, 2.730, -91.180), Vector(96.870, 5.750, -33.190), Vector(76.520, -1.400, -23.050),
Vector(71.820, -1.250, -12.280), Vector(62.820, -1.250, -12.830), Vector(46, -0.250, -46.250), Vector(68.485, -0.252, -57.738),
Vector(33.265, 0.855, -32.006), Vector(29.486, 1.674, -45.720), Vector(20.372, 1.812, -74.696), Vector(5.770, -0.400, -62.120),
Vector(9.327, -0.398, -53.945), Vector(10.012, -0.250, -54.553), Vector(-10.400, -3.110, -73.720), Vector(-34.130, -1.400,
-77.220), Vector(-44.148, -1.250, -60.479), Vector(-77.802, 2.750, -118.428), Vector(97.235, -0.250, -47.717), Vector(96.737,
-0.250, -49.035), Vector(85.794, -0.398, -49.064), Vector(54.710, 4.750, -39.740), Vector(48.110, 4.750, -34.350), Vector(
43.820, 5.760, -42.690), Vector(12.930, 0.200, -62.310), Vector(20.550, 1.790, -74.550), Vector(22.540, 1.700, -62.300),
Vector(28.570, 0, -62.310), Vector(-15.600, 5.750, -48.320), Vector(-16.360, 1.410, -38.670), Vector(-48.920, -0.500, -68.470),
Vector(-40.045, 0.882, -90.322), Vector(-64.541, 2.750, -128.205), Vector(-29.655, -1.038, -41.516), Vector(63.086, -0.250,
-62.385), Vector(18.297, 1.682, -62.304), Vector(31.342, 0.650, -45.295), Vector(41.351, 0.785, -31.005), Vector(97.111, 5.750,
-33.557), Vector(83.206, 7.906, -36.101), Vector(83.206, 7.906, -36.101), Vector(82.258, -0.400, -51.020), Vector(84.322,
3.915, -53.295), Vector(21.252, 1.729, -62.749), Vector(6.507, 12.375, -29.333), Vector(-16.103, 5.746, -48.086), Vector(
11.539, 12.336, -29.514), Vector(-36.055, 4.790, -81.861), Vector(-31.390, 13.867, -104.604), Vector(-35.896, 4.750, -82.048),
Vector(-60.828, 16.708, -85.276));
Global.Start_Radius = Array(3, 3, 3, 3, 3, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2, 2.500, 2.500,
2, 2.300, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500,
2.500, 1.800, 2.500, 2, 1.700, 2.500, 2, 2, 2, 2.500, 2, 2.500, 2.500, 3, 2.500, 2.500, 2, 2, 2.500, 2.500, 2.500, 2.500,
2.500, 2.500, 2.500, 2, 2.500, 2.500);
Global.Start_Camera = Array(70.807, -31.470, -68.533, -133.797, -178.781, -48.164, -48.164, -86.180, -35.458, 2.049, -70.406,
179.901, -88.967, 69.576, 68.588, 33.170, -105.830, -83.529, -71.500, 67.930, 119.930, -65.396, 97.899, -99.036, -91.099,
-89.200, 18.073, 147.849, 13.010, 120.490, -103.398, 122.514, -94.059, -23.093, 25.384, 88.520, -93.010, -178.120, 45.560,
131.870, -61.860, -52.130, 64.780, -153.380, 60.920, -139.213, 18.814, -172.623, -4.900, 33.453, -100.547, -119.553, -101.376,
9.597, -105.084, 141.394, 25.867, -18.023, -135.659, 61.078, 116.735, 141.866, -11.673, -118.658, -179.379);
Global.Start_Abilities = Array(Vector(0, 0, 0), Vector(0, 0, 0), Vector(0, 0, 0), Vector(0, 0, 0), Vector(0, 0, 0), Vector(0, 1,
0), Vector(0, 1, 0), Vector(0, 0, 0), Vector(0, 1, 0), Vector(1, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 1),
Vector(0, 0, 0), Vector(0, 0, 0), Vector(0, 0, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(
0, 1, 0), Vector(0, 1, 1), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1,
0), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 0, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 1, 0),
Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 0, 0), Vector(0, 1, 1), Vector(0, 1, 1), Vector(0, 1, 0), Vector(
0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 0, 0), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 1,
0), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 0, 1), Vector(1, 0, 1), Vector(0, 1, 0),
Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 0, 1), Vector(0, 1, 0), Vector(0, 0, 1), Vector(0, 1, 0), Vector(0, 0, 1), Vector(
0, 1, 0));
Global.Start_LevelFlag = Array(0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4);
Global.End_Origin = Array(Vector(0, 0, 0), Vector(0, 0, 0), Vector(0, 0, 0), Vector(0, 0, 0), Vector(0, 0, 0), Vector(76.553,
3.750, -31.334), Vector(67.070, 4.750, -21.586), Vector(57.920, -1.250, -10.680), Vector(83.090, 3.760, -12.810), Vector(
94.346, -0.999, -25.942), Vector(42.785, 0.650, -28.939), Vector(40.667, 5.750, -67.006), Vector(0.626, 5.750, -69.373),
Vector(36.115, 5.750, -67.463), Vector(50.150, 4.750, -33.934), Vector(-9.610, 5.750, -78.580), Vector(68.500, -0.890,
-36.180), Vector(61.157, 4.748, -35.434), Vector(74.450, 3.760, -13.520), Vector(79.310, 3.750, -25.790), Vector(60.970, 4.750,
-35.460), Vector(43.061, 5.750, -49.746), Vector(51.589, 4.750, -33.916), Vector(-3.501, 5.748, -50.232), Vector(-1.723, 5.750,
-63.902), Vector(-1.920, 5.750, -45.870), Vector(0.361, 3.750, -33.183), Vector(37.003, 5.750, -68.129), Vector(-3, 5.750,
-51.260), Vector(-34.080, 4.750, -78.750), Vector(-62.320, 1.750, -100.833), Vector(-45.495, 4.750, -142.929), Vector(55.477,
4.750, -39.058), Vector(82.244, 3.758, -14.215), Vector(110.820, 5.750, -10.237), Vector(89.786, -0.396, -21.970), Vector(
-11.010, -1.340, -42.560), Vector(27.100, 0.480, -68.180), Vector(50.486, -0.400, -50.781), Vector(34.830, 5.750, -86.040),
Vector(1.490, 5.750, -51.470), Vector(-11.650, -1.380, -42.260), Vector(7.780, -0.400, -59.570), Vector(-36.180, 4.750,
-78.550), Vector(-7.684, 5.750, -51.002), Vector(-57.016, 2.600, -127.454), Vector(-52.798, -1.250, -65.284), Vector(-36.151,
4.750, -78.251), Vector(62.587, 4.750, -39.307), Vector(50.850, 4.750, -33.628), Vector(0.768, 5.750, -51.478), Vector(-1.386,
5.750, -42.207), Vector(83.286, 7.898, -36.093), Vector(66.053, 4.750, -25.479), Vector(56.331, 4.750, -39.585), Vector(84.322,
3.915, -53.295), Vector(81.042, 3.758, -14.920), Vector(5.032, 11.999, -30.751), Vector(-21.367, -1.400, -67.824), Vector(
5.032, 11.999, -30.751), Vector(42.021, 5.750, -48.939), Vector(-31.025, 13.867, -104.604), Vector(-14.523, 5.067, -55.149),
Vector(-59.284, 16.839, -83.247), Vector(-45.450, 4.750, -143.611));
Global.End_Radius = Array(3, 3, 3, 3, 3, 3, 3, 3, 3, 3.500, 3, 3, 3, 3.500, 3, 3, 4.300, 4, 2.500, 2.700, 3, 3.500, 4, 3, 3.300, 3,
3, 4, 3, 3, 8, 3, 3.500, 3.500, 3.500, 5, 3, 3.600, 5, 2.500, 2.500, 3.500, 3, 4, 3.300, 4, 6, 4, 4, 4, 3, 3.500, 1.800, 3, 3,
1.500, 3.500, 6.500, 4, 6.500, 4, 2, 3, 7, 3.500);
Global.Hint_Origin = Array(Vector(105.266, 11.301, -8.230), Vector(86.720, 8.180, -36.630), Vector(57.514, -0.174, -20.733),
Vector(59.993, -0.326, -8.277), Vector(71.638, -0.247, -9.237), Vector(40.011, 2.074, -32.949), Vector(12.134, 4.177, -74.877),
Vector(11.972, 0.552, -45.944), Vector(14.284, 1.719, -61.321), Vector(-21.414, -0.540, -85.089), Vector(-52.427, 0.117,
-62.424), Vector(-65.076, 4.711, -126.593), Vector(70.401, 10.734, -40.319), Vector(16.051, 11.194, -36.259));
Global.Hint_Text = Array(Custom String("Uppercut here\r\nPunch through roof"),
Custom String("Bounce"), Custom String("Bounce"), Custom String("Bounce"), Custom String("Bounce"), Custom String("Bounce"),
Custom String("Bounce"), Custom String("Bounce"), Custom String("Bounce"), Custom String("Bounce"), Custom String("Bounce"),
Custom String("Bounce"), Custom String("Diag then bounce"), Custom String("Slide along roof"));
Global.Hint_IndexFlag = Array(7, 16, 17, 18, 19, 22, 24, 26, 27, 29, 30, 31, 35, 36);
Global.Lava_Origin = Array(Vector(101.680, 6.095, -19.681), Vector(101.472, 6.533, -19.874), Vector(84.040, 5.743, -22.901), Vector(83.033, 6.250, -47.922),
Vector(-36.544, 7.700, -78.571), Vector(69.207, 2.795, -27.491), Vector(34.031, 5.353, -42.723), Vector(37.514, 5.661, -68.438), Vector(34.501, 5.262,
-38.121), Vector(34.579, 4.353, -66.880), Vector(-1.003, 3.795, -41.783), Vector(-5.749, 5.990, -51.968));
Global.Lava_Radius = Array(9.400, 9.600, 7.200, 7.200, 10, 9.600, 7.200, 5, 5.600, 6.700, 6.700, 6.700);
Global.Lava_IndexFlag = Array(7, 8, 16, 16, 30, 35, 37, 37, 38, 38, 42, 42);
}
}
rule("CHECKPOINT PARAMETERS --- HANAMURA")
{
event
{
Ongoing - Global;
}
conditions
{
(Array Contains(Current Map, Map(Hanamura)) || Array Contains(Current Map, Map(Hanamura Winter))) == True;
}
actions
{
Global.Level_Text = Array(0, Custom String("Level 1\r\nRollouts"), Custom String("Level 2\r\nBounces"),
Custom String("Level 3\r\nDiags"), Custom String("Level 4\r\nWall Diags"), Custom String("Level 5\r\nBalance"));
Global.Start_Origin = Array(Vector(13.075, 7.146, -49.044), Vector(13.050, 0, -27.810), Vector(0.635, 5, -40.641), Vector(29.597,
2, -31.793), Vector(12.900, 6.740, -21.520), Vector(5.263, 7.717, -1.142), Vector(48.559, 5.998, -8.539), Vector(34.715,
13.953, 22.354), Vector(48.666, 6, -7.323), Vector(34.952, 2.472, -10.157), Vector(-13.739, -0.999, -7.984), Vector(9.907,
11.228, 17.712), Vector(7.701, 12.008, 16.958), Vector(12.890, 7.142, -49.123), Vector(13.639, 7.134, -48.857), Vector(14.471,
4, -74.241), Vector(66.466, -2.005, 25.974), Vector(72.623, -1.969, 0.172), Vector(72.941, -1.971, -0.857), Vector(22.149, 0,
2.858), Vector(13.400, -0.984, -13.753), Vector(18.773, -1.117, 33.588), Vector(18.773, -1.117, 33.588), Vector(18.067, 4.055,
8.122), Vector(18.067, 4.055, 8.122), Vector(-1.350, -1.409, -48.448), Vector(5.250, -1, -69.073), Vector(-11.672, 1, -98.480),
Vector(49.409, -0.915, 8.627), Vector(49.906, 6, 8.407), Vector(36.809, 5.998, 16.246), Vector(11.550, -0.979, -5.054), Vector(
14.827, -0.954, -6.078), Vector(15.088, -0.979, -2.954), Vector(6.637, 9.436, 20.209), Vector(10.272, -1.236, 38.246), Vector(
0.830, -0.767, -14.716), Vector(-13.447, -0.933, -24.924), Vector(-12.765, -0.978, -36.197), Vector(10.472, -1.893, -35.079),
Vector(17.304, -1.978, -33.427), Vector(22.237, -0.953, -38.782), Vector(10.913, -1.600, -59.886), Vector(44.488, -2.084,
-56.056), Vector(-3.843, 0.020, -73.220), Vector(65.548, -1.999, 5.129), Vector(65.537, -1.999, 5.209), Vector(36.740, -0.039,
-9.657), Vector(6.764, 0, -18.661), Vector(-13.438, 0.725, -3.863), Vector(5.547, 0, -3.974), Vector(-6.950, 1, -18.881),
Vector(-0.453, 1, -10.257), Vector(7.856, 0, -29.247), Vector(9.302, 0, -22.840), Vector(-1.976, 1, -29.082), Vector(9.265, 0,
-25.433), Vector(-13.104, 1, -27.815), Vector(-13.104, 1, -27.815), Vector(-1.502, 0.291, -54.258), Vector(-1.502, 0.291,
-54.258), Vector(-16.801, -5, -69.962), Vector(-10.115, -5, -70.362), Vector(3.629, -5, -81.905), Vector(61.862, 6, -10.491),
Vector(68.136, 9.432, -14.253), Vector(-14.287, 1, 3.112), Vector(-40.870, 3.145, 10.511), Vector(29.313, 2.320, -37.483),
Vector(27.789, 9.277, -23.572), Vector(27.789, 9.277, -23.572), Vector(12.934, 7.071, -49.269), Vector(41.991, 13.086,
-32.832));
Global.Start_Radius = Array(3, 3, 3, 3, 3, 3, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500,
2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500,
2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500,
3, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 3, 3, 2.500, 2.500, 2.500, 2.500, 2.500);
Global.Start_Camera = Array(-0.181, 0, 0, 0, 0, 109.534, -53.174, 177.583, -68.571, 29.257, -158.577, -173.562, -108.704, 139.883,
-90.527, 41.017, -122.289, -146.255, -53.723, 133.418, 2.148, -82.227, -82.227, 179.659, 179.659, 131.852, 50.521, 28.059,
-82.683, -99.476, -123.234, 84.606, -21.561, -133.709, 120.828, -89.105, -92.862, -174.139, -7.449, -69.423, -146.190,
-169.486, -41.902, -158.934, 111.143, -58.112, -58.793, -67.527, -135.346, 140.916, -135.209, -135.714, 40.534, -51.075,
-45.159, 40.583, -140.927, 32.838, 32.838, 174.699, 174.699, -174.996, 175.204, -92.714, 116.895, -5.191, -74.196, 130.248,
-5.554, -174.512, -174.512, 59.293, -92.769);
Global.Start_Abilities = Array(0, 0, 0, 0, 0, 0, Vector(0, 0, 1), Vector(0, 1, 0), Vector(0, 0, 0), Vector(0, 0, 0), Vector(0, 1,
0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), 0, Vector(1, 1, 0), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 0, 0),
Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 0, 0), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1, 0), Vector(
0, 1, 1), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 1, 1), Vector(0, 1, 1), Vector(0, 1, 1), Vector(0, 1, 1), Vector(0, 1,
1), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 1, 1),
Vector(0, 1, 1), Vector(0, 1, 1), Vector(0, 1, 1), Vector(0, 1, 1), Vector(0, 1, 1), Vector(0, 0, 0), Vector(0, 1, 0), Vector(
0, 1, 1), Vector(0, 1, 1), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 0,
1), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 1, 1), Vector(0, 1, 0),
Vector(0, 1, 0), Vector(1, 0, 1), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 0, 0), Vector(0, 0, 1), Vector(1, 1, 0), Vector(
0, 1, 0), Vector(0, 0, 1), Vector(0, 1, 1));
Global.Start_LevelFlag = Array(0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5);
Global.End_Origin = Array(0, 0, 0, 0, 0, 0, Vector(34.715, 13.953, 22.477), Vector(11.494, -0.988, -1.560), Vector(14.009, 11.222,
19.164), Vector(49.306, 14.559, 18.008), Vector(-26.785, 0.876, -52.542), Vector(-4.151, 7, -20.833), Vector(-19.047, -1.259,
-18.556), Vector(28.854, 3, -90.541), Vector(-25.633, 1, -65.493), Vector(32.077, 3, -74.506), Vector(48.118, 6, 5.058),
Vector(61.239, 6, -11.935), Vector(45.133, 6, 1.917), Vector(47.812, 6, -11.385), Vector(11.645, 11.263, 18.867), Vector(
-4.445, 4, 15.407), Vector(11.813, 11.347, 21.273), Vector(11.918, 6.774, -21.425), Vector(-5.333, 7.974, -10.177), Vector(
30.770, 3, -72.769), Vector(15.489, 4.235, -53.212), Vector(-0.612, 4, -61.078), Vector(26.766, 6, 10.604), Vector(28.622,
10.441, 4.177), Vector(5.405, 7.712, -2.250), Vector(41.967, 6, -4.131), Vector(5.396, 7.098, 14.087), Vector(-3.917, 7,
-21.765), Vector(41.311, 6, -3.800), Vector(5.189, 7.947, 11.460), Vector(-15.752, 3, -47.491), Vector(-17.630, 4, -53.985),
Vector(-8.381, 1, 3.618), Vector(-9.781, 7, -26.707), Vector(-0.150, 4, -59.236), Vector(14.315, 4, -74.148), Vector(-1.750, 5,
-40.932), Vector(34.973, 3, -76.192), Vector(20.471, 4, -83.773), Vector(47.702, 6, 15.424), Vector(34.729, 13.953, 22.456),
Vector(8.769, 6.939, -21.154), Vector(-7.649, 7, -23.045), Vector(-2.769, 7, -21.811), Vector(-8.519, 7, -22.697), Vector(
-16.058, 3, -47.857), Vector(14.803, 4.051, 7.976), Vector(-15.425, 3, -47.985), Vector(-1.047, 7.954, -10.177), Vector(13.521,
6.747, -20.777), Vector(-0.347, 4, -60.072), Vector(-7.350, 1, 4.876), Vector(-0.464, 7.952, -10.186), Vector(2.796, 7.010,
-91.783), Vector(-12.278, 9, -67.368), Vector(-16.837, 9.183, -90.874), Vector(6.071, 7.010, -90.571), Vector(-1.323, 4,
-62.571), Vector(68.139, 9.432, -14.251), Vector(48.322, 6, 15.775), Vector(-40.722, 3.151, 10.817), Vector(-2.407, 6.999,
-21.967), Vector(27.793, 9.281, -22.993), Vector(13.036, 0, -29.920), Vector(13.651, 4, -74.986), Vector(41.729, 13.060,
-32.832), Vector(12.756, 6.746, -21.789));
Global.End_Radius = Array(0, 0, 0, 0, 0, 0, 2, 4, 4, 2, 3, 3, 3, 3.500, 3.500, 3, 3, 3, 3, 3.500, 4, 3.500, 5, 3.500, 2.500, 3.500,
3, 3, 3.500, 3, 3.500, 4, 3.500, 4, 4, 3, 5, 3.500, 4, 3, 3, 3, 4, 4.500, 3, 3.500, 2, 3.500, 4, 5, 3.500, 5, 3, 5, 4, 5,
3.500, 3.500, 3.500, 3.500, 4.500, 4, 6, 4.500, 2, 3, 2.500, 3.500, 1.800, 3.500, 3.500, 2.500, 3.500);
Global.Hint_Origin = Array(Vector(40.646, 12.237, -2.694), Vector(-2.866, 13.606, -48.831), Vector(56.975, -0.803, 19.836), Vector(
66.979, 0.472, -9.298));
Global.Hint_Text = Array(Custom String("Punch across roof"), Custom String("Pass through roof"), Custom String("Bounce"), Custom String("Bounce"));
Global.Hint_IndexFlag = Array(9, 14, 16, 17);
Global.Lava_Origin = Array(Vector(29.151, 11.554, 4.710), Vector(7.084, 8.649, -9.029), Vector(9.805, 13.141, 10.094), Vector(
-0.807, 6.319, -60.300));
Global.Lava_Radius = Array(3, 5, 5, 5);
Global.Lava_IndexFlag = Array(7, 11, 12, 14);
}
}
rule("CHECKPOINT PARAMETERS --- KINGS ROW")
{
event
{
Ongoing - Global;
}
conditions
{
Current Map == Map(King's Row);
}
actions
{
Global.Level_Text = Array(0, Custom String("Level 1\r\nRollouts"), Custom String("Level 2\r\nBounces"), Custom String("Level 3\r\nDiags"), Custom String("Level 4\r\nBalance"));
Global.Start_Origin = Array(Vector(-3.020, 14.355, -24.155), Vector(-18.897, -0.110, -32.573), Vector(-9.156, 6, -42.601), Vector(
4.004, 6.026, -36.976), Vector(-33.760, 9, -34.459), Vector(-19.767, 0.074, 24.824), Vector(-16.237, 6, -0.293), Vector(
-16.411, 6, -0.543), Vector(-3.217, 13.989, 17.936), Vector(-29.004, 9, -15.851), Vector(-35.266, 9, -34.655), Vector(-92.521,
7.488, -30.688), Vector(-61.254, 3, -4.663), Vector(-71.172, 4.500, -38.533), Vector(-102.547, 6.929, -6.034), Vector(-130.422,
6.315, 7.895), Vector(-127.110, -1.275, 0.388), Vector(-8.203, -0.127, 2.236), Vector(-18.083, -0.120, -29.425), Vector(
-13.794, 0.060, -10.739), Vector(-3.466, -0.162, -28.437), Vector(6.463, 6.110, -26.860), Vector(-25.059, -0.134, -25.535),
Vector(-17.911, -0.115, -32.378), Vector(-35.766, 0.072, -27.228), Vector(-51.315, -0.188, -34.031), Vector(-54.989, -0.398,
-32.725), Vector(-80.579, 0.296, -47.047), Vector(-80.991, 4.500, -42.938), Vector(-91.262, 0.900, -6.348), Vector(-10.592,
0.070, -35.159), Vector(1.841, -0.095, 8.365), Vector(-12.448, 0.074, -1.268), Vector(-8.798, 0.072, -9.738), Vector(-0.356,
-0.120, 2.183), Vector(-5.914, -0.098, 3.818), Vector(3.540, 6, -4.690), Vector(1.148, 0.029, -22.921), Vector(-9.046, -0.111,
-22.906), Vector(-8.633, 0.041, -24.943), Vector(-2.951, 0.049, -19.711), Vector(0.638, 0.057, -25.515), Vector(-13.671, 6.108,
-12.914), Vector(-12.399, 0.068, -35.670), Vector(-9.516, -0.129, -33.978), Vector(-93.766, 6.939, -4.071), Vector(-66.016,
-0.006, -33.791), Vector(-80.127, 0.317, 0.675), Vector(-97.975, 1.490, -22.003), Vector(-97.976, 1.749, -19.023), Vector(
-105.456, 0.544, -6.302), Vector(-104.235, 0.836, -8.413), Vector(-119.243, 1.071, -13.939), Vector(-132.738, -1.016, -5.551),
Vector(-11.795, 0.853, -2.235), Vector(-40.551, 8.573, -13.357), Vector(-59.740, 12.420, -11.638), Vector(-78.439, 4.500,
-40.207), Vector(-79.534, 9.811, -37.484));
Global.Start_Radius = Array(2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500,
2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.700, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 1.500, 2.500,
2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.700, 2.500, 2.500, 2.500, 2.500, 2.500,
2.700, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.700, 2.500);
Global.Start_Camera = Array(-154.078, 74.564, 4.241, -40.430, 146.678, -161.851, 164.982, 165.734, -179.786, 150.145, -85.765,
88.369, -171.837, -34.865, -80.700, 126.343, -45.269, 178.704, 60.743, 132.973, 68.231, -39.990, 123.376, -95.438, 53.328,
73.065, -91.038, -46.230, -43.160, -95.839, 37.809, -174.573, 140.762, 113.516, -155.781, 115.939, -142.830, -136.340, 131.578,
35.305, -132.539, -93.719, 168.926, 20.286, -75.872, 155.577, -18.896, -106.804, -13.986, -33.036, 127.809, -60.645, -16.265,
38.688, 139.252, -98.893, -120.053, -21.149, -25.433);
Global.Start_Abilities = Array(Vector(0, 0, 0), Vector(0, 0, 0), Vector(0, 0, 0), Vector(0, 0, 0), 0, Vector(0, 0, 1), Vector(0, 1,
0), Vector(0, 0, 0), Vector(0, 0, 1), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 0, 0), 0, 0, Vector(0, 1, 1), Vector(0, 1,
0), Vector(0, 0, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 0, 0), Vector(0, 1, 1),
Vector(0, 1, 1), Vector(0, 0, 0), Vector(0, 0, 1), Vector(0, 1, 1), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1, 0), Vector(
0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1,
1), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0),
Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 0, 0), Vector(0, 1, 1), Vector(
0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 0, 1), Vector(0, 0, 0), Vector(1, 0, 1), Vector(0, 1, 0));
Global.Start_LevelFlag = Array(0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4);
Global.End_Origin = Array(0, 0, 0, 0, 0, Vector(-26.206, 5.998, 1.582), Vector(-26.397, 6, -44.380), Vector(-29.277, 9, -15.378),
Vector(-3.073, 14.438, -23.811), Vector(10.671, 6.026, -36.680), Vector(-83.924, 0.525, -23.373), Vector(-48.646, 9.123,
-37.744), Vector(-48.960, 9.123, -37.482), Vector(-101.067, 6.929, -6.602), Vector(-129.666, 6.315, 8.213), Vector(-87.344,
6.934, -12.898), Vector(-147.875, -3.108, 29.308), Vector(-12.363, -0.110, -29.153), Vector(-7.540, -0.123, -1.602), Vector(
4.094, 6.002, -2.716), Vector(3.655, 6.002, -1.017), Vector(-10.436, 16.935, 5.866), Vector(-9.457, 6, -42.039), Vector(
-33.479, 9, -33.970), Vector(-33.934, 9, -34.332), Vector(-34.322, 9, -34.323), Vector(-68.324, 4.500, -34.892), Vector(
-92.295, 7.487, -32.459), Vector(-89.317, 6.929, -5.521), Vector(-130.112, 6.315, 8.917), Vector(9.134, 6.026, -36.484),
Vector(3.477, 6.026, -35.420), Vector(-8.302, 6, -41.412), Vector(17.416, 6.024, -37.193), Vector(-3.832, 4.531, -21.203),
Vector(3.063, 6.026, -35.064), Vector(-33.478, 9, -33.960), Vector(-11.035, 6, -42.807), Vector(10.635, 6.026, -37.031),
Vector(-17.309, 6, -0.209), Vector(-31.565, 6, -48.407), Vector(-29.685, 9, -13.900), Vector(-33.478, 9, -33.960), Vector(
-17.146, 6, -0.208), Vector(-50.088, -0.215, -32.694), Vector(-60.990, -0.362, -33.299), Vector(-94.391, 1.065, -15.700),
Vector(-99.320, 6.939, -6.837), Vector(-102.716, 7.071, -2.220), Vector(-129.759, 6.315, 8.782), Vector(-58.645, 4.956,
-16.826), Vector(-130.238, 6.315, 8.700), Vector(-131.973, 7.071, 30.937), Vector(-131.560, 7.071, 30.777), Vector(-15.474,
-0.114, -30.938), Vector(-59.739, 12.421, -11.641), Vector(-100.845, 6.929, -6.393), Vector(-79.641, 9.811, -37.523), Vector(
-108.608, 0.081, -6.883));
Global.End_Radius = Array(0, 0, 0, 0, 0, 3, 3.300, 3.300, 1.800, 3, 3, 2.500, 3, 3.400, 3.300, 3, 4, 5, 3.500, 3, 3, 3, 4, 3,
3.400, 3, 3, 3.500, 3, 3.500, 3, 3.500, 3.500, 3.500, 3, 3, 3, 3.800, 3.800, 3.500, 3, 4.500, 3, 3.500, 3.500, 5, 3.500, 3.400,
3.400, 3.500, 3.500, 4, 4, 4, 3.300, 1.800, 3, 1.800, 3);
Global.Hint_Origin = Array(Vector(-3.780, 0.888, -19.993), Vector(7.022, 1.215, -23.954), Vector(-30.995, 1.195, -33.777), Vector(
-7.949, 1.415, -31.096));
Global.Hint_Text = Array(Custom String("Bounce"), Custom String("Bounce"),
Custom String("Bounce"), Custom String("Punch between tree and car\r\nJump at the end to perform super jump"));
Global.Hint_IndexFlag = Array(19, 20, 23, 30);
Global.Lava_Origin = Array(Vector(-55.471, 10.118, -10.968), Vector(-82.684, 5.798, -41.333), Vector(-127.426, 5.097, 11.574),
Vector(-1.527, 1.473, -14.501), Vector(-82.857, 5.842, -32.806), Vector(-78.973, 5.583, -23.512));
Global.Lava_Radius = Array(6.700, 5, 7.800, 5, 4, 5);
Global.Lava_IndexFlag = Array(12, 13, 16, 17, 28, 45);
}
}
rule("CHECKPOINT PARAMETERS --- BUSAN")
{
event
{
Ongoing - Global;
}
conditions
{
Current Map == Map(Busan);
}
actions
{
Global.Level_Text = Array(0, Custom String("Level 1\r\nRollouts"), Custom String("Level 2\r\nBounces"), Custom String("Level 3\r\nDiags"), Custom String("Level 4\r\nWall Diags"), Custom String("Level 5\r\nBalance"));
Global.Start_Origin = Array(Vector(51.980, 21.398, -127.432), Vector(52.062, 14.500, -116.812), Vector(51.921, 11.930, -100.798),
Vector(32.455, 20, -110.130), Vector(71.060, 20, -110.220), Vector(67.310, 14.991, -123.683), Vector(12.187, 22.961, -133.600),
Vector(52.686, 21.398, -127.628), Vector(76.109, 22.750, -108.887), Vector(69.652, 20, -108.224), Vector(70.436, 20, -110.429),
Vector(70.136, 20, -110.188), Vector(50.706, 21.398, -127.994), Vector(50.307, 21.398, -127.737), Vector(279.651, 10.279,
209.564), Vector(187.660, 5.088, 251.063), Vector(206.624, 11.095, 268.424), Vector(205.177, 17.097, 221.948), Vector(208.711,
17.188, 209.776), Vector(193.369, 21.350, 246.731), Vector(-291.151, 12.211, 144.892), Vector(-320.866, 14.610, 126.179),
Vector(-14.563, 17, -125.290), Vector(34.253, 15, -122.593), Vector(71.874, 11.061, -116.329), Vector(40.693, 11.930, -95.621),
Vector(215.900, 17.098, 208.635), Vector(179.605, 13.095, 230.400), Vector(213.319, 10.095, 234.276), Vector(-341.760, 12.071,
166.648), Vector(-358.992, 10.866, 152.393), Vector(-338.338, 8.120, 127.179), Vector(-293.594, 14.228, 130.789), Vector(
20.821, 12.938, -119.551), Vector(106.461, 15.935, -137.103), Vector(59.406, 12, -97.167), Vector(56.495, 6, -85.582), Vector(
46.791, 9.069, -107.449), Vector(58.801, 10.781, -125.531), Vector(78.100, 20, -111.658), Vector(279.050, 10.166, 229.320),
Vector(253.978, 11.359, 248.289), Vector(209.054, 17.098, 230.642), Vector(220.590, 17.097, 218.480), Vector(223.984, 16.117,
247.039), Vector(-388.077, 9.753, 170.055), Vector(-354.191, 10.851, 150.824), Vector(-359.032, 12.052, 169.057), Vector(
-350.158, 12.071, 170.340), Vector(-350.160, 12.073, 172.252), Vector(-359.650, 12.050, 171.328), Vector(-354.625, 11.106,
149.975), Vector(-321.136, 13.437, 124.668), Vector(-333.349, 9.489, 125.030), Vector(239.266, 13.093, 231.425), Vector(
242.521, 13.094, 239.467), Vector(225.631, 16.095, 210.373), Vector(218.150, 9.590, 253.100), Vector(-348.821, 8.290, 156.158),
Vector(-346.771, 8.288, 138.731), Vector(-352.346, 10.459, 139.889), Vector(-356.660, 10.459, 141.964), Vector(-342.439, 8.290,
152.718), Vector(-341.827, 8.290, 156.206), Vector(80.590, 20, -107.402), Vector(79.737, 22.536, -97.925), Vector(88.015, 10,
-93.230), Vector(88.182, 15.554, -86.196), Vector(-359.228, 12.169, 127.197), Vector(-336.199, 14.680, 126.258), Vector(
-368.826, 20.724, 115.175), Vector(-356.867, 16.467, 169.104), Vector(-339.996, 25.301, 156.729), Vector(-298.007, 12.169,
128.712));
Global.Start_Radius = Array(3, 3, 3, 3, 3, 3, 2.500, 4.100, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500,
2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500,
2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500,
2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 3, 2.500, 1.600, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500,
2.500, 2.500);
Global.Start_Camera = Array(0, 0, 0, 0, 0, 0, 92.977, 52.224, 67.006, -58.975, -93.400, -125.184, -12.090, -54.739, -94.037,
39.661, -91.835, -65.198, 23.928, 114.318, -95.598, -79.547, 128.337, 100.481, -115.510, 148.387, -49.345, 110.923, -73.905,
88.885, 112.258, -48.389, -79.964, 75.795, -46.494, -109.589, -110.303, 108.545, -9.772, -78.574, -32.585, -69.999, 91.862,
77.014, -88.605, 154.885, 141.411, 51.910, 48.878, 128.090, 88.193, 79.360, 23.533, -41.050, -92.922, -99.102, -19.946,
160.610, -147.596, -50.630, -42.610, 135.132, 164.114, 72.059, -4.054, -178.402, 2.543, -69.538, 172.496, -84.957, 1.445,
141.784, 129.133, 179.637);
Global.Start_Abilities = Array(0, 0, 0, 0, 0, Vector(0, 0, 0), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 1, 0), Vector(1, 1, 0),
Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 0, 0), Vector(0, 0, 0), Vector(0, 1, 1), Vector(
1, 1, 0), Vector(1, 1, 0), Vector(1, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1,
1), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0),
Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1, 0), Vector(
0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1,
0), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0),
Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(
0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 1), Vector(1, 0, 1), Vector(0, 1, 0), Vector(1, 0, 1), Vector(0, 1, 0), Vector(0, 0,
1), Vector(0, 0, 1), Vector(0, 1, 0), Vector(0, 0, 1), Vector(0, 1, 0), Vector(0, 0, 1));
Global.Start_LevelFlag = Array(0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5);
Global.End_Origin = Array(0, 0, 0, 0, 0, 0, Vector(51.384, 21.400, -128.038), Vector(75.921, 22.750, -109.478), Vector(64.085,
11.930, -88.499), Vector(52.185, 6, -93.494), Vector(24.416, 20, -112.104), Vector(24.958, 13.034, -135.289), Vector(33.164, 8,
-80.375), Vector(7.334, 15.721, -125.618), Vector(235.849, 15.991, 206.101), Vector(221.859, 9.095, 256.980), Vector(186.827,
5.088, 249.158), Vector(191.066, 16.095, 226.469), Vector(212.357, 9.483, 218.023), Vector(208.263, 10.095, 239.998), Vector(
-320.699, 13.552, 124.814), Vector(-367.804, 11.823, 139.032), Vector(5.332, 22.961, -134.248), Vector(71.429, 20, -110.546),
Vector(51.961, 14.500, -116.503), Vector(33.041, 20, -109.044), Vector(179.271, 13.095, 230.900), Vector(214.180, 17.095,
210.798), Vector(195.073, 16.095, 229.296), Vector(-310.130, 12.071, 165.486), Vector(-324.530, 8.813, 136.103), Vector(
-358.125, 10.653, 146.639), Vector(-335.693, 8.301, 138.039), Vector(71.500, 20, -111.032), Vector(70.731, 20, -109.791),
Vector(33.165, 20, -108.850), Vector(41.318, 11.930, -97.021), Vector(87.183, 12.950, -117.721), Vector(37.663, 6.183,
-80.319), Vector(28.130, 22.750, -108.620), Vector(240.060, 9.095, 253.243), Vector(226.416, 16.117, 251.482), Vector(244.865,
21.095, 224.149), Vector(244.738, 21.095, 224.019), Vector(194.056, 21.095, 246.208), Vector(-351.944, 10.655, 145.867),
Vector(-320.702, 14.715, 126.230), Vector(-328.706, 14.073, 180.446), Vector(-312.330, 14.198, 172.274), Vector(-337.032,
16.413, 161.876), Vector(-337.107, 16.411, 172.026), Vector(-310.509, 12.243, 159.991), Vector(-313.313, 14.196, 171.694),
Vector(-369.517, 11.821, 141.915), Vector(192.403, 16.095, 227.837), Vector(194.092, 21.095, 246.205), Vector(203.285, 13.092,
257.762), Vector(228.130, 16.090, 222.500), Vector(-375.543, 11.821, 154.949), Vector(-374.551, 11.821, 153.900), Vector(
-394.604, 9.160, 158.779), Vector(-314.581, 8.208, 126.118), Vector(-331.842, 9.810, 109.423), Vector(-317.563, 12.073,
166.997), Vector(79.720, 22.536, -97.989), Vector(51.556, 14.500, -117.711), Vector(88.181, 15.554, -86.192), Vector(60.343,
11.930, -98.894), Vector(-368.834, 20.724, 115.178), Vector(-368.976, 20.724, 115.234), Vector(-358.879, 12.047, 165.712),
Vector(-339.812, 25.309, 156.632), Vector(-284.863, 11.826, 144.951), Vector(-288.837, 20.680, 114.802));
Global.End_Radius = Array(0, 0, 0, 0, 0, 0, 4, 2.500, 3.500, 3, 3, 3, 3, 3, 3, 3.500, 4, 3.500, 3.500, 3, 2.300, 3, 3, 3.500,
3.500, 3.500, 3, 3, 3.500, 3, 3, 3, 3, 3.500, 3.500, 3.500, 4, 3.500, 3.500, 2.500, 3.500, 3.500, 3, 3, 3, 3, 2, 3, 3.500, 2,
2, 3, 3.500, 3.500, 3.500, 3, 3.500, 3, 3, 3, 3, 3, 3.500, 3.500, 2, 3.500, 1.500, 3.500, 2, 2, 3, 3, 3.500, 2);
Global.Lava_Origin = Array(Vector(64.572, 24.672, -112.685), Vector(-347.351, 11.279, 140.621));
Global.Lava_Radius = Array(9, 5);
Global.Lava_IndexFlag = Array(8, 30);
}
}
rule("CHECKPOINT PARAMETERS --- TEMPLE OF ANUBIS")
{
event
{
Ongoing - Global;
}
conditions
{
Current Map == Map(Temple of Anubis);
}
actions
{
Global.Level_Text = Array(0, Custom String("Level 1\r\nRollouts"), Custom String("Level 2\r\nBounces"), Custom String("Level 3\r\nDiags"), Custom String("Level 4\r\nWall Diags"));
Global.Start_Origin = Array(Vector(-9.206, 14.419, 81.063), Vector(-20.666, 6.388, 63.318), Vector(-12.466, 10.384, 53.241),
Vector(-4.064, 16.229, 62.577), Vector(6.099, 8.507, 68.111), Vector(2.929, 0.541, -19.873), Vector(19.369, 12.378, 11.349),
Vector(-0.679, 13.927, 14.142), Vector(-34.331, 10.200, 45.042), Vector(-27.335, 10.903, 17.981), Vector(-10.275, 11.965,
15.740), Vector(-27.335, 10.903, 17.981), Vector(-4.421, 8.845, 31.704), Vector(-49.015, 9.508, 34.527), Vector(-11.828, 4.509,
41.198), Vector(-10.932, 10.370, 53.308), Vector(-6.920, 16.745, 53.957), Vector(-12.339, 10.370, 52.816), Vector(-12.416,
10.393, 53.696), Vector(-4.154, 16.229, 62.619), Vector(-4.154, 16.229, 62.619), Vector(-4.281, 16.229, 62.719), Vector(23.865,
0.299, -14.789), Vector(15.209, 4.107, 19.677), Vector(-23.438, 0.995, -2.601), Vector(-12.197, 0.939, 7.396), Vector(-15.451,
0.928, 15.729), Vector(-9.329, 1.076, 19.396), Vector(-0.060, 0.954, 26.817), Vector(-0.060, 0.954, 26.817), Vector(-14.150,
4.521, 37.486), Vector(-47.221, 1.513, 35.143), Vector(-31.891, 9.005, 55.746), Vector(-31.891, 9.005, 55.746), Vector(-32.040,
9.005, 56.320), Vector(-24.842, 4.642, 84.725), Vector(-11.854, 3.991, 73.600), Vector(2.349, 4.878, 105.261), Vector(4.036,
4.559, 114.854), Vector(-9.650, 4.744, 93.798), Vector(16.496, 0.647, -4.930), Vector(12.534, 0.429, -0.325), Vector(-6.983,
-2.252, -11.896), Vector(-14.855, 2.048, -1.538), Vector(9.080, 5.530, 15.210), Vector(12.322, 5.552, 9.272), Vector(-10.556,
0.892, 17.169), Vector(0.692, 0.876, 39.841), Vector(-7.144, 2.509, 41.468), Vector(-46.616, 1.668, 44.976), Vector(-15.012,
7.078, 33.358), Vector(-34.919, 5.509, 24.979), Vector(-25.226, 4.509, 31.165), Vector(-26.437, 4.509, 33.281), Vector(-36.064,
5.509, 26.676), Vector(-14.569, 10.518, 52.149), Vector(-23.906, 4.597, 77.789), Vector(4.194, 2.612, 89.139), Vector(-25.677,
4.607, 115.184), Vector(-25.418, 5.200, 111.899), Vector(-10.287, 4.720, 116.049), Vector(-4.311, 5.184, 93.408), Vector(
-25.456, -2.278, -27.211), Vector(-17.034, -2.260, -21.849), Vector(-38.112, 5.484, 27.052), Vector(-38.847, 5.009, 14.637),
Vector(-32.028, 10.200, 45.729), Vector(-34.489, 10.200, 48.149), Vector(-34.489, 10.200, 48.149), Vector(-25.164, 1.474,
55.494), Vector(-23.259, 1.512, 53.803), Vector(-22.031, 4.636, 78.431), Vector(-25.339, 1.525, 74.867), Vector(-23.810, 4.675,
79.902), Vector(-24.073, 4.654, 89.630), Vector(2.850, 3.556, 76.334), Vector(4.360, 3.770, 77.958), Vector(18.245, 2.399,
87.479), Vector(-24.882, 4.624, 122.389), Vector(-21.691, 2.795, 102.805), Vector(-25.939, 3.638, 109.575), Vector(-30.801,
4.586, 116.563));
Global.Start_Radius = Array(4, 3, 3, 3, 3, 2.500, 2.500, 3, 2.500, 2.500, 4.100, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500,
2.500, 2.500, 2.500, 2.500, 2.500, 3, 3, 3, 3, 3, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500,
2.500, 2.500, 2.500, 2.500, 2.500, 2.800, 2.800, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500,
2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500,
2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500);
Global.Start_Camera = Array(-173.079, 81.321, -12.980, 25.142, -90.170, 30.174, -81.343, -87.896, 165.471, 57.008, 130.000, 57.008,
-96.960, 60.738, 55.668, 146.063, -63.237, -26.884, 20.638, -22.440, -9.558, -61.831, -41.446, -99.860, 59.628, -17.095,
134.714, 159.247, -17.133, -17.133, -106.842, 12.821, 34.156, 34.156, 24.901, 0.621, -151.441, -46.461, -155.209, 2.955,
-54.695, -62.402, -23.538, 7.833, -113.920, -77.662, -64.885, -80.480, -91.642, 143.866, 164.454, 100.986, -168.904, -84.518,
6.746, 13.414, -156.396, -35.464, 166.454, 141.141, 139.889, -91.599, 42.775, 35.909, -64.836, 22.703, 66.407, 19.644, 19.644,
-172.216, -83.535, 53.015, 55.349, 24.774, 35.980, -46.615, -25.670, 36.634, 156.511, 129.968, 145.613, 129.375);
Global.Start_Abilities = Array(0, 0, 0, 0, 0, Vector(0, 0, 0), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 1, 1),
Vector(0, 1, 1), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1, 0), Vector(1, 0, 0), Vector(1, 1, 0), Vector(0, 1, 0), Vector(
0, 0, 0), Vector(0, 0, 1), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 0, 0), Vector(0, 0, 1), Vector(0, 0,
1), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1, 1),
Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 1, 0), Vector(
0, 1, 0), Vector(0, 0, 1), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1,
0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 1, 1), Vector(0, 1, 1),
Vector(0, 1, 1), Vector(0, 1, 1), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(
0, 1, 1), Vector(0, 0, 0), Vector(0, 0, 0), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1,
0), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0),
Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 1));
Global.Start_LevelFlag = Array(0, 0, 0, 0, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4);
Global.End_Origin = Array(0, 0, 0, 0, 0, Vector(18.104, 12.199, 11.812), Vector(-1.170, 14.057, 14.385), Vector(-33.214, 10.200,
45.510), Vector(-27.284, 10.903, 18.002), Vector(-10.631, 11.964, 16.074), Vector(14.301, 9.963, -4.711), Vector(-5.184, 8.834,
31.933), Vector(-49.438, 9.510, 34.571), Vector(-8.721, 12.343, 50.088), Vector(-8.811, 12.489, 50.319), Vector(-2.727, 2.509,
41.217), Vector(-9.494, 14.419, 81.422), Vector(-19.021, 10.929, 105.598), Vector(-3.930, 16.229, 62.633), Vector(-17.287,
10.937, 105.577), Vector(0.238, 4.670, 113.458), Vector(-32.378, 9.005, 55.432), Vector(18.478, 12.244, 11.552), Vector(-0.951,
13.923, 14.191), Vector(-15.383, 13.989, 5.683), Vector(-13.035, 4.509, 40.707), Vector(13.356, 10.091, 11.901), Vector(14.085,
9.962, -4.944), Vector(-16.703, 4.509, 38.302), Vector(-4.886, 8.835, 32.231), Vector(-34.934, 10.200, 52.470), Vector(-37.728,
10.200, 48.356), Vector(-9.471, 14.421, 81.470), Vector(-3.852, 16.229, 62.646), Vector(-27.307, 14.217, 85.787), Vector(
-27.181, 4.454, 122.352), Vector(-35.443, 10.200, 51.420), Vector(-16.636, 10.938, 107.771), Vector(-9.469, 4.752, 89.320),
Vector(-30.083, 9.932, 122.377), Vector(-1.133, 14.094, 14.439), Vector(-11.107, 11.955, 15.354), Vector(-5.232, 1, 20.372),
Vector(-21.111, 4.509, 31.021), Vector(-15.458, 13.987, 5.535), Vector(-23.551, 4.509, 33.482), Vector(-49.818, 9.509, 34.134),
Vector(-33.811, 10.200, 45.393), Vector(-49.638, 9.508, 34.178), Vector(-27.381, 10.903, 17.933), Vector(14.126, 10.096,
11.843), Vector(-11.116, 11.960, 15.896), Vector(-27.314, 10.903, 17.977), Vector(-55.971, 9.508, 33.521), Vector(-33.029,
10.200, 45.156), Vector(-9.677, 14.419, 81.052), Vector(-34.113, 9.907, 53.465), Vector(-26.748, 4.557, 118.124), Vector(
-22.941, 6.420, 68.647), Vector(-5.759, 12.876, 84.764), Vector(5.680, 3.525, 73.573), Vector(-27.203, 14.217, 88.433), Vector(
-0.981, 14.001, 14.397), Vector(18.211, 12.192, 11.443), Vector(-56.153, 9.508, 33.135), Vector(-36.230, 10.200, 51.507),
Vector(-7.008, 16.743, 53.989), Vector(-27.005, 14.217, 88.243), Vector(-3.964, 16.229, 62.530), Vector(-13.447, 4.509,
40.163), Vector(-32.550, 9.005, 55.126), Vector(-6.411, 12.875, 83.801), Vector(-3.947, 16.229, 62.645), Vector(-4.855, 4.664,
110.146), Vector(-23.105, 4.464, 127.160), Vector(-17.346, 10.936, 105.535), Vector(-14.853, 4.663, 112.870), Vector(18.981,
4.521, 118.131), Vector(-9.607, 4.749, 92.823), Vector(5.368, 3.974, 80.980), Vector(-27.343, 14.217, 85.836), Vector(-18.705,
10.935, 108.514));
Global.End_Radius = Array(0, 0, 0, 0, 0, 3.500, 2, 3, 2.500, 4, 2, 3, 4, 1.700, 3, 3, 3.500, 3, 2.500, 3.500, 3, 3.500, 3.500, 2,
2, 3, 4, 2, 3, 3, 3, 3.500, 3.500, 2.300, 3.500, 3.500, 4, 3.500, 3.500, 2, 2, 4.500, 3, 4, 2, 4, 4, 3.500, 4, 2.500, 4, 4.500,
2.500, 3, 3, 4, 4, 3.500, 3, 3.200, 3, 3.500, 2, 4, 3.500, 3.500, 2.500, 3, 2.500, 4, 4, 4, 2.500, 3.500, 3, 3.500, 4, 3.500,
3.500, 3.500, 3.500, 3.500);
Global.Lava_Origin = Array(Vector(-7.265, 4.979, 105.825), Vector(-20.337, 7.031, 100.542));
Global.Lava_Radius = Array(5, 9);
Global.Lava_IndexFlag = Array(38, 39);
}
}
rule("CHECKPOINT PARAMETERS --- LIJIANG TOWER")
{
event
{
Ongoing - Global;
}
conditions
{
(Array Contains(Current Map, Map(Lijiang Tower)) || Array Contains(Current Map, Map(Lijiang Tower Lunar New Year))) == True;
}
actions
{
Global.Level_Text = Array(0, Custom String("Level 1\r\nRollouts"), Custom String("Level 2\r\nBounces"), Custom String("Level 3\r\nDiags"), Custom String("Level 4\r\nBalance"));
Global.Start_Origin = Array(Vector(23.714, 6, -27.669), Vector(0.862, -1.142, -35.122), Vector(-22.523, 6, -27.529), Vector(-3.014,
8.006, -52.288), Vector(1.066, -1, -64.239), Vector(67.626, 3.743, -32.329), Vector(67.757, 8.501, -15.217), Vector(57.790,
1.860, -46.654), Vector(30.981, 6.029, -45.220), Vector(17.277, 6, -15.769), Vector(24.218, 6, -27.980), Vector(23.964, 6,
-28.036), Vector(5.396, 8.006, -52.107), Vector(23.759, 6, -27.569), Vector(16.862, -0.140, -46.809), Vector(14.742, 2.292,
-44.311), Vector(11.634, -1, -74.474), Vector(-14.718, -0.920, -67.553), Vector(57.545, 1.858, -39.296), Vector(32.333, 0,
-42.969), Vector(25.865, 0.001, -43.874), Vector(19.587, 0.001, -15.345), Vector(6.254, -0.979, -46.164), Vector(6.225, -1.140,
-33.929), Vector(47.247, 2, -40.514), Vector(47.247, 2, -40.514), Vector(14.426, 0.843, -42.904), Vector(14.495, 2.302,
-45.640), Vector(22.280, -3, -55.422), Vector(11.546, 1.320, -29.938), Vector(-22.050, 6, -26.980), Vector(-8.951, 13.800,
-51.310), Vector(-20.071, 20.672, -30.169), Vector(-20.071, 20.672, -30.169), Vector(-8.530, 25.857, -51.653), Vector(65.581,
98, 160.755), Vector(69.602, 96.120, 146.010), Vector(41.526, 94.900, 137.203), Vector(20.933, 96.433, 130.855), Vector(8.364,
98, 172.312), Vector(8.364, 98, 172.312), Vector(-12.564, 94.149, 147.882), Vector(9.150, 94.147, 143.291), Vector(10.716,
94.147, 156.905), Vector(0.336, 95.998, 106.032), Vector(-16.215, 97.898, 181.988), Vector(-41.790, 98, 164.303), Vector(
37.743, 94.921, 159.644), Vector(19.664, 96.421, 138.683), Vector(-18.976, 96.500, 137.396), Vector(-0.437, 94, 176.806),
Vector(0.699, 94, 159.931), Vector(47.337, 95.481, 143.830), Vector(49.188, 95.381, 155.686), Vector(28.675, 94.500, 150.973),
Vector(28.200, 94.501, 151.544), Vector(23.192, 94.500, 157.228), Vector(17.676, 96.331, 124.560), Vector(13.541, 94, 169.611),
Vector(10.054, 95, 126.102), Vector(17.740, 97.900, 182.268), Vector(23.762, 102.583, 185.727), Vector(39.990, 98, 164.812),
Vector(80.143, 112.207, 148.259), Vector(5.402, 94.147, 160.861), Vector(5.521, 98.568, 164.694), Vector(0.398, 125.661,
187.847), Vector(54.288, 267.091, 334.649), Vector(44.263, 267, 301.519), Vector(-1.438, 270, 301.687), Vector(1.445, 278,
292.257), Vector(31.858, 267.124, 313.293), Vector(20.121, 267, 290.409), Vector(4.668, 270, 297.802), Vector(1.844, 267.333,
286.673), Vector(0.135, 270, 267), Vector(-30.768, 267, 312.390), Vector(33.233, 267.676, 302.940), Vector(31.606, 267.001,
283.565), Vector(-3.665, 270, 258.048), Vector(-4.784, 267.167, 290.575), Vector(31.421, 267, 322.808), Vector(35.087, 273.505,
316.386), Vector(32.518, 270.854, 343.324), Vector(59.320, 282.520, 340.743));
Global.Start_Radius = Array(3, 3, 3, 3, 3, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500,
2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 1.500, 1.500, 2.500, 1.500, 2.500, 2.500, 2, 2, 2, 2.500, 2.500,
2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500,
2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 1.800, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500,
2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500);
Global.Start_Camera = Array(-129.183, -178.792, 86.567, 2.120, 1.324, -104.799, -110.489, -151.963, -26.960, -154.325, -103.749,
-140.762, -48.686, -90.115, -97.646, -179.577, -87.039, -12.420, -90.280, 76.311, -47.411, -149.672, 7.399, 77.256, -48.406,
-48.406, 177.506, 10.871, -15.090, -87.731, 131.830, -26.016, -61.694, 151.155, 61.501, -112.522, -108.875, -132.303, 95.993,
-147.156, -129.573, -87.325, -32.871, -56.041, -24.994, -131.204, 91.148, -97.432, -100.684, -30.564, -81.612, 56.547,
-147.469, -81.497, -95.592, -135.428, -74.130, -10.025, 162.872, -83.600, 52.119, -152.375, 129.128, -90.621, -8.718, -84.985,
170.024, -163.707, 1.620, 20.374, 122.613, -171.958, 42.435, 118.180, 150.491, -1.571, 175.232, -139.471, -141.537, 5.927,
105.194, 158.209, -134.912, 117.999, -138.175);
Global.Start_Abilities = Array(Vector(0, 0, 0), Vector(0, 0, 0), Vector(0, 0, 0), Vector(0, 0, 0), Vector(0, 0, 0), Vector(0, 0,
0), Vector(0, 1, 0), Vector(0, 0, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 1),
Vector(0, 0, 0), Vector(0, 0, 1), Vector(0, 1, 0), Vector(0, 1, 0), Vector(1, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(
0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1,
0), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 0, 1), Vector(0, 0, 1), Vector(0, 0, 1), Vector(0, 0, 1), Vector(0, 0, 1),
Vector(0, 0, 0), Vector(0, 0, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(1, 1, 0), Vector(0, 1, 0), Vector(1, 1, 0), Vector(
0, 1, 0), Vector(0, 1, 0), Vector(0, 0, 0), Vector(0, 0, 0), Vector(0, 0, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 0,
0), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1, 0),
Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(1, 0, 1), Vector(0, 1, 0), Vector(0, 0, 1), Vector(1, 1, 0), Vector(
1, 0, 1), Vector(0, 0, 1), Vector(0, 1, 0), Vector(0, 1, 0), Vector(1, 1, 0), Vector(0, 0, 0), Vector(1, 1, 0), Vector(0, 1,
0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0),
Vector(0, 1, 0), Vector(0, 1, 0), Vector(1, 0, 1), Vector(1, 1, 0), Vector(0, 0, 1), Vector(1, 1, 0));
Global.Start_LevelFlag = Array(0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4,
4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 2, 2, 2, 2,
2, 2, 3, 3, 3, 3, 4, 4, 4, 4);
Global.End_Origin = Array(0, 0, 0, 0, 0, Vector(29.804, 9.450, -27.397), Vector(29.920, 9.440, -27.050), Vector(15.181, -1,
-71.885), Vector(18.235, -0.140, -40.339), Vector(-22.071, 6, -28.155), Vector(-15.630, -0.140, -46.313), Vector(1.655, -1,
-63.918), Vector(-22.053, 6, -27.985), Vector(-28.469, 9.450, -27.104), Vector(-16.290, -0.002, -46.321), Vector(0.939, 2,
-77.422), Vector(-27.230, -3, -57.124), Vector(-17.852, 0, -49.413), Vector(30.046, 9.440, -27.104), Vector(51.813, 6.016,
-25.660), Vector(18.775, 6, -10.703), Vector(5.317, 8.016, -52.667), Vector(25.009, 6, -28.001), Vector(24.089, 6, -29.045),
Vector(30.055, 9.440, -27.190), Vector(16.979, 6, -16.580), Vector(-3.977, -1.002, -73.465), Vector(27.165, 6.029, -40.136),
Vector(18.168, 6, -15.480), Vector(-22.179, 6, -28.010), Vector(-9.312, 13.822, -50.838), Vector(-20.071, 20.672, -30.187),
Vector(-29.274, 20.139, -25.656), Vector(-8.440, 25.857, -51.561), Vector(22.167, 24.437, -25.964), Vector(15.768, 94,
174.532), Vector(20.450, 96, 133.096), Vector(7.824, 96, 115.964), Vector(64.412, 93.993, 138.173), Vector(-4.235, 94,
153.797), Vector(-20.798, 96, 135.194), Vector(-33.935, 94.595, 150.106), Vector(-11.317, 94, 179.864), Vector(-24.100, 94,
145.116), Vector(-22.979, 94.500, 153.849), Vector(-65.393, 94, 146.044), Vector(7.646, 98, 172.641), Vector(-1.454, 94,
145.363), Vector(-13.912, 95, 130.922), Vector(-45.097, 98, 164.305), Vector(-23.171, 97.900, 179.895), Vector(25.732, 98,
180.205), Vector(7.624, 96, 115.707), Vector(7.491, 98, 173.060), Vector(4.472, 94, 149.532), Vector(-14.789, 95, 130.626),
Vector(-22.391, 97.898, 180.238), Vector(7.486, 98, 173.302), Vector(48.170, 94.930, 149.854), Vector(-28.826, 94, 146.253),
Vector(23.763, 102.583, 185.726), Vector(26.448, 93.998, 141.893), Vector(79.941, 111.737, 148.253), Vector(52.394, 93.984,
149.618), Vector(5.618, 98.553, 164.563), Vector(-0.165, 123.134, 176.772), Vector(14.085, 95, 129.517), Vector(40.559, 267,
298.134), Vector(38.492, 267, 320.245), Vector(0.128, 278.014, 310.178), Vector(22.633, 267, 285.738), Vector(13.923, 267.135,
284.364), Vector(35.898, 267, 317.922), Vector(27.497, 267, 303.134), Vector(-9.517, 270, 260.994), Vector(0.028, 278,
293.006), Vector(-10.451, 267.165, 283.021), Vector(-4.241, 267.333, 284.073), Vector(-5.933, 270, 260.521), Vector(0.050,
278.122, 296.009), Vector(30.433, 267, 294.088), Vector(35.135, 273.505, 316.432), Vector(26.670, 267, 307.687), Vector(59.865,
282.651, 341.675), Vector(40.098, 267, 321.705));
Global.End_Radius = Array(0, 0, 0, 0, 0, 3.500, 3.500, 3.500, 3.500, 3.500, 3.500, 3.500, 3.500, 2.500, 5, 3.200, 3.500, 2.500, 3,
3, 3, 3, 4, 3, 3, 4, 3.200, 3.500, 3.500, 3.500, 2.500, 1.500, 2, 2.500, 2.500, 5.500, 3.500, 3, 3.500, 3, 3.500, 3, 3, 3, 3,
3.500, 3.500, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3.500, 3, 2, 4, 7, 3.500, 1.700, 7, 3.500, 3, 3, 3, 3, 3.500, 3, 3, 3.500,
3.500, 3.500, 3.500, 3.500, 5.500, 3.500, 3.500, 3.500, 6, 4);
Global.Hint_Origin = Array(Vector(0.534, 102.871, 165.381));
Global.Hint_Text = Array(Custom String("Bounce"));
Global.Hint_IndexFlag = Array(65);
Global.Lava_Origin = Array(Vector(-0.461, 97.820, 160.988), Vector(-8.548, 89.037, 120.037), Vector(-28.702, 95.080, 174.664),
Vector(-28.970, 95.226, 161.584), Vector(15.880, 96.782, 129.062), Vector(17.987, 270.864, 299.726), Vector(-18.512, 268.136,
276.973), Vector(-1.015, 267.400, 273.293));
Global.Lava_Radius = Array(5, 15, 9, 9, 5, 5, 5, 5);
Global.Lava_IndexFlag = Array(40, 44, 45, 46, 48, 73, 74, 79);
}
}
rule("CHECKPOINT PARAMETERS --- DORADO")
{
event
{
Ongoing - Global;
}
conditions
{
Current Map == Map(Dorado);
}
actions
{
Global.Level_Text = Array(0, Custom String("Level 1\r\nRollouts"), Custom String("Level 2\r\nBounces"), Custom String("Level 3\r\nDiags"), Custom String("Level 4\r\nBalance"));
Global.Start_Origin = Array(Vector(79.903, 17.129, -6.980), Vector(64.439, 10.938, -17.369), Vector(76.474, 11, -19.031), Vector(
61.021, 7, -33.487), Vector(37.364, 11.012, -17.694), Vector(-3.396, 8.012, -0.721), Vector(-3.130, 8.012, -1.184), Vector(
30.158, 10.437, 21.733), Vector(55.385, 13.216, 24.551), Vector(54.870, 13.349, 28.525), Vector(67.610, 17, 41.948), Vector(
37.713, 11.012, -17.838), Vector(80.497, 17.146, -7.353), Vector(80.537, 17.132, -5.169), Vector(81.252, 17.131, -6.102),
Vector(106.426, 18, -6.154), Vector(124.930, 12.747, -19.259), Vector(93.658, 18.361, 6.774), Vector(155.011, 14.012, 43.885),
Vector(149.855, 18.012, 59.851), Vector(188.754, 13.904, 43.474), Vector(-2.190, 8.198, -0.860), Vector(-3.708, -0.388, 3.957),
Vector(20.893, 3.525, -8.639), Vector(25.881, 4.012, -27.545), Vector(32.707, 4.012, -25.827), Vector(61.681, 7, -32.238),
Vector(45.660, 7.012, -9.703), Vector(51.104, 6.781, -16.524), Vector(115.847, 11, -26.005), Vector(133.630, 11, -12.469),
Vector(78.416, 13, 24.356), Vector(96.756, 13.012, 20.594), Vector(179.966, 11.850, 61.173), Vector(19.870, 2.210, 25.800),
Vector(20.875, 3.520, -8.514), Vector(12.433, 9.500, 11.977), Vector(47.695, 6.880, -24.860), Vector(66.587, 6.933, -15.748),
Vector(67.545, 6.934, -18.704), Vector(45.644, 6.647, -29.172), Vector(62.353, 7, -30.240), Vector(105.585, 10.001, -4.694),
Vector(110.546, 11, -19.324), Vector(126.835, 11.001, -19.394), Vector(124.369, 11.001, -21.203), Vector(128.896, 9.109,
0.871), Vector(89.548, 14.474, 36.245), Vector(110.724, 11.081, 27.662), Vector(110.879, 11.083, 20.358), Vector(110.121,
19.222, 33.074), Vector(126.206, 18, 37.370), Vector(182.229, 14.833, 30.191), Vector(9.991, 9.500, 12.083), Vector(-11.534,
19.138, 11.632), Vector(57.938, 9, 6.852), Vector(33.009, 7.507, 29.996), Vector(25.287, 10, -33.399), Vector(24.553, 17.554,
-52.236), Vector(34.678, 21.711, -49.611), Vector(105.243, 18, -3.914), Vector(79.678, 17.439, -35.648), Vector(120.998,
17.933, 10.227), Vector(107.939, 29.345, 2.901), Vector(172.912, 19, 47.430), Vector(205.125, 30.029, 61.124), Vector(178.518,
68.476, 43.986));
Global.Start_Radius = Array(3.500, 2.800, 3, 3, 3, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500,
2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500,
2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 1.800, 1.800, 2.500, 2, 2.500, 2.500, 2.500, 2.500, 3,
2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 2.500, 4, 2.500, 2.500);
Global.Start_Camera = Array(-132.116, -142.773, -160.906, -45.604, 91.412, 76.921, 60.930, 156.764, -172.991, -13.661, -98.256,
83.925, -95.757, 18.127, 83.974, -88.401, 51.504, 55.382, 61.957, 96.954, -55.668, 143.564, 27.614, 91.664, 179.099, -35.739,
-60.068, 173.930, 88.116, -3.521, -59.952, 46.313, -26.763, 91.670, 178.445, 151.683, 132.155, -29.927, -94.395, -118.394,
54.739, 16.880, -148.513, 23.016, -72.955, 3.593, -27.224, -170.953, 129.842, 43.566, -151.705, 165.350, -63.303, -86.545,
103.332, -36.837, -88.401, 178.616, 77.871, -4.417, -115.790, -61.946, -124.118, -127.705, 91.423, -128.672, -63.611);
Global.Start_Abilities = Array(Vector(0, 0, 0), Vector(0, 0, 0), Vector(0, 0, 0), Vector(0, 0, 0), Vector(0, 0, 0), Vector(0, 1,
0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 0, 0), Vector(0, 1, 0), Vector(0, 0, 0),
Vector(0, 1, 1), Vector(0, 1, 1), Vector(0, 0, 0), Vector(0, 0, 1), Vector(0, 0, 0), Vector(1, 1, 0), Vector(0, 1, 0), Vector(
0, 1, 0), Vector(0, 1, 0), Vector(0, 0, 1), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1,
0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 1),
Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(
0, 1, 0), Vector(0, 1, 1), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 1), Vector(0, 1,
1), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 1, 0), Vector(0, 0, 1), Vector(1, 1, 0), Vector(0, 0, 1), Vector(0, 1, 0),
Vector(0, 0, 1), Vector(0, 0, 1), Vector(0, 1, 0), Vector(0, 0, 1), Vector(0, 1, 0), Vector(0, 0, 1), Vector(1, 1, 0), Vector(
0, 0, 1), Vector(1, 1, 0), Vector(0, 0, 0));
Global.Start_LevelFlag = Array(0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4);
Global.End_Origin = Array(0, 0, 0, 0, 0, Vector(40.111, 9, -5.436), Vector(38.241, 10.437, 23.645), Vector(47.694, 6.881, -30.841),
Vector(80.010, 17.116, -6.263), Vector(74.376, 19.450, 31.469), Vector(15.442, 9.500, 15.039), Vector(77.304, 11, -19.078),
Vector(27.003, 1.236, -0.460), Vector(86.957, 18.361, 15.396), Vector(105.406, 18, -4.424), Vector(47.765, 9, 3.505), Vector(
138.869, 17.750, 14.246), Vector(115.807, 18, 34.644), Vector(170.146, 11.850, 56.464), Vector(188.744, 13.943, 43.691),
Vector(160.383, 11, 42.306), Vector(21.917, 11, -25.185), Vector(11.124, 9.500, 19.069), Vector(36.465, 9.271, -5.436), Vector(
27.184, 11, -27.778), Vector(20.927, 9.533, -5.576), Vector(36.613, 9, 1.682), Vector(29.159, 10, -32.738), Vector(82.546,
10.857, -21.695), Vector(121.584, 17.933, 7.647), Vector(106.016, 18, -4.189), Vector(107.440, 19.950, 33.936), Vector(85.105,
20, 18.129), Vector(206.271, 15, 43.545), Vector(20.506, 9.533, -0.521), Vector(35.479, 10, -34.987), Vector(59.537, 6.745,
-14.456), Vector(39.093, 9, 0.010), Vector(36.746, 11.012, -18.051), Vector(29.145, 10, -32.044), Vector(80.103, 17.122,
-5.970), Vector(76.714, 8, 9.009), Vector(76.993, 6.839, -12.407), Vector(121.575, 17.933, 7.943), Vector(80.439, 17.120,
-5.786), Vector(137.791, 17.750, 14.362), Vector(138.373, 11, 27.657), Vector(80.229, 17.118, -6.079), Vector(128.302, 17.750,
12.037), Vector(133.762, 16.202, 42.808), Vector(80.214, 17.116, -6.252), Vector(130.012, 9.016, -20.801), Vector(139.644,
14.012, 47.315), Vector(-11.540, 19.138, 11.627), Vector(10.801, -0.248, 5.759), Vector(33.009, 7.507, 29.993), Vector(-1.119,
-0.566, 4.981), Vector(24.370, 17.563, -52.229), Vector(34.678, 21.711, -49.613), Vector(57.087, 6.792, -14.948), Vector(
80.345, 18.318, -32.536), Vector(31.881, 3.789, -17.760), Vector(108.042, 29.614, 3.355), Vector(102.591, 8.766, -15.036),
Vector(205.755, 30.296, 61.700), Vector(181.474, 13.850, 45.854), Vector(163.454, 11.810, 51.347));
Global.End_Radius = Array(0, 0, 0, 0, 0, 3, 3.500, 3.500, 4, 3.500, 4, 3, 4, 3, 3.500, 3.600, 3.500, 3.500, 3.500, 3.500, 3.500, 4,
3.500, 3.500, 4, 3.500, 3.500, 3.500, 2.500, 3.500, 3.500, 3.500, 3.500, 3.500, 3.500, 3.500, 3.500, 3, 3.500, 3.500, 3.500,
3.500, 4, 4, 4, 4, 3.500, 4.500, 2.500, 3.500, 3.500, 5, 3.500, 2.500, 3.500, 1.600, 3.500, 2.500, 2.500, 3.500, 6.500, 3.500,
3, 4.300, 6.500, 4, 4);
Global.Hint_Origin = Array(Vector(154.986, 26.897, 49.665), Vector(32.979, 4.263, -8.938));
Global.Hint_Text = Array(Custom String(
"Climb this roof with ult\r\nto get up there\r\nTry it in free mode!"), Custom String("Bounce"));
Global.Hint_IndexFlag = Array(66, 23);
Global.Lava_Origin = Array(Vector(122.829, 15.297, -4.769), Vector(83.714, 21.898, 18.453), Vector(87.745, 10.039, -10.160),
Vector(86.386, 20.366, 19.112), Vector(120.579, 16.041, 8.488), Vector(138.555, 11.738, 14.261), Vector(138.555, 11.738,
14.261));
Global.Lava_Radius = Array(8, 8, 5, 5, 8.600, 5, 5);
Global.Lava_IndexFlag = Array(16, 17, 42, 50, 51, 46, 47);
}
}
disabled rule("### GAMEPLAY EVENTS ###")
{
event
{
Ongoing - Global;
}
}
rule("Event - Initialize Global Variables & Map (do any necessary preliminary calculations, effects, etc.)")
{
event
{
Ongoing - Global;
}
actions
{
Disable Built-In Game Mode Announcer;
Disable Built-In Game Mode Completion;
Disable Built-In Game Mode Scoring;
Global.TempIter = 0;
Global.TempArray = Empty Array;
Global.Level_Color = Array(Color(White), Color(Green), Color(Yellow), Color(Red), Color(Purple), Color(Sky Blue), Color(Blue));
Global.Time_Recorded = Empty Array;
Global.Time_Proper = Empty Array;
Global.Time_Rank = Empty Array;
Global.Time_LevelFlag = Empty Array;
Global.Time_PlayerID = Empty Array;
Global.Time_HUD = Empty Array;
Global.Time_Updating = False;
Global.Setting_MapRotation = Workshop Setting Toggle(Custom String("General Settings"), Custom String("Enable Map Rotation"), True, 0);
Global.Setting_ServerLoad = Workshop Setting Toggle(Custom String("General Settings"), Custom String("Show Server Load"), False, 1);
Call Subroutine(Effects_RefreshGlobal);
If(Global.Setting_ServerLoad == True);
Create HUD Text(Host Player, Null, Null, Custom String("Server Load | Cur {0} | Avg {1} | Peak {2}", Server Load, Server Load Average, Server Load Peak), Right, 0, Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
End;
If(Current Game Mode != Game Mode(Skirmish));
Wait(0.250, Ignore Condition);
Set Match Time(1);
Wait(1.250, Ignore Condition);
Set Match Time(1);
Wait(1.250, Ignore Condition);
End;
Set Match Time(3600);
If(Global.Setting_MapRotation == False);
While(True);
Wait(600, Ignore Condition);
Set Match Time(3600);
End;
End;
}
}
rule("Event - Initialize Player Variables")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
}
actions
{
Preload Hero(Event Player, Hero(Doomfist));
Event Player.TempIter = 0;
Event Player.TempArray = Empty Array;
Event Player.Initialized = False;
Event Player.Transitioning = True;
Event Player.FreeMode = False;
Event Player.UsingPunch = False;
Event Player.GracePeriod = 0;
Event Player.MidAirPeriod = 0;
Event Player.Stopwatch = 0;
Event Player.HUD_Text = Empty Array;
Event Player.HUD_ControlsDisabled = False;
Event Player.HUD_ScoreboardDisabled = False;
Event Player.Level_Current = 0;
Event Player.Level_Checkpoints = Empty Array;
Event Player.Level_LocalIndex = 0;
Event Player.Level_GlobalIndex = 0;
Event Player.Checkpoint_Effects = Empty Array;
Event Player.Developer_Mode = False;
}
}
rule("Event - Spawn In Player (draw effects & HUD, enter parkour mode)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == False;
Is In Spawn Room(Event Player) == True;
}
actions
{
Clear Status(Event Player, Phased Out);
Call Subroutine(Calculate_Checkpoints);
Call Subroutine(Effects_RefreshPlayer);
Wait(0.100, Ignore Condition);
Set Status(Event Player, Null, Phased Out, 9999);
Call Subroutine(Reposition);
Event Player.Initialized = True;
While(Facing Direction Of(Event Player) != Direction From Angles(Global.Start_Camera[Event Player.Level_GlobalIndex], 0));
Wait(0.100, Ignore Condition);
Set Facing(Event Player, Direction From Angles(Global.Start_Camera[Event Player.Level_GlobalIndex], 0), To World);
End;
If(Global.Setting_MapRotation == False);
Disable Game Mode HUD(Event Player);
Disable Scoreboard(Event Player);
End;
Disable Kill Feed(Event Player);
Wait(0.100, Ignore Condition);
While(Event Player.HUD_Text == Empty Array || Count Of(Filtered Array(Event Player.HUD_Text, Current Array Index == Index Of Array Value(Event Player.HUD_Text, Current Array Element))) < Count Of(Event Player.HUD_Text));
Call Subroutine(HUD_RefreshText);
Wait(Random Real(0.1, 0.5), Ignore Condition);
End;
}
}
rule("Event - Update Scoreboard (refresh scoreboard HUD whenever updating variable is true)")
{
event
{
Ongoing - Global;
}
conditions
{
Global.Time_Updating == True;
}
actions
{
Wait(0.100, Ignore Condition);
Loop If(Global.TempIter != 0);
Call Subroutine(HUD_RefreshScoreboard);
Loop If( Count Of(Filtered Array(Global.Time_HUD, Current Array Index == Index Of Array Value(Global.Time_HUD, Current Array Element))) < Count Of(Global.Time_HUD) );
Global.Time_Updating = False;
}
}
rule("Event - Quick Respawn (press RELOAD while in parkour mode to quickly reposition)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Transitioning == False;
Event Player.FreeMode == False;
Is Button Held(Event Player, Button(Reload)) == True;
Is Button Held(Event Player, Button(Interact)) == False;
}
actions
{
Skip If(Is Using Ability 1(Event Player) == False, 2);
Cancel Primary Action(Event Player);
Wait(0.250, Ignore Condition);
Call Subroutine(Reposition);
Wait(0.100, Ignore Condition);
}
}
rule("Event - On Death (Whenever player dies, respawn & reposition)")
{
event
{
Player Died;
All;
All;
}
conditions
{
Event Player.Initialized == True;
}
actions
{
Event Player.Transitioning = True;
Wait(0.100, Ignore Condition);
Respawn(Event Player);
Clear Status(Event Player, Phased Out);
Call Subroutine(Reposition);
Wait(0.100, Ignore Condition);
Set Status(Event Player, Null, Phased Out, 9999);
Event Player.Transitioning = False;
}
}
rule("Event - Level Select (If standing on a level selector in main hub, start that level)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Transitioning == False;
Event Player.GracePeriod == 0;
Event Player.FreeMode == False;
Event Player.Level_Current == 0;
Is On Ground(Event Player) == True;
Distance Between(Position Of(Event Player), Global.Start_Origin[Event Player.Level_GlobalIndex])
> Global.Start_Radius[Event Player.Level_GlobalIndex];
}
actions
{
Event Player.Transitioning = True;
Wait(0.100, Ignore Condition);
For Player Variable(Event Player, TempIter, 1, Count Of(Event Player.Level_Checkpoints), 1);
If(Distance Between(Position Of(Event Player), Global.Start_Origin[Event Player.Level_Checkpoints[Event Player.TempIter]])
<= Global.Start_Radius[Event Player.Level_Checkpoints[Event Player.TempIter]]);
Play Effect(Event Player, Buff Explosion Sound, Color(White), Event Player, 50);
Event Player.Level_Current = Event Player.TempIter;
Call Subroutine(Calculate_Checkpoints);
Call Subroutine(Effects_RefreshPlayer);
Event Player.Stopwatch = 0;
Break;
End;
End;
If(Distance Between(Position Of(Event Player), Global.Start_Origin[Event Player.Level_GlobalIndex])
< Global.Start_Radius[Event Player.Level_GlobalIndex]);
Cancel Primary Action(Event Player);
Wait(0.100, Ignore Condition);
Call Subroutine(AbilityRefresh);
Else;
Call Subroutine(Reposition);
End;
Event Player.TempIter = 0;
Event Player.Transitioning = False;
}
}
rule("Event - Start Timer (Start timer stopwatch when leaving first checkpoint)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Transitioning == False;
Event Player.FreeMode == False;
Event Player.Level_Current > 0;
Event Player.Level_LocalIndex == 0;
Distance Between(Position Of(Event Player), Global.Start_Origin[Event Player.Level_GlobalIndex])
> Global.Start_Radius[Event Player.Level_GlobalIndex];
}
actions
{
Event Player.Stopwatch = 0;
Chase Player Variable At Rate(Event Player, Stopwatch, 9999, 1, None);
}
}
rule("Event - Checkpoint Fail (If standing anywhere outside of checkpoint start/end, go back to start)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Transitioning == False;
Event Player.GracePeriod == 0;
Event Player.FreeMode == False;
Event Player.Level_Current > 0;
Is On Ground(Event Player) == True;
Distance Between(Position Of(Event Player), Global.Start_Origin[Event Player.Level_GlobalIndex])
> Global.Start_Radius[Event Player.Level_GlobalIndex];
Distance Between(Position Of(Event Player), Global.End_Origin[Event Player.Level_GlobalIndex])
> Global.End_Radius[Event Player.Level_GlobalIndex];
}
actions
{
Call Subroutine(Reposition);
Wait(0.100, Ignore Condition);
}
}
rule("Event - Checkpoint Pass (Landing or floating for 3 seconds at goal will pass)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Transitioning == False;
Event Player.FreeMode == False;
Event Player.Level_Current > 0;
Distance Between(Position Of(Event Player), Global.End_Origin[Event Player.Level_GlobalIndex])
< Global.End_Radius[Event Player.Level_GlobalIndex];
}
actions
{
Event Player.MidAirPeriod = 3;
Chase Player Variable At Rate(Event Player, MidAirPeriod, 0, 1, None);
While(Is On Ground(Event Player) == False && Event Player.MidAirPeriod > 0);
Wait(0.200, Abort When False);
End;
Event Player.MidAirPeriod = 0;
Event Player.Transitioning = True;
Play Effect(Event Player, Buff Explosion Sound, Color(White), Event Player, 50);
If(Event Player.Level_LocalIndex < Count Of(Event Player.Level_Checkpoints) - 1);
Event Player.Level_LocalIndex += 1;
Event Player.Level_GlobalIndex = Event Player.Level_Checkpoints[Event Player.Level_LocalIndex];
Else;
Skip If(Event Player.Stopwatch == 0, 1);
Call Subroutine(Calculate_RecordTime);
Event Player.Level_Current = 0;
Call Subroutine(Calculate_Checkpoints);
End;
Call Subroutine(Effects_RefreshPlayer);
If(Distance Between(Position Of(Event Player), Global.Start_Origin[Event Player.Level_GlobalIndex])
< Global.Start_Radius[Event Player.Level_GlobalIndex]);
Cancel Primary Action(Event Player);
Wait(0.100, Ignore Condition);
Call Subroutine(AbilityRefresh);
Else;
Wait(0.050, Ignore Condition);
Call Subroutine(Reposition);
End;
Event Player.Transitioning = False;
}
}
rule("Event - Lava Sphere (Touching lava sphere resets player)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Transitioning == False;
Event Player.FreeMode == False;
Event Player.Checkpoint_Lavas != Empty Array;
Distance Between(Position Of(Event Player), Global.Start_Origin[Event Player.Level_GlobalIndex])
> Global.Start_Radius[Event Player.Level_GlobalIndex];
Is True For Any(Mapped Array(Event Player.Checkpoint_Lavas, Distance Between(Position Of(Event Player),
Global.Lava_Origin[Current Array Element]) - Global.Lava_Radius[Current Array Element]), Current Array Element < 0) == True;
}
actions
{
Call Subroutine(Reposition);
Wait(0.100, Ignore Condition);
}
}
rule("Event - Rocket Punch Check (checks if player is using rocket punch)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Transitioning == False;
Event Player.FreeMode == False;
(Is Firing Secondary(Event Player) && X Component Of(Global.Start_Abilities[Event Player.Level_GlobalIndex]) == 0) == True;
}
actions
{
Event Player.UsingPunch = True;
}
}
rule("Event - Rocket Punch Grace (releasing punch gives grace period)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Transitioning == False;
Event Player.FreeMode == False;
Is Firing Secondary(Event Player) == False;
Event Player.UsingPunch == True;
}
actions
{
Event Player.UsingPunch = False;
Event Player.GracePeriod = 0.500;
Chase Player Variable At Rate(Event Player, GracePeriod, 0, 1, None);
}
}
rule("Event - Slam/Uppercut Grace (using ability gives initial grace period)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Transitioning == False;
Event Player.FreeMode == False;
(Is Using Ability 1(Event Player) || Is Using Ability 2(Event Player)) == True;
}
actions
{
Event Player.GracePeriod = 0.500;
Chase Player Variable At Rate(Event Player, GracePeriod, 0, 1, None);
}
}
rule("Event - Starting Abilities (while inside starting checkpoint, refreshes usable abilities)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.FreeMode == False;
Distance Between(Position Of(Event Player), Global.Start_Origin[Event Player.Level_GlobalIndex])
<= Global.Start_Radius[Event Player.Level_GlobalIndex];
Is Firing Secondary(Event Player) == False;
Is Using Ability 1(Event Player) == False;
Is Using Ability 2(Event Player) == False;
}
actions
{
Abort If(Event Player.Transitioning == True);
Wait(0.500, Abort When False);
Call Subroutine(AbilityRefresh);
}
}
rule("Event - Free Roam Abilities (while in free mode, refreshes abilities when you use them, grants ultimate)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.FreeMode == True;
(Is Button Held(Event Player, Button(Secondary Fire)) || Is Button Held(Event Player, Button(Ability 1)) || Is Button Held(
Event Player, Button(Ability 2)) || Is Button Held(Event Player, Button(Ultimate))) == True;
}
actions
{
Call Subroutine(AbilityRefresh);
}
}
disabled rule("### INTERACTION ###")
{
event
{
Ongoing - Global;
}
}
rule("Interact Disallow Buttons (while interacting, disallow buttons)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Is Button Held(Event Player, Button(Interact)) == True;
}
actions
{
Disallow Button(Event Player, Button(Primary Fire));
Disallow Button(Event Player, Button(Secondary Fire));
Disallow Button(Event Player, Button(Ability 1));
Disallow Button(Event Player, Button(Ability 2));
Disallow Button(Event Player, Button(Ultimate));
Disallow Button(Event Player, Button(Jump));
Disallow Button(Event Player, Button(Crouch));
Disallow Button(Event Player, Button(Melee));
}
}
rule("Interact Allow Buttons (while not interacting, allow buttons)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Is Button Held(Event Player, Button(Interact)) == False;
}
actions
{
Wait(0.150, Abort When False);
Allow Button(Event Player, Button(Primary Fire));
Allow Button(Event Player, Button(Secondary Fire));
Allow Button(Event Player, Button(Ability 1));
Allow Button(Event Player, Button(Ability 2));
Allow Button(Event Player, Button(Ultimate));
Allow Button(Event Player, Button(Jump));
Allow Button(Event Player, Button(Crouch));
Allow Button(Event Player, Button(Melee));
}
}
rule("Toggle Controls HUD (INTERACT + MELEE)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Transitioning == False;
Is Button Held(Event Player, Button(Interact)) == True;
Is Button Held(Event Player, Button(Reload)) == False;
Is Button Held(Event Player, Button(Melee)) == True;
}
actions
{
Event Player.HUD_ControlsDisabled = !Event Player.HUD_ControlsDisabled;
}
}
rule("Toggle Free Mode (INTERACT + PRIMARY FIRE)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Transitioning == False;
Is Button Held(Event Player, Button(Interact)) == True;
Is Button Held(Event Player, Button(Reload)) == False;
Is Button Held(Event Player, Button(Primary Fire)) == True;
Is Using Ultimate(Event Player) == False;
}
actions
{
Event Player.Transitioning = True;
Play Effect(Event Player, Buff Explosion Sound, Color(White), Event Player, 50);
Wait(0.100, Ignore Condition);
If(Event Player.FreeMode == True);
Event Player.FreeMode = False;
If(Event Player.Developer_Mode == True);
Event Player.Level_Current = 0;
Call Subroutine(Calculate_Checkpoints);
Call Subroutine(Effects_RefreshGlobal);
Call Subroutine(HUD_RefreshText);
End;
Call Subroutine(Reposition);
Skip If(Event Player.Stopwatch == 0 || Event Player.Level_LocalIndex == 0, 1);
Chase Player Variable At Rate(Event Player, Stopwatch, 9999, 1, None);
Else;
Event Player.FreeMode = True;
Call Subroutine(AbilityRefresh);
Stop Chasing Player Variable(Event Player, Stopwatch);
If(Event Player.Developer_Mode == True);
Call Subroutine(Effects_RefreshDeveloper);
Call Subroutine(HUD_RefreshDeveloper);
End;
End;
Event Player.Transitioning = False;
Wait(0.100, Ignore Condition);
}
}
rule("Checkpoint Skip (INTERACT + JUMP)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Transitioning == False;
Is Button Held(Event Player, Button(Interact)) == True;
Is Button Held(Event Player, Button(Reload)) == False;
Is Button Held(Event Player, Button(Jump)) == True;
Is Using Ultimate(Event Player) == False;
(Event Player.Developer_Mode && Event Player.FreeMode) == False;
}
actions
{
Event Player.Transitioning = True;
Wait(0.100, Ignore Condition);
If(Event Player.Level_LocalIndex < Count Of(Event Player.Level_Checkpoints) - 1 && Event Player.Level_Current > 0);
Event Player.Level_LocalIndex += 1;
Event Player.Level_GlobalIndex = Event Player.Level_Checkpoints[Event Player.Level_LocalIndex];
Else If((Event Player.Level_LocalIndex >= Count Of(Event Player.Level_Checkpoints) - 1 && Event Player.Level_Current < Count Of(
Filtered Array(Global.Start_LevelFlag, Current Array Element == 0)) - 1) || (Event Player.Level_Current == 0));
Event Player.Level_Current += 1;
Call Subroutine(Calculate_Checkpoints);
Else If(Event Player.Level_Current >= Count Of(Filtered Array(Global.Start_LevelFlag, Current Array Element == 0)) - 1);
Event Player.Level_Current = 0;
Call Subroutine(Calculate_Checkpoints);
End;
Call Subroutine(Effects_RefreshPlayer);
Call Subroutine(Reposition);
Stop Chasing Player Variable(Event Player, Stopwatch);
Event Player.Stopwatch = 0;
Wait(0.100, Ignore Condition);
}
}
rule("Checkpoint Previous (INTERACT + CROUCH)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Transitioning == False;
Is Button Held(Event Player, Button(Interact)) == True;
Is Button Held(Event Player, Button(Reload)) == False;
Is Button Held(Event Player, Button(Crouch)) == True;
Is Using Ultimate(Event Player) == False;
(Event Player.Developer_Mode && Event Player.FreeMode) == False;
Event Player.Level_Current > 0;
}
actions
{
Event Player.Transitioning = True;
Wait(0.100, Ignore Condition);
If(Event Player.Level_LocalIndex > 0);
Event Player.Level_LocalIndex -= 1;
Event Player.Level_GlobalIndex = Event Player.Level_Checkpoints[Event Player.Level_LocalIndex];
Else If(Event Player.Level_LocalIndex == 0 && Event Player.Level_Current > 0);
Event Player.Level_Current -= 1;
Call Subroutine(Calculate_Checkpoints);
Skip If(Event Player.Level_Current == 0, 2);
Event Player.Level_LocalIndex = Count Of(Event Player.Level_Checkpoints) - 1;
Event Player.Level_GlobalIndex = Event Player.Level_Checkpoints[Event Player.Level_LocalIndex];
End;
Call Subroutine(Effects_RefreshPlayer);
Call Subroutine(Reposition);
Stop Chasing Player Variable(Event Player, Stopwatch);
Event Player.Stopwatch = 0;
Wait(0.100, Ignore Condition);
}
}
rule("Level End / Next Level (INTERACT + ABILITY 2)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Transitioning == False;
Is Button Held(Event Player, Button(Interact)) == True;
Is Button Held(Event Player, Button(Reload)) == False;
Is Button Held(Event Player, Button(Ability 2)) == True;
Is Using Ultimate(Event Player) == False;
(Event Player.Developer_Mode && Event Player.FreeMode) == False;
}
actions
{
Event Player.Transitioning = True;
Wait(0.100, Ignore Condition);
If(Event Player.Level_Current < Count Of(Filtered Array(Global.Start_LevelFlag, Current Array Element == 0)) - 1);
Event Player.Level_Current += 1;
Else;
Event Player.Level_Current = 0;
End;
Call Subroutine(Calculate_Checkpoints);
Call Subroutine(Effects_RefreshPlayer);
Call Subroutine(Reposition);
Stop Chasing Player Variable(Event Player, Stopwatch);
Event Player.Stopwatch = 0;
Wait(0.100, Ignore Condition);
}
}
rule("Level Start / Previous Level (INTERACT + ULTIMATE)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Transitioning == False;
Is Button Held(Event Player, Button(Interact)) == True;
Is Button Held(Event Player, Button(Reload)) == False;
Is Button Held(Event Player, Button(Ultimate)) == True;
Is Using Ultimate(Event Player) == False;
(Event Player.Developer_Mode && Event Player.FreeMode) == False;
Event Player.Level_Current > 0;
}
actions
{
Event Player.Transitioning = True;
Wait(0.100, Ignore Condition);
If(Event Player.Level_LocalIndex > 0);
Event Player.Level_LocalIndex = 0;
Event Player.Level_GlobalIndex = Event Player.Level_Checkpoints[Event Player.Level_LocalIndex];
Else;
Event Player.Level_Current -= 1;
Call Subroutine(Calculate_Checkpoints);
End;
Call Subroutine(Effects_RefreshPlayer);
Call Subroutine(Reposition);
Stop Chasing Player Variable(Event Player, Stopwatch);
Event Player.Stopwatch = 0;
Wait(0.100, Ignore Condition);
}
}
rule("Main Hub (INTERACT + ABILITY 1)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Transitioning == False;
Is Button Held(Event Player, Button(Interact)) == True;
Is Button Held(Event Player, Button(Reload)) == False;
Is Button Held(Event Player, Button(Ability 1)) == True;
Is Using Ultimate(Event Player) == False;
(Event Player.Developer_Mode && Event Player.FreeMode) == False;
Event Player.Level_Current > 0;
}
actions
{
Event Player.Transitioning = True;
Wait(0.100, Ignore Condition);
Event Player.Level_Current = 0;
Call Subroutine(Calculate_Checkpoints);
Call Subroutine(Effects_RefreshPlayer);
Call Subroutine(Reposition);
Stop Chasing Player Variable(Event Player, Stopwatch);
Event Player.Stopwatch = 0;
Wait(0.100, Ignore Condition);
}
}
disabled rule("### SUBROUTINES ###")
{
event
{
Ongoing - Global;
}
}
rule("Subroutine - Reposition at start of current checkpoint")
{
event
{
Subroutine;
Reposition;
}
actions
{
Event Player.Transitioning = True;
Cancel Primary Action(Event Player);
Apply Impulse(Event Player, Down, 0.001, To World, Cancel Contrary Motion);
Apply Impulse(Event Player, Up, 0.001, To World, Cancel Contrary Motion);
Apply Impulse(Event Player, Backward, 0.001, To World, Cancel Contrary Motion);
Apply Impulse(Event Player, Forward, 0.001, To World, Cancel Contrary Motion);
Apply Impulse(Event Player, Right, 0.001, To World, Cancel Contrary Motion);
Apply Impulse(Event Player, Left, 0.001, To World, Cancel Contrary Motion);
Set Facing(Event Player, Direction From Angles(Global.Start_Camera[Event Player.Level_GlobalIndex], 0), To World);
Skip If(Global.Start_Origin[Event Player.Level_GlobalIndex] == 0, 1);
Teleport(Event Player, Global.Start_Origin[Event Player.Level_GlobalIndex]);
Set Status(Event Player, Null, Rooted, 0.100);
Skip If(Event Player.Level_LocalIndex > 0, 2);
Stop Chasing Player Variable(Event Player, Stopwatch);
Event Player.Stopwatch = 0;
Wait(0.100, Ignore Condition);
Call Subroutine(AbilityRefresh);
Set Facing(Event Player, Direction From Angles(Global.Start_Camera[Event Player.Level_GlobalIndex], 0), To World);
Wait(0.050, Ignore Condition);
Event Player.Transitioning = False;
}
}
rule("Subroutine - Ability refresh at current checkpoint")
{
event
{
Subroutine;
AbilityRefresh;
}
actions
{
Set Ability Cooldown(Event Player, Button(Secondary Fire), 0);
Set Ability Cooldown(Event Player, Button(Ability 1), 0);
Set Ability Cooldown(Event Player, Button(Ability 2), 0);
If(Event Player.FreeMode == False);
Set Secondary Fire Enabled(Event Player, X Component Of(Global.Start_Abilities[Event Player.Level_GlobalIndex]) == 0);
Set Ability 1 Enabled(Event Player, Y Component Of(Global.Start_Abilities[Event Player.Level_GlobalIndex]) == 0);
Set Ability 2 Enabled(Event Player, Z Component Of(Global.Start_Abilities[Event Player.Level_GlobalIndex]) == 0);
Set Ultimate Ability Enabled(Event Player, False);
Else;
Set Secondary Fire Enabled(Event Player, True);
Set Ability 1 Enabled(Event Player, True);
Set Ability 2 Enabled(Event Player, True);
Set Ultimate Ability Enabled(Event Player, True);
Set Ultimate Charge(Event Player, 100);
End;
}
}
rule("Subroutine - Calculate level length and checkpoints at current level, start at first checkpoint")
{
event
{
Subroutine;
Calculate_Checkpoints;
}
actions
{
Event Player.Level_Checkpoints = Filtered Array(Mapped Array(Global.Start_LevelFlag, Current Array Element == Event Player.Level_Current ? Current Array Index : -1), Current Array Element > -1);
Event Player.Level_LocalIndex = 0;
Event Player.Level_GlobalIndex = Event Player.Level_Checkpoints[Event Player.Level_LocalIndex];
}
}
rule("Subroutine - Find extra effects at current checkpoint")
{
event
{
Subroutine;
Calculate_ExtraEffects;
}
actions
{
Event Player.Checkpoint_Hints = Empty Array;
Skip If(Index Of Array Value(Global.Hint_IndexFlag, Event Player.Level_GlobalIndex) == -1, 1);
Event Player.Checkpoint_Hints = Filtered Array(Mapped Array(Global.Hint_IndexFlag, Current Array Element == Event Player.Level_GlobalIndex ? Current Array Index : -1), Current Array Element > -1);
Event Player.Checkpoint_Lavas = Empty Array;
Skip If(Index Of Array Value(Global.Lava_IndexFlag, Event Player.Level_GlobalIndex) == -1, 1);
Event Player.Checkpoint_Lavas = Filtered Array(Mapped Array(Global.Lava_IndexFlag, Current Array Element == Event Player.Level_GlobalIndex ? Current Array Index : -1), Current Array Element > -1);
}
}
rule("Subroutine - Record Time To Global Variables")
{
event
{
Subroutine;
Calculate_RecordTime;
}
actions
{
Stop Chasing Player Variable(Event Player, Stopwatch);
For Player Variable(Event Player, TempIter, 0, Count Of(Global.Time_LevelFlag) + 1, 1);
If(Global.Time_LevelFlag[Event Player.TempIter] == Event Player.Level_Current && Global.Time_PlayerID[Event Player.TempIter] == Custom String("{0}", Event Player));
If(Global.Time_Recorded[Event Player.TempIter] <= Event Player.Stopwatch);
Event Player.TempIter = 0;
Wait(1, Ignore Condition);
Abort;
Else;
Global.Time_Recorded[Event Player.TempIter] = Event Player.Stopwatch;
Global.Time_Proper[Event Player.TempIter] = Custom String("{0}:{1}{2}", Round To Integer(Event Player.Stopwatch / 60, Down), Event Player.Stopwatch % 60 < 10 ? 0 : String(""), Event Player.Stopwatch % 60);
Global.Time_Rank[Event Player.TempIter] = (100*Event Player.Level_Current) + Square Root(Event Player.Stopwatch);
Break;
End;
Else If(Event Player.TempIter == Count Of(Global.Time_LevelFlag));
Modify Global Variable(Time_LevelFlag, Append To Array, Event Player.Level_Current);
Modify Global Variable(Time_PlayerID, Append To Array, Custom String("{0}", Event Player));
Modify Global Variable(Time_Recorded, Append To Array, Event Player.Stopwatch);
Modify Global Variable(Time_Proper, Append To Array, Custom String("{0}:{1}{2}", Round To Integer(Event Player.Stopwatch / 60, Down), Event Player.Stopwatch % 60 < 10 ? 0 : String(""), Event Player.Stopwatch % 60));
Modify Global Variable(Time_Rank, Append To Array, (100*Event Player.Level_Current) + Square Root(Event Player.Stopwatch));
Break;
End;
End;
Wait(0.100, Ignore Condition);
Global.Time_Updating = True;
Big Message(Filtered Array(All Players(All Teams), Current Array Element.HUD_ScoreboardDisabled == False),
Custom String("{0} - Level {1} Time - {2}", Event Player, Event Player.Level_Current, Global.Time_Proper[Event Player.TempIter]));
Wait(3, Ignore Condition);
Event Player.TempIter = 0;
}
}
rule("Subroutine - Destroy HUD Text")
{
event
{
Subroutine;
HUD_DestroyText;
}
actions
{
For Player Variable(Event Player, TempIter, 0, Count Of(Event Player.HUD_Text), 1);
Destroy HUD Text(Event Player.HUD_Text[Event Player.TempIter]);
End;
Event Player.HUD_Text = Empty Array;
Event Player.TempIter = 0;
}
}
rule("Subroutine - Refresh HUD Text")
{
event
{
Subroutine;
HUD_RefreshText;
}
actions
{
Call Subroutine(HUD_DestroyText);
While(True);
If(Count Of(Event Player.HUD_Text) == 0);
Create HUD Text(Null, Null, Null, String(""), Left, 100, Color(White), Color(White), Color(White), None, Default Visibility);
ElseIf(Count Of(Event Player.HUD_Text) == 1);
Create HUD Text(Event Player, Null, Null, Custom String("Doomfist Parkour Academy"), Right, 0.1, Color(White), Color(White), Color(White), String, Default Visibility);
ElseIf(Count Of(Event Player.HUD_Text) == 2);
Create HUD Text(Event Player, Null, Null, Custom String("v1.6.1 Code: E7MMF"), Right, 0.2, Color(White), Color(White), Color(White), String, Default Visibility);
ElseIf(Count Of(Event Player.HUD_Text) == 3);
Create HUD Text(Event Player, Null, Null, Custom String("Level: {0} / {1}", Event Player.Level_Current, Count Of(Filtered Array( Global.Start_LevelFlag, Current Array Element == 0)) - 1), Left, 1, Color(White), Color(White), Color(White), String, Default Visibility);
ElseIf(Count Of(Event Player.HUD_Text) == 4);
Create HUD Text(Event Player, Null, Null, Custom String("Checkpoint: {0} / {1}", Event Player.Level_LocalIndex + 1, Count Of(Event Player.Level_Checkpoints)), Left, 1.100, Color(White), Color(White), Color(White), String, Default Visibility);
ElseIf(Count Of(Event Player.HUD_Text) == 5);
Create HUD Text(Filtered Array(Event Player, Current Array Element.FreeMode == True), Null, Null, Custom String("Free Mode Enabled"), Top, 1, Color(White), Color(White), Color(White), Visible To, Default Visibility);
ElseIf(Count Of(Event Player.HUD_Text) == 6);
Create HUD Text(Event Player, Null, Null, Custom String("Time: {0}", Custom String("{0}:{1}{2}", Round To Integer(Event Player.Stopwatch / 60, Down), Event Player.Stopwatch % 60 < 10 ? 0 : String(""), Event Player.Stopwatch % 60)), Top, 2, Color(White), Color(White), Color(White), String, Default Visibility);
ElseIf(Count Of(Event Player.HUD_Text) == 7);
Create HUD Text(Filtered Array(Event Player, Current Array Element.HUD_ControlsDisabled == False), Null, Custom String(" "), Null, Left, 2, Color(White), Color(White), Color(White), Visible To, Default Visibility);
ElseIf(Count Of(Event Player.HUD_Text) == 8);
Create HUD Text(Filtered Array(Event Player, Current Array Element.HUD_ControlsDisabled == False), Null, Null, Custom String("Reload = Quick Respawn"), Left, 2.100, Color(White), Color(White), Color(White), Visible To, Default Visibility);
ElseIf(Count Of(Event Player.HUD_Text) == 9);
Create HUD Text(Filtered Array(Event Player, Current Array Element.HUD_ControlsDisabled == False), Null, Null, Custom String("Interact = Show Controls"), Left, 2.200, Color(White), Color(White), Color(White), Visible To, Default Visibility);
ElseIf(Count Of(Event Player.HUD_Text) == 10);
Create HUD Text(Filtered Array(Event Player, Current Array Element.HUD_ControlsDisabled == False && Is Button Held(Current Array Element, Button(Interact)) == True), Null, Null, Custom String(" + Melee = Toggle Controls HUD"), Left, 2.300, Color(White), Color(White), Color(White), Visible To, Default Visibility);
ElseIf(Count Of(Event Player.HUD_Text) == 11);
Create HUD Text(Filtered Array(Event Player, Current Array Element.HUD_ControlsDisabled == False && Is Button Held(Current Array Element, Button(Interact)) == True), Null, Null, Custom String(" + Primary Fire = Toggle Free Mode"), Left, 2.400, Color(White), Color(White), Color(White), Visible To, Default Visibility);
ElseIf(Count Of(Event Player.HUD_Text) == 12);
Create HUD Text(Filtered Array(Event Player, Current Array Element.HUD_ControlsDisabled == False && Is Button Held(Current Array Element, Button(Interact)) == True), Null, Null, Custom String(" + Crouch/Jump = Next/Previous Checkpoint"), Left, 2.500, Color(White), Color(White), Color(White), Visible To, Default Visibility);
ElseIf(Count Of(Event Player.HUD_Text) == 13);
Create HUD Text(Filtered Array(Event Player, Current Array Element.HUD_ControlsDisabled == False && Is Button Held(Current Array Element, Button(Interact)) == True), Null, Null, Custom String(" + Ult/Slam = Next/Previous Level"), Left, 2.600, Color(White), Color(White), Color(White), Visible To, Default Visibility);
ElseIf(Count Of(Event Player.HUD_Text) == 14);
Create HUD Text(Filtered Array(Event Player, Current Array Element.HUD_ControlsDisabled == False && Is Button Held(Current Array Element, Button(Interact)) == True), Null, Null, Custom String(" + Uppercut = Back To Main Hub"), Left, 2.700, Color(White), Color(White), Color(White), Visible To, Default Visibility);
ElseIf(Count Of(Event Player.HUD_Text) > 14);
Break;
End;
Modify Player Variable(Event Player, HUD_Text, Append To Array, Last Text ID);
If(Last Of(Event Player.HUD_Text) == Value In Array(Event Player.HUD_Text, Count Of(Event Player.HUD_Text) - 2));
Modify Player Variable(Event Player, HUD_Text, Remove From Array By Index, Count Of(Event Player.HUD_Text) - 1);
Wait(Random Real(0.1, 0.5), Ignore Condition);
End;
End;
}
}
rule("Subroutine - Refresh Scoreboard HUD Text")
{
event
{
Subroutine;
HUD_RefreshScoreboard;
}
actions
{
For Global Variable(TempIter, 0, Count Of(Global.Time_HUD), 1);
Destroy HUD Text(Global.Time_HUD[Global.TempIter]);
End;
Global.Time_HUD = Empty Array;
For Global Variable(TempIter, -1, Count Of(Global.Time_LevelFlag), 1);
If(Global.TempIter < 0);
Create HUD Text(Null, Null, Null, String(""), Left, 100, Color(White), Color(White), Color(White), None, Default Visibility);
Else;
Create HUD Text(Filtered Array(All Players(All Teams), Current Array Element.HUD_ScoreboardDisabled == False), Null, Null, Custom String("{0} - {1}", Global.Time_PlayerID[Global.TempIter], Global.Time_Proper[Global.TempIter]), Right, Global.Time_Rank[Global.TempIter], Color(White), Color(White), Global.Level_Color[Global.Time_LevelFlag[Global.TempIter]], Visible To, Default Visibility);
End;
Modify Global Variable(Time_HUD, Append To Array, Last Text ID);
If(Last Of(Global.Time_HUD) == Value In Array(Global.Time_HUD, Count Of(Global.Time_HUD) - 2));
Modify Global Variable(Time_HUD, Remove From Array By Index, Count Of(Global.Time_HUD) - 1);
Global.TempIter -= 1;
Wait(Random Real(0.1, 0.5), Ignore Condition);
End;
End;
Global.TempArray = Filtered Array(Global.Time_LevelFlag, Current Array Index == Index Of Array Value(Global.Time_LevelFlag, Current Array Element));
For Global Variable(TempIter, 0, Count Of(Global.TempArray), 1);
While(True);
Create HUD Text(Filtered Array(All Players(All Teams), Current Array Element.HUD_ScoreboardDisabled == False), Null, Custom String(" "), Null, Right, (100*Global.TempArray[Global.TempIter]) - 0.01, Color(White), Color(White), Color(White), Visible To, Default Visibility);
Modify Global Variable(Time_HUD, Append To Array, Last Text ID);
Skip If(Last Of(Global.Time_HUD) != Value In Array(Global.Time_HUD, Count Of(Global.Time_HUD) - 2), 3);
Modify Global Variable(Time_HUD, Remove From Array By Index, Count Of(Global.Time_HUD) - 1);
Wait(Random Real(0.1, 0.5), Ignore Condition);
Continue;
Break;
End;
While(True);
Create HUD Text(Filtered Array(All Players(All Teams), Current Array Element.HUD_ScoreboardDisabled == False), Null, Null, Custom String("Level {0} Scores:", Global.TempArray[Global.TempIter]), Right, 100*Global.TempArray[Global.TempIter], Color(White), Color(White), Global.Level_Color[Global.TempArray[Global.TempIter]], Visible To, Default Visibility);
Modify Global Variable(Time_HUD, Append To Array, Last Text ID);
Skip If(Last Of(Global.Time_HUD) != Value In Array(Global.Time_HUD, Count Of(Global.Time_HUD) - 2), 3);
Modify Global Variable(Time_HUD, Remove From Array By Index, Count Of(Global.Time_HUD) - 1);
Wait(Random Real(0.1, 0.5), Ignore Condition);
Continue;
Break;
End;
End;
Global.TempIter = 0;
Global.TempArray = Empty Array;
}
}
rule("Subroutine - Destroy Player Checkpoint Effects")
{
event
{
Subroutine;
Effects_DestroyPlayer;
}
actions
{
For Player Variable(Event Player, TempIter, 0, Count Of(Event Player.Checkpoint_Effects), 1);
Destroy Effect(Event Player.Checkpoint_Effects[Event Player.TempIter]);
Destroy Icon(Event Player.Checkpoint_Effects[Event Player.TempIter]);
Destroy In-World Text(Event Player.Checkpoint_Effects[Event Player.TempIter]);
End;
Event Player.Checkpoint_Effects = Empty Array;
Event Player.TempIter = 0;
}
}
rule("Subroutine - Refresh Player Checkpoint Effects")
{
event
{
Subroutine;
Effects_RefreshPlayer;
}
actions
{
Call Subroutine(Calculate_ExtraEffects);
Call Subroutine(Effects_DestroyPlayer);
If(Event Player.Level_Current > 0);
Create Effect(Filtered Array(Event Player, Current Array Element.FreeMode == False), Ring, Global.Level_Color[Event Player.Level_Current], Global.Start_Origin[Event Player.Level_GlobalIndex], Global.Start_Radius[Event Player.Level_GlobalIndex], Visible To);
Modify Player Variable(Event Player, Checkpoint_Effects, Append To Array, Last Created Entity);
Create Effect(Filtered Array(Event Player, Current Array Element.FreeMode == False), Ring, Global.Level_Color[Event Player.Level_Current], Global.End_Origin[Event Player.Level_GlobalIndex], Global.End_Radius[Event Player.Level_GlobalIndex], Visible To);
Modify Player Variable(Event Player, Checkpoint_Effects, Append To Array, Last Created Entity);
Create Effect(Filtered Array(Event Player, Current Array Element.FreeMode == False), Light Shaft, Global.Level_Color[Event Player.Level_Current], Global.End_Origin[Event Player.Level_GlobalIndex], Global.End_Radius[Event Player.Level_GlobalIndex], Visible To);
Modify Player Variable(Event Player, Checkpoint_Effects, Append To Array, Last Created Entity);
Create Icon(Filtered Array(Event Player, Current Array Element.FreeMode == False), Global.End_Origin[Event Player.Level_GlobalIndex] + Vector(0, 0.100, 0), Flag, Visible To, Global.Level_Color[Event Player.Level_Current], True);
Modify Player Variable(Event Player, Checkpoint_Effects, Append To Array, Last Created Entity);
End;
For Player Variable(Event Player, TempIter, 0, Count Of(Event Player.Checkpoint_Hints), 1);
Create Effect(Filtered Array(Event Player, Current Array Element.Level_Current != 0 && Current Array Element.FreeMode == False), Good Aura, Color(White), Global.Hint_Origin[Event Player.Checkpoint_Hints[Event Player.TempIter]], 0.300, Visible To);
Modify Player Variable(Event Player, Checkpoint_Effects, Append To Array, Last Created Entity);
Wait(0.010, Ignore Condition);
Skip If(Global.Hint_Text[Event Player.Checkpoint_Hints[Event Player.TempIter]] == 0, 3);
Create In-World Text(Filtered Array(Event Player, Current Array Element.Level_Current != 0 && Current Array Element.FreeMode == False), Global.Hint_Text[Event Player.Checkpoint_Hints[Event Player.TempIter]], Global.Hint_Origin[Event Player.Checkpoint_Hints[Event Player.TempIter]], 1.250, Do Not Clip, Visible To, Color(White), Default Visibility);
Modify Player Variable(Event Player, Checkpoint_Effects, Append To Array, Last Text ID);
Wait(0.010, Ignore Condition);
End;
For Player Variable(Event Player, TempIter, 0, Count Of(Event Player.Checkpoint_Lavas), 1);
Create Effect(Filtered Array(Event Player, Current Array Element.Level_Current != 0 && Current Array Element.FreeMode == False), Sphere, Color(Red), Global.Lava_Origin[Event Player.Checkpoint_Lavas[Event Player.TempIter]], Global.Lava_Radius[Event Player.Checkpoint_Lavas[Event Player.TempIter]], Visible To);
Modify Player Variable(Event Player, Checkpoint_Effects, Append To Array, Last Created Entity);
Wait(0.010, Ignore Condition);
End;
Event Player.TempIter = 0;
}
}
rule("Subroutine - Refresh Global Effects")
{
event
{
Subroutine;
Effects_RefreshGlobal;
}
actions
{
For Global Variable(TempIter, 0, Count Of(Global.Level_Effects), 1);
Destroy Effect(Global.Level_Effects[Global.TempIter]);
Destroy Icon(Global.Level_Effects[Global.TempIter]);
Destroy In-World Text(Global.Level_Effects[Global.TempIter]);
End;
Global.Level_Effects = Empty Array;
Event Player.TempIter = 0;
Global.TempArray = Filtered Array(Mapped Array(Global.Start_LevelFlag, Current Array Element == 0 ? Current Array Index : -1), Current Array Element > -1);
For Global Variable(TempIter, 0, Count Of(Global.TempArray), 1);
Create Effect(Filtered Array(All Players(All Teams), Current Array Element.Level_Current == 0 && Current Array Element.FreeMode == False), Ring, Evaluate Once(Global.Level_Color[Global.TempIter]), Global.Start_Origin[Global.TempArray[Global.TempIter]], Global.Start_Radius[Global.TempArray[Global.TempIter]], Visible To);
Modify Global Variable(Level_Effects, Append To Array, Last Created Entity);
Wait(0.010, Ignore Condition);
Skip If(Global.TempIter == 0, 3);
Create Icon(Filtered Array(All Players(All Teams), Current Array Element.Level_Current == 0 && Current Array Element.FreeMode == False), Global.Start_Origin[Global.TempArray[Global.TempIter]] + Vector(0, 1.500, 0), Flag, Visible To, Evaluate Once(Global.Level_Color[Global.TempIter]), False);
Modify Global Variable(Level_Effects, Append To Array, Last Created Entity);
Wait(0.010, Ignore Condition);
Skip If(Global.Level_Text[Global.TempIter] == 0, 3);
Create In-World Text(Filtered Array(All Players(All Teams), Current Array Element.Level_Current == 0 && Current Array Element.FreeMode == False), Global.Level_Text[Global.TempIter], Global.Start_Origin[Global.TempArray[Global.TempIter]], 1.750, Do Not Clip, Visible To, Evaluate Once(Global.Level_Color[Global.TempIter]), Default Visibility);
Modify Global Variable(Level_Effects, Append To Array, Last Created Entity);
Wait(0.010, Ignore Condition);
End;
Global.TempIter = 0;
Global.TempArray = Empty Array;
}
}
disabled rule("### DEVELOPER ###")
{
event
{
Ongoing - Each Player;
All;
All;
}
}
rule("Developer - ENABLE DEVELOPER MODE - PRESS AND HOLD RELOAD TO ACTIVATE - HOST PLAYER ONLY")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.FreeMode == True;
Event Player.Developer_Mode == False;
Is Button Held(Host Player, Button(Reload)) == True;
Host Player == Event Player;
}
actions
{
Small Message(Event Player, Custom String("3"));
Wait(1, Abort When False);
Small Message(Event Player, Custom String("2"));
Wait(1, Abort When False);
Small Message(Event Player, Custom String("1"));
Wait(1, Abort When False);
Small Message(Event Player, Custom String("Developer Mode Engaged!"));
Pause Match Time;
Event Player.Developer_Mode = True;
Event Player.Developer_StartRadius = 2.500;
Event Player.Developer_EndRadius = 3;
Event Player.Developer_LavaRadius = 5;
Event Player.Developer_Distance = 10;
Call Subroutine(Effects_RefreshDeveloper);
Call Subroutine(HUD_RefreshDeveloper);
Play Effect(Event Player, Buff Explosion Sound, Color(White), Event Player, 50);
}
}
rule("Developer - Developer Menu (while holding reload, disallow buttons)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Developer_Mode == True;
Event Player.FreeMode == True;
Is Button Held(Event Player, Button(Reload)) == True;
Is Button Held(Event Player, Button(Interact)) == False;
}
actions
{
Skip If(Event Player.Developer_EffectType < 2, 1);
Set Move Speed(Event Player, 5);
disabled Set Gravity(Event Player, 0);
Disallow Button(Event Player, Button(Primary Fire));
Disallow Button(Event Player, Button(Secondary Fire));
Disallow Button(Event Player, Button(Ability 1));
Disallow Button(Event Player, Button(Ability 2));
Disallow Button(Event Player, Button(Ultimate));
Disallow Button(Event Player, Button(Jump));
Disallow Button(Event Player, Button(Crouch));
Disallow Button(Event Player, Button(Melee));
Disallow Button(Event Player, Button(Interact));
}
}
rule("Developer - Remove Menu (while not holding reload, allow buttons and refresh HUD)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.FreeMode == True;
Event Player.Developer_Mode == True;
Is Button Held(Event Player, Button(Reload)) == False;
}
actions
{
Wait(0.150, Abort When False);
Set Move Speed(Event Player, 100);
disabled Set Gravity(Event Player, 100);
Allow Button(Event Player, Button(Primary Fire));
Allow Button(Event Player, Button(Secondary Fire));
Allow Button(Event Player, Button(Ability 1));
Allow Button(Event Player, Button(Ability 2));
Allow Button(Event Player, Button(Ultimate));
Allow Button(Event Player, Button(Jump));
Allow Button(Event Player, Button(Crouch));
Allow Button(Event Player, Button(Melee));
Allow Button(Event Player, Button(Interact));
}
}
disabled rule("Developer - Teleport Toward Facing Angle (MELEE)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Developer_Mode == True;
Event Player.FreeMode == True;
Is Button Held(Event Player, Button(Interact)) == False;
Is Button Held(Event Player, Button(Reload)) == False;
Is Button Held(Event Player, Button(Melee)) == True;
}
actions
{
Teleport(Event Player, Eye Position(Event Player) + 10 * Facing Direction Of(Event Player));
}
}
rule("Developer - Change Effect Type (RELOAD + PRIMARY FIRE)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Developer_Mode == True;
Event Player.FreeMode == True;
Is Button Held(Event Player, Button(Interact)) == False;
Is Button Held(Event Player, Button(Reload)) == True;
Is Button Held(Event Player, Button(Primary Fire)) == True;
}
actions
{
Play Effect(Event Player, Debuff Impact Sound, Color(White), Event Player, 50);
Event Player.Developer_EffectType += 1;
Skip If(Event Player.Developer_EffectType <= 1, 1);
Set Move Speed(Event Player, 5);
Skip If(Event Player.Developer_EffectType <= 3, 2);
Event Player.Developer_EffectType = 0;
Set Move Speed(Event Player, 100);
}
}
rule("Developer - Ring Radius Increase (RELOAD + JUMP)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Developer_Mode == True;
Event Player.FreeMode == True;
Is Button Held(Event Player, Button(Interact)) == False;
Is Button Held(Event Player, Button(Reload)) == True;
Is Button Held(Event Player, Button(Jump)) == True;
}
actions
{
If(Event Player.Developer_EffectType == 0);
Event Player.Developer_StartRadius += 0.100;
Else If(Event Player.Developer_EffectType == 1);
Event Player.Developer_EndRadius += 0.100;
Else If(Event Player.Developer_EffectType == 3);
Event Player.Developer_LavaRadius += 0.100;
End;
Wait(0.150, Ignore Condition);
Loop If Condition Is True;
}
}
rule("Developer - Ring Radius Decrease (RELOAD + CROUCH)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Developer_Mode == True;
Event Player.FreeMode == True;
Is Button Held(Event Player, Button(Interact)) == False;
Is Button Held(Event Player, Button(Reload)) == True;
Is Button Held(Event Player, Button(Crouch)) == True;
}
actions
{
If(Event Player.Developer_EffectType == 0);
Skip If(Event Player.Developer_StartRadius <= 1.500, 1);
Event Player.Developer_StartRadius -= 0.100;
Else If(Event Player.Developer_EffectType == 1);
Skip If(Event Player.Developer_EndRadius <= 1.500, 1);
Event Player.Developer_EndRadius -= 0.100;
Else If(Event Player.Developer_EffectType == 3);
Skip If(Event Player.Developer_LavaRadius <= 1.500, 1);
Event Player.Developer_LavaRadius -= 0.100;
End;
Wait(0.150, Ignore Condition);
Loop If Condition Is True;
}
}
rule("Developer - Toggle Allow/Disallow Rocket Punch (RELOAD + SECONDARY FIRE)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Developer_Mode == True;
Event Player.FreeMode == True;
Is Button Held(Event Player, Button(Interact)) == False;
Is Button Held(Event Player, Button(Reload)) == True;
Is Button Held(Event Player, Button(Secondary Fire)) == True;
}
actions
{
Play Effect(Event Player, Debuff Impact Sound, Color(White), Event Player, 50);
If(X Component Of(Global.Start_Abilities[Event Player.Level_GlobalIndex]) == 0);
Global.Start_Abilities[Event Player.Level_GlobalIndex] = Vector(1, Y Component Of(
Global.Start_Abilities[Event Player.Level_GlobalIndex]), Z Component Of(
Global.Start_Abilities[Event Player.Level_GlobalIndex]));
Else;
Global.Start_Abilities[Event Player.Level_GlobalIndex] = Vector(0, Y Component Of(
Global.Start_Abilities[Event Player.Level_GlobalIndex]), Z Component Of(
Global.Start_Abilities[Event Player.Level_GlobalIndex]));
End;
Wait(0.150, Ignore Condition);
}
}
rule("Developer - Toggle Allow/Disallow Rising Uppercut (RELOAD + ABILITY 1)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Developer_Mode == True;
Event Player.FreeMode == True;
Is Button Held(Event Player, Button(Interact)) == False;
Is Button Held(Event Player, Button(Reload)) == True;
Is Button Held(Event Player, Button(Ability 1)) == True;
}
actions
{
Play Effect(Event Player, Debuff Impact Sound, Color(White), Event Player, 50);
If(Y Component Of(Global.Start_Abilities[Event Player.Level_GlobalIndex]) == 0);
Global.Start_Abilities[Event Player.Level_GlobalIndex] = Vector(X Component Of(
Global.Start_Abilities[Event Player.Level_GlobalIndex]), 1, Z Component Of(
Global.Start_Abilities[Event Player.Level_GlobalIndex]));
Else;
Global.Start_Abilities[Event Player.Level_GlobalIndex] = Vector(X Component Of(
Global.Start_Abilities[Event Player.Level_GlobalIndex]), 0, Z Component Of(
Global.Start_Abilities[Event Player.Level_GlobalIndex]));
End;
Wait(0.150, Ignore Condition);
}
}
rule("Developer - Toggle Allow/Disallow Seismic Slam (RELOAD + ABILITY 2)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Developer_Mode == True;
Event Player.FreeMode == True;
Is Button Held(Event Player, Button(Interact)) == False;
Is Button Held(Event Player, Button(Reload)) == True;
Is Button Held(Event Player, Button(Ability 2)) == True;
}
actions
{
Play Effect(Event Player, Debuff Impact Sound, Color(White), Event Player, 50);
If(Z Component Of(Global.Start_Abilities[Event Player.Level_GlobalIndex]) == 0);
Global.Start_Abilities[Event Player.Level_GlobalIndex] = Vector(X Component Of(
Global.Start_Abilities[Event Player.Level_GlobalIndex]), Y Component Of(
Global.Start_Abilities[Event Player.Level_GlobalIndex]), 1);
Else;
Global.Start_Abilities[Event Player.Level_GlobalIndex] = Vector(X Component Of(
Global.Start_Abilities[Event Player.Level_GlobalIndex]), Y Component Of(
Global.Start_Abilities[Event Player.Level_GlobalIndex]), 0);
End;
Wait(0.150, Ignore Condition);
}
}
rule("Developer - Developer Distance Increase (RELOAD + W)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Developer_Mode == True;
Event Player.FreeMode == True;
Is Button Held(Event Player, Button(Interact)) == False;
Is Button Held(Event Player, Button(Reload)) == True;
Speed Of In Direction(Event Player, Facing Direction Of(Event Player)) > 0.100;
Event Player.Developer_EffectType >= 2;
}
actions
{
Event Player.Developer_Distance += 0.500;
Wait(0.150, Ignore Condition);
Loop If Condition Is True;
}
}
rule("Developer - Developer Distance Decrease (RELOAD + S)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Developer_Mode == True;
Event Player.FreeMode == True;
Is Button Held(Event Player, Button(Interact)) == False;
Is Button Held(Event Player, Button(Reload)) == True;
Speed Of In Direction(Event Player, Facing Direction Of(Event Player)) < -0.100;
Event Player.Developer_EffectType >= 2;
}
actions
{
Skip If(Event Player.Developer_Distance <= 0, 1);
Event Player.Developer_Distance -= 0.500;
Wait(0.150, Ignore Condition);
Loop If Condition Is True;
}
}
rule("Developer - Place Effect at Array Index (RELOAD + ULTIMATE)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Developer_Mode == True;
Event Player.FreeMode == True;
Is Button Held(Event Player, Button(Interact)) == False;
Is Button Held(Event Player, Button(Reload)) == True;
Is Button Held(Event Player, Button(Ultimate)) == True;
Is Using Ultimate(Event Player) == False;
}
actions
{
Play Effect(Event Player, Buff Explosion Sound, Color(White), Event Player, 50);
If(Event Player.Developer_EffectType == 0);
Global.Start_Origin[Event Player.Level_GlobalIndex] = Position Of(Event Player);
Global.Start_Radius[Event Player.Level_GlobalIndex] = Event Player.Developer_StartRadius;
Global.Start_Camera[Event Player.Level_GlobalIndex] = Horizontal Facing Angle Of(Event Player);
Global.Start_Abilities[Event Player.Level_GlobalIndex] = Vector(
X Component Of(Global.Start_Abilities[Event Player.Level_GlobalIndex]),
Y Component Of(Global.Start_Abilities[Event Player.Level_GlobalIndex]),
Z Component Of(Global.Start_Abilities[Event Player.Level_GlobalIndex]));
Skip If(Global.Start_LevelFlag[Event Player.Level_GlobalIndex] != 0, 1);
Global.Start_LevelFlag[Event Player.Level_GlobalIndex] = Global.Start_LevelFlag[Event Player.Level_GlobalIndex - 1];
Else If(Event Player.Developer_EffectType == 1);
Global.End_Origin[Event Player.Level_GlobalIndex] = Position Of(Event Player);
Global.End_Radius[Event Player.Level_GlobalIndex] = Event Player.Developer_EndRadius;
Else If(Event Player.Developer_EffectType == 2);
Modify Global Variable(Hint_Origin, Append To Array, Eye Position(Event Player) + Event Player.Developer_Distance * Facing Direction Of(Event Player));
Modify Global Variable(Hint_Text, Append To Array, Custom String("Sample Text {0}", Event Player.Level_GlobalIndex));
Modify Global Variable(Hint_IndexFlag, Append To Array, Event Player.Level_GlobalIndex);
Else If(Event Player.Developer_EffectType == 3);
Modify Global Variable(Lava_Origin, Append To Array, Eye Position(Event Player) + Event Player.Developer_Distance * Facing Direction Of(Event Player));
Modify Global Variable(Lava_Radius, Append To Array, Event Player.Developer_LavaRadius);
Modify Global Variable(Lava_IndexFlag, Append To Array, Event Player.Level_GlobalIndex);
End;
Call Subroutine(Effects_RefreshDeveloper);
}
}
rule("Developer - Remove Effect at Array Index (RELOAD + MELEE)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Developer_Mode == True;
Event Player.FreeMode == True;
Is Button Held(Event Player, Button(Interact)) == False;
Is Button Held(Event Player, Button(Reload)) == True;
Is Button Held(Event Player, Button(Melee)) == True;
Is Using Ultimate(Event Player) == False;
}
actions
{
Play Effect(Event Player, Buff Explosion Sound, Color(White), Event Player, 50);
If(Event Player.Developer_EffectType == 0);
Abort;
Else If(Event Player.Developer_EffectType == 1);
Global.End_Origin[Event Player.Level_GlobalIndex] = 0;
Global.End_Radius[Event Player.Level_GlobalIndex] = 0;
Else If(Event Player.Developer_EffectType == 2 && Event Player.Checkpoint_Hints != Empty Array);
Modify Global Variable(Hint_Origin, Remove From Array By Index, Last Of(Event Player.Checkpoint_Hints));
Modify Global Variable(Hint_Text, Remove From Array By Index, Last Of(Event Player.Checkpoint_Hints));
Modify Global Variable(Hint_IndexFlag, Remove From Array By Index, Last Of(Event Player.Checkpoint_Hints));
Else If(Event Player.Developer_EffectType == 3 && Event Player.Checkpoint_Lavas != Empty Array);
Modify Global Variable(Lava_Origin, Remove From Array By Index, Last Of(Event Player.Checkpoint_Lavas));
Modify Global Variable(Lava_Radius, Remove From Array By Index, Last Of(Event Player.Checkpoint_Lavas));
Modify Global Variable(Lava_IndexFlag, Remove From Array By Index, Last Of(Event Player.Checkpoint_Lavas));
End;
Call Subroutine(Effects_RefreshDeveloper);
}
}
rule("Developer - Increase Array Index (INTERACT + JUMP)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Transitioning == False;
Is Button Held(Event Player, Button(Interact)) == True;
Is Button Held(Event Player, Button(Reload)) == False;
Is Button Held(Event Player, Button(Jump)) == True;
Event Player.FreeMode == True;
Event Player.Developer_Mode == True;
Event Player.Level_GlobalIndex <= Count Of(Global.Start_Origin);
}
actions
{
Event Player.Transitioning = True;
Wait(0.100, Ignore Condition);
If(Event Player.Level_GlobalIndex == Count Of(Global.Start_Origin));
Event Player.Level_GlobalIndex = 0;
Else;
Event Player.Level_GlobalIndex += 1;
End;
Event Player.Developer_EffectType = 0;
Call Subroutine(Effects_RefreshDeveloper);
Skip If(Event Player.Level_GlobalIndex >= Count Of(Global.Start_Origin), 1);
Call Subroutine(Reposition);
Wait(0.100, Ignore Condition);
Event Player.Transitioning = False;
}
}
rule("Developer - Decrease Array Index (INTERACT + CROUCH)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Transitioning == False;
Is Button Held(Event Player, Button(Interact)) == True;
Is Button Held(Event Player, Button(Reload)) == False;
Is Button Held(Event Player, Button(Crouch)) == True;
Event Player.FreeMode == True;
Event Player.Developer_Mode == True;
}
actions
{
Event Player.Transitioning = True;
Wait(0.100, Ignore Condition);
If(Event Player.Level_GlobalIndex == 0);
Event Player.Level_GlobalIndex = Count Of(Global.Start_Origin);
Else;
Event Player.Level_GlobalIndex -= 1;
End;
Event Player.Developer_EffectType = 0;
Call Subroutine(Effects_RefreshDeveloper);
Skip If(Event Player.Level_GlobalIndex >= Count Of(Global.Start_Origin), 1);
Call Subroutine(Reposition);
Wait(0.100, Ignore Condition);
Event Player.Transitioning = False;
}
}
rule("Developer - Increase Level Flag (INTERACT + ABILITY 2)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Transitioning == False;
Is Button Held(Event Player, Button(Interact)) == True;
Is Button Held(Event Player, Button(Reload)) == False;
Is Button Held(Event Player, Button(Ability 2)) == True;
Is Using Ultimate(Event Player) == False;
Event Player.FreeMode == True;
Event Player.Developer_Mode == True;
Global.Start_LevelFlag[Event Player.Level_GlobalIndex] < Count Of(Filtered Array(Global.Start_LevelFlag,
Current Array Element == 0)) - 1;
}
actions
{
Global.Start_LevelFlag[Event Player.Level_GlobalIndex] += 1;
}
}
rule("Developer - Decrease Level Flag (INTERACT + ULTIMATE)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Transitioning == False;
Is Button Held(Event Player, Button(Interact)) == True;
Is Button Held(Event Player, Button(Reload)) == False;
Is Button Held(Event Player, Button(Ultimate)) == True;
Event Player.FreeMode == True;
Event Player.Developer_Mode == True;
Global.Start_LevelFlag[Event Player.Level_GlobalIndex] > 0;
}
actions
{
Global.Start_LevelFlag[Event Player.Level_GlobalIndex] -= 1;
}
}
rule("Developer - Shift Current Index Backward (RELOAD + INTERACT + CROUCH)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Transitioning == False;
Is Button Held(Event Player, Button(Interact)) == True;
Is Button Held(Event Player, Button(Reload)) == True;
Is Button Held(Event Player, Button(Crouch)) == True;
Event Player.FreeMode == True;
Event Player.Developer_Mode == True;
Event Player.Level_GlobalIndex > 0;
}
actions
{
Event Player.Transitioning = True;
Wait(0.100, Ignore Condition);
Global.TempArray = Global.Start_Origin;
Global.Start_Origin[Event Player.Level_GlobalIndex - 1] = Global.TempArray[Event Player.Level_GlobalIndex];
Global.Start_Origin[Event Player.Level_GlobalIndex] = Global.TempArray[Event Player.Level_GlobalIndex - 1];
Wait(0.050, Ignore Condition);
Global.TempArray = Global.Start_Radius;
Global.Start_Radius[Event Player.Level_GlobalIndex - 1] = Global.TempArray[Event Player.Level_GlobalIndex];
Global.Start_Radius[Event Player.Level_GlobalIndex] = Global.TempArray[Event Player.Level_GlobalIndex - 1];
Wait(0.050, Ignore Condition);
Global.TempArray = Global.Start_Camera;
Global.Start_Camera[Event Player.Level_GlobalIndex - 1] = Global.TempArray[Event Player.Level_GlobalIndex];
Global.Start_Camera[Event Player.Level_GlobalIndex] = Global.TempArray[Event Player.Level_GlobalIndex - 1];
Wait(0.050, Ignore Condition);
Global.TempArray = Global.Start_Abilities;
Global.Start_Abilities[Event Player.Level_GlobalIndex - 1] = Global.TempArray[Event Player.Level_GlobalIndex];
Global.Start_Abilities[Event Player.Level_GlobalIndex] = Global.TempArray[Event Player.Level_GlobalIndex - 1];
Wait(0.050, Ignore Condition);
Global.TempArray = Global.Start_LevelFlag;
Global.Start_LevelFlag[Event Player.Level_GlobalIndex - 1] = Global.TempArray[Event Player.Level_GlobalIndex];
Global.Start_LevelFlag[Event Player.Level_GlobalIndex] = Global.TempArray[Event Player.Level_GlobalIndex - 1];
Wait(0.050, Ignore Condition);
Global.TempArray = Global.End_Origin;
Global.End_Origin[Event Player.Level_GlobalIndex - 1] = Global.TempArray[Event Player.Level_GlobalIndex];
Global.End_Origin[Event Player.Level_GlobalIndex] = Global.TempArray[Event Player.Level_GlobalIndex - 1];
Wait(0.050, Ignore Condition);
Global.TempArray = Global.End_Radius;
Global.End_Radius[Event Player.Level_GlobalIndex - 1] = Global.TempArray[Event Player.Level_GlobalIndex];
Global.End_Radius[Event Player.Level_GlobalIndex] = Global.TempArray[Event Player.Level_GlobalIndex - 1];
Wait(0.050, Ignore Condition);
For Global Variable(TempIter, 0, Count Of(Global.Hint_IndexFlag), 1);
If(Global.Hint_IndexFlag[Global.TempIter] == Event Player.Level_GlobalIndex);
Global.Hint_IndexFlag[Global.TempIter] -= 1;
Else If(Global.Hint_IndexFlag[Global.TempIter] == Event Player.Level_GlobalIndex - 1);
Global.Hint_IndexFlag[Global.TempIter] += 1;
End;
End;
Wait(0.050, Ignore Condition);
For Global Variable(TempIter, 0, Count Of(Global.Lava_IndexFlag), 1);
If(Global.Lava_IndexFlag[Global.TempIter] == Event Player.Level_GlobalIndex);
Global.Lava_IndexFlag[Global.TempIter] -= 1;
Else If(Global.Lava_IndexFlag[Global.TempIter] == Event Player.Level_GlobalIndex - 1);
Global.Lava_IndexFlag[Global.TempIter] += 1;
End;
End;
Wait(0.050, Ignore Condition);
Global.TempIter = 0;
Global.TempArray = Empty Array;
Event Player.Level_GlobalIndex -= 1;
Event Player.Developer_EffectType = 0;
Call Subroutine(Effects_RefreshDeveloper);
Skip If(Event Player.Level_GlobalIndex >= Count Of(Global.Start_Origin), 1);
Call Subroutine(Reposition);
Wait(0.100, Ignore Condition);
Event Player.Transitioning = False;
Wait(0.100, Ignore Condition);
}
}
rule("Developer - Shift Current Index Forward (RELOAD + INTERACT + JUMP)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Transitioning == False;
Is Button Held(Event Player, Button(Interact)) == True;
Is Button Held(Event Player, Button(Reload)) == True;
Is Button Held(Event Player, Button(Jump)) == True;
Event Player.FreeMode == True;
Event Player.Developer_Mode == True;
Event Player.Level_GlobalIndex < Count Of(Global.Start_Origin);
}
actions
{
Event Player.Transitioning = True;
Wait(0.100, Ignore Condition);
Global.TempArray = Global.Start_Origin;
Global.Start_Origin[Event Player.Level_GlobalIndex + 1] = Global.TempArray[Event Player.Level_GlobalIndex];
Global.Start_Origin[Event Player.Level_GlobalIndex] = Global.TempArray[Event Player.Level_GlobalIndex + 1];
Wait(0.050, Ignore Condition);
Global.TempArray = Global.Start_Radius;
Global.Start_Radius[Event Player.Level_GlobalIndex + 1] = Global.TempArray[Event Player.Level_GlobalIndex];
Global.Start_Radius[Event Player.Level_GlobalIndex] = Global.TempArray[Event Player.Level_GlobalIndex + 1];
Wait(0.050, Ignore Condition);
Global.TempArray = Global.Start_Camera;
Global.Start_Camera[Event Player.Level_GlobalIndex + 1] = Global.TempArray[Event Player.Level_GlobalIndex];
Global.Start_Camera[Event Player.Level_GlobalIndex] = Global.TempArray[Event Player.Level_GlobalIndex + 1];
Wait(0.050, Ignore Condition);
Global.TempArray = Global.Start_Abilities;
Global.Start_Abilities[Event Player.Level_GlobalIndex + 1] = Global.TempArray[Event Player.Level_GlobalIndex];
Global.Start_Abilities[Event Player.Level_GlobalIndex] = Global.TempArray[Event Player.Level_GlobalIndex + 1];
Wait(0.050, Ignore Condition);
Global.TempArray = Global.Start_LevelFlag;
Global.Start_LevelFlag[Event Player.Level_GlobalIndex + 1] = Global.TempArray[Event Player.Level_GlobalIndex];
Global.Start_LevelFlag[Event Player.Level_GlobalIndex] = Global.TempArray[Event Player.Level_GlobalIndex + 1];
Wait(0.050, Ignore Condition);
Global.TempArray = Global.End_Origin;
Global.End_Origin[Event Player.Level_GlobalIndex + 1] = Global.TempArray[Event Player.Level_GlobalIndex];
Global.End_Origin[Event Player.Level_GlobalIndex] = Global.TempArray[Event Player.Level_GlobalIndex + 1];
Wait(0.050, Ignore Condition);
Global.TempArray = Global.End_Radius;
Global.End_Radius[Event Player.Level_GlobalIndex + 1] = Global.TempArray[Event Player.Level_GlobalIndex];
Global.End_Radius[Event Player.Level_GlobalIndex] = Global.TempArray[Event Player.Level_GlobalIndex + 1];
Wait(0.050, Ignore Condition);
For Global Variable(TempIter, 0, Count Of(Global.Hint_IndexFlag), 1);
If(Global.Hint_IndexFlag[Global.TempIter] == Event Player.Level_GlobalIndex);
Global.Hint_IndexFlag[Global.TempIter] += 1;
Else If(Global.Hint_IndexFlag[Global.TempIter] == Event Player.Level_GlobalIndex + 1);
Global.Hint_IndexFlag[Global.TempIter] -= 1;
End;
End;
Wait(0.050, Ignore Condition);
For Global Variable(TempIter, 0, Count Of(Global.Lava_IndexFlag), 1);
If(Global.Lava_IndexFlag[Global.TempIter] == Event Player.Level_GlobalIndex);
Global.Lava_IndexFlag[Global.TempIter] += 1;
Else If(Global.Lava_IndexFlag[Global.TempIter] == Event Player.Level_GlobalIndex + 1);
Global.Lava_IndexFlag[Global.TempIter] -= 1;
End;
End;
Wait(0.050, Ignore Condition);
Global.TempIter = 0;
Global.TempArray = Empty Array;
Event Player.Level_GlobalIndex += 1;
Event Player.Developer_EffectType = 0;
Call Subroutine(Effects_RefreshDeveloper);
Skip If(Event Player.Level_GlobalIndex >= Count Of(Global.Start_Origin), 1);
Call Subroutine(Reposition);
Wait(0.100, Ignore Condition);
Event Player.Transitioning = False;
Wait(0.100, Ignore Condition);
}
}
rule("Developer - Duplicate Current Index (RELOAD + INTERACT + ULTIMATE)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Transitioning == False;
Is Button Held(Event Player, Button(Interact)) == True;
Is Button Held(Event Player, Button(Reload)) == True;
Is Button Held(Event Player, Button(Ultimate)) == True;
Event Player.FreeMode == True;
Event Player.Developer_Mode == True;
Event Player.Level_GlobalIndex < Count Of(Global.Start_Origin);
}
actions
{
Event Player.Transitioning = True;
Wait(0.100, Ignore Condition);
Global.TempArray = Global.Start_Origin;
For Global Variable(TempIter, Event Player.Level_GlobalIndex, Count Of(Global.TempArray), 1);
Global.Start_Origin[Global.TempIter + 1] = Global.TempArray[Global.TempIter];
End;
Wait(0.050, Ignore Condition);
Global.TempArray = Global.Start_Radius;
For Global Variable(TempIter, Event Player.Level_GlobalIndex, Count Of(Global.TempArray), 1);
Global.Start_Radius[Global.TempIter + 1] = Global.TempArray[Global.TempIter];
End;
Wait(0.050, Ignore Condition);
Global.TempArray = Global.Start_Camera;
For Global Variable(TempIter, Event Player.Level_GlobalIndex, Count Of(Global.TempArray), 1);
Global.Start_Camera[Global.TempIter + 1] = Global.TempArray[Global.TempIter];
End;
Wait(0.050, Ignore Condition);
Global.TempArray = Global.Start_Abilities;
For Global Variable(TempIter, Event Player.Level_GlobalIndex, Count Of(Global.TempArray), 1);
Global.Start_Abilities[Global.TempIter + 1] = Global.TempArray[Global.TempIter];
End;
Wait(0.050, Ignore Condition);
Global.TempArray = Global.Start_LevelFlag;
For Global Variable(TempIter, Event Player.Level_GlobalIndex, Count Of(Global.TempArray), 1);
Global.Start_LevelFlag[Global.TempIter + 1] = Global.TempArray[Global.TempIter];
End;
Wait(0.050, Ignore Condition);
Global.TempArray = Global.End_Origin;
For Global Variable(TempIter, Event Player.Level_GlobalIndex, Count Of(Global.TempArray), 1);
Global.End_Origin[Global.TempIter + 1] = Global.TempArray[Global.TempIter];
End;
Wait(0.050, Ignore Condition);
Global.TempArray = Global.End_Radius;
For Global Variable(TempIter, Event Player.Level_GlobalIndex, Count Of(Global.TempArray), 1);
Global.End_Radius[Global.TempIter + 1] = Global.TempArray[Global.TempIter];
End;
Wait(0.050, Ignore Condition);
For Global Variable(TempIter, 0, Count Of(Global.Hint_IndexFlag), 1);
If(Global.Hint_IndexFlag[Global.TempIter] > Event Player.Level_GlobalIndex);
Global.Hint_IndexFlag[Global.TempIter] += 1;
End;
End;
Wait(0.050, Ignore Condition);
For Global Variable(TempIter, 0, Count Of(Global.Lava_IndexFlag), 1);
If(Global.Lava_IndexFlag[Global.TempIter] > Event Player.Level_GlobalIndex);
Global.Lava_IndexFlag[Global.TempIter] += 1;
End;
End;
Wait(0.050, Ignore Condition);
For Global Variable(TempIter, 0, Count Of(Event Player.Checkpoint_Hints), 1);
Modify Global Variable(Hint_Origin, Append To Array, Global.Hint_Origin[Event Player.Checkpoint_Hints[Global.TempIter]]);
Modify Global Variable(Hint_Text, Append To Array, Global.Hint_Text[Event Player.Checkpoint_Hints[Global.TempIter]]);
Modify Global Variable(Hint_IndexFlag, Append To Array, Event Player.Level_GlobalIndex + 1);
End;
Wait(0.050, Ignore Condition);
For Global Variable(TempIter, 0, Count Of(Event Player.Checkpoint_Lavas), 1);
Modify Global Variable(Lava_Origin, Append To Array, Global.Lava_Origin[Event Player.Checkpoint_Lavas[Global.TempIter]]);
Modify Global Variable(Lava_Radius, Append To Array, Global.Lava_Radius[Event Player.Checkpoint_Lavas[Global.TempIter]]);
Modify Global Variable(Lava_IndexFlag, Append To Array, Event Player.Level_GlobalIndex + 1);
End;
Wait(0.050, Ignore Condition);
Global.TempIter = 0;
Global.TempArray = Empty Array;
Event Player.Level_GlobalIndex += 1;
Event Player.Developer_EffectType = 0;
Call Subroutine(Effects_RefreshDeveloper);
Skip If(Event Player.Level_GlobalIndex >= Count Of(Global.Start_Origin), 1);
Call Subroutine(Reposition);
Wait(0.100, Ignore Condition);
Event Player.Transitioning = False;
Wait(0.100, Ignore Condition);
}
}
rule("Developer - Delete Current Index (RELOAD + INTERACT + MELEE)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Transitioning == False;
Is Button Held(Event Player, Button(Interact)) == True;
Is Button Held(Event Player, Button(Reload)) == True;
Is Button Held(Event Player, Button(Melee)) == True;
Event Player.FreeMode == True;
Event Player.Developer_Mode == True;
Event Player.Level_GlobalIndex < Count Of(Global.Start_Origin);
}
actions
{
Event Player.Transitioning = True;
Wait(0.100, Ignore Condition);
Modify Global Variable(Start_Origin, Remove From Array By Index, Event Player.Level_GlobalIndex);
Modify Global Variable(Start_Radius, Remove From Array By Index, Event Player.Level_GlobalIndex);
Modify Global Variable(Start_Camera, Remove From Array By Index, Event Player.Level_GlobalIndex);
Modify Global Variable(Start_Abilities, Remove From Array By Index, Event Player.Level_GlobalIndex);
Modify Global Variable(Start_LevelFlag, Remove From Array By Index, Event Player.Level_GlobalIndex);
Modify Global Variable(End_Origin, Remove From Array By Index, Event Player.Level_GlobalIndex);
Modify Global Variable(End_Radius, Remove From Array By Index, Event Player.Level_GlobalIndex);
Wait(0.050, Ignore Condition);
For Global Variable(TempIter, 0, Count Of(Event Player.Checkpoint_Hints), 1);
Global.Hint_Origin[Event Player.Checkpoint_Hints[Global.TempIter]] = -1;
Global.Hint_Text[Event Player.Checkpoint_Hints[Global.TempIter]] = -1;
Global.Hint_IndexFlag[Event Player.Checkpoint_Hints[Global.TempIter]] = -1;
End;
Global.Hint_Origin = Filtered Array(Global.Hint_Origin, Current Array Element != -1);
Global.Hint_Text = Filtered Array(Global.Hint_Text, Current Array Element != -1);
Global.Hint_IndexFlag = Filtered Array(Global.Hint_IndexFlag, Current Array Element != -1);
Wait(0.050, Ignore Condition);
For Global Variable(TempIter, 0, Count Of(Event Player.Checkpoint_Lavas), 1);
Global.Lava_Origin[Event Player.Checkpoint_Lavas[Global.TempIter]] = -1;
Global.Lava_Radius[Event Player.Checkpoint_Lavas[Global.TempIter]] = -1;
Global.Lava_IndexFlag[Event Player.Checkpoint_Lavas[Global.TempIter]] = -1;
End;
Global.Lava_Origin = Filtered Array(Global.Lava_Origin, Current Array Element != -1);
Global.Lava_Radius = Filtered Array(Global.Lava_Radius, Current Array Element != -1);
Global.Lava_IndexFlag = Filtered Array(Global.Lava_IndexFlag, Current Array Element != -1);
Wait(0.050, Ignore Condition);
For Global Variable(TempIter, 0, Count Of(Global.Hint_IndexFlag), 1);
If(Global.Hint_IndexFlag[Global.TempIter] > Event Player.Level_GlobalIndex);
Global.Hint_IndexFlag[Global.TempIter] -= 1;
End;
End;
Wait(0.050, Ignore Condition);
For Global Variable(TempIter, 0, Count Of(Global.Lava_IndexFlag), 1);
If(Global.Lava_IndexFlag[Global.TempIter] > Event Player.Level_GlobalIndex);
Global.Lava_IndexFlag[Global.TempIter] -= 1;
End;
End;
Wait(0.050, Ignore Condition);
Global.TempIter = 0;
Event Player.Developer_EffectType = 0;
Call Subroutine(Effects_RefreshDeveloper);
Skip If(Event Player.Level_GlobalIndex >= Count Of(Global.Start_Origin), 1);
Call Subroutine(Reposition);
Wait(0.100, Ignore Condition);
Event Player.Transitioning = False;
Wait(0.100, Ignore Condition);
}
}
rule("Developer - Organize Checkpoints (RELOAD + INTERACT + ABILITY 1)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Initialized == True;
Event Player.Transitioning == False;
Is Button Held(Event Player, Button(Interact)) == True;
Is Button Held(Event Player, Button(Reload)) == True;
Is Button Held(Event Player, Button(Ability 1)) == True;
Event Player.FreeMode == True;
Event Player.Developer_Mode == True;
}
actions
{
Event Player.Transitioning = True;
Wait(0.100, Ignore Condition);
Event Player.TempArray = Empty Array;
For Global Variable(TempIter, 0, Count Of(Filtered Array(Global.Start_LevelFlag, Current Array Element == 0)), 1);
Event Player.Level_Current = Global.TempIter;
Call Subroutine(Calculate_Checkpoints);
For Player Variable(Event Player, TempIter, 0, Count Of(Event Player.Level_Checkpoints), 1);
Modify Player Variable(Event Player, TempArray, Append To Array, Event Player.Level_Checkpoints[Event Player.TempIter]);
End;
End;
Global.TempArray = Global.Start_Origin;
Global.Start_Origin = Empty Array;
For Global Variable(TempIter, 0, Count Of(Event Player.TempArray), 1);
Modify Global Variable(Start_Origin, Append To Array, Global.TempArray[Event Player.TempArray[Global.TempIter]]);
End;
Wait(0.050, Ignore Condition);
Global.TempArray = Global.Start_Radius;
Global.Start_Radius = Empty Array;
For Global Variable(TempIter, 0, Count Of(Event Player.TempArray), 1);
Modify Global Variable(Start_Radius, Append To Array, Global.TempArray[Event Player.TempArray[Global.TempIter]]);
End;
Wait(0.050, Ignore Condition);
Global.TempArray = Global.Start_Camera;
Global.Start_Camera = Empty Array;
For Global Variable(TempIter, 0, Count Of(Event Player.TempArray), 1);
Modify Global Variable(Start_Camera, Append To Array, Global.TempArray[Event Player.TempArray[Global.TempIter]]);
End;
Wait(0.050, Ignore Condition);
Global.TempArray = Global.Start_Abilities;
Global.Start_Abilities = Empty Array;
For Global Variable(TempIter, 0, Count Of(Event Player.TempArray), 1);
Modify Global Variable(Start_Abilities, Append To Array, Global.TempArray[Event Player.TempArray[Global.TempIter]]);
End;
Wait(0.050, Ignore Condition);
Global.TempArray = Global.Start_LevelFlag;
Global.Start_LevelFlag = Empty Array;
For Global Variable(TempIter, 0, Count Of(Event Player.TempArray), 1);
Modify Global Variable(Start_LevelFlag, Append To Array, Global.TempArray[Event Player.TempArray[Global.TempIter]]);
End;
Wait(0.050, Ignore Condition);
Global.TempArray = Global.End_Origin;
Global.End_Origin = Empty Array;
For Global Variable(TempIter, 0, Count Of(Event Player.TempArray), 1);
Modify Global Variable(End_Origin, Append To Array, Global.TempArray[Event Player.TempArray[Global.TempIter]]);
End;
Wait(0.050, Ignore Condition);
Global.TempArray = Global.End_Radius;
Global.End_Radius = Empty Array;
For Global Variable(TempIter, 0, Count Of(Event Player.TempArray), 1);
Modify Global Variable(End_Radius, Append To Array, Global.TempArray[Event Player.TempArray[Global.TempIter]]);
End;
Wait(0.050, Ignore Condition);
Global.TempIter = 0;
Global.TempArray = Empty Array;
Event Player.TempIter = 0;
Event Player.TempArray = Empty Array;
Event Player.Level_Current = 0;
Call Subroutine(Calculate_Checkpoints);
Event Player.Developer_EffectType = 0;
Call Subroutine(Effects_RefreshDeveloper);
Skip If(Event Player.Level_GlobalIndex >= Count Of(Global.Start_Origin), 1);
Call Subroutine(Reposition);
Wait(0.100, Ignore Condition);
Event Player.Transitioning = False;
Wait(0.100, Ignore Condition);
}
}
rule("Developer - Subroutine Refresh Developer Effects")
{
event
{
Subroutine;
Effects_RefreshDeveloper;
}
actions
{
Call Subroutine(Calculate_ExtraEffects);
Call Subroutine(Effects_DestroyPlayer);
Create Effect(Filtered Array(Event Player, Current Array Element.Developer_EffectType == 0), Ring, Color(Green), Event Player, Event Player.Developer_StartRadius, Visible To Position and Radius);
Modify Player Variable(Event Player, Checkpoint_Effects, Append To Array, Last Created Entity);
Wait(0.010, Ignore Condition);
Create Effect(Filtered Array(Event Player, Current Array Element.Developer_EffectType == 1), Ring, Color(Blue), Event Player, Event Player.Developer_EndRadius, Visible To Position and Radius);
Modify Player Variable(Event Player, Checkpoint_Effects, Append To Array, Last Created Entity);
Wait(0.010, Ignore Condition);
Create Effect(Filtered Array(Event Player, Current Array Element.Developer_EffectType == 2), Good Aura, Color(White), Eye Position(Event Player) + Event Player.Developer_Distance * Facing Direction Of(Event Player), 0.300, Visible To Position and Radius);
Modify Player Variable(Event Player, Checkpoint_Effects, Append To Array, Last Created Entity);
Wait(0.010, Ignore Condition);
Create Effect(Filtered Array(Event Player, Current Array Element.Developer_EffectType == 3), Sphere, Color(Red), Eye Position(Event Player) + Event Player.Developer_Distance * Facing Direction Of(Event Player), Event Player.Developer_LavaRadius, Visible To Position and Radius);
Modify Player Variable(Event Player, Checkpoint_Effects, Append To Array, Last Created Entity);
Wait(0.010, Ignore Condition);
Create Effect(Event Player, Ring, Color(Green), Global.Start_Origin[Event Player.Level_GlobalIndex], Global.Start_Radius[Event Player.Level_GlobalIndex], None);
Modify Player Variable(Event Player, Checkpoint_Effects, Append To Array, Last Created Entity);
Wait(0.010, Ignore Condition);
Create Effect(Event Player, Ring, Color(Blue), Global.End_Origin[Event Player.Level_GlobalIndex], Global.End_Radius[Event Player.Level_GlobalIndex], None);
Modify Player Variable(Event Player, Checkpoint_Effects, Append To Array, Last Created Entity);
Wait(0.010, Ignore Condition);
For Player Variable(Event Player, TempIter, 0, Count Of(Event Player.Checkpoint_Hints), 1);
Create Effect(Event Player, Good Aura, Color(White), Global.Hint_Origin[Event Player.Checkpoint_Hints[Event Player.TempIter]], 0.300, None);
Modify Player Variable(Event Player, Checkpoint_Effects, Append To Array, Last Created Entity);
Wait(0.010, Ignore Condition);
End;
For Player Variable(Event Player, TempIter, 0, Count Of(Event Player.Checkpoint_Lavas), 1);
Create Effect(Event Player, Sphere, Color(Red), Global.Lava_Origin[Event Player.Checkpoint_Lavas[Event Player.TempIter]], Global.Lava_Radius[Event Player.Checkpoint_Lavas[Event Player.TempIter]], None);
Modify Player Variable(Event Player, Checkpoint_Effects, Append To Array, Last Created Entity);
Wait(0.010, Ignore Condition);
End;
Event Player.TempIter = 0;
}
}
rule("Developer - Subroutine Refresh Developer HUD Text")
{
event
{
Subroutine;
HUD_RefreshDeveloper;
}
actions
{
Call Subroutine(HUD_DestroyText);
Wait(0.100, Ignore Condition);
Create HUD Text(Event Player, Null, Null, Custom String("Modifying Array Index: {0} / {1}", Event Player.Level_GlobalIndex,
Count Of(Global.Start_Origin) - 1), Left, 1, Color(White), Color(White), Color(White), String, Default Visibility);
Modify Player Variable(Event Player, HUD_Text, Append To Array, Last Text ID);
Create HUD Text(Event Player, Null, Null, Custom String("Developer Mode Controls:"), Left, 1.100, Color(White), Color(
White), Color(White), String, Default Visibility);
Modify Player Variable(Event Player, HUD_Text, Append To Array, Last Text ID);
Create HUD Text(Event Player, Null, Null, Custom String(
"------------------------------------------------------------------------------------------------------"), Left, 2, Color(
White), Color(White), Color(White), String, Default Visibility);
Modify Player Variable(Event Player, HUD_Text, Append To Array, Last Text ID);
Create HUD Text(Event Player, Null, Custom String("Interact + Primary Fire = Toggle Free Mode"), Null, Left, 2.100, Color(
White), Color(White), Color(White), String, Default Visibility);
Modify Player Variable(Event Player, HUD_Text, Append To Array, Last Text ID);
Create HUD Text(Event Player, Null, Custom String("Interact + Crouch/Jump = Navigate Array Index"), Null, Left, 2.200, Color(
White), Color(White), Color(White), String, Default Visibility);
Modify Player Variable(Event Player, HUD_Text, Append To Array, Last Text ID);
Create HUD Text(Event Player, Null, Custom String("Interact + Ult/Slam = Increase/Decrease Level Flag"), Null, Left, 2.300,
Color(White), Color(White), Color(White), String, Default Visibility);
Modify Player Variable(Event Player, HUD_Text, Append To Array, Last Text ID);
Create HUD Text(Event Player, Null, Null, Custom String(
"------------------------------------------------------------------------------------------------------"), Left, 3, Color(
White), Color(White), Color(White), String, Default Visibility);
Modify Player Variable(Event Player, HUD_Text, Append To Array, Last Text ID);
Create HUD Text(Event Player, Null, Custom String("Reload + Primary Fire = Cycle Effect Type"), Null, Left, 3.100, Color(
White), Color(White), Color(White), String, Default Visibility);
Modify Player Variable(Event Player, HUD_Text, Append To Array, Last Text ID);
Create HUD Text(Event Player, Null, Custom String("Reload + Crouch/Jump = Increase/Decrease Radius"), Null, Left, 3.200, Color(
White), Color(White), Color(White), String, Default Visibility);
Modify Player Variable(Event Player, HUD_Text, Append To Array, Last Text ID);
Create HUD Text(Event Player, Null, Custom String("Reload + Move = Increase/Decrease Distance"), Null, Left, 3.300, Color(
White), Color(White), Color(White), String, Default Visibility);
Modify Player Variable(Event Player, HUD_Text, Append To Array, Last Text ID);
Create HUD Text(Event Player, Null, Custom String("Reload + Ability = Toggle Ability (0 = Allowed)"), Null, Left, 3.400, Color(
White), Color(White), Color(White), String, Default Visibility);
Modify Player Variable(Event Player, HUD_Text, Append To Array, Last Text ID);
Create HUD Text(Event Player, Null, Custom String("Reload + Ultimate = Place Effect"), Null, Left, 3.500, Color(White), Color(
White), Color(White), String, Default Visibility);
Modify Player Variable(Event Player, HUD_Text, Append To Array, Last Text ID);
Create HUD Text(Event Player, Null, Custom String("Reload + Melee = Remove Effect"), Null, Left, 3.600, Color(White), Color(
White), Color(White), String, Default Visibility);
Modify Player Variable(Event Player, HUD_Text, Append To Array, Last Text ID);
Create HUD Text(Event Player, Null, Null, Custom String(
"------------------------------------------------------------------------------------------------------"), Left, 4, Color(
White), Color(White), Color(White), String, Default Visibility);
Modify Player Variable(Event Player, HUD_Text, Append To Array, Last Text ID);
Create HUD Text(Event Player, Null, Custom String("Interact + Reload + Crouch/Jump = Shift Current Array Index Back/Forward"),
Null, Left, 4.100, Color(White), Color(White), Color(White), String, Default Visibility);
Modify Player Variable(Event Player, HUD_Text, Append To Array, Last Text ID);
Create HUD Text(Event Player, Null, Custom String("Interact + Reload + Ultimate = Duplicate Current Array Index"), Null, Left,
4.200, Color(White), Color(White), Color(White), String, Default Visibility);
Modify Player Variable(Event Player, HUD_Text, Append To Array, Last Text ID);
Create HUD Text(Event Player, Null, Custom String("Interact + Reload + Melee = Delete Current Array Index"), Null, Left, 4.300,
Color(White), Color(White), Color(White), String, Default Visibility);
Modify Player Variable(Event Player, HUD_Text, Append To Array, Last Text ID);
Create HUD Text(Event Player, Null, Custom String("Interact + Reload + Uppercut = Organize Array By Level Flag"), Null, Left,
4.400, Color(White), Color(White), Color(White), String, Default Visibility);
Modify Player Variable(Event Player, HUD_Text, Append To Array, Last Text ID);
Create HUD Text(Event Player, Null, Null, Custom String("Start Position / Radius: {0} / {1}",
Global.Start_Origin[Event Player.Level_GlobalIndex], Global.Start_Radius[Event Player.Level_GlobalIndex]), Right, 1, Color(
White), Color(White), Color(White), String, Default Visibility);
Modify Player Variable(Event Player, HUD_Text, Append To Array, Last Text ID);
Create HUD Text(Event Player, Null, Null, Custom String("End Position / Radius: {0} / {1}",
Global.End_Origin[Event Player.Level_GlobalIndex], Global.End_Radius[Event Player.Level_GlobalIndex]), Right, 1.100, Color(
White), Color(White), Color(White), String, Default Visibility);
Modify Player Variable(Event Player, HUD_Text, Append To Array, Last Text ID);
Create HUD Text(Event Player, Null, Null, Custom String("# Checkpoint Hints: {0}", Count Of(Event Player.Checkpoint_Hints)), Right,
1.200, Color(White), Color(White), Color(White), String, Default Visibility);
Modify Player Variable(Event Player, HUD_Text, Append To Array, Last Text ID);
Create HUD Text(Event Player, Null, Null, Custom String("# Checkpoint Lavas: {0}", Count Of(Event Player.Checkpoint_Lavas)), Right,
1.300, Color(White), Color(White), Color(White), String, Default Visibility);
Modify Player Variable(Event Player, HUD_Text, Append To Array, Last Text ID);
Create HUD Text(Event Player, Null, Null, Custom String("Abilities: {0}", Global.Start_Abilities[Event Player.Level_GlobalIndex]),
Right, 1.400, Color(White), Color(White), Color(White), String, Default Visibility);
Modify Player Variable(Event Player, HUD_Text, Append To Array, Last Text ID);
Create HUD Text(Event Player, Null, Null, Custom String("Camera: {0}", Global.Start_Camera[Event Player.Level_GlobalIndex]), Right,
1.500, Color(White), Color(White), Color(White), String, Default Visibility);
Modify Player Variable(Event Player, HUD_Text, Append To Array, Last Text ID);
Create HUD Text(Event Player, Null, Null, Custom String("Level Flag: {0}", Global.Start_LevelFlag[Event Player.Level_GlobalIndex]),
Right, 1.600, Color(White), Color(White), Color(White), String, Default Visibility);
Modify Player Variable(Event Player, HUD_Text, Append To Array, Last Text ID);
Create HUD Text(Event Player, Null, Null, Custom String(
"----------------------------------------------------------------------------------", Event Player.FreeMode), Right, 2, Color(
White), Color(White), Color(White), String, Default Visibility);
Modify Player Variable(Event Player, HUD_Text, Append To Array, Last Text ID);
Create HUD Text(Event Player, Null, Null, Custom String("Position: {0}", Position Of(Event Player)), Right, 2.100, Color(White),
Color(White), Color(White), String, Default Visibility);
Modify Player Variable(Event Player, HUD_Text, Append To Array, Last Text ID);
Create HUD Text(Event Player, Null, Null, Custom String("View Angle: {0}", Horizontal Facing Angle Of(Event Player)), Right, 2.200,
Color(White), Color(White), Color(White), String, Default Visibility);
Modify Player Variable(Event Player, HUD_Text, Append To Array, Last Text ID);
Create HUD Text(Event Player, Null, Null, Custom String("Start Radius: {0}", Event Player.Developer_StartRadius), Right, 2.300,
Color(White), Color(White), Color(White), String, Default Visibility);
Modify Player Variable(Event Player, HUD_Text, Append To Array, Last Text ID);
Create HUD Text(Event Player, Null, Null, Custom String("End Radius: {0}", Event Player.Developer_EndRadius), Right, 2.400, Color(
White), Color(White), Color(White), String, Default Visibility);
Modify Player Variable(Event Player, HUD_Text, Append To Array, Last Text ID);
Create HUD Text(Event Player, Null, Null, Custom String("Lava Radius: {0}", Event Player.Developer_LavaRadius), Right, 2.500,
Color(White), Color(White), Color(White), String, Default Visibility);
Modify Player Variable(Event Player, HUD_Text, Append To Array, Last Text ID);
Create HUD Text(Event Player, Null, Null, Custom String("View Distance: {0}", Event Player.Developer_Distance), Right, 2.600,
Color(White), Color(White), Color(White), String, Default Visibility);
Modify Player Variable(Event Player, HUD_Text, Append To Array, Last Text ID);
}
}