Return to post
- settings
- {
- main
- {
Description: "(AYKSC)lucioball neo 0.8.7 by @nakamoooooo *ゲンジの手裏剣の拡散を12度から9度に変更 *モイラのオーブのクールタイムを70%(7秒)に変更、効果が残る時間も同様 *マーシーのshiftにクールタイムが表示されるよう変更*ラインハルトが盾を構えて後ろに進む速度を0.125に変更"
- Description: "(AYKSC)lucioball neo 0.8.8 by @nakamoooooo *ルシオとボールが接触すると弾きあうようになった(エネルギーがあるときのみ)。 *サウンドウェーブのctを175%にした。"
- }
- lobby
- {
- Allow Players Who Are In Queue: Yes
- Max Spectators: 12
- Max Team 1 Players: 5
- Max Team 2 Players: 5
- }
- modes
- {
- Team Deathmatch
- {
- enabled maps
- {
- Workshop Expanse Night
- }
- }
- General
- {
- Game Length In Minutes: 5
- Game Mode Start: Manual
- Hero Limit: Off
- Respawn Time Scalar: 80%
- Score To Win: 7
- Self Initiated Respawn: Off
- }
- }
- heroes
- {
- General
- {
- Brigitte
- {
- Barrier Shield Cooldown Time: 0%
- Barrier Shield Recharge Rate: 500%
- Repair Pack: Off
- Shield Bash Knockback Scalar: 25%
- Whip Shot Knockback Scalar: 25%
- }
- Genji
- {
- Primary Fire: Off
- Projectile Speed: 500%
- Quick Melee: Off
- Ultimate Ability Dragonblade: Off
- }
- Hanzo
- {
- Quick Melee: Off
- Sonic Arrow Cooldown Time: 55%
- Storm Arrows: Off
- Ultimate Ability Dragonstrike: Off
- }
- Lúcio
- {
- Crossfade: Off
- Primary Fire: Off
- Quick Melee: Off
Soundwave Cooldown Time: 75%
- Soundwave Cooldown Time: 175%
- Soundwave Knockback Scalar: 0%
- }
- Mei
- {
- Cryo-Freeze Cooldown Time: 0%
- Ice Wall Cooldown Time: 54%
- No Ammunition Requirement: On
- Quick Melee: Off
- Weapon Freeze Duration Scalar: 20%
- Weapon Freeze Rate Scalar: 0%
- }
- Mercy
- {
- Guardian Angel: Off
- Primary Fire: Off
- Quick Melee: Off
- Resurrect: Off
- Secondary Fire: Off
- Ultimate Ability Valkyrie: Off
- Weapons Enabled: Caduceus Staff Only
- }
- Moira
- {
- Biotic Energy Maximum: 500%
- Biotic Energy Recharge Rate: 500%
- Biotic Orb Cooldown Time: 70%
- Damage Dealt: 10%
- Projectile Speed: 0%
- Quick Melee: Off
- }
- Reinhardt
- {
- Charge Cooldown Time: 55%
- Charge Knockback Scalar: 0%
- Rocket Hammer Knockback Scalar: 0%
- }
- Sigma
- {
- Accretion: Off
- Accretion Knockback Scalar: 0%
- Kinetic Grasp Cooldown Time: 60%
- Primary Fire: Off
- Projectile Gravity: 0%
- Quick Melee: Off
- Ultimate Ability Gravitic Flux: Off
- }
- Tracer
- {
- Ammunition Clip Size Scalar: 105%
- Quick Melee: Off
- Recall Cooldown Time: 120%
- Ultimate Ability Pulse Bomb: Off
- }
- Widowmaker
- {
- Damage Dealt: 10%
- Grappling Hook Cooldown Time: 35%
- No Ammunition Requirement: On
- No Automatic Fire: On
- Quick Melee: Off
- Ultimate Ability Infra-Sight: Off
- Venom Mine: Off
- }
- Wrecking Ball
- {
- Roll Always Active: On
- }
- enabled heroes
- {
- Genji
- Hanzo
- Lúcio
- Mei
- Mercy
- Moira
- Reinhardt
- Sigma
- Tracer
- Widowmaker
- }
- }
- }
- }
- variables
- {
- global:
- 0: theBall
- 1: area_radius
- 2: center_goal_distance
- 3: floor_goal_height
- 4: I_goalEffectCreation
- 5: canGoal
- 6: Moira_orb_range
- 7: center_sidewall_distance
- 8: goal_half_length
- 9: pos_jump_pad
- 10: radius_jump_pad
- 11: radius_mei_frost
- 12: I_goalKillSlot
- 13: genji_secondary_gap_degrees
- 14: sigma_primary_explode_radius
- 15: tracer_max_primary_force
- 16: Recaller
- 17: isBallRecalling
- 18: mercy_beam_natural_length
- 19: mercy_beam_maximum_length
- 20: hanzo_min_spd
- 21: hanzo_max_spd
- 22: hanzo_bomb_radius
- 23: Xlength_center_goalJumpPad
- player:
- 0: ball_previous_pos
- 1: ball_ray_hit_pos
- 2: ball_ray_hit_normal
- 3: ball_current_pos
- 4: moira_canShotOrb
- 5: moira_orbPos
- 6: moira_orbBirthTime
- 7: moira_orbIsHeal
- 8: moira_orbEffect
- 9: step_in_jumppad
- 10: mei_frost_positions
- 11: mei_frost_limit_times
- 12: rein_isSwingOdd
- 13: widow_charge_percent
- 14: widow_isCharging
- 15: widow_isSeeingScope
- 16: widow_charge_percent_shot
- 17: widow_txt_percent_shot
- 18: widow_txt_percent_current
- 19: genjiS_arg_axis_direction
- 20: genjiS_arg_theta_degree
- 21: genjiS_ret_direction
- 22: genji_I_secondary
- 23: sigma_pos_primary
- 24: sigma_spd_primary
- 27: sigma_effect_primary
- 28: sigma_I_primary
- 29: sigma_primary_fired_time
- 30: Tracer_primary_force
- 31: Tracer_ball_distance
- 32: mercy_beam_effect
- 33: mercy_ball_distance
- 34: Is_mercy_primary_looping
- 35: mercy_self_move_direction
- 36: mercy_ball_primary_speed
- 37: is_hanzo_charging
- 38: hanzo_spd_primary
- 39: hanzo_velocity_primary
- 40: hanzo_pos_arrow
- 41: effect_hanzo_bomb
- 42: hanzo_using_ability1
- 43: hanzo_arrow_has_bomb
- 44: hanzoS_arrow_travel_is_looping
- 45: hanzo_bomb_is_bonded_to_ball
- 46: hanzo_pos_bomb
- 47: mercy_ability1_target_player
- 48: soutai_speed_pl_and_ball
- 49: bar_lucio_ammo
- 50: lucio_reflect_energy_percent
- 51: lucio_energy_is_charging
- }
- subroutines
- {
- 0: stopTheBall
- 1: BallPowerEffect
- 2: teleportToFirstPos
- 3: genjiS_getSideShurikenDirection
- 4: hanzoS_arrow_trabel
- 5: hanzoS_arrow_hit
- 6: hanzoS_bomb
- 7: lucio_rule_when_touch_ball
- }
- rule("Display server performance characteristics")
- {
- event
- {
- Ongoing - Global;
- }
- actions
- {
- Create HUD Text(All Players(All Teams), String("{0}: {1}", String("Server Load"), String("{0}%", Server Load)), Null, Null, Left,
0, White, White, White, Visible To and String, Default Visibility);
- 0, Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
- Create HUD Text(All Players(All Teams), String("{0}: {1}", String("Server Load Average"), String("{0}%", Server Load Average)),
Null, Null, Left, 1, White, White, White, Visible To and String, Default Visibility);
- Null, Null, Left, 1, Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
- Create HUD Text(All Players(All Teams), String("{0}: {1}", String("Server Load Peak"), String("{0}%", Server Load Peak)), Null,
Null, Left, 2, White, White, White, Visible To and String, Default Visibility);
- Null, Left, 2, Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
- }
- }
- rule("create ball")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- }
- actions
- {
- Create Dummy Bot(Hero(Wrecking Ball), Team 1, 5, Vector(0, 0, 0), Vector(0, 0, 0));
- Global.theBall = Last Created Entity;
- Set Status(Global.theBall, Null, Unkillable, 9999);
- disabled Set Status(Global.theBall, Null, Phased Out, 9999);
- Start Camera(Global.theBall, Vector(0, 10, 5), Position Of(Global.theBall), 15);
Create Icon(All Players(All Teams), Position Of(Global.theBall), Circle, Visible To and Position, Purple, True);
Create Effect(All Players(All Teams), Light Shaft, White, Vector(X Component Of(Position Of(Global.theBall)), 0, Z Component Of(
Position Of(Global.theBall))), 0.200, Visible To Position and Radius);
- Create Icon(All Players(All Teams), Position Of(Global.theBall), Circle, Visible To and Position, Color(Purple), True);
- Create Effect(All Players(All Teams), Light Shaft, Color(White), Vector(X Component Of(Position Of(Global.theBall)), 0,
- Z Component Of(Position Of(Global.theBall))), 0.200, Visible To Position and Radius);
- "sideway ball accel"
- Start Accelerating(Global.theBall, Vector(0, 0, 1 - 2 * (Z Component Of(Position Of(Global.theBall)) > 0)), 100 * (Absolute Value(
- Z Component Of(Position Of(Global.theBall))) > Global.center_sidewall_distance), 20, To World, Direction Rate and Max Speed);
- Disable Movement Collision With Players(Global.theBall);
- }
- }
- rule("Hanzo settings")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Hanzo;
- }
- actions
- {
- Set Primary Fire Enabled(Event Player, True);
- Set Secondary Fire Enabled(Event Player, True);
- Set Ability 1 Enabled(Event Player, True);
- Set Ability 2 Enabled(Event Player, False);
- Set Ultimate Ability Enabled(Event Player, False);
- }
- }
- rule("Mei settings")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Mei;
- }
- actions
- {
- Set Primary Fire Enabled(Event Player, True);
- Set Secondary Fire Enabled(Event Player, False);
- Set Ability 1 Enabled(Event Player, True);
- Set Ability 2 Enabled(Event Player, True);
- Set Ultimate Ability Enabled(Event Player, False);
- Event Player.mei_frost_positions = Empty Array;
- Event Player.mei_frost_limit_times = Empty Array;
- }
- }
- rule("Mercy settings")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Mercy;
- }
- actions
- {
- Set Primary Fire Enabled(Event Player, False);
- Set Secondary Fire Enabled(Event Player, False);
- Set Ability 1 Enabled(Event Player, False);
- Set Ability 2 Enabled(Event Player, False);
- Set Ultimate Ability Enabled(Event Player, False);
- }
- }
- rule("Lucio settings")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Lúcio;
- }
- actions
- {
- Set Primary Fire Enabled(Event Player, False);
- Set Secondary Fire Enabled(Event Player, True);
- Set Ability 1 Enabled(Event Player, False);
- Set Ability 2 Enabled(Event Player, True);
- Set Ultimate Ability Enabled(Event Player, False);
- If(Event Player.bar_lucio_ammo == Null);
- Create Progress Bar HUD Text(Hero Of(Event Player) == Hero(Lúcio) ? Event Player : Null, Event Player.lucio_reflect_energy_percent,
- Custom String("reflect energy(ammo)"), Top, 2, Color(Green), Color(White), Visible To and Values, Default Visibility);
- Event Player.bar_lucio_ammo = Last Text ID;
- End;
- Stop Chasing Player Variable(Event Player, lucio_reflect_energy_percent);
- Event Player.lucio_reflect_energy_percent = 100;
- Chase Player Variable At Rate(Event Player, lucio_reflect_energy_percent, 100, Event Player.lucio_energy_is_charging ? 12.500 : 0,
- Destination and Rate);
- }
- }
- rule("Sigma settings")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Sigma;
- }
- actions
- {
- Set Primary Fire Enabled(Event Player, False);
- Set Secondary Fire Enabled(Event Player, True);
- Set Ability 1 Enabled(Event Player, True);
- Set Ability 2 Enabled(Event Player, False);
- Set Ultimate Ability Enabled(Event Player, False);
- }
- }
- rule("Moira settings")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Moira;
- }
- actions
- {
- Set Primary Fire Enabled(Event Player, True);
- Set Secondary Fire Enabled(Event Player, True);
- Set Ability 1 Enabled(Event Player, True);
- Set Ability 2 Enabled(Event Player, True);
- Set Ultimate Ability Enabled(Event Player, False);
- Event Player.moira_canShotOrb = True;
- }
- }
- rule("Rein settings")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Reinhardt;
- }
- actions
- {
- Set Primary Fire Enabled(Event Player, True);
- Set Secondary Fire Enabled(Event Player, True);
- Set Ability 1 Enabled(Event Player, True);
- Set Ability 2 Enabled(Event Player, False);
- Set Ultimate Ability Enabled(Event Player, False);
- }
- }
- rule("Widow settings")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Widowmaker;
- }
- actions
- {
- Set Primary Fire Enabled(Event Player, True);
- Set Secondary Fire Enabled(Event Player, True);
- Set Ability 1 Enabled(Event Player, True);
- Set Ability 2 Enabled(Event Player, False);
- Set Ultimate Ability Enabled(Event Player, False);
- Create In-World Text(Filtered Array(Append To Array(Empty Array, Event Player), Event Player.widow_isCharging), String("{0}%",
- Round To Integer(Event Player.widow_charge_percent, To Nearest)), Eye Position(Event Player) + Direction From Angles(
- Horizontal Facing Angle Of(Event Player), 6.100 + Vertical Facing Angle Of(Event Player)), 1.750, Do Not Clip,
Visible To Position and String, White, Default Visibility);
- Visible To Position and String, Color(White), Default Visibility);
- Modify Player Variable(Event Player, widow_txt_percent_current, Append To Array, Last Text ID);
- }
- }
- rule("Genji settings")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Genji;
- }
- actions
- {
- Set Primary Fire Enabled(Event Player, False);
- Set Secondary Fire Enabled(Event Player, True);
- Set Ability 1 Enabled(Event Player, True);
- Set Ability 2 Enabled(Event Player, True);
- Set Ultimate Ability Enabled(Event Player, False);
- }
- }
- rule("tracer settings")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Tracer;
- }
- actions
- {
- Set Primary Fire Enabled(Event Player, True);
- Set Secondary Fire Enabled(Event Player, True);
- Set Ability 1 Enabled(Event Player, True);
- Set Ability 2 Enabled(Event Player, True);
- Set Ultimate Ability Enabled(Event Player, False);
- }
- }
- rule("set up time shorten")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Assembling Heroes == True;
- }
- actions
- {
- Set Match Time(7);
- }
- }
- rule("pos loop")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Wrecking Ball;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- }
- actions
- {
- Event Player.ball_current_pos = Position Of(Event Player) + Vector(0, 0.500, 0);
- If(Event Player.ball_previous_pos != Null);
- Event Player.ball_ray_hit_pos = Ray Cast Hit Position(Event Player.ball_previous_pos, Event Player.ball_current_pos, All Players(
- All Teams), Event Player, True);
- If(Event Player.ball_ray_hit_pos != Event Player.ball_current_pos);
- If(Has Status(Event Player, Burning) == False);
- Set Status(Event Player, Null, Burning, 0.300);
- Event Player.ball_ray_hit_normal = Ray Cast Hit Normal(Event Player.ball_previous_pos, Event Player.ball_current_pos, All Players(
- All Teams), Event Player, True);
- Apply Impulse(Event Player, Event Player.ball_ray_hit_normal, 1 * Speed Of In Direction(Event Player,
- -1 * Event Player.ball_ray_hit_normal), To World, Cancel Contrary Motion);
Play Effect(All Players(All Teams), Good Pickup Effect, Purple, Event Player, 1);
Play Effect(All Players(All Teams), Ring Explosion Sound, White, Position Of(Global.theBall), 70);
- Play Effect(All Players(All Teams), Good Pickup Effect, Color(Purple), Event Player, 1);
- Play Effect(All Players(All Teams), Ring Explosion Sound, Color(White), Position Of(Global.theBall), 70);
- End;
- End;
- End;
- Event Player.ball_previous_pos = Event Player.ball_current_pos;
- Wait(0.016, Ignore Condition);
- Loop;
- }
- }
- rule("lucio boop poke")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Lúcio;
- }
- conditions
- {
- Is Firing Secondary(Event Player) == True;
- }
- actions
- {
- If(Is In View Angle(Event Player, Eye Position(Global.theBall), 80) == True);
- disabled Small Message(Event Player, Custom String("angle OK"));
- If(Distance Between(Eye Position(Event Player), Eye Position(Global.theBall)) < 6);
- disabled Small Message(Event Player, Custom String("distance OK"));
- If(Is In Line of Sight(Event Player, Global.theBall, Enemy Barriers Block LOS) == True);
- disabled Small Message(Event Player, Custom String("LOS OK"));
- Apply Impulse(Global.theBall, Direction From Angles(Horizontal Facing Angle Of(Event Player), -10 + Vertical Facing Angle Of(
- Event Player)), 18, To World, Cancel Contrary Motion);
- Start Rule(BallPowerEffect, Restart Rule);
- End;
- End;
- End;
- }
- }
- rule("area limit power")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- actions
- {
- Start Accelerating(Event Player, Direction Towards(Position Of(Event Player), Vector(0, 0.500, 0)), 100 * (Distance Between(
- Position Of(Event Player), Vector(0, 0, 0)) > Global.area_radius), 20, To World, Direction Rate and Max Speed);
- }
- }
- rule("init var,mode setting")
- {
- event
- {
- Ongoing - Global;
- }
- actions
- {
- Global.area_radius = 30;
- Global.center_goal_distance = 28;
- Global.Xlength_center_goalJumpPad = 24;
- Global.floor_goal_height = 4;
- Global.canGoal = True;
- Disable Built-In Game Mode Scoring;
- Global.Moira_orb_range = 6;
- Global.center_sidewall_distance = 22;
- Global.goal_half_length = Square Root(
- Global.area_radius * Global.area_radius - Global.center_goal_distance * Global.center_goal_distance);
- Global.pos_jump_pad = Vector(12.500, 0, 9);
- Global.radius_jump_pad = 3.300;
- Global.radius_mei_frost = 2;
- Global.genji_secondary_gap_degrees[0] = -4.500;
- Global.genji_secondary_gap_degrees[1] = 0;
- Global.genji_secondary_gap_degrees[2] = 4.500;
- Global.sigma_primary_explode_radius = 5;
- Global.tracer_max_primary_force = 4;
- Global.mercy_beam_natural_length = 10;
- Global.mercy_beam_maximum_length = 20;
- Global.hanzo_min_spd = 25;
- Global.hanzo_max_spd = 110;
- Global.hanzo_bomb_radius = 5;
- }
- }
- rule("effects")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Is Game In Progress == True;
- }
- actions
- {
Create Effect(All Players(All Teams), Sphere, Orange, Vector(0, 0, 0), Global.area_radius, Visible To Position and Radius);
- Create Effect(All Players(All Teams), Sphere, Color(Orange), Vector(0, 0, 0), Global.area_radius, Visible To Position and Radius);
- Create Beam Effect(All Players(All Teams), Good Beam, Vector(-1 * Global.area_radius, 2, 1 * Global.center_sidewall_distance),
Vector(1 * Global.area_radius, 2, 1 * Global.center_sidewall_distance), Orange, Visible To);
- Vector(1 * Global.area_radius, 2, 1 * Global.center_sidewall_distance), Color(Orange), Visible To);
- Create Beam Effect(All Players(All Teams), Good Beam, Vector(-1 * Global.area_radius, 2, -1 * Global.center_sidewall_distance),
Vector(1 * Global.area_radius, 2, -1 * Global.center_sidewall_distance), Orange, Visible To);
- Vector(1 * Global.area_radius, 2, -1 * Global.center_sidewall_distance), Color(Orange), Visible To);
- For Global Variable(I_goalEffectCreation, 0, 10, 1);
- Create Beam Effect(All Players(All Teams), Good Beam, Vector(0, 0, 0) + Vector(-1 * Global.center_goal_distance,
- 0.500 * Global.I_goalEffectCreation, 10), Vector(0, 0, 0) + Vector(-1 * Global.center_goal_distance,
0.500 * Global.I_goalEffectCreation, -10), Team 1, Visible To);
- 0.500 * Global.I_goalEffectCreation, -10), Color(Team 1), Visible To);
- Create Beam Effect(All Players(All Teams), Good Beam, Vector(0, 0, 0) + Vector(1 * Global.center_goal_distance,
- 0.500 * Global.I_goalEffectCreation, 10), Vector(0, 0, 0) + Vector(1 * Global.center_goal_distance,
0.500 * Global.I_goalEffectCreation, -10), Team 2, Visible To);
- 0.500 * Global.I_goalEffectCreation, -10), Color(Team 2), Visible To);
- End;
- "jump pads"
Create Effect(All Players(All Teams), Ring, Purple, Global.pos_jump_pad, Global.radius_jump_pad, Visible To);
Create Effect(All Players(All Teams), Ring, Purple, -1 * Global.pos_jump_pad, Global.radius_jump_pad, Visible To);
Create Effect(All Players(All Teams), Ring, Purple, Vector(-1 * X Component Of(Global.pos_jump_pad), 0, Z Component Of(
- Create Effect(All Players(All Teams), Ring, Color(Purple), Global.pos_jump_pad, Global.radius_jump_pad, Visible To);
- Create Effect(All Players(All Teams), Ring, Color(Purple), -1 * Global.pos_jump_pad, Global.radius_jump_pad, Visible To);
- Create Effect(All Players(All Teams), Ring, Color(Purple), Vector(-1 * X Component Of(Global.pos_jump_pad), 0, Z Component Of(
- Global.pos_jump_pad)), Global.radius_jump_pad, Visible To);
Create Effect(All Players(All Teams), Ring, Purple, Vector(X Component Of(Global.pos_jump_pad), 0, -1 * Z Component Of(
- Create Effect(All Players(All Teams), Ring, Color(Purple), Vector(X Component Of(Global.pos_jump_pad), 0, -1 * Z Component Of(
- Global.pos_jump_pad)), Global.radius_jump_pad, Visible To);
- "edge of goal"
Create Effect(All Players(All Teams), Light Shaft, Team 1, Vector(-1 * Global.center_goal_distance, 0,
- Create Effect(All Players(All Teams), Light Shaft, Color(Team 1), Vector(-1 * Global.center_goal_distance, 0,
- -1 * Global.goal_half_length), 0.500, Visible To);
Create Effect(All Players(All Teams), Light Shaft, Team 1, Vector(-1 * Global.center_goal_distance, 0,
- Create Effect(All Players(All Teams), Light Shaft, Color(Team 1), Vector(-1 * Global.center_goal_distance, 0,
- 1 * Global.goal_half_length), 0.500, Visible To);
Create Effect(All Players(All Teams), Light Shaft, Team 2, Vector(1 * Global.center_goal_distance, 0,
- Create Effect(All Players(All Teams), Light Shaft, Color(Team 2), Vector(1 * Global.center_goal_distance, 0,
- -1 * Global.goal_half_length), 0.500, Visible To);
Create Effect(All Players(All Teams), Light Shaft, Team 2, Vector(1 * Global.center_goal_distance, 0, 1 * Global.goal_half_length),
0.500, Visible To);
- Create Effect(All Players(All Teams), Light Shaft, Color(Team 2), Vector(1 * Global.center_goal_distance, 0,
- 1 * Global.goal_half_length), 0.500, Visible To);
- "center line"
- Create Beam Effect(All Players(All Teams), Grapple Beam, Vector(0, 0.050, Global.area_radius), Vector(0, 0.050,
-1 * Global.area_radius), White, Visible To);
- -1 * Global.area_radius), Color(White), Visible To);
- "goal jumppads"
- Create Beam Effect(All Players(All Teams), Good Beam, Vector(1 * Global.Xlength_center_goalJumpPad, 0.050, Global.area_radius),
Vector(1 * Global.Xlength_center_goalJumpPad, 0.050, -1 * Global.area_radius), Purple, Visible To);
- Vector(1 * Global.Xlength_center_goalJumpPad, 0.050, -1 * Global.area_radius), Color(Purple), Visible To);
- Create Beam Effect(All Players(All Teams), Good Beam, Vector(-1 * Global.Xlength_center_goalJumpPad, 0.050, Global.area_radius),
Vector(-1 * Global.Xlength_center_goalJumpPad, 0.050, -1 * Global.area_radius), Purple, Visible To);
- Vector(-1 * Global.Xlength_center_goalJumpPad, 0.050, -1 * Global.area_radius), Color(Purple), Visible To);
- }
- }
- rule("Sigma primary")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Sigma;
- }
- conditions
- {
Is Button Held(Event Player, Primary Fire) == True;
- Is Button Held(Event Player, Button(Primary Fire)) == True;
- Is Alive(Event Player) == True;
- }
- actions
- {
- Event Player.sigma_primary_fired_time = Total Time Elapsed;
Create Effect(All Players(All Teams), Good Aura, Purple, Event Player.sigma_pos_primary, 0.200, Visible To Position and Radius);
- Create Effect(All Players(All Teams), Good Aura, Color(Purple), Event Player.sigma_pos_primary, 0.200,
- Visible To Position and Radius);
- Event Player.sigma_effect_primary = Last Created Entity;
- Event Player.sigma_pos_primary = Eye Position(Event Player);
- Event Player.sigma_spd_primary = 0.750 * Facing Direction Of(Event Player);
- For Player Variable(Event Player, sigma_I_primary, 0, 20, 1);
- If(Ray Cast Hit Position(Event Player.sigma_pos_primary, Event Player.sigma_pos_primary + Event Player.sigma_spd_primary,
- Append To Array(All Players(Opposite Team Of(Team Of(Event Player))), Global.theBall), Null, True)
- == Event Player.sigma_pos_primary + Event Player.sigma_spd_primary);
- Event Player.sigma_pos_primary += Event Player.sigma_spd_primary;
- Wait(0.050, Ignore Condition);
- Else;
- Event Player.sigma_pos_primary = Ray Cast Hit Position(Event Player.sigma_pos_primary,
- Event Player.sigma_pos_primary + Event Player.sigma_spd_primary, Append To Array(All Players(Opposite Team Of(Team Of(
- Event Player))), Global.theBall), Null, True);
- Event Player.sigma_I_primary = 19;
- End;
- Event Player.sigma_spd_primary += Vector(0, -0.015, 0);
- End;
Play Effect(All Players(All Teams), Bad Explosion, Purple, Event Player.sigma_pos_primary, Global.sigma_primary_explode_radius);
Play Effect(All Players(All Teams), Buff Explosion Sound, White, Event Player.sigma_pos_primary, 50);
- Play Effect(All Players(All Teams), Bad Explosion, Color(Purple), Event Player.sigma_pos_primary,
- Global.sigma_primary_explode_radius);
- Play Effect(All Players(All Teams), Buff Explosion Sound, Color(White), Event Player.sigma_pos_primary, 50);
- If(Distance Between(Position Of(Global.theBall), Event Player.sigma_pos_primary) < Global.sigma_primary_explode_radius);
- Apply Impulse(Global.theBall, Direction Towards(Position Of(Global.theBall) + Vector(0, 0.800, 0), Event Player.sigma_pos_primary),
- 10, To World, Incorporate Contrary Motion);
- Start Rule(BallPowerEffect, Do Nothing);
- End;
- Wait(0.050, Ignore Condition);
- Destroy Effect(Event Player.sigma_effect_primary);
- Wait(1.750 + Event Player.sigma_primary_fired_time - Total Time Elapsed, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- rule("human player settings")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == False;
- }
- actions
- {
- Set Status(Event Player, Null, Phased Out, 9999);
- Disable Death Spectate All Players(Event Player);
- Set Status(Event Player, Null, Invincible, 9999);
- Event Player.step_in_jumppad = False;
- }
- }
- rule("sigma shield cancel")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Sigma;
- }
- conditions
- {
- Is Firing Secondary(Event Player) == True;
- }
- actions
- {
- Wait(0.020, Ignore Condition);
- Set Secondary Fire Enabled(Event Player, False);
- Wait(1.200, Ignore Condition);
- Set Secondary Fire Enabled(Event Player, True);
- Wait(0.020, Ignore Condition);
Press Button(Event Player, Secondary Fire);
- Press Button(Event Player, Button(Secondary Fire));
- Wait(0.020, Ignore Condition);
- Set Secondary Fire Enabled(Event Player, False);
- Wait(1.400, Ignore Condition);
- Set Secondary Fire Enabled(Event Player, True);
- }
- }
- rule("sigma grasp")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Sigma;
- }
- conditions
- {
- Is Using Ability 1(Event Player) == True;
- Distance Between(Eye Position(Event Player) + Facing Direction Of(Event Player), Eye Position(Global.theBall)) < 2.500;
- }
- actions
- {
- If(Is In Line of Sight(Event Player, Global.theBall, Enemy Barriers Block LOS) == True);
- Call Subroutine(stopTheBall);
- Apply Impulse(Global.theBall, Direction From Angles(Horizontal Facing Angle Of(Event Player), -45), 11.500, To World,
- Cancel Contrary Motion);
- Start Rule(BallPowerEffect, Restart Rule);
- Set Ability 1 Enabled(Event Player, False);
- Wait(0.250, Ignore Condition);
- Set Ability 1 Enabled(Event Player, True);
- End;
- }
- }
- rule("stopTheBall")
- {
- event
- {
- Subroutine;
- stopTheBall;
- }
- actions
- {
- Apply Impulse(Global.theBall, Right, 0.001, To World, Cancel Contrary Motion);
- Apply Impulse(Global.theBall, Left, 0.001, To World, Cancel Contrary Motion);
- Apply Impulse(Global.theBall, Forward, 0.001, To World, Cancel Contrary Motion);
- Apply Impulse(Global.theBall, Backward, 0.001, To World, Cancel Contrary Motion);
- Apply Impulse(Global.theBall, Up, 0.001, To World, Cancel Contrary Motion);
- Apply Impulse(Global.theBall, Down, 0.001, To World, Cancel Contrary Motion);
- }
- }
- rule("mei primary")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Mei;
- }
- conditions
- {
- Is Firing Primary(Event Player) == True;
- }
- actions
- {
- If(Ray Cast Hit Player(Eye Position(Event Player), Eye Position(Event Player) + 10 * Facing Direction Of(Event Player),
- Append To Array(All Players(Opposite Team Of(Team Of(Event Player))), Global.theBall), Event Player, True) == Global.theBall);
- Apply Impulse(Global.theBall, Direction From Angles(Horizontal Facing Angle Of(Event Player), -15 + Vertical Facing Angle Of(
- Event Player)), 3.500, To World, Incorporate Contrary Motion);
- Start Rule(BallPowerEffect, Restart Rule);
- Else If(Vertical Facing Angle Of(Event Player) > 7);
- Modify Player Variable(Event Player, mei_frost_positions, Append To Array, Ray Cast Hit Position(Eye Position(Event Player),
- Eye Position(Event Player) + 10 * Facing Direction Of(Event Player), Remove From Array(All Players(Opposite Team Of(Team Of(
- Event Player))), Global.theBall), Null, True));
- Modify Player Variable(Event Player, mei_frost_limit_times, Append To Array, Total Time Elapsed + 1);
Play Effect(All Players(All Teams), Ring Explosion, Aqua, Last Of(Event Player.mei_frost_positions), Global.radius_mei_frost);
- Play Effect(All Players(All Teams), Ring Explosion, Color(Aqua), Last Of(Event Player.mei_frost_positions),
- Global.radius_mei_frost);
- End;
- Wait(0.240, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- rule("mei frost remove")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Mei;
- }
- conditions
- {
- Event Player.mei_frost_positions != Empty Array;
- First Of(Event Player.mei_frost_limit_times) < Total Time Elapsed;
- }
- actions
- {
- Modify Player Variable(Event Player, mei_frost_positions, Remove From Array By Index, 0);
- Modify Player Variable(Event Player, mei_frost_limit_times, Remove From Array By Index, 0);
- }
- }
- rule("step mei frost")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Mei;
- }
- conditions
- {
- Event Player.mei_frost_positions != Empty Array;
- Is True For Any(Event Player.mei_frost_positions, Distance Between(Position Of(Event Player), Current Array Element)
- < Global.radius_mei_frost) == True;
- }
- actions
- {
- disabled Apply Impulse(Event Player, Direction From Angles(Horizontal Facing Angle Of(Event Player) + Horizontal Angle From Direction(
- Throttle Of(Event Player)), 0), 6, To World, Incorporate Contrary Motion);
- Set Move Speed(Event Player, 140);
- Wait(0.240, Ignore Condition);
- Loop If Condition Is True;
- Set Move Speed(Event Player, 100);
- }
- }
- rule("Moira primary")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Moira;
- }
- conditions
- {
- Is Firing Primary(Event Player) == True;
- }
- actions
- {
- If(Ray Cast Hit Player(Eye Position(Event Player), Eye Position(Event Player) + 20 * Facing Direction Of(Event Player),
- Append To Array(All Players(Opposite Team Of(Team Of(Event Player))), Global.theBall), Event Player, True) == Global.theBall);
- Apply Impulse(Global.theBall, Direction From Angles(Horizontal Facing Angle Of(Event Player), -15 + Vertical Facing Angle Of(
- Event Player)), 2.800, To World, Incorporate Contrary Motion);
- Start Rule(BallPowerEffect, Restart Rule);
- End;
- Wait(0.240, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- rule("Moira secondary")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Moira;
- }
- conditions
- {
- Is Firing Secondary(Event Player) == True;
- }
- actions
- {
- If(Ray Cast Hit Player(Eye Position(Event Player), Eye Position(Event Player) + 20 * Facing Direction Of(Event Player),
- Append To Array(All Players(Opposite Team Of(Team Of(Event Player))), Global.theBall), Event Player, True) == Global.theBall);
- Apply Impulse(Global.theBall, Direction From Angles(Horizontal Facing Angle Of(Event Player) + 180, -15 + Vertical Facing Angle Of(
- Event Player)), 2.800, To World, Incorporate Contrary Motion);
- Start Rule(BallPowerEffect, Restart Rule);
- End;
- Wait(0.240, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- rule("Moira orb stop ready")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Moira;
- }
- conditions
- {
- Is Using Ability 2(Event Player) == True;
- }
- actions
- {
- Event Player.moira_canShotOrb = True;
Disallow Button(Event Player, Ability 2);
- Disallow Button(Event Player, Button(Ability 2));
- Wait(1, Ignore Condition);
Allow Button(Event Player, Ability 2);
Press Button(Event Player, Ability 2);
- Allow Button(Event Player, Button(Ability 2));
- Press Button(Event Player, Button(Ability 2));
- Wait(0.020, Ignore Condition);
Disallow Button(Event Player, Ability 2);
- Disallow Button(Event Player, Button(Ability 2));
- Wait(0.016, Ignore Condition);
- Event Player.moira_canShotOrb = False;
- Wait(0.214, Ignore Condition);
Allow Button(Event Player, Ability 2);
- Allow Button(Event Player, Button(Ability 2));
- Event Player.moira_canShotOrb = True;
- }
- }
- rule("Moira heal orb")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Moira;
- }
- conditions
- {
- Is Using Ability 2(Event Player) == True;
- Event Player.moira_canShotOrb == True;
Is Button Held(Event Player, Primary Fire) == True;
- Is Button Held(Event Player, Button(Primary Fire)) == True;
- }
- actions
- {
- Abort If Condition Is False;
- Event Player.moira_canShotOrb = False;
- Small Message(Event Player, Custom String("heal orb"));
- Event Player.moira_orbPos = Eye Position(Event Player);
- Event Player.moira_orbIsHeal = True;
- Event Player.moira_orbBirthTime = Total Time Elapsed;
Create Effect(All Players(All Teams), Good Aura, Yellow, Event Player.moira_orbPos, Global.Moira_orb_range, Visible To);
- Create Effect(All Players(All Teams), Good Aura, Color(Yellow), Event Player.moira_orbPos, Global.Moira_orb_range, Visible To);
- Event Player.moira_orbEffect = Last Created Entity;
- Wait(7, Ignore Condition);
- Destroy Effect(Event Player.moira_orbEffect);
- }
- }
- rule("Moira dmg orb")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Moira;
- }
- conditions
- {
- Is Using Ability 2(Event Player) == True;
- Event Player.moira_canShotOrb == True;
Is Button Held(Event Player, Secondary Fire) == True;
Is Button Held(Event Player, Primary Fire) == False;
- Is Button Held(Event Player, Button(Secondary Fire)) == True;
- Is Button Held(Event Player, Button(Primary Fire)) == False;
- }
- actions
- {
- Abort If Condition Is False;
- Event Player.moira_canShotOrb = False;
- Small Message(Event Player, Custom String("dmg orb"));
- Event Player.moira_orbPos = Eye Position(Event Player);
- Event Player.moira_orbIsHeal = False;
- Event Player.moira_orbBirthTime = Total Time Elapsed;
Create Effect(All Players(All Teams), Bad Aura, Purple, Event Player.moira_orbPos, Global.Moira_orb_range, Visible To);
- Create Effect(All Players(All Teams), Bad Aura, Color(Purple), Event Player.moira_orbPos, Global.Moira_orb_range, Visible To);
- Event Player.moira_orbEffect = Last Created Entity;
- Wait(7, Ignore Condition);
- Destroy Effect(Event Player.moira_orbEffect);
- }
- }
- rule("moira orb push pull")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Moira;
- }
- conditions
- {
- Total Time Elapsed - Event Player.moira_orbBirthTime < 7;
- Distance Between(Eye Position(Global.theBall), Event Player.moira_orbPos) <= Global.Moira_orb_range;
- }
- actions
- {
- If(Event Player.moira_orbIsHeal);
- Apply Impulse(Global.theBall, Direction Towards(Event Player.moira_orbPos, Eye Position(Global.theBall)), 3.200, To World,
- Incorporate Contrary Motion);
- Else;
- Apply Impulse(Global.theBall, Direction Towards(Eye Position(Global.theBall), Event Player.moira_orbPos), 3.200, To World,
- Incorporate Contrary Motion);
- End;
- Start Rule(BallPowerEffect, Do Nothing);
- Wait(0.240, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- rule("rein primary")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Reinhardt;
- }
- conditions
- {
- Is Firing Primary(Event Player) == True;
- }
- actions
- {
- Wait(0.410, Abort When False);
- Event Player.rein_isSwingOdd = True;
- While(Is Firing Primary(Event Player));
- If(Distance Between(Eye Position(Event Player), Eye Position(Global.theBall)) < 5.200);
- If(Is In View Angle(Event Player, Eye Position(Global.theBall), 80));
- If(Is In Line of Sight(Eye Position(Event Player), Global.theBall, Barriers Do Not Block LOS) == True);
- Apply Impulse(Global.theBall, Direction From Angles(Horizontal Facing Angle Of(Event Player)
- + -30 + 60 * Event Player.rein_isSwingOdd, -10 + Vertical Facing Angle Of(Event Player)), 11, To World,
- Incorporate Contrary Motion);
- Call Subroutine(BallPowerEffect);
- End;
- End;
- End;
- Event Player.rein_isSwingOdd = !Event Player.rein_isSwingOdd;
- Wait(0.940, Abort When False);
- End;
- }
- }
- rule("Rein charge")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Reinhardt;
- }
- conditions
- {
- Is Using Ability 1(Event Player) == True;
- }
- actions
- {
- Small Message(Event Player, Custom String(" "));
- Wait(0.570, Ignore Condition);
- Set Status(Event Player, Null, Hacked, 0.030);
- Apply Impulse(Event Player, Direction From Angles(Horizontal Facing Angle Of(Event Player), -16), 32, To World,
- Cancel Contrary Motion);
- Small Message(Event Player, Custom String(" "));
- }
- }
- rule("Rein shield to throttle")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Reinhardt;
- }
- conditions
- {
- Is Firing Secondary(Event Player) == True;
- }
- actions
- {
- Start Throttle In Direction(Event Player, Direction Towards(Position Of(Global.theBall), Position Of(Event Player)), 0.125,
- To World, Replace existing throttle, Direction and Magnitude);
- Apply Impulse(Event Player, Direction Towards(Position Of(Global.theBall), Position Of(Event Player)), 0.001, To World,
- Cancel Contrary Motion);
- }
- }
- rule("Rein stop shield to stop throttle")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Reinhardt;
- }
- conditions
- {
- Is Firing Secondary(Event Player) == False;
- }
- actions
- {
- Stop Throttle In Direction(Event Player);
- }
- }
- rule("BallPowerEffect")
- {
- event
- {
- Subroutine;
- BallPowerEffect;
- }
- actions
- {
- Damage(Global.theBall, Event Player, 1);
Play Effect(All Players(All Teams), Good Explosion, Lime Green, Global.theBall, 0.010);
Play Effect(All Players(All Teams), Explosion Sound, White, Position Of(Global.theBall), 30);
- Play Effect(All Players(All Teams), Good Explosion, Color(Lime Green), Global.theBall, 0.010);
- Play Effect(All Players(All Teams), Explosion Sound, Color(White), Position Of(Global.theBall), 30);
- }
- }
- rule("genjiSubroutine")
- {
- event
- {
- Subroutine;
- genjiS_getSideShurikenDirection;
- }
- actions
- {
- Event Player.genjiS_ret_direction = Facing Direction Of(Event Player) * Cosine From Degrees(Event Player.genjiS_arg_theta_degree)
- + Cross Product(Event Player.genjiS_arg_axis_direction, Facing Direction Of(Event Player)) * Sine From Degrees(
- Event Player.genjiS_arg_theta_degree);
- }
- }
- rule("genji secondary")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Genji;
- }
- conditions
- {
- Is Firing Secondary(Event Player) == True;
- }
- actions
- {
- Event Player.genjiS_arg_axis_direction = Direction From Angles(Horizontal Facing Angle Of(Event Player),
- -90 + Vertical Facing Angle Of(Event Player));
- For Player Variable(Event Player, genji_I_secondary, 0, 3, 1);
- Event Player.genjiS_arg_theta_degree = Global.genji_secondary_gap_degrees[Event Player.genji_I_secondary];
- Call Subroutine(genjiS_getSideShurikenDirection);
- If(Ray Cast Hit Player(Eye Position(Event Player), Eye Position(Event Player) + 100 * Event Player.genjiS_ret_direction,
- Append To Array(All Players(Opposite Team Of(Team Of(Event Player))), Global.theBall), Event Player, True) == Global.theBall);
- Apply Impulse(Global.theBall, Direction From Angles(Horizontal Angle From Direction(Event Player.genjiS_ret_direction),
- -10 + Vertical Angle From Direction(Event Player.genjiS_ret_direction)), 2.600, To World, Incorporate Contrary Motion);
- Start Rule(BallPowerEffect, Do Nothing);
- End;
- End;
- }
- }
- rule("genji ability1")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Genji;
- }
- conditions
- {
- Is Using Ability 1(Event Player) == True;
- Distance Between(Eye Position(Event Player), Eye Position(Global.theBall)) < 2;
- }
- actions
- {
- Apply Impulse(Global.theBall, Direction From Angles(Horizontal Facing Angle Of(Event Player), -10 + Vertical Facing Angle Of(
- Event Player)), 9, To World, Incorporate Contrary Motion);
- Start Rule(BallPowerEffect, Do Nothing);
- }
- }
- rule("genji deflect")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Genji;
- }
- conditions
- {
- Is Using Ability 2(Event Player) == True;
- Distance Between(Eye Position(Event Player), Eye Position(Global.theBall)) < 2;
- Speed Of In Direction(Global.theBall, Facing Direction Of(Event Player)) < 0;
- }
- actions
- {
- Apply Impulse(Global.theBall, Direction From Angles(Horizontal Facing Angle Of(Event Player), -10 + Vertical Facing Angle Of(
- Event Player)), Absolute Value(Speed Of In Direction(Global.theBall, Facing Direction Of(Event Player))), To World,
- Cancel Contrary Motion);
Play Effect(All Players(All Teams), Good Pickup Effect, Purple, Global.theBall, 1);
Play Effect(All Players(All Teams), Ring Explosion Sound, White, Position Of(Global.theBall), 70);
- Play Effect(All Players(All Teams), Good Pickup Effect, Color(Purple), Global.theBall, 1);
- Play Effect(All Players(All Teams), Ring Explosion Sound, Color(White), Position Of(Global.theBall), 70);
- }
- }
- rule("widow scoping")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Widowmaker;
- }
- conditions
- {
- Is Firing Secondary(Event Player) == True;
- Is Firing Primary(Event Player) == False;
Is Button Held(Event Player, Secondary Fire) == True;
- Is Button Held(Event Player, Button(Secondary Fire)) == True;
- }
- actions
- {
- If(Event Player.widow_isSeeingScope);
- Wait(0.400, Abort When False);
- Else;
- Wait(0.320, Abort When False);
- End;
- Event Player.widow_isSeeingScope = True;
- Set Status(Event Player, Null, Burning, 9999);
- Event Player.widow_isCharging = True;
Disallow Button(Event Player, Jump);
- Disallow Button(Event Player, Button(Jump));
- }
- }
- rule("widow not scoping")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Widowmaker;
- }
- conditions
- {
disabled Is Button Held(Event Player, Secondary Fire) == False;
- disabled Is Button Held(Event Player, Button(Secondary Fire)) == False;
- disabled Is Using Ability 1(Event Player) == False;
(!Is Button Held(Event Player, Secondary Fire) || Is Using Ability 1(Event Player)) == True;
- (!Is Button Held(Event Player, Button(Secondary Fire)) || Is Using Ability 1(Event Player)) == True;
- }
- actions
- {
- Clear Status(Event Player, Burning);
- Event Player.widow_isCharging = False;
- Stop Chasing Player Variable(Event Player, widow_charge_percent);
- Event Player.widow_charge_percent = 0;
- Event Player.widow_isSeeingScope = False;
Allow Button(Event Player, Jump);
- Allow Button(Event Player, Button(Jump));
- }
- }
- rule("widow charge")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Widowmaker;
- }
- conditions
- {
- Event Player.widow_isCharging == True;
- }
- actions
- {
- Chase Player Variable Over Time(Event Player, widow_charge_percent, 200, 1.800, None);
- }
- }
- rule("widow snipe shot")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Widowmaker;
- }
- conditions
- {
- Is Firing Primary(Event Player) == True;
- }
- actions
- {
- If(Ray Cast Hit Player(Eye Position(Event Player), Eye Position(Event Player) + 100 * Facing Direction Of(Event Player),
- Append To Array(All Players(Opposite Team Of(Team Of(Event Player))), Global.theBall), Event Player, True) == Global.theBall);
- Apply Impulse(Global.theBall, Direction From Angles(Horizontal Facing Angle Of(Event Player), -10 + Vertical Facing Angle Of(
- Event Player)), Event Player.widow_charge_percent * 0.080, To World, Incorporate Contrary Motion);
- Start Rule(BallPowerEffect, Do Nothing);
- End;
- "debug"
- disabled Event Player.widow_charge_percent_shot = Event Player.widow_charge_percent;
- "debug"
- disabled Create In-World Text(Event Player, Event Player.widow_charge_percent_shot, Eye Position(Event Player) + Facing Direction Of(
Event Player), 4, Clip Against Surfaces, String, White, Default Visibility);
- Event Player), 4, Clip Against Surfaces, String, Color(White), Default Visibility);
- "debug"
- disabled Event Player.widow_txt_percent_shot = Last Text ID;
- Clear Status(Event Player, Burning);
- Event Player.widow_isCharging = False;
- Stop Chasing Player Variable(Event Player, widow_charge_percent);
- Event Player.widow_charge_percent = 0;
- "debug"
- disabled Wait(0.250, Ignore Condition);
- "debug"
- disabled Destroy In-World Text(Event Player.widow_txt_percent_shot);
- }
- }
- rule("Tracer primary")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Tracer;
- }
- conditions
- {
- Is Firing Primary(Event Player) == True;
- }
- actions
- {
- If(Ray Cast Hit Player(Eye Position(Event Player), Eye Position(Event Player) + 20 * Facing Direction Of(Event Player),
- Append To Array(All Players(Opposite Team Of(Team Of(Event Player))), Global.theBall), Event Player, True) == Global.theBall);
- Event Player.Tracer_ball_distance = Distance Between(Position Of(Event Player), Position Of(Global.theBall));
- If(Event Player.Tracer_ball_distance <= 5);
- Event Player.Tracer_primary_force = Global.tracer_max_primary_force;
- Else;
- Event Player.Tracer_primary_force = Global.tracer_max_primary_force * (5 / Event Player.Tracer_ball_distance);
- End;
- Apply Impulse(Global.theBall, Direction From Angles(Horizontal Facing Angle Of(Event Player), -15 + Vertical Facing Angle Of(
- Event Player)), Event Player.Tracer_primary_force, To World, Incorporate Contrary Motion);
- Start Rule(BallPowerEffect, Restart Rule);
- End;
- Wait(0.240, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- rule("Tracer recall")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Tracer;
- }
- conditions
- {
- Is Using Ability 2(Event Player) == True;
- }
- actions
- {
- If(Distance Between(Position Of(Event Player), Position Of(Global.theBall)) < 1.500 && !Global.isBallRecalling);
- Global.Recaller = Event Player;
- Global.isBallRecalling = True;
- Start Rule(stopTheBall, Do Nothing);
- End;
- }
- }
- rule("ball recall")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Global.isBallRecalling == True;
- }
- actions
- {
- Set Invisible(Global.theBall, All);
- Wait(0.900, Ignore Condition);
- Start Rule(stopTheBall, Do Nothing);
- If(Absolute Value(X Component Of(Position Of(Global.Recaller))) > Global.center_goal_distance - 2);
- Teleport(Global.theBall, Vector((Global.center_goal_distance - 2) * (X Component Of(Position Of(Global.Recaller)) / Absolute Value(
- X Component Of(Position Of(Global.Recaller)))), Y Component Of(Position Of(Global.Recaller)), Z Component Of(Position Of(
- Global.Recaller))));
- Else;
- Teleport(Global.theBall, Position Of(Global.Recaller));
- End;
- Set Invisible(Global.theBall, None);
- Global.Recaller = Null;
- Global.isBallRecalling = False;
- }
- }
- rule("mercy primary")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Mercy;
- }
- conditions
- {
- Entity Exists(Global.theBall) == True;
Is Button Held(Event Player, Primary Fire) == True;
- Is Button Held(Event Player, Button(Primary Fire)) == True;
- Distance Between(Eye Position(Event Player) + Facing Direction Of(Event Player), Position Of(Global.theBall) + Vector(0, 0.800, 0))
- < Global.mercy_beam_maximum_length;
- Is In View Angle(Event Player, Position Of(Global.theBall) + Vector(0, 0.800, 0), 60) == True;
- Is In Line of Sight(Event Player, Global.theBall, Enemy Barriers Block LOS) == True;
- }
- actions
- {
- Create Beam Effect(All Players(All Teams), Good Beam, Eye Position(Event Player) + Facing Direction Of(Event Player), Position Of(
Global.theBall) + Vector(0, 0.800, 0), Green, Visible To Position and Radius);
- Global.theBall) + Vector(0, 0.800, 0), Color(Green), Visible To Position and Radius);
- Event Player.mercy_beam_effect = Last Created Entity;
- Event Player.Is_mercy_primary_looping = True;
- While(Event Player.Is_mercy_primary_looping == True);
- Event Player.mercy_ball_distance = Distance Between(Eye Position(Event Player) + Facing Direction Of(Event Player), Position Of(
- Global.theBall) + Vector(0, 0.800, 0));
If(!Is Button Held(Event Player, Primary Fire) || !Is In Line of Sight(Event Player, Global.theBall, Enemy Barriers Block LOS)
|| Event Player.mercy_ball_distance >= Global.mercy_beam_maximum_length);
- If(!Is Button Held(Event Player, Button(Primary Fire)) || !Is In Line of Sight(Event Player, Global.theBall,
- Enemy Barriers Block LOS) || Event Player.mercy_ball_distance >= Global.mercy_beam_maximum_length);
- Event Player.Is_mercy_primary_looping = False;
- Else;
- If(Event Player.mercy_ball_distance > Global.mercy_beam_natural_length);
- Event Player.mercy_self_move_direction = Direction Towards(Eye Position(Event Player) + Facing Direction Of(Event Player),
- Position Of(Global.theBall) + Vector(0, 0.800, 0));
- Else;
- Event Player.mercy_self_move_direction = Direction Towards(Position Of(Global.theBall) + Vector(0, 0.800, 0), Eye Position(
- Event Player) + Facing Direction Of(Event Player));
- End;
- Event Player.mercy_ball_primary_speed = 0.450 * Absolute Value(
- Event Player.mercy_ball_distance - Global.mercy_beam_natural_length);
- Apply Impulse(Event Player, Event Player.mercy_self_move_direction, Event Player.mercy_ball_primary_speed, To World,
- Incorporate Contrary Motion);
- Apply Impulse(Global.theBall, -1 * Event Player.mercy_self_move_direction, Event Player.mercy_ball_primary_speed, To World,
- Incorporate Contrary Motion);
- Start Rule(BallPowerEffect, Do Nothing);
- Wait(0.240, Ignore Condition);
- End;
- End;
- Destroy Effect(Event Player.mercy_beam_effect);
- }
- }
- rule("mercy shift")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Mercy;
- }
- conditions
- {
Is Button Held(Event Player, Ability 1) == True;
- Is Button Held(Event Player, Button(Ability 1)) == True;
- Ability Cooldown(Event Player, Button(Ability 1)) == 0;
- }
- actions
- {
- Event Player.mercy_ability1_target_player = First Of(Filtered Array(Sorted Array(Append To Array(Players in View Angle(
- Event Player, Team Of(Event Player), 25), Global.theBall), Distance Between(Vector(0, 0, 0), Cross Product(Vector Towards(
- Eye Position(Event Player), Eye Position(Current Array Element)), Facing Direction Of(Event Player))) / Distance Between(
- Vector(0, 0, 0), Normalize(Facing Direction Of(Event Player)))), Distance Between(Position Of(Event Player), Position Of(
- Current Array Element)) < 30));
- disabled Event Player.mercy_ability1_target_player = First Of(Sorted Array(Append To Array(Players in View Angle(Event Player, Team Of(
- Event Player), 25), Global.theBall), Distance Between(Vector(0, 0, 0), Cross Product(Vector Towards(Eye Position(Event Player),
- Eye Position(Current Array Element)), Facing Direction Of(Event Player))) / Distance Between(Vector(0, 0, 0), Normalize(
- Facing Direction Of(Event Player)))));
- If(Event Player.mercy_ability1_target_player != Null);
- Apply Impulse(Event Player, Direction From Angles(Horizontal Angle From Direction(Direction Towards(Position Of(Event Player),
- Position Of(Event Player.mercy_ability1_target_player))), -15 + Vertical Angle From Direction(Direction Towards(Position Of(
- Event Player), Position Of(Event Player.mercy_ability1_target_player)))), 6 + 1.250 * Distance Between(Position Of(
- Event Player), Position Of(Event Player.mercy_ability1_target_player)), To World, Cancel Contrary Motion);
- disabled Wait(1.740, Ignore Condition);
- Set Ability Cooldown(Event Player, Button(Ability 1), 1.750);
disabled Play Effect(Event Player, Buff Impact Sound, White, Event Player, 40);
- disabled Play Effect(Event Player, Buff Impact Sound, Color(White), Event Player, 40);
- End;
- }
- }
- rule("hanzo shot")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Hanzo;
- }
- conditions
- {
- Is Firing Primary(Event Player) == False;
- }
- actions
- {
- Stop Chasing Player Variable(Event Player, hanzo_spd_primary);
If(Is Button Held(Event Player, Primary Fire) == False);
- If(Is Button Held(Event Player, Button(Primary Fire)) == False);
- If(Event Player.is_hanzo_charging);
- disabled Small Message(Event Player, Event Player.hanzo_spd_primary);
- Event Player.hanzo_pos_arrow = Eye Position(Event Player);
- Event Player.hanzo_velocity_primary = Event Player.hanzo_spd_primary * Facing Direction Of(Event Player) / 30;
- Event Player.hanzo_arrow_has_bomb = Event Player.hanzo_using_ability1;
- Start Rule(hanzoS_arrow_trabel, Restart Rule);
- End;
- End;
- Event Player.is_hanzo_charging = False;
- }
- }
- rule("hanzo start charge")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Hanzo;
- }
- conditions
- {
- Is Firing Primary(Event Player) == True;
- }
- actions
- {
- Event Player.is_hanzo_charging = True;
- Event Player.hanzo_spd_primary = Global.hanzo_min_spd;
- Chase Player Variable Over Time(Event Player, hanzo_spd_primary, Global.hanzo_max_spd, 0.750, None);
- }
- }
- rule("hanzoS_arrow_travel")
- {
- event
- {
- Subroutine;
- hanzoS_arrow_trabel;
- }
- actions
- {
- Event Player.hanzoS_arrow_travel_is_looping = True;
- While(Event Player.hanzoS_arrow_travel_is_looping);
- If(Ray Cast Hit Position(Event Player.hanzo_pos_arrow, Event Player.hanzo_pos_arrow + Event Player.hanzo_velocity_primary,
- Append To Array(All Players(Opposite Team Of(Team Of(Event Player))), Global.theBall), Null, True)
- == Event Player.hanzo_velocity_primary + Event Player.hanzo_pos_arrow);
- Event Player.hanzo_pos_arrow += Event Player.hanzo_velocity_primary;
- Event Player.hanzo_velocity_primary += Vector(0, -0.015, 0);
- Else;
- Event Player.hanzoS_arrow_travel_is_looping = False;
- Start Rule(hanzoS_arrow_hit, Restart Rule);
- End;
Play Effect(All Players(All Teams), Bad Explosion, Green, Event Player.hanzo_pos_arrow, 0.010);
- Play Effect(All Players(All Teams), Bad Explosion, Color(Green), Event Player.hanzo_pos_arrow, 0.010);
- Wait(1 / 30, Ignore Condition);
- End;
- }
- }
- rule("hanzo charge with abilit1")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Hanzo;
- }
- conditions
- {
- Is Firing Primary(Event Player) == True;
- Is Using Ability 1(Event Player) == True;
- }
- actions
- {
- Event Player.hanzo_using_ability1 = True;
- }
- }
- rule("hanzo charge without abilit1")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Hanzo;
- }
- conditions
- {
- Is Firing Primary(Event Player) == True;
- Is Using Ability 1(Event Player) == False;
- }
- actions
- {
- Event Player.hanzo_using_ability1 = False;
- }
- }
- rule("hanzoS_arrow_hit")
- {
- event
- {
- Subroutine;
- hanzoS_arrow_hit;
- }
- actions
- {
- "hit ham"
- If(Ray Cast Hit Player(Event Player.hanzo_pos_arrow, Event Player.hanzo_pos_arrow + Event Player.hanzo_velocity_primary,
- Append To Array(All Players(Opposite Team Of(Team Of(Event Player))), Global.theBall), Null, True) == Global.theBall);
- Event Player.hanzo_pos_arrow = Ray Cast Hit Position(Event Player.hanzo_pos_arrow,
- Event Player.hanzo_pos_arrow + Event Player.hanzo_velocity_primary, Append To Array(All Players(Opposite Team Of(Team Of(
- Event Player))), Global.theBall), Null, True);
- Apply Impulse(Global.theBall, Direction From Angles(Horizontal Angle From Direction(Event Player.hanzo_velocity_primary),
- -10 + Vertical Angle From Direction(Event Player.hanzo_velocity_primary)), Distance Between(Vector(0, 0, 0),
- Event Player.hanzo_velocity_primary) * (10 / 3.666), To World, Incorporate Contrary Motion);
- Start Rule(BallPowerEffect, Do Nothing);
- If(Event Player.hanzo_arrow_has_bomb);
- Event Player.hanzo_bomb_is_bonded_to_ball = True;
- Start Rule(hanzoS_bomb, Restart Rule);
- End;
- Else;
- Event Player.hanzo_pos_arrow = Ray Cast Hit Position(Event Player.hanzo_pos_arrow,
- Event Player.hanzo_pos_arrow + Event Player.hanzo_velocity_primary, Append To Array(All Players(Opposite Team Of(Team Of(
- Event Player))), Global.theBall), Null, True);
- If(Event Player.hanzo_arrow_has_bomb);
- Event Player.hanzo_bomb_is_bonded_to_ball = False;
- Start Rule(hanzoS_bomb, Restart Rule);
- End;
- End;
- }
- }
- rule("hanzoS_bomb")
- {
- event
- {
- Subroutine;
- hanzoS_bomb;
- }
- actions
- {
- If(Event Player.hanzo_bomb_is_bonded_to_ball);
- "soutai"
- Event Player.hanzo_pos_bomb = Event Player.hanzo_pos_arrow - (Position Of(Global.theBall) + Vector(0, 0.800, 0));
Create Effect(All Players(All Teams), Sphere, Red, Event Player.hanzo_pos_bomb + Position Of(Global.theBall) + Vector(0, 0.800, 0),
0.500, Visible To Position and Radius);
- Create Effect(All Players(All Teams), Sphere, Color(Red), Event Player.hanzo_pos_bomb + Position Of(Global.theBall) + Vector(0,
- 0.800, 0), 0.500, Visible To Position and Radius);
- Event Player.effect_hanzo_bomb = Last Created Entity;
- Wait(1, Ignore Condition);
- Destroy Effect(Event Player.effect_hanzo_bomb);
Play Effect(All Players(All Teams), Good Explosion, Red, Position Of(Global.theBall) + Vector(0, 0.800, 0)
- Play Effect(All Players(All Teams), Good Explosion, Color(Red), Position Of(Global.theBall) + Vector(0, 0.800, 0)
- + Event Player.hanzo_pos_bomb, 2);
- Apply Impulse(Global.theBall, -1 * Event Player.hanzo_pos_bomb, 9, To World, Cancel Contrary Motion);
- Start Rule(BallPowerEffect, Do Nothing);
- Else;
- "zettai"
- Event Player.hanzo_pos_bomb = Event Player.hanzo_pos_arrow;
Create Effect(All Players(All Teams), Sphere, Red, Event Player.hanzo_pos_bomb, 0.500, Visible To);
- Create Effect(All Players(All Teams), Sphere, Color(Red), Event Player.hanzo_pos_bomb, 0.500, Visible To);
- Event Player.effect_hanzo_bomb = Last Created Entity;
- Wait(1, Ignore Condition);
- Destroy Effect(Event Player.effect_hanzo_bomb);
Play Effect(All Players(All Teams), Good Explosion, Red, Event Player.hanzo_pos_bomb, 2);
- Play Effect(All Players(All Teams), Good Explosion, Color(Red), Event Player.hanzo_pos_bomb, 2);
- If(Distance Between(Position Of(Global.theBall) + Vector(0, 0.800, 0), Event Player.hanzo_pos_bomb) < Global.hanzo_bomb_radius);
- If(Is In Line of Sight(Event Player.hanzo_pos_bomb, Position Of(Global.theBall) + Vector(0, 0.800, 0), Enemy Barriers Block LOS));
- Apply Impulse(Global.theBall, Direction Towards(Event Player.hanzo_pos_bomb, Position Of(Global.theBall) + Vector(0, 0.800, 0)), 9,
- To World, Cancel Contrary Motion);
- Start Rule(BallPowerEffect, Do Nothing);
- End;
- End;
- End;
- }
- }
- disabled rule("debug human player hud")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == False;
- }
- actions
- {
- Create HUD Text(Event Player, String("{0} - {1}", String("Secondary Fire"), Is Firing Secondary(Event Player)), Null, Null, Left,
0, White, White, White, Visible To and String, Default Visibility);
- 0, Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
- Create HUD Text(Event Player, String("{0} - {1}", String("Primary Fire"), Is Firing Primary(Event Player)), Null, Null, Left, 0,
White, White, White, Visible To and String, Default Visibility);
- Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
- Create HUD Text(Event Player, String("{0} - {1}", String("Ability 2"), Is Using Ability 2(Event Player)), Null, Null, Left, 0,
White, White, White, Visible To and String, Default Visibility);
- Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
- Create HUD Text(Event Player, String("{0} - {1}", Custom String("moira can shot orb"), Event Player.moira_canShotOrb), Null, Null,
Left, 0, White, White, White, Visible To and String, Default Visibility);
- Left, 0, Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
- Create HUD Text(Event Player, String("{0} - {1}", Custom String("jumppad step in"), Event Player.step_in_jumppad), Null, Null,
Left, 0, White, White, White, Visible To and String, Default Visibility);
- Left, 0, Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
- Create HUD Text(Event Player, String("{0} - {1}", Custom String("vertical facing angle"), Vertical Facing Angle Of(Event Player)),
Null, Null, Left, 0, White, White, White, Visible To and String, Default Visibility);
- Null, Null, Left, 0, Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
- Create HUD Text(Event Player, String("{0} - {1}", String("Ability 1"), Is Using Ability 1(Event Player)), Null, Null, Left, 0,
White, White, White, Visible To and String, Default Visibility);
- Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
- Create HUD Text(Event Player, String("{0} - {1}", Custom String("widow charging"), Event Player.widow_isCharging), Null, Null,
Left, 0, White, White, White, Visible To and String, Default Visibility);
- Left, 0, Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
- Create HUD Text(Event Player, String("{0} - {1}", Custom String("widow charge percent"), Event Player.widow_charge_percent), Null,
Null, Left, 0, White, White, White, Visible To and String, Default Visibility);
- Null, Left, 0, Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
- Create HUD Text(Event Player, String("{0} - {1}", Custom String("widow is seeing scope"), Event Player.widow_isSeeingScope), Null,
Null, Left, 0, White, White, White, Visible To and String, Default Visibility);
- Null, Left, 0, Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
- }
- }
- rule("goal")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == True;
- Hero Of(Event Player) == Hero(Wrecking Ball);
- Global.canGoal == True;
- Absolute Value(X Component Of(Position Of(Event Player))) >= Global.center_goal_distance;
- (Y Component Of(Position Of(Global.theBall)) <= Global.floor_goal_height) == True;
- Absolute Value(Z Component Of(Position Of(Event Player))) < Global.goal_half_length;
- Global.isBallRecalling == False;
- }
- actions
- {
Play Effect(All Players(All Teams), Buff Impact Sound, White, Event Player, 100);
Play Effect(All Players(All Teams), Ring Explosion, White, Event Player, 32);
Play Effect(All Players(All Teams), Ring Explosion, White, Event Player, 16);
- Play Effect(All Players(All Teams), Buff Impact Sound, Color(White), Event Player, 100);
- Play Effect(All Players(All Teams), Ring Explosion, Color(White), Event Player, 32);
- Play Effect(All Players(All Teams), Ring Explosion, Color(White), Event Player, 16);
- If(X Component Of(Position Of(Event Player)) > 0);
- Small Message(All Players(All Teams), Custom String("team 1 score!"));
- Modify Team Score(Team 1, 1);
- disabled Kill(Filtered Array(All Players(Team 2), Hero Of(Current Array Element) != Null), Global.theBall);
- For Global Variable(I_goalKillSlot, 0, 6, 1);
- Kill(Players In Slot(Global.I_goalKillSlot, Team 2), Global.theBall);
- End;
- Else;
- Small Message(All Players(All Teams), Custom String("team 2 score!"));
- Modify Team Score(Team 2, 1);
- disabled Kill(Filtered Array(All Players(Team 1), Hero Of(Current Array Element) != Null), Global.theBall);
- For Global Variable(I_goalKillSlot, 0, 6, 1);
- Kill(Players In Slot(Global.I_goalKillSlot, Team 1), Global.theBall);
- End;
- End;
- Global.canGoal = False;
- Wait(10, Ignore Condition);
- Teleport(Global.theBall, Vector(0, 0, 0));
- Call Subroutine(stopTheBall);
- Wait(0.020, Ignore Condition);
- Global.canGoal = True;
- }
- }
- rule("teleportToFirstPos")
- {
- event
- {
- Subroutine;
- teleportToFirstPos;
- }
- actions
- {
- If(Team Of(Event Player) == Team 1);
- Teleport(Event Player, Vector(0, 0, 0) + Vector(-1 * Global.center_goal_distance, 0, 0));
- Wait(0.100, Ignore Condition);
- Set Facing(Event Player, Vector(1, 0, 0), To World);
- Else;
- Teleport(Event Player, Vector(0, 0, 0) + Vector(1 * Global.center_goal_distance, 0, 0));
- Wait(0.100, Ignore Condition);
- Set Facing(Event Player, Vector(-1, 0, 0), To World);
- End;
- }
- }
- rule("alive teleport")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == False;
- Is Alive(Event Player) == True;
- }
- actions
- {
- Call Subroutine(teleportToFirstPos);
- }
- }
- rule("spawn teleport")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == False;
- Has Spawned(Event Player) == True;
- }
- actions
- {
- Call Subroutine(teleportToFirstPos);
- }
- }
- rule("canGoal teleport")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
- Global.canGoal == True;
- Is Dummy Bot(Event Player) == False;
- }
- actions
- {
- Call Subroutine(teleportToFirstPos);
- }
- }
- rule("always phase out")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
- Is Dummy Bot(Event Player) == False;
- Has Status(Event Player, Phased Out) == False;
- }
- actions
- {
- Set Status(Event Player, Null, Phased Out, 9999);
- }
- }
- disabled rule("debug create bot")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
Is Button Held(Event Player, Interact) == True;
- Is Button Held(Event Player, Button(Interact)) == True;
- }
- actions
- {
- Create Dummy Bot(Hero(Ana), Team Of(Event Player), -1, Position Of(Event Player), Vector(0, 0, 0));
- }
- }
- rule("on jump")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
- Is Jumping(Event Player) == True;
- }
- actions
- {
- Event Player.step_in_jumppad = Distance Between(Global.pos_jump_pad, Vector(Absolute Value(X Component Of(Position Of(
- Event Player))), Y Component Of(Position Of(Event Player)), Absolute Value(Z Component Of(Position Of(Event Player)))))
- < Global.radius_jump_pad ? True : False;
- If(Absolute Value(X Component Of(Position Of(Event Player))) > Global.Xlength_center_goalJumpPad && Y Component Of(Position Of(
- Event Player)) < 1);
- Event Player.step_in_jumppad = True;
- End;
- If(Event Player.step_in_jumppad);
- Apply Impulse(Event Player, Vector(0, 1, 0), 13, To World, Cancel Contrary Motion);
Play Effect(All Players(All Teams), Good Explosion, Sky Blue, Event Player, 2);
Play Effect(All Players(All Teams), Buff Explosion Sound, Sky Blue, Event Player, 50);
- Play Effect(All Players(All Teams), Good Explosion, Color(Sky Blue), Event Player, 2);
- Play Effect(All Players(All Teams), Buff Explosion Sound, Color(Sky Blue), Event Player, 50);
- Event Player.step_in_jumppad = False;
- Set Move Speed(Event Player, 130);
- Wait(1, Ignore Condition);
- Set Move Speed(Event Player, 100);
- End;
- }
- }
- rule("lucio dribble")
- {
- event
- {
- Ongoing - Each Player;
- All;
- Lúcio;
- }
- conditions
- {
- Distance Between(Position Of(Event Player), Position Of(Global.theBall)) < 2.500;
- Event Player.lucio_reflect_energy_percent > 0;
- }
- actions
- {
- Event Player.soutai_speed_pl_and_ball = Speed Of In Direction(Event Player, Direction Towards(Position Of(Event Player),
- Position Of(Global.theBall))) + Speed Of In Direction(Global.theBall, Direction Towards(Position Of(Global.theBall),
- Position Of(Event Player)));
- If(Event Player.soutai_speed_pl_and_ball > 0);
- Apply Impulse(Global.theBall, Direction From Angles(Horizontal Angle From Direction(Direction Towards(Position Of(Event Player),
- Position Of(Global.theBall))), -10 + Vertical Angle From Direction(Direction Towards(Position Of(Event Player), Position Of(
- Global.theBall)))), 0.750 * Event Player.soutai_speed_pl_and_ball, To World, Cancel Contrary Motion);
- Apply Impulse(Event Player, Direction From Angles(Horizontal Angle From Direction(Direction Towards(Position Of(Global.theBall),
- Position Of(Event Player))), 0 + Vertical Angle From Direction(Direction Towards(Position Of(Global.theBall), Position Of(
- Event Player)))), 0.900 * Event Player.soutai_speed_pl_and_ball, To World, Cancel Contrary Motion);
- Event Player.lucio_reflect_energy_percent -= 3.300 * Event Player.soutai_speed_pl_and_ball;
- Start Rule(lucio_rule_when_touch_ball, Restart Rule);
- End;
- Wait(0.124, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- rule("lucio rule when touch ball")
- {
- event
- {
- Subroutine;
- lucio_rule_when_touch_ball;
- }
- actions
- {
- Event Player.lucio_energy_is_charging = False;
- Wait(3, Ignore Condition);
- Event Player.lucio_energy_is_charging = True;
- }
- }