Created
July 24, 2020 00:36
-
-
Save nathan130200/fbd571b1b008ecf4ec51db3a316cebcd to your computer and use it in GitHub Desktop.
Dummy Bots: Mercy Helper
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
settings | |
{ | |
lobby | |
{ | |
Map Rotation: Paused | |
Max Team 1 Players: 3 | |
Max Team 2 Players: 3 | |
Return To Lobby: Never | |
Swap Teams After Match: No | |
} | |
modes | |
{ | |
Escort | |
{ | |
Payload Speed Modifier: 174% | |
} | |
disabled Skirmish | |
{ | |
Limit Valid Control Points: Third | |
} | |
General | |
{ | |
Game Mode Start: Immediately | |
Health Pack Respawn Time Scalar: 10% | |
Hero Limit: Off | |
Kill Cam: Off | |
Spawn Health Packs: Enabled | |
} | |
} | |
} | |
variables | |
{ | |
player: | |
0: mercyHelperBot | |
1: mercyHelperOwner | |
2: mercyHelperHudText | |
} | |
rule("Create mercy helper hud text.") | |
{ | |
event | |
{ | |
Player Joined Match; | |
All; | |
All; | |
} | |
conditions | |
{ | |
Is Dummy Bot(Event Player) == False; | |
} | |
actions | |
{ | |
Create HUD Text(Filtered Array(Array(Event Player), Entity Exists(Event Player.mercyHelperBot) && Is Alive( | |
Event Player.mercyHelperBot)), Null, Custom String("{0} Health: {1}%", Hero Icon String(Hero(Mercy)), Round To Integer( | |
100 * Normalized Health(Event Player.mercyHelperBot), Up)), Null, Right, -1, Yellow, White, White, Visible To and String, | |
Visible Always); | |
Event Player.mercyHelperHudText = Last Text ID; | |
} | |
} | |
rule("Create mercy helper.") | |
{ | |
event | |
{ | |
Ongoing - Each Player; | |
All; | |
All; | |
} | |
conditions | |
{ | |
Is Dummy Bot(Event Player) == False; | |
Entity Exists(Event Player.mercyHelperBot) == False; | |
} | |
actions | |
{ | |
Create Dummy Bot(Hero(Mercy), Team Of(Event Player), Slot Of(Event Player) + 3, Nearest Walkable Position(Event Player), Vector(0, | |
0, 0)); | |
Event Player.mercyHelperBot = Players In Slot(Slot Of(Event Player) + 3, Team Of(Event Player)); | |
Players In Slot(Slot Of(Event Player) + 3, Team Of(Event Player)).mercyHelperOwner = Event Player; | |
} | |
} | |
rule("Destroy mercy helper.") | |
{ | |
event | |
{ | |
Player Left Match; | |
All; | |
All; | |
} | |
conditions | |
{ | |
Is Dummy Bot(Event Player) == False; | |
} | |
actions | |
{ | |
Destroy Dummy Bot(Team Of(Event Player), Slot Of(Event Player.mercyHelperBot)); | |
Destroy HUD Text(Event Player.mercyHelperHudText); | |
} | |
} | |
rule("Mercy start follow player: initial.") | |
{ | |
event | |
{ | |
Ongoing - Each Player; | |
All; | |
Mercy; | |
} | |
conditions | |
{ | |
Is Dummy Bot(Event Player) == True; | |
Entity Exists(Event Player.mercyHelperOwner) == True; | |
} | |
actions | |
{ | |
Start Throttle In Direction(Event Player, Vector Towards(Event Player, World Vector Of(Vector(0, 0, -1), | |
Event Player.mercyHelperOwner, Rotation And Translation)), 1, To World, Replace existing throttle, Direction and Magnitude); | |
Start Facing(Event Player, Vector Towards(Event Player, Event Player.mercyHelperOwner), 500, To World, Direction and Turn Rate); | |
} | |
} | |
rule("Mercy start follow player: far.") | |
{ | |
event | |
{ | |
Ongoing - Each Player; | |
All; | |
Mercy; | |
} | |
conditions | |
{ | |
Is Dummy Bot(Event Player) == True; | |
Entity Exists(Event Player.mercyHelperOwner) == True; | |
Distance Between(Event Player, Event Player.mercyHelperOwner) > 2; | |
} | |
actions | |
{ | |
Start Throttle In Direction(Event Player, Vector Towards(Event Player, World Vector Of(Vector(0, 0, -1), | |
Event Player.mercyHelperOwner, Rotation And Translation)), 1, To World, Replace existing throttle, Direction and Magnitude); | |
disabled Start Facing(Event Player, Vector Towards(Event Player, Event Player.mercyHelperOwner), 125, To World, Direction and Turn Rate); | |
} | |
} | |
rule("Mercy stop follow player: near.") | |
{ | |
event | |
{ | |
Ongoing - Each Player; | |
All; | |
Mercy; | |
} | |
conditions | |
{ | |
Is Dummy Bot(Event Player) == True; | |
Entity Exists(Event Player.mercyHelperOwner) == True; | |
Distance Between(Event Player, Event Player.mercyHelperOwner) <= 2; | |
} | |
actions | |
{ | |
Stop Throttle In Direction(Event Player); | |
disabled Stop Facing(Event Player); | |
} | |
} | |
rule("Mercy start healing.") | |
{ | |
event | |
{ | |
Ongoing - Each Player; | |
All; | |
Mercy; | |
} | |
conditions | |
{ | |
Is Dummy Bot(Event Player) == True; | |
Entity Exists(Event Player.mercyHelperOwner) == True; | |
Normalized Health(Event Player.mercyHelperOwner) <= 0.450; | |
} | |
actions | |
{ | |
Set Weapon(Event Player, 1); | |
Start Holding Button(Event Player, Primary Fire); | |
Wait(1, Ignore Condition); | |
If(Normalized Health(Event Player) < 1); | |
Loop; | |
Else; | |
Loop If Condition Is True; | |
End; | |
Wait(1.500, Ignore Condition); | |
Stop Holding Button(Event Player, Primary Fire); | |
} | |
} | |
rule("Mercy start boosting.") | |
{ | |
event | |
{ | |
Ongoing - Each Player; | |
All; | |
Mercy; | |
} | |
conditions | |
{ | |
Is Dummy Bot(Event Player) == True; | |
Entity Exists(Event Player.mercyHelperOwner) == True; | |
Normalized Health(Event Player.mercyHelperOwner) > 0.500; | |
Is Button Held(Event Player, Primary Fire) == False; | |
} | |
actions | |
{ | |
Set Weapon(Event Player, 1); | |
Start Holding Button(Event Player, Secondary Fire); | |
} | |
} | |
rule("Mercy start flying to player.") | |
{ | |
event | |
{ | |
Ongoing - Each Player; | |
All; | |
Mercy; | |
} | |
conditions | |
{ | |
Is Dummy Bot(Event Player) == True; | |
Entity Exists(Event Player.mercyHelperOwner) == True; | |
Distance Between(Event Player, Event Player.mercyHelperOwner) > 2; | |
} | |
actions | |
{ | |
Wait(1.500, Abort When False); | |
Press Button(Event Player, Ability 1); | |
Wait(0.250, Ignore Condition); | |
Loop If Condition Is True; | |
} | |
} | |
rule("Mercy ressurect player.") | |
{ | |
event | |
{ | |
Ongoing - Each Player; | |
All; | |
Mercy; | |
} | |
conditions | |
{ | |
Is Dummy Bot(Event Player) == True; | |
Entity Exists(Event Player.mercyHelperOwner) == True; | |
Is Dead(Event Player.mercyHelperOwner) == True; | |
Ability Cooldown(Event Player, Button(Ability 2)) <= 0; | |
} | |
actions | |
{ | |
Press Button(Event Player, Ability 2); | |
Wait(1, Ignore Condition); | |
Loop If Condition Is True; | |
} | |
} | |
rule("Mercy teleport to player.") | |
{ | |
event | |
{ | |
Ongoing - Each Player; | |
All; | |
Mercy; | |
} | |
conditions | |
{ | |
Is Dummy Bot(Event Player) == True; | |
Entity Exists(Event Player.mercyHelperOwner) == True; | |
Distance Between(Event Player, Event Player.mercyHelperOwner) >= 5; | |
} | |
actions | |
{ | |
Wait(2.500, Abort When False); | |
Teleport(Event Player, Event Player.mercyHelperOwner); | |
Wait(0.500, Ignore Condition); | |
Loop If Condition Is True; | |
} | |
} | |
rule("Sync mercy ultimate.") | |
{ | |
event | |
{ | |
Ongoing - Each Player; | |
All; | |
Mercy; | |
} | |
conditions | |
{ | |
Is Dummy Bot(Event Player) == True; | |
Entity Exists(Event Player.mercyHelperOwner) == True; | |
Is Alive(Event Player) == True; | |
} | |
actions | |
{ | |
Set Ultimate Charge(Event Player.mercyHelperOwner, Ultimate Charge Percent(Event Player)); | |
Wait(0.500, Ignore Condition); | |
Loop If Condition Is True; | |
} | |
} | |
rule("Extend respawn time.") | |
{ | |
event | |
{ | |
Player Died; | |
All; | |
All; | |
} | |
conditions | |
{ | |
Is Dummy Bot(Victim) == False; | |
} | |
actions | |
{ | |
Wait(0.250, Ignore Condition); | |
Set Respawn Max Time(Victim, Ability Cooldown(Victim.mercyHelperBot, Button(Ability 2)) <= 0 ? 15 : 10); | |
} | |
} | |
rule("Consume ultimate ability.") | |
{ | |
event | |
{ | |
Ongoing - Each Player; | |
All; | |
All; | |
} | |
conditions | |
{ | |
Is Dummy Bot(Event Player) == False; | |
Is Using Ultimate(Event Player) == False; | |
} | |
actions | |
{ | |
Wait(0.250, Ignore Condition); | |
Set Ultimate Charge(Event Player.mercyHelperBot, 0); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment