Create
Return to post

Comparing difference between and

View raw
  • settings
  • {
  • main
  • {
  • Description: "(5ARMM)lucio tennis 024 by @nakamoooooo *プレイヤーが一人の時は壁打ちができるようになった *エフェクトの時間精度を向上"
  • Description: "(5ARMM)lucio tennis 023 by @nakamoooooo *左クリックで三人称カメラに切り替えができるようになった *ボールの大きさを0.1倍に変更 *ボールが跳ねない不具合の修正を試みた(まだ不具合はあるかも)*操作方法がスコアボードより下に表示されるようになった"
  • }
  • lobby
  • {
  • Allow Players Who Are In Queue: Yes
  • Match Voice Chat: Enabled
  • Max FFA Players: 11
  • Max Spectators: 12
  • }
  • modes
  • {
  • Deathmatch
  • {
  • enabled maps
  • {
  • Workshop Expanse Night
  • Workshop Expanse
  • }
  • }
  • General
  • {
  • Limit Roles: 2 Of Each Role Per Team
  • Respawn As Random Hero: On
  • }
  • }
  • heroes
  • {
  • General
  • {
  • Doomfist
  • {
  • Primary Fire: Off
  • Quick Melee: Off
  • Rocket Punch Cooldown Time: 15%
  • Rocket Punch Knockback Scalar: 50%
  • Ultimate Ability Meteor Strike: Off
  • }
  • Lúcio
  • {
  • Damage Dealt: 10%
  • Damage Received: 10%
  • Healing Dealt: 500%
  • Jump Vertical Speed: 200%
  • Primary Fire: Off
  • Quick Melee: Off
  • Soundwave Cooldown Time: 30%
  • Soundwave Knockback Scalar: 0%
  • Ultimate Ability Sound Barrier: Off
  • }
  • Wrecking Ball
  • {
  • Roll Always Active: On
  • }
  • enabled heroes
  • {
  • Lúcio
  • }
  • }
  • }
  • }
  • variables
  • {
  • global:
  • 0: theBall
  • 1: net_height
  • 2: ham_ball_radius
  • 3: team1_court_length
  • 4: team2_court_length
  • 5: court_length_with_one_player
  • 6: current_game_state
  • 7: teaming_team_to_set
  • 8: distance_net_stop_player
  • 9: position_ball_reset
  • 10: team_loser
  • player:
  • 0: doom_is_charging_punch
  • 1: doom_punch_charge_percent
  • 2: doom_punch_move_self_Ycom_vector
  • 3: lucio_can_fire_secondary
  • 4: lucio_secondary_charge_percent
  • 5: lucio_secondary_is_charging
  • 6: ball_vertical_speed_under_zero
  • 7: ball_team_of_last_attacker
  • 8: ball_bound_count
  • 9: lucio_team
  • 10: ball_isJustAfterBooped
  • 11: is_lucio_using_camera
  • 12: ball_vertical_speed_raw
  • }
  • subroutines
  • {
  • 0: stoptheball
  • }
  • rule("player hud")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • disabled Create HUD Text(Event Player, String("{0} - {1}", Custom String("lucio charge percent"), String("{0}%",
  • Event Player.lucio_secondary_charge_percent)), Null, Null, Left, 0, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • disabled Create In-World Text(Filtered Array(Event Player,
  • Create HUD Text(Event Player, String("{0} - {1}", Custom String("lucio charge percent"), String("{0}%",
  • Event Player.lucio_secondary_charge_percent)), Null, Null, Left, 0, White, White, White, Visible To and String,
  • Default Visibility);
  • Create In-World Text(Filtered Array(Event Player,
  • Event Player.lucio_secondary_is_charging && Event Player.lucio_secondary_charge_percent >= 0 && Event Player.lucio_secondary_charge_percent < 33),
  • Custom String("□□□"), Eye Position(Event Player) + 50 * Facing Direction Of(Event Player), 3, Do Not Clip,
  • Visible To Position and String, Color(Green), Default Visibility);
  • disabled Create In-World Text(Filtered Array(Event Player,
  • Visible To Position and String, Green, Default Visibility);
  • Create In-World Text(Filtered Array(Event Player,
  • Event Player.lucio_secondary_is_charging && Event Player.lucio_secondary_charge_percent >= 33 && Event Player.lucio_secondary_charge_percent < 67),
  • Custom String("■□□"), Eye Position(Event Player) + 50 * Facing Direction Of(Event Player), 3, Do Not Clip,
  • Visible To Position and String, Color(Green), Default Visibility);
  • disabled Create In-World Text(Filtered Array(Event Player,
  • Visible To Position and String, Green, Default Visibility);
  • Create In-World Text(Filtered Array(Event Player,
  • Event Player.lucio_secondary_is_charging && Event Player.lucio_secondary_charge_percent >= 67 && Event Player.lucio_secondary_charge_percent < 100),
  • Custom String("■■□"), Eye Position(Event Player) + 50 * Facing Direction Of(Event Player), 3, Do Not Clip,
  • Visible To Position and String, Color(Green), Default Visibility);
  • disabled Create In-World Text(Filtered Array(Event Player,
  • Visible To Position and String, Green, Default Visibility);
  • Create In-World Text(Filtered Array(Event Player,
  • Event Player.lucio_secondary_is_charging && Event Player.lucio_secondary_charge_percent == 100), Custom String("■■■"),
  • Eye Position(Event Player) + 50 * Facing Direction Of(Event Player), 3, Do Not Clip, Visible To Position and String, Color(
  • Green), Default Visibility);
  • Create Progress Bar HUD Text(Event Player, Event Player.lucio_secondary_charge_percent, String("{0}%", Round To Integer(
  • Event Player.lucio_secondary_charge_percent, To Nearest)), Top, 4, Custom Color(0, 255, 0,
  • Event Player.lucio_secondary_is_charging ? 255 : 32), Color(White), Visible To Values and Color, Default Visibility);
  • Eye Position(Event Player) + 50 * Facing Direction Of(Event Player), 3, Do Not Clip, Visible To Position and String, Green,
  • Default Visibility);
  • }
  • }
  • rule("doom button settings")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Doomfist;
  • }
  • }
  • rule("doom charge punch")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Doomfist;
  • }
  • conditions
  • {
  • Is Firing Secondary(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.doom_is_charging_punch = True;
  • Event Player.doom_punch_charge_percent = 0;
  • Stop Chasing Player Variable(Event Player, doom_punch_charge_percent);
  • Chase Player Variable Over Time(Event Player, doom_punch_charge_percent, 100, 1.400, None);
  • }
  • }
  • rule("doom_not_charging_punch")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Doomfist;
  • }
  • conditions
  • {
  • Is Firing Secondary(Event Player) == False;
  • Event Player.doom_is_charging_punch == True;
  • }
  • actions
  • {
  • Stop Chasing Player Variable(Event Player, doom_punch_charge_percent);
  • Event Player.doom_is_charging_punch = False;
  • If(Is Button Held(Event Player, Button(Primary Fire)) == False);
  • If(Is Button Held(Event Player, Primary Fire) == False);
  • Event Player.doom_punch_move_self_Ycom_vector = 0.180 * 100 * Y Component Of(Facing Direction Of(Event Player));
  • End;
  • }
  • }
  • rule("ball settings")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Wrecking Ball;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Set Status(Event Player, Null, Unkillable, 9999);
  • Event Player.ball_bound_count = 0;
  • disabled Create In-World Text(All Players(All Teams), String("{0} - {1}", Custom String("bound count"), Event Player.ball_bound_count),
  • Event Player, 3, Do Not Clip, Visible To Position and String, Color(White), Default Visibility);
  • Create Effect(All Players(All Teams), Light Shaft, Color(Gray), Update Every Frame(Vector(X Component Of(Position Of(
  • Event Player)), 0, Z Component Of(Position Of(Event Player)))), 0.700 / 1.500 ^ (0.250 * Altitude Of(Event Player)),
  • Visible To Position and Radius);
  • Create Icon(All Players(All Teams), Event Player, Heart, Visible To and Position, Color(Red), True);
  • Event Player, 3, Do Not Clip, Visible To Position and String, White, Default Visibility);
  • Create Effect(All Players(All Teams), Light Shaft, Orange, Vector(X Component Of(Position Of(Event Player)), 0, Z Component Of(
  • Position Of(Event Player))), 0.700 / 1.500 ^ (0.250 * Altitude Of(Event Player)), Visible To Position and Radius);
  • Create Icon(All Players(All Teams), Event Player, Heart, Visible To and Position, Red, True);
  • Event Player.ball_isJustAfterBooped = False;
  • Create Effect(All Players(All Teams), Sphere, Color(Blue), Update Every Frame(Vector(X Component Of(Position Of(Event Player)), 0,
  • Z Component Of(Position Of(Event Player)))), 0.100, Visible To Position and Radius);
  • Create Effect(All Players(All Teams), Sphere, Blue, Vector(X Component Of(Position Of(Event Player)), 0, Z Component Of(
  • Position Of(Event Player))), 0.100, Visible To Position and Radius);
  • Start Scaling Player(Event Player, 0.100, False);
  • Disable Nameplates(Event Player, All Players(All Teams));
  • Create HUD Text(All Players(All Teams), Position Of(Event Player), Null, Null, Left, 0, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Start Forcing Player Outlines(Event Player, All Players(All Teams), True, Color(Yellow), Default);
  • }
  • }
  • rule("doom punch the ball")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Doomfist;
  • }
  • conditions
  • {
  • Victim == Global.theBall;
  • }
  • actions
  • {
  • Wait(0.020, Ignore Condition);
  • Apply Impulse(Global.theBall, Vector(0, Event Player.doom_punch_move_self_Ycom_vector, 0), Absolute Value(
  • Event Player.doom_punch_move_self_Ycom_vector), To World, Cancel Contrary Motion);
  • }
  • }
  • rule("lucio settings")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Lúcio;
  • }
  • actions
  • {
  • Set Secondary Fire Enabled(Event Player, False);
  • Event Player.lucio_can_fire_secondary = True;
  • Event Player.lucio_secondary_charge_percent = 0;
  • Set Status(Event Player, Null, Phased Out, 9999);
  • disabled Create In-World Text(All Players(All Teams), String("{0} - {1}", Custom String("team"), Event Player.lucio_team), Eye Position(
  • Event Player) + Facing Direction Of(Event Player), 2, Clip Against Surfaces, Visible To Position and String, Color(White),
  • Event Player) + Facing Direction Of(Event Player), 2, Clip Against Surfaces, Visible To Position and String, White,
  • Default Visibility);
  • Disable Built-In Game Mode Respawning(Event Player);
  • Enable Death Spectate All Players(Event Player);
  • Set Move Speed(Event Player, 150);
  • Event Player.is_lucio_using_camera = False;
  • }
  • }
  • rule("lucio secondary release")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Lúcio;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Secondary Fire)) == False;
  • Is Button Held(Event Player, Secondary Fire) == False;
  • }
  • actions
  • {
  • Clear Status(Event Player, Burning);
  • Set Move Speed(Event Player, 150);
  • Stop Chasing Player Variable(Event Player, lucio_secondary_charge_percent);
  • Event Player.lucio_can_fire_secondary = False;
  • Set Secondary Fire Enabled(Event Player, True);
  • disabled Wait(0.020, Ignore Condition);
  • Press Button(Event Player, Button(Secondary Fire));
  • Press Button(Event Player, Secondary Fire);
  • Wait(0.020, Ignore Condition);
  • Set Secondary Fire Enabled(Event Player, False);
  • Event Player.lucio_secondary_is_charging = False;
  • Wait(1.180, Ignore Condition);
  • Event Player.lucio_can_fire_secondary = True;
  • }
  • }
  • rule("lucio secondary push")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Lúcio;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Secondary Fire)) == True;
  • Is Button Held(Event Player, Secondary Fire) == True;
  • Event Player.lucio_can_fire_secondary == True;
  • }
  • actions
  • {
  • Set Status(Event Player, Null, Burning, 9999);
  • Event Player.lucio_secondary_charge_percent = 0;
  • Chase Player Variable Over Time(Event Player, lucio_secondary_charge_percent, 100, 1, None);
  • Event Player.lucio_secondary_is_charging = True;
  • Set Move Speed(Event Player, 40);
  • Play Effect(Event Player, Explosion Sound, Color(White), Event Player, 30);
  • Play Effect(Event Player, Explosion Sound, White, Event Player, 30);
  • Wait(0.330, Abort When False);
  • Play Effect(Event Player, Explosion Sound, Color(White), Event Player, 40);
  • Play Effect(Event Player, Explosion Sound, White, Event Player, 40);
  • Wait(0.330, Abort When False);
  • Play Effect(Event Player, Explosion Sound, Color(White), Event Player, 60);
  • Play Effect(Event Player, Explosion Sound, White, Event Player, 60);
  • Wait(0.330, Abort When False);
  • Play Effect(Event Player, Buff Impact Sound, Color(White), Event Player, 70);
  • Play Effect(Event Player, Buff Impact Sound, White, Event Player, 70);
  • }
  • }
  • rule("lucio boop")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Lúcio;
  • }
  • conditions
  • {
  • Is Firing Secondary(Event Player) == True;
  • Hero Of(Victim) == Hero(Wrecking Ball);
  • Global.current_game_state == 2;
  • }
  • actions
  • {
  • If(Victim.ball_team_of_last_attacker == Event Player.lucio_team);
  • Else;
  • Victim.ball_isJustAfterBooped = True;
  • Apply Impulse(Victim, Direction From Angles(Horizontal Facing Angle Of(Event Player), -10 + Vertical Facing Angle Of(
  • Event Player)), 10 + 0.140 * Event Player.lucio_secondary_charge_percent, To World, Cancel Contrary Motion);
  • Victim.ball_team_of_last_attacker = Event Player.lucio_team;
  • Victim.ball_bound_count = 0;
  • End;
  • }
  • }
  • rule("ball vertical speed update")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Wrecking Ball;
  • }
  • conditions
  • {
  • Is In Air(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.ball_vertical_speed_raw = Vertical Speed Of(Event Player);
  • If(Event Player.ball_vertical_speed_raw < 0);
  • Event Player.ball_vertical_speed_under_zero = Event Player.ball_vertical_speed_raw;
  • End;
  • Wait(0.016, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("ball bound")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Wrecking Ball;
  • }
  • conditions
  • {
  • Is On Ground(Event Player) == True;
  • disabled Event Player.ball_vertical_speed_under_zero < -0.900;
  • Global.current_game_state == 2;
  • }
  • actions
  • {
  • If(Event Player.ball_isJustAfterBooped == False);
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Blue), Vector(X Component Of(Position Of(Event Player)), 0,
  • Z Component Of(Position Of(Event Player))), 0.400);
  • Play Effect(All Players(All Teams), Bad Explosion, Blue, Vector(X Component Of(Position Of(Event Player)), 0, Z Component Of(
  • Position Of(Event Player))), 0.400);
  • Event Player.ball_bound_count += 1;
  • If(Event Player.ball_vertical_speed_under_zero < -0.900);
  • Apply Impulse(Event Player, Up, 0.750 * Absolute Value(Event Player.ball_vertical_speed_under_zero), To World,
  • Cancel Contrary Motion);
  • End;
  • If(Event Player.ball_bound_count == 1);
  • If(Event Player.ball_team_of_last_attacker == 1);
  • "team2 court in"
  • If(Absolute Value(X Component Of(Position Of(Event Player)) - 0.500 * Global.team2_court_length)
  • < 0.500 * Global.team2_court_length && Absolute Value(Z Component Of(Position Of(Event Player)))
  • < 0.500 * Global.team2_court_length);
  • Small Message(All Players(All Teams), Custom String("in"));
  • Else;
  • Big Message(All Players(All Teams), Custom String("out"));
  • Global.team_loser = 1;
  • Global.current_game_state = 3;
  • End;
  • End;
  • If(Event Player.ball_team_of_last_attacker == 2);
  • "team1 court in"
  • If(Absolute Value(X Component Of(Position Of(Event Player)) - -0.500 * Global.team1_court_length)
  • < 0.500 * Global.team1_court_length && Absolute Value(Z Component Of(Position Of(Event Player)))
  • < 0.500 * Global.team1_court_length);
  • Small Message(All Players(All Teams), Custom String("in"));
  • Else;
  • Big Message(All Players(All Teams), Custom String("out"));
  • Global.team_loser = 2;
  • Global.current_game_state = 3;
  • End;
  • End;
  • End;
  • If(Event Player.ball_bound_count == 2);
  • Global.team_loser = 1 * (Event Player.ball_team_of_last_attacker == 2) + 2 * (Event Player.ball_team_of_last_attacker == 1);
  • Big Message(All Players(All Teams), Custom String("2 bounds"));
  • Global.current_game_state = 3;
  • End;
  • Else;
  • Wait(0.200, Ignore Condition);
  • Loop If Condition Is True;
  • End;
  • }
  • }
  • rule("effects")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Create Beam Effect(All Players(All Teams), Grapple Beam, Vector(0, 0.100 + Global.net_height, -100), Vector(0,
  • 0.100 + Global.net_height, 100), Color(White), Visible To);
  • Create Beam Effect(All Players(All Teams), Grapple Beam, Vector(0, 0.100, -100), Vector(0, 0.100, 100), Color(White), Visible To);
  • 0.100 + Global.net_height, 100), White, Visible To);
  • Create Beam Effect(All Players(All Teams), Grapple Beam, Vector(0, 0.100, -100), Vector(0, 0.100, 100), White, Visible To);
  • "team 1 court (x minus)"
  • Create Beam Effect(All Players(All Teams), Grapple Beam, Vector(0, 0.100, Global.team1_court_length / 2), Vector(
  • -1 * Global.team1_court_length, 0.100, Global.team1_court_length / 2), Color(Purple), Visible To Position and Radius);
  • -1 * Global.team1_court_length, 0.100, Global.team1_court_length / 2), Purple, Visible To Position and Radius);
  • Create Beam Effect(All Players(All Teams), Grapple Beam, Vector(0, 0.100, Global.team1_court_length / -2), Vector(
  • -1 * Global.team1_court_length, 0.100, Global.team1_court_length / -2), Color(Purple), Visible To Position and Radius);
  • -1 * Global.team1_court_length, 0.100, Global.team1_court_length / -2), Purple, Visible To Position and Radius);
  • Create Beam Effect(All Players(All Teams), Grapple Beam, Vector(-1 * Global.team1_court_length, 0.100,
  • Global.team1_court_length / 2), Vector(-1 * Global.team1_court_length, 0.100, Global.team1_court_length / -2), Color(Purple),
  • Global.team1_court_length / 2), Vector(-1 * Global.team1_court_length, 0.100, Global.team1_court_length / -2), Purple,
  • Visible To Position and Radius);
  • "team 2 court (x plus)"
  • Create Beam Effect(All Players(All Teams), Grapple Beam, Vector(0, 0.100, Global.team2_court_length / 2), Vector(
  • 1 * Global.team2_court_length, 0.100, Global.team2_court_length / 2), Color(Purple), Visible To Position and Radius);
  • 1 * Global.team2_court_length, 0.100, Global.team2_court_length / 2), Purple, Visible To Position and Radius);
  • Create Beam Effect(All Players(All Teams), Grapple Beam, Vector(0, 0.100, Global.team2_court_length / -2), Vector(
  • 1 * Global.team2_court_length, 0.100, Global.team2_court_length / -2), Color(Purple), Visible To Position and Radius);
  • 1 * Global.team2_court_length, 0.100, Global.team2_court_length / -2), Purple, Visible To Position and Radius);
  • Create Beam Effect(All Players(All Teams), Grapple Beam, Vector(1 * Global.team2_court_length, 0.100,
  • Global.team2_court_length / 2), Vector(1 * Global.team2_court_length, 0.100, Global.team2_court_length / -2), Color(Purple),
  • Global.team2_court_length / 2), Vector(1 * Global.team2_court_length, 0.100, Global.team2_court_length / -2), Purple,
  • Visible To Position and Radius);
  • }
  • }
  • rule("init var")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.net_height = 0.900;
  • Global.ham_ball_radius = 0.800;
  • Global.court_length_with_one_player = 14;
  • Global.team1_court_length = Global.court_length_with_one_player;
  • Global.team2_court_length = Global.court_length_with_one_player;
  • Global.distance_net_stop_player = 5;
  • Global.position_ball_reset = Vector(0, 12, 0);
  • Disable Built-In Game Mode Scoring;
  • Create HUD Text(All Players(All Teams), Custom String("右クリックは押して溜め、離して撃つ"), Null, Null, Top, 1, Color(White), Color(White), Color(
  • White), Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Custom String("To fire Secondary, hold and release"), Null, Null, Top, 2, Color(White),
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Custom String("右クリックは押して溜め、離して撃つ"), Null, Null, Top, 1, White, White, White,
  • Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Custom String("To fire Secondary, hold and release"), Null, Null, Top, 2, White, White,
  • White, Visible To and String, Default Visibility);
  • }
  • }
  • rule("set up time shorten")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Assembling Heroes == True;
  • }
  • actions
  • {
  • Set Match Time(7);
  • }
  • }
  • rule("net power")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Wrecking Ball;
  • }
  • conditions
  • {
  • Distance Between(Vector(0, Global.ham_ball_radius, 0) + Position Of(Event Player), Vector(0, Global.net_height, Z Component Of(
  • Position Of(Event Player)))) < Global.ham_ball_radius;
  • Global.current_game_state == 2;
  • }
  • actions
  • {
  • Apply Impulse(Event Player, Direction Towards(Vector(0, Global.net_height, Z Component Of(Position Of(Event Player))), Vector(0,
  • Global.ham_ball_radius, 0) + Position Of(Event Player)), 5 * (Global.ham_ball_radius - Distance Between(Vector(0,
  • Global.net_height, Z Component Of(Position Of(Event Player))), Vector(0, Global.ham_ball_radius, 0) + Position Of(
  • Event Player))), To World, Cancel Contrary Motion);
  • disabled Kill(Filtered Array(All Players(All Teams), Current Array Element.lucio_team == Event Player.ball_team_of_last_attacker), Null);
  • If(Event Player.ball_bound_count == 0);
  • Big Message(All Players(All Teams), Custom String("net"));
  • Global.team_loser = Event Player.ball_team_of_last_attacker;
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Red), Event Player, 14);
  • Play Effect(All Players(All Teams), Explosion Sound, Color(White), Event Player, 70);
  • Play Effect(All Players(All Teams), Ring Explosion, Red, Event Player, 14);
  • Play Effect(All Players(All Teams), Explosion Sound, White, Event Player, 70);
  • Global.current_game_state = 3;
  • End;
  • }
  • }
  • rule("game start state null")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.current_game_state == Null;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Wrecking Ball), All Teams, 11, Global.position_ball_reset, Vector(0, 0, 0));
  • Global.theBall = Last Created Entity;
  • Set Gravity(Global.theBall, 0);
  • disabled Create Dummy Bot(Hero(Lúcio), All Teams, 10, Vector(0, 13, 0), Vector(0, 0, 0));
  • disabled Create Dummy Bot(Hero(Lúcio), All Teams, 9, Vector(0, 13, 0), Vector(0, 0, 0));
  • disabled Create Dummy Bot(Hero(Lúcio), All Teams, 8, Vector(0, 13, 0), Vector(0, 0, 0));
  • Wait(0.500, Ignore Condition);
  • Global.current_game_state = 1;
  • }
  • }
  • rule("game start state 1")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.current_game_state == 1;
  • }
  • actions
  • {
  • Teleport(Global.theBall, Global.position_ball_reset);
  • Set Gravity(Global.theBall, 0);
  • Start Rule(stoptheball, Restart Rule);
  • Resurrect(All Dead Players(All Teams));
  • Players On Hero(Hero(Lúcio), All Teams).lucio_team = Null;
  • Wait(0.100, Ignore Condition);
  • Global.teaming_team_to_set = 1;
  • While(Count Of(Filtered Array(Players On Hero(Hero(Lúcio), All Teams), Current Array Element.lucio_team == Null)) >= 1);
  • First Of(Randomized Array(Filtered Array(Players On Hero(Hero(Lúcio), All Teams), Current Array Element.lucio_team == Null)))
  • .lucio_team = Global.teaming_team_to_set;
  • disabled First Of(Filtered Array(Players On Hero(Hero(Lúcio), All Teams), Current Array Element.lucio_team == Null))
  • .lucio_team = Global.teaming_team_to_set;
  • Global.teaming_team_to_set = 1 * (Global.teaming_team_to_set == 2) + 2 * (Global.teaming_team_to_set == 1);
  • End;
  • disabled Global.team1_court_length = Global.court_length_with_one_player * Square Root(Count Of(Filtered Array(Players On Hero(Hero(Lúcio),
  • All Teams), Current Array Element.lucio_team == 1)));
  • disabled Global.team2_court_length = Global.court_length_with_one_player * Square Root(Count Of(Filtered Array(Players On Hero(Hero(Lúcio),
  • All Teams), Current Array Element.lucio_team == 2)));
  • Global.team1_court_length = Global.court_length_with_one_player * Square Root(Square Root(Count Of(Filtered Array(Players On Hero(
  • Hero(Lúcio), All Teams), Current Array Element.lucio_team == 1))));
  • Global.team2_court_length = Global.court_length_with_one_player * Square Root(Square Root(Count Of(Filtered Array(Players On Hero(
  • Hero(Lúcio), All Teams), Current Array Element.lucio_team == 2))));
  • Teleport(Filtered Array(Players On Hero(Hero(Lúcio), All Teams), Current Array Element.lucio_team == 1), Vector(
  • -1 * Global.team1_court_length, 0, 0));
  • Teleport(Filtered Array(Players On Hero(Hero(Lúcio), All Teams), Current Array Element.lucio_team == 2), Vector(
  • 1 * Global.team2_court_length, 0, 0));
  • Wait(1.500, Ignore Condition);
  • Teleport(Global.theBall, Vector(5 + -1 * Global.team1_court_length, 9, 0));
  • Global.current_game_state = 2;
  • }
  • }
  • rule("lucio (when team set) net stop power etc")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Lúcio;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Event Player.lucio_team != Null;
  • }
  • actions
  • {
  • Stop Accelerating(Event Player);
  • If(Event Player.lucio_team == 1);
  • Start Accelerating(Event Player, Vector(-1, 0.100, 0), 100 * (X Component Of(Position Of(Event Player))
  • > -1 * Global.distance_net_stop_player), 20, To World, Direction Rate and Max Speed);
  • Set Facing(Event Player, Vector(1, 0, 0), To World);
  • Else;
  • Start Accelerating(Event Player, Vector(1, 0.100, 0), 100 * (X Component Of(Position Of(Event Player))
  • < 1 * Global.distance_net_stop_player), 20, To World, Direction Rate and Max Speed);
  • Set Facing(Event Player, Vector(-1, 0, 0), To World);
  • End;
  • }
  • }
  • rule("sub_stoptheball")
  • {
  • event
  • {
  • Subroutine;
  • stoptheball;
  • }
  • actions
  • {
  • Apply Impulse(Global.theBall, Down, 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Global.theBall, Up, 0.001, To World, Cancel Contrary Motion);
  • 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);
  • }
  • }
  • rule("game start state 2")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.current_game_state == 2;
  • }
  • actions
  • {
  • Global.theBall.ball_bound_count = 0;
  • Set Gravity(Global.theBall, 100);
  • disabled Apply Impulse(Global.theBall, Direction From Angles(Horizontal Angle From Direction(Direction Towards(Vector(0, 0, 0), Vector(
  • -1 * Global.team1_court_length, 0, Random Real(Global.team1_court_length / -2, Global.team1_court_length / 2)))), 0), 7,
  • To World, Cancel Contrary Motion);
  • Global.theBall.ball_team_of_last_attacker = 2;
  • }
  • }
  • rule("lucio ai motion and facing")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Lúcio;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Start Throttle In Direction(Event Player, Direction Towards(Position Of(Event Player), Position Of(Global.theBall)
  • + 3 * Direction From Angles(Horizontal Angle From Direction(Direction Towards(Vector(0, 0, 0), Position Of(Global.theBall))),
  • 0)), 1, To World, Replace existing throttle, Direction and Magnitude);
  • Start Facing(Event Player, Direction Towards(Eye Position(Event Player), Vector(0, 4, 0)), 500, To World, Direction and Turn Rate);
  • }
  • }
  • rule("lucio ai boop")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Lúcio;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Distance Between(Position Of(Event Player), Position Of(Global.theBall)) < 10;
  • }
  • actions
  • {
  • Start Holding Button(Event Player, Button(Secondary Fire));
  • Start Holding Button(Event Player, Secondary Fire);
  • Wait(Random Real(0.100, 0.800), Ignore Condition);
  • Stop Holding Button(Event Player, Button(Secondary Fire));
  • Stop Holding Button(Event Player, Secondary Fire);
  • Wait(0.250, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("state 3")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.current_game_state == 3;
  • }
  • actions
  • {
  • If(Count Of(Filtered Array(All Players(All Teams), Is Dummy Bot(Current Array Element) == False)) != 1);
  • Modify Player Score(Filtered Array(Players On Hero(Hero(Lúcio), All Teams), Current Array Element.lucio_team != Global.team_loser),
  • 1);
  • End;
  • Modify Player Score(Filtered Array(Players On Hero(Hero(Lúcio), All Teams), Current Array Element.lucio_team != Global.team_loser),
  • 1);
  • Kill(Filtered Array(All Players(All Teams), Current Array Element.lucio_team == Global.team_loser), Global.theBall);
  • Wait(2, Ignore Condition);
  • Global.current_game_state = 1;
  • }
  • }
  • rule("ball just after booped reset")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Wrecking Ball;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Event Player.ball_isJustAfterBooped == True;
  • }
  • actions
  • {
  • Wait(0.020, Ignore Condition);
  • Event Player.ball_isJustAfterBooped = False;
  • }
  • }
  • rule("lucio primary cam toggle")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Primary Fire)) == True;
  • Is Button Held(Event Player, Primary Fire) == True;
  • }
  • actions
  • {
  • If(Event Player.is_lucio_using_camera == False);
  • Start Camera(Event Player, Ray Cast Hit Position(Eye Position(Event Player) + Vector(0, 1.500, 0), Eye Position(Event Player)
  • + Vector(0, 1.500, 0) + -4 * Facing Direction Of(Event Player), Empty Array, Null, False), Eye Position(Event Player) + Vector(
  • 0, 1.500, 0) + 100 * Facing Direction Of(Event Player), 40);
  • disabled Start Camera(Event Player, Eye Position(Event Player) + Vector(0, 1, 0) + -2.500 * Facing Direction Of(Event Player), Eye Position(
  • Event Player) + Vector(0, 1, 0) + 100 * Facing Direction Of(Event Player), 50);
  • Event Player.is_lucio_using_camera = True;
  • Else;
  • Stop Camera(Event Player);
  • Event Player.is_lucio_using_camera = False;
  • End;
  • }
  • }
  • rule("ball wall when player is only one")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Count Of(Filtered Array(All Players(All Teams), Is Dummy Bot(Current Array Element) == False)) == 1;
  • X Component Of(Position Of(Event Player)) > 0;
  • }
  • actions
  • {
  • Apply Impulse(Event Player, Vector(-1, 0, 0), Speed Of In Direction(Event Player, Vector(1, 0, 0)), To World,
  • Cancel Contrary Motion);
  • Event Player.ball_team_of_last_attacker = 2;
  • }
  • }
Join the Workshop.codes Discord