Return to post
settings
{
main
{
Description: "Bloodsport? More like bloodsupport! Created by Dove. Special thanks to pluzorminuz for projectile arc trajectory calculations. Hold F to see changes to hero abilities."
}
lobby
{
Allow Players Who Are In Queue: Yes
Match Voice Chat: Enabled
Max FFA Players: 7
Max Spectators: 4
}
modes
{
Deathmatch
{
enabled maps
{
Black Forest
Blizzard World
Castillo
Château Guillard Halloween
Dorado
Eichenwalde Halloween
Kanezaka
King's Row
Necropolis
Paris
Petra
}
}
disabled Team Deathmatch
{
Mercy Resurrect Counteracts Kills: Off
}
General
{
Game Mode Start: Manual
Health Pack Respawn Time Scalar: 200%
Hero Limit: 1 Per Game
}
}
heroes
{
General
{
Ana
{
Ammunition Clip Size Scalar: 125%
Healing Dealt: 60%
Ultimate Generation Nano Boost: 140%
}
Baptiste
{
Ammunition Clip Size Scalar: 80%
Ultimate Generation - Passive Amplification Matrix: 0%
Ultimate Generation Amplification Matrix: 140%
}
Brigitte
{
Healing Dealt: 80%
Health: 60%
Jump Vertical Speed: 120%
Repair Pack Cooldown Time: 167%
Ultimate Generation Rally: 140%
}
Lúcio
{
Ammunition Clip Size Scalar: 140%
Health: 75%
Projectile Speed: 117%
Soundwave Knockback Scalar: 110%
Ultimate Generation Sound Barrier: 140%
}
Mercy
{
Ammunition Clip Size Scalar: 120%
Damage Dealt: 120%
Guardian Angel Cooldown Time: 500%
Ultimate Generation Valkyrie: 140%
}
Moira
{
Biotic Energy Maximum: 63%
Biotic Energy Recharge Rate: 5%
Biotic Orb Cooldown Time: 125%
Biotic Orb Max Healing Scalar: 50%
Projectile Speed: 135%
Ultimate Generation Coalescence: 140%
}
Sombra
{
Ammunition Clip Size Scalar: 50%
Health: 75%
Ultimate Generation - Combat EMP: 125%
Ultimate Generation - Passive EMP: 0%
}
Symmetra
{
Damage Dealt: 75%
Health: 40%
Teleporter Cooldown Time: 70%
Ultimate Generation Photon Barrier: 120%
}
Zenyatta
{
Damage Dealt: 75%
Orb of Discord: Off
Orb of Harmony: Off
Ultimate Generation - Combat Transcendence: 133%
Ultimate Generation Transcendence: 140%
}
enabled heroes
{
Ana
Baptiste
Brigitte
Lúcio
Mercy
Moira
Sombra
Zenyatta
}
}
}
extensions
{
Beam Effects
Buff Status Effects
Debuff Status Effects
Buff and Debuff Sounds
Explosion Sounds
}
}
variables
{
global:
2: map_deathplane_y
player:
0: AmmoReload
1: CFMoveSpeed
2: HealingStart
4: BrgExtraHealth
5: BrgExtraArmor
6: AnaExtraHealth
7: SymExtraHealth
8: SymExtraShields
10: SmbDmg
11: SmbUltDmg
12: WhipPull
13: CFHealMod
14: CFHealModReg
15: RushOverload
16: OrbHalo
17: AngelStart
18: AngelTrace
19: TranscendenceDmg
20: AngelFlight
21: RezCloud
22: V
22: AmpBomb
23: HumilityVis
24: HumilityCheck
25: DiscordCheck
26: DiscordIcon
27: HumilityIcon
28: OrbVictim
29: OrbTargetValid
30: TempShields
31: ShieldPool
32: DDamage
33: OrbHUD
34: Help0
35: Help1
36: Help2
37: Help3
38: ColorCode
39: HDamage
40: HHealing
41: Help4
42: Help5
43: Help6
44: proj_p0
45: proj_p1
46: proj_p2
47: proj_apex_t
48: proj_dir
49: ray_cast_t
50: ray_cast_start
51: ray_cast_end
52: ray_cast_hit_pos
53: proj_predict_land_pos
54: proj_predict_land_t
55: proj_p0_hidden
56: proj_dir_hidden
57: proj_dir_raw_hidden
58: AngelTarget
59: AngelDir
60: AngelToggle
61: CaduceusDamage
62: CaduceusDrain
63: EMPGlow
}
subroutines
{
0: ClearOrbs
1: BombArc
2: BombOrigin
3: BombRecoil
4: BombCollision
}
rule("All: color code")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Has Spawned(Event Player) == True;
disabled Is Alive(Event Player) == True;
}
actions
{
If(Hero Of(Event Player) == Hero(Ana));
Event Player.ColorCode = Color(Blue);
Else If(Hero Of(Event Player) == Hero(Baptiste));
Event Player.ColorCode = Color(Orange);
Else If(Hero Of(Event Player) == Hero(Brigitte));
Event Player.ColorCode = Color(Yellow);
Else If(Hero Of(Event Player) == Hero(Lúcio));
Event Player.ColorCode = Color(Green);
Else If(Hero Of(Event Player) == Hero(Mercy));
Event Player.ColorCode = Color(White);
Else If(Hero Of(Event Player) == Hero(Moira));
Event Player.ColorCode = Color(Purple);
Else If(Hero Of(Event Player) == Hero(Sombra));
Event Player.ColorCode = Color(Rose);
Else If(Hero Of(Event Player) == Hero(Symmetra));
Event Player.ColorCode = Color(Aqua);
Else If(Hero Of(Event Player) == Hero(Zenyatta));
Event Player.ColorCode = Color(Red);
Else;
Event Player.ColorCode = Color(Gray);
End;
Wait Until(Is Dead(Event Player) == True, 99999);
Wait Until(Is Alive(Event Player) == True, 10);
Loop;
disabled Loop If(Is Dead(Event Player) == True);
}
}
disabled rule("Testing: check sl")
{
event
{
Ongoing - Each Player;
All;
All;
}
actions
{
Create HUD Text(All Players(All Teams), Server Load, Null, Null, Left, 0, Color(White), Color(White), Color(White),
Visible To and String, Default Visibility);
}
}
disabled rule("Testing: show altitude")
{
event
{
Ongoing - Each Player;
All;
All;
}
actions
{
Create HUD Text(All Players(All Teams), Altitude Of(Event Player), Null, Null, Left, 0, Color(White), Color(White), Color(White),
Visible To and String, Default Visibility);
}
}
disabled rule("Testing: show damage")
{
event
{
Player Dealt Damage;
All;
All;
}
actions
{
Small Message(Attacker, Custom String("{0}", Event Damage));
}
}
disabled rule("Testing: dummy bot attack")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Dummy Bot(Event Player) == True;
Is In View Angle(Event Player, Host Player, 20) == True;
}
actions
{
If(Hero Of(Event Player) == Hero(Moira));
Start Holding Button(Event Player, Button(Secondary Fire));
Else;
Start Holding Button(Event Player, Button(Primary Fire));
If(Hero Of(Event Player) == Hero(Baptiste));
Wait Until(Ammo(Event Player, 0) == 0, 99999);
Press Button(Event Player, Button(Reload));
disabled Wait(0.250, Ignore Condition);
disabled Loop If Condition Is True;
End;
End;
Wait Until(Is In View Angle(Event Player, Host Player, 20) == False, 99999);
Stop Holding Button(Event Player, Button(Primary Fire));
Stop Holding Button(Event Player, Button(Secondary Fire));
}
}
disabled rule("Testing: bot outline")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Has Spawned(Event Player) == True;
Is Dummy Bot(Event Player) == True;
}
actions
{
Start Forcing Player Outlines(Event Player, All Players(All Teams), True, Event Player.ColorCode, Always);
}
}
disabled rule("Testing: bot shields")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Dummy Bot(Event Player) == True;
}
actions
{
Add Health Pool To Player(Event Player, Shields, 600, True, True);
Set Healing Received(Event Player, 1000);
}
}
disabled rule("Testing: Unkillable")
{
event
{
Ongoing - Each Player;
All;
All;
}
actions
{
Set Status(Event Player, Null, Unkillable, 9999);
}
}
disabled rule("Testing: Create bot")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Button Held(Event Player, Button(Interact)) == True;
}
actions
{
disabled Create Dummy Bot(Random Value In Array(Append To Array(Append To Array(All Support Heroes, Hero(Symmetra)), Hero(Sombra))),
All Teams, -1, Ray Cast Hit Position(Eye Position(Event Player), Facing Direction Of(Event Player) * 50, Null, Event Player,
False), Event Player);
disabled Create Dummy Bot(Random Value In Array(All Support Heroes), All Teams, -1, Random Value In Array(Spawn Points(All Teams)),
Facing Direction Of(Event Player) * Vector(-1, -1, -1));
disabled Create Dummy Bot(Hero(Roadhog), All Teams, -1, Eye Position(Event Player), Vector(0, 0, 0));
Create Dummy Bot(Random Value In Array(Append To Array(All Support Heroes, Hero(Sombra))), All Teams, -1, Random Value In Array(
Spawn Points(All Teams)), Random Value In Array(Spawn Points(All Teams)));
}
}
rule("Ana: help interface")
{
event
{
Ongoing - Each Player;
All;
Ana;
}
conditions
{
Is Button Held(Event Player, Button(Interact)) == True;
}
actions
{
Create HUD Text(Event Player, Custom String("Biotic Rifle"), Custom String("No change"), Null, Left, 0, Event Player.ColorCode,
Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help0 = Last Text ID;
Create HUD Text(Event Player, Custom String("Sleep Dart"), Custom String("Heal when damaging sleeping enemies"), Null, Left, 1,
Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help1 = Last Text ID;
Create HUD Text(Event Player, Custom String("Biotic Grenade"), Custom String("No change"), Null, Left, 2, Event Player.ColorCode,
Color(White), Color(White), Visible To and String, Default Visibility);
Create HUD Text(Event Player, Custom String("Biotic Grenade"), Custom String("Launch self backwards when self-healing"), Null,
Left, 2, Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help2 = Last Text ID;
Create HUD Text(Event Player, Custom String("Nano Boost"), Custom String("Grants Sleep Dart an area of effect"), Null, Left, 3,
Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
Create HUD Text(Event Player, Custom String("Nano Boost"), Custom String("No change"), Null, Left, 3, Event Player.ColorCode,
Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help3 = Last Text ID;
Wait Until(Is Button Held(Event Player, Button(Interact)) == False, 99999);
Destroy HUD Text(Event Player.Help0);
Destroy HUD Text(Event Player.Help1);
Destroy HUD Text(Event Player.Help2);
Destroy HUD Text(Event Player.Help3);
}
}
rule("Ana: self-heal when damaging sleeping enemy")
{
event
{
Player Dealt Damage;
All;
Ana;
}
conditions
{
Has Status(Victim, Asleep) == True;
Event Player == Attacker;
Event Ability != Button(Ability 1);
}
actions
{
Start Heal Over Time(Event Player, Event Player, 0.616, 83.333);
Wait Until(Has Status(Event Player, Asleep) == False, 1.500);
Stop All Heal Over Time(Event Player);
disabled Start Heal Over Time(Event Player, Event Player, 0.616, 138.889);
disabled Wait Until(Has Status(Event Player, Asleep) == False, 0.616);
Heal(Event Player, Event Player, 50);
disabled Stop All Heal Over Time(Event Player);
Wait(0.800, Ignore Condition);
}
}
rule("Ana: extra health")
rule("Ana: grenade jump")
{
event
{
Player Received Healing;
All;
Ana;
}
conditions
{
Event Ability == Button(Ability 2);
}
actions
{
Apply Impulse(Event Player, Facing Direction Of(Event Player) * -1, 17.500, To World, Cancel Contrary Motion);
}
}
rule("Ana: reduced health")
{
event
{
Ongoing - Each Player;
All;
Ana;
}
conditions
{
Has Spawned(Event Player) == True;
}
actions
{
Set Max Health(Event Player, 87.500);
disabled Add Health Pool To Player(Event Player, Health, 25, True, True);
disabled Event Player.AnaExtraHealth = Last Created Health Pool;
Wait Until(Is Dead(Event Player), 99999);
disabled Remove Health Pool From Player(Event Player.AnaExtraHealth);
Set Max Health(Event Player, 100);
}
}
disabled rule("Ana: extra health")
{
event
{
Ongoing - Each Player;
All;
Ana;
}
conditions
{
Has Spawned(Event Player) == True;
}
actions
{
Set Max Health(Event Player, 112.500);
disabled Add Health Pool To Player(Event Player, Health, 25, True, True);
disabled Event Player.AnaExtraHealth = Last Created Health Pool;
Wait Until(Is Dead(Event Player), 99999);
disabled Remove Health Pool From Player(Event Player.AnaExtraHealth);
Set Max Health(Event Player, 100);
}
}
rule("Ana: AoE sleep dart")
disabled rule("Ana: AoE sleep dart")
{
event
{
Player Dealt Damage;
All;
Ana;
}
conditions
{
Is Using Ultimate(Event Player) == True;
Event Ability == Button(Ability 1);
}
actions
{
Set Status(Filtered Array(Players Within Radius(Position Of(Victim), 4, All Teams, Surfaces),
Current Array Element != Event Player), Event Player, Asleep, 5);
}
}
rule("Bap: help interface")
{
event
{
Ongoing - Each Player;
All;
Baptiste;
}
conditions
{
Is Button Held(Event Player, Button(Interact)) == True;
}
actions
{
Create HUD Text(Event Player, Custom String("Exo Boots"), Custom String("No change"), Null, Left, 0, Event Player.ColorCode, Color(
White), Color(White), Visible To and String, Default Visibility);
Event Player.Help0 = Last Text ID;
Create HUD Text(Event Player, Custom String("Biotic Launcher"), Custom String("Secondary fire is a bomb"), Null, Left, 1,
Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help1 = Last Text ID;
Create HUD Text(Event Player, Custom String("Regenerative Burst"), Custom String("No change"), Null, Left, 2,
Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help2 = Last Text ID;
Create HUD Text(Event Player, Custom String("Immortality Field"), Custom String("Kills don't count while immortal"), Null, Left, 3,
Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help3 = Last Text ID;
Create HUD Text(Event Player, Custom String("Amplification Matrix"), Custom String(
"Doubles reload from secondary fire, eliminates recoil"), Null, Left, 4, Event Player.ColorCode, Color(White), Color(White),
Visible To and String, Default Visibility);
Event Player.Help4 = Last Text ID;
Wait Until(Is Button Held(Event Player, Button(Interact)) == False, 99999);
Destroy HUD Text(Event Player.Help0);
Destroy HUD Text(Event Player.Help1);
Destroy HUD Text(Event Player.Help2);
Destroy HUD Text(Event Player.Help3);
Destroy HUD Text(Event Player.Help4);
}
}
rule("Bap: bomb detonation")
{
event
{
Ongoing - Each Player;
All;
Baptiste;
}
conditions
{
Is Firing Secondary(Event Player) == True;
}
actions
{
Call Subroutine(BombOrigin);
Call Subroutine(BombArc);
Start Rule(BombRecoil, Restart Rule);
disabled Start Rule(BombArc, Do Nothing);
Set Facing(Event Player, Vector(X Component Of(Facing Direction Of(Event Player)), Y Component Of(Facing Direction Of(
Event Player)) + 0.010 * Random Integer(1, 7), Z Component Of(Facing Direction Of(Event Player))), To World);
Set Secondary Fire Enabled(Event Player, False);
Wait(7 * Event Player.proj_predict_land_t, Ignore Condition);
disabled Play Effect(All Players(All Teams), Good Explosion, Color(Aqua), Event Player.proj_predict_land_pos, 5);
Start Damage Over Time(Players Within Radius(Event Player.proj_predict_land_pos, 0.500, All Teams, Surfaces And Enemy Barriers),
Event Player, 0.050, 400);
If(Count Of(Remove From Array(Players Within Radius(Event Player.proj_predict_land_pos, 0.500, All Teams,
Surfaces And Enemy Barriers), Event Player)) > 0);
Set Ultimate Charge(Event Player, Ultimate Charge Percent(Event Player) + Absolute Value(Count Of(Players Within Radius(
Event Player.proj_predict_land_pos, 0.500, Filtered Array(All Players(All Teams), Current Array Element != Event Player),
Surfaces And Enemy Barriers)) * 1.212));
End;
Damage(Players Within Radius(Event Player.proj_predict_land_pos, 3, All Teams, Surfaces And Enemy Barriers), Event Player,
Event Player.V == False ? 20 : 40);
Event Player.AmpBomb == False ? 20 : 40);
Set Secondary Fire Enabled(Event Player, True);
Wait(
Event Player.proj_predict_land_t * 7 <= 0.900 ? 0.900 - 7 * Event Player.proj_predict_land_t : 7 * Event Player.proj_predict_land_t,
Abort When False);
disabled Wait(0.064, Abort When False);
Wait(0.900 - 7 * Event Player.proj_predict_land_t, Abort When False);
Loop If Condition Is True;
disabled Loop If Condition Is True;
}
}
rule("Bap: bomb origin")
{
event
{
Subroutine;
BombOrigin;
}
actions
{
Event Player.proj_p0_hidden = Eye Position(Event Player);
Event Player.proj_dir_raw_hidden = Facing Direction Of(Event Player);
Event Player.proj_dir_hidden = Vertical Facing Angle Of(Event Player) < -89 ? Up : (Vertical Facing Angle Of(Event Player)
> 89 ? Down : Normalize(Facing Direction Of(Event Player) + 0.007 * Up));
}
}
rule("Bap: bomb trajectory")
{
event
{
Subroutine;
BombArc;
}
actions
{
Event Player.proj_p0 = Event Player.proj_p0_hidden;
Event Player.proj_dir = Event Player.proj_dir_hidden;
Event Player.proj_p1 = Event Player.proj_p0 + 0.500 * 60 * 7 * Event Player.proj_dir;
Event Player.proj_p2 = Event Player.proj_p0 + 60 * 7 * Event Player.proj_dir + 0.500 * 7 * 7 * -20.100 * Up;
Event Player.proj_apex_t = -1 * Y Component Of(Event Player.proj_dir) * 60 / -20.100 / 7;
For Player Variable(Event Player, ray_cast_t, 0, 1, 0.004);
Event Player.ray_cast_start = Evaluate Once((1 - Event Player.ray_cast_t) * (1 - Event Player.ray_cast_t))
* Event Player.proj_p0 + Evaluate Once(2 * (1 - Event Player.ray_cast_t) * Event Player.ray_cast_t)
* Event Player.proj_p1 + Evaluate Once(Event Player.ray_cast_t * Event Player.ray_cast_t) * Event Player.proj_p2;
If(Y Component Of(Event Player.ray_cast_start) < Global.map_deathplane_y);
Break;
End;
Event Player.ray_cast_end = Evaluate Once((0.996 - Event Player.ray_cast_t) * (0.996 - Event Player.ray_cast_t))
* Event Player.proj_p0 + Evaluate Once(2 * (0.996 - Event Player.ray_cast_t) * (Event Player.ray_cast_t + 0.004))
* Event Player.proj_p1 + Evaluate Once((Event Player.ray_cast_t + 0.004) * (Event Player.ray_cast_t + 0.004))
* Event Player.proj_p2;
Event Player.ray_cast_hit_pos = Ray Cast Hit Position(Event Player.ray_cast_start, Event Player.ray_cast_end, Null, Event Player,
True);
If(Ray Cast Hit Player(Event Player.ray_cast_start, Event Player.ray_cast_end, All Players(All Teams), Event Player, True)
disabled If(Ray Cast Hit Player(Event Player.ray_cast_start, Event Player.ray_cast_end, All Players(All Teams), Event Player, True)
== True);
Damage(Ray Cast Hit Player(Event Player.ray_cast_start, Event Player.ray_cast_end, All Players(All Teams), Event Player, True),
Event Player, 20);
Play Effect(All Players(All Teams), Bad Pickup Effect, Color(Orange), Ray Cast Hit Player(Event Player.ray_cast_start,
Event Player.ray_cast_end, All Players(All Teams), Event Player, True), 2);
End;
disabled Damage(Ray Cast Hit Player(Event Player.ray_cast_start, Event Player.ray_cast_end, All Players(All Teams), Event Player, True),
Event Player, Event Player.AmpBomb == False ? 20 : 40);
disabled Play Effect(All Players(All Teams), Bad Pickup Effect, Color(Orange), Ray Cast Hit Player(Event Player.ray_cast_start,
Event Player.ray_cast_end, All Players(All Teams), Event Player, True), 2);
disabled Start Rule(BombCollision, Do Nothing);
disabled End;
"hit something"
If(Event Player.ray_cast_hit_pos != Event Player.ray_cast_end);
Break;
End;
End;
"adjustment term"
Event Player.proj_predict_land_t = Event Player.ray_cast_t + 0.004 * (Distance Between(Event Player.ray_cast_start,
Event Player.ray_cast_hit_pos) / Distance Between(Event Player.ray_cast_start, Event Player.ray_cast_end));
Event Player.proj_predict_land_pos = Event Player.ray_cast_hit_pos;
Wait(0.064, Ignore Condition);
}
}
disabled rule("Bap: bomb collision")
{
event
{
Subroutine;
BombCollision;
}
actions
{
Wait(Event Player.ray_cast_t, Abort When False);
disabled Wait(Distance Between(Event Player, Ray Cast Hit Player(Event Player.ray_cast_start, Event Player.ray_cast_end, All Players(
All Teams), Event Player, True)) / 60, Abort When False);
Damage(Ray Cast Hit Player(Event Player.ray_cast_start, Event Player.ray_cast_end, All Players(All Teams), Event Player, True),
Event Player, Event Player.AmpBomb == False ? 20 : 40);
Play Effect(All Players(All Teams), Bad Pickup Effect, Color(Orange), Ray Cast Hit Player(Event Player.ray_cast_start,
Event Player.ray_cast_end, All Players(All Teams), Event Player, True), 2);
}
}
rule("Bap: bomb recoil")
{
event
{
Subroutine;
BombRecoil;
}
actions
{
disabled If(Is Using Ultimate(Event Player) == False);
Set Facing(Event Player, Vector(X Component Of(Facing Direction Of(Event Player)), Y Component Of(Facing Direction Of(
Event Player)) + 0.010 * Random Integer(1, 7), Z Component Of(Facing Direction Of(Event Player))), To World);
Event Player)) + 0.015 * Random Integer(1, 7), Z Component Of(Facing Direction Of(Event Player))), To World);
disabled Event Player.AmmoReload = 3;
disabled Else;
disabled Event Player.AmmoReload = 6;
disabled End;
disabled If(Ammo(Event Player, 0) >= Max Ammo(Event Player, 0) - Event Player.AmmoReload && Ammo(Event Player, 0) < 36);
disabled Set Ammo(Event Player, 0, 36);
disabled Else If(Ammo(Event Player, 0) < Max Ammo(Event Player, 0) - Event Player.AmmoReload);
disabled Set Ammo(Event Player, 0, Ammo(Event Player, 0) + Event Player.AmmoReload);
disabled End;
disabled Wait(0.900, Ignore Condition);
disabled Loop If Condition Is True;
}
}
rule("Bap: bomb knockback")
{
event
{
Player Dealt Damage;
All;
Baptiste;
}
conditions
{
Event Ability != Button(Primary Fire);
Event Ability != Button(Melee);
disabled Event Damage == (20 || 40);
}
actions
{
disabled Wait(0.016, Ignore Condition);
Apply Impulse(Victim, Direction Towards(Event Player.proj_predict_land_pos, Victim), 3 - Distance Between(
Event Player.proj_predict_land_pos, Victim), To World, Incorporate Contrary Motion);
Set Environment Credit Player(Victim, Event Player);
}
}
rule("Bap: track amplification (pending)")
{
event
{
Ongoing - Each Player;
All;
Baptiste;
}
conditions
{
Is Using Ultimate(Event Player) == False;
}
actions
{
Event Player.AmpBomb = False;
}
}
rule("Bap: can't score in immortality field")
{
event
{
Player Dealt Final Blow;
All;
Baptiste;
}
conditions
{
Has Status(Event Player, Unkillable) == True;
}
actions
{
Set Player Score(Event Player, Score Of(Event Player) - 1);
}
}
rule("Brg: help interface")
{
event
{
Ongoing - Each Player;
All;
Brigitte;
}
conditions
{
Is Button Held(Event Player, Button(Interact)) == True;
}
actions
{
Create HUD Text(Event Player, Custom String("Inspire"), Custom String("Healing slightly reduced"), Null, Left, 0,
Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help0 = Last Text ID;
Create HUD Text(Event Player, Custom String("Rocket Flail"), Custom String("No change"), Null, Left, 1, Event Player.ColorCode,
Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help1 = Last Text ID;
Create HUD Text(Event Player, Custom String("Barrier Shield"), Custom String("Health reduced"), Null, Left, 2,
Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help2 = Last Text ID;
Create HUD Text(Event Player, Custom String("Shield Bash"), Custom String("No change"), Null, Left, 3, Event Player.ColorCode,
Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help3 = Last Text ID;
Create HUD Text(Event Player, Custom String("Whip Shot"), Custom String("Cooldown increased; pulls while Rush Pack is active"),
Null, Left, 4, Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help4 = Last Text ID;
Create HUD Text(Event Player, Custom String("Rush Pack"), Custom String("Gain a short burst of speed"), Null, Left, 5,
Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help5 = Last Text ID;
Create HUD Text(Event Player, Custom String("Rally"), Custom String("No change"), Null, Left, 6, Event Player.ColorCode, Color(
White), Color(White), Visible To and String, Default Visibility);
Event Player.Help6 = Last Text ID;
Wait Until(Is Button Held(Event Player, Button(Interact)) == False, 99999);
Destroy HUD Text(Event Player.Help0);
Destroy HUD Text(Event Player.Help1);
Destroy HUD Text(Event Player.Help2);
Destroy HUD Text(Event Player.Help3);
Destroy HUD Text(Event Player.Help4);
Destroy HUD Text(Event Player.Help5);
Destroy HUD Text(Event Player.Help6);
}
}
rule("Brg: extra armor")
{
event
{
Ongoing - Each Player;
All;
Brigitte;
}
conditions
{
disabled Has Spawned(Event Player) == True;
Is Dead(Event Player) == False;
Is Alive(Event Player) == True;
}
actions
{
Add Health Pool To Player(Event Player, Health, 10, True, True);
Event Player.BrgExtraHealth = Last Created Health Pool;
Add Health Pool To Player(Event Player, Armor, 70, True, True);
Event Player.BrgExtraArmor = Last Created Health Pool;
Wait Until(Is Dead(Event Player), 99999);
Remove Health Pool From Player(Event Player.BrgExtraHealth);
Remove Health Pool From Player(Event Player.BrgExtraArmor);
}
}
rule("Brg: speed boost from repair pack")
{
event
{
Ongoing - Each Player;
All;
Brigitte;
}
conditions
{
Is Button Held(Event Player, Button(Ability 2)) == True;
"Repair pack has charge"
Ability Charge(Event Player, Button(Ability 2)) >= 1;
Has Status(Event Player, Hacked) == False;
Has Status(Event Player, Asleep) == False;
Has Status(Event Player, Stunned) == False;
Has Status(Event Player, Rooted) == False;
}
actions
{
Play Effect(All Players(All Teams), Soldier: 76 Sprint Start Sound, Color(White), Event Player, 60);
Create Effect(All Players(All Teams), Torbjörn Overloading Effect, Color(Yellow), Event Player, 20,
Visible To Position and Radius);
Event Player.RushOverload = Last Created Entity;
Set Move Speed(Event Player, 150);
Event Player.WhipPull = True;
Set Ability Charge(Event Player, Button(Ability 2), Ability Charge(Event Player, Button(Ability 2)) - 1);
Wait(1.500, Ignore Condition);
Destroy Effect(Event Player.RushOverload);
Set Move Speed(Event Player, 100);
Event Player.WhipPull = False;
}
}
rule("Brg: pull with whip shot")
{
event
{
Player Dealt Damage;
All;
Brigitte;
}
conditions
{
Event Ability == Button(Ability 1);
Event Player.WhipPull == True;
}
actions
{
Apply Impulse(Victim, Direction Towards(Position Of(Victim), Position Of(Event Player)), 13 + 2 * Altitude Of(Victim), To World,
disabled Apply Impulse(Victim, Direction Towards(Position Of(Victim), Position Of(Event Player)), 13 + 2 * Altitude Of(Victim), To World,
Cancel Contrary Motion);
disabled Wait(1, Ignore Condition);
disabled Event Player.WhipPull = False;
Apply Impulse(Victim, Direction Towards(Position Of(Victim), Position Of(Event Player)), 17, To World, Cancel Contrary Motion);
}
}
rule("Brg: knockback resist during ult")
{
event
{
Ongoing - Each Player;
All;
Brigitte;
}
conditions
{
Is Using Ultimate(Event Player) == True;
}
actions
{
Set Knockback Received(Event Player, 25);
Wait Until(Is Using Ultimate(Event Player) == False, 10);
Set Knockback Received(Event Player, 100);
}
}
rule("Brg: status resist during ult")
{
event
{
Ongoing - Each Player;
All;
Brigitte;
}
conditions
{
Is Using Ultimate(Event Player) == True;
(Has Status(Event Player, Hacked) || Has Status(Event Player, Asleep)) == True;
}
actions
{
Wait(3, Abort When False);
Clear Status(Event Player, Hacked);
Clear Status(Event Player, Asleep);
}
}
rule("Lco: help interface")
{
event
{
Ongoing - Each Player;
All;
Lúcio;
}
conditions
{
Is Button Held(Event Player, Button(Interact)) == True;
}
actions
{
Create HUD Text(Event Player, Custom String("Wall Ride"), Custom String("No change"), Null, Left, 0, Event Player.ColorCode, Color(
White), Color(White), Visible To and String, Default Visibility);
Event Player.Help0 = Last Text ID;
Create HUD Text(Event Player, Custom String("Sonic Amplifier"), Custom String("Projectile speed increased"), Null, Left, 1,
Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help1 = Last Text ID;
Create HUD Text(Event Player, Custom String("Soundwave"), Custom String("No change"), Null, Left, 2, Event Player.ColorCode, Color(
White), Color(White), Visible To and String, Default Visibility);
Event Player.Help2 = Last Text ID;
Create HUD Text(Event Player, Custom String("Crossfade"), Custom String("Effects increase over time while avoiding damage"), Null,
Left, 3, Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help3 = Last Text ID;
Create HUD Text(Event Player, Custom String("Amp It Up"), Custom String("No change"), Null, Left, 4, Event Player.ColorCode, Color(
White), Color(White), Visible To and String, Default Visibility);
Event Player.Help4 = Last Text ID;
Create HUD Text(Event Player, Custom String("Sound Barrier"), Custom String("Knocks back nearby enemies"), Null, Left, 5,
Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help5 = Last Text ID;
Wait Until(Is Button Held(Event Player, Button(Interact)) == False, 99999);
Destroy HUD Text(Event Player.Help0);
Destroy HUD Text(Event Player.Help1);
Destroy HUD Text(Event Player.Help2);
Destroy HUD Text(Event Player.Help3);
Destroy HUD Text(Event Player.Help4);
Destroy HUD Text(Event Player.Help5);
}
}
rule("Lco: normal speed to start")
{
event
{
Ongoing - Each Player;
All;
Lúcio;
}
conditions
{
Has Spawned(Event Player) == True;
}
actions
{
Event Player.CFMoveSpeed = 100;
Event Player.CFHealModReg = 0;
disabled Set Max Health(Event Player, 75);
}
}
rule("Lco: remove heal over time & bonus speed on damage")
{
event
{
Player Took Damage;
All;
Lúcio;
}
actions
{
Event Player.CFMoveSpeed = 100;
Set Move Speed(Event Player, 100);
If(Event Player.HumilityCheck == True);
Stop All Healing Modifications;
Start Healing Modification(Event Player, Event Player, 80, Receivers Healers and Healing Percent);
Event Player.HHealing = Last Healing Modification ID;
Else;
Stop All Healing Modifications;
End;
}
}
rule("Lco: bonus healing after avoiding damage")
{
event
{
Ongoing - Each Player;
All;
Lúcio;
}
conditions
{
Health(Event Player) < Max Health(Event Player);
Is Using Ability 1(Event Player) == False;
}
actions
{
Wait(1.500, Ignore Condition);
Start Healing Modification(Event Player, Event Player, 160, Receivers Healers and Healing Percent);
Event Player.CFHealMod[Event Player.CFHealModReg] = Last Healing Modification ID;
Event Player.CFHealModReg += 1;
Loop If Condition Is True;
If(Event Player.HumilityCheck == True);
Stop All Healing Modifications;
Start Healing Modification(Event Player, Event Player, 75, Receivers Healers and Healing Percent);
Event Player.HHealing = Last Healing Modification ID;
Else;
Stop All Healing Modifications;
End;
}
}
rule("Lco: bonus speed after avoiding damage")
{
event
{
Ongoing - Each Player;
All;
Lúcio;
}
conditions
{
Is Using Ability 1(Event Player) == True;
}
actions
{
disabled Event Player.AmmoReload = 100;
Wait(1.500, Ignore Condition);
Event Player.CFMoveSpeed += 12;
Set Move Speed(Event Player, Event Player.CFMoveSpeed);
Abort If(Event Player.CFMoveSpeed >= 160);
Loop If Condition Is True;
Event Player.CFMoveSpeed = 100;
Set Move Speed(Event Player, Event Player.CFMoveSpeed);
}
}
rule("Lco: lose bonuses on death")
{
event
{
Player Died;
All;
Lúcio;
}
conditions
{
disabled Has Spawned(Event Player) == True;
}
actions
{
Event Player.CFMoveSpeed = 100;
Set Move Speed(Event Player, Event Player.CFMoveSpeed);
disabled Stop All Heal Over Time(Event Player);
Stop All Healing Modifications;
}
}
rule("Lco: SB damage")
{
event
{
Ongoing - Each Player;
All;
Lúcio;
}
conditions
{
Is Using Ultimate(Event Player) == True;
}
actions
{
Wait Until(Altitude Of(Event Player) == 0 && Max Health(Event Player) > 300, 8);
Damage(Filtered Array(Players Within Radius(Position Of(Event Player), 12, All Teams, Surfaces And Enemy Barriers),
Current Array Element != Event Player), Event Player, 1.499);
}
}
rule("Lco: SB knockback")
{
event
{
Player Dealt Damage;
All;
Lúcio;
}
conditions
{
Is Using Ultimate(Event Player) == True;
Event Damage <= 3;
}
actions
{
Apply Impulse(Victim, Direction Towards(Position Of(Event Player), Position Of(Victim) + Vector(0, 1, 0)), 21 - Distance Between(
Position Of(Event Player), Position Of(Victim)), To World, Cancel Contrary Motion);
Set Environment Credit Player(Victim, Event Player);
}
}
rule("Mrc: help interface")
{
event
{
Ongoing - Each Player;
All;
Mercy;
}
conditions
{
Is Button Held(Event Player, Button(Interact)) == True;
}
actions
{
Create HUD Text(Event Player, Custom String("Regeneration"), Custom String("Healing reduced"), Null, Left, 0,
Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help0 = Last Text ID;
Create HUD Text(Event Player, Custom String("Angelic Descent"), Custom String("No change"), Null, Left, 1, Event Player.ColorCode,
Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help1 = Last Text ID;
Create HUD Text(Event Player, Custom String("Caduceus Staff"), Custom String("Restores Regeneration to full while drawn"), Null,
Left, 2, Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help2 = Last Text ID;
Create HUD Text(Event Player, Custom String("Caduceus Blaster"), Custom String("Damage increased"), Null, Left, 3,
Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help3 = Last Text ID;
Create HUD Text(Event Player, Custom String("Ascending Angel"), Custom String("Launch self in facing direction"), Null, Left, 4,
Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
Create HUD Text(Event Player, Custom String("Ascending Angel"), Custom String(
"Launch self in facing direction; change toggle with \"Group Up\""), Null, Left, 4, Event Player.ColorCode, Color(White),
Color(White), Visible To and String, Default Visibility);
Event Player.Help4 = Last Text ID;
Create HUD Text(Event Player, Custom String("Resurrection"), Custom String("Can target self"), Null, Left, 5,
Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help5 = Last Text ID;
Create HUD Text(Event Player, Custom String("Valkyrie"), Custom String("Increases Ascending Angel speed"), Null, Left, 6,
Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help6 = Last Text ID;
Wait Until(Is Button Held(Event Player, Button(Interact)) == False, 99999);
Destroy HUD Text(Event Player.Help0);
Destroy HUD Text(Event Player.Help1);
Destroy HUD Text(Event Player.Help2);
Destroy HUD Text(Event Player.Help3);
Destroy HUD Text(Event Player.Help4);
Destroy HUD Text(Event Player.Help5);
Destroy HUD Text(Event Player.Help6);
}
}
rule("Mrc: launch in facing direction with guardian angel")
disabled rule("Mrc: launch in facing direction with guardian angel")
{
event
{
Ongoing - Each Player;
All;
Mercy;
}
conditions
{
Is Button Held(Event Player, Button(Ability 1)) == True;
Ability Cooldown(Event Player, Button(Ability 1)) == False;
Has Status(Event Player, Hacked) == False;
Has Status(Event Player, Asleep) == False;
Has Status(Event Player, Stunned) == False;
Has Status(Event Player, Rooted) == False;
}
actions
{
Play Effect(All Players(All Teams), Ring Explosion, Color(White), Event Player, 6);
Play Effect(All Players(All Teams), Buff Impact Sound, Color(White), Event Player, 50);
Set Ability Cooldown(Event Player, Button(Ability 1), 7.500);
Event Player.AngelStart = Position Of(Event Player);
Create Beam Effect(All Players(All Teams), Good Beam, Event Player.AngelStart, Event Player, Color(White),
Visible To Position and Radius);
Event Player.AngelTrace = Last Created Entity;
Apply Impulse(Event Player, Facing Direction Of(Event Player), Is Using Ultimate(Event Player) == False ? 17 : 30, To World,
Cancel Contrary Motion);
Set Gravity(Event Player, 50);
Wait(0.250, Ignore Condition);
Wait Until(Speed Of(Event Player) <= 5.900, Is Using Ultimate(Event Player) == False ? 1 : 1.750);
Destroy Effect(Event Player.AngelTrace);
Set Gravity(Event Player, 100);
disabled Wait(0.016, Ignore Condition);
disabled If(Is Using Ultimate(Event Player) == False);
disabled Set Move Speed(Event Player, 310);
disabled Else;
disabled Set Move Speed(Event Player, 454.545);
disabled End;
disabled Start Forcing Throttle(Event Player, 1, 1, 0, 0, 0, 0);
disabled Wait Until(Is Button Held(Event Player, Button(Jump)) == True, 1);
disabled Stop Forcing Throttle(Event Player);
disabled Set Move Speed(Event Player, 100);
disabled Apply Impulse(Event Player, Facing Direction Of(Event Player) + Vector(0, 10, 0), 23.500, To Player, Cancel Contrary Motion);
}
}
disabled rule("Mrc: Caduceus Blaster damage boost")
{
event
{
Ongoing - Each Player;
All;
Mercy;
}
conditions
{
Is Button Held(Event Player, Button(Secondary Fire)) == True;
Is Button Held(Event Player, Button(Primary Fire)) == False;
Weapon(Event Player) == 2;
}
actions
{
Event Player.CaduceusDrain = False;
Stop Damage Modification(Event Player.CaduceusDamage);
Start Damage Modification(All Players(All Teams), Event Player, 130, Receivers Damagers and Damage Percent);
Event Player.CaduceusDamage = Last Damage Modification ID;
Press Button(Event Player, Button(Primary Fire));
Wait(0.200, Abort When False);
Loop If Condition Is True;
Stop Damage Modification(Event Player.CaduceusDamage);
Event Player.CaduceusDrain = True;
}
}
disabled rule("Mrc: Caduceus Blaster heal")
{
event
{
Player Dealt Damage;
All;
Mercy;
}
conditions
{
Event Ability == Button(Primary Fire);
Event Player.CaduceusDrain == True;
}
actions
{
Heal(Event Player, Null, Event Was Critical Hit == True ? 4 : 2);
}
}
rule("Mrc: change ascending angel toggle")
{
event
{
Ongoing - Each Player;
All;
Mercy;
}
conditions
{
Is Communicating(Event Player, Group Up) == True;
}
actions
{
If(Event Player.AngelToggle == True);
Event Player.AngelToggle = False;
Small Message(Event Player, Custom String("Toggle OFF"));
Else;
Event Player.AngelToggle = True;
Small Message(Event Player, Custom String("Toggle ON"));
End;
Wait(0.250, Ignore Condition);
}
}
rule("Mrc: ascending angel via set pos")
{
event
{
Ongoing - Each Player;
All;
Mercy;
}
conditions
{
Is Button Held(Event Player, Button(Ability 1)) == True;
Ability Cooldown(Event Player, Button(Ability 1)) == False;
Has Status(Event Player, Hacked) == False;
Has Status(Event Player, Asleep) == False;
Has Status(Event Player, Stunned) == False;
Has Status(Event Player, Rooted) == False;
}
actions
{
disabled Event Player.AngelDir = Facing Direction Of(Event Player);
Event Player.AngelStart = Position Of(Event Player);
Event Player.AngelFlight = Eye Position(Event Player);
Event Player.AngelTarget = Ray Cast Hit Position(Event Player.AngelFlight, Facing Direction Of(Event Player) * (Is Using Ultimate(
Event Player) == False ? 14.500 : 29) + Eye Position(Event Player), All Players(All Teams), All Players(All Teams), False);
Play Effect(All Players(All Teams), Ring Explosion, Color(White), Event Player, 5);
Play Effect(All Players(All Teams), Buff Impact Sound, Color(White), Event Player, 50);
Wait(0.016, Ignore Condition);
Create Beam Effect(All Players(All Teams), Good Beam, Event Player.AngelStart, Event Player, Color(White),
Visible To Position and Radius);
Event Player.AngelTrace = Last Created Entity;
Chase Player Variable At Rate(Event Player, AngelFlight, Event Player.AngelTarget, Is Using Ultimate(Event Player)
== False ? 10 : 20, None);
Start Forcing Player Position(Event Player, Event Player.AngelFlight, True);
disabled Wait Until(Event Player.AngelFlight == Event Player.AngelTarget || Altitude Of(Event Player) >= 25 || Is Button Held(Event Player,
Button(Jump)) == True, Is Using Ultimate(Event Player) == False ? 1.765 : 2.400);
If(Event Player.AngelToggle == True);
disabled Wait Until(Event Player.AngelFlight == Event Player.AngelTarget || Is Button Held(Event Player, Button(Jump)) == True,
Is Using Ultimate(Event Player) == False ? 1.334 : 2.400);
Wait Until(Event Player.AngelFlight == Event Player.AngelTarget || Is Button Held(Event Player, Button(Jump)) == True, 1.450);
Else;
disabled Wait Until(Event Player.AngelFlight == Event Player.AngelTarget || Is Button Held(Event Player, Button(Jump))
== True || Is Button Held(Event Player, Button(Ability 1)) == False, Is Using Ultimate(Event Player) == False ? 1.334 : 2.400);
Wait Until(Event Player.AngelFlight == Event Player.AngelTarget || Is Button Held(Event Player, Button(Jump))
== True || Is Button Held(Event Player, Button(Ability 1)) == False, 1.450);
End;
Stop Chasing Player Variable(Event Player, AngelFlight);
Stop Forcing Player Position(Event Player);
Destroy Effect(Event Player.AngelTrace);
Set Ability Cooldown(Event Player, Button(Ability 1), 7.500);
}
}
rule("Mrc: self-resurrection")
{
event
{
Ongoing - Each Player;
All;
Mercy;
}
conditions
{
Is Button Held(Event Player, Button(Ability 2)) == True;
Ability Cooldown(Event Player, Button(Ability 2)) == False;
Is Dead(Event Player) == True;
}
actions
{
Resurrect(Event Player);
Create Effect(All Players(All Teams), Cloud, Color(White), Event Player, 4, Visible To Position and Radius);
Event Player.RezCloud = Last Created Entity;
Set Ability Cooldown(Event Player, Button(Ability 2), 30);
Set Status(Event Player, Null, Invincible, 1);
Set Status(Event Player, Null, Rooted, 1);
Set Primary Fire Enabled(Event Player, False);
Set Aim Speed(Event Player, 0);
Wait(1, Ignore Condition);
Play Effect(All Players(All Teams), Good Explosion, Color(White), Event Player, 10);
Set Primary Fire Enabled(Event Player, True);
Set Aim Speed(Event Player, 100);
Destroy Effect(Event Player.RezCloud);
}
}
rule("Mrc: less healing when blaster drawn")
{
event
{
Ongoing - Each Player;
All;
Mercy;
}
conditions
{
Weapon(Event Player) == 2;
disabled Is Using Ultimate(Event Player) == False;
}
actions
{
disabled Wait(0.800, Abort When False);
Set Healing Dealt(Event Player, 40);
}
}
rule("Mrc: normal healing when staff drawn")
{
event
{
Ongoing - Each Player;
All;
Mercy;
}
conditions
{
Weapon(Event Player) == 1;
}
actions
{
disabled If(Is Using Ultimate(Event Player) == False);
Wait(2, Abort When False);
disabled End;
Set Healing Dealt(Event Player, 100);
}
}
rule("Mor: help interface")
{
event
{
Ongoing - Each Player;
All;
Moira;
}
conditions
{
Is Button Held(Event Player, Button(Interact)) == True;
}
actions
{
Create HUD Text(Event Player, Custom String("Biotic Grasp"), Custom String("Primary fire heals self; secondary fire does not"),
Null, Left, 0, Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help0 = Last Text ID;
Create HUD Text(Event Player, Custom String("Fade"), Custom String("Cooldown increased"), Null, Left, 1, Event Player.ColorCode,
Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help1 = Last Text ID;
Create HUD Text(Event Player, Custom String("Biotic Orb"), Custom String("Projectile speed increased; healing reduced"), Null,
Left, 2, Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help2 = Last Text ID;
Create HUD Text(Event Player, Custom String("Biotic Orb"), Custom String(
"Projectile speed increased; reveals enemies through walls"), Null, Left, 3, Event Player.ColorCode, Color(White), Color(
White), Visible To and String, Default Visibility);
Event Player.Help3 = Last Text ID;
Create HUD Text(Event Player, Custom String("Coalescence"), Custom String("No change"), Null, Left, 4, Event Player.ColorCode,
Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help4 = Last Text ID;
Wait Until(Is Button Held(Event Player, Button(Interact)) == False, 99999);
Destroy HUD Text(Event Player.Help0);
Destroy HUD Text(Event Player.Help1);
Destroy HUD Text(Event Player.Help2);
Destroy HUD Text(Event Player.Help3);
Destroy HUD Text(Event Player.Help4);
}
}
rule("Moira: start with no juice")
{
event
{
Ongoing - Each Player;
All;
Moira;
}
conditions
{
disabled Has Spawned(Event Player) == True;
Is Alive(Event Player) == True;
}
actions
{
Set Ability Resource(Event Player, Button(Primary Fire), 0);
}
}
rule("Mor: recover from primary fire")
{
event
{
Ongoing - Each Player;
All;
Moira;
}
conditions
{
Is Firing Primary(Event Player) == True;
Ability Resource(Event Player, Button(Primary Fire)) > 0;
}
actions
{
Set Healing Dealt(Event Player, 100);
Start Heal Over Time(Event Player, Event Player, 20, 35);
Wait Until(Is Firing Primary(Event Player) == False, 10);
Wait(0.250, Ignore Condition);
Stop All Heal Over Time(Event Player);
}
}
rule("Mor: self-heal ult charge")
{
event
{
Player Dealt Healing;
All;
Moira;
}
conditions
{
disabled Is Firing Primary(Event Player) == True;
Healee == Event Player;
Event Ability != Button(Ability 2);
Event Ability != Button(Ultimate);
Health(Event Player) < Max Health(Event Player);
Event Ability != Button(Secondary Fire);
}
actions
{
Event Player.HealingStart = Health(Event Player);
Wait(0.486, Abort When False);
Set Ultimate Charge(Event Player, Ultimate Charge Percent(Event Player) + 1);
Loop If Condition Is True;
Wait Until(Heal Over Time Count == 0, 10);
Abort;
disabled Set Ultimate Charge(Event Player, Ultimate Charge Percent(Event Player) + Event Healing / 18);
disabled Wait(0.500, Ignore Condition);
}
}
rule("Mor: disable self-heal from secondary fire")
{
event
{
Ongoing - Each Player;
All;
Moira;
}
conditions
{
Is Firing Secondary(Event Player) == True;
}
actions
{
Set Healing Dealt(Event Player, 1);
Wait Until(Is Firing Secondary(Event Player) == False, 99999);
Set Healing Dealt(Event Player, 100);
}
}
rule("Mor: normal healing from biotic orb")
{
event
{
Player Received Healing;
All;
Moira;
}
conditions
{
Event Healing == Button(Ability 2);
Event Player == Healee;
Is Firing Secondary(Event Player) == True;
}
actions
{
Set Healing Dealt(Event Player, 76.470);
Wait Until(Event Healing != Button(Ability 2) || Health(Event Player) == Max Health(Event Player), 2.769);
If(Is Firing Secondary(Event Player) == True);
Set Healing Dealt(Event Player, 1);
Else;
Set Healing Dealt(Event Player, 100);
End;
}
}
rule("Mor: normalize ult charge from biotic orb healing")
{
event
{
Player Dealt Healing;
All;
Moira;
}
conditions
{
Event Ability == Button(Ability 2);
Is Firing Secondary(Event Player) == True;
}
actions
{
Wait(0.900, Abort When False);
Set Ultimate Charge(Event Player, Ultimate Charge Percent(Event Player) + 1);
Loop If Condition Is True;
}
}
disabled rule("Mor: refill biotic energy on kill")
{
event
{
Player Dealt Final Blow;
All;
Moira;
}
conditions
{
Event Ability == Button(Secondary Fire);
}
actions
{
Set Ability Resource(Event Player, Button(Primary Fire), 100);
}
}
rule("Mor: disallow primary fire when health full")
{
event
{
Ongoing - Each Player;
All;
Moira;
}
conditions
{
Health(Event Player) == Max Health(Event Player);
}
actions
{
Set Primary Fire Enabled(Event Player, False);
Wait Until(Health(Event Player) < Max Health(Event Player), 99999);
Set Primary Fire Enabled(Event Player, True);
}
}
rule("Mor: end orbs on Fade")
{
event
{
Ongoing - Each Player;
All;
Zenyatta;
}
conditions
{
Hero Of(Event Player.OrbVictim) == Hero(Moira);
Is Using Ability 1(Event Player.OrbVictim) == True;
}
actions
{
Call Subroutine(ClearOrbs);
}
}
rule("Mor: enemies visible when damaging with orb")
{
event
{
Player Dealt Damage;
All;
Moira;
}
conditions
{
Event Ability == Button(Ability 2);
Event Player == Attacker;
}
actions
{
Start Forcing Player Outlines(Victim, Attacker, True, Victim.ColorCode, Occluded);
Wait Until(Event Ability != Button(Ability 2), 1);
Stop Forcing Player Outlines(Victim, Event Player);
}
}
rule("Smb: help interface")
{
event
{
Ongoing - Each Player;
All;
Sombra;
}
conditions
{
Is Button Held(Event Player, Button(Interact)) == True;
}
actions
{
Create HUD Text(Event Player, Custom String("Opportunist"), Custom String("No change"), Null, Left, 0, Event Player.ColorCode,
Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help0 = Last Text ID;
Create HUD Text(Event Player, Custom String("Machine Pistol"), Custom String("Clip size reduced"), Null, Left, 1,
Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help1 = Last Text ID;
Create HUD Text(Event Player, Custom String("Hack"), Custom String("Gain ult charge when healing from hacked health packs"), Null,
Left, 2, Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help2 = Last Text ID;
Create HUD Text(Event Player, Custom String("Stealth"), Custom String("No change"), Null, Left, 3, Event Player.ColorCode, Color(
White), Color(White), Visible To and String, Default Visibility);
Event Player.Help3 = Last Text ID;
Create HUD Text(Event Player, Custom String("Translocator"), Custom String("No change"), Null, Left, 4, Event Player.ColorCode,
Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help4 = Last Text ID;
Create HUD Text(Event Player, Custom String("EMP"), Custom String("Gain damage bonus while active; reloads ammo"), Null, Left, 5,
Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help5 = Last Text ID;
Wait Until(Is Button Held(Event Player, Button(Interact)) == False, 99999);
Destroy HUD Text(Event Player.Help0);
Destroy HUD Text(Event Player.Help1);
Destroy HUD Text(Event Player.Help2);
Destroy HUD Text(Event Player.Help3);
Destroy HUD Text(Event Player.Help4);
Destroy HUD Text(Event Player.Help5);
}
}
rule("Smb: ult damage boost & reload")
{
event
{
Ongoing - Each Player;
All;
Sombra;
}
conditions
{
Is Using Ultimate(Event Player) == True;
}
actions
{
disabled Stop Damage Modification(Event Player.SmbDmg);
Set Ammo(Event Player, 0, 30);
Start Damage Modification(All Players(All Teams), Event Player, 150, Receivers Damagers and Damage Percent);
Create Effect(All Players(All Teams), Good Aura, Color(Rose), Event Player, 2, Visible To Position and Radius);
Event Player.SmbUltDmg = Last Damage Modification ID;
Event Player.EMPGlow = Last Created Entity;
Wait Until(Is Using Ultimate(Event Player) == False, 5);
Stop Damage Modification(Event Player.SmbUltDmg);
Destroy Effect(Event Player.EMPGlow);
disabled Start Damage Modification(All Players(All Teams), Event Player, 87.500, Receivers Damagers and Damage Percent);
disabled Event Player.SmbDmg = Last Damage Modification ID;
}
}
rule("Smb: ult charge from health pack healing")
{
event
{
Player Dealt Healing;
All;
Sombra;
}
conditions
{
Healer == Event Player;
}
actions
{
Set Ultimate Charge(Event Player, Ultimate Charge Percent(Event Player) + Event Healing / 14);
}
}
rule("Smb: end Zen orbs with hack")
{
event
{
Ongoing - Each Player;
All;
Zenyatta;
}
conditions
{
Has Status(Event Player, Hacked) == True;
}
actions
{
Disallow Button(Event Player, Button(Ability 1));
Disallow Button(Event Player, Button(Ability 2));
Call Subroutine(ClearOrbs);
Wait Until(Has Status(Event Player, Hacked) == False, 10);
Allow Button(Event Player, Button(Ability 1));
Allow Button(Event Player, Button(Ability 2));
}
}
disabled rule("Sym: help interface")
{
event
{
Ongoing - Each Player;
All;
Symmetra;
}
conditions
{
Is Button Held(Event Player, Button(Interact)) == True;
}
actions
{
Create HUD Text(Event Player, Custom String("Photon Projector"), Custom String(""), Null, Left, 0, Event Player.ColorCode, Color(
White), Color(White), Visible To and String, Default Visibility);
Event Player.Help0 = Last Text ID;
Create HUD Text(Event Player, Custom String("Sentry Turret"), Custom String(""), Null, Left, 1, Event Player.ColorCode, Color(
White), Color(White), Visible To and String, Default Visibility);
Event Player.Help1 = Last Text ID;
Create HUD Text(Event Player, Custom String("Teleporter"), Custom String(""), Null, Left, 2, Event Player.ColorCode, Color(White),
Color(White), Visible To and String, Default Visibility);
Event Player.Help2 = Last Text ID;
Create HUD Text(Event Player, Custom String("Photon Barrier"), Custom String(""), Null, Left, 3, Event Player.ColorCode, Color(
White), Color(White), Visible To and String, Default Visibility);
Event Player.Help3 = Last Text ID;
Wait Until(Is Button Held(Event Player, Button(Interact)) == False, 99999);
Destroy HUD Text(Event Player.Help0);
Destroy HUD Text(Event Player.Help1);
Destroy HUD Text(Event Player.Help2);
Destroy HUD Text(Event Player.Help3);
}
}
rule("Sym: recover turrets on death")
{
event
{
Player Died;
All;
Symmetra;
}
actions
{
Set Ability Charge(Event Player, Button(Ability 1), 3);
}
}
rule("Sym: extra health, sort of")
{
event
{
Ongoing - Each Player;
All;
Symmetra;
}
conditions
{
Has Spawned(Event Player) == True;
}
actions
{
Add Health Pool To Player(Event Player, Health, 60, True, True);
Event Player.SymExtraHealth = Last Created Health Pool;
Add Health Pool To Player(Event Player, Shields, 50, True, True);
Event Player.SymExtraShields = Last Created Health Pool;
Wait Until(Is Dead(Event Player), 99999);
Remove Health Pool From Player(Event Player.SymExtraHealth);
Remove Health Pool From Player(Event Player.SymExtraShields);
}
}
disabled rule("Sym: secondary fire can't charge")
{
event
{
Ongoing - Each Player;
All;
Symmetra;
}
conditions
{
Is Button Held(Event Player, Button(Secondary Fire)) == True;
}
actions
{
Press Button(Event Player, Button(Secondary Fire));
Wait(0.250, Ignore Condition);
Loop If Condition Is True;
}
}
rule("Zen: help interface")
{
event
{
Ongoing - Each Player;
All;
Zenyatta;
}
conditions
{
Is Button Held(Event Player, Button(Interact)) == True;
}
actions
{
Create HUD Text(Event Player, Custom String("Orb of Destruction"), Custom String("Damage reduced; gain temporary shields on hit"),
Null, Left, 0, Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help0 = Last Text ID;
Create HUD Text(Event Player, Custom String("Orb of Humility"), Custom String("Reduce damage & healing of victim"), Null, Left, 1,
Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help1 = Last Text ID;
Create HUD Text(Event Player, Custom String("Orb of Discord"), Custom String("Mutually exclusive with Orb of Humility"), Null,
Left, 2, Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help2 = Last Text ID;
Create HUD Text(Event Player, Custom String("Transcendence"), Custom String("Damage nearby enemies"), Null, Left, 3,
Event Player.ColorCode, Color(White), Color(White), Visible To and String, Default Visibility);
Event Player.Help3 = Last Text ID;
Wait Until(Is Button Held(Event Player, Button(Interact)) == False, 99999);
Destroy HUD Text(Event Player.Help0);
Destroy HUD Text(Event Player.Help1);
Destroy HUD Text(Event Player.Help2);
Destroy HUD Text(Event Player.Help3);
}
}
rule("Zen: gain shields")
{
event
{
Player Dealt Damage;
All;
Zenyatta;
}
conditions
{
Event Player == Attacker;
}
actions
{
If(Event Was Critical Hit == True);
Event Player.TempShields += 20;
Else If(Event Ability == Button(Primary Fire) || Event Ability == Button(Secondary Fire) || Event Ability == Button(Melee));
Event Player.TempShields += 10;
End;
}
}
rule("Zen: shields decay")
{
event
{
Ongoing - Each Player;
All;
Zenyatta;
}
conditions
{
Event Player.TempShields > 0;
}
actions
{
Remove Health Pool From Player(Event Player.ShieldPool);
Add Health Pool To Player(Event Player, Shields, Event Player.TempShields, False, False);
Event Player.ShieldPool = Last Created Health Pool;
Wait(0.125, Ignore Condition);
Event Player.TempShields -= 1;
Loop If Condition Is True;
disabled Event Player.TempShields -= 1;
Remove Health Pool From Player(Event Player.ShieldPool);
}
}
rule("Zen: lose extra shields on death")
{
event
{
Player Died;
All;
Zenyatta;
}
actions
{
Event Player.TempShields = 0;
Remove All Health Pools From Player(Event Player);
}
}
rule("Zen: track orb target")
{
event
{
Ongoing - Each Player;
All;
Zenyatta;
}
conditions
{
Is True For Any(Filtered Array(All Players(All Teams), Hero Of(Current Array Element) != Hero(Sombra) || Is Using Ability 1(
Current Array Element) == False), Is In View Angle(Event Player, Player Closest To Reticle(Event Player, All Teams), 15))
!= Null;
disabled Is In View Angle(Event Player, Player Closest To Reticle(Event Player, All Teams), 15) == True;
Is Alive(Player Closest To Reticle(Event Player, All Teams)) == True;
Is Alive(Event Player) == True;
Is In Line of Sight(Event Player, Player Closest To Reticle(Event Player, All Teams), Enemy Barriers Block LOS) == True;
Distance Between(Event Player, Player Closest To Reticle(Event Player, All Teams)) <= 40;
}
actions
{
Event Player.OrbTargetValid = True;
Event Player.OrbHalo = Sorted Array(Filtered Array(Players in View Angle(Event Player, All Teams, 15), Hero Of(
Current Array Element) != Hero(Sombra) || Is Using Ability 1(Current Array Element) == False), Distance Between(
Current Array Element, Event Player))[0];
disabled Event Player.OrbHalo = Sorted Array(Filtered Array(Players in View Angle(Event Player, All Teams, 15), Hero Of(Event Player)
!= Hero(Sombra) || Is Using Ability 1(Current Array Element) == False), Distance Between(Current Array Element, Event Player));
disabled Event Player.OrbHalo = Player Closest To Reticle(Event Player, Filtered Array(All Living Players(All Teams), Hero Of(
Current Array Element) != Hero(Sombra) || Is Using Ability 1(Current Array Element) == False));
disabled Event Player.OrbHalo = Position Of(Player Closest To Reticle(Event Player, Filtered Array(All Living Players(All Teams), Hero Of(
Current Array Element) != Hero(Sombra) || Is Using Ability 1(Current Array Element) == False)));
disabled Event Player.OrbHalo = Position Of(Player Closest To Reticle(Event Player, All Teams));
Play Effect(Event Player, Ring Explosion, Color(Red), Event Player.OrbHalo + Vector(0, 2, 0), 2);
Wait(0.750, Ignore Condition);
Loop If Condition Is True;
Event Player.OrbTargetValid = False;
Abort If Condition Is False;
}
}
rule("Zen: clear orbs")
{
event
{
Subroutine;
ClearOrbs;
}
actions
{
If(Event Player.OrbVictim.HumilityCheck == True);
Big Message(Event Player.OrbVictim, Custom String("Orb of Humility returned"));
Else If(Event Player.OrbVictim.DiscordCheck == True);
Big Message(Event Player.OrbVictim, Custom String("Orb of Discord returned"));
End;
Stop Damage Modification(Event Player.OrbVictim.DDamage);
Stop Damage Modification(Event Player.OrbVictim.HDamage);
Stop Healing Modification(Event Player.OrbVictim.HHealing);
Destroy Icon(Event Player.OrbVictim.HumilityIcon);
Destroy Effect(Event Player.OrbVictim.HumilityVis);
Destroy Effect(Event Player.OrbVictim.DiscordIcon);
disabled Destroy Icon(Event Player.OrbVictim.DiscordIcon);
disabled Destroy Icon(Event Player.DiscordIcon);
Destroy Icon(Event Player.HumilityIcon);
Destroy Effect(Event Player.DiscordIcon);
Event Player.OrbVictim = Null;
All Players(All Teams).HumilityCheck = False;
All Players(All Teams).DiscordCheck = False;
Wait(0.100, Ignore Condition);
}
}
rule("Zen: ersatz OoD")
{
event
{
Ongoing - Each Player;
All;
Zenyatta;
}
conditions
{
Event Player.OrbTargetValid == True;
Is Button Held(Event Player, Button(Ability 2)) == True;
Is Reloading(Event Player) == False;
Is Button Held(Event Player, Button(Primary Fire)) == False;
Is Button Held(Event Player, Button(Secondary Fire)) == False;
Has Status(Event Player, Hacked) == False;
Has Status(Event Player, Asleep) == False;
Has Status(Event Player, Stunned) == False;
}
actions
{
Call Subroutine(ClearOrbs);
Abort If Condition Is False;
Event Player.OrbVictim = Event Player.OrbHalo;
disabled Event Player.OrbVictim = Player Closest To Reticle(Event Player, Filtered Array(All Living Players(All Teams), Hero Of(
Current Array Element) != Hero(Sombra) || Is Using Ability 1(Current Array Element) == False));
disabled Event Player.OrbVictim = Player Closest To Reticle(Event Player, All Teams);
Create Effect(All Players(All Teams), Zenyatta Orb of Discord Target Effect, Event Player.OrbVictim.ColorCode,
Event Player.OrbVictim, 1, Visible To Position and Radius);
Event Player.DiscordIcon = Last Created Entity;
disabled Create Icon(Event Player, Position Of(Event Player.OrbVictim) + Vector(0, 2, 0), Skull, Visible To and Position,
Event Player.OrbVictim.ColorCode, True);
Start Damage Modification(Event Player.OrbVictim, All Players(All Teams), 125, Receivers Damagers and Damage Percent);
Event Player.OrbVictim.DDamage = Last Damage Modification ID;
Play Effect(Event Player.OrbVictim, Debuff Impact Sound, Color(Red), Event Player, 80);
Play Effect(Event Player, Debuff Impact Sound, Color(Red), Event Player, 50);
Big Message(Event Player.OrbVictim, Custom String("Orb of Discord gained from {0}", Event Player));
Event Player.OrbVictim.DiscordCheck = True;
}
}
rule("Zen: Orb of Humility")
{
event
{
Ongoing - Each Player;
All;
Zenyatta;
}
conditions
{
Event Player.OrbTargetValid == True;
Is Button Held(Event Player, Button(Ability 1)) == True;
Is Reloading(Event Player) == False;
Is Button Held(Event Player, Button(Primary Fire)) == False;
Is Button Held(Event Player, Button(Secondary Fire)) == False;
Has Status(Event Player, Hacked) == False;
Has Status(Event Player, Asleep) == False;
Has Status(Event Player, Stunned) == False;
}
actions
{
Call Subroutine(ClearOrbs);
Abort If Condition Is False;
Event Player.OrbVictim = Event Player.OrbHalo;
disabled Event Player.OrbVictim = Player Closest To Reticle(Event Player, Filtered Array(All Living Players(All Teams), Hero Of(
Current Array Element) != Hero(Sombra) || Is Using Ability 1(Current Array Element) == False));
disabled Event Player.OrbVictim = Player Closest To Reticle(Event Player, All Teams);
Create Icon(Event Player, Position Of(Event Player.OrbVictim) + Vector(0, 2, 0), Moon, Visible To and Position,
Event Player.OrbVictim.ColorCode, True);
Event Player.HumilityIcon = Last Created Entity;
Start Damage Modification(All Players(All Teams), Event Player.OrbVictim, 75, Receivers Damagers and Damage Percent);
Event Player.OrbVictim.HDamage = Last Damage Modification ID;
Start Healing Modification(Event Player.OrbVictim, All Players(All Teams), 75, Receivers Healers and Healing Percent);
Event Player.OrbVictim.HHealing = Last Healing Modification ID;
Event Player.OrbVictim.HumilityCheck = True;
Play Effect(Event Player.OrbVictim, Debuff Impact Sound, Color(Red), Event Player, 80);
Create Effect(Event Player.OrbVictim, Cloud, Color(Red), Event Player.OrbVictim, 5, Visible To Position and Radius);
Event Player.OrbVictim.HumilityVis = Last Created Entity;
Play Effect(Event Player, Ring Explosion Sound, Color(Red), Event Player, 50);
Big Message(Event Player.OrbVictim, Custom String("Orb of Humility gained from {0}", Event Player));
}
}
rule("Zen: end orbs if line of sight lost")
{
event
{
Ongoing - Each Player;
All;
Zenyatta;
}
conditions
{
Is In Line of Sight(Event Player, Event Player.OrbVictim, Barriers Do Not Block LOS) == False;
}
actions
{
Wait Until(Is Button Held(Event Player, Button(Ability 1)) == True || Is Button Held(Event Player, Button(Ability 2)) == True, 3);
If(Is In Line of Sight(Event Player, Event Player.OrbVictim, Barriers Do Not Block LOS) == False);
Play Effect(Event Player, Buff Impact Sound, Color(White), Event Player, 5);
If(Event Player.OrbVictim.HumilityCheck == True);
Big Message(Event Player, Custom String("Orb of Humility returned"));
Else If(Event Player.OrbVictim.DiscordCheck == True);
Big Message(Event Player, Custom String("Orb of Discord returned"));
End;
Call Subroutine(ClearOrbs);
Else;
Abort;
End;
}
}
rule("Zen: ends orb on target death")
{
event
{
Ongoing - Each Player;
All;
Zenyatta;
}
conditions
{
Is Dead(Event Player.OrbVictim) == True;
}
actions
{
Call Subroutine(ClearOrbs);
}
}
rule("Zen: end orbs on death")
{
event
{
Player Died;
All;
Zenyatta;
}
conditions
{
Event Player.OrbVictim != Null;
}
actions
{
Call Subroutine(ClearOrbs);
}
}
rule("Zen: OoD visibility to others")
{
event
{
Ongoing - Each Player;
All;
Zenyatta;
}
conditions
{
Event Player.OrbVictim.DiscordCheck == True;
}
actions
{
Destroy Icon(Event Player.OrbVictim.HumilityIcon);
disabled Destroy Icon(Event Player.OrbVictim.DiscordIcon);
Destroy Effect(Event Player.OrbVictim.DiscordIcon);
disabled Create Icon(Filtered Array(All Living Players(All Teams), Is In Line of Sight(Event Player.OrbVictim, Local Player,
Barriers Do Not Block LOS) == True && Local Player != Hero(Zenyatta)), Position Of(Event Player.OrbVictim) + Vector(0, 2, 0),
Skull, Visible To and Position, Event Player.OrbVictim.ColorCode, False);
Create Effect(Filtered Array(All Living Players(All Teams), Is In Line of Sight(Event Player.OrbVictim, Local Player,
Barriers Do Not Block LOS) == True && Hero Of(Current Array Element) != Hero(Zenyatta)), Zenyatta Orb of Discord Target Effect,
Color(Red), Event Player.OrbVictim, 1, Visible To Position and Radius);
Event Player.OrbVictim.DiscordIcon = Last Created Entity;
Wait Until(Event Player.OrbVictim.DiscordCheck == False || Is In Line of Sight(Event Player.OrbVictim, Local Player,
Barriers Do Not Block LOS) == False, 99999);
}
}
rule("Zen: OoH visibility to others")
{
event
{
Ongoing - Each Player;
All;
Zenyatta;
}
conditions
{
Event Player.OrbVictim.HumilityCheck == True;
}
actions
{
Destroy Icon(Event Player.OrbVictim.HumilityIcon);
disabled Destroy Icon(Event Player.OrbVictim.DiscordIcon);
Destroy Effect(Event Player.OrbVictim.DiscordIcon);
Create Icon(Filtered Array(All Living Players(All Teams), Is In Line of Sight(Event Player.OrbVictim, Local Player,
Barriers Do Not Block LOS) == True && Local Player != Hero(Zenyatta)), Position Of(Event Player.OrbVictim) + Vector(0, 2, 0),
Moon, Visible To and Position, Event Player.OrbVictim.ColorCode, False);
Event Player.OrbVictim.HumilityIcon = Last Created Entity;
Wait Until(Event Player.OrbVictim.HumilityCheck == False || Is In Line of Sight(Event Player.OrbVictim, Local Player,
Barriers Do Not Block LOS) == False, 99999);
Loop If Condition Is True;
}
}
rule("Zen: orb victim health bar HUD")
{
event
{
Ongoing - Each Player;
All;
Zenyatta;
}
conditions
{
Event Player.OrbVictim != Null;
}
actions
{
disabled Create Progress Bar HUD Text(Event Player, 100 * Normalized Health(Event Player.OrbVictim), Custom String(
"/n /n /n /n /n /n {0} {1} - {2}", Event Player.OrbVictim.DiscordCheck == True ? Ability Icon String(Hero(Zenyatta),
Button(Ability 2)) : Ability Icon String(Hero(Zenyatta), Button(Ability 1)), Hero Of(Event Player.OrbVictim),
Event Player.OrbVictim), Right, 20, Health Of Type(Event Player.OrbVictim, Armor) > 0 ? Color(Yellow) : (Health Of Type(
Event Player.OrbVictim, Shields) > 0 ? Color(Turquoise) : Color(White)), Event Player.OrbVictim.ColorCode,
Visible To Values and Color, Default Visibility);
Create Progress Bar HUD Text(Event Player, 100 * Normalized Health(Event Player.OrbVictim), Custom String("{0} {1} - {2}",
Event Player.OrbVictim.DiscordCheck == True ? Ability Icon String(Hero(Zenyatta), Button(Ability 2)) : Icon String(Moon),
Hero Of(Event Player.OrbVictim), Event Player.OrbVictim), Right, 20, Health Of Type(Event Player.OrbVictim, Armor) > 0 ? Color(
Yellow) : (Health Of Type(Event Player.OrbVictim, Shields) > 0 ? Color(Turquoise) : Color(White)),
Event Player.OrbVictim.ColorCode, Visible To Values and Color, Default Visibility);
Event Player.OrbHUD = Last Text ID;
Wait Until(Event Player.OrbVictim == Null, 99999);
Destroy Progress Bar HUD Text(Event Player.OrbHUD);
}
}
rule("Zen: AoE damage with ult")
{
event
{
Ongoing - Each Player;
All;
Zenyatta;
}
conditions
{
Is Using Ultimate(Event Player) == True;
}
actions
{
Start Damage Over Time(Filtered Array(Players Within Radius(Event Player, 10, All Teams, Surfaces And Enemy Barriers),
Current Array Element != Event Player), Event Player, 0.266, 20);
Set Status(Filtered Array(Players Within Radius(Event Player, 10, All Teams, Surfaces And Enemy Barriers),
Current Array Element != Event Player), Null, Burning, 0.266);
Wait(0.250, Ignore Condition);
Loop If Condition Is True;
disabled Stop Damage Over Time(Filtered Array(All Players(All Teams), Array Contains(Players Within Radius(Event Player, 10, All Teams,
Surfaces And Enemy Barriers), Current Array Element) == False).TranscendenceDmg);
}
}
rule("Zen: track ult damage")
{
event
{
Player Dealt Damage;
All;
Zenyatta;
}
conditions
{
Is Using Ultimate(Event Player) == True;
}
actions
{
Victim.TranscendenceDmg = Last Damage Over Time ID;
}
}
rule("Zen: prevent orb placement while primary firing")
{
event
{
Ongoing - Each Player;
All;
Zenyatta;
}
conditions
{
Is Button Held(Event Player, Button(Primary Fire)) == True;
}
actions
{
Disallow Button(Event Player, Button(Ability 1));
Disallow Button(Event Player, Button(Ability 2));
Wait Until(Is Button Held(Event Player, Button(Primary Fire)) == False, 99999);
Wait(0.400, Ignore Condition);
Allow Button(Event Player, Button(Ability 1));
Allow Button(Event Player, Button(Ability 2));
}
}
rule("Zen: prevent orb placement while secondary firing")
{
event
{
Ongoing - Each Player;
All;
Zenyatta;
}
conditions
{
Is Button Held(Event Player, Button(Secondary Fire)) == True;
}
actions
{
Disallow Button(Event Player, Button(Ability 1));
Disallow Button(Event Player, Button(Ability 2));
Wait Until(Is Button Held(Event Player, Button(Secondary Fire)) == False, 99999);
Wait(0.500, Ignore Condition);
Allow Button(Event Player, Button(Ability 1));
Allow Button(Event Player, Button(Ability 2));
}
}
disabled rule("Smb: decreased damage")
{
event
{
Ongoing - Each Player;
All;
Sombra;
}
conditions
{
Has Spawned(Event Player) == True;
}
actions
{
Start Damage Modification(All Players(All Teams), Event Player, 87.500, Receivers Damagers and Damage Percent);
Event Player.SmbDmg = Last Damage Modification ID;
Wait Until(Hero Of(Event Player) != Hero(Sombra), 99999);
Stop Damage Modification(Event Player.SmbDmg);
}
}