Return to post
variables
{
global:
0: TS_SHOP
1: SETTINGS
player:
0: Direction
1: Zoom
4: scale
5: setup
6: spear_count
7: spear_thrown
8: buttonheld
9: v_vel
10: p_pos
11: s_inispeed
12: m_mass
13: g_grav
14: d_dt
15: t_airtime
16: e_gravforce
17: f_force_on_proj
18: l_array
26: grappleStorage
27: grapplePos
28: grappleSettings
29: grappleStorage2
30: grapplePos2
31: grappleSettings2
}
rule("General Setup")
{
event
{
Ongoing - Global;
}
conditions
{
(Is Assembling Heroes || Is Waiting For Players) == True;
}
actions
{
Wait(1, Ignore Condition);
Set Match Time(0);
Wait(2, Ignore Condition);
Set Match Time(25);
"Some vanity"
Create HUD Text(All Players(All Teams), Null, Custom String("{0} AOT: Wall Breach!\r\nBy WildByte", Ability Icon String(Hero(Mei),
Button(Ability 2))), Custom String("A20GA"), Left, 0, Color(White), Color(Yellow), Color(White), Visible To and String,
Default Visibility);
Set Objective Description(All Players(Team 2), Custom String("Capture the point and breach Wall Rose"), Visible To and String);
Set Objective Description(All Players(Team 1), Custom String("Stop the Titans and defend Wall Rose"), Visible To and String);
}
}
rule("One-time setup (scouts)")
{
event
{
Ongoing - Each Player;
Team 1;
All;
}
conditions
{
Event Player.setup == False;
}
actions
{
Event Player.setup = True;
Create In-World Text(Event Player, Custom String("{0} Thunder Spear x{1} - Press ({2}) to throw", Ability Icon String(Hero(Ashe),
Button(Ability 2)), Event Player.spear_count, Input Binding String(Button(Ultimate))), World Vector Of(Vector(0, 0, -0.250),
Event Player, Rotation And Translation), 2, Do Not Clip, Visible To Position and String, Color(White), Default Visibility);
Create HUD Text(Event Player, Null, Custom String(" \r\n\r\n\r\n\r\n"), Is Button Held(Event Player, Button(Interact))
? Custom String("Movement:\r\n{0}", Custom String("({0}) Left Hook\n({1}) Right Hook\n({2}) Gas Boost", Input Binding String(
Button(Ability 1)), Input Binding String(Button(Secondary Fire)), Input Binding String(Button(Jump))), Input Binding String(
Button(Reload))) : Custom String("Press {0} to view controls", Input Binding String(Button(Interact))), Left, 1, Color(White),
Color(White), Color(White), Visible To and String, Default Visibility);
Create Effect(Filtered Array(All Players(All Teams), Is Alive(Event Player) && Is Button Held(Event Player, Button(Jump))
&& Is In Air(Event Player)), Smoke Sound, Color(White), Event Player, 65, Visible To Position and Radius);
}
}
rule("Player Spawn/Respawn Actions (scouts)")
{
event
{
Ongoing - Each Player;
Team 1;
Genji;
}
conditions
{
Has Spawned(Event Player) == True;
Is Alive(Event Player) == True;
}
actions
{
Event Player.spear_thrown = False;
Start Scaling Player(Event Player, 0.750, True);
Set Move Speed(Event Player, 75);
Set Jump Vertical Speed(Event Player, 75);
Set Gravity(Event Player, 75);
If(Hero Of(Event Player) == Hero(Genji));
Wait(1, Ignore Condition);
Press Button(Event Player, Button(Ultimate));
}
}
rule("Grapple (built off one-rule grapple by NyaWalking)")
{
event
{
Ongoing - Each Player;
Team 1;
All;
}
conditions
{
Is Alive(Event Player) == True;
Has Spawned(Event Player) == True;
Event Player.grappleStorage <= Null;
Is Button Held(Event Player, Button(Secondary Fire)) == True;
Event Player.buttonheld[False] == False;
(Hero Of(Event Player) != Hero(Mercy) || Weapon(Event Player) == 2) == True;
}
actions
{
"[0]: Grapple Start Position Offset\r\n[1]: Grapple Travel Speed\r\n[2]: Grapple Cooldown (Whole numbers only, sorry)\r\n[3]: Grapple Max Range (Meters)\r\n[4]: Grapple Time Before Returning (Set to 0 to disable)\r\n[5]: Grapple Strength"
Event Player.grappleSettings = Array(Vector(-0.200, -0.100, 0.150), 125, 0, 30, 0, 2.670);
Event Player.grappleStorage = Array(Null, Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player)
+ Facing Direction Of(Event Player) * 500, All Players(All Teams), Event Player, True), Null, Total Time Elapsed);
Event Player.grapplePos = Eye Position(Event Player) + World Vector Of(Event Player.grappleSettings[False], Event Player,
Rotation);
Chase Player Variable At Rate(Event Player, grapplePos, Event Player.grappleStorage[True], Event Player.grappleSettings[True],
Destination and Rate);
Create Beam Effect(Filtered Array(All Players(All Teams), Is Button Held(Event Player, Button(Secondary Fire)) && Is Alive(
Event Player)), Grapple Beam, Eye Position(Event Player) + World Vector Of(Event Player.grappleSettings[False], Event Player,
Rotation), Event Player.grapplePos, Color(White), Visible To Position and Radius);
Event Player.grappleStorage[2] = Last Created Entity;
Wait Until(Distance Between(Event Player.grapplePos, Event Player.grappleStorage[True]) <= 0.150 || !Is Button Held(Event Player,
Button(Secondary Fire)) || !Array Contains(All Players(All Teams), Event Player) || Distance Between(Eye Position(Event Player)
+ World Vector Of(Event Player.grappleSettings[False], Event Player, Rotation), Event Player.grappleStorage[True])
> Event Player.grappleSettings[3], 99999);
If(Distance Between(Eye Position(Event Player) + World Vector Of(Event Player.grappleSettings[False], Event Player, Rotation),
Event Player.grappleStorage[True]) > Event Player.grappleSettings[3]);
Wait(0.250, Ignore Condition);
Chase Player Variable At Rate(Event Player, grapplePos, Eye Position(Event Player) + World Vector Of(
Event Player.grappleSettings[False], Event Player, Rotation), Event Player.grappleSettings[True] + 5, Destination and Rate);
Wait Until(Distance Between(Event Player.grapplePos, Eye Position(Event Player) + World Vector Of(
Event Player.grappleSettings[False], Event Player, Rotation)) <= 0.150, 99999);
Destroy Effect(Event Player.grappleStorage[2]);
Event Player.grappleStorage = Array(Null, Null, Null, Null);
Event Player.grapplePos = Null;
Abort;
Else;
While((Is Button Held(Event Player, Button(Secondary Fire)) || Is Dead(Event Player)) && Array Contains(All Players(All Teams),
Event Player));
Apply Impulse(Event Player, Direction Towards(Event Player, Event Player.grappleStorage[True]), Event Player.grappleSettings[5],
To World, Incorporate Contrary Motion);
If(Total Time Elapsed > Event Player.grappleStorage[3] + ((
Event Player.grappleSettings[4] <= Null ? 99999 : Event Player.grappleSettings[4]) - 0.250) || !Is In Line of Sight(
Eye Position(Event Player) + Event Player.grappleSettings[False], Event Player.grapplePos, Barriers Do Not Block LOS)
|| Is Dead(Event Player));
If(!Is In Line of Sight(Eye Position(Event Player) + World Vector Of(Event Player.grappleSettings[False], Event Player, Rotation),
Event Player.grapplePos, Barriers Do Not Block LOS));
Wait(0.375, Ignore Condition);
End;
Wait(0.250, Ignore Condition);
Chase Player Variable At Rate(Event Player, grapplePos, Eye Position(Event Player) + World Vector Of(
Event Player.grappleSettings[False], Event Player, Rotation), Event Player.grappleSettings[True] + 5, Destination and Rate);
Wait Until(Distance Between(Event Player.grapplePos, Eye Position(Event Player) + World Vector Of(
Event Player.grappleSettings[False], Event Player, Rotation)) <= 0.150, 99999);
Destroy Effect(Event Player.grappleStorage[2]);
Event Player.grappleStorage = Array(Event Player.grappleSettings[2], Null, Null, Null);
Event Player.grapplePos = Null;
Skip(6);
End;
Wait(0.050, Ignore Condition);
End;
End;
Destroy Effect(Event Player.grappleStorage[2]);
Event Player.grappleStorage[False] = Event Player.grappleSettings[2];
While(Event Player.grappleStorage[False] > Null);
Wait(1, Ignore Condition);
Event Player.grappleStorage[False] -= 1;
End;
disabled Small Message(Event Player, Custom String("Grapple Ready"));
}
}
rule("Grapple2 (built off one-rule grapple by NyaWalking)")
{
event
{
Ongoing - Each Player;
Team 1;
All;
}
conditions
{
Is Alive(Event Player) == True;
Has Spawned(Event Player) == True;
Event Player.grappleStorage2 <= Null;
Is Button Held(Event Player, Button(Ability 1)) == True;
Event Player.buttonheld[True] == False;
disabled Hero Of(Event Player) != Hero(Mercy);
}
actions
{
"[0]: Grapple Start Position Offset\r\n[1]: Grapple Travel Speed\r\n[2]: Grapple Cooldown (Whole numbers only, sorry)\r\n[3]: Grapple Max Range (Meters)\r\n[4]: Grapple Time Before Returning (Set to 0 to disable)\r\n[5]: Grapple Strength"
Event Player.grappleSettings2 = Array(Vector(0.200, -0.100, 0.150), 125, 0, 30, 0, 2.670);
Event Player.grappleStorage2 = Array(Null, Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player)
+ Facing Direction Of(Event Player) * 500, All Players(All Teams), Event Player, True), Null, Total Time Elapsed);
Event Player.grapplePos2 = Eye Position(Event Player) + World Vector Of(Event Player.grappleSettings2[False], Event Player,
Rotation);
Chase Player Variable At Rate(Event Player, grapplePos2, Event Player.grappleStorage2[True], Event Player.grappleSettings2[True],
Destination and Rate);
Create Beam Effect(Filtered Array(All Players(All Teams), Is Button Held(Event Player, Button(Ability 1)) && Is Alive(
Event Player)), Grapple Beam, Eye Position(Event Player) + World Vector Of(Event Player.grappleSettings2[False], Event Player,
Rotation), Event Player.grapplePos2, Color(White), Visible To Position and Radius);
Event Player.grappleStorage2[2] = Last Created Entity;
Wait Until(Distance Between(Event Player.grapplePos2, Event Player.grappleStorage2[True]) <= 0.150 || !Is Button Held(Event Player,
Button(Ability 1)) || !Array Contains(All Players(All Teams), Event Player) || Distance Between(Eye Position(Event Player)
+ World Vector Of(Event Player.grappleSettings2[False], Event Player, Rotation), Event Player.grappleStorage2[True])
> Event Player.grappleSettings2[3], 99999);
If(Distance Between(Eye Position(Event Player) + World Vector Of(Event Player.grappleSettings2[False], Event Player, Rotation),
Event Player.grappleStorage2[True]) > Event Player.grappleSettings2[3]);
Wait(0.250, Ignore Condition);
Chase Player Variable At Rate(Event Player, grapplePos2, Eye Position(Event Player) + World Vector Of(
Event Player.grappleSettings2[False], Event Player, Rotation), Event Player.grappleSettings2[True] + 5, Destination and Rate);
Wait Until(Distance Between(Event Player.grapplePos2, Eye Position(Event Player) + World Vector Of(
Event Player.grappleSettings2[False], Event Player, Rotation)) <= 0.150, 99999);
Destroy Effect(Event Player.grappleStorage2[2]);
Event Player.grappleStorage2 = Array(Null, Null, Null, Null);
Event Player.grapplePos2 = Null;
Abort;
Else;
While((Is Button Held(Event Player, Button(Ability 1)) || Is Dead(Event Player)) && Array Contains(All Players(All Teams),
Event Player));
Apply Impulse(Event Player, Direction Towards(Event Player, Event Player.grappleStorage2[True]), Event Player.grappleSettings2[5],
To World, Incorporate Contrary Motion);
If(Total Time Elapsed > Event Player.grappleStorage2[3] + ((
Event Player.grappleSettings2[4] <= Null ? 99999 : Event Player.grappleSettings2[4]) - 0.250) || !Is In Line of Sight(
Eye Position(Event Player) + Event Player.grappleSettings2[False], Event Player.grapplePos2, Barriers Do Not Block LOS)
|| Is Dead(Event Player));
If(!Is In Line of Sight(Eye Position(Event Player) + World Vector Of(Event Player.grappleSettings2[False], Event Player, Rotation),
Event Player.grapplePos2, Barriers Do Not Block LOS));
Wait(0.375, Ignore Condition);
End;
Wait(0.250, Ignore Condition);
Chase Player Variable At Rate(Event Player, grapplePos2, Eye Position(Event Player) + World Vector Of(
Event Player.grappleSettings2[False], Event Player, Rotation), Event Player.grappleSettings2[True] + 5, Destination and Rate);
Wait Until(Distance Between(Event Player.grapplePos2, Eye Position(Event Player) + World Vector Of(
Event Player.grappleSettings2[False], Event Player, Rotation)) <= 0.150, 99999);
Destroy Effect(Event Player.grappleStorage2[2]);
Event Player.grappleStorage2 = Array(Event Player.grappleSettings2[2], Null, Null, Null);
Event Player.grapplePos2 = Null;
Skip(6);
End;
Wait(0.050, Ignore Condition);
End;
End;
Destroy Effect(Event Player.grappleStorage2[2]);
Event Player.grappleStorage2[False] = Event Player.grappleSettings2[2];
While(Event Player.grappleStorage2[False] > Null);
Wait(1, Ignore Condition);
Event Player.grappleStorage2[False] -= 1;
End;
disabled Small Message(Event Player, Custom String("Grapple Ready"));
}
}
rule("Gas")
{
event
{
Ongoing - Each Player;
Team 1;
All;
}
conditions
{
Is Button Held(Event Player, Button(Jump)) == True;
Is In Air(Event Player) == True;
Is Alive(Event Player) == True;
}
actions
{
Apply Impulse(Event Player, Throttle Of(Event Player) != Vector(Empty Array, Empty Array, Empty Array) ? Throttle Of(Event Player)
: Forward, 2.500, To Player, Incorporate Contrary Motion);
Apply Impulse(Event Player, Up, 0.200, To World, Incorporate Contrary Motion);
Wait(0.050, Ignore Condition);
Play Effect(All Players(All Teams), Good Explosion, Color(White), Event Player + Vector(0, -0.100, 0), 0.100);
Loop If Condition Is True;
}
}
rule("Hook beam effect reset workaround")
{
event
{
Ongoing - Each Player;
Team 1;
All;
}
conditions
{
(Is Button Held(Event Player, Button(Secondary Fire)) || Is Button Held(Event Player, Button(Ability 1))) == True;
}
actions
{
If(Is Button Held(Event Player, Button(Secondary Fire)));
Event Player.buttonheld[False] = True;
Wait Until(!Is Button Held(Event Player, Button(Secondary Fire)), 99999);
Event Player.buttonheld[False] = False;
Else;
Event Player.buttonheld[True] = True;
Wait Until(!Is Button Held(Event Player, Button(Ability 1)), 99999);
Event Player.buttonheld[True] = False;
End;
}
}
rule("Nape")
{
event
{
Player Dealt Damage;
Team 1;
Genji;
}
conditions
{
Distance Between(Event Player, Eye Position(Victim)) < 3.500;
Distance Between(Event Player, Eye Position(Victim)) < 3.800;
disabled Event Ability == Button(Primary Fire);
}
actions
{
Damage(Victim, Null, Max Health(Victim) * 0.330);
Damage(Victim, Null, Max Health(Victim) * 0.600);
Wait(0.250, Ignore Condition);
}
}
rule("Thunder Spear - Init (Based on Brewbies' Projectile Demo - 9ABDY)")
{
event
{
Ongoing - Each Player;
Team 1;
All;
}
conditions
{
(Ultimate Charge Percent(Event Player) < 99 || Hero Of(Event Player) == Hero(Genji)) == True;
Event Player.spear_thrown == False;
Is Alive(Event Player) == True;
Is Button Held(Event Player, Button(Ultimate)) == True;
Event Player.spear_count > 0;
}
actions
{
Event Player.spear_thrown = True;
Event Player.spear_count += -1;
Skip If(Entity Exists(Event Player.l_array) == False, 2);
Destroy Effect(Event Player.l_array[0]);
Destroy Effect(Event Player.l_array[1]);
Event Player.p_pos = Eye Position(Event Player);
Event Player.s_inispeed = 15 + Speed Of In Direction(Event Player, Facing Direction Of(Event Player));
Event Player.v_vel = Facing Direction Of(Event Player) * Event Player.s_inispeed;
Event Player.m_mass = 1;
Event Player.g_grav = 4.900;
Event Player.d_dt = 0.016;
Event Player.t_airtime = 0;
Create Effect(All Players(All Teams), Bad Aura, Color(Yellow), Event Player.p_pos, 0.100, Visible To Position and Radius);
Event Player.l_array[0] = Last Created Entity;
Create Effect(All Players(All Teams), Bad Aura, Color(Red), Event Player.p_pos, 0.250, Visible To Position and Radius);
Event Player.l_array[1] = Last Created Entity;
Event Player.e_gravforce = Vector(0, -1 * Event Player.g_grav * Event Player.m_mass, 0);
Event Player.f_force_on_proj = Event Player.e_gravforce;
}
}
rule("Thunder Spear - Movement & Effects")
{
event
{
Ongoing - Each Player;
Team 1;
All;
}
conditions
{
Distance Between(Event Player.p_pos, Ray Cast Hit Position(Event Player.p_pos,
Event Player.p_pos + Event Player.v_vel * Event Player.d_dt * 1000, All Players(Opposite Team Of(Team Of(Event Player))),
Event Player, True)) >= 0.250 + Event Player.s_inispeed / 100;
}
actions
{
Event Player.v_vel = Event Player.v_vel + Event Player.f_force_on_proj / Event Player.m_mass * Event Player.d_dt;
Event Player.p_pos = Event Player.p_pos + Event Player.v_vel * Event Player.d_dt;
Event Player.t_airtime = Event Player.t_airtime + Event Player.d_dt;
Play Effect(All Players(All Teams), Bad Explosion, Color(Orange), Event Player.p_pos, 0.100);
Wait(0.016, Ignore Condition);
Loop If Condition Is True;
Destroy Effect(Event Player.l_array[0]);
Destroy Effect(Event Player.l_array[1]);
Play Effect(All Players(All Teams), Good Explosion, Color(Red), Event Player.p_pos, 4);
Play Effect(All Players(All Teams), Ring Explosion, Color(Red), Event Player.p_pos, 6);
Damage(Players Within Radius(Event Player.p_pos, 5, Team 2, Surfaces And All Barriers), Event Player, 500);
Damage(Players Within Radius(Event Player.p_pos, 5, Global.SETTINGS[1] ? All Teams : Team 2, Surfaces And All Barriers),
Event Player, 85);
Play Effect(All Players(All Teams), Explosion Sound, Color(White), Event Player.p_pos, 75);
Set Status(Players Within Radius(Event Player.p_pos, 6, Team 2, Surfaces And All Barriers), Null, Burning, 5);
Start Damage Over Time(Players Within Radius(Event Player.p_pos, 6, Team 2, Surfaces And All Barriers), Event Player, 5, 15);
Skip If(Is Dead(Event Player), 1);
Set Status(Players Within Radius(Event Player.p_pos, 6, Global.SETTINGS[1] ? All Teams : Team 2, Surfaces And All Barriers), Null,
Burning, 5);
Start Damage Over Time(Players Within Radius(Event Player.p_pos, 6, Global.SETTINGS[1] ? All Teams : Team 2,
Surfaces And All Barriers), Event Player, 5, 15);
Event Player.spear_thrown = False;
}
}
rule("Titan Spawn")
{
event
{
Ongoing - Each Player;
Team 2;
All;
}
conditions
{
Has Spawned(Event Player) == True;
Is Alive(Event Player) == True;
}
actions
{
Set Status(Event Player, Null, Invincible, 5);
Start Scaling Player(Event Player, Event Player.scale, True);
Start Scaling Barriers(Event Player, 2, True);
Set Max Health(Event Player, Absolute Value(5000));
Set Max Health(Event Player, Absolute Value(3250));
Wait(1, Ignore Condition);
Set Player Health(Event Player, Max Health(Event Player));
Set Damage Dealt(Event Player, 150);
Set Healing Dealt(Event Player, Absolute Value(1500));
}
}
rule("Thunder Spear Shop")
{
event
{
Ongoing - Global;
}
actions
{
Global.TS_SHOP = Vector(55.855, 21.603, -68.296);
If(Current Map == Map(Eichenwalde) || Current Map == Map(Eichenwalde Halloween));
Global.TS_SHOP = Vector(55.855, 21.603, -68.296);
Else If(Current Map == Map(Hollywood) || Current Map == Map(Hollywood Halloween));
Global.TS_SHOP = Vector(1.366, 11.500, -59.064);
Else If(Current Map == Map(King's Row) || Current Map == Map(King's Row Winter));
Global.TS_SHOP = Vector(-58.161, 5.500, -16.512);
End;
Create Effect(All Players(Team 1), Ring, Color(Orange), Global.TS_SHOP, 1.500, Visible To Position and Radius);
Create In-World Text(All Players(Team 1), Custom String("Get Thunder Spear - ({0})", Input Binding String(Button(Interact))),
Global.TS_SHOP, 1, Do Not Clip, Visible To Position and String, Color(Orange), Default Visibility);
}
}
rule("Get Thunder Spear")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Event Player, Global.TS_SHOP) <= 1.500;
Is Button Held(Event Player, Button(Interact)) == True;
Event Player.spear_count < 5;
Event Player.spear_count < 2;
}
actions
{
Event Player.spear_count += 1;
Play Effect(All Players(All Teams), Ring Explosion, Color(Orange), Global.TS_SHOP + Vector(0, -0.500, 0), 3);
Skip If(Is Button Held(Event Player, Button(Crouch)), 1);
Wait(0.150, Ignore Condition);
Wait(0.050, Ignore Condition);
Loop If Condition Is True;
}
}
rule("Titan - Crouch to get under small overhangs")
{
event
{
Ongoing - Each Player;
Team 2;
All;
}
conditions
{
Is Button Held(Event Player, Button(Crouch)) == True;
}
actions
{
Chase Player Variable Over Time(Event Player, scale, 1.500, 0.500, Destination and Duration);
}
}
rule("Titan - Stop Crouching to grow")
{
event
{
Ongoing - Each Player;
Team 2;
All;
}
conditions
{
Is Button Held(Event Player, Button(Crouch)) == False;
}
actions
{
Chase Player Variable Over Time(Event Player, scale, 3, 0.500, Destination and Duration);
}
}
rule("One-time setup (titans)")
{
event
{
Ongoing - Each Player;
Team 2;
All;
}
conditions
{
Event Player.setup == False;
}
actions
{
Event Player.setup = True;
Create Effect(All Players(Team 1), Orb, Color(Red), Eye Position(Event Player), 1, Visible To Position and Radius);
Start Heal Over Time(Event Player, Null, 9999, 25);
}
}
rule("Payload Breached Wall Rose")
{
event
{
Ongoing - Global;
}
conditions
{
Payload Progress Percentage >= 10;
Payload Progress Percentage < 11;
}
actions
{
Big Message(All Players(All Teams), Custom String("Wall Rose has been Breached!"));
Wait(2, Ignore Condition);
Set Objective Description(All Players(Team 2), Custom String("Escort the payload and breach Wall Sina"), Visible To and String);
Set Objective Description(All Players(Team 1), Custom String("Stop the Titans and defend Wall Sina"), Visible To and String);
}
}
rule("Payload Breached Wall Sina")
{
event
{
Ongoing - Global;
}
conditions
{
Payload Progress Percentage >= 66;
Payload Progress Percentage < 67;
}
actions
{
Big Message(All Players(All Teams), Custom String("Wall Sina has been Breached!"));
Wait(2, Ignore Condition);
Set Objective Description(All Players(Team 2), Custom String("Escort the payload into the castle"), Visible To and String);
Set Objective Description(All Players(Team 1), Custom String("Stop the Titans! Defend the castle!"), Visible To and String);
}
}
rule("Anti-Crash - 1")
{
event
{
Ongoing - Global;
}
conditions
{
Server Load > 250;
}
actions
{
Set Slow Motion(50);
}
}
rule("Anti-Crash - 2")
{
event
{
Ongoing - Global;
}
conditions
{
Server Load < 150;
}
actions
{
Set Slow Motion(100);
}
}
disabled rule("----- Made by Mitsiee. More at https://workshop.codes/third-person -----")
{
event
{
Ongoing - Global;
}
}
rule("Initialise")
{
event
{
Ongoing - Each Player;
Team 1;
All;
}
conditions
{
First Of(Global.SETTINGS) == True;
}
actions
{
Event Player.Direction = 0.650;
Event Player.Zoom = -2.250;
}
}
rule("Set Third Person")
{
event
{
Ongoing - Each Player;
Team 1;
All;
}
conditions
{
First Of(Global.SETTINGS) == True;
Is Alive(Event Player) == True;
((Hero Of(Event Player) == Hero(Widowmaker) || Hero Of(Event Player) == Hero(Ashe)) && Is Button Held(Event Player, Button(
Secondary Fire))) != True;
}
actions
{
Start Camera(Event Player, Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(Vector(
Event Player.Direction * Min(Event Player.Zoom / 2.500, -0.750), 0, 0), Event Player, Rotation) + Facing Direction Of(
Event Player) * Event Player.Zoom, All Players(All Teams), Event Player, False), Ray Cast Hit Position(Eye Position(
Event Player), Eye Position(Event Player) + Facing Direction Of(Event Player) * 200, All Players(All Teams), Event Player,
False), 35);
}
}
rule("Workshop Settings")
{
event
{
Ongoing - Global;
}
actions
{
Global.SETTINGS = Array(Workshop Setting Toggle(Custom String("General Customization"), Custom String("Third Person Scouts"), True,
0), Workshop Setting Toggle(Custom String("General Customization"), Custom String(
"Realistic Thunder Spears (friendly damage)"), False, 1));
}
}