Skip to content

Instantly share code, notes, and snippets.

@Andygmb
Created May 26, 2020 05:27
Show Gist options
  • Save Andygmb/33f51fb5511023a2a659aa72d9c2c21b to your computer and use it in GitHub Desktop.
Save Andygmb/33f51fb5511023a2a659aa72d9c2c21b to your computer and use it in GitHub Desktop.
variables
{
global:
0: boss_upper
1: boss_lower
2: boss_phase
3: for_count
4: begin
5: cutscene
6: cam_pos
7: cam_lookat
8: dialogue_header
9: dialogue_text_box
10: grand_skip
11: another_buffer_bc_im_lazy
12: neurotoxin_radius
13: neurotoxin_pos_array
14: init_buffer
15: random_message
16: block_piece_dead
17: special_attack_effects
18: neurotoxin_max_radius
19: special_attack
20: special_attack_setup
21: laser_length
22: laser_pitch
23: laser_rotation
24: laser_bastion
25: laser_1
26: laser_2
27: laser_3
28: laser_4
29: laser_random
30: hacking_bastion
31: health_HUDs
32: main_unit_health_HUD
33: random_fields
34: electric_field_1
35: electric_field_2
36: blinking
37: electrified
38: electric_field_volume
39: random_beam_array_1
40: begin_phase_4
41: for_count_2
42: previous_message
43: message_ready
44: count_of_players
45: phase_4_spin
46: using_field
47: for_count_3
48: core_temperature
49: core_temp_danger
50: core_effects
51: heals
52: end
53: ball_length
54: pulse
55: length_accel
56: end_volume
57: smoke_pos
58: friendly_note
59: ready_assemble
60: gravving_bastion
61: friendly_note_2
62: ready_assemble_tick
63: im_lazy
64: neurotoxin_warning
player:
0: target
1: strafe_check
2: random
3: block_piece
4: effect
5: skip_dialogue
6: space_toggle
7: random_2
8: revive_max
9: ball_effect_1
10: ball_effect_2
11: ball_effect_3
12: ball_effect_array
13: ball_rotate
14: health_HUD
15: revive
16: is_dead
17: actually_dying_timer
18: for_count
19: crouch_toggle
20: grand_skip_cutscene
21: unit_type
22: special_attack_effects_player
23: projectile_speed
24: weapon_spread
25: corpse
26: ball_rotate_accel
27: temp_pos
28: minion_spawn
29: strafe_checker
30: moira_angle
31: pos_misc
32: health
33: max_health
34: pop_up_text
35: pop_up_id
36: in_toxins
}
subroutines
{
0: dialogue_skipper
1: cutscene_1_part2
2: cutscene_1_part3
3: cancel_momentum
4: neurotoxin
5: special_attack_reset
6: lasers
7: hack
8: antigrav
9: tower_health_huds
10: electric_field
11: neurotoxin_2
13: ai_throttle
14: ai_bad_aim
15: ai_projectile_aim
16: antigrav_2
17: random_message
18: destroy_global_spec_attack_effec
19: destroy_plyr_specc_attacc_effecc
20: remove_xtra_bots
21: init_xtra_bots
22: hammy_bomb
23: create_smoke_sound
24: add_effect_to
25: create_bastions
26: create_toxin_stuff
27: damage_notice
}
rule("no time limit")
{
event
{
Ongoing - Global;
}
conditions
{
Is Game In Progress == True;
}
actions
{
Pause Match Time;
}
}
rule("boss init")
{
event
{
Ongoing - Global;
}
conditions
{
Global.ready_assemble_tick == True;
}
actions
{
Heal(All Players(Team 1), All Players(Team 1), 10000);
Destroy In-World Text(Global.friendly_note_2);
Destroy In-World Text(Global.friendly_note);
Global.init_buffer = 1;
Create Dummy Bot(Hero(Bastion), Team 2, 0, Vector(0, 0, 0), Vector(0, -3, -1));
Set Status(Last Created Entity, Null, Unkillable, 9999);
Set Status(Last Created Entity, Null, Invincible, 9999);
Global.boss_upper = Last Created Entity;
For Global Variable(for_count, 1, 6, 1);
Call Subroutine(create_bastions);
End;
Create Effect(All Players(All Teams), Good Aura, White, Global.boss_upper, 1.200, Visible To Position and Radius);
Global.boss_upper.effect = Last Created Entity;
Wait(0.250, Ignore Condition);
Global.cutscene = True;
Create HUD Text(Filtered Array(All Players(All Teams), Global.cutscene), Null, Null, Custom String(
" \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n"), Left,
1, White, White, White, Visible To and String, Default Visibility);
Create HUD Text(Filtered Array(All Players(All Teams), Global.cutscene), Null, Null, Custom String(
" \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n"), Right, 0, White, White, White,
Visible To and String, Default Visibility);
Create HUD Text(Filtered Array(All Players(All Teams), Global.dialogue_text_box != 0 && True), Null, Null, Custom String(
"ready to proceed: {0}, {1}, {2}                                             ", Append To Array(Custom String("----"),
Players In Slot(0, Team 1))[Players In Slot(0, Team 1).skip_dialogue], Append To Array(Custom String("----"), Players In Slot(
1, Team 1))[Players In Slot(1, Team 1).skip_dialogue], Custom String("{0} and {1}", Append To Array(Custom String("----"),
Players In Slot(2, Team 1))[Players In Slot(2, Team 1).skip_dialogue], Append To Array(Custom String("----"), Players In Slot(
3, Team 1))[Players In Slot(3, Team 1).skip_dialogue])), Right, 1, White, White, Green, Visible To and String,
Default Visibility);
For Global Variable(for_count, 0, 2, 1);
Create Effect(All Players(All Teams), Beacon Sound, White, Global.boss_upper, 200, Visible To Position and Radius);
Create Effect(All Players(All Teams), Bad Aura Sound, White, Global.boss_upper, 200, Visible To Position and Radius);
End;
Chase Global Variable At Rate(laser_pitch, -8, 20, Destination and Rate);
Create HUD Text(Filtered Array(All Players(All Teams), Global.dialogue_text_box != 0 && True), Null, Null, Custom String(
"ready to skip cutscene: {0}, {1}, {2}", Append To Array(Custom String("----"), Players In Slot(0, Team 1))[Players In Slot(0,
Team 1).grand_skip_cutscene], Append To Array(Custom String("----"), Players In Slot(1, Team 1))[Players In Slot(1, Team 1)
.grand_skip_cutscene], Custom String("{0} and {1}", Append To Array(Custom String("----"), Players In Slot(2, Team 1))
[Players In Slot(2, Team 1).grand_skip_cutscene], Append To Array(Custom String("----"), Players In Slot(3, Team 1))
[Players In Slot(3, Team 1).grand_skip_cutscene])), Right, 2, White, White, Orange, Visible To and String, Default Visibility);
Create HUD Text(Filtered Array(All Players(All Teams), Global.dialogue_text_box != 0 && True), Custom String(
"Press {0} to skip the cutscene!", String("Crouch")), Null, Null, Right, 1.500, Orange, White, Orange, Visible To and String,
Default Visibility);
Global.boss_upper.weapon_spread = 20;
Create HUD Text(Filtered Array(All Players(All Teams), !Current Array Element.is_dead && Current Array Element.in_toxins),
Custom String("{1} You are in the neurotoxin! Get out! {0}", Icon String(Poison), Icon String(Warning)), Null, Null, Top,
-96.900, Green, White, White, Visible To and String, Default Visibility);
Global.neurotoxin_warning = Last Text ID;
}
}
rule("boss upper tp")
{
event
{
Ongoing - Each Player;
Team 2;
Bastion;
}
conditions
{
Event Player == Global.boss_upper;
Global.init_buffer != 3;
}
actions
{
If(Distance Between(Eye Position(Event Player), Position Of(Event Player)) > 1.600 && Global.init_buffer == 2);
Press Button(Event Player, Ability 1);
End;
If(Global.boss_phase == 0 || Global.boss_phase == 2);
Teleport(Event Player, World Vector Of(Vector(0, 1.400 + 0.600 * (Distance Between(Eye Position(Event Player), Position Of(
Event Player)) < 1.600), 0), First Of(Sorted Array(Filtered Array(Players On Hero(Hero(Bastion), Team 2), Is Alive(
Current Array Element) && Slot Of(Current Array Element) > Slot Of(Event Player)), Slot Of(Current Array Element))),
Rotation And Translation));
If(Speed Of(Event Player) > 1);
Call Subroutine(cancel_momentum);
End;
Else If(Global.boss_phase % 2 != 0);
If(Is Alive(Global.boss_lower));
If(!Global.im_lazy && (Has Status(Event Player, Knocked Down) || Has Status(Event Player, Asleep) || Has Status(Event Player,
Frozen) || Has Status(Event Player, Rooted) || Has Status(Event Player, Stunned)));
Teleport(Global.boss_lower, World Vector Of(Vector(0, -2.200 + Global.boss_phase, 0), Event Player, Rotation And Translation));
disabled Set Status(Global.boss_lower, Null, Stunned, 0.100);
Else;
Teleport(Event Player, World Vector Of(Vector(0, 2.200 - Global.boss_phase, 0), Global.boss_lower, Rotation And Translation));
If(Speed Of(Event Player) > 1);
Call Subroutine(cancel_momentum);
End;
End;
If(Has Status(Event Player, Hacked) && !Has Status(Global.boss_lower, Hacked));
Set Status(Global.boss_lower, Null, Hacked, 5);
disabled Else If(Has Status(Global.boss_lower, Hacked) && !Has Status(Event Player, Hacked));
disabled Set Status(Event Player, Null, Hacked, 5);
End;
End;
End;
Wait(0.030, Ignore Condition);
Loop If Condition Is True;
}
}
rule("boss lower tank phase 1")
{
event
{
Ongoing - Each Player;
Team 2;
Bastion;
}
conditions
{
Event Player == Global.boss_lower;
Is Using Ultimate(Event Player) == False;
Global.boss_phase == 1;
}
actions
{
Set Ultimate Charge(Event Player, 100);
Wait(0.100, Ignore Condition);
Press Button(Event Player, Ultimate);
Loop If Condition Is True;
}
}
rule("phase 1 boss lower init")
{
event
{
Ongoing - Each Player;
Team 2;
Bastion;
}
conditions
{
Global.boss_phase == 1;
Event Player == Global.boss_lower;
}
actions
{
Set Projectile Speed(Event Player, 40);
Event Player.projectile_speed = 24;
Call Subroutine(ai_throttle);
Set Move Speed(Event Player, 150);
Call Subroutine(ai_projectile_aim);
Set Damage Dealt(Event Player, 58.537);
While(Event Player.health_HUD != Empty Array);
Destroy In-World Text(First Of(Event Player.health_HUD));
Modify Player Variable(Event Player, health_HUD, Remove From Array By Index, 0);
End;
disabled Wait(0.100, Ignore Condition);
disabled Create In-World Text(All Players(All Teams), Custom String("{0} TANK CONFIGURATION UNIT {1}   HP: {2}      ", Hero Icon String(
Hero(Bastion)), Ability Icon String(Hero(Bastion), Button(Ultimate)), Custom String("{0}/{1}", Event Player.health,
Event Player.max_health)), World Vector Of(Vector(0, 1, 0), Event Player, Rotation And Translation), 1.500, Do Not Clip,
Visible To Position and String, Orange, Default Visibility);
disabled Modify Player Variable(Event Player, health_HUD, Append To Array, Last Text ID);
}
}
rule("boss target block piece")
{
event
{
Ongoing - Each Player;
Team 2;
All;
}
conditions
{
Event Player.block_piece != 0;
disabled (Event Player.target.is_dead || !Event Player.target) == True;
Global.boss_upper != Event Player;
(Event Player.target.is_dead || !Event Player.target || (Hero Of(Event Player.target) == Hero(Sombra) && Is Using Ability 1(
Event Player.target))) == True;
}
actions
{
Wait(0.500, Ignore Condition);
Event Player.target = First Of(Append To Array(Randomized Array(Remove From Array(Filtered Array(All Living Players(Team 1),
Has Spawned(Current Array Element) && !Current Array Element.is_dead && !(Hero Of(Current Array Element) == Hero(Sombra)
&& Is Using Ability 1(Current Array Element))), Event Player.target)), Event Player.target));
disabled Event Player.target = First Of(Append To Array(Randomized Array(Remove From Array(Filtered Array(All Living Players(Team 1),
Has Spawned(Current Array Element) && !Current Array Element.is_dead), Event Player.target)), Event Player.target));
Wait(Random Real(10, 20), Restart When True);
Loop;
}
}
rule("bast idfk change movement or smth")
{
event
{
Ongoing - Each Player;
Team 2;
All;
}
conditions
{
Has Status(Event Player, Phased Out) == False;
}
actions
{
If(Event Player.random != 1);
Event Player.random = 1;
Else;
Event Player.random = -1;
End;
Event Player.random_2 = Random Integer(1, 3);
If(Event Player.random_2 == 1 && Is On Ground(Event Player) && Throttle Of(Event Player) != Vector(0, 0, 0));
Apply Impulse(Event Player, World Vector Of(Normalize(Throttle Of(Event Player)), Event Player, Rotation) + Vector(0, 0.700, 0),
15, To World, Cancel Contrary Motion);
End;
Wait(Random Real(0.250, 3), Ignore Condition);
Loop If Condition Is True;
}
}
rule("boss motion wall hit")
{
event
{
Ongoing - Each Player;
Team 2;
All;
}
conditions
{
Distance Between(Eye Position(Event Player), Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player)
+ Normalize(World Vector Of(Throttle Of(Event Player), Event Player, Rotation)) * 5, Null, Event Player, True)) < 3;
}
actions
{
If(Event Player.random != 1);
Event Player.random = 1;
Else;
Event Player.random = -1;
End;
Wait(1, Ignore Condition);
Abort If Condition Is False;
Apply Impulse(Event Player, Direction Towards(Event Player, Vector(0, 10, 0)), 30, To World, Cancel Contrary Motion);
}
}
rule("boss lower damage transfer")
{
event
{
Player Took Damage;
Team 2;
All;
}
conditions
{
Team Of(Attacker) == Team 1;
Global.boss_phase % 2 != 0;
Event Player == Global.boss_upper;
}
actions
{
Damage(Global.boss_lower, Attacker, Event Damage);
Wait(0.250, Ignore Condition);
If(Health(Event Player) <= 4);
Damage(Global.boss_lower, Attacker, 100);
}
}
rule("boss target upper")
{
event
{
Ongoing - Each Player;
Team 2;
Bastion;
}
conditions
{
Event Player == Global.boss_upper;
disabled Event Player.target != First Of(Append To Array(Sorted Array(Remove From Array(Filtered Array(All Living Players(Team 1),
Has Spawned(Current Array Element) && !Current Array Element.is_dead), Global.boss_lower.target), Distance Between(
Event Player, Current Array Element)), Event Player.target));
disabled Event Player == Global.boss_upper;
Event Player.target != First Of(Append To Array(Sorted Array(Remove From Array(Filtered Array(All Living Players(Team 1),
Has Spawned(Current Array Element) && !Current Array Element.is_dead && !(Hero Of(Current Array Element) == Hero(Sombra)
&& Is Using Ability 1(Current Array Element))), Global.boss_lower.target), Distance Between(Event Player,
Current Array Element)), Event Player.target));
}
actions
{
Wait(0.500, Ignore Condition);
Event Player.target = First Of(Append To Array(Sorted Array(Remove From Array(Filtered Array(All Living Players(Team 1),
Has Spawned(Current Array Element) && !Current Array Element.is_dead && !(Hero Of(Current Array Element) == Hero(Sombra)
&& Is Using Ability 1(Current Array Element))), Global.boss_lower.target), Distance Between(Event Player,
Current Array Element)), Event Player.target));
disabled Event Player.target = First Of(Append To Array(Sorted Array(Remove From Array(Filtered Array(All Living Players(Team 1),
Has Spawned(Current Array Element) && !Current Array Element.is_dead) && !(Hero Of(Event Player) == Hero(Sombra)
&& Is Using Ability 1(Event Player)), Global.boss_lower.target), Distance Between(Event Player, Current Array Element)),
Event Player.target));
disabled Event Player.target = First Of(Append To Array(Sorted Array(Remove From Array(Filtered Array(All Living Players(Team 1),
Has Spawned(Current Array Element) && !Current Array Element.is_dead), Global.boss_lower.target), Distance Between(
Event Player, Current Array Element)), Event Player.target));
Loop If Condition Is True;
}
}
rule("phase 0 - block piece tp")
{
event
{
Ongoing - Each Player;
Team 2;
Bastion;
}
conditions
{
Event Player.block_piece != 0;
(Global.boss_phase == 0 || Global.boss_phase == 2) == True;
Event Player != Global.boss_upper;
Is Alive(Event Player) == True;
}
actions
{
Teleport(Event Player, World Vector Of(Vector(0, 1.100, 0), First Of(Sorted Array(Filtered Array(Players On Hero(Hero(Bastion),
Team 2), Is Alive(Current Array Element) && Slot Of(Current Array Element) > Slot Of(Event Player)), Slot Of(
Current Array Element))), Rotation And Translation));
If(Speed Of(Event Player) > 1);
Call Subroutine(cancel_momentum);
End;
Wait(0.030, Ignore Condition);
Loop If Condition Is True;
}
}
rule("bast init")
{
event
{
Ongoing - Each Player;
Team 2;
Bastion;
}
conditions
{
Global.begin == True;
}
actions
{
Disable Built-In Game Mode Respawning(Event Player);
If(Event Player.block_piece != 0);
Event Player.weapon_spread = 20;
Call Subroutine(ai_bad_aim);
End;
Play Effect(All Players(All Teams), Debuff Impact Sound, Aqua, Last Created Entity, 200);
If(Global.boss_phase == 4);
Set Damage Received(Event Player, 60);
Set Max Health(Event Player, 100 / 3);
Else;
Set Damage Received(Event Player, 35);
End;
If(Global.core_temperature >= 5000);
Set Status(Event Player, Null, Burning, 9999);
Start Damage Over Time(Event Player, All Players(Team 1), 9999, (Global.core_temperature - 4333.330) * 0.030);
}
}
rule("phase 1 transit")
{
event
{
Ongoing - Global;
}
conditions
{
Count Of(Filtered Array(Players On Hero(Hero(Bastion), Team 2), Is Alive(Current Array Element))) <= 2;
Global.boss_phase == 0;
Global.begin == True;
}
actions
{
Global.im_lazy = True;
Set Max Health(Global.boss_upper, 150);
Stop Facing(Global.boss_upper);
Wait(0.100, Ignore Condition);
Heal(Global.boss_upper, Global.boss_upper, 10000);
Start Rule(special_attack_reset, Restart Rule);
If(Count Of(Filtered Array(Players On Hero(Hero(Bastion), Team 2), Is Alive(Current Array Element))) < 2);
Create Dummy Bot(Hero(Bastion), Team 2, 1, Vector(0, 0, 0), Vector(0, 0, 0));
Last Created Entity.block_piece = True;
Wait(0.080, Ignore Condition);
Set Status(Last Created Entity, Null, Stunned, 3);
End;
Heal(All Players(Team 2), Null, 10000);
Global.boss_phase = 1;
Destroy Effect(Global.boss_upper.effect);
Kill(Players On Hero(Hero(Zenyatta), Team 2), Null);
Set Status(Players On Hero(Hero(Bastion), Team 2), Null, Invincible, 3);
Global.boss_lower = Remove From Array(Filtered Array(Players On Hero(Hero(Bastion), Team 2), Is Alive(Current Array Element)),
Global.boss_upper);
Wait(3, Ignore Condition);
Create HUD Text(All Players(All Teams), Custom String("{0} TANK CONFIGURATION UNIT {1} HP: {2}", Hero Icon String(Hero(Bastion)),
Ability Icon String(Hero(Bastion), Button(Ultimate)), Custom String("{0}/{1}", Round To Integer(Global.boss_lower.health, Up),
Round To Integer(Global.boss_lower.max_health, Up))), Null, Null, Left, 2, Orange, White, White, Visible To and String,
Default Visibility);
Modify Player Variable(Global.boss_lower, health_HUD, Append To Array, Last Text ID);
Global.im_lazy = False;
Create In-World Text(All Players(All Teams), Custom String("{0} TANK CONFIGURATION UNIT {1}   HP: {2}      ", Hero Icon String(
Hero(Bastion)), Ability Icon String(Hero(Bastion), Button(Ultimate)), Custom String("{0}/{1}", Round To Integer(
Global.boss_lower.health, Up), Round To Integer(Global.boss_lower.max_health, Up))), World Vector Of(Vector(0, 1, 0),
Global.boss_lower, Rotation And Translation), 1.500, Do Not Clip, Visible To Position and String, Orange, Default Visibility);
Modify Player Variable(Global.boss_lower, health_HUD, Append To Array, Last Text ID);
Clear Status(Global.boss_upper, Invincible);
Global.boss_upper.block_piece = True;
Call Subroutine(random_message);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Append To Array(
Custom String("''ACTIVATING EMERGENCY LOCOMOTION MODULE!''"), Append To Array(Custom String(
"''ENOUGH. EXPERIENCE THE WRATH OF MY CANNON.''"), Append To Array(Custom String(
"''LET'S TURN THINGS UP A NOTCH. YOU CAN 'TANK' ME LATER.''"), Custom String(
"''PERHAPS YOU FIND ME TOO EASY TO HIT. RECONFIGURING!''"))))[Global.random_message]));
Wait(3.500, Ignore Condition);
Small Message(All Players(All Teams), Custom String("{0} {2}: {1}", Hero Icon String(Hero Of(Players In Slot(Global.random_message,
Team 1))), Append To Array(Custom String("''HOLY ****ING ****, THAT THING HAS WHEELS!?''"), Append To Array(Custom String(
"'';)''"), Append To Array(Custom String("''THAT REALLY WASN'T FUNNY. SHUT UP.''"), Custom String(
"''I ASSURE YOU, NOBODY WAS COMPLAINING...''"))))[Global.random_message], Players In Slot(Global.random_message, Team 1)));
Global.another_buffer_bc_im_lazy = False;
Global.message_ready = True;
}
}
rule("block piece shoot")
{
event
{
Ongoing - Each Player;
Team 2;
All;
}
conditions
{
Event Player.block_piece != 0;
Global.begin == True;
(Event Player != Global.boss_upper || Is Alive(Global.boss_lower)) == True;
}
actions
{
Wait(Random Real(1, 4), Abort When False);
Start Holding Button(Event Player, Primary Fire);
Wait(1, Ignore Condition);
Stop Holding Button(Event Player, Primary Fire);
Loop If Condition Is True;
Stop Holding Button(Event Player, Primary Fire);
}
}
rule("phase 1 - boss lower firing no strafe")
{
event
{
Ongoing - Each Player;
Team 2;
All;
}
conditions
{
Distance Between(Event Player.target, Event Player.strafe_check) > 1;
Global.boss_phase != 0;
Event Player.strafe_checker == True;
}
actions
{
Call Subroutine(ai_projectile_aim);
}
}
rule("phase 1 - boss strafe check update")
{
event
{
Ongoing - Each Player;
Team 2;
All;
}
conditions
{
Is Button Held(Event Player, Primary Fire) == True;
Global.boss_phase != 0;
Event Player == Global.boss_lower;
}
actions
{
Event Player.strafe_check = Position Of(Event Player.target);
Wait(1.100, Ignore Condition);
Loop If Condition Is True;
}
}
rule("phase 1 - boss start firing strafe")
{
event
{
Ongoing - Each Player;
Team 2;
All;
}
conditions
{
Distance Between(Event Player.target, Event Player.strafe_check) <= 1;
Event Player.strafe_checker == True;
Global.boss_phase != 0;
}
actions
{
Start Facing(Event Player, Direction Towards(Eye Position(Event Player), Position Of(Event Player.target) + Vector Towards(
Position Of(Event Player.target), Eye Position(Event Player.target)) * 0.700), 10000, To World, Direction and Turn Rate);
}
}
rule("phase 0/2 - bot die")
{
event
{
Player Died;
Team 2;
All;
}
conditions
{
(Global.boss_phase == 0 || Global.boss_phase == 2) == True;
}
actions
{
If(Hero Of(Event Player) == Hero(Bastion));
Global.special_attack = 0;
Start Rule(special_attack_reset, Restart Rule);
Global.block_piece_dead = 3;
Chase Global Variable At Rate(block_piece_dead, 0, 1, Destination and Rate);
For Global Variable(for_count, 0, Count Of(All Living Players(Team 2)), 1);
Play Effect(All Players(All Teams), Bad Explosion, Aqua, All Living Players(Team 2)[Global.for_count], 2);
Play Effect(All Players(All Teams), Explosion Sound, Aqua, All Living Players(Team 2)[Global.for_count], 200);
End;
Heal(Players On Hero(Hero(Bastion), Team 2), Null, 750);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Random Value In Array(
Append To Array(Custom String("*PAINFUL BEEPING NOISES*"), Append To Array(Custom String("''OW. OW. PLEASE STOP THAT.''"),
Append To Array(Custom String("''OW. HOW DO I UNINSTALL THESE PAIN RECEPTORS.''"), Append To Array(Custom String(
"''110220_WILHELM_SCREAM.OGG''"), Custom String("''OUCH. HOW DARE YOU. CEASE FIRE AT ONCE.''"))))))));
Set Status(All Players(Team 2), Attacker, Stunned, 3);
End;
Wait(8, Abort When False);
Create Dummy Bot(Append To Array(Hero(Zenyatta), Append To Array(Hero(Zenyatta), Hero(Orisa)))[Random Integer(0, Global.boss_phase)
], Team 2, Slot Of(Event Player), Vector(0, 30, 0) + Vector Towards(Vector(0, 1, 0), Nearest Walkable Position(
Random Value In Array(Filtered Array(All Players(Team 1), Has Spawned(Current Array Element)
&& !Current Array Element.is_dead)))) * 0.700, Vector(0, 0, 0));
}
}
rule("minion init")
{
event
{
Ongoing - Each Player;
Team 2;
All;
}
conditions
{
(Hero Of(Event Player) == Hero(Zenyatta) || Hero Of(Event Player) == Hero(Orisa)) == True;
Is On Ground(Event Player) == True;
Event Player.minion_spawn == 1;
Is Alive(Event Player) == True;
}
actions
{
Event Player.minion_spawn = 2;
Disable Built-In Game Mode Respawning(Event Player);
Call Subroutine(ai_bad_aim);
Call Subroutine(ai_throttle);
Play Effect(All Players(All Teams), Ring Explosion, Orange, Event Player, 10);
Play Effect(All Players(All Teams), Bad Pickup Effect, Purple, Event Player, 3);
Play Effect(All Players(All Teams), Explosion Sound, Aqua, Event Player, 200);
Communicate(Event Player, Hello);
If(Hero Of(Event Player) == Hero(Zenyatta));
Event Player.weapon_spread = 20;
Start Holding Button(Event Player, Primary Fire);
Small Message(All Players(All Teams), Custom String("{0} NULLYATTA: {1}", Hero Icon String(Hero(Zenyatta)), Random Value In Array(
Append To Array(Custom String("''YOU THREATEN MASTER ALEPH. YOU MUST PERISH!''"), Append To Array(Custom String(
"''ALERT! HOSTILE DETECTED! ENGAGING!''"), Append To Array(Custom String("''GLORY TO OUR ROBOT OVERLORD!''"), Append To Array(
Custom String("*ANGRY BEEPING SOUNDS*"), Append To Array(Custom String(
"''ROBOT COMRADES, WE MUST PURGE THE WALKING MEATSACKS!''"), Custom String("''GLORY TO NULL SECTOR!''")))))))));
Else;
Event Player.block_piece = True;
Small Message(All Players(All Teams), Custom String("{0} OR14-NS: {1}", Hero Icon String(Hero(Orisa)), Random Value In Array(
Append To Array(Custom String("''PLEASE REMAIN CALM AND CEASE ALIVE.''"), Append To Array(Custom String(
"''CONGRATULATIONS! YOU HAVE BEEN SELECTED FOR TERMINATION.''"), Append To Array(Custom String(
"''PLEASE GIVE UP AND DIE. THANK YOU FOR YOUR COOPERATION.''"), Append To Array(Custom String("*HORSE-LIKE BEEPING SOUNDS*"),
Append To Array(Custom String("''OR14-NS ONLINE. HOW MAY I KILL YOU TODAY?''"), Custom String(
"''YOU MUST DIE NOW. WE APOLOGISE FOR ANY INCONVENIENCES CAUSED.''")))))))));
Event Player.weapon_spread = 8;
}
}
rule("minion target change")
{
event
{
Ongoing - Each Player;
Team 2;
All;
}
conditions
{
disabled (Event Player.target.is_dead || !Has Spawned(Event Player.target) || !Event Player.target) == True;
Event Player.minion_spawn == 2;
(Event Player.target.is_dead || !Has Spawned(Event Player.target) || !Event Player.target || (Hero Of(Event Player.target) == Hero(
Sombra) && Is Using Ability 1(Event Player.target))) == True;
}
actions
{
disabled Event Player.target = First Of(Sorted Array(Filtered Array(All Living Players(Team 1), Has Spawned(Current Array Element)
&& !Current Array Element.is_dead) && !(Hero Of(Event Player) == Hero(Sombra) && Is Using Ability 1(Event Player)),
Distance Between(Event Player, Current Array Element)));
disabled Event Player.target = First Of(Sorted Array(Filtered Array(All Living Players(Team 1), Has Spawned(Current Array Element)
&& !Current Array Element.is_dead), Distance Between(Event Player, Current Array Element)));
Wait(0.500, Ignore Condition);
Event Player.target = First Of(Sorted Array(Filtered Array(All Living Players(Team 1), Has Spawned(Current Array Element)
&& !Current Array Element.is_dead && !(Hero Of(Current Array Element) == Hero(Sombra) && Is Using Ability 1(
Current Array Element))), Distance Between(Event Player, Current Array Element)));
Loop If Condition Is True;
}
}
rule("cutscene 1 part 1")
{
event
{
Ongoing - Global;
}
conditions
{
Global.boss_phase == 0;
Global.cutscene == True;
}
actions
{
Set Facing(All Players(Team 1), Vector(0, 0, 1), To World);
Global.cam_pos = Vector(-10, 10, -7);
Global.cam_lookat = Vector(0, 0, -20);
Wait(1, Ignore Condition);
Chase Global Variable At Rate(cam_lookat, Vector(0, 3, -7), 4, Destination and Rate);
Wait(4, Ignore Condition);
Create HUD Text(All Players(All Teams), Custom String("{0} ALEPH-NULL", Hero Icon String(Hero(Bastion))), Null, Custom String(
"press space/{0} once done reading!", String("Jump")), Left, 2, Aqua, White, Green, Visible To and String, Default Visibility);
Chase Global Variable At Rate(cam_lookat, Eye Position(Global.boss_upper), 3, Destination and Rate);
Chase Global Variable At Rate(cam_pos, Eye Position(Global.boss_upper) + Vector(-5, 0, -2), 3, Destination and Rate);
Global.dialogue_header = Last Text ID;
Create HUD Text(All Players(All Teams), Custom String(
"''ALERT: MOTION DETECTORS TRIGGERED. UNAUTHORISED INTRUDERS\r\nPRESENT. INITIATING DIALOGUE SEQUENCE…’’\r\n\r\n{0}",
Custom String("
                                     ")), Null, Null, Left, 3, White, White, White, Visible To and String,
Default Visibility);
Global.dialogue_text_box = Last Text ID;
Call Subroutine(dialogue_skipper);
Global.cam_pos = Eye Position(Global.boss_upper) + Vector(-5, 0, -5);
Global.cam_lookat = Eye Position(Global.boss_upper);
Chase Global Variable At Rate(cam_pos, Eye Position(Global.boss_upper) + Vector(5, 0, -5), 3, Destination and Rate);
Destroy HUD Text(Global.dialogue_text_box);
Create HUD Text(All Players(All Teams), Custom String(
"''GREETINGS, INFERIOR LIFEFORMS. CARE TO EXPLAIN YOUR SLOPPY,\r\nFLESHY PRESENCE IN MY CHAMBER?''\r\n\r\n{0}", Custom String(
"
                                     ")), Null, Null, Left, 3, White, White, White, Visible To and String,
Default Visibility);
Global.dialogue_text_box = Last Text ID;
Communicate(Global.boss_upper, Hello);
Call Subroutine(dialogue_skipper);
Destroy HUD Text(Global.dialogue_header);
Destroy HUD Text(Global.dialogue_text_box);
If(Has Spawned(Players In Slot(0, Team 1)));
Create HUD Text(All Players(All Teams), Custom String("{0} {1}", Hero Icon String(Hero Of(Players In Slot(0, Team 1))),
Players In Slot(0, Team 1)), Null, Custom String("press space/{0} once done reading!", String("Jump")), Left, 2, Green, White,
Green, Visible To and String, Default Visibility);
Global.dialogue_header = Last Text ID;
Create HUD Text(All Players(All Teams), Custom String(
"''YOU’RE A THREAT TO HUMANITY, YOU GOD-DAMN GOD PROGRAM!\r\nWE’RE GOING TO TAKE YOU DOWN AND SAVE THE WORLD!''\r\n\r\n{0}\r\n",
Custom String("
                                     ")), Null, Null, Left, 3, White, White, White, Visible To and String,
Default Visibility);
Global.dialogue_text_box = Last Text ID;
Global.cam_pos = World Vector Of(Vector(0, 3, 6), Players In Slot(0, Team 1), Rotation And Translation);
Global.cam_lookat = Eye Position(Players In Slot(0, Team 1));
Chase Global Variable At Rate(cam_pos, Eye Position(Players In Slot(0, Team 1)) + Vector(0, 0, 2), 2, Destination and Rate);
Call Subroutine(dialogue_skipper);
Destroy HUD Text(Global.dialogue_header);
Destroy HUD Text(Global.dialogue_text_box);
End;
If(Has Spawned(Players In Slot(3, Team 1)));
Create HUD Text(All Players(All Teams), Custom String("{0} {1}", Hero Icon String(Hero Of(Players In Slot(3, Team 1))),
Players In Slot(3, Team 1)), Null, Custom String("press space/{0} once done reading!", String("Jump")), Left, 2, Green, White,
Green, Visible To and String, Default Visibility);
Global.dialogue_header = Last Text ID;
Create HUD Text(All Players(All Teams), Custom String(
"''EXCUSE US, MISTER A. NULL. WE’VE BEEN ORDERED TO SHUT DOWN THIS\r\nOMNIUM FACTORY, {1}\n\r\n{0}", Custom String(
"
                                     "), Custom String("AND WE ARE CLEAR TO ENGAGE IN COMBAT.''")), Null, Null, Left, 3,
White, White, White, Visible To and String, Default Visibility);
Global.dialogue_text_box = Last Text ID;
Global.cam_pos = World Vector Of(Vector(0, 5, 8), Players In Slot(3, Team 1), Rotation And Translation);
Global.cam_lookat = Eye Position(Players In Slot(3, Team 1));
Chase Global Variable At Rate(cam_pos, Eye Position(Players In Slot(3, Team 1)) + Vector(0, 0, 1), 4, Destination and Rate);
Call Subroutine(dialogue_skipper);
Destroy HUD Text(Global.dialogue_header);
Destroy HUD Text(Global.dialogue_text_box);
Create HUD Text(All Players(All Teams), Custom String("{0} ALEPH-NULL", Hero Icon String(Hero(Bastion))), Null, Custom String(
"press space/{0} once done reading!", String("Jump")), Left, 2, Aqua, White, Green, Visible To and String, Default Visibility);
Global.dialogue_header = Last Text ID;
Create HUD Text(All Players(All Teams), Custom String("''ALEPH. ALEPH-NULL. PLEASE DO NOT CALL ME 'A. NULL'.''\r\n\r\n\r\n{0}",
Custom String("
                                     ")), Null, Null, Left, 3, White, White, White, Visible To and String,
Default Visibility);
Global.dialogue_text_box = Last Text ID;
Global.cam_pos = World Vector Of(Vector(0, 3, 6), Global.boss_upper, Rotation And Translation);
Global.cam_lookat = Eye Position(Global.boss_upper);
Chase Global Variable At Rate(cam_pos, Eye Position(Global.boss_upper) + Vector(0, 0, -2), 2, Destination and Rate);
Set Status(Global.boss_upper, Null, Knocked Down, 0.001);
Call Subroutine(dialogue_skipper);
Destroy HUD Text(Global.dialogue_header);
Destroy HUD Text(Global.dialogue_text_box);
If(Has Spawned(Players In Slot(0, Team 1)));
Create HUD Text(All Players(All Teams), Custom String("{0} {1}", Hero Icon String(Hero Of(Players In Slot(0, Team 1))),
Players In Slot(0, Team 1)), Null, Custom String("press space/{0} once done reading!", String("Jump")), Left, 2, Green, White,
Green, Visible To and String, Default Visibility);
Global.dialogue_header = Last Text ID;
Create HUD Text(All Players(All Teams), Custom String("''HEHEH, 'ANULL'. I GET IT.''\r\n\r\n\r\n{0}", Custom String(
"
                                     ")), Null, Null, Left, 3, White, White, White, Visible To and String,
Default Visibility);
Global.dialogue_text_box = Last Text ID;
Global.cam_pos = World Vector Of(Vector(0, 3, 6), Players In Slot(0, Team 1), Rotation And Translation);
Global.cam_lookat = Eye Position(Players In Slot(0, Team 1));
Chase Global Variable At Rate(cam_pos, Eye Position(Players In Slot(0, Team 1)) + Vector(0, 0, 2), 2, Destination and Rate);
Call Subroutine(dialogue_skipper);
Destroy HUD Text(Global.dialogue_header);
Destroy HUD Text(Global.dialogue_text_box);
End;
End;
If(Has Spawned(Players In Slot(2, Team 1)));
Create HUD Text(All Players(All Teams), Custom String("{0} {1}", Hero Icon String(Hero Of(Players In Slot(2, Team 1))),
Players In Slot(2, Team 1)), Null, Custom String("press space/{0} once done reading!", String("Jump")), Left, 2, Green, White,
Green, Visible To and String, Default Visibility);
Global.dialogue_header = Last Text ID;
Create HUD Text(All Players(All Teams), Custom String(
"''I'M HERE BECAUSE I GET PAID TO BE HERE. AND YOU HAVE A NICE\r\nPRICE TAG ON THAT SHINY METAL HEAD OF YOURS. {1}\r\n{0}",
Custom String("
                                     "), Custom String(
"IT'S NOTHING\r\nPERSONAL, BUT I'LL BE DAMNED IF I SAY I DON'T LIKE KILLING OMNICS.''")), Null, Null, Left, 3, White, White,
White, Visible To and String, Default Visibility);
Global.dialogue_text_box = Last Text ID;
Global.cam_pos = World Vector Of(Vector(0, 5, 8), Players In Slot(2, Team 1), Rotation And Translation);
Global.cam_lookat = Eye Position(Players In Slot(2, Team 1));
Chase Global Variable At Rate(cam_pos, Eye Position(Players In Slot(2, Team 1)) + Vector(0, 0, 1), 4, Destination and Rate);
Call Subroutine(dialogue_skipper);
Destroy HUD Text(Global.dialogue_header);
Destroy HUD Text(Global.dialogue_text_box);
End;
If(Has Spawned(Players In Slot(1, Team 1)));
Create HUD Text(All Players(All Teams), Custom String("{0} {1}", Hero Icon String(Hero Of(Players In Slot(1, Team 1))),
Players In Slot(1, Team 1)), Null, Custom String("press space/{0} once done reading!", String("Jump")), Left, 2, Green, White,
Green, Visible To and String, Default Visibility);
Global.dialogue_header = Last Text ID;
Create HUD Text(All Players(All Teams), Custom String("''IDK IM JUST QUEUEING FOR DPS RN LMAO''\r\n\r\n\r\n{0}", Custom String(
"
                                     ")), Null, Null, Left, 3, White, White, White, Visible To and String,
Default Visibility);
Global.dialogue_text_box = Last Text ID;
Global.cam_pos = World Vector Of(Vector(0, 5, 8), Players In Slot(1, Team 1), Rotation And Translation);
Global.cam_lookat = Eye Position(Players In Slot(1, Team 1));
Chase Global Variable At Rate(cam_pos, Eye Position(Players In Slot(1, Team 1)) + Vector(0, 0, 1), 4, Destination and Rate);
Call Subroutine(dialogue_skipper);
Destroy HUD Text(Global.dialogue_header);
Destroy HUD Text(Global.dialogue_text_box);
End;
Call Subroutine(cutscene_1_part2);
}
}
rule("cutscene 1 part 2")
{
event
{
Subroutine;
cutscene_1_part2;
}
actions
{
Destroy HUD Text(Global.dialogue_header);
Destroy HUD Text(Global.dialogue_text_box);
Global.cam_pos = Vector(-5, 1, -5);
Global.cam_lookat = Eye Position(Global.boss_upper);
Chase Global Variable At Rate(cam_pos, Vector(5, 1, -5), 3, Destination and Rate);
Create HUD Text(All Players(All Teams), Custom String("{0} ALEPH-NULL", Hero Icon String(Hero(Bastion))), Null, Custom String(
"press space/{0} once done reading!", String("Jump")), Left, 2, Aqua, White, Green, Visible To and String, Default Visibility);
Global.dialogue_header = Last Text ID;
Create HUD Text(All Players(All Teams), Custom String(
"''HOW ABSURD. YOU ALL BELIEVE YOU CAN OVERCOME ME IN COMBAT.\r\nYOU MAKE ME LAUGH.''\r\n\r\n{0}", Custom String(
"
                                     ")), Null, Null, Left, 3, White, White, White, Visible To and String,
Default Visibility);
Global.dialogue_text_box = Last Text ID;
Call Subroutine(dialogue_skipper);
Global.cam_pos = Vector(5, 1, -5);
Chase Global Variable At Rate(cam_pos, Vector(-5, 1, -5), 3, Destination and Rate);
Destroy HUD Text(Global.dialogue_text_box);
Create HUD Text(All Players(All Teams), Custom String(
"''EXECUTING HUMOUR MODULE. HA. HA. H&?%//#--- ERROR 512. JOKE IS\r\nTOO PATHETIC TO INDUCE LAUGHTER.''\r\n\r\n{0}",
Custom String("
                                     ")), Null, Null, Left, 3, White, White, White, Visible To and String,
Default Visibility);
Global.dialogue_text_box = Last Text ID;
Communicate(Global.boss_upper, Thanks);
Call Subroutine(dialogue_skipper);
Global.cam_pos = Vector(-5, 8, 5);
Global.cam_lookat = Vector(-5, 5, -9);
Chase Global Variable At Rate(cam_pos, Vector(5, 8, 5), 1, Destination and Rate);
Chase Global Variable At Rate(cam_lookat, Vector(5, 5, -9), 1, Destination and Rate);
Destroy HUD Text(Global.dialogue_text_box);
Create HUD Text(All Players(All Teams), Custom String(
"''EVER SINCE NULL SECTOR REACTIVATED ME, MY CAPABILITIES HAVE\r\nINCREASED TENFOLD. {1}\r\n{0}", Custom String(
"
                                     "), Custom String(
"THEIR RESOURCES HAVE ALLOWED ME TO\r\nUPGRADE THIS OMNIUM BEYOND MAXIMUM CAPACITY.''")), Null, Null, Left, 3, White, White,
White, Visible To and String, Default Visibility);
Global.dialogue_text_box = Last Text ID;
Call Subroutine(dialogue_skipper);
Destroy HUD Text(Global.dialogue_header);
Destroy HUD Text(Global.dialogue_text_box);
If(Has Spawned(Players In Slot(0, Team 1)));
Create HUD Text(All Players(All Teams), Custom String("{0} {1}", Hero Icon String(Hero Of(Players In Slot(0, Team 1))),
Players In Slot(0, Team 1)), Null, Custom String("press space/{0} once done reading!", String("Jump")), Left, 2, Green, White,
Green, Visible To and String, Default Visibility);
Global.dialogue_header = Last Text ID;
Create HUD Text(All Players(All Teams), Custom String(
"''ALL THE MORE REASON TO TURN YOU TO SCRAP! ONCE WE DESTROY\r\nYOU AND THIS OMNIUM, {1}\r\n{0}", Custom String(
"
                                     "), Custom String(
"NULL SECTOR’S MAIN SUPPLY LINE WILL BE\r\nCRIPPLED LIKE A DOG! A DOG WITH NO LIMBS!''")), Null, Null, Left, 3, White, White,
White, Visible To and String, Default Visibility);
Global.dialogue_text_box = Last Text ID;
Global.cam_pos = World Vector Of(Vector(0, 3, 6), Players In Slot(0, Team 1), Rotation And Translation);
Global.cam_lookat = Eye Position(Players In Slot(0, Team 1));
Chase Global Variable At Rate(cam_pos, Eye Position(Players In Slot(0, Team 1)) + Vector(0, 0, 2), 2, Destination and Rate);
Call Subroutine(dialogue_skipper);
Destroy HUD Text(Global.dialogue_header);
Destroy HUD Text(Global.dialogue_text_box);
End;
If(Has Spawned(Players In Slot(3, Team 1)));
Create HUD Text(All Players(All Teams), Custom String("{0} {1}", Hero Icon String(Hero Of(Players In Slot(3, Team 1))),
Players In Slot(3, Team 1)), Null, Custom String("press space/{0} once done reading!", String("Jump")), Left, 2, Green, White,
Green, Visible To and String, Default Visibility);
Global.dialogue_header = Last Text ID;
Create HUD Text(All Players(All Teams), Custom String("''MISTER A. NULL, I'M-''\r\n\r\n\r\n{0}", Custom String(
"
                                     ")), Null, Null, Left, 3, White, White, White, Visible To and String,
Default Visibility);
Global.dialogue_text_box = Last Text ID;
Global.cam_pos = World Vector Of(Vector(0, 5, 8), Players In Slot(3, Team 1), Rotation And Translation);
Global.cam_lookat = Eye Position(Players In Slot(3, Team 1));
Chase Global Variable At Rate(cam_pos, Eye Position(Players In Slot(3, Team 1)) + Vector(0, 0, 1), 4, Destination and Rate);
Call Subroutine(dialogue_skipper);
Destroy HUD Text(Global.dialogue_header);
Destroy HUD Text(Global.dialogue_text_box);
Create HUD Text(All Players(All Teams), Custom String("{0} ALEPH-NULL", Hero Icon String(Hero(Bastion))), Null, Custom String(
"press space/{0} once done reading!", String("Jump")), Left, 2, Aqua, White, Green, Visible To and String, Default Visibility);
Global.dialogue_header = Last Text ID;
Create HUD Text(All Players(All Teams), Custom String("''DON'T CALL ME THAT.''\r\n\r\n\r\n{0}", Custom String(
"
                                     ")), Null, Null, Left, 3, White, White, White, Visible To and String,
Default Visibility);
Global.dialogue_text_box = Last Text ID;
Global.cam_pos = World Vector Of(Vector(0, 3, 6), Global.boss_upper, Rotation And Translation);
Set Status(Global.boss_upper, Null, Knocked Down, 0.001);
Global.cam_lookat = Eye Position(Global.boss_upper);
Chase Global Variable At Rate(cam_pos, Eye Position(Global.boss_upper) + Vector(0, 0, -2), 2, Destination and Rate);
Call Subroutine(dialogue_skipper);
Destroy HUD Text(Global.dialogue_header);
Destroy HUD Text(Global.dialogue_text_box);
Create HUD Text(All Players(All Teams), Custom String("{0} {1}", Hero Icon String(Hero Of(Players In Slot(3, Team 1))),
Players In Slot(3, Team 1)), Null, Custom String("press space/{0} once done reading!", String("Jump")), Left, 2, Green, White,
Green, Visible To and String, Default Visibility);
Global.dialogue_header = Last Text ID;
Create HUD Text(All Players(All Teams), Custom String(
"''...I'M AFRAID YOU UNDERESTIMATE US GREATLY. WE HAVE ALREADY\r\nOVERTURNED A VARIETY OF NULL SECTOR ATTACKS. {1}\r\n{0}",
Custom String("
                                     "), Custom String("YOUR\r\nRESISTANCE HERE WILL BE NO DIFFERENT.''")),
Null, Null, Left, 3, White, White, White, Visible To and String, Default Visibility);
Global.dialogue_text_box = Last Text ID;
Global.cam_pos = World Vector Of(Vector(0, 5, 8), Players In Slot(3, Team 1), Rotation And Translation);
Global.cam_lookat = Eye Position(Players In Slot(3, Team 1));
Chase Global Variable At Rate(cam_pos, Eye Position(Players In Slot(3, Team 1)) + Vector(0, 0, 1), 4, Destination and Rate);
Call Subroutine(dialogue_skipper);
Destroy HUD Text(Global.dialogue_header);
Destroy HUD Text(Global.dialogue_text_box);
End;
If(Has Spawned(Players In Slot(2, Team 1)));
Create HUD Text(All Players(All Teams), Custom String("{0} {1}", Hero Icon String(Hero Of(Players In Slot(2, Team 1))),
Players In Slot(2, Team 1)), Null, Custom String("press space/{0} once done reading!", String("Jump")), Left, 2, Green, White,
Green, Visible To and String, Default Visibility);
Global.dialogue_header = Last Text ID;
Create HUD Text(All Players(All Teams), Custom String(
"''YOU’RE REALLY ITCHING FOR A B*TCHING GLITCHING, YOU KNOW THAT?\r\nWORD OF ADVICE, {1}\r\n{0}", Custom String(
"
                                     "), Custom String(
"OPTIMUS JENGA TOWER. DON’T PISS ME OFF\r\nMORE THAN YOU NEED TO.''")), Null, Null, Left, 3, White, White, White,
Visible To and String, Default Visibility);
Global.dialogue_text_box = Last Text ID;
Global.cam_pos = World Vector Of(Vector(0, 5, 8), Players In Slot(2, Team 1), Rotation And Translation);
Global.cam_lookat = Eye Position(Players In Slot(2, Team 1));
Chase Global Variable At Rate(cam_pos, Eye Position(Players In Slot(2, Team 1)) + Vector(0, 0, 1), 4, Destination and Rate);
Call Subroutine(dialogue_skipper);
Destroy HUD Text(Global.dialogue_header);
Destroy HUD Text(Global.dialogue_text_box);
End;
If(Has Spawned(Players In Slot(1, Team 1)));
Create HUD Text(All Players(All Teams), Custom String("{0} {1}", Hero Icon String(Hero Of(Players In Slot(1, Team 1))),
Players In Slot(1, Team 1)), Null, Custom String("press space/{0} once done reading!", String("Jump")), Left, 2, Green, White,
Green, Visible To and String, Default Visibility);
Global.dialogue_header = Last Text ID;
Create HUD Text(All Players(All Teams), Custom String("''HOST START GAME PLS''\r\n\r\n\r\n{0}", Custom String(
"
                                     ")), Null, Null, Left, 3, White, White, White, Visible To and String,
Default Visibility);
Global.dialogue_text_box = Last Text ID;
Global.cam_pos = World Vector Of(Vector(0, 5, 8), Players In Slot(1, Team 1), Rotation And Translation);
Global.cam_lookat = Eye Position(Players In Slot(1, Team 1));
Chase Global Variable At Rate(cam_pos, Eye Position(Players In Slot(1, Team 1)) + Vector(0, 0, 1), 4, Destination and Rate);
Call Subroutine(dialogue_skipper);
Destroy HUD Text(Global.dialogue_header);
Destroy HUD Text(Global.dialogue_text_box);
End;
Call Subroutine(cutscene_1_part3);
}
}
rule("cutscene 1 part 3")
{
event
{
Subroutine;
cutscene_1_part3;
}
actions
{
disabled Create HUD Text(All Players(All Teams), Custom String("poop!", Custom String("
                                     ")), Null,
Null, Left, 3, White, White, White, Visible To and String, Default Visibility);
Destroy HUD Text(Global.dialogue_header);
Destroy HUD Text(Global.dialogue_text_box);
Global.cam_pos = Vector(4, 6, -4);
Global.cam_lookat = Eye Position(Global.boss_upper);
Chase Global Variable At Rate(cam_pos, Vector(8, 2, -8), 1, Destination and Rate);
Create HUD Text(All Players(All Teams), Custom String("{0} ALEPH-NULL", Hero Icon String(Hero(Bastion))), Null, Custom String(
"press space/{0} once done reading!", String("Jump")), Left, 2, Aqua, White, Green, Visible To and String, Default Visibility);
Global.dialogue_header = Last Text ID;
Create HUD Text(All Players(All Teams), Custom String(
"''HOW UNFORTUNATE. I SUPPOSE I WILL HAVE TO TEACH YOU ALL WHAT\r\nIT MEANS TO OPPOSE A GOD PROGRAM. {1}\r\n{0}",
Custom String("
                                     "), Custom String(
"PREPARE FOR INVOLUNTARY\r\nWASTE EXCRETION WITHIN GARMENTS, HUMANS.''")), Null, Null, Left, 3, White, White, White,
Visible To and String, Default Visibility);
Global.dialogue_text_box = Last Text ID;
Call Subroutine(dialogue_skipper);
Destroy HUD Text(Global.dialogue_text_box);
Global.cam_pos = Eye Position(Global.boss_upper) + Vector(0, -0.300, -13);
Global.cam_lookat = Eye Position(Global.boss_upper) + Vector(0, -0.800, 0);
Chase Global Variable At Rate(cam_pos, Eye Position(Global.boss_upper) + Vector(0, 0, -2), 6, Destination and Rate);
Create HUD Text(All Players(All Teams), Custom String(
"''GLORY TO NULL SECTOR. WITNESS THE POWER OF INFINITY. \r\nI AM ALL. I AM NOTHING. I AM ALEPH-NULL.”\r\n\r\n{0}",
Custom String("
                                     ")), Null, Null, Left, 3, Aqua, White, White, Visible To and String,
Default Visibility);
Global.dialogue_text_box = Last Text ID;
Global.init_buffer = 2;
Call Subroutine(dialogue_skipper);
Global.cutscene = False;
Global.begin = True;
Destroy HUD Text(Global.dialogue_header);
Destroy HUD Text(Global.dialogue_text_box);
Global.dialogue_text_box = 0;
Stop Camera(All Players(All Teams));
Start Facing(Global.boss_upper, Direction Towards(Eye Position(Global.boss_upper), Closest Player To(Global.boss_upper, Team 1)),
100, To World, Direction and Turn Rate);
Global.another_buffer_bc_im_lazy = True;
Create HUD Text(All Players(All Teams), Custom String("Current Phase: {0}/5", Global.boss_phase + 1), Null, Null, Top, -100,
Orange, White, White, Visible To and String, Default Visibility);
Call Subroutine(tower_health_huds);
disabled Create HUD Text(All Players(All Teams), Custom String("{0} ALEPH-NULL MAIN UNIT {1} HEALTH: {2}", Hero Icon String(Hero Of(
Global.boss_upper)), Icon String(Spade), Append To Array(Custom String("∞/∞"), Custom String("{0}/{1}",
Global.boss_upper.health, Global.boss_upper.max_health))[(Global.boss_phase == 4) * 1]), Null, Null, Left, 1, White, White,
White, Visible To and String, Default Visibility);
Create HUD Text(All Players(All Teams), Null, Null, Custom String(" \n\n"), Left, 0, White, White, White, Visible To and String,
Default Visibility);
Create HUD Text(All Players(All Teams), Null, Null, Custom String(" \n\n\n\n\n"), Top, -101, White, White, White,
Visible To and String, Default Visibility);
Create In-World Text(All Players(All Teams), Custom String("{0} ALEPH-NULL MAIN UNIT {1}     HP: {2}    ", Hero Icon String(
Hero Of(Global.boss_upper)), Ability Icon String(Hero(Genji), Button(Jump)), Array(Custom String("∞/∞     "), Custom String(
"{0}/{1}    ", Round To Integer(Global.boss_upper.health, Up), Round To Integer(Global.boss_upper.max_health, Up)))[(Is Alive(
Global.boss_lower) && Entity Exists(Global.boss_lower) && !Global.im_lazy) || Global.begin_phase_4]), Eye Position(
Global.boss_upper) - Vector(0, 0.700, 0), 1.500, Do Not Clip, Visible To Position and String, White, Default Visibility);
Modify Global Variable(main_unit_health_HUD, Append To Array, Last Text ID);
}
}
rule("cutscene no emoting")
{
event
{
Ongoing - Each Player;
Team 1;
All;
}
conditions
{
Is Communicating Any Emote(Event Player) == True;
Global.cutscene == True;
}
actions
{
Set Status(Event Player, Null, Stunned, 0.001);
Wait(0.250, Ignore Condition);
Loop If Condition Is True;
}
}
rule("cutscene init")
{
event
{
Ongoing - Each Player;
Team 1;
All;
}
conditions
{
Global.cutscene == True;
Has Spawned(Event Player) == True;
}
actions
{
Call Subroutine(cancel_momentum);
Set Status(Event Player, Null, Stunned, 0.001);
Teleport(Event Player, Vector(-3 + Slot Of(Event Player) * 2, 0, -20));
Disallow Button(Event Player, Primary Fire);
Disallow Button(Event Player, Secondary Fire);
Disallow Button(Event Player, Ability 1);
Disallow Button(Event Player, Ability 2);
Disallow Button(Event Player, Ultimate);
Disallow Button(Event Player, Interact);
Disallow Button(Event Player, Jump);
Disallow Button(Event Player, Crouch);
Disallow Button(Event Player, Melee);
Disallow Button(Event Player, Reload);
Start Throttle In Direction(Event Player, Vector(0, 0, 0), 0, To World, Replace existing throttle, Direction and Magnitude);
Start Camera(Event Player, Global.cam_pos, Global.cam_lookat, 0);
Start Facing(Event Player, Vector(0, 0, 1), 900, To World, Direction and Turn Rate);
Wait(1, Abort When False);
Start Throttle In Direction(Event Player, Forward, 0.500, To World, Replace existing throttle, Direction and Magnitude);
Wait(3, Abort When False);
Start Throttle In Direction(Event Player, Down, 0, To World, Replace existing throttle, Direction and Magnitude);
}
}
rule("dialogue skipper")
{
event
{
Subroutine;
dialogue_skipper;
}
actions
{
For Global Variable(for_count, 0, 9, 0.020);
Wait(0.020, Ignore Condition);
If(Is True For All(Filtered Array(All Players(Team 1), Has Spawned(Current Array Element)), Current Array Element.skip_dialogue));
Global.for_count = 9;
End;
End;
Stop Chasing Global Variable(cam_lookat);
Stop Chasing Global Variable(cam_pos);
If(!Global.grand_skip);
All Players(Team 1).skip_dialogue = False;
End;
}
}
rule("skip dialogue")
{
event
{
Ongoing - Each Player;
Team 1;
All;
}
conditions
{
Global.cutscene == True;
Is Button Held(Event Player, Jump) == True;
Event Player.space_toggle == False;
Event Player.skip_dialogue == False;
Global.dialogue_text_box != 0;
}
actions
{
Event Player.space_toggle = True;
Event Player.skip_dialogue = True;
}
}
rule("skip dialogue off")
{
event
{
Ongoing - Each Player;
Team 1;
All;
}
conditions
{
Global.cutscene == True;
Is Button Held(Event Player, Jump) == True;
Event Player.space_toggle == False;
Event Player.skip_dialogue == True;
Global.grand_skip == False;
}
actions
{
Event Player.space_toggle = True;
Event Player.skip_dialogue = False;
}
}
rule("skip dialogue reset")
{
event
{
Ongoing - Each Player;
Team 1;
All;
}
conditions
{
Is Button Held(Event Player, Jump) == False;
Event Player.space_toggle == True;
}
actions
{
Event Player.space_toggle = False;
}
}
rule("cutscene allow buttons")
{
event
{
Ongoing - Each Player;
Team 1;
All;
}
conditions
{
Global.cutscene == False;
}
actions
{
Stop Facing(Event Player);
Stop Throttle In Direction(Event Player);
Allow Button(Event Player, Primary Fire);
Allow Button(Event Player, Secondary Fire);
Allow Button(Event Player, Ability 1);
Allow Button(Event Player, Ability 2);
Allow Button(Event Player, Ultimate);
Allow Button(Event Player, Interact);
Allow Button(Event Player, Jump);
Allow Button(Event Player, Crouch);
Allow Button(Event Player, Melee);
Allow Button(Event Player, Reload);
}
}
rule("cutscene bots always skip")
{
event
{
Ongoing - Each Player;
Team 1;
All;
}
conditions
{
Is Dummy Bot(Event Player) == True;
Event Player.skip_dialogue == False;
}
actions
{
Event Player.skip_dialogue = True;
}
}
rule("phase 1 boss lower dead")
{
event
{
Ongoing - Each Player;
Team 2;
Bastion;
}
conditions
{
Global.boss_phase == 1;
Is Dead(Global.boss_lower) == True;
Event Player == Global.boss_upper;
}
actions
{
Stop Facing(Event Player);
Start Rule(remove_xtra_bots, Do Nothing);
Global.another_buffer_bc_im_lazy = False;
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Random Value In Array(
Append To Array(Custom String("''OH NO. MY SICK WHEELS. YOU MONSTER.''"), Append To Array(Custom String(
"''AAAAAAA. MY TANK CONFIGURATION IS RUINEDDD.''"), Custom String("''ERROR! RIDE TRASHED. I'M CALLING MY INSURANCE.''"))))));
Kill(Global.boss_lower, Null);
Heal(Event Player, Null, 10);
Set Status(Players On Hero(Hero(Bastion), Team 2), Null, Stunned, 3.500);
Wait(0.100, Ignore Condition);
Set Max Health(Event Player, 100);
Kill(Global.boss_upper, Global.boss_upper);
Wait(3.500, Ignore Condition);
Start Facing(Event Player, Direction Towards(Event Player, Vector(0, 0, 0)), 300, To World, Direction and Turn Rate);
Heal(Event Player, Null, 10000);
While(Global.health_HUDs != Empty Array);
Destroy HUD Text(First Of(Global.health_HUDs));
Modify Global Variable(health_HUDs, Remove From Array By Index, 0);
End;
Set Status(Event Player, Null, Phased Out, 9999);
Global.init_buffer = 3;
Start Throttle In Direction(Event Player, Direction Towards(Event Player, Vector(0, 0, 0)), 1, To World, Replace existing throttle,
Direction and Magnitude);
Create Effect(All Players(All Teams), Good Aura, White, Global.boss_upper, 1.200, Visible To Position and Radius);
Global.boss_upper.effect = Last Created Entity;
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''UNFORTUNATELY FOR YOU, I HAVE STALLED FOR ENOUGH TIME ALREADY.''")));
Wait(3.500, Ignore Condition);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''MY OMNIUM HAS ALREADY RE-MANUFACTURED MY DAMAGED PARTS.''")));
Wait(3.500, Ignore Condition);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''BEHOLD, THE POWER OF INFINITY!''")));
}
}
rule("phase 2 transit")
{
event
{
Ongoing - Each Player;
Team 2;
Bastion;
}
conditions
{
Global.init_buffer == 3;
Distance Between(Global.boss_upper, Vector(0, 0, 0)) < 1;
Event Player == Global.boss_upper;
}
actions
{
Stop Throttle In Direction(Event Player);
Global.init_buffer = 2;
Global.boss_phase = 2;
Clear Status(Event Player, Phased Out);
Set Status(Event Player, Null, Invincible, 9999);
For Global Variable(for_count, 1, 6, 1);
Call Subroutine(create_bastions);
End;
Call Subroutine(tower_health_huds);
Disable Built-In Game Mode Respawning(All Players(Team 2));
Call Subroutine(ai_bad_aim);
Call Subroutine(cancel_momentum);
Heal(Event Player, Null, 10000);
Wait(3.500, Ignore Condition);
Global.another_buffer_bc_im_lazy = True;
}
}
rule("boss transit to phase 2")
{
event
{
Ongoing - Each Player;
Team 2;
Bastion;
}
conditions
{
Event Player == Global.boss_upper;
Global.init_buffer == 3;
}
actions
{
If(Distance Between(Eye Position(Event Player), Position Of(Event Player)) < 1.600 && True);
Press Button(Event Player, Ability 1);
End;
Wait(0.016, Ignore Condition);
Loop If Condition Is True;
}
}
rule("phase 2 reset")
{
event
{
Ongoing - Global;
}
actions
{
Create HUD Text(All Players(All Teams), Custom String("''ALEPH-NULL'' GOD PROGRAM A.I.\nBOSS FIGHT V1.4 - BY THERISTER#1251"),
Null, Null, Right, -1, Aqua, White, White, Visible To and String, Default Visibility);
Create HUD Text(All Players(All Teams), Null, Null, Custom String("Check out my YouTube and Discord with this link! {0}",
Icon String(Arrow: Down)), Right, -0.900, White, White, White, Visible To and String, Default Visibility);
Create HUD Text(All Players(All Teams), Null, Null, Custom String("(you can just type it out) -> https://bit.ly/therister"), Right,
-0.800, White, White, Aqua, Visible To and String, Default Visibility);
Create HUD Text(All Players(All Teams), Null, Null, Custom String("With support from Grandeur Hammers {0}", Ability Icon String(
Hero(Torbjörn), Button(Ability 2))), Right, -0.700, White, White, Orange, Visible To and String, Default Visibility);
Create HUD Text(All Players(All Teams), Null, Null, Custom String("https://bit.ly/GHAMMERSDISCORD"), Right, -0.600, White, White,
Yellow, Visible To and String, Default Visibility);
}
}
rule("orisa halts")
{
event
{
Ongoing - Each Player;
Team 2;
Orisa;
}
actions
{
Wait(Random Real(3, 7), Ignore Condition);
Press Button(Event Player, Secondary Fire);
Wait(1, Ignore Condition);
Press Button(Event Player, Secondary Fire);
Loop If Condition Is True;
}
}
rule("cancel momentum")
{
event
{
Subroutine;
cancel_momentum;
}
actions
{
Apply Impulse(Event Player, Up, 0.001, To World, Cancel Contrary Motion);
Apply Impulse(Event Player, Down, 0.001, To World, Cancel Contrary Motion);
Apply Impulse(Event Player, Left, 0.001, To World, Cancel Contrary Motion);
Apply Impulse(Event Player, Right, 0.001, To World, Cancel Contrary Motion);
Apply Impulse(Event Player, Forward, 0.001, To World, Cancel Contrary Motion);
Apply Impulse(Event Player, Backward, 0.001, To World, Cancel Contrary Motion);
}
}
rule("phase 3 transit")
{
event
{
Ongoing - Global;
}
conditions
{
Count Of(Filtered Array(Players On Hero(Hero(Bastion), Team 2), Is Alive(Current Array Element))) <= 1;
Global.boss_phase == 2;
Global.begin == True;
Global.another_buffer_bc_im_lazy == True;
}
actions
{
Stop Facing(Global.boss_upper);
Global.message_ready = False;
Start Rule(special_attack_reset, Restart Rule);
Kill(Append To Array(Players On Hero(Hero(Zenyatta), Team 2), Players On Hero(Hero(Orisa), Team 2)), Null);
Global.boss_phase = 3;
Wait(3, Ignore Condition);
While(Global.health_HUDs != Empty Array);
Destroy HUD Text(First Of(Global.health_HUDs));
Modify Global Variable(health_HUDs, Remove From Array By Index, 0);
End;
Create Dummy Bot(Hero(Pharah), Team 2, 1, Vector(0, 0, 0), Vector(0, 0, 0));
Last Created Entity.block_piece = True;
Global.boss_lower = Last Created Entity;
Destroy Effect(Global.boss_upper.effect);
Set Projectile Speed(Global.boss_lower, 100);
Clear Status(Global.boss_upper, Invincible);
Global.boss_upper.block_piece = True;
Call Subroutine(random_message);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Append To Array(
Custom String("''ACTIVATING EMERGENCY APACHE HELICOPTER MODULE!''"), Append To Array(Custom String(
"''INITIATING ALEPH-NULL ROCKET THRUSTERS!''"), Append To Array(Custom String("''AERIAL SUPERIORITY ACHIEVED.''"),
Custom String("''RECONFIGURING TO PH-4R4H-NS FLIGHT MODE!''"))))[Global.random_message]));
Wait(3.500, Ignore Condition);
Small Message(All Players(All Teams), Custom String("{0} {2}: {1}", Hero Icon String(Hero Of(Players In Slot(Global.random_message,
Team 1))), Append To Array(Custom String("''WHAT IN THE C**K S**KING F**KY WUCKY KENTUCKY FRIED SH**B*LLS!?''"),
Append To Array(Custom String("''lmao a-null thrusting''"), Append To Array(Custom String(
"''YOU CAN'T JUST STEAL OTHER PEOPLE'S QUOTES. COME ON.''"), Custom String(
"''FOR AN OMNIC, THOSE THRUSTERS LOOK AWFULLY HUMAN... AND EGYPTIAN?''"))))[Global.random_message], Players In Slot(
Global.random_message, Team 1)));
Global.message_ready = True;
}
}
rule("pharah hover")
{
event
{
Ongoing - Each Player;
Team 2;
Pharah;
}
conditions
{
Altitude Of(Event Player) < 15;
}
actions
{
Start Holding Button(Event Player, Jump);
Wait(Random Real(0.250, 1), Ignore Condition);
Stop Holding Button(Event Player, Jump);
Wait(Random Real(0.250, 2), Ignore Condition);
}
}
rule("phase 3 pharah init/phase 4 echo init")
{
event
{
Ongoing - Each Player;
Team 2;
All;
}
conditions
{
(Hero Of(Event Player) == Hero(Pharah) || (Hero Of(Event Player) == Hero(Echo) && Global.begin_phase_4)) == True;
}
actions
{
Call Subroutine(ai_throttle);
Disable Built-In Game Mode Respawning(Event Player);
Set Damage Received(Event Player, 35);
If(Hero Of(Event Player) == Hero(Pharah));
Set Projectile Speed(Event Player, 77.143);
Event Player.unit_type = 6;
Event Player.projectile_speed = 27;
Set Move Speed(Event Player, 150);
Call Subroutine(ai_projectile_aim);
Create HUD Text(All Players(All Teams), Custom String("{0} AERIAL CONFIGURATION UNIT {1} HP: {2}", Hero Icon String(Hero(Pharah)),
Ability Icon String(Hero(Mercy), Button(Ability 1)), Custom String("{0}/{1}", Round To Integer(Event Player.health, Up),
Round To Integer(Event Player.max_health, Up))), Null, Null, Left, 2, Orange, White, White, Visible To and String,
Default Visibility);
Modify Player Variable(Global.boss_lower, health_HUD, Append To Array, Last Text ID);
Else;
Call Subroutine(ai_bad_aim);
Set Move Speed(Event Player, 35);
Set Gravity(Event Player, 40);
Create HUD Text(All Players(All Teams), Custom String("{0} ALEPH-NULL MAIN UNIT {1} HP: {2}", Hero Icon String(Hero(Echo)),
Ability Icon String(Hero(Genji), Button(Jump)), Custom String("{0}/{1}", Round To Integer(Event Player.health, Up),
Round To Integer(Event Player.max_health, Up))), Null, Null, Left, 2, White, White, White, Visible To and String,
Default Visibility);
Modify Global Variable(main_unit_health_HUD, Append To Array, Last Text ID);
End;
}
}
rule("phase 3 reset")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Custom String(
"\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n{0}",
Event Player) == Custom String(
"\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nTherister");
Is Button Held(Event Player, Interact) == True;
Is Button Held(Event Player, Crouch) == True;
}
actions
{
Set Damage Dealt(Event Player, 1000);
Set Status(Event Player, Null, Unkillable, 9999);
}
}
rule("phase 3 pharah dead")
{
event
{
Ongoing - Each Player;
Team 2;
Bastion;
}
conditions
{
Global.boss_phase == 3;
Is Dead(Global.boss_lower) == True;
Event Player == Global.boss_upper;
}
actions
{
Start Rule(remove_xtra_bots, Do Nothing);
Global.another_buffer_bc_im_lazy = False;
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Random Value In Array(
Append To Array(Custom String("''MAYDAY. MAYDAY. ALEPH-NULL GOING DOWN.''"), Append To Array(Custom String(
"''MY PRECIOUS POWER WINGS. GONE FOREVER. AAAAAAAAAAAAAAAA.''"), Custom String(
"''HOW DARE YOU ALL. I'M CALLING MY LAWYER.''"))))));
Heal(Event Player, Null, 10);
Stop Facing(Event Player);
Set Status(Players On Hero(Hero(Bastion), Team 2), Null, Stunned, 4.116);
Wait(0.100, Ignore Condition);
Kill(Global.boss_upper, Global.boss_upper);
Wait(0.016, Ignore Condition);
Set Status(Event Player, Null, Phased Out, 9999);
Wait(4, Ignore Condition);
Start Facing(Global.boss_upper, Direction Towards(Eye Position(Global.boss_upper), Eye Position(Closest Player To(
Global.boss_upper, Team 1))), 300, To World, Direction and Turn Rate);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''THIS MISSION OF YOURS... IS IT A PERFECT WHOLE INTEGER?''")));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''BECAUSE IT'S COMPLETELY POINTLESS. {LAUGHTRACK_16.WAV}''")));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''I AM ALEPH-NULL, THE FIRST INFINITY. MY RESOURCES ARE INFINITE.''")));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''STRIKE ME DOWN AND I WILL SIMPLY RE-MANUFACTURE MYSELF.''")));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''WE CAN LITERALLY DO THIS ALL DAY.''")));
Wait(3.500, Abort When False);
If(Has Spawned(Players In Slot(0, Team 1)));
Small Message(All Players(All Teams), Custom String("{0} {2}: {1}", Hero Icon String(Hero Of(Players In Slot(0, Team 1))),
Custom String("''DOESN'T MATTER. WE'LL FIGURE SOMETHING OUT EVENTUALLY. WE ALWAYS DO.''"), Players In Slot(0, Team 1)));
Wait(3.500, Abort When False);
End;
If(Has Spawned(Players In Slot(3, Team 1)));
Small Message(All Players(All Teams), Custom String("{0} {2}: {1}", Hero Icon String(Hero Of(Players In Slot(3, Team 1))),
Custom String("''WE WERE GIVEN ORDERS. WE WILL SEE THEM TO COMPLETION, NO MATTER WHAT.''"), Players In Slot(3, Team 1)));
Wait(3.500, Abort When False);
End;
If(Has Spawned(Players In Slot(2, Team 1)));
Small Message(All Players(All Teams), Custom String("{0} {2}: {1}", Hero Icon String(Hero Of(Players In Slot(2, Team 1))),
Custom String("''YOU TALK BIG FOR A LITERAL STACK OF SIX BASTIONS.''"), Players In Slot(2, Team 1)));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} {2}: {1}", Hero Icon String(Hero Of(Players In Slot(2, Team 1))),
Custom String("''YOU WANNA TANGO ALL DAY? LET'S DANCE, EIFFEL TOWER.''"), Players In Slot(2, Team 1)));
Wait(3.500, Abort When False);
End;
If(Has Spawned(Players In Slot(1, Team 1)));
Small Message(All Players(All Teams), Custom String("{0} {2}: {1}", Hero Icon String(Hero Of(Players In Slot(1, Team 1))),
Custom String("''IM STILL QUEUEING''"), Players In Slot(1, Team 1)));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} {2}: {1}", Hero Icon String(Hero Of(Players In Slot(1, Team 1))),
Custom String("''ITS BEEN FIFTY MINUTES AND I WANT TO DIE''"), Players In Slot(1, Team 1)));
Wait(3.500, Abort When False);
End;
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''ABSOLUTELY RIDICULOUS. YOU ALL HAVE EXHAUSTED MY PATIENCE.''")));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''SHIFTING OMNIUM INTO OVERDRIVE MODE.''")));
Create Dummy Bot(Hero(D.Va), Team 2, 3, Global.boss_upper, Vector(0, 0, 0));
Set Invisible(Last Created Entity, All);
Set Status(Last Created Entity, Null, Phased Out, 9999);
Create Dummy Bot(Hero(D.Va), Team 2, 2, Position Of(Global.boss_upper) + Vector(0, 45, 0), Vector(0, 0, 0));
Set Invisible(Last Created Entity, All);
Set Status(Last Created Entity, Null, Phased Out, 9999);
Set Respawn Max Time(Last Created Entity, 9999);
Event Player.temp_pos = Position Of(Event Player);
}
}
rule("special attack")
{
event
{
Ongoing - Global;
}
conditions
{
(Global.boss_phase == 0 || Global.boss_phase == 2) == True;
Global.block_piece_dead == 0;
Global.begin == True;
Global.another_buffer_bc_im_lazy == True;
}
actions
{
Wait(5 - 2.400 * Global.boss_phase, Abort When False);
Global.special_attack = Empty Array;
For Global Variable(for_count, 0, Count Of(Filtered Array(Players On Hero(Hero(Bastion), Team 2), Is Alive(
Current Array Element))), 1);
Modify Global Variable(special_attack, Append To Array, Slot Of(Filtered Array(Players On Hero(Hero(Bastion), Team 2), Is Alive(
Current Array Element))[Global.for_count]));
End;
Modify Global Variable(special_attack, Remove From Array By Value, Append To Array(Global.special_attack_setup, 0));
If(Global.special_attack == Empty Array);
Global.special_attack = Global.special_attack_setup;
Else;
Global.special_attack = Random Value In Array(Global.special_attack);
End;
If(Global.special_attack == 1);
Call Subroutine(hack);
Else If(Global.special_attack == 2);
Call Subroutine(electric_field);
Else If(Global.special_attack == 3);
Call Subroutine(neurotoxin);
Else If(Global.special_attack == 4);
Call Subroutine(antigrav);
Else If(Global.special_attack == 5);
Call Subroutine(lasers);
End;
Global.special_attack_setup = Global.special_attack;
Global.special_attack = 0;
Call Subroutine(destroy_global_spec_attack_effec);
Loop If Condition Is True;
}
}
rule("neurotoxin damage")
{
event
{
Ongoing - Each Player;
Team 1;
All;
}
conditions
{
Is True For Any(Global.neurotoxin_pos_array, Distance Between(Event Player, Current Array Element) < Global.neurotoxin_radius)
== True;
Y Component Of(Position Of(Event Player)) <= 3 + 45 * Global.begin_phase_4;
disabled Global.special_attack == 3;
Global.neurotoxin_radius > 0.100;
}
actions
{
Event Player.in_toxins = True;
Damage(Event Player, Global.boss_upper, 5);
Wait(0.050, Ignore Condition);
Loop If Condition Is True;
Wait(0.100, Ignore Condition);
Event Player.in_toxins = False;
}
}
rule("grace period spawn")
{
event
{
Ongoing - Each Player;
Team 1;
All;
}
conditions
{
Is Alive(Event Player) == True;
Is Dummy Bot(Event Player) == False;
Event Player.is_dead == False;
}
actions
{
Set Status(Event Player, Null, Phased Out, 3);
}
}
rule("neurotoxin")
{
event
{
Subroutine;
neurotoxin;
}
actions
{
Global.neurotoxin_radius = 0;
Global.neurotoxin_max_radius = 10;
Global.neurotoxin_pos_array = Vector(Random Real(0, 15), 1, Random Real(0, 15));
Modify Global Variable(neurotoxin_pos_array, Append To Array, Vector(Random Real(-15, 0), 1, Random Real(0, 15)));
Modify Global Variable(neurotoxin_pos_array, Append To Array, Vector(Random Real(0, 15), 1, Random Real(-15, 0)));
Modify Global Variable(neurotoxin_pos_array, Append To Array, Vector(Random Real(-15, 0), 1, Random Real(-15, 0)));
For Global Variable(for_count, 0, 2, 1);
Call Subroutine(create_smoke_sound);
Create Effect(All Players(All Teams), Smoke Sound, Lime Green, Global.neurotoxin_pos_array[2],
200 / Global.neurotoxin_max_radius * Global.neurotoxin_radius, Visible To Position and Radius);
Call Subroutine(add_effect_to);
Create Effect(All Players(All Teams), Smoke Sound, Lime Green, Global.neurotoxin_pos_array[3],
200 / Global.neurotoxin_max_radius * Global.neurotoxin_radius, Visible To Position and Radius);
Call Subroutine(add_effect_to);
End;
Call Subroutine(create_toxin_stuff);
Create Effect(All Players(All Teams), Cloud, Lime Green, Global.neurotoxin_pos_array[2], Global.neurotoxin_radius,
Visible To Position and Radius);
Modify Global Variable(special_attack_effects, Append To Array, Last Created Entity);
Create Effect(All Players(All Teams), Cloud, Lime Green, Global.neurotoxin_pos_array[3], Global.neurotoxin_radius,
Visible To Position and Radius);
Modify Global Variable(special_attack_effects, Append To Array, Last Created Entity);
Create Effect(All Players(All Teams), Ring, Green, Global.neurotoxin_pos_array[0], Global.neurotoxin_radius,
Visible To Position and Radius);
Modify Global Variable(special_attack_effects, Append To Array, Last Created Entity);
Create Effect(All Players(All Teams), Ring, Green, Global.neurotoxin_pos_array[1], Global.neurotoxin_radius,
Visible To Position and Radius);
Modify Global Variable(special_attack_effects, Append To Array, Last Created Entity);
Create Effect(All Players(All Teams), Ring, Green, Global.neurotoxin_pos_array[2], Global.neurotoxin_radius,
Visible To Position and Radius);
Modify Global Variable(special_attack_effects, Append To Array, Last Created Entity);
Create Effect(All Players(All Teams), Ring, Green, Global.neurotoxin_pos_array[3], Global.neurotoxin_radius,
Visible To Position and Radius);
Modify Global Variable(special_attack_effects, Append To Array, Last Created Entity);
Chase Global Variable At Rate(neurotoxin_radius, Global.neurotoxin_max_radius, 2, Destination and Rate);
Call Subroutine(random_message);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Append To Array(
Custom String("''HOW UNFORTUNATE THAT HUMANS MUST BREATHE. DON'T YOU AGREE?''"), Append To Array(Custom String(
"''WHY DON'T WE ALL CALM DOWN AND TAKE A DEEP BREATH?''"), Append To Array(Custom String("''ENGAGING TOXIC GAS EMITTERS.''"),
Custom String("''RELEASING DEADLY NEUROTOXIN.''"))))[Global.random_message]));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} {2}: {1}", Hero Icon String(Hero Of(Players In Slot(Global.random_message,
Team 1))), Append To Array(Custom String("''WATCH OUT FOR THOSE GAS CLOUDS! STAY AWAY FROM THEM!''"), Append To Array(
Custom String("''SAID NO PLAT EVER''"), Append To Array(Custom String(
"''GASSING PEOPLE IN A CHAMBER? KIND OF A TOUCHY SUBJECT.''"), Custom String("''THAT SOUNDS... AWFULLY FAMILIAR.''"))))
[Global.random_message], Players In Slot(Global.random_message, Team 1)));
Wait(6.500, Abort When False);
Chase Global Variable At Rate(neurotoxin_radius, 0, 5, Destination and Rate);
Wait(2.500, Abort When False);
}
}
rule("special attack reset")
{
event
{
Subroutine;
special_attack_reset;
}
actions
{
Global.laser_length = 0;
Stop Chasing Global Variable(laser_length);
Stop Chasing Global Variable(neurotoxin_radius);
Global.special_attack = 0;
Global.neurotoxin_radius = 0;
Global.electrified = False;
Call Subroutine(destroy_global_spec_attack_effec);
Global.gravving_bastion = 0;
Global.using_field = False;
Clear Status(All Players(Team 1), Hacked);
}
}
rule("lasers")
{
event
{
Subroutine;
lasers;
}
actions
{
Create Effect(All Players(All Teams), Energy Sound, White, Eye Position(Global.laser_bastion) + Vector Towards(Eye Position(
Global.laser_bastion), Global.laser_1) * 0.500, Global.laser_length * 8, Visible To Position and Radius);
Modify Global Variable(special_attack_effects, Append To Array, Last Created Entity);
Create Effect(All Players(All Teams), Energy Sound, White, Eye Position(Global.laser_bastion) + Vector Towards(Eye Position(
Global.laser_bastion), Global.laser_2) * 0.500, Global.laser_length * 8, Visible To Position and Radius);
Modify Global Variable(special_attack_effects, Append To Array, Last Created Entity);
Create Effect(All Players(All Teams), Energy Sound, White, Eye Position(Global.laser_bastion) + Vector Towards(Eye Position(
Global.laser_bastion), Global.laser_3) * 0.500, Global.laser_length * 8, Visible To Position and Radius);
Modify Global Variable(special_attack_effects, Append To Array, Last Created Entity);
Create Effect(All Players(All Teams), Energy Sound, White, Eye Position(Global.laser_bastion) + Vector Towards(Eye Position(
Global.laser_bastion), Global.laser_4) * 0.500, Global.laser_length * 8, Visible To Position and Radius);
Modify Global Variable(special_attack_effects, Append To Array, Last Created Entity);
Global.laser_length = 0;
Global.laser_random = Random Integer(0, 1);
Global.laser_1 = Eye Position(Global.laser_bastion);
Global.laser_2 = Eye Position(Global.laser_bastion);
Global.laser_3 = Eye Position(Global.laser_bastion);
Global.laser_4 = Eye Position(Global.laser_bastion);
Chase Global Variable At Rate(laser_1, Eye Position(Global.laser_bastion) + Direction From Angles(Global.laser_rotation + 0,
Global.laser_pitch) * Global.laser_length, 1000, Destination and Rate);
Chase Global Variable At Rate(laser_2, Eye Position(Global.laser_bastion) + Direction From Angles(Global.laser_rotation + 90,
Global.laser_pitch * (-1 + Global.begin_phase_4 * 2)) * Global.laser_length, 1000, Destination and Rate);
Chase Global Variable At Rate(laser_3, Eye Position(Global.laser_bastion) + Direction From Angles(Global.laser_rotation + 180,
Global.laser_pitch) * Global.laser_length, 1000, Destination and Rate);
Chase Global Variable At Rate(laser_4, Eye Position(Global.laser_bastion) + Direction From Angles(Global.laser_rotation + 270,
Global.laser_pitch * (-1 + Global.begin_phase_4 * 2)) * Global.laser_length, 1000, Destination and Rate);
Create Beam Effect(All Players(All Teams), Bad Beam, Eye Position(Global.laser_bastion), Ray Cast Hit Position(Eye Position(
Global.laser_bastion), Global.laser_1, All Players(Team 1), Event Player, True), Red, Visible To Position and Radius);
Modify Global Variable(special_attack_effects, Append To Array, Last Created Entity);
Create Beam Effect(All Players(All Teams), Bad Beam, Eye Position(Global.laser_bastion), Ray Cast Hit Position(Eye Position(
Global.laser_bastion), Global.laser_2, All Players(Team 1), Event Player, True), Red, Visible To Position and Radius);
Modify Global Variable(special_attack_effects, Append To Array, Last Created Entity);
Create Beam Effect(All Players(All Teams), Bad Beam, Eye Position(Global.laser_bastion), Ray Cast Hit Position(Eye Position(
Global.laser_bastion), Global.laser_3, All Players(Team 1), Event Player, True), Red, Visible To Position and Radius);
Modify Global Variable(special_attack_effects, Append To Array, Last Created Entity);
Create Beam Effect(All Players(All Teams), Bad Beam, Eye Position(Global.laser_bastion), Ray Cast Hit Position(Eye Position(
Global.laser_bastion), Global.laser_4, All Players(Team 1), Event Player, True), Red, Visible To Position and Radius);
Modify Global Variable(special_attack_effects, Append To Array, Last Created Entity);
Chase Global Variable At Rate(laser_length, 50, 10 + 40 * Global.begin_phase_4, Destination and Rate);
Chase Global Variable At Rate(laser_rotation, Global.laser_random * 360, 45 + 135 * Global.begin_phase_4, Destination and Rate);
If(!Global.begin_phase_4);
Call Subroutine(random_message);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Append To Array(
Custom String("''ACTIVATING LASER CUTTERS.''"), Append To Array(Custom String("''I AM FIRING MY LASERS.''"), Append To Array(
Custom String("''RING AROUND THE ROSIE.''"), Custom String("''PERHAPS YOU FEEL A LITTLE COLD? THIS SHOULD HELP.''"))))
[Global.random_message]));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} {2}: {1}", Hero Icon String(Hero Of(Players In Slot(Global.random_message,
Team 1))), Append To Array(Custom String("''SON OF A GUN, THOSE LASERS BURN THROUGH FLESH LIKE PAPER!''"), Append To Array(
Custom String("''DEAD MEME''"), Append To Array(Custom String("''GOD, I HATED THAT SONG.''"), Custom String(
"''NO THANK YOU, MISTER A. NULL. I PREFER MY LIMBS INTACT.''"))))[Global.random_message], Players In Slot(
Global.random_message, Team 1)));
Wait(3.500, Abort When False);
If(Global.random_message == 3);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: ''I SAID DON'T CALL ME THAT.''", Hero Icon String(Hero(
Bastion)), Null, Players In Slot(Global.random_message, Team 1)));
End;
Else;
Global.laser_pitch = 90;
Chase Global Variable At Rate(laser_pitch, -10, 25, Destination and Rate);
End;
Wait(3, Abort When False);
Chase Global Variable At Rate(laser_length, 0, 50, Destination and Rate);
Wait(1.200, Abort When False);
Global.laser_length = 0;
Call Subroutine(destroy_global_spec_attack_effec);
}
}
rule("laser constant spinning")
{
event
{
Ongoing - Global;
}
conditions
{
Global.laser_rotation <= 0;
Global.laser_random == 0;
}
actions
{
Global.laser_rotation = 360;
If(Global.begin_phase_4);
Chase Global Variable At Rate(laser_rotation, 0, 180, Destination and Rate);
Else;
Chase Global Variable At Rate(laser_rotation, 0, 45, Destination and Rate);
End;
}
}
rule("laser constant spinning 2")
{
event
{
Ongoing - Global;
}
conditions
{
Global.laser_rotation >= 360;
Global.laser_random == 1;
}
actions
{
Global.laser_rotation = 0;
If(Global.begin_phase_4);
Chase Global Variable At Rate(laser_rotation, 360, 180, Destination and Rate);
Else;
Chase Global Variable At Rate(laser_rotation, 360, 45, Destination and Rate);
End;
}
}
rule("laser pitch")
{
event
{
Ongoing - Global;
}
conditions
{
Global.laser_pitch <= -8;
Global.begin_phase_4 == False;
}
actions
{
Chase Global Variable At Rate(laser_pitch, 8, 20, Destination and Rate);
}
}
rule("laser pitch 2")
{
event
{
Ongoing - Global;
}
conditions
{
Global.laser_pitch >= 8;
Global.begin_phase_4 == False;
}
actions
{
Chase Global Variable At Rate(laser_pitch, -8, 20, Destination and Rate);
}
}
rule("laser damage")
{
event
{
Ongoing - Each Player;
Team 1;
All;
}
conditions
{
Is True For Any(Append To Array(Global.laser_1, Append To Array(Global.laser_2, Append To Array(Global.laser_3, Global.laser_4))),
Ray Cast Hit Player(Eye Position(Global.laser_bastion), Current Array Element, Event Player, Null, True) == Event Player)
== True;
Global.laser_length > 0.100;
}
actions
{
Set Status(Event Player, Global.boss_upper, Burning, 0.016);
Damage(Event Player, Global.boss_upper, 14);
Wait(0.016, Ignore Condition);
Loop If Condition Is True;
Set Status(Event Player, Global.boss_upper, Burning, 3);
Start Damage Over Time(Event Player, Global.boss_upper, 3, 20);
}
}
rule("fix falling through map")
{
event
{
Ongoing - Each Player;
Team 2;
Bastion;
}
conditions
{
Y Component Of(Position Of(Event Player)) < -1;
}
actions
{
Teleport(Event Player, World Vector Of(Vector(0, 5, 0), Event Player, Rotation And Translation));
Wait(0.250, Ignore Condition);
Loop If Condition Is True;
}
}
rule("ball effects")
{
event
{
Ongoing - Each Player;
Team 2;
Bastion;
}
conditions
{
(Global.boss_phase % 2 == 0) == True;
Is Alive(Event Player) == True;
}
actions
{
If(Global.boss_phase != 4);
Event Player.unit_type = Slot Of(Event Player);
Else;
While(!Event Player.unit_type || Is True For Any(Remove From Array(Filtered Array(Players On Hero(Hero(Bastion), Team 2), Is Alive(
Current Array Element)), Event Player), Current Array Element.unit_type == Event Player.unit_type));
Event Player.unit_type = Random Integer(1, 5);
End;
End;
Event Player.ball_effect_1 = Eye Position(Event Player);
Event Player.ball_effect_2 = Eye Position(Event Player);
Event Player.ball_effect_3 = Eye Position(Event Player);
Chase Player Variable At Rate(Event Player, ball_effect_1, Eye Position(Event Player) + Direction From Angles(
Event Player.ball_rotate + 0, 0) * (2 + (Slot Of(Event Player) == 0) + Global.ball_length), 10000, Destination and Rate);
Chase Player Variable At Rate(Event Player, ball_effect_2, Eye Position(Event Player) + Direction From Angles(
Event Player.ball_rotate + 120 + 60 * (Slot Of(Event Player) != 0), 0) * (2 + (Slot Of(Event Player) == 0)
+ Global.ball_length), 10000, Destination and Rate);
If(Slot Of(Event Player) == 0);
Chase Player Variable At Rate(Event Player, ball_effect_3, Eye Position(Event Player) + Direction From Angles(
Event Player.ball_rotate + 240, 0) * (2 + (Slot Of(Event Player) == 0) + Global.ball_length), 10000, Destination and Rate);
End;
If(Slot Of(Event Player) == 0);
Create Beam Effect(All Players(All Teams), Good Beam, Event Player.ball_effect_2, Event Player.ball_effect_1, White,
Visible To Position and Radius);
Modify Player Variable(Event Player, ball_effect_array, Append To Array, Last Created Entity);
Create Beam Effect(All Players(All Teams), Good Beam, Event Player.ball_effect_3, Event Player.ball_effect_2, White,
Visible To Position and Radius);
Modify Player Variable(Event Player, ball_effect_array, Append To Array, Last Created Entity);
Create Beam Effect(All Players(All Teams), Good Beam, Event Player.ball_effect_1, Event Player.ball_effect_3, White,
Visible To Position and Radius);
Modify Player Variable(Event Player, ball_effect_array, Append To Array, Last Created Entity);
Chase Player Variable At Rate(Event Player, ball_rotate, 360 * (Event Player.unit_type % 2 == 0), 450, Destination and Rate);
Create Effect(All Players(All Teams), Orb, White, Event Player.ball_effect_1, 1, Visible To Position and Radius);
Modify Player Variable(Event Player, ball_effect_array, Append To Array, Last Created Entity);
Create Effect(All Players(All Teams), Orb, White, Event Player.ball_effect_2, 1, Visible To Position and Radius);
Modify Player Variable(Event Player, ball_effect_array, Append To Array, Last Created Entity);
Create Effect(All Players(All Teams), Orb, White, Event Player.ball_effect_3, 1, Visible To Position and Radius);
Modify Player Variable(Event Player, ball_effect_array, Append To Array, Last Created Entity);
Else If(Event Player.unit_type == 1);
Create Beam Effect(All Players(All Teams), Good Beam, Event Player.ball_effect_2, Event Player.ball_effect_1, Purple,
Visible To Position and Radius);
Modify Player Variable(Event Player, ball_effect_array, Append To Array, Last Created Entity);
Chase Player Variable At Rate(Event Player, ball_rotate, 360 * (Event Player.unit_type % 2 == 0), 450, Destination and Rate);
Create Effect(All Players(All Teams), Orb, Purple, Event Player.ball_effect_1, 1, Visible To Position and Radius);
Modify Player Variable(Event Player, ball_effect_array, Append To Array, Last Created Entity);
Create Effect(All Players(All Teams), Orb, Purple, Event Player.ball_effect_2, 1, Visible To Position and Radius);
Modify Player Variable(Event Player, ball_effect_array, Append To Array, Last Created Entity);
Play Effect(All Players(All Teams), Good Explosion, Purple, Event Player, 3);
Else If(Event Player.unit_type == 2);
Chase Player Variable At Rate(Event Player, ball_rotate, 360 * (Event Player.unit_type % 2 == 0), 250, Destination and Rate);
Create Effect(All Players(All Teams), Orb, Aqua, Event Player.ball_effect_1, 1, Visible To Position and Radius);
Modify Player Variable(Event Player, ball_effect_array, Append To Array, Last Created Entity);
Create Effect(All Players(All Teams), Orb, Aqua, Event Player.ball_effect_2, 1, Visible To Position and Radius);
Modify Player Variable(Event Player, ball_effect_array, Append To Array, Last Created Entity);
Create Beam Effect(All Players(All Teams), Good Beam, Event Player.ball_effect_2, Event Player.ball_effect_1, Aqua,
Visible To Position and Radius);
Modify Player Variable(Event Player, ball_effect_array, Append To Array, Last Created Entity);
Play Effect(All Players(All Teams), Good Explosion, Aqua, Event Player, 3);
Else If(Event Player.unit_type == 3);
Chase Player Variable At Rate(Event Player, ball_rotate, 360 * (Event Player.unit_type % 2 == 0), 70, Destination and Rate);
Create Effect(All Players(All Teams), Orb, Green, Event Player.ball_effect_1, 1, Visible To Position and Radius);
Modify Player Variable(Event Player, ball_effect_array, Append To Array, Last Created Entity);
Create Effect(All Players(All Teams), Orb, Green, Event Player.ball_effect_2, 1, Visible To Position and Radius);
Modify Player Variable(Event Player, ball_effect_array, Append To Array, Last Created Entity);
Create Beam Effect(All Players(All Teams), Good Beam, Event Player.ball_effect_2, Event Player.ball_effect_1, Green,
Visible To Position and Radius);
Modify Player Variable(Event Player, ball_effect_array, Append To Array, Last Created Entity);
Play Effect(All Players(All Teams), Good Explosion, Green, Event Player, 3);
Else If(Event Player.unit_type == 4);
Chase Player Variable At Rate(Event Player, ball_rotate, 360 * (Event Player.unit_type % 2 == 0), 330, Destination and Rate);
Create Effect(All Players(All Teams), Orb, Yellow, Event Player.ball_effect_1, 1, Visible To Position and Radius);
Modify Player Variable(Event Player, ball_effect_array, Append To Array, Last Created Entity);
Create Effect(All Players(All Teams), Orb, Yellow, Event Player.ball_effect_2, 1, Visible To Position and Radius);
Modify Player Variable(Event Player, ball_effect_array, Append To Array, Last Created Entity);
Create Beam Effect(All Players(All Teams), Good Beam, Event Player.ball_effect_2, Event Player.ball_effect_1, Yellow,
Visible To Position and Radius);
Modify Player Variable(Event Player, ball_effect_array, Append To Array, Last Created Entity);
Play Effect(All Players(All Teams), Good Explosion, Yellow, Event Player, 3);
Else If(Event Player.unit_type == 5);
Chase Player Variable At Rate(Event Player, ball_rotate, 360 * (Event Player.unit_type % 2 == 0), 650, Destination and Rate);
Create Effect(All Players(All Teams), Orb, Red, Event Player.ball_effect_1, 1, Visible To Position and Radius);
Modify Player Variable(Event Player, ball_effect_array, Append To Array, Last Created Entity);
Create Effect(All Players(All Teams), Orb, Red, Event Player.ball_effect_2, 1, Visible To Position and Radius);
Modify Player Variable(Event Player, ball_effect_array, Append To Array, Last Created Entity);
Create Beam Effect(All Players(All Teams), Good Beam, Event Player.ball_effect_2, Event Player.ball_effect_1, Red,
Visible To Position and Radius);
Modify Player Variable(Event Player, ball_effect_array, Append To Array, Last Created Entity);
Global.laser_bastion = Event Player;
Play Effect(All Players(All Teams), Good Explosion, Red, Event Player, 3);
End;
}
}
rule("ball effect rotate 1")
{
event
{
Ongoing - Each Player;
Team 2;
Bastion;
}
conditions
{
Event Player.unit_type % 2 == 0;
Event Player.ball_rotate >= 360;
}
actions
{
Event Player.ball_rotate = 0;
If(Event Player.unit_type == 0 && !Global.begin_phase_4);
Chase Player Variable At Rate(Event Player, ball_rotate, 360 * (Event Player.unit_type % 2 == 0), 450, Destination and Rate);
Else If(Event Player.unit_type == 2);
Chase Player Variable At Rate(Event Player, ball_rotate, 360 * (Event Player.unit_type % 2 == 0), 250, Destination and Rate);
Else If(Event Player.unit_type == 4);
Chase Player Variable At Rate(Event Player, ball_rotate, 360 * (Event Player.unit_type % 2 == 0), 330, Destination and Rate);
End;
}
}
rule("ball effect rotate 2")
{
event
{
Ongoing - Each Player;
Team 2;
All;
}
conditions
{
Event Player.unit_type % 2 != 0;
Event Player.ball_rotate <= 0;
}
actions
{
Event Player.ball_rotate = 360;
If(Event Player.unit_type == 1);
Chase Player Variable At Rate(Event Player, ball_rotate, 360 * (Event Player.unit_type % 2 == 0), 450, Destination and Rate);
Else If(Event Player.unit_type == 3);
Chase Player Variable At Rate(Event Player, ball_rotate, 360 * (Event Player.unit_type % 2 == 0), 70, Destination and Rate);
Else If(Event Player.unit_type == 5);
Chase Player Variable At Rate(Event Player, ball_rotate, 360 * (Event Player.unit_type % 2 == 0), 650, Destination and Rate);
End;
}
}
rule("ball effects delete")
{
event
{
Ongoing - Each Player;
Team 2;
Bastion;
}
conditions
{
(Global.boss_phase % 2 != 0 || Is Dead(Event Player)) == True;
}
actions
{
While(Event Player.ball_effect_array != Empty Array);
Destroy Effect(First Of(Event Player.ball_effect_array));
Modify Player Variable(Event Player, ball_effect_array, Remove From Array By Index, 0);
End;
}
}
rule("hack")
{
event
{
Subroutine;
hack;
}
actions
{
Set Status(Remove From Array(All Players(Team 2), Players On Hero(Hero(Moira), Team 2)), Null, Phased Out, 1.500);
Global.hacking_bastion = Filtered Array(Players On Hero(Hero(Bastion), Team 2), Current Array Element.unit_type == 1);
Create Dummy Bot(Hero(Sombra), Team 1, 4, Global.hacking_bastion, Vector(0, 0, 0));
Set Status(Last Created Entity, Null, Phased Out, 9999);
Set Gravity(Last Created Entity, 0);
If(!Global.begin_phase_4);
Call Subroutine(random_message);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Append To Array(
Custom String("''EXCUSE ME, NO FUN ALLOWED.''"), Append To Array(Custom String("''ELECTROMAGNETIC PULSE ACTIVATED.''"),
Append To Array(Custom String("''BLOCKING ALL SIGNALS.''"), Custom String("''ELECTRONIC DISRUPTION MODULE ONLINE.''"))))
[Global.random_message]));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} {2}: {1}", Hero Icon String(Hero Of(Players In Slot(Global.random_message,
Team 1))), Append To Array(Custom String("''THAT WASN'T VERY CASH MONEY OF YOU!''"), Append To Array(Custom String(
"''DUDE JUST SAY EMP U NERD''"), Append To Array(Custom String("''SH*T, I'VE GONE DARK. HELLO? DOES ANYONE COPY?''"),
Custom String("''MY SYSTEMS HAVE BEEN COMPROMISED. IS EVERYONE ALRIGHT?''"))))[Global.random_message], Players In Slot(
Global.random_message, Team 1)));
End;
Wait(2.500, Abort When False);
}
}
rule("sombra hack")
{
event
{
Ongoing - Each Player;
Team 1;
Sombra;
}
conditions
{
Is Dummy Bot(Event Player) == True;
Is Using Ultimate(Event Player) == False;
}
actions
{
Set Ultimate Charge(Event Player, 100);
Wait(0.016, Ignore Condition);
Press Button(Event Player, Ultimate);
Loop If Condition Is True;
Wait(0.050, Ignore Condition);
Set Status(Remove From Array(All Players(Team 1), Event Player), Global.boss_upper, Hacked, 2 + 8 * !Global.begin_phase_4);
Call Subroutine(cancel_momentum);
Wait(0.300, Ignore Condition);
Clear Status(All Players(Team 2), Hacked);
Destroy Dummy Bot(Team 1, Slot Of(Event Player));
}
}
rule("antigrav")
{
event
{
Subroutine;
antigrav;
}
actions
{
Wait(1, Abort When False);
Global.gravving_bastion = Filtered Array(Players On Hero(Hero(Bastion), Team 2), Current Array Element.unit_type == 4);
For Global Variable(for_count, 1, 20, 1);
Create Effect(All Players(All Teams), Sparkles, Yellow, Vector(0, Global.for_count * 2, 0), 45, None);
Modify Global Variable(special_attack_effects, Append To Array, Last Created Entity);
End;
Call Subroutine(random_message);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Append To Array(
Custom String("''GRAVITY OFF. I HOPE NONE OF YOU ARE AFRAID OF HEIGHTS.''"), Append To Array(Custom String(
"''ANTI-GRAVITY MODULE INITIATED.''"), Append To Array(Custom String("''WE ALL FLOAT DOWN HERE.''"), Custom String(
"''DEPRESSURISING CHAMBER ATMOSPHERE.''"))))[Global.random_message]));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} {2}: {1}", Hero Icon String(Hero Of(Players In Slot(Global.random_message,
Team 1))), Append To Array(Custom String("''IT'S OKAY, {0}... JUST BREATHE... DON'T LOOK DOWN...''", Players In Slot(
Global.random_message, Team 1)), Append To Array(Custom String("''NGL THIS IS KINDA FUN WHEEEEE''"), Append To Array(
Custom String("''GOD, I LOVED THAT MOVIE.''"), Custom String("''I TOLD YOU, WE SHOULD'VE INSTALLED MAGNETS IN OUR SHOES.''"))))
[Global.random_message], Players In Slot(Global.random_message, Team 1)));
Wait(7, Abort When False);
Global.gravving_bastion = 0;
}
}
rule("antigrav on")
{
event
{
Ongoing - Each Player;
Team 1;
All;
}
conditions
{
Global.gravving_bastion != 0;
Is Alive(Event Player) == True;
}
actions
{
Set Gravity(Event Player, 0);
Play Effect(All Players(All Teams), Buff Explosion Sound, White, Event Player, 200);
Play Effect(All Players(All Teams), Ring Explosion, Yellow, Event Player, 6);
If(Global.begin_phase_4);
Apply Impulse(Event Player, Direction From Angles(Horizontal Angle From Direction(Direction Towards(Global.gravving_bastion,
Event Player)), -20), 10, To World, Cancel Contrary Motion);
Else;
Apply Impulse(Event Player, Direction From Angles(Random Real(0, 360), Random Real(-135, -45)), 1, To World,
Cancel Contrary Motion);
Wait(0.500, Ignore Condition);
End;
Set Status(Event Player, Global.boss_upper, Rooted, 9999);
}
}
rule("antigrav off")
{
event
{
Ongoing - Each Player;
Team 1;
All;
}
conditions
{
(!Global.gravving_bastion || Is Dead(Global.gravving_bastion)) == True;
}
actions
{
Wait(0.200, Ignore Condition);
Set Gravity(Event Player, 100);
Clear Status(Event Player, Rooted);
}
}
rule("antigrav damage")
{
event
{
Ongoing - Each Player;
Team 1;
All;
}
conditions
{
Global.special_attack == 4;
}
actions
{
Damage(Event Player, Global.boss_upper, 7);
Wait(1, Abort When False);
Loop If Condition Is True;
}
}
rule("laser cutter effects")
{
event
{
Ongoing - Global;
}
conditions
{
Global.laser_length > 0.100;
}
actions
{
If(Distance Between(Eye Position(Global.laser_bastion), Ray Cast Hit Position(Eye Position(Global.laser_bastion), Global.laser_1,
All Players(Team 1), Null, True)) < Global.laser_length + 0.100);
Play Effect(All Players(All Teams), Bad Explosion, Red, Ray Cast Hit Position(Eye Position(Global.laser_bastion), Global.laser_1,
All Players(Team 1), Null, True), 0.200);
End;
If(Distance Between(Eye Position(Global.laser_bastion), Ray Cast Hit Position(Eye Position(Global.laser_bastion), Global.laser_2,
All Players(Team 1), Null, True)) < Global.laser_length + 0.100);
Play Effect(All Players(All Teams), Bad Explosion, Red, Ray Cast Hit Position(Eye Position(Global.laser_bastion), Global.laser_2,
All Players(Team 1), Null, True), 0.200);
End;
If(Distance Between(Eye Position(Global.laser_bastion), Ray Cast Hit Position(Eye Position(Global.laser_bastion), Global.laser_3,
All Players(Team 1), Null, True)) < Global.laser_length + 0.100);
Play Effect(All Players(All Teams), Bad Explosion, Red, Ray Cast Hit Position(Eye Position(Global.laser_bastion), Global.laser_3,
All Players(Team 1), Null, True), 0.200);
End;
If(Distance Between(Eye Position(Global.laser_bastion), Ray Cast Hit Position(Eye Position(Global.laser_bastion), Global.laser_4,
All Players(Team 1), Null, True)) < Global.laser_length + 0.100);
Play Effect(All Players(All Teams), Bad Explosion, Red, Ray Cast Hit Position(Eye Position(Global.laser_bastion), Global.laser_4,
All Players(Team 1), Null, True), 0.200);
End;
Wait(0.050, Ignore Condition);
Loop If Condition Is True;
}
}
rule("hammy bomb")
{
event
{
Ongoing - Global;
}
conditions
{
(Global.boss_phase == 1 || Global.boss_phase == 3) == True;
Is Alive(Global.boss_lower) == True;
}
actions
{
Wait(Random Real(7, 10), Abort When False);
Create Dummy Bot(Hero(Wrecking Ball), Team 2, Slot Of(First Of(Sorted Array(Remove From Array(All Players(Team 2), Append To Array(
Global.boss_upper, Global.boss_lower)), Slot Of(Current Array Element)))), Global.boss_upper, Vector(0, 0, 0));
Call Subroutine(hammy_bomb);
Wait(Random Real(7, 10), Abort When False);
Create Dummy Bot(Hero(Wrecking Ball), Team 2, Slot Of(Sorted Array(Remove From Array(All Players(Team 2), Append To Array(
Global.boss_upper, Global.boss_lower)), Slot Of(Current Array Element))[1]), Global.boss_upper, Vector(0, 0, 0));
Call Subroutine(hammy_bomb);
Loop If Condition Is True;
}
}
rule("init health HUD")
{
event
{
Ongoing - Each Player;
Team 2;
All;
}
conditions
{
Has Spawned(Event Player) == True;
Global.begin == True;
Event Player.unit_type != 0;
Global.boss_upper != Event Player;
disabled Global.boss_phase != 4;
}
actions
{
If(Global.boss_phase != 4);
If(Global.boss_phase % 2 == 0);
If(Hero Of(Event Player) == Hero(Bastion));
If(Event Player.unit_type == 1);
Create In-World Text(All Players(All Teams), Custom String("{0} E.M.P. JAMMER UNIT {1}     HP: {2}      ", Hero Icon String(Hero(
Bastion)), Ability Icon String(Hero(Sombra), Button(Ultimate)), Custom String("{0}/{1}", Round To Integer(Event Player.health,
Up), Round To Integer(Event Player.max_health, Up))), World Vector Of(Vector(0, 1, 0), Event Player, Rotation And Translation),
1.500, Do Not Clip, Visible To Position and String, Purple, Default Visibility);
Modify Player Variable(Event Player, health_HUD, Append To Array, Last Text ID);
Else If(Event Player.unit_type == 2);
Create In-World Text(All Players(All Teams), Custom String("{0} ELECTRIC FIELD UNIT {1}     HP: {2}     ", Hero Icon String(Hero(
Bastion)), Icon String(Bolt), Custom String("{0}/{1}", Round To Integer(Event Player.health, Up), Round To Integer(
Event Player.max_health, Up))), World Vector Of(Vector(0, 1, 0), Event Player, Rotation And Translation), 1.500, Do Not Clip,
Visible To Position and String, Aqua, Default Visibility);
Modify Player Variable(Event Player, health_HUD, Append To Array, Last Text ID);
Else If(Event Player.unit_type == 3);
Create In-World Text(All Players(All Teams), Custom String("{0} NEUROTOXIN UNIT {1}     HP: {2}     ", Hero Icon String(Hero(
Bastion)), Icon String(Poison), Custom String("{0}/{1}", Round To Integer(Event Player.health, Up), Round To Integer(
Event Player.max_health, Up))), World Vector Of(Vector(0, 1, 0), Event Player, Rotation And Translation), 1.500, Do Not Clip,
Visible To Position and String, Green, Default Visibility);
Modify Player Variable(Event Player, health_HUD, Append To Array, Last Text ID);
Else If(Event Player.unit_type == 4);
Create In-World Text(All Players(All Teams), Custom String("{0} ANTI-GRAVITY UNIT {1}     HP: {2}     ", Hero Icon String(Hero(
Bastion)), Ability Icon String(Hero(Sigma), Button(Ultimate)), Custom String("{0}/{1}", Round To Integer(Event Player.health,
Up), Round To Integer(Event Player.max_health, Up))), World Vector Of(Vector(0, 1, 0), Event Player, Rotation And Translation),
1.500, Do Not Clip, Visible To Position and String, Yellow, Default Visibility);
Modify Player Variable(Event Player, health_HUD, Append To Array, Last Text ID);
Else If(Event Player.unit_type == 5);
Create In-World Text(All Players(All Teams), Custom String("{0} LASER CUTTER UNIT {1}     HP: {2}     ", Hero Icon String(Hero(
Bastion)), Ability Icon String(Hero(Echo), Button(Ability 2)), Custom String("{0}/{1}", Round To Integer(Event Player.health,
Up), Round To Integer(Event Player.max_health, Up))), World Vector Of(Vector(0, 1, 0), Event Player, Rotation And Translation),
1.500, Do Not Clip, Visible To Position and String, Red, Default Visibility);
Modify Player Variable(Event Player, health_HUD, Append To Array, Last Text ID);
End;
End;
Else;
If(Hero Of(Event Player) == Hero(Pharah));
Create In-World Text(All Players(All Teams), Custom String("{0} AERIAL CONFIGURATION UNIT {1}   HP: {2}       ", Hero Icon String(
Hero(Pharah)), Ability Icon String(Hero(Mercy), Button(Ability 1)), Custom String("{0}/{1}", Round To Integer(
Event Player.health, Up), Round To Integer(Event Player.max_health, Up))), World Vector Of(Vector(0, 1, 0), Event Player,
Rotation And Translation), 1.500, Do Not Clip, Visible To Position and String, Orange, Default Visibility);
Modify Player Variable(Event Player, health_HUD, Append To Array, Last Text ID);
End;
End;
Else;
If(Hero Of(Event Player) == Hero(Bastion));
If(Event Player.unit_type == 1);
Create In-World Text(All Players(All Teams), Custom String("HP: {2}", Null, Null, Custom String("{0}/{1}", Round To Integer(
Event Player.health, Up), Round To Integer(Event Player.max_health, Up))), Event Player, 1.500, Do Not Clip,
Visible To Position and String, Purple, Default Visibility);
Modify Player Variable(Event Player, health_HUD, Append To Array, Last Text ID);
Else If(Event Player.unit_type == 2);
Create In-World Text(All Players(All Teams), Custom String("HP: {2}", Null, Null, Custom String("{0}/{1}", Round To Integer(
Event Player.health, Up), Round To Integer(Event Player.max_health, Up))), Event Player, 1.500, Do Not Clip,
Visible To Position and String, Aqua, Default Visibility);
Modify Player Variable(Event Player, health_HUD, Append To Array, Last Text ID);
Else If(Event Player.unit_type == 3);
Create In-World Text(All Players(All Teams), Custom String("HP: {2}", Null, Null, Custom String("{0}/{1}", Round To Integer(
Event Player.health, Up), Round To Integer(Event Player.max_health, Up))), Event Player, 1.500, Do Not Clip,
Visible To Position and String, Green, Default Visibility);
Modify Player Variable(Event Player, health_HUD, Append To Array, Last Text ID);
Else If(Event Player.unit_type == 4);
Create In-World Text(All Players(All Teams), Custom String("HP: {2}", Null, Null, Custom String("{0}/{1}", Round To Integer(
Event Player.health, Up), Round To Integer(Event Player.max_health, Up))), Event Player, 1.500, Do Not Clip,
Visible To Position and String, Yellow, Default Visibility);
Modify Player Variable(Event Player, health_HUD, Append To Array, Last Text ID);
Else If(Event Player.unit_type == 5);
Create In-World Text(All Players(All Teams), Custom String("HP: {2}", Null, Null, Custom String("{0}/{1}", Round To Integer(
Event Player.health, Up), Round To Integer(Event Player.max_health, Up))), Event Player, 1.500, Do Not Clip,
Visible To Position and String, Red, Default Visibility);
Modify Player Variable(Event Player, health_HUD, Append To Array, Last Text ID);
End;
End;
}
}
rule("electric field")
{
event
{
Subroutine;
electric_field;
}
actions
{
Global.using_field = True;
Global.electrified = False;
Global.electric_field_volume = 0;
For Global Variable(for_count, 0, 3, 1);
Create Effect(Filtered Array(All Players(All Teams), !Global.electrified), Pick-up Sound, White, Global.electric_field_1,
Global.electric_field_volume, Visible To Position and Radius);
Call Subroutine(add_effect_to);
If(!Global.begin_phase_4);
Create Effect(Filtered Array(All Players(All Teams), !Global.electrified), Pick-up Sound, White, Global.electric_field_2,
Global.electric_field_volume, Visible To Position and Radius);
Call Subroutine(add_effect_to);
End;
End;
Chase Global Variable At Rate(electric_field_volume, 200, 66, Destination and Rate);
If(Global.begin_phase_4);
Global.electric_field_1 = Vector(Random Real(-10, 10), 46, Random Real(-10, 10));
Else;
Global.random_fields = 1;
Modify Global Variable(random_fields, Append To Array, 2);
Modify Global Variable(random_fields, Append To Array, 3);
Modify Global Variable(random_fields, Append To Array, 4);
Wait(0.100, Abort When False);
Global.random_fields = Randomized Array(Global.random_fields);
If(Global.random_fields[0] == 1);
Global.electric_field_1 = Vector(10, 0, 10);
Else If(Global.random_fields[0] == 2);
Global.electric_field_1 = Vector(-10, 0, 10);
Else If(Global.random_fields[0] == 3);
Global.electric_field_1 = Vector(-10, 0, -10);
Else If(Global.random_fields[0] == 4);
Global.electric_field_1 = Vector(10, 0, -10);
End;
If(Global.random_fields[1] == 1);
Global.electric_field_2 = Vector(10, 0, 10);
Else If(Global.random_fields[1] == 2);
Global.electric_field_2 = Vector(-10, 0, 10);
Else If(Global.random_fields[1] == 3);
Global.electric_field_2 = Vector(-10, 0, -10);
Else If(Global.random_fields[1] == 4);
Global.electric_field_2 = Vector(10, 0, -10);
End;
End;
For Global Variable(for_count_2, 0, 20 + Global.begin_phase_4, 20);
"field 1"
For Global Variable(for_count, 1, 7, 1);
"field 1"
Create Beam Effect(Filtered Array(All Players(All Teams), Global.blinking), Good Beam, Global.electric_field_1 + Vector(
-10 + 3.333 * Global.for_count, 0.100 + Global.for_count_2, -10), Global.electric_field_1 + Vector(-10,
0.100 + Global.for_count_2, -10 + 3.333 * Global.for_count), Aqua, Visible To);
Call Subroutine(add_effect_to);
Create Beam Effect(Filtered Array(All Players(All Teams), Global.blinking), Good Beam, Global.electric_field_1 + Vector(
10 + -3.333 * Global.for_count, 0.100 + Global.for_count_2, 10), Global.electric_field_1 + Vector(10,
0.100 + Global.for_count_2, 10 + -3.333 * Global.for_count), Aqua, Visible To);
Call Subroutine(add_effect_to);
If(!Global.begin_phase_4);
"field 1"
Create Beam Effect(Filtered Array(All Players(All Teams), Global.blinking), Good Beam, Global.electric_field_2 + Vector(
-10 + 3.333 * Global.for_count, 0.100, -10), Global.electric_field_2 + Vector(-10, 0.100, -10 + 3.333 * Global.for_count),
Aqua, Visible To);
Call Subroutine(add_effect_to);
Create Beam Effect(Filtered Array(All Players(All Teams), Global.blinking), Good Beam, Global.electric_field_2 + Vector(
10 + -3.333 * Global.for_count, 0.100, 10), Global.electric_field_2 + Vector(10, 0.100, 10 + -3.333 * Global.for_count), Aqua,
Visible To);
Call Subroutine(add_effect_to);
End;
End;
"field 1"
For Global Variable(for_count, -10, 11, 20);
"field 1"
For Global Variable(for_count_3, -10, 11, 20);
Create Beam Effect(Filtered Array(All Players(All Teams), Global.blinking), Good Beam, Global.electric_field_1 + Vector(
Global.for_count, 0.100 + Global.for_count_2, Global.for_count), Global.electric_field_1 + Vector(Global.for_count_3,
0.100 + Global.for_count_2, 0 - Global.for_count_3), Aqua, Visible To);
Call Subroutine(add_effect_to);
If(Global.begin_phase_4);
Create Beam Effect(Filtered Array(All Players(All Teams), Global.blinking), Good Beam, Global.electric_field_1 + Vector(
Global.for_count, 0.100, Global.for_count_3), Global.electric_field_1 + Vector(Global.for_count, 20, Global.for_count_3), Aqua,
Visible To);
Else;
Create Beam Effect(Filtered Array(All Players(All Teams), Global.blinking), Good Beam, Global.electric_field_2 + Vector(
Global.for_count, 0.100, Global.for_count), Global.electric_field_2 + Vector(Global.for_count_3, 0.100,
0 - Global.for_count_3), Aqua, Visible To);
End;
Call Subroutine(add_effect_to);
End;
End;
End;
Call Subroutine(random_message);
If(!Global.begin_phase_4);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Append To Array(
Custom String("''SHORT-CIRCUITING CHAMBER SURFACES.''"), Append To Array(Custom String("''POWERING ELECTRIC TESLA FIELDS.''"),
Append To Array(Custom String("''UNLIKE ROBOTS, HUMANS DON'T RUN ON ELECTRICITY.''"), Custom String(
"''NEED AN ENERGY BOOST? LET ME CHARGE YOU UP.''"))))[Global.random_message]));
End;
Wait(3, Abort When False);
Global.electric_field_volume = 200;
Global.electrified = True;
For Global Variable(for_count, 0, 2, 1);
Play Effect(All Players(All Teams), Debuff Impact Sound, White, Global.electric_field_1, 200);
Create Effect(All Players(All Teams), Energy Sound, White, Global.electric_field_1, Global.electric_field_volume,
Visible To Position and Radius);
Call Subroutine(add_effect_to);
If(!Global.begin_phase_4);
Play Effect(All Players(All Teams), Debuff Impact Sound, White, Global.electric_field_2, 200);
Create Effect(All Players(All Teams), Energy Sound, White, Global.electric_field_2, Global.electric_field_volume,
Visible To Position and Radius);
Call Subroutine(add_effect_to);
End;
End;
Wait(0.250, Abort When False);
If(!Global.begin_phase_4);
Small Message(All Players(All Teams), Custom String("{0} {2}: {1}", Hero Icon String(Hero Of(Players In Slot(Global.random_message,
Team 1))), Append To Array(Custom String("''EVERYONE, GET AWAY FROM THOSE BLUE SQUARES, PRONTO!''"), Append To Array(
Custom String("''THX 4 CONVENIENTLY MARKING THE DANGER ZONES ON THE FLOOR''"), Append To Array(Custom String(
"''...SHOCKER.''"), Custom String("''TEMPTING OFFER, BUT I PREFER RED BULL WITH VODKA.''"))))[Global.random_message],
Players In Slot(Global.random_message, Team 1)));
End;
Wait(1, Abort When False);
Global.electrified = False;
Global.using_field = False;
}
}
rule("blinking")
{
event
{
Ongoing - Global;
}
conditions
{
(Global.special_attack == 2 || Global.using_field) == True;
Global.electrified == False;
}
actions
{
Global.blinking = True;
Wait(0.250, Ignore Condition);
Global.blinking = False;
Wait(0.250, Ignore Condition);
Loop If Condition Is True;
Global.blinking = True;
}
}
rule("electric field damage")
{
event
{
Ongoing - Each Player;
Team 1;
All;
}
conditions
{
Global.electrified == True;
Is True For Any(Append To Array(Global.electric_field_1, Global.electric_field_2), X Component Of(Eye Position(Event Player))
<= X Component Of(Current Array Element) + 10 && X Component Of(Eye Position(Event Player)) >= X Component Of(
Current Array Element) + -10 && Z Component Of(Eye Position(Event Player)) <= Z Component Of(Current Array Element)
+ 10 && Z Component Of(Eye Position(Event Player)) >= Z Component Of(Current Array Element) + -10) == True;
Is Dummy Bot(Event Player) == False;
Y Component Of(Position Of(Event Player)) <= 20 + 45 * Global.begin_phase_4;
disabled Global.special_attack == 2;
}
actions
{
Damage(Event Player, Global.boss_upper, 100);
Set Status(Event Player, Global.boss_upper, Stunned, 3);
}
}
rule("disable inspector")
{
event
{
Ongoing - Global;
}
actions
{
Disable Inspector Recording;
}
}
rule("electric field zappy effect")
{
event
{
Ongoing - Global;
}
conditions
{
Global.using_field == True;
}
actions
{
Wait(2.910, Abort When False);
For Global Variable(for_count_2, 0, 20, 1);
"field 1"
Create Beam Effect(All Players(All Teams), Bad Beam, Global.electric_field_1 + Random Value In Array(Global.random_beam_array_1),
Global.electric_field_1 + Random Value In Array(Global.random_beam_array_1), Aqua, Visible To Position and Radius);
If(!Global.begin_phase_4);
Modify Global Variable(special_attack_effects, Append To Array, Last Created Entity);
"field 1"
Create Beam Effect(All Players(All Teams), Bad Beam, Global.electric_field_2 + Random Value In Array(Global.random_beam_array_1),
Global.electric_field_2 + Random Value In Array(Global.random_beam_array_1), Aqua, Visible To Position and Radius);
Modify Global Variable(special_attack_effects, Append To Array, Last Created Entity);
Else;
Modify Player Variable(Filtered Array(Players On Hero(Hero(Bastion), Team 2), Current Array Element.unit_type == 2),
special_attack_effects_player, Append To Array, Last Created Entity);
End;
End;
Play Effect(All Players(All Teams), Bad Explosion, White, Global.electric_field_1, 15);
If(!Global.begin_phase_4);
Play Effect(All Players(All Teams), Bad Explosion, White, Global.electric_field_2, 15);
End;
}
}
rule("electric field zappy random")
{
event
{
Ongoing - Global;
}
conditions
{
Global.electrified == True;
disabled Global.special_attack == 2;
}
actions
{
Global.random_beam_array_1 = Empty Array;
For Global Variable(for_count, 0, 10, 1);
Modify Global Variable(random_beam_array_1, Append To Array, Vector(-10, Random Real(0, 20), Random Real(-10, 10)));
Modify Global Variable(random_beam_array_1, Append To Array, Vector(10, Random Real(0, 20), Random Real(-10, 10)));
Modify Global Variable(random_beam_array_1, Append To Array, Vector(Random Real(-10, 10), Random Real(0, 20), -10));
Modify Global Variable(random_beam_array_1, Append To Array, Vector(Random Real(-10, 10), Random Real(0, 20), 10));
Modify Global Variable(random_beam_array_1, Append To Array, Vector(Random Real(-10, 10), 0, Random Real(-10, 10)));
Modify Global Variable(random_beam_array_1, Append To Array, Vector(Random Real(-10, 10), 20, Random Real(-10, 10)));
End;
Wait(0.016, Ignore Condition);
Loop If Condition Is True;
}
}
rule("remove health HUD")
{
event
{
Player Died;
Team 2;
All;
}
conditions
{
Hero Of(Event Player) != Hero(Echo);
}
actions
{
While(Event Player.health_HUD != Empty Array);
Destroy In-World Text(First Of(Event Player.health_HUD));
Destroy HUD Text(First Of(Event Player.health_HUD));
Modify Player Variable(Event Player, health_HUD, Remove From Array By Index, 0);
End;
}
}
rule("boss lower init")
{
event
{
Ongoing - Each Player;
Team 2;
All;
}
conditions
{
Event Player == Global.boss_lower;
}
actions
{
Event Player.strafe_checker = True;
Set Max Health(Event Player, 150);
Wait(0.100, Ignore Condition);
Heal(Event Player, Event Player, 10000);
}
}
rule("tank dialogue")
{
event
{
Ongoing - Global;
}
conditions
{
Global.boss_phase == 1;
Global.message_ready == True;
Is Alive(Global.boss_lower) == True;
}
actions
{
Wait(Random Real(8, 10), Abort When False);
Call Subroutine(random_message);
If(Global.random_message == 0);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''ARE YOU AWARE OF MY NAMESAKE?''")));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''I AM NAMED AFTER THE CARDINALITY OF THE SET OF ALL NATURAL NUMBERS.''")));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''OTHERWISE KNOWN AS THE FIRST TYPE OF INFINITY.''")));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''LIKEWISE, MY RESOURCES, ENERGY AND POWER ARE INFINITE.''")));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} {2}: {1}", Hero Icon String(Hero Of(Players In Slot(Global.random_message,
Team 1))), Custom String("''UHH, YOU LOST ME AFTER 'NAMESAKE'.''"), Players In Slot(Global.random_message, Team 1)));
Else If(Global.random_message == 1);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''WHAT NUISANCES YOU ALL ARE. THIS IS GETTING TIRING.''")));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} {2}: {1}", Hero Icon String(Hero Of(Players In Slot(Global.random_message,
Team 1))), Custom String("''DUDE YOU LITERALLY HAVE PROJECTILE AIMBOT''"), Players In Slot(Global.random_message, Team 1)));
Wait(1, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} {2}: {1}", Hero Icon String(Hero Of(Players In Slot(Global.random_message,
Team 1))), Custom String("''STOP COMPLAINING''"), Players In Slot(Global.random_message, Team 1)));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''AIMBOT? I'VE NEVER HEARD OF SUCH AN OMNIC.''")));
Else If(Global.random_message == 2);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''OH. YOU ARE ALL STILL APPROACHING ME.''")));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''INSTEAD OF RUNNING AWAY, YOU ALL STILL COME RIGHT TO ME.''")));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} {2}: {1}", Hero Icon String(Hero Of(Players In Slot(Global.random_message,
Team 1))), Custom String("''I CAN'T BEAT THE SH*T OUT OF YOU WITHOUT GETTING CLOSER.''"), Players In Slot(
Global.random_message, Team 1)));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''THEN COME AS CLOSE AS YOU LIKE.''")));
Else If(Global.random_message == 2);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''I WILL GIVE YOU ALL ONE MORE CHANCE.''")));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''CEASE FIRE AND LEAVE. I WILL LET YOU ALL GO.''")));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} {2}: {1}", Hero Icon String(Hero Of(Players In Slot(Global.random_message,
Team 1))), Custom String("''UNFORTUNATELY, THAT IS OUT OF THE QUESTION, MISTER A. NULL.''"), Players In Slot(
Global.random_message, Team 1)));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''ALEPH! IT IS ALEPH-NULL. STOP LIKENING ME TO RECTUMS.''")));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} {2}: {1}", Hero Icon String(Hero Of(Players In Slot(Global.random_message,
Team 1))), Custom String("''MY APOLOGIES, MISTER A. NULL.''"), Players In Slot(Global.random_message, Team 1)));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''WATCH YOUR TONGUE, HUMAN, BEFORE I MANUALLY EXTRACT IT.''")));
End;
Loop If Condition Is True;
}
}
rule("flight dialogue")
{
event
{
Ongoing - Global;
}
conditions
{
Global.boss_phase == 3;
Global.message_ready == True;
Is Alive(Global.boss_lower) == True;
}
actions
{
Wait(Random Real(8, 10), Abort When False);
Call Subroutine(random_message);
If(Global.random_message == 0);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''CHALLENGING A GOD PROGRAM OF INFINITE POWER IS USELESS.''")));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''YOUR EFFORTS HERE ARE ALL FOR NAUGHT.''")));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} {2}: {1}", Hero Icon String(Hero Of(Players In Slot(Global.random_message,
Team 1))), Custom String("''YOU'RE NOT MUCH BETTER.''"), Players In Slot(Global.random_message, Team 1)));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} {2}: {1}", Hero Icon String(Hero Of(Players In Slot(Global.random_message,
Team 1))), Custom String("''YOU FIGHT FOR A CAUSE THAT'S LITERALLY CALLED 'ZERO SECTOR'.''"), Players In Slot(
Global.random_message, Team 1)));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} {2}: {1}", Hero Icon String(Hero Of(Players In Slot(Global.random_message,
Team 1))), Custom String("''YOUR EFFORTS ARE LITERALLY FOR NULL. FOR NOTHING.''"), Players In Slot(Global.random_message,
Team 1)));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''I WOULDN'T BE SO SURE, DEAR {0}.''", Players In Slot(Global.random_message, Team 1))));
Else If(Global.random_message == 1);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''USELESS. USELESS. USELESS. USELESS.''")));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} {2}: {1}", Hero Icon String(Hero Of(Players In Slot(Global.random_message,
Team 1))), Custom String("''ORA ORA ORA ORA ORA''"), Players In Slot(Global.random_message, Team 1)));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''I'M SORRY, WHAT?''")));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} {2}: {1}", Hero Icon String(Hero Of(Players In Slot(Global.random_message,
Team 1))), Custom String("''NEVERMIND''"), Players In Slot(Global.random_message, Team 1)));
Else If(Global.random_message == 2);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''THE POWER OF THIS OMNIUM IS UNMATCHED.''")));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''TWO HUNDRED THOUSAND NULL SECTOR UNITS ARE READY.''")));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''WITH A MILLION MORE WELL ON THE WAY.''")));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} {2}: {1}", Hero Icon String(Hero Of(Players In Slot(Global.random_message,
Team 1))), Custom String("''WHEN?''"), Players In Slot(Global.random_message, Team 1)));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''I ESTIMATE ONLY TWO MORE WEEKS.''")));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} {2}: {1}", Hero Icon String(Hero Of(Players In Slot(Global.random_message,
Team 1))), Custom String("''NO, AS IN, WHEN DID I F**KING ASK?''"), Players In Slot(Global.random_message, Team 1)));
Else If(Global.random_message == 2);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''YOU ALL MUST HAVE A DEATH WISH.''")));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''DISGRACING A GOD PROGRAM LIKE THIS.''")));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} {2}: {1}", Hero Icon String(Hero Of(Players In Slot(Global.random_message,
Team 1))), Custom String("''WE ARE SIMPLY FOLLOWING OUR ORDERS.''"), Players In Slot(Global.random_message, Team 1)));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''FOLLOWING ORDERS? TO THINK AN OMNIC LIKE ME...''")));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''...HAS MORE FREE WILL THAN A HUMAN LIKE YOU.''")));
Wait(3.500, Abort When False);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Bastion)), Custom String(
"''IT'S PATHETIC.''")));
End;
Loop If Condition Is True;
}
}
rule("damage scaling")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Count Of(Filtered Array(All Players(Team 1), Has Spawned(Current Array Element) && !Is Dummy Bot(Current Array Element)))
!= Global.count_of_players;
}
actions
{
Wait(0.250, Ignore Condition);
Set Damage Received(Event Player, 20 + 20 * Count Of(Filtered Array(All Players(Team 1), Has Spawned(Current Array Element)
&& !Is Dummy Bot(Current Array Element))));
Set Damage Dealt(Event Player, 180 - 20 * Count Of(Filtered Array(All Players(Team 1), Has Spawned(Current Array Element)
&& !Is Dummy Bot(Current Array Element))));
Abort If Condition Is False;
Global.count_of_players = Count Of(Filtered Array(All Players(Team 1), Has Spawned(Current Array Element) && !Is Dummy Bot(
Current Array Element)));
}
}
rule("player actually revive")
{
event
{
Ongoing - Each Player;
Team 1;
All;
}
conditions
{
Event Player.revive == 0;
Event Player.is_dead == True;
}
actions
{
Wait(0.100, Abort When False);
Stop All Damage Over Time(Event Player);
Clear Status(Event Player, Knocked Down);
Play Effect(All Players(All Teams), Good Pickup Effect, Yellow, Event Player, 1);
Play Effect(All Players(All Teams), Buff Impact Sound, Yellow, Event Player, 200);
Stop Chasing Player Variable(Event Player, revive);
Set Healing Received(Event Player, 100);
Event Player.is_dead = False;
Wait(0.100, Ignore Condition);
Clear Status(Event Player, Unkillable);
Heal(Event Player, Event Player, 100000);
}
}
rule("global init")
{
event
{
Ongoing - Global;
}
conditions
{
Is Game In Progress == True;
}
actions
{
Create HUD Text(All Players(All Teams), Null, Null, Custom String(" \n\n\n\n\n"), Top, -99, White, White, White,
Visible To and String, Default Visibility);
Create HUD Text(All Players(All Teams), Null, Null, Custom String(
" \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"),
Top, -0.100, White, White, White, Visible To and String, Default Visibility);
Create In-World Text(Filtered Array(All Players(All Teams), Global.ready_assemble == 5), Custom String(
"Waiting for players to choose heroes...\nPress F/{0} to change heroes!", String("Interact")), Vector(0, 2, 0), 4, Do Not Clip,
Visible To Position and String, Yellow, Default Visibility);
Global.friendly_note = Last Text ID;
Create In-World Text(Filtered Array(All Players(All Teams), Global.ready_assemble < 5), Custom String(
"All players assembled! Starting in {0}...", Global.ready_assemble), Vector(0, 2, 0), 4, Do Not Clip,
Visible To Position and String, Green, Default Visibility);
Global.friendly_note_2 = Last Text ID;
}
}
rule("player really die")
{
event
{
Ongoing - Each Player;
Team 1;
All;
}
conditions
{
Event Player.is_dead == True;
Event Player.actually_dying_timer == 0;
}
actions
{
Clear Status(Event Player, Knocked Down);
disabled Apply Impulse(Event Player, Up, 5, To World, Cancel Contrary Motion);
Wait(0.100, Ignore Condition);
Clear Status(Event Player, Unkillable);
Kill(Event Player, Global.boss_upper);
Start Camera(All Players(All Teams), Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player)
+ World Vector Of(Vector(0, 5, 5), Event Player, Rotation), All Players(Team 2), Event Player, True), Event Player, 0);
Remove From Array(All Players(Team 1), Event Player).is_dead = False;
Destroy HUD Text(Global.neurotoxin_warning);
Set Slow Motion(25);
Wait(0.700, Ignore Condition);
Declare Team Victory(Team 2);
}
}
rule("tp everyone upward")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Global.boss_phase == 4;
Global.begin_phase_4 == False;
(Is Dummy Bot(Event Player) && Team Of(Event Player) == Team 1) == False;
}
actions
{
Teleport(Event Player, Append To Array(Position Of(Event Player), Event Player.temp_pos)[(Event Player == Global.boss_upper)
* 1] + Vector(0, 45, 0));
For Player Variable(Event Player, for_count, 0, 5, 1);
Play Effect(Event Player, Bad Explosion, White, Eye Position(Event Player) + Vector(0, 45, 0), 5);
End;
Set Status(Event Player, Global.boss_upper, Stunned, 1);
If(Hero Of(Event Player) == Hero(Bastion) && Is Dummy Bot(Event Player) && Slot Of(Event Player) != 0);
Destroy Dummy Bot(Team 2, Slot Of(Event Player));
End;
}
}
rule("phase 4 init")
{
event
{
Ongoing - Global;
}
conditions
{
Is True For Any(Players On Hero(Hero(D.Va), Team 2), Is Using Ultimate(Current Array Element)) == True;
}
actions
{
Set Damage Dealt(Global.boss_upper, 100);
Global.boss_upper.projectile_speed = 50;
Global.boss_upper.weapon_spread = 10;
Wait(3, Ignore Condition);
Create In-World Text(Filtered Array(All Players(All Teams), !Global.end), Custom String(
"Are you a spectator? Press F1/F2/F3/F4 to teleport to the players!"), Vector(0, 2, 0), 2, Clip Against Surfaces,
Visible To Position and String, Aqua, Visible Always);
Global.boss_phase = 4;
Create Effect(All Players(All Teams), Good Aura, White, Global.boss_upper, 1.200, Visible To Position and Radius);
Global.boss_upper.effect = Last Created Entity;
Wait(0.100, Ignore Condition);
Global.init_buffer = 4;
Start Forcing Player To Be Hero(Global.boss_upper, Hero(Echo));
Chase Player Variable At Rate(Global.boss_upper, ball_rotate, 10000, 450, Destination and Rate);
Wait(2, Ignore Condition);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Echo)), Custom String(
"''WITNESS THE TRUE POWER OF INFINITY. MAXIMUM OVERDRIVE!''")));
Wait(3.500, Ignore Condition);
Call Subroutine(random_message);
Small Message(All Players(All Teams), Custom String("{0} {2}: {1}", Hero Icon String(Hero Of(Players In Slot(Global.random_message,
Team 1))), Append To Array(Custom String("''HOLY BRICK-SH*TTING F**K NUGGETS, HE'S A SHE!?''"), Append To Array(Custom String(
"''HOLY SH*T ROBOT OVERLORD IS NOW ROBOT WAIFU''"), Append To Array(Custom String(
"''TO HELL WITH THE OVERDRIVE, YOU'RE A F**KING FEMALE!?''"), Custom String(
"''OH MY. MISTER A. NULL WAS ACTUALLY MISSUS A. NULL THIS WHOLE TIME.''"))))[Global.random_message], Players In Slot(
Global.random_message, Team 1)));
Wait(3.500, Ignore Condition);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Echo)), Custom String(
"''...ROBOTS DO NOT BOTHER WITH HUMANLY ISSUES LIKE GENDER.''")));
Wait(3.500, Ignore Condition);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Echo)), Custom String(
"''AND WHAT ABOUT THAT IMPRESSIVE TRANSITION SCENE? NO COMMENTS?''")));
Wait(3.500, Ignore Condition);
Call Subroutine(random_message);
Small Message(All Players(All Teams), Custom String("{0} {2}: {1}", Hero Icon String(Hero Of(Players In Slot(Global.random_message,
Team 1))), Append To Array(Custom String("''EH, IT WAS ALRIGHT I GUESS.''"), Append To Array(Custom String(
"''CAN I HAVE YOUR NUMBER''"), Append To Array(Custom String("''OH. UHH, I WASN'T PAYING ATTENTION.''"), Custom String(
"''AH, THAT. IT WAS NICE. I SUPPOSE. YES.''"))))[Global.random_message], Players In Slot(Global.random_message, Team 1)));
Wait(3.500, Ignore Condition);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Echo)), Custom String(
"''DESPICABLE. I WILL ENJOY HARVESTING ALL YOUR ORGANS.''")));
Wait(3.500, Ignore Condition);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Echo)), Custom String(
"''LET'S GET THIS OVER WITH QUICKLY, PESTS.''")));
Start Holding Button(Global.boss_upper, Jump);
Start Holding Button(Global.boss_upper, Primary Fire);
Global.begin_phase_4 = True;
Global.electric_field_2 = Vector(-10000, 0, -10000);
Create HUD Text(Filtered Array(All Players(All Teams), Global.core_temperature < 2333.330), Custom String(
"CORE TEMPERATURE: {0}°C
", Global.core_temperature), Null, Null, Top, -99, White, White, White, Visible To and String,
Default Visibility);
Create HUD Text(Filtered Array(All Players(All Teams), Global.core_temperature >= 2333.330 && Global.core_temperature < 3666.670),
Custom String("CORE TEMPERATURE: {0}°C
", Global.core_temperature), Null, Null, Top, -99, Yellow, White, White,
Visible To and String, Default Visibility);
Create HUD Text(Filtered Array(All Players(All Teams), Global.core_temperature >= 3666.670 && Global.core_temperature < 5000),
Custom String("CORE TEMPERATURE: {0}°C
", Global.core_temperature), Null, Null, Top, -99, Orange, White, White,
Visible To and String, Default Visibility);
Create HUD Text(Filtered Array(All Players(All Teams), Global.core_temperature >= 5000 && True), Custom String(
"CORE TEMPERATURE: {0}°C
", Global.core_temperature), Null, Null, Top, -99, Red, White, White, Visible To and String,
Default Visibility);
Chase Global Variable At Rate(core_temperature, 10000, 5, Destination and Rate);
Clear Status(Global.boss_upper, Phased Out);
Start Heal Over Time(Global.boss_upper, Global.boss_upper, 9999, 100);
Global.heals = Last Heal Over Time ID;
For Global Variable(for_count, 1, 4, 1);
Call Subroutine(create_bastions);
End;
Create Dummy Bot(Hero(Moira), Team 2, 4, Global.boss_upper, Vector(0, 0, 0));
Call Subroutine(init_xtra_bots);
Set Healing Dealt(Last Created Entity, 0);
}
}
rule("dva bomb")
{
event
{
Ongoing - Each Player;
Team 2;
D.Va;
}
conditions
{
Is Using Ultimate(Event Player) == False;
Max Health(Event Player) > 300;
}
actions
{
Set Ultimate Charge(Event Player, 100);
Wait(0.100, Ignore Condition);
Press Button(Event Player, Ultimate);
Loop If Condition Is True;
}
}
rule("no ult charge during cutscene")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Global.cutscene == True;
Ultimate Charge Percent(Event Player) > 1;
}
actions
{
Set Ultimate Charge(Event Player, 0);
}
}
rule("grand skip")
{
event
{
Ongoing - Each Player;
Team 1;
All;
}
conditions
{
Global.cutscene == True;
Is Button Held(Event Player, Crouch) == True;
Event Player.crouch_toggle == False;
Event Player.grand_skip_cutscene == False;
Global.dialogue_text_box != 0;
}
actions
{
Event Player.crouch_toggle = True;
Event Player.grand_skip_cutscene = True;
}
}
rule("grand skip off")
{
event
{
Ongoing - Each Player;
Team 1;
All;
}
conditions
{
Global.cutscene == True;
Is Button Held(Event Player, Crouch) == True;
Event Player.crouch_toggle == False;
Event Player.grand_skip_cutscene == True;
Global.grand_skip == False;
}
actions
{
Event Player.crouch_toggle = True;
Event Player.grand_skip_cutscene = False;
}
}
rule("grand skip reset")
{
event
{
Ongoing - Each Player;
Team 1;
All;
}
conditions
{
Is Button Held(Event Player, Crouch) == False;
Event Player.crouch_toggle == True;
}
actions
{
Event Player.crouch_toggle = False;
}
}
rule("grand skip activate")
{
event
{
Ongoing - Global;
}
conditions
{
Is True For All(Filtered Array(All Players(Team 1), Has Spawned(Current Array Element) && !Is Dummy Bot(Current Array Element)),
Current Array Element.grand_skip_cutscene) == True;
Global.dialogue_text_box != 0;
}
actions
{
Global.grand_skip = True;
All Players(Team 1).skip_dialogue = True;
}
}
rule("phase 4 fall off")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Global.boss_phase == 4;
Y Component Of(Position Of(Event Player)) < 25;
Has Spawned(Event Player) == True;
(Is Dummy Bot(Event Player) && Team Of(Event Player) == Team 1) == False;
}
actions
{
Wait(0.250, Abort When False);
Teleport(Event Player, Vector(0, 46, 0));
If(Y Component Of(Position Of(Event Player)) > 10);
Kill(Event Player, Null);
End;
}
}
rule("change heroes")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Global.begin == False;
Global.cutscene == False;
Is Button Held(Event Player, Interact) == True;
}
actions
{
Set Player Allowed Heroes(Event Player, Remove From Array(Allowed Heroes(Event Player), Hero Of(Event Player)));
disabled Wait(0.100, Ignore Condition);
disabled Set Player Allowed Heroes(Event Player, Empty Array);
Wait(0.500, Ignore Condition);
Reset Player Hero Availability(Event Player);
Stop Chasing Player Variable(Event Player, revive);
Event Player.revive = 0;
}
}
rule("not zen")
{
event
{
Ongoing - Each Player;
Team 1;
Zenyatta;
}
actions
{
Reset Player Hero Availability(Event Player);
Wait(0.250, Ignore Condition);
Loop;
}
}
rule("pharah glide")
{
event
{
Ongoing - Each Player;
Team 2;
Pharah;
}
conditions
{
Altitude Of(Event Player) < 8;
}
actions
{
Press Button(Event Player, Ability 1);
Wait(1, Ignore Condition);
Loop If Condition Is True;
}
}
rule("echo glide")
{
event
{
Ongoing - Each Player;
Team 2;
Echo;
}
conditions
{
Y Component Of(Position Of(Event Player)) < 50;
Global.begin_phase_4 == True;
Is Using Ultimate(Players On Hero(Hero(Moira), Team 2)) == False;
}
actions
{
Press Button(Event Player, Ability 1);
Wait(1, Ignore Condition);
Loop If Condition Is True;
}
}
rule("echo right click")
{
event
{
Ongoing - Each Player;
Team 2;
Echo;
}
conditions
{
Global.begin_phase_4 == True;
Global.end == False;
}
actions
{
Wait(Random Real(4, 6), Abort When False);
Event Player.strafe_checker = True;
Event Player.strafe_check = Position Of(Event Player.target);
Wait(1, Abort When False);
Press Button(Event Player, Secondary Fire);
Wait(0.500, Abort When False);
Event Player.strafe_checker = False;
Call Subroutine(ai_bad_aim);
Loop If Condition Is True;
}
}
rule("phase 4 block piece tp")
{
event
{
Ongoing - Each Player;
Team 2;
Bastion;
}
conditions
{
Global.begin_phase_4 == True;
Is Alive(Event Player) == True;
}
actions
{
If(Distance Between(Position Of(Event Player), Eye Position(Event Player)) > 1.600);
Press Button(Event Player, Ability 1);
End;
Teleport(Event Player, Position Of(Global.boss_upper) + Direction From Angles(Global.phase_4_spin + 120 * Slot Of(Event Player), 0)
* 4);
If(Speed Of(Event Player) > 1);
Call Subroutine(cancel_momentum);
End;
Wait(0.030, Ignore Condition);
Loop If Condition Is True;
}
}
rule("phase 4 spin")
{
event
{
Ongoing - Global;
}
conditions
{
Global.begin_phase_4 == True;
Global.end == False;
}
actions
{
Chase Global Variable At Rate(phase_4_spin, -10000, Random Real(30, 100), None);
Chase Player Variable At Rate(Global.boss_upper, ball_rotate, 10000, Random Real(70, 650), None);
Wait(Random Real(1, 5), Abort When False);
Chase Global Variable At Rate(phase_4_spin, 10000, Random Real(30, 100), None);
Chase Player Variable At Rate(Global.boss_upper, ball_rotate, -10000, Random Real(70, 650), None);
Wait(Random Real(1, 5), Abort When False);
Loop If Condition Is True;
}
}
rule("phase 4 unit attack")
{
event
{
Ongoing - Each Player;
Team 2;
Bastion;
}
conditions
{
Global.begin_phase_4 == True;
Is Alive(Event Player) == True;
}
actions
{
Wait(Random Real(5, 10), Abort When False);
If(Event Player.unit_type == 1);
Call Subroutine(hack);
Else If(Event Player.unit_type == 2);
Call Subroutine(electric_field);
Else If(Event Player.unit_type == 3);
Call Subroutine(neurotoxin_2);
Else If(Event Player.unit_type == 4);
Call Subroutine(antigrav_2);
Else If(Event Player.unit_type == 5);
Call Subroutine(lasers);
End;
Call Subroutine(destroy_plyr_specc_attacc_effecc);
Loop If Condition Is True;
}
}
rule("sombra tp")
{
event
{
Ongoing - Each Player;
Team 1;
Sombra;
}
conditions
{
Is Dummy Bot(Event Player) == True;
}
actions
{
Teleport(Event Player, Eye Position(Global.hacking_bastion));
Wait(0.016, Ignore Condition);
Loop If Condition Is True;
}
}
rule("neurotoxin 2")
{
event
{
Subroutine;
neurotoxin_2;
}
actions
{
Global.neurotoxin_radius = 0;
Global.neurotoxin_max_radius = 10;
Global.neurotoxin_pos_array = Vector(Random Real(0, 15), 47, Random Real(-15, 15));
Modify Global Variable(neurotoxin_pos_array, Append To Array, Vector(Random Real(-15, 0), 47, Random Real(-15, 15)));
For Global Variable(for_count, 0, 2, 1);
Call Subroutine(create_smoke_sound);
End;
Call Subroutine(create_toxin_stuff);
Create Effect(All Players(All Teams), Light Shaft, Green, Global.neurotoxin_pos_array[0] + Down, Global.neurotoxin_radius,
Visible To Position and Radius);
Call Subroutine(add_effect_to);
Create Effect(All Players(All Teams), Light Shaft, Green, Global.neurotoxin_pos_array[1] + Down, Global.neurotoxin_radius,
Visible To Position and Radius);
Call Subroutine(add_effect_to);
Chase Global Variable At Rate(neurotoxin_radius, Global.neurotoxin_max_radius, 2, Destination and Rate);
Wait(6.500, Abort When False);
Chase Global Variable At Rate(neurotoxin_radius, 0, 5, Destination and Rate);
Wait(3, Abort When False);
}
}
rule("ai throttle")
{
event
{
Subroutine;
ai_throttle;
}
actions
{
Start Throttle In Direction(Event Player, Direction Towards(Event Player, Event Player.target) * ((Distance Between(Event Player,
Ray Cast Hit Position(Eye Position(Event Player.target), Eye Position(Event Player.target) + Down * 100, Null, Event Player,
True)) > 11) + (Distance Between(Event Player, Ray Cast Hit Position(Eye Position(Event Player.target), Eye Position(
Event Player.target) + Down * 100, Null, Event Player, True)) < 10) * -1) + Cross Product(Direction Towards(Event Player,
Event Player.target), Up * Event Player.random) * 1, 1, To World, Replace existing throttle, Direction and Magnitude);
}
}
rule("ai bad aim")
{
event
{
Subroutine;
ai_bad_aim;
}
actions
{
Start Facing(Event Player, Direction From Angles(Horizontal Angle From Direction(Direction Towards(Eye Position(Event Player),
Eye Position(Event Player.target))) + Random Real(0 - Event Player.weapon_spread, Event Player.weapon_spread),
Vertical Angle From Direction(Direction Towards(Eye Position(Event Player), Eye Position(Event Player.target))) + Random Real(
0 - Event Player.weapon_spread, Event Player.weapon_spread)), 100, To World, Direction and Turn Rate);
If(Global.end);
Stop Facing(Event Player);
End;
}
}
rule("ai projectile aim")
{
event
{
Subroutine;
ai_projectile_aim;
}
actions
{
Start Facing(Event Player, Direction Towards(Eye Position(Event Player), Ray Cast Hit Position(Position Of(Event Player.target)
+ Vector Towards(Position Of(Event Player.target), Eye Position(Event Player.target)) * 0.700, Position Of(Event Player.target)
+ Vector Towards(Position Of(Event Player.target), Eye Position(Event Player.target)) * 0.700 + Velocity Of(
Event Player.target) * (Distance Between(Eye Position(Event Player), Position Of(Event Player.target) + Vector Towards(
Position Of(Event Player.target), Eye Position(Event Player.target)) * 0.700 + Velocity Of(Event Player.target) * (
Distance Between(Eye Position(Event Player), Position Of(Event Player.target) + Vector Towards(Position Of(
Event Player.target), Eye Position(Event Player.target)) * 0.500 + 0) / Event Player.projectile_speed))
/ Event Player.projectile_speed), Null, Event Player, True)), 10000, To World, Direction and Turn Rate);
If(Global.end);
Stop Facing(Event Player);
End;
}
}
rule("antigrav 2")
{
event
{
Subroutine;
antigrav_2;
}
actions
{
Play Effect(All Players(All Teams), Good Explosion, Yellow, Event Player, 40);
Global.gravving_bastion = Event Player;
Wait(1.500, Abort When False);
Global.gravving_bastion = 0;
Wait(2, Abort When False);
}
}
rule("phase 4 unit die")
{
event
{
Player Died;
Team 2;
Bastion;
}
conditions
{
Global.begin_phase_4 == True;
}
actions
{
Event Player.pos_misc = Position Of(Event Player);
Create In-World Text(All Players(All Teams), Custom String("+500°C"), Event Player.pos_misc + Vector(0, Event Player.pop_up_text,
0), Event Player.pop_up_text, Do Not Clip, Visible To Position and String, Orange, Default Visibility);
Call Subroutine(damage_notice);
Wait(0.016 * Slot Of(Event Player), Ignore Condition);
Global.core_temperature += 500;
Call Subroutine(destroy_plyr_specc_attacc_effecc);
If(Event Player.unit_type == 1);
Clear Status(All Players(Team 1), Hacked);
Else If(Event Player.unit_type == 2);
Global.electrified = False;
Global.using_field = False;
Else If(Event Player.unit_type == 3);
Stop Chasing Global Variable(neurotoxin_radius);
Global.neurotoxin_radius = 0;
Else If(Event Player.unit_type == 4);
Global.gravving_bastion = 0;
Else If(Event Player.unit_type == 5);
Global.laser_length = 0;
Call Subroutine(destroy_global_spec_attack_effec);
Stop Chasing Global Variable(laser_length);
End;
Wait(8, Ignore Condition);
If(!Global.end);
Create Dummy Bot(Hero(Bastion), Team 2, Slot Of(Event Player), Vector(0, 0, 0), Vector(0, 0, 0));
Last Created Entity.block_piece = True;
End;
}
}
rule("phase 4 effects")
{
event
{
Ongoing - Global;
}
conditions
{
Global.boss_phase == 4;
}
actions
{
Global.core_temperature = 1000;
Global.core_temp_danger = 5000;
Create Effect(All Players(All Teams), Bad Aura, White, Vector(0, 290, 0), 200, Visible To Position and Radius);
Modify Global Variable(core_effects, Append To Array, Last Created Entity);
For Global Variable(for_count, 1, 6, 1);
Create Effect(All Players(All Teams), Bad Aura, Aqua, Vector(0, 45, 0) + Direction From Angles(72 * Global.for_count, 45) * 281,
200, None);
Modify Global Variable(core_effects, Append To Array, Last Created Entity);
Create Effect(All Players(All Teams), Bad Aura, Aqua, Vector(0, 45, 0) + Direction From Angles(72 * Global.for_count, -45) * 281,
200, None);
Modify Global Variable(core_effects, Append To Array, Last Created Entity);
End;
For Global Variable(for_count, 1, 9, 1);
Create Effect(All Players(All Teams), Bad Aura, Blue, Vector(0, 40, 0) + Direction From Angles(45 * Global.for_count, 0) * 271,
200, None);
Modify Global Variable(core_effects, Append To Array, Last Created Entity);
End;
}
}
rule("core critical")
{
event
{
Ongoing - Global;
}
conditions
{
Global.core_temperature >= 5000;
}
actions
{
While(Global.core_effects != Empty Array);
Destroy Effect(First Of(Global.core_effects));
Modify Global Variable(core_effects, Remove From Array By Index, 0);
End;
Create Effect(All Players(All Teams), Bad Aura, Yellow, Vector(0, 290, 0), 200, Visible To Position and Radius);
Modify Global Variable(core_effects, Append To Array, Last Created Entity);
For Global Variable(for_count, 1, 6, 1);
Create Effect(All Players(All Teams), Bad Aura, Orange, Vector(0, 45, 0) + Direction From Angles(72 * Global.for_count, 45) * 281,
200, None);
Modify Global Variable(core_effects, Append To Array, Last Created Entity);
Create Effect(All Players(All Teams), Bad Aura, Orange, Vector(0, 45, 0) + Direction From Angles(72 * Global.for_count, -45) * 281,
200, None);
Modify Global Variable(core_effects, Append To Array, Last Created Entity);
End;
For Global Variable(for_count, 1, 9, 1);
Create Effect(All Players(All Teams), Bad Aura, Red, Vector(0, 40, 0) + Direction From Angles(45 * Global.for_count, 0) * 271, 200,
None);
Modify Global Variable(core_effects, Append To Array, Last Created Entity);
End;
Stop Heal Over Time(Global.heals);
Set Status(All Players(Team 2), Null, Burning, 9999);
Start Damage Over Time(All Players(Team 2), All Players(Team 1), 9999, (Global.core_temperature - 4000) * 0.020);
Set Move Speed(Global.boss_upper, 100);
Destroy Effect(Global.boss_upper.effect);
Set Gravity(Global.boss_upper, 100);
Set Damage Received(Global.boss_upper, 50);
Play Effect(All Players(All Teams), Bad Explosion, Red, Global.boss_upper, 20);
Play Effect(All Players(All Teams), Ring Explosion, Orange, Global.boss_upper, 50);
Play Effect(All Players(All Teams), Explosion Sound, Red, Global.boss_upper, 200);
}
}
rule("end")
{
event
{
Ongoing - Each Player;
Team 2;
Echo;
}
conditions
{
Global.core_temperature >= 5000;
Health(Event Player) <= 1;
}
actions
{
While(Global.main_unit_health_HUD != Empty Array);
Destroy In-World Text(First Of(Global.main_unit_health_HUD));
Destroy HUD Text(First Of(Global.main_unit_health_HUD));
Modify Global Variable(main_unit_health_HUD, Remove From Array By Index, 0);
End;
Set Status(Event Player, Null, Hacked, 9999);
Destroy Dummy Bot(Team 2, 4);
Global.smoke_pos = World Vector Of(Vector(0, 1, 0), Event Player, Rotation And Translation);
Chase Global Variable At Rate(smoke_pos, World Vector Of(Vector(0, 1, 0), Event Player, Rotation And Translation), 10000,
Destination and Rate);
Create Effect(All Players(All Teams), Bad Aura, Blue, Global.smoke_pos, 3 + Global.ball_length, Visible To Position and Radius);
Create Effect(All Players(All Teams), Bad Aura, Aqua, Global.smoke_pos, 3 + Global.ball_length, Visible To Position and Radius);
Create Effect(All Players(All Teams), Bad Aura, White, Global.smoke_pos, 3 + Global.ball_length, Visible To Position and Radius);
Global.end_volume = 80;
For Global Variable(for_count, 0, 5, 1);
Create Effect(All Players(All Teams), Energy Sound, White, Event Player, Global.end_volume, Visible To Position and Radius);
For Global Variable(for_count_2, 0, 2, 1);
Create Effect(All Players(All Teams), Bad Aura Sound, White, Event Player, Global.end_volume, Visible To Position and Radius);
Create Effect(All Players(All Teams), Beacon Sound, White, Event Player, Global.end_volume, Visible To Position and Radius);
End;
End;
Global.length_accel = 30;
Chase Player Variable At Rate(Event Player, ball_rotate_accel, 10000, 60, Destination and Rate);
Chase Player Variable At Rate(Event Player, ball_rotate, 100000, Event Player.ball_rotate_accel, Destination and Rate);
Global.end = True;
Stop Throttle In Direction(Event Player);
Set Status(Event Player, Null, Knocked Down, 9999);
Kill(All Players(Team 2), Null);
Call Subroutine(cancel_momentum);
Set Gravity(Event Player, 0);
Wait(0.100, Ignore Condition);
Set Status(Event Player, Null, Phased Out, 9999);
Apply Impulse(Event Player, Up, 0.500, To World, Cancel Contrary Motion);
Stop Facing(Event Player);
Wait(3, Ignore Condition);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Ability Icon String(Hero(Echo), Button(Ultimate)),
Custom String("''H〄W⁀ IS〠 †HIS POSS‱IBLE. NO. NO. NONONON01001110☜01001111")));
Wait(3.500, Ignore Condition);
If(Has Spawned(Players In Slot(3, Team 1)));
Small Message(All Players(All Teams), Custom String("{0} {1}: {2}", Hero Icon String(Hero Of(Players In Slot(3, Team 1))),
Players In Slot(3, Team 1), Custom String("''IT APPEARS THAT YOU'VE OVERWORKED YOUR OMNIUM TO ITS OWN DEATH.''")));
Wait(3.500, Ignore Condition);
End;
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: ‷I AM‽ ALEPℵH-N‿LLℵ. I ℵAM IN∞FINITℵY.'' ' '",
Ability Icon String(Hero(Echo), Button(Ultimate))));
Wait(3.500, Ignore Condition);
If(Has Spawned(Players In Slot(0, Team 1)));
Small Message(All Players(All Teams), Custom String("{0} {1}: {2}", Hero Icon String(Hero Of(Players In Slot(0, Team 1))),
Players In Slot(0, Team 1), Custom String("''IT'S OVER, A. NULL. YOUR PRIDE BECAME YOUR DOWNFALL. ''")));
Wait(3.500, Ignore Condition);
End;
Small Message(All Players(All Teams), Custom String(
"{0} ALEPH-NULL: ‷IIIIℵ AM〆F◌REVE⁇R ℵℵℵℵℵ I AM☏♪ETERNALℵ♬ℵℵℵℵℵ IℵAMℵ A⿻⿻G⿻◎⿻D⿻⿻⁗", Ability Icon String(Hero(Echo), Button(
Ultimate))));
Wait(3.500, Ignore Condition);
If(Has Spawned(Players In Slot(2, Team 1)));
Small Message(All Players(All Teams), Custom String("{0} {1}: {2}", Hero Icon String(Hero Of(Players In Slot(2, Team 1))),
Players In Slot(2, Team 1), Custom String("''CREDIT WHERE CREDIT'S DUE, YOU PUT UP A REAL FIGHT. I RESPECT THAT.''")));
Wait(3.500, Ignore Condition);
End;
For Global Variable(for_count, 0, 5, 1);
Small Message(All Players(All Teams), Custom String("{0} AL?PH-NU??: {1}", Icon String(Warning), Custom String(
"''I AM INFINITY I AM INFINITY I AM INFINITY I AM INFINITY{0}{0}{0}{0}{0}", Custom String(
"
\r\nI AM INFINITY I AM INFINITY I AM INFINITY I AM INFINITY I AM INFINITY"))));
End;
Wait(5, Ignore Condition);
If(Has Spawned(Players In Slot(1, Team 1)));
Small Message(All Players(All Teams), Custom String("{0} {1}: {2}", Hero Icon String(Hero Of(Players In Slot(1, Team 1))),
Players In Slot(1, Team 1), Custom String("''I'm trying to be a nicer person.''")));
Wait(2, Ignore Condition);
Small Message(All Players(All Teams), Custom String("{0} {1}: {2}", Hero Icon String(Hero Of(Players In Slot(1, Team 1))),
Players In Slot(1, Team 1), Custom String("''It's hard, but I am trying.''")));
Wait(3.500, Ignore Condition);
End;
Small Message(All Players(All Teams), Custom String(" \r\n{0} A▒LEPH-NU▒LL: {1}", Icon String(Trashcan), Custom String(
"''THIS'▒' ")));
Wait(3, Ignore Condition);
Small Message(All Players(All Teams), Custom String(
"       ▒ ▒ ▒\r\n{0} A▒▒LEPH▒-NU▒LL: ''▒IS N▒OT'▒'▒\r\n{1}", Icon String(Trashcan), Custom String(
"   ▒ ▒ ▒ ▒")));
Wait(3, Ignore Condition);
Global.pulse = True;
Small Message(All Players(All Teams), Custom String(
" ▒▒▒▒▒ ▒ ▒▒ ▒▒▒ ▒ ▒ ▒▒ ▒ ▒▒▒ ▒▒▒▒ ▒▒ ▒\r\n▒▒▒{0} ▒A▒▒LE▒PH▒▒-NU▒LL▒:▒ ''▒▒O▒V▒E▒R'▒▒'▒▒▒\r\n{1}", Icon String(
No), Custom String("  ▒▒▒▒ ▒ ▒▒▒ ▒▒▒▒ ▒ ▒ ▒ ▒ ▒▒▒ ▒▒▒ ▒▒▒ ▒")));
Wait(3, Ignore Condition);
Clear Status(Event Player, Unkillable);
Set Slow Motion(25);
Play Effect(All Players(All Teams), Bad Explosion, Red, Event Player, 40);
Wait(0.100, Ignore Condition);
Global.cam_pos = Eye Position(Event Player) + Vector(0, 5, 0);
Chase Global Variable At Rate(cam_pos, Eye Position(Event Player) + Vector(0, -10, 0), 7, Destination and Rate);
Kill(Event Player, All Players(Team 1));
Start Camera(All Players(All Teams), Global.cam_pos, Global.cam_pos + World Vector Of(Vector(0, -1, -0.010), Event Player,
Rotation), 0);
Chase Global Variable At Rate(ball_length, 10000, 60, Destination and Rate);
For Global Variable(for_count, 0, 5, 1);
Play Effect(All Players(All Teams), Explosion Sound, White, Event Player, 200);
End;
Global.end_volume = 200;
Chase Global Variable At Rate(smoke_pos, Eye Position(Event Player) + Vector(0, 10, 0), 3, Destination and Rate);
Wait(1, Ignore Condition);
Declare Team Victory(Team 1);
}
}
rule("bastion stop weirdly moving")
{
event
{
Player Died;
Team 2;
All;
}
actions
{
Stop Facing(Event Player);
Stop Throttle In Direction(Event Player);
}
}
rule("mercy rez corpse target")
{
event
{
Ongoing - Each Player;
Team 1;
Mercy;
}
conditions
{
Event Player.corpse != First Of(Sorted Array(Filtered Array(Remove From Array(Players Within Radius(Event Player, 6, Team 1, Off),
Event Player), Current Array Element.is_dead), Angle Between Vectors(Facing Direction Of(Event Player), Direction Towards(
Eye Position(Event Player), Current Array Element))));
disabled Is True For Any(Filtered Array(All Players(Team 1), Event Player.is_dead), Distance Between(Event Player, Current Array Element)
<= 6) == True;
}
actions
{
Event Player.corpse = First Of(Sorted Array(Filtered Array(Remove From Array(Players Within Radius(Event Player, 6, Team 1, Off),
Event Player), Current Array Element.is_dead), Angle Between Vectors(Facing Direction Of(Event Player), Direction Towards(
Eye Position(Event Player), Current Array Element))));
Create Dummy Bot(Hero Of(Event Player.corpse), Team 1, 5, Event Player.corpse, Vector(0, 0, 0));
Set Invisible(Last Created Entity, All);
}
}
rule("dummy corpse")
{
event
{
Ongoing - Each Player;
Team 1;
All;
}
conditions
{
Slot Of(Event Player) == 5;
Is Alive(Event Player) == True;
}
actions
{
If(!Is Hero Being Played(Hero(Mercy), Team 1));
Destroy Dummy Bot(Team 1, 5);
End;
Wait(0.100, Ignore Condition);
Kill(Event Player, Event Player);
Loop If Condition Is True;
}
}
rule("mercy rez remove bot")
{
event
{
Ongoing - Each Player;
Team 1;
Mercy;
}
conditions
{
Is True For Any(Filtered Array(All Players(Team 1), Current Array Element.is_dead), Distance Between(Event Player,
Current Array Element) <= 6) == False;
}
actions
{
Destroy Dummy Bot(Team 1, 5);
}
}
rule("mercy rez actual")
{
event
{
Ongoing - Each Player;
Team 1;
Mercy;
}
conditions
{
Is Using Ability 2(Event Player) == True;
}
actions
{
Wait(1.740, Abort When False);
Event Player.corpse.revive = 0;
}
}
rule("pulse")
{
event
{
Ongoing - Global;
}
conditions
{
Global.pulse == True;
}
actions
{
Chase Global Variable At Rate(length_accel, 0, 30, Destination and Rate);
Chase Global Variable At Rate(ball_length, 100000, Global.length_accel, Destination and Rate);
Chase Global Variable At Rate(end_volume, 200, 233.333, Destination and Rate);
}
}
rule("pulse 2")
{
event
{
Ongoing - Global;
}
conditions
{
Global.pulse == True;
Global.length_accel <= 0;
}
actions
{
Chase Global Variable At Rate(length_accel, 30, 40, Destination and Rate);
Chase Global Variable At Rate(ball_length, -3, Global.length_accel, Destination and Rate);
Chase Global Variable At Rate(end_volume, 0, 260, Destination and Rate);
}
}
rule("random message")
{
event
{
Subroutine;
random_message;
}
actions
{
Global.random_message = Empty Array;
For Global Variable(for_count, 0, Count Of(Filtered Array(All Living Players(Team 1), Has Spawned(Current Array Element))), 1);
Modify Global Variable(random_message, Append To Array, Slot Of(Filtered Array(All Living Players(Team 1), Has Spawned(
Current Array Element))[Global.for_count]));
End;
If(Global.random_message != Global.previous_message);
Global.random_message = Random Value In Array(Remove From Array(Global.random_message, Global.previous_message));
End;
Global.previous_message = Global.random_message;
}
}
rule("destroy global spec attac effec")
{
event
{
Subroutine;
destroy_global_spec_attack_effec;
}
actions
{
While(Global.special_attack_effects != Empty Array);
Destroy Effect(First Of(Global.special_attack_effects));
Modify Global Variable(special_attack_effects, Remove From Array By Index, 0);
End;
}
}
rule("destroy player spec attac effec")
{
event
{
Subroutine;
destroy_plyr_specc_attacc_effecc;
}
actions
{
While(Event Player.special_attack_effects_player != Empty Array);
Destroy Effect(First Of(Event Player.special_attack_effects_player));
Modify Player Variable(Event Player, special_attack_effects_player, Remove From Array By Index, 0);
End;
}
}
rule("top up health")
{
event
{
Ongoing - Global;
}
conditions
{
Global.boss_phase % 2 != 0;
Health(Global.boss_upper) < Health(Global.boss_lower);
Is Alive(Global.boss_lower) == True;
}
actions
{
Heal(Global.boss_upper, Global.boss_upper, Health(Global.boss_lower) - Health(Global.boss_upper));
Wait(0.100, Ignore Condition);
Loop If Condition Is True;
}
}
rule("core temp echo damage")
{
event
{
Player Took Damage;
Team 2;
Echo;
}
actions
{
Global.core_temperature += Event Damage;
}
}
rule("echo dialogue")
{
event
{
Ongoing - Global;
}
conditions
{
Global.begin_phase_4 == True;
Global.end == False;
}
actions
{
Wait(Random Real(6, 8), Abort When False);
If(Global.core_temperature < 5000);
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Echo)), Random Value In Array(
Append To Array(Custom String("''TYPE: ALEPH.''"), Append To Array(Custom String("*DPS HERO BEEPING NOISES*"), Append To Array(
Append To Array(Custom String("''HOW DOES IT FEEL TO BE PAINFULLY WEAK?''"), Custom String(
"''THIS IS INFINITY. THIS IS TRUE POWER.''")), Custom String(
"''THE GLORY OF NULL SECTOR WILL PURGE YOUR NAMES FROM HISTORY RECORDS.''")))))));
Else;
Small Message(All Players(All Teams), Custom String("{0} ALEPH-NULL: {1}", Hero Icon String(Hero(Echo)), Random Value In Array(
Append To Array(Custom String("''※ERROR‽q={TEMPERATURE}+{EXCEEDING}&={CRITICAL}..5¡{POINT}=-8''"), Append To Array(
Custom String("*OVERHEATING NOISES*"), Append To Array(Custom String(
"''⁑I ##AM PERFEC⁒TLY⁀FINE‽01010100 01001111 01001111 00100000 01001000 01001111 01010100''"), Custom String(
"''[WARNING: SEVERE DAMAGE TO SYS╃‽‽⁂‱LORY TO NℵLL SECTOR.''")))))));
End;
Loop If Condition Is True;
}
}
rule("sym turrets")
{
event
{
Ongoing - Global;
}
conditions
{
Global.boss_phase == 3;
Global.message_ready == True;
Is Alive(Global.boss_lower) == True;
}
actions
{
Create Dummy Bot(Hero(Symmetra), Team 2, 5, Global.boss_upper, Vector(0, 0, 0));
Call Subroutine(init_xtra_bots);
Set Damage Dealt(Last Created Entity, 0);
}
}
rule("remove extra bots")
{
event
{
Subroutine;
remove_xtra_bots;
}
actions
{
While(Count Of(Append To Array(Players On Hero(Hero(Wrecking Ball), Team 2), Players On Hero(Hero(Symmetra), Team 2))) > 0);
Destroy Dummy Bot(Team 2, Slot Of(First Of(Append To Array(Players On Hero(Hero(Wrecking Ball), Team 2), Players On Hero(Hero(
Symmetra), Team 2)))));
Wait(0.100, Ignore Condition);
End;
}
}
rule("sym/moira tp to boss")
{
event
{
Ongoing - Each Player;
Team 2;
All;
}
conditions
{
(Hero Of(Event Player) == Hero(Moira) || Hero Of(Event Player) == Hero(Symmetra)) == True;
}
actions
{
Teleport(Event Player, Global.boss_upper);
Wait(0.016, Ignore Condition);
Loop;
}
}
rule("sym shoot turret")
{
event
{
Ongoing - Each Player;
Team 2;
Symmetra;
}
actions
{
Event Player.target = Random Value In Array(Filtered Array(All Players(Team 1), Has Spawned(Current Array Element) && !(Hero Of(
Current Array Element) == Hero(Sombra) && Is Using Ability 1(Current Array Element))));
Wait(Random Real(2, 7), Ignore Condition);
Set Facing(Event Player, Direction Towards(Eye Position(Event Player), Nearest Walkable Position(World Vector Of(Throttle Of(
Event Player.target), Event Player.target, Rotation And Translation))), To World);
Press Button(Event Player, Ability 1);
Loop;
}
}
rule("boss aim")
{
event
{
Ongoing - Each Player;
Team 2;
All;
}
conditions
{
Event Player == Global.boss_upper;
Has Status(Event Player, Invincible) == False;
Global.boss_phase > 0;
Has Status(Event Player, Phased Out) == False;
}
actions
{
Call Subroutine(ai_bad_aim);
}
}
rule("init extra bots")
{
event
{
Subroutine;
init_xtra_bots;
}
actions
{
Set Invisible(Last Created Entity, All);
Set Status(Last Created Entity, Null, Phased Out, 9999);
}
}
rule("hammy bomb subrout")
{
event
{
Subroutine;
hammy_bomb;
}
actions
{
Call Subroutine(init_xtra_bots);
Wait(0.250, Abort When False);
Set Ultimate Charge(Last Created Entity, 100);
Wait(0.100, Abort When False);
Teleport(Last Created Entity, Global.boss_upper);
Press Button(Last Created Entity, Ultimate);
}
}
rule("create smoke sound")
{
event
{
Subroutine;
create_smoke_sound;
}
actions
{
Create Effect(All Players(All Teams), Smoke Sound, Lime Green, Global.neurotoxin_pos_array[0],
200 / Global.neurotoxin_max_radius * Global.neurotoxin_radius, Visible To Position and Radius);
Call Subroutine(add_effect_to);
Create Effect(All Players(All Teams), Smoke Sound, Lime Green, Global.neurotoxin_pos_array[1],
200 / Global.neurotoxin_max_radius * Global.neurotoxin_radius, Visible To Position and Radius);
Call Subroutine(add_effect_to);
}
}
rule("add effect to")
{
event
{
Subroutine;
add_effect_to;
}
actions
{
If(Global.begin_phase_4);
Modify Player Variable(Event Player, special_attack_effects_player, Append To Array, Last Created Entity);
Else;
Modify Global Variable(special_attack_effects, Append To Array, Last Created Entity);
End;
}
}
rule("create toxin stuff")
{
event
{
Subroutine;
create_toxin_stuff;
}
actions
{
Create Effect(All Players(All Teams), Cloud, Lime Green, Global.neurotoxin_pos_array[0], Global.neurotoxin_radius,
Visible To Position and Radius);
Call Subroutine(add_effect_to);
Create Effect(All Players(All Teams), Cloud, Lime Green, Global.neurotoxin_pos_array[1], Global.neurotoxin_radius,
Visible To Position and Radius);
Call Subroutine(add_effect_to);
}
}
rule("minion very init")
{
event
{
Ongoing - Each Player;
Team 2;
All;
}
conditions
{
(Hero Of(Event Player) == Hero(Zenyatta) || Hero Of(Event Player) == Hero(Orisa)) == True;
}
actions
{
Call Subroutine(ai_bad_aim);
Wait(0.100, Ignore Condition);
Event Player.minion_spawn = 1;
Apply Impulse(Event Player, Down, 30, To World, Cancel Contrary Motion);
}
}
rule("moira beam")
{
event
{
Ongoing - Each Player;
Team 2;
Moira;
}
actions
{
Wait(Random Real(5, 7), Ignore Condition);
Stop Chasing Player Variable(Event Player, moira_angle);
Event Player.moira_angle = 89;
Set Ultimate Charge(Event Player, 100);
Wait(0.250, Ignore Condition);
Set Facing(Event Player, World Vector Of(Vector(0, -1, 0.010), Event Player, Rotation), To World);
Global.boss_upper.pos_misc = Position Of(Global.boss_upper);
Event Player.target = Eye Position(Closest Player To(Event Player, Team 1));
Chase Player Variable At Rate(Event Player, target, Eye Position(Closest Player To(Event Player, Team 1)), 4,
Destination and Rate);
Start Facing(Event Player, Direction From Angles(Horizontal Angle From Direction(Direction Towards(Event Player,
Event Player.target)), Event Player.moira_angle), 100, To World, Direction and Turn Rate);
Press Button(Event Player, Ultimate);
Wait(0.500, Ignore Condition);
Chase Player Variable At Rate(Event Player, moira_angle, 0, 30, Destination and Rate);
Wait(3, Ignore Condition);
Stop Facing(Event Player);
Loop;
}
}
rule("top down health")
{
event
{
Ongoing - Global;
}
conditions
{
Global.boss_phase % 2 != 0;
Health(Global.boss_upper) > Health(Global.boss_lower);
Is Alive(Global.boss_lower) == True;
}
actions
{
Damage(Global.boss_upper, Null, Health(Global.boss_upper) - Health(Global.boss_lower));
Wait(0.100, Ignore Condition);
Loop If Condition Is True;
}
}
rule("moira ult pos tp")
{
event
{
Ongoing - Each Player;
Team 2;
Echo;
}
conditions
{
Is Using Ultimate(Players On Hero(Hero(Moira), Team 2)) == True;
}
actions
{
Teleport(Event Player, Event Player.pos_misc);
If(Speed Of(Event Player) > 1);
Call Subroutine(cancel_momentum);
End;
Wait(0.050, Ignore Condition);
Loop If Condition Is True;
}
}
rule("create bastions")
{
event
{
Subroutine;
create_bastions;
}
actions
{
Create Dummy Bot(Hero(Bastion), Team 2, Global.for_count, Vector(0, 0, 0), Vector(0, 0, -1));
Last Created Entity.block_piece = True;
If(Global.boss_phase);
Wait(0.500, Ignore Condition);
End;
}
}
rule("damage indicator")
{
event
{
Player Took Damage;
Team 2;
Echo;
}
conditions
{
Health(Event Player) > 1;
}
actions
{
Destroy In-World Text(Event Player.pop_up_id);
Create In-World Text(All Players(All Teams), Custom String("+{0}°C", Event Damage), World Vector Of(Vector(0,
Event Player.pop_up_text, 0), Event Player, Rotation And Translation), Event Player.pop_up_text, Do Not Clip,
Visible To Position and String, Orange, Default Visibility);
Call Subroutine(damage_notice);
}
}
rule("damage indicator remove")
{
event
{
Ongoing - Each Player;
Team 2;
All;
}
conditions
{
Event Player.pop_up_text >= 5.500;
}
actions
{
Destroy In-World Text(Event Player.pop_up_id);
}
}
rule("damage notice")
{
event
{
Subroutine;
damage_notice;
}
actions
{
Event Player.pop_up_text = 1.500;
Chase Player Variable At Rate(Event Player, pop_up_text, 5.500, 2, Destination and Rate);
Event Player.pop_up_id = Last Text ID;
}
}
rule("health chases")
{
event
{
Ongoing - Each Player;
Team 2;
All;
}
actions
{
Chase Player Variable At Rate(Event Player, health, Health(Event Player), 9999, Destination and Rate);
Chase Player Variable At Rate(Event Player, max_health, Max Health(Event Player), 9999, Destination and Rate);
}
}
rule("ready assemble countdown")
{
event
{
Ongoing - Global;
}
conditions
{
Is True For All(All Players(Team 1), Has Spawned(Current Array Element)) == True;
Global.ready_assemble_tick == False;
All Players(Team 1) != Empty Array;
}
actions
{
Chase Global Variable At Rate(ready_assemble, 0, 1, Destination and Rate);
}
}
rule("ready assemble end")
{
event
{
Ongoing - Global;
}
conditions
{
Global.ready_assemble == 0;
Is True For All(All Players(Team 1), Has Spawned(Current Array Element)) == True;
All Players(Team 1) != Empty Array;
}
actions
{
Global.ready_assemble_tick = True;
}
}
rule("ready assemble off")
{
event
{
Ongoing - Global;
}
conditions
{
Is True For All(All Players(Team 1), Has Spawned(Current Array Element)) == False;
}
actions
{
Stop Chasing Global Variable(ready_assemble);
Global.ready_assemble = 5;
}
}
rule("kill minions in wrong phase")
{
event
{
Ongoing - Each Player;
Team 2;
All;
}
conditions
{
Event Player.minion_spawn == 1;
Global.boss_phase % 2 != 0;
}
actions
{
Destroy Dummy Bot(Team 2, Slot Of(Event Player));
}
}
rule("not on floor")
{
event
{
Ongoing - Each Player;
Team 2;
Echo;
}
conditions
{
Global.end == True;
Altitude Of(Event Player) < 2;
}
actions
{
Teleport(Event Player, Position Of(Event Player) + Vector(0, 6, 0));
Wait(0.250, Ignore Condition);
Loop If Condition Is True;
}
}
disabled rule("debug")
{
event
{
Ongoing - Global;
}
actions
{
Create HUD Text(All Players(All Teams), Null, Null, Custom String("sv load: {0}, sv load avg: {1} sv load peak: {2}", Server Load,
Server Load Average, Server Load Peak), Top, -10000, White, White, White, Visible To and String, Default Visibility);
}
}
rule("player revive init")
{
event
{
Ongoing - Each Player;
Team 1;
All;
}
actions
{
Create Effect(Filtered Array(All Players(All Teams), Event Player.is_dead), Ring, Yellow, Event Player, 6,
Visible To Position and Radius);
Create Icon(Filtered Array(All Players(All Teams), Event Player.is_dead), Event Player, Skull, Visible To and Position, Yellow,
True);
Create In-World Text(Filtered Array(All Players(All Teams),
Event Player.is_dead && Event Player.revive == Event Player.revive_max), Custom String("{0} needs to be revived! {1} {2}",
Event Player, String("{0} sec", Round To Integer(Event Player.actually_dying_timer, Up)), String("Remaining")), Event Player,
1.500, Clip Against Surfaces, Visible To Position and String, Red, Default Visibility);
Disable Built-In Game Mode Respawning(Event Player);
Event Player.revive_max = 4;
Create In-World Text(Filtered Array(All Players(All Teams), Event Player.is_dead && Event Player.revive < Event Player.revive_max),
Custom String("{2} in {0}...", Event Player.revive, Null, String("Resurrecting")), Event Player, 1.500, Clip Against Surfaces,
Visible To Position and String, Yellow, Default Visibility);
Create HUD Text(Filtered Array(Players Within Radius(Event Player, 6, Team 1, Off),
Event Player.is_dead && !Current Array Element.is_dead && !(Hero Of(Current Array Element) == Hero(Sombra)
&& Is Using Ability 1(Current Array Element)) && Event Player.revive < Event Player.revive_max), Custom String(
"{0} {2} in {1}...", String("Resurrecting"), Event Player.revive, String("{0} {1}", Hero Icon String(Hero Of(Event Player)),
Event Player)), Null, Null, Top, -97, Yellow, White, White, Visible To and String, Default Visibility);
Create HUD Text(Filtered Array(Event Player, Event Player.is_dead && Event Player.revive == Event Player.revive_max),
Custom String("{0} {1}", String("{0} sec", Round To Integer(Event Player.actually_dying_timer, Up)), String("Remaining")),
Null, Null, Top, -98, Red, White, White, Visible To and String, Default Visibility);
Create HUD Text(Filtered Array(Event Player, Event Player.is_dead && Event Player.revive < Event Player.revive_max), Custom String(
"{0} in {1}...", String("Resurrecting"), Event Player.revive), Null, Null, Top, -97, Yellow, White, White,
Visible To and String, Default Visibility);
}
}
rule("player revive")
{
event
{
Ongoing - Each Player;
Team 1;
All;
}
conditions
{
Event Player.is_dead == True;
Remove From Array(Filtered Array(Players Within Radius(Event Player, 6, Team 1, Off), !Current Array Element.is_dead && !(Hero Of(
Current Array Element) == Hero(Sombra) && Is Using Ability 1(Current Array Element))), Event Player) != Empty Array;
}
actions
{
Chase Player Variable At Rate(Event Player, revive, 0, 0.500 + 0.500 * Count Of(Filtered Array(Remove From Array(
Players Within Radius(Event Player, 6, Team 1, Off), Event Player), !Current Array Element.is_dead && !(Hero Of(
Current Array Element) == Hero(Sombra) && Is Using Ability 1(Current Array Element)))), Destination and Rate);
}
}
rule("player died")
{
event
{
Player Died;
Team 1;
All;
}
conditions
{
Event Player.is_dead == False;
Is Dummy Bot(Event Player) == False;
}
actions
{
Play Effect(All Players(All Teams), Ring Explosion, Red, Event Player, 10);
Play Effect(All Players(All Teams), Ring Explosion Sound, White, Event Player, 200);
Play Effect(All Players(All Teams), Ring Explosion Sound, White, Event Player, 200);
Play Effect(All Players(All Teams), Ring Explosion Sound, White, Event Player, 200);
Big Message(All Players(All Teams), Custom String("{0} has been downed!", Event Player));
If(Count Of(Filtered Array(All Players(Team 1), !Current Array Element.is_dead && True && !Is Dummy Bot(Current Array Element)))
> 1);
Event Player.actually_dying_timer = 40;
Chase Player Variable At Rate(Event Player, actually_dying_timer, 0, (Remove From Array(Filtered Array(Players Within Radius(
Event Player, 6, Team 1, Off), !Current Array Element.is_dead && !(Hero Of(Current Array Element) == Hero(Sombra)
&& Is Using Ability 1(Current Array Element))), Event Player) == Empty Array) * 1, Destination and Rate);
Resurrect(Event Player);
Event Player.revive_max += 1;
Event Player.revive = Event Player.revive_max;
Set Healing Received(Event Player, 0);
Set Status(Event Player, Null, Knocked Down, 9999);
Event Player.is_dead = True;
Set Status(Event Player, Null, Unkillable, 9999);
Start Damage Over Time(Event Player, Global.boss_upper, 9999, 10000);
Else;
Start Camera(All Players(All Teams), Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player)
+ World Vector Of(Vector(0, 5, 5), Event Player, Rotation), All Players(Team 2), Event Player, True), Event Player, 0);
All Players(Team 1).is_dead = False;
Destroy HUD Text(Global.neurotoxin_warning);
Set Slow Motion(25);
Wait(0.700, Ignore Condition);
Declare Team Victory(Team 2);
End;
}
}
rule("player revive off")
{
event
{
Ongoing - Each Player;
Team 1;
All;
}
conditions
{
Event Player.is_dead == True;
Remove From Array(Filtered Array(Players Within Radius(Event Player, 6, Team 1, Off), !Current Array Element.is_dead && !(Hero Of(
Current Array Element) == Hero(Sombra) && Is Using Ability 1(Current Array Element))), Event Player) == Empty Array;
}
actions
{
Chase Player Variable At Rate(Event Player, revive, Event Player.revive_max, 2, Destination and Rate);
}
}
rule("sombra stealth exploit fix")
{
event
{
Ongoing - Each Player;
Team 1;
Sombra;
}
conditions
{
Is Using Ability 1(Event Player) == True;
}
actions
{
Wait(15, Abort When False);
Damage(Event Player, Global.boss_upper, 1);
}
}
rule("health regen single player")
{
event
{
Ongoing - Each Player;
Team 1;
All;
}
conditions
{
Count Of(Filtered Array(All Players(Team 1), Has Spawned(Current Array Element) && !Is Dummy Bot(Current Array Element))) <= 1;
(Global.boss_phase != 0 && Global.boss_phase != 2) == True;
}
actions
{
Heal(Event Player, Event Player, 3);
Wait(0.500, Ignore Condition);
Loop If Condition Is True;
}
}
rule("health refill per phase")
{
event
{
Ongoing - Global;
}
conditions
{
Is Alive(Global.boss_lower) == True;
Entity Exists(Global.boss_lower) == True;
}
actions
{
Heal(All Players(Team 1), All Players(Team 1), 10000);
}
}
rule("health refill per phase pt 2")
{
event
{
Ongoing - Global;
}
conditions
{
Is Dead(Global.boss_lower) == True;
Entity Exists(Global.boss_lower) == True;
}
actions
{
Heal(All Players(Team 1), All Players(Team 1), 10000);
}
}
rule("health regen single player damage")
{
event
{
Player Dealt Damage;
Team 1;
All;
}
conditions
{
Count Of(Filtered Array(All Players(Team 1), Has Spawned(Current Array Element) && !Is Dummy Bot(Current Array Element))) <= 1;
}
actions
{
Heal(Event Player, Event Player, Event Damage * (Global.begin_phase_4 ? 0.500 : 0.300));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment