Return to post
- 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;
}
- }