Create
Return to post

Comparing difference between and

View raw
  • settings
  • {
  • main
  • {
  • Description: "Overwatch Volleyball by Caldoran"
  • Description: "Version 1.20\n\r\nLucio-only.\r\n\r\nKnock Hammond onto your opponent's floor\r\nto score a point.\r\n\r\nIf Hammond hits the net or he lands on\r\nyour side after you boop him, you get a\r\nFoul instead.\r\n\r\nCustomise everything in Workshop Settings!"
  • Mode Name: "Volleyball"
  • }
  • lobby
  • {
  • Allow Players Who Are In Queue: Yes
  • Map Rotation: Paused
  • Match Voice Chat: Enabled
  • Max FFA Players: 10
  • Max Spectators: 12
  • Return To Lobby: After A Game
  • Swap Teams After Match: No
  • }
  • modes
  • {
  • Deathmatch
  • {
  • Game Length In Minutes: 15
  • Score To Win: 50
  • Self Initiated Respawn: Off
  • enabled maps
  • {
  • Workshop Chamber
  • Workshop Chamber 0
  • }
  • }
  • disabled Elimination
  • {
  • Capture Objective Tiebreaker: Off
  • Draw After Match Time Elapsed With No Tiebreaker: 300
  • Hero Selection: Random
  • Reveal Heroes After Match Time Elapsed: 180
  • Score To Win: 5
  • Tiebreaker After Match Time Elapsed: 300
  • Time To Capture: 7
  • }
  • General
  • {
  • Allow Hero Switching: Off
  • Enemy Health Bars: Off
  • Game Mode Start: Immediately
  • Hero Limit: Off
  • Kill Cam: Off
  • Kill Feed: Off
  • Respawn As Random Hero: On
  • }
  • }
  • heroes
  • {
  • General
  • {
  • Infinite Ultimate Duration: On
  • Lúcio
  • {
  • Crossfade: Off
  • Primary Fire: Off
  • Receive Headshots Only: On
  • Soundwave Cooldown Time: 25%
  • Soundwave Knockback Scalar: 150%
  • Soundwave Knockback Scalar: 210%
  • Ultimate Generation - Combat Sound Barrier: 0%
  • }
  • Wrecking Ball
  • {
  • Adaptive Shield: Off
  • Grappling Claw: Off
  • Piledriver: Off
  • Quick Melee: Off
  • Roll Always Active: On
  • Ultimate Ability Minefield: Off
  • }
  • enabled heroes
  • {
  • Lúcio
  • }
  • }
  • }
  • }
  • variables
  • {
  • global:
  • 0: NetHeight
  • 1: OutOfBounds
  • 2: BallSpawnHeight
  • 3: LastAttacker
  • 4: LastBallCircle
  • 5: LastHitPosition
  • 6: ScoreToWin
  • 7: PenaltyFreezeTime
  • 8: CurrentRound
  • 9: BallRespawnTime
  • 10: EnablePlayerOutOfBounds
  • 11: SpawnSide
  • 12: LOSAngle
  • 13: UltimateSlowdownScale
  • 14: UltChargePerBallHit
  • 15: BallScale
  • 16: BallGravity
  • 21: RedScores
  • 22: RedFouls
  • 23: BlueScores
  • 24: BlueFouls
  • 25: BallReference
  • player:
  • 0: IsUsingUltimate
  • 1: Scores
  • 2: Fouls
  • 3: CurrentPlayerSide
  • 4: HaveLOSToBall
  • }
  • rule("Set Parameters")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.NetHeight = Workshop Setting Real(Custom String("Field Parameters"), Custom String("Net Height"), 3, 1, 50);
  • Global.NetHeight = Workshop Setting Real(Custom String("Field Parameters"), Custom String("Net Height"), 3, 1, 50, 0);
  • Global.OutOfBounds = Workshop Setting Real(Custom String("Field Parameters"), Custom String("Out of Bounds Distance from Center"),
  • 20, 0, 1000);
  • Global.BallScale = Workshop Setting Real(Custom String("Ball Parameters"), Custom String("Ball Size Scale"), 1, 0, 15);
  • Global.BallSpawnHeight = Workshop Setting Real(Custom String("Ball Parameters"), Custom String("Ball Respawn Height"), 10, 0, 100);
  • 20, 0, 1000, 0);
  • Global.BallScale = Workshop Setting Real(Custom String("Ball Parameters"), Custom String("Ball Size Scale"), 1, 0, 15, 0);
  • Global.BallSpawnHeight = Workshop Setting Real(Custom String("Ball Parameters"), Custom String("Ball Respawn Height"), 10, 0, 100,
  • 0);
  • Global.BallRespawnTime = Workshop Setting Integer(Custom String("Ball Parameters"), Custom String("Ball Respawn Time in Seconds"),
  • 3, 0, 20);
  • 3, 0, 20, 0);
  • Global.BallGravity = Workshop Setting Integer(Custom String("Ball Parameters"), Custom String("Ball Gravity Percentage"), 150, 0,
  • 500);
  • 500, 0);
  • Global.EnablePlayerOutOfBounds = Workshop Setting Toggle(Custom String("Match Parameters"), Custom String(
  • "Enable Player Out of Bounds Penalty"), False);
  • Global.ScoreToWin = Workshop Setting Integer(Custom String("Match Parameters"), Custom String("Score to Win"), 10, 1, 100);
  • "Enable Player Out of Bounds Penalty"), False, 0);
  • Global.ScoreToWin = Workshop Setting Integer(Custom String("Match Parameters"), Custom String("Score to Win"), 10, 1, 100, 0);
  • Global.PenaltyFreezeTime = Workshop Setting Integer(Custom String("Match Parameters"), Custom String(
  • "Penalty Freeze Time in Seconds"), 3, 0, 50);
  • "Penalty Freeze Time in Seconds"), 3, 0, 50, 0);
  • Global.UltimateSlowdownScale = Workshop Setting Real(Custom String("Player Parameters"), Custom String(
  • "Ultimate Slowdown Scale Percentage"), 30, 10, 100);
  • "Ultimate Slowdown Scale Percentage"), 30, 10, 100, 0);
  • Global.UltChargePerBallHit = Workshop Setting Real(Custom String("Player Parameters"), Custom String("Ultimate Charge Per Hit"),
  • 10, 0, 100);
  • 10, 0, 100, 0);
  • Global.LOSAngle = 45;
  • Global.SpawnSide = Random Integer(1, 2) * 2 - 3;
  • Global.CurrentRound = 1;
  • }
  • }
  • rule("Remove Setup")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Assembling Heroes == True;
  • }
  • actions
  • {
  • Set Match Time(0);
  • }
  • }
  • rule("Disable Mode Scoring")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Disable Built-In Game Mode Completion;
  • Disable Built-In Game Mode Scoring;
  • Disable Built-In Game Mode Announcer;
  • Disable Built-In Game Mode Music;
  • Set Match Time(0);
  • }
  • }
  • rule("Player Joins")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Lúcio;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Set Move Speed(Event Player, Workshop Setting Real(Custom String("Player Parameters"), Custom String("Move Speed Percentage"), 150,
  • 0, 500));
  • 0, 500, 0));
  • Set Jump Vertical Speed(Event Player, Workshop Setting Real(Custom String("Player Parameters"), Custom String(
  • "Jump Vertical Speed Percentage"), 300, 0, 1000));
  • Disallow Button(Event Player, Ultimate);
  • Disallow Button(Event Player, Melee);
  • "Jump Vertical Speed Percentage"), 300, 0, 1000, 0));
  • Disallow Button(Event Player, Button(Ultimate));
  • Disallow Button(Event Player, Button(Melee));
  • Disable Game Mode In-World UI(Event Player);
  • Disable Game Mode HUD(Event Player);
  • Disable Kill Feed(Event Player);
  • Disable Scoreboard(Event Player);
  • Disable Nameplates(Global.BallReference, Event Player);
  • }
  • }
  • rule("HUD Score (Round and Teams)")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Create HUD Text(All Players(All Teams), Null, Custom String("Overwatch Volleyball"), Null, Left, -4, White, Lime Green, White,
  • Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), String("{0} {1}", String("Round"), Global.CurrentRound), Null, Null, Left, -3, Lime Green,
  • White, White, Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Null, Custom String("Overwatch Volleyball"), Null, Left, -4, Color(White), Color(
  • Lime Green), Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), String("{0} {1}", String("Round"), Global.CurrentRound), Null, Null, Left, -3, Color(
  • Lime Green), Color(White), Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Null, Null, String("{0} {1}", Custom String("First to"), Global.ScoreToWin), Left, -2,
  • White, White, Lime Green, Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String(" "), Left, -1.500, White, White, White, Visible To and String,
  • Default Visibility);
  • Color(White), Color(White), Color(Lime Green), Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String(" "), Left, -1.500, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Custom String(" Red "), String("{0} {1}", Global.RedScores + Global.BlueFouls, String(
  • "Points")), String("{0} - {1}", Global.RedScores, Global.RedFouls), Left, -1, Red, Red, Red, Visible To and String,
  • Default Visibility);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String(" "), Left, 0, White, White, White, Visible To and String,
  • Default Visibility);
  • "Points")), String("{0} - {1}", Global.RedScores, Global.RedFouls), Left, -1, Color(Red), Color(Red), Color(Red),
  • Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Null, Null, Custom String(" "), Left, 0, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Custom String("Blue"), String("{0} {1}", Global.BlueScores + Global.RedFouls, String(
  • "Points")), String("{0} - {1}", Global.BlueScores, Global.BlueFouls), Left, 1, Blue, Blue, Blue, Visible To and String,
  • Default Visibility);
  • "Points")), String("{0} - {1}", Global.BlueScores, Global.BlueFouls), Left, 1, Color(Blue), Color(Blue), Color(Blue),
  • Visible To and String, Default Visibility);
  • disabled Create HUD Text(All Players(All Teams), Max(Global.RedScores + Global.BlueFouls, 0), Custom String("Red Team"), String("{0} - {1}",
  • Global.RedScores, Global.RedFouls), Left, -1, Red, Red, Red, Visible To and String, Default Visibility);
  • Global.RedScores, Global.RedFouls), Left, -1, Color(Red), Color(Red), Color(Red), Visible To and String, Default Visibility);
  • disabled Create HUD Text(All Players(All Teams), Max(Global.BlueScores + Global.RedFouls, 0), Custom String("Blue Team"), String(
  • "{0} - {1}", Global.BlueScores, Global.BlueFouls), Left, 1, Blue, Blue, Blue, Visible To and String, Default Visibility);
  • "{0} - {1}", Global.BlueScores, Global.BlueFouls), Left, 1, Color(Blue), Color(Blue), Color(Blue), Visible To and String,
  • Default Visibility);
  • }
  • }
  • rule("HUD Score (Players)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Lúcio;
  • }
  • actions
  • {
  • Create HUD Text(All Players(All Teams), Hero Icon String(Hero(Lúcio)), Event Player, String("{0} - {1}", Event Player.Scores,
  • Event Player.Fouls), Left, Event Player.CurrentPlayerSide + (1 + Max(0, Event Player.Scores - Event Player.Fouls)) * 0.001,
  • Lime Green, Lime Green, Lime Green, Visible To Sort Order and String, Default Visibility);
  • Color(Lime Green), Color(Lime Green), Color(Lime Green), Visible To Sort Order and String, Default Visibility);
  • disabled Create HUD Text(All Players(All Teams), Max(0, Event Player.Scores - Event Player.Fouls), Event Player, String("{0} - {1}",
  • Event Player.Scores, Event Player.Fouls), Left, Event Player.CurrentPlayerSide + (1 + Max(0,
  • Event Player.Scores - Event Player.Fouls)) * 0.100, Lime Green, Lime Green, Lime Green, Visible To Sort Order and String,
  • Default Visibility);
  • Event Player.Scores - Event Player.Fouls)) * 0.100, Color(Lime Green), Color(Lime Green), Color(Lime Green),
  • Visible To Sort Order and String, Default Visibility);
  • }
  • }
  • rule("Create Out-of-Bounds Indicator")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Create Beam Effect(All Players(All Teams), Bad Beam, Vector(Global.OutOfBounds * -1, 0.500, Global.OutOfBounds * -1), Vector(
  • Global.OutOfBounds * -1, 0.500, Global.OutOfBounds * 1), Red, Visible To Position and Radius);
  • Global.OutOfBounds * -1, 0.500, Global.OutOfBounds * 1), Color(Red), Visible To Position and Radius);
  • Create Beam Effect(All Players(All Teams), Bad Beam, Vector(Global.OutOfBounds * 1, 0.500, Global.OutOfBounds * -1), Vector(
  • Global.OutOfBounds * 1, 0.500, Global.OutOfBounds * 1), Blue, Visible To Position and Radius);
  • Global.OutOfBounds * 1, 0.500, Global.OutOfBounds * 1), Color(Blue), Visible To Position and Radius);
  • Create Beam Effect(All Players(All Teams), Bad Beam, Vector(Global.OutOfBounds * -1, 0.500, Global.OutOfBounds * -1), Vector(
  • Global.OutOfBounds * 0, 0.500, Global.OutOfBounds * -1), Red, Visible To Position and Radius);
  • Global.OutOfBounds * 0, 0.500, Global.OutOfBounds * -1), Color(Red), Visible To Position and Radius);
  • Create Beam Effect(All Players(All Teams), Bad Beam, Vector(Global.OutOfBounds * 1, 0.500, Global.OutOfBounds * 1), Vector(
  • Global.OutOfBounds * 0, 0.500, Global.OutOfBounds * 1), Blue, Visible To Position and Radius);
  • Global.OutOfBounds * 0, 0.500, Global.OutOfBounds * 1), Color(Blue), Visible To Position and Radius);
  • Create Beam Effect(All Players(All Teams), Bad Beam, Vector(Global.OutOfBounds * -1, 0.500, Global.OutOfBounds * 1), Vector(
  • Global.OutOfBounds * 0, 0.500, Global.OutOfBounds * 1), Red, Visible To Position and Radius);
  • Global.OutOfBounds * 0, 0.500, Global.OutOfBounds * 1), Color(Red), Visible To Position and Radius);
  • Create Beam Effect(All Players(All Teams), Bad Beam, Vector(Global.OutOfBounds * 1, 0.500, Global.OutOfBounds * -1), Vector(
  • Global.OutOfBounds * 0, 0.500, Global.OutOfBounds * -1), Blue, Visible To Position and Radius);
  • Global.OutOfBounds * 0, 0.500, Global.OutOfBounds * -1), Color(Blue), Visible To Position and Radius);
  • }
  • }
  • rule("Create Net")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Create Beam Effect(All Players(All Teams), Good Beam, Vector(0, Global.NetHeight, Global.OutOfBounds), Vector(0, Global.NetHeight,
  • Global.OutOfBounds * -1), Aqua, Visible To Position and Radius);
  • Global.OutOfBounds * -1), Color(Aqua), Visible To Position and Radius);
  • Create Beam Effect(All Players(All Teams), Grapple Beam, Vector(0, Global.NetHeight, Global.OutOfBounds * 1), Vector(0.001, 0,
  • Global.OutOfBounds), Aqua, Visible To Position and Radius);
  • Global.OutOfBounds), Color(Aqua), Visible To Position and Radius);
  • Create Beam Effect(All Players(All Teams), Grapple Beam, Vector(0, Global.NetHeight, Global.OutOfBounds * -1), Vector(-0.001, 0,
  • Global.OutOfBounds * -1), Aqua, Visible To Position and Radius);
  • Global.OutOfBounds * -1), Color(Aqua), Visible To Position and Radius);
  • Create Beam Effect(All Players(All Teams), Good Beam, Vector(0, Global.NetHeight * 0.500, Global.OutOfBounds), Vector(0,
  • Global.NetHeight * 0.500, Global.OutOfBounds * -1), Aqua, Visible To Position and Radius);
  • Global.NetHeight * 0.500, Global.OutOfBounds * -1), Color(Aqua), Visible To Position and Radius);
  • Create Beam Effect(All Players(All Teams), Good Beam, Vector(0, 0, Global.OutOfBounds), Vector(0, 0, Global.OutOfBounds * -1),
  • Aqua, Visible To Position and Radius);
  • Color(Aqua), Visible To Position and Radius);
  • }
  • }
  • rule("Player Dies")
  • {
  • event
  • {
  • Player Died;
  • All;
  • Lúcio;
  • }
  • actions
  • {
  • Small Message(All Players(All Teams), String("{0} {1} {2}", Icon String(Skull), Event Player, Custom String("Died!")));
  • Play Effect(All Players(All Teams), Bad Explosion, Aqua, Event Player, 15);
  • Play Effect(All Players(All Teams), Explosion Sound, Aqua, Event Player, 100);
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Aqua), Event Player, 15);
  • Play Effect(All Players(All Teams), Explosion Sound, Color(Aqua), Event Player, 100);
  • Resurrect(Event Player);
  • Apply Impulse(Event Player, Up, -0.001, To Player, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Down, -0.001, To Player, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Left, -0.001, To Player, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Right, -0.001, To Player, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Forward, -0.001, To Player, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Backward, -0.001, To Player, Cancel Contrary Motion);
  • Teleport(Event Player, Vector(Global.OutOfBounds * Event Player.CurrentPlayerSide * 0.500, 0, 0));
  • Set Status(Event Player, Null, Frozen, Global.PenaltyFreezeTime);
  • }
  • }
  • rule("Player Crosses Net")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Lúcio;
  • }
  • conditions
  • {
  • Round To Integer(X Component Of(Position Of(Event Player)), To Nearest) == 0;
  • Round To Integer(X Component Of(Position Of(Event Player)), Down) == 0;
  • Global.LastAttacker != Null;
  • }
  • actions
  • {
  • Small Message(All Players(All Teams), String("{0} {1} {2}", Icon String(Stop), Event Player, Custom String("Crossed the Net!")));
  • Play Effect(All Players(All Teams), Bad Explosion, Aqua, Event Player, 15);
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Aqua), Event Player, 15);
  • Apply Impulse(Event Player, Up, -0.001, To Player, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Down, -0.001, To Player, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Left, -0.001, To Player, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Right, -0.001, To Player, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Forward, -0.001, To Player, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Backward, -0.001, To Player, Cancel Contrary Motion);
  • Play Effect(All Players(All Teams), Debuff Impact Sound, Aqua, Event Player, 100);
  • Play Effect(All Players(All Teams), Debuff Impact Sound, Color(Aqua), Event Player, 100);
  • Set Status(Event Player, Null, Frozen, Global.PenaltyFreezeTime);
  • Teleport(Event Player, Vector(Global.OutOfBounds * Event Player.CurrentPlayerSide * 0.500, 0, 0));
  • }
  • }
  • rule("Player Out of Bounds")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Lúcio;
  • }
  • conditions
  • {
  • Global.EnablePlayerOutOfBounds == True;
  • (X Component Of(Position Of(Event Player)) > Global.OutOfBounds || X Component Of(Position Of(Event Player))
  • < Global.OutOfBounds * -1 || Z Component Of(Position Of(Event Player)) > Global.OutOfBounds || Z Component Of(Position Of(
  • Event Player)) < Global.OutOfBounds * -1) == True;
  • }
  • actions
  • {
  • Small Message(All Players(All Teams), Custom String("Warning: Out of Bounds"));
  • Wait(1, Abort When False);
  • Small Message(All Players(All Teams), String("{0} {1} {2}", Icon String(Stop), Event Player, Custom String("Out of Bounds!")));
  • Play Effect(All Players(All Teams), Bad Explosion, Aqua, Event Player, 15);
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Aqua), Event Player, 15);
  • Apply Impulse(Event Player, Up, -0.001, To Player, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Down, -0.001, To Player, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Left, -0.001, To Player, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Right, -0.001, To Player, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Forward, -0.001, To Player, Cancel Contrary Motion);
  • Apply Impulse(Event Player, Backward, -0.001, To Player, Cancel Contrary Motion);
  • Play Effect(All Players(All Teams), Debuff Impact Sound, Aqua, Event Player, 100);
  • Play Effect(All Players(All Teams), Debuff Impact Sound, Color(Aqua), Event Player, 100);
  • Set Status(Event Player, Null, Frozen, Global.PenaltyFreezeTime);
  • Teleport(Event Player, Vector(Global.OutOfBounds * Event Player.CurrentPlayerSide * 0.500, 0, 0));
  • }
  • }
  • rule("Player Changes Side (to Red)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Lúcio;
  • }
  • conditions
  • {
  • X Component Of(Position Of(Event Player)) < -0.500;
  • Round To Integer(X Component Of(Position Of(Event Player)), To Nearest) < 0;
  • Global.LastAttacker == Null;
  • Event Player.CurrentPlayerSide != -1;
  • }
  • actions
  • {
  • Event Player.CurrentPlayerSide = -1;
  • Small Message(All Players(All Teams), String("{0} {1} {2}", Icon String(Recycle), Event Player, Custom String(
  • "Changed Side to Red!")));
  • }
  • }
  • rule("Player Changes Side (to Blue)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Lúcio;
  • }
  • conditions
  • {
  • X Component Of(Position Of(Event Player)) > 0.500;
  • Round To Integer(X Component Of(Position Of(Event Player)), To Nearest) > 0;
  • Global.LastAttacker == Null;
  • Event Player.CurrentPlayerSide != 1;
  • }
  • actions
  • {
  • Event Player.CurrentPlayerSide = 1;
  • Small Message(All Players(All Teams), String("{0} {1} {2}", Icon String(Recycle), Event Player, Custom String(
  • "Changed Side to Blue!")));
  • }
  • }
  • rule("Player LOS Check (True)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is In View Angle(Event Player, Global.BallReference, Global.LOSAngle) == True;
  • }
  • actions
  • {
  • Event Player.HaveLOSToBall = True;
  • }
  • }
  • rule("Player LOS Check (False)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is In View Angle(Event Player, Global.BallReference, Global.LOSAngle) == False;
  • }
  • actions
  • {
  • Event Player.HaveLOSToBall = False;
  • }
  • }
  • rule("Spawn Ball")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Wrecking Ball), All Teams, 11, Vector(Global.SpawnSide * Global.OutOfBounds * 0.500, Global.BallSpawnHeight,
  • 0), Null);
  • Global.BallReference = Last Created Entity;
  • Start Scaling Player(Global.BallReference, Global.BallScale, False);
  • Set Gravity(Global.BallReference, Global.BallGravity);
  • Start Modifying Hero Voice Lines(Global.BallReference, Global.BallScale, False);
  • Disable Built-In Game Mode Respawning(Global.BallReference);
  • Disable Nameplates(Global.BallReference, All Players(All Teams));
  • Start Heal Over Time(Global.BallReference, Null, 9999, 600);
  • Create Icon(Filtered Array(All Players(All Teams), Current Array Element.HaveLOSToBall == False), Global.BallReference, Circle,
  • Visible To and Position, Lime Green, True);
  • Visible To and Position, Color(Lime Green), True);
  • }
  • }
  • rule("Ball Touches Floor (Score)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Wrecking Ball;
  • }
  • conditions
  • {
  • Y Component Of(Position Of(Event Player)) == 0;
  • (X Component Of(Position Of(Event Player)) > Global.OutOfBounds || X Component Of(Position Of(Event Player))
  • < Global.OutOfBounds * -1 || Z Component Of(Position Of(Event Player)) > Global.OutOfBounds || Z Component Of(Position Of(
  • Event Player)) < Global.OutOfBounds * -1) == False;
  • ((X Component Of(Global.LastHitPosition) > 0 && X Component Of(Position Of(Event Player)) > 0) || (X Component Of(
  • Global.LastHitPosition) < 0 && X Component Of(Position Of(Event Player)) < 0)) == False;
  • Global.LastAttacker != Null;
  • }
  • actions
  • {
  • Big Message(All Players(All Teams), String("{0} {1} {2}", Icon String(Warning), Global.LastAttacker, Custom String("Scored!")));
  • Global.LastAttacker.Scores += 1;
  • Kill(Event Player, Null);
  • Play Effect(All Players(All Teams), Good Explosion, Green, Vector(X Component Of(Position Of(Event Player)), 0, Z Component Of(
  • Position Of(Event Player))), 10);
  • Play Effect(All Players(All Teams), Good Explosion, Color(Green), Vector(X Component Of(Position Of(Event Player)), 0,
  • Z Component Of(Position Of(Event Player))), 10);
  • Destroy Effect(Global.LastBallCircle);
  • Create Effect(All Players(All Teams), Cloud, Lime Green, Position Of(Event Player), 1, None);
  • Create Effect(All Players(All Teams), Cloud, Color(Lime Green), Position Of(Event Player), 1, None);
  • Global.LastBallCircle = Last Created Entity;
  • If(X Component Of(Global.LastHitPosition) < 0);
  • Global.RedScores += 1;
  • Global.SpawnSide = 1;
  • Else;
  • Global.BlueScores += 1;
  • Global.SpawnSide = -1;
  • End;
  • Modify Player Score(Global.LastAttacker, 1);
  • }
  • }
  • rule("Ball Touches Floor (Out of Bounds)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Wrecking Ball;
  • }
  • conditions
  • {
  • Y Component Of(Position Of(Event Player)) <= 0;
  • (X Component Of(Position Of(Event Player)) > Global.OutOfBounds || X Component Of(Position Of(Event Player))
  • < Global.OutOfBounds * -1 || Z Component Of(Position Of(Event Player)) > Global.OutOfBounds || Z Component Of(Position Of(
  • Event Player)) < Global.OutOfBounds * -1) == True;
  • Global.LastAttacker != Null;
  • }
  • actions
  • {
  • Big Message(All Players(All Teams), String("{0} {1} {2}", Icon String(No), Global.LastAttacker, Custom String("Out of Bounds!")));
  • Global.LastAttacker.Fouls += 1;
  • Kill(Event Player, Null);
  • Play Effect(All Players(All Teams), Bad Explosion, Red, Vector(X Component Of(Position Of(Event Player)), 0, Z Component Of(
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Red), Vector(X Component Of(Position Of(Event Player)), 0, Z Component Of(
  • Position Of(Event Player))), 10);
  • Destroy Effect(Global.LastBallCircle);
  • Create Effect(All Players(All Teams), Cloud, Red, Position Of(Event Player), 1, None);
  • Create Effect(All Players(All Teams), Cloud, Color(Red), Position Of(Event Player), 1, None);
  • Global.LastBallCircle = Last Created Entity;
  • If(X Component Of(Global.LastHitPosition) < 0);
  • Global.RedFouls += 1;
  • Global.SpawnSide = -1;
  • Else;
  • Global.BlueFouls += 1;
  • Global.SpawnSide = 1;
  • End;
  • Modify Player Score(Global.LastAttacker, -1);
  • }
  • }
  • rule("Ball Touches Floor (Same Side Foul)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Wrecking Ball;
  • }
  • conditions
  • {
  • Y Component Of(Position Of(Event Player)) == 0;
  • Is On Ground(Event Player) == True;
  • (X Component Of(Position Of(Event Player)) > Global.OutOfBounds || X Component Of(Position Of(Event Player))
  • < Global.OutOfBounds * -1 || Z Component Of(Position Of(Event Player)) > Global.OutOfBounds || Z Component Of(Position Of(
  • Event Player)) < Global.OutOfBounds * -1) == False;
  • ((X Component Of(Global.LastHitPosition) > 0 && X Component Of(Position Of(Event Player)) > 0) || (X Component Of(
  • Global.LastHitPosition) < 0 && X Component Of(Position Of(Event Player)) < 0)) == True;
  • Global.LastAttacker != Null;
  • }
  • actions
  • {
  • Big Message(All Players(All Teams), String("{0} {1} {2}", Icon String(No), Global.LastAttacker, Custom String("Same Side Foul!")));
  • Global.LastAttacker.Fouls += 1;
  • Kill(Event Player, Null);
  • Play Effect(All Players(All Teams), Bad Explosion, Red, Vector(X Component Of(Position Of(Event Player)), 0, Z Component Of(
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Red), Vector(X Component Of(Position Of(Event Player)), 0, Z Component Of(
  • Position Of(Event Player))), 10);
  • Destroy Effect(Global.LastBallCircle);
  • Create Effect(All Players(All Teams), Cloud, Red, Position Of(Event Player), 1, None);
  • Create Effect(All Players(All Teams), Cloud, Color(Red), Position Of(Event Player), 1, None);
  • Global.LastBallCircle = Last Created Entity;
  • If(X Component Of(Global.LastHitPosition) < 0);
  • Global.RedFouls += 1;
  • Global.SpawnSide = -1;
  • Else;
  • Global.BlueFouls += 1;
  • Global.SpawnSide = 1;
  • End;
  • Modify Player Score(Global.LastAttacker, -1);
  • }
  • }
  • rule("Ball Hits Net (Net Foul)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Wrecking Ball;
  • }
  • conditions
  • {
  • Round To Integer(X Component Of(Position Of(Event Player)), To Nearest) == 0;
  • Round To Integer(Absolute Value(X Component Of(Position Of(Event Player))), Down) == 0;
  • Y Component Of(Position Of(Event Player)) <= Global.NetHeight;
  • Global.LastAttacker != Null;
  • }
  • actions
  • {
  • Big Message(All Players(All Teams), String("{0} {1} {2}", Icon String(No), Global.LastAttacker, Custom String("Net Foul!")));
  • Global.LastAttacker.Fouls += 1;
  • Kill(Event Player, Null);
  • Play Effect(All Players(All Teams), Bad Explosion, Aqua, Event Player, 10);
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Aqua), Event Player, 10);
  • Destroy Effect(Global.LastBallCircle);
  • Create Effect(All Players(All Teams), Cloud, Aqua, Position Of(Event Player), 1, None);
  • Create Effect(All Players(All Teams), Cloud, Color(Aqua), Position Of(Event Player), 1, None);
  • Global.LastBallCircle = Last Created Entity;
  • If(X Component Of(Global.LastHitPosition) < 0);
  • Global.RedFouls += 1;
  • Global.SpawnSide = -1;
  • Else;
  • Global.BlueFouls += 1;
  • Global.SpawnSide = 1;
  • End;
  • Modify Player Score(Global.LastAttacker, -1);
  • }
  • }
  • rule("Ball Hit")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • Wrecking Ball;
  • }
  • actions
  • {
  • Global.LastHitPosition = Position Of(Attacker);
  • If(Global.LastAttacker != Attacker);
  • Set Ultimate Charge(Attacker, Ultimate Charge Percent(Attacker) + Global.UltChargePerBallHit);
  • End;
  • Wait(0.048, Ignore Condition);
  • Global.LastAttacker = Attacker;
  • }
  • }
  • rule("Ball Dies")
  • {
  • event
  • {
  • Player Died;
  • All;
  • Wrecking Ball;
  • }
  • actions
  • {
  • Global.LastAttacker = Null;
  • }
  • }
  • rule("Ball Respawn")
  • {
  • event
  • {
  • Player Died;
  • All;
  • Wrecking Ball;
  • }
  • conditions
  • {
  • Global.RedScores + Global.BlueFouls < Global.ScoreToWin;
  • Global.BlueScores + Global.RedFouls < Global.ScoreToWin;
  • }
  • actions
  • {
  • Wait(Global.BallRespawnTime, Ignore Condition);
  • Resurrect(Event Player);
  • Teleport(Event Player, Vector(Global.SpawnSide * Global.OutOfBounds * 0.500, Global.BallSpawnHeight, 0));
  • Start Heal Over Time(Event Player, Null, 9999, 600);
  • Global.CurrentRound += 1;
  • If(Global.RedScores + Global.BlueFouls >= Global.ScoreToWin - 1 || Global.BlueScores + Global.RedFouls >= Global.ScoreToWin - 1);
  • Big Message(All Players(All Teams), String("{0} {1}", Icon String(Warning), Custom String("Match Point!")));
  • End;
  • }
  • }
  • rule("Ball Trail (Normal)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Wrecking Ball;
  • }
  • conditions
  • {
  • Global.LastAttacker != Null;
  • Global.LastAttacker.IsUsingUltimate != True;
  • Is In Air(Event Player) == True;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Good Explosion, Lime Green, Event Player, 0.050);
  • Play Effect(All Players(All Teams), Good Explosion, Color(Lime Green), Event Player, 0.050);
  • Wait(0.016, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Ball Trail (Ultimate)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Wrecking Ball;
  • }
  • conditions
  • {
  • Global.LastAttacker != Null;
  • Global.LastAttacker.IsUsingUltimate == True;
  • Is In Air(Event Player) == True;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Bad Pickup Effect, Lime Green, Event Player, 1);
  • Play Effect(All Players(All Teams), Bad Pickup Effect, Color(Lime Green), Event Player, 1);
  • Wait(0.016, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Player Activate Ultimate")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • Lúcio;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Ultimate) == True;
  • Is Button Held(Event Player, Button(Ultimate)) == True;
  • Ultimate Charge Percent(Event Player) == 100;
  • }
  • actions
  • {
  • Set Ultimate Charge(Event Player, 0);
  • Event Player.IsUsingUltimate = True;
  • Small Message(Event Player, Custom String("Time is slowed and you do crazy knockback - perfect for slams!"));
  • Small Message(All Players(All Teams), String("{0} {1} {2}", Ability Icon String(Hero(Lúcio), Button(Ultimate)), Event Player,
  • Custom String("Activated Ultimate!")));
  • Set Slow Motion(Global.UltimateSlowdownScale);
  • Play Effect(All Players(All Teams), Bad Explosion, Lime Green, Event Player, 3);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Lime Green, Event Player, 300);
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Lime Green), Event Player, 3);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Lime Green), Event Player, 300);
  • Wait(1, Ignore Condition);
  • Event Player.IsUsingUltimate = False;
  • Set Slow Motion(100);
  • }
  • }
  • rule("Player Hits Ball (Ultimate)")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • Lúcio;
  • }
  • conditions
  • {
  • Event Player.IsUsingUltimate == True;
  • }
  • actions
  • {
  • Apply Impulse(Victim, Facing Direction Of(Attacker), 10000, To World, Cancel Contrary Motion);
  • Apply Impulse(Attacker, Facing Direction Of(Attacker) * -1, 10000, To World, Cancel Contrary Motion);
  • Play Effect(All Players(All Teams), Bad Explosion, Lime Green, Victim, 10);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Lime Green, Victim, 300);
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Lime Green), Victim, 10);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Color(Lime Green), Victim, 300);
  • }
  • }
  • rule("Team Wins (Red)")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.RedScores + Global.BlueFouls >= Global.ScoreToWin;
  • }
  • actions
  • {
  • Wait(0.016, Ignore Condition);
  • Big Message(All Players(All Teams), Custom String("Red Team"));
  • Wait(2.500, Ignore Condition);
  • Play Effect(All Players(All Teams), Ring Explosion, Red, Vector(0, 0, 0), Global.OutOfBounds * 2);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Red, Vector(0, 0, 0), Global.OutOfBounds * 20);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Red), Vector(0, 0, 0), Global.OutOfBounds * 2);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Red), Vector(0, 0, 0), Global.OutOfBounds * 20);
  • Declare Player Victory(Null);
  • }
  • }
  • rule("Team Wins (Blue)")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.BlueScores + Global.RedFouls >= Global.ScoreToWin;
  • }
  • actions
  • {
  • Wait(0.016, Ignore Condition);
  • Big Message(All Players(All Teams), Custom String("Blue Team"));
  • Wait(2.500, Ignore Condition);
  • Play Effect(All Players(All Teams), Ring Explosion, Blue, Vector(0, 0, 0), Global.OutOfBounds * 2);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Blue, Vector(0, 0, 0), Global.OutOfBounds * 20);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Blue), Vector(0, 0, 0), Global.OutOfBounds * 2);
  • Play Effect(All Players(All Teams), Ring Explosion Sound, Color(Blue), Vector(0, 0, 0), Global.OutOfBounds * 20);
  • Declare Player Victory(Null);
  • }
  • }
  • disabled rule("Debug Messages")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • Create HUD Text(Event Player, Position Of(Event Player), Null, Null, Left, 1000, White, White, White, Visible To and String,
  • Default Visibility);
  • Create HUD Text(Event Player, Null, Custom String("Last Attacker"), Global.LastAttacker, Left, 1000, White, White, White,
  • Create HUD Text(Event Player, Position Of(Event Player), Null, Null, Left, 1000, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Create HUD Text(Event Player, Null, Custom String("Last Attacker"), Global.LastAttacker, Left, 1000, Color(White), Color(White),
  • Color(White), Visible To and String, Default Visibility);
  • }
  • }
Join the Workshop.codes Discord