Doomfist Sumo version 3.4

9G11W

Doomfist sumo by Crebos
Idea by Caluminium
Goal: Kick everyone out of the Platform to win the round
Abilities cool downs are set to 60% and rocket punch is 140% knock back
rocket punch and uppercut normally allowed
when 2 players left: seismic slam (with 2 secs stun) and ultimate (with 3 secs knockdown) get enabled

STARTING THE GAME
When the game starts all players get into the lobby first
Interact with the Menu bubbles with standing inside and pressing F (Interact button)
There the host Player can select between normal Mode and Team Mode
To the right he can select different Score-To-Win types
Then he/she can start the game (with standard settings when nothing else gets selected)

GENERAL
While in game the Host player can press CTRL + F (Crouch + Interact) then in the next round you'll come back to the menu
To display the Killing-Sphere hold Space + F (Jump + Interact) for more then 1 second (to turn off do the same) -> in order for it to work you have to be alive!
On infinite Mode the Score is the win-rate
On Score-To-Win Mode the Score is the amount of rounds Won

NORMAL MODE
Everyone fights everyone and the last living player wins the round

TEAM MODE
Teams of 2 Players will be formed and they have to fight all other Players together
You can hit and move your teammate but not stun (with e) or knockdown (with ult) him/her
The game is over when only one Team is alive (either both are alive or just one of the two)
It gets buggy when there are less then 4 players so don't do it please xD

SCORE TO WIN
On standard the game is set to infinite (none will ever win the whole game, just rounds)
If you want to play to a certain amount of points (Score to Win)
then you can increase or decrease the amount of points to be played (add 10, subtract 10)
To play to infinite again press infinite bubble
The first Player to reach the amount of points set wins the whole game

Code Snippet

View variables

Rules

No Rules are declared.
variables { global: 0: arrayOfVectors 1: arrayOfRadii 2: matchStatus 3: nextMatchStatus 4: initiatedStart 5: oneVoneMode 6: oneVoneEffects 7: mode 8: dynamicTeams 9: freePlayers 10: retryDynamic 11: scoreType 12: inMenuText 13: sphereVisibleTo 14: customTeamMode 15: tempplayer 16: customTeam player: 0: active 1: kills 2: deathEffect 3: roundsWon 4: roundsPlayed 5: score 6: killer 7: teammate 8: mateHUD 9: searchForMate 10: ultUsed } disabled rule("### Gamemode by Crebos, Version 3.4, Have Fun :) ###") { event { Ongoing - Global; } } disabled rule("### Variables declaration ###") { event { Ongoing - Global; } } rule("Global Variables; ArrayOfVector, ArrayOfRadii, MatchStatus, NextMatchStatus, InitiatedStart, oneVoneMode, oneVoneEffects, oneVon") { event { Ongoing - Global; } actions { Set Global Variable(arrayOfVectors, Empty Array); Modify Global Variable(arrayOfVectors, Append To Array, Vector(-20.749, 40.686, -74.843)); Modify Global Variable(arrayOfVectors, Append To Array, Vector(-16.727, 32, -52.146)); Modify Global Variable(arrayOfVectors, Append To Array, Vector(-28.298, 1.617, -34.035)); Modify Global Variable(arrayOfVectors, Append To Array, Vector(-21.719, 1.541, -26.620)); Modify Global Variable(arrayOfVectors, Append To Array, Vector(-16.619, 1.376, -28.450)); Modify Global Variable(arrayOfVectors, Append To Array, Vector(-15.796, 1.371, -33.165)); Modify Global Variable(arrayOfVectors, Append To Array, Vector(0, 0, 0)); Modify Global Variable(arrayOfVectors, Append To Array, Vector(0, 0, 0)); Modify Global Variable(arrayOfVectors, Append To Array, Vector(-23.081, 1.609, -38.199)); Modify Global Variable(arrayOfVectors, Append To Array, Vector(-24.375, 1.552, -23.943)); Modify Global Variable(arrayOfVectors, Append To Array, Vector(-27.570, 1.392, -23.633)); Modify Global Variable(arrayOfVectors, Append To Array, Vector(-30.028, 1.396, -25.611)); Set Global Variable(arrayOfRadii, Empty Array); Modify Global Variable(arrayOfRadii, Append To Array, 29); Modify Global Variable(arrayOfRadii, Append To Array, 7); Modify Global Variable(arrayOfRadii, Append To Array, 0); Modify Global Variable(arrayOfRadii, Append To Array, 1); Modify Global Variable(arrayOfRadii, Append To Array, 1); Modify Global Variable(arrayOfRadii, Append To Array, 1); Modify Global Variable(arrayOfRadii, Append To Array, 0); Modify Global Variable(arrayOfRadii, Append To Array, 0); Modify Global Variable(arrayOfRadii, Append To Array, 1); Modify Global Variable(arrayOfRadii, Append To Array, 1); Modify Global Variable(arrayOfRadii, Append To Array, 1); Modify Global Variable(arrayOfRadii, Append To Array, 1); Set Global Variable(matchStatus, 0); Set Global Variable(nextMatchStatus, 2); Set Global Variable(initiatedStart, False); Set Global Variable(sphereVisibleTo, Empty Array); } } rule("Team Mode Variables, dynamicTeams, freePlayers, retryDynamic, customTeamMode, tempplayer, customTeam, inmenuText") { event { Ongoing - Global; } actions { Set Global Variable(mode, 0); Set Global Variable(dynamicTeams, False); Set Global Variable(freePlayers, Empty Array); Set Global Variable(retryDynamic, False); Set Global Variable(customTeamMode, False); Set Global Variable(customTeam, Empty Array); Set Global Variable(tempplayer, Null); } } rule("PlayerVariables; active, Kills, DeathEffect, RoundsWon, PlayedRounds, Score, Killer, teammate, searchForMate, MateHUD, ultUsed") { event { Ongoing - Each Player; All; All; } conditions { Global Variable(mode) == 0; } actions { Set Player Variable(Event Player, active, False); Set Player Variable(Event Player, kills, 0); Set Player Variable(Event Player, deathEffect, Null); Set Player Variable(Event Player, roundsWon, 0); Set Player Variable(Event Player, roundsPlayed, 0); Set Player Variable(Event Player, score, 0); Set Player Variable(Event Player, searchForMate, False); Set Player Variable(Event Player, ultUsed, False); } } disabled rule("### Setup ###") { event { Ongoing - Global; } } rule("Disable Announcer, Music, Completion, Scoring, Match Time") { event { Ongoing - Global; } actions { Disable Built-In Game Mode Announcer; Disable Built-In Game Mode Music; Disable Built-In Game Mode Completion; Disable Built-In Game Mode Scoring; Set Match Time(0); } } rule("Reset Timer when under one minute") { event { Ongoing - Global; } conditions { Is Game In Progress == True; Match Time <= 60; } actions { Set Match Time(900); } } disabled rule("### Visuals and VisualsCommands ###") { event { Ongoing - Global; } } rule("Sphere visibility") { event { Ongoing - Global; } actions { Create Effect(Global Variable(sphereVisibleTo), Sphere, Red, Value In Array(Global Variable(arrayOfVectors), 0), Value In Array( Global Variable(arrayOfRadii), 0), Visible To Position and Radius); Create Effect(Global Variable(sphereVisibleTo), Sphere, Red, Value In Array(Global Variable(arrayOfVectors), 1), Value In Array( Global Variable(arrayOfRadii), 1), Visible To Position and Radius); } } rule("Add Player SphereVisibility (Jump + Interact)") { event { Ongoing - Each Player; All; All; } conditions { Is Button Held(Event Player, Interact) == True; Is Button Held(Event Player, Jump) == True; Array Contains(Global Variable(sphereVisibleTo), Event Player) == False; } actions { Wait(1, Abort When False); Modify Global Variable(sphereVisibleTo, Append To Array, Event Player); } } rule("Remove Player Sphere Visility (Jump + Interact)") { event { Ongoing - Each Player; All; All; } conditions { Is Button Held(Event Player, Interact) == True; Is Button Held(Event Player, Jump) == True; Array Contains(Global Variable(sphereVisibleTo), Event Player) == True; } actions { Wait(1, Abort When False); Modify Global Variable(sphereVisibleTo, Remove From Array By Value, Event Player); } } rule("Player HUD Normal") { event { Ongoing - Each Player; All; All; } actions { Create HUD Text(Event Player, String("{0}: {1}", String("Remaining", Null, Null, Null), Number of Living Players(All Teams), Null), Null, Null, Left, 1, White, White, White, Visible To and String, Default Visibility); Create HUD Text(Event Player, String("{0}: {1}", Custom String("Score to win", Null, Null, Null), Global Variable(scoreType), Null), Null, Null, Left, 2, Aqua, Aqua, Aqua, Visible To and String, Default Visibility); Create HUD Text(Event Player, String("{0}: {1}", String("Score", Null, Null, Null), Score Of(Event Player), Null), Null, Null, Left, 3, Blue, Blue, Blue, Visible To and String, Default Visibility); Create HUD Text(Event Player, String("{0}: {1}", String("Rounds Won", Null, Null, Null), Player Variable(Event Player, roundsWon), Null), Null, Null, Left, 4, Green, Green, Green, Visible To and String, Default Visibility); Create HUD Text(Event Player, String("{0}: {1}", String("{0} {1}", String("Rounds", Null, Null, Null), String("Played", Null, Null, Null), Null), Player Variable(Event Player, roundsPlayed), Null), Null, Null, Left, 5, Orange, White, White, Visible To and String, Default Visibility); Create HUD Text(Event Player, String("{0}: {1}", String("Eliminations", Null, Null, Null), Player Variable(Event Player, kills), Null), Null, Null, Left, 6, Red, Red, Red, Visible To and String, Default Visibility); } } rule("Player HUD for Host (statistics)") { event { Ongoing - Each Player; All; All; } conditions { Event Player == Host Player; } actions { Create HUD Text(Event Player, Null, Custom String("GAME INFO", Null, Null, Null), Null, Right, 8, White, White, White, Visible To and String, Default Visibility); Create HUD Text(Event Player, Null, String("{0}: {1}", Custom String("Gamemode", Null, Null, Null), Global Variable(mode), Null), Null, Right, 9, White, White, White, Visible To and String, Default Visibility); Create HUD Text(Event Player, Null, String("{0}: {1}", Custom String("Match status", Null, Null, Null), Global Variable( matchStatus), Null), Null, Right, 10, White, White, White, Visible To and String, Default Visibility); Create HUD Text(Event Player, Null, String("{0}: {1}", Custom String("NextMatchstatus", Null, Null, Null), Global Variable( nextMatchStatus), Null), Null, Right, 11, White, White, White, Visible To and String, Default Visibility); Create HUD Text(Event Player, Null, String("{0}: {1}", Custom String("DynamicTeams", Null, Null, Null), Global Variable( dynamicTeams), Null), Null, Right, 12, White, White, White, Visible To and String, Default Visibility); Create HUD Text(Event Player, Null, String("{0}: {1}", Custom String("List of FreePlayers", Null, Null, Null), Global Variable( freePlayers), Null), Null, Right, 13, White, White, White, Visible To and String, Default Visibility); Create HUD Text(Event Player, Null, String("{0}: {1}", Custom String("ScoreType", Null, Null, Null), Global Variable(scoreType), Null), Null, Right, 14, White, White, White, Visible To and String, Default Visibility); Create HUD Text(Event Player, Null, String("{0}: {1}", Custom String("CustomTeamMode", Null, Null, Null), Global Variable( customTeamMode), Null), Null, Right, 15, White, White, White, Visible To and String, Default Visibility); Create HUD Text(Event Player, Null, String("{0}: {1}", Custom String("tempplayer", Null, Null, Null), Global Variable(tempplayer), Null), Null, Right, 16, White, White, White, Visible To and String, Default Visibility); Create HUD Text(Event Player, Null, String("{0}: {1}", Custom String("customTeam", Null, Null, Null), Global Variable(customTeam), Null), Null, Right, 17, White, White, White, Visible To and String, Default Visibility); } } disabled rule("### Lobby events ###") { event { Ongoing - Global; } } rule("Setup Menu Visuals") { event { Ongoing - Global; } actions { Create Effect(All Players(All Teams), Sphere, Green, Value In Array(Global Variable(arrayOfVectors), 3), Value In Array( Global Variable(arrayOfRadii), 3), Visible To Position and Radius); Create In-World Text(All Players(All Teams), String("{0} {1}", String("Start", Null, Null, Null), String("Game", Null, Null, Null), Null), Value In Array(Global Variable(arrayOfVectors), 3), Value In Array(Global Variable(arrayOfRadii), 3), Clip Against Surfaces, Visible To and String, Red, Default Visibility); Create Effect(All Players(All Teams), Sphere, Green, Value In Array(Global Variable(arrayOfVectors), 4), Value In Array( Global Variable(arrayOfRadii), 4), Visible To Position and Radius); Create In-World Text(All Players(All Teams), String("{0} {1}", String("Normal", Null, Null, Null), String("Game", Null, Null, Null), Null), Value In Array(Global Variable(arrayOfVectors), 4), Value In Array(Global Variable(arrayOfRadii), 4), Clip Against Surfaces, Visible To and String, Red, Default Visibility); Create Effect(All Players(All Teams), Sphere, Green, Value In Array(Global Variable(arrayOfVectors), 5), Value In Array( Global Variable(arrayOfRadii), 5), Visible To Position and Radius); Create In-World Text(All Players(All Teams), String("{0} {1}", String("Team", Null, Null, Null), String("Game", Null, Null, Null), Null), Value In Array(Global Variable(arrayOfVectors), 5), Value In Array(Global Variable(arrayOfRadii), 5), Clip Against Surfaces, Visible To and String, Red, Default Visibility); Create Effect(All Players(All Teams), Sphere, Green, Value In Array(Global Variable(arrayOfVectors), 8), Value In Array( Global Variable(arrayOfRadii), 8), Visible To Position and Radius); Create In-World Text(All Players(All Teams), Custom String("Reset Teams", Null, Null, Null), Value In Array(Global Variable( arrayOfVectors), 8), Value In Array(Global Variable(arrayOfRadii), 8), Clip Against Surfaces, Visible To and String, Red, Default Visibility); Create Effect(All Players(All Teams), Sphere, Green, Value In Array(Global Variable(arrayOfVectors), 9), Value In Array( Global Variable(arrayOfRadii), 9), Visible To Position and Radius); Create In-World Text(All Players(All Teams), Custom String("Infinite Score", Null, Null, Null), Value In Array(Global Variable( arrayOfVectors), 9), Value In Array(Global Variable(arrayOfRadii), 9), Clip Against Surfaces, Visible To and String, Red, Default Visibility); Create Effect(All Players(All Teams), Sphere, Green, Value In Array(Global Variable(arrayOfVectors), 10), Value In Array( Global Variable(arrayOfRadii), 10), Visible To Position and Radius); Create In-World Text(All Players(All Teams), Custom String("+10 Score", Null, Null, Null), Value In Array(Global Variable( arrayOfVectors), 10), Value In Array(Global Variable(arrayOfRadii), 10), Clip Against Surfaces, Visible To and String, Red, Default Visibility); Create Effect(All Players(All Teams), Sphere, Green, Value In Array(Global Variable(arrayOfVectors), 11), Value In Array( Global Variable(arrayOfRadii), 11), Visible To Position and Radius); Create In-World Text(All Players(All Teams), Custom String("-10 Score", Null, Null, Null), Value In Array(Global Variable( arrayOfVectors), 11), Value In Array(Global Variable(arrayOfRadii), 11), Clip Against Surfaces, Visible To and String, Red, Default Visibility); } } rule("Hostplayer summon Lobby (CTRL + F / Crouch + Interact)") { event { Ongoing - Global; } conditions { Is Button Held(Host Player, Crouch) == True; Is Button Held(Host Player, Interact) == True; } actions { Set Global Variable(nextMatchStatus, 0); Small Message(Host Player, String("Success", Null, Null, Null)); } } rule("Game Lobby other Players") { event { Ongoing - Each Player; All; All; } conditions { Global Variable(matchStatus) == 0; Has Spawned(Event Player) == True; } actions { Wait(0.100, Ignore Condition); Set Player Variable(Event Player, active, False); Resurrect(Event Player); Teleport(Event Player, Value In Array(Global Variable(arrayOfVectors), 2)); Set Facing(Event Player, Value In Array(Global Variable(arrayOfVectors), 3), To World); Set Player Variable(Event Player, kills, 0); Set Player Variable(Event Player, roundsWon, 0); Set Player Variable(Event Player, roundsPlayed, 0); Set Player Variable(Event Player, score, 0); Set Player Score(Event Player, Player Variable(Event Player, score)); } } rule("Game Lobby Hostplayer") { event { Ongoing - Each Player; All; All; } conditions { Global Variable(matchStatus) == 0; Has Spawned(Event Player) == True; Host Player == Event Player; } actions { Set Status(Host Player, Null, Phased Out, 9999); } } rule("Menuitem Start Game for Normal Mode") { event { Ongoing - Global; } conditions { Distance Between(Host Player, Value In Array(Global Variable(arrayOfVectors), 3)) <= Add(Value In Array(Global Variable( arrayOfRadii), 3), 2); Is Button Held(Host Player, Interact) == True; Global Variable(mode) == 0; } actions { Set Status(All Players(All Teams), Null, Rooted, 2); Big Message(All Players(All Teams), Custom String("Normal Game Starting", Null, Null, Null)); Wait(2, Ignore Condition); Set Global Variable(nextMatchStatus, 2); Set Global Variable(matchStatus, Global Variable(nextMatchStatus)); Clear Status(All Players(All Teams), Phased Out); Clear Status(All Players(All Teams), Rooted); Set Ability 1 Enabled(Host Player, True); Set Secondary Fire Enabled(Host Player, True); } } rule("Menuitem Start Game for Team Mode") { event { Ongoing - Global; } conditions { Distance Between(Host Player, Value In Array(Global Variable(arrayOfVectors), 3)) <= Add(Value In Array(Global Variable( arrayOfRadii), 3), 2); Is Button Held(Host Player, Interact) == True; Global Variable(mode) == 1; All Players(All Teams) != 2; } actions { Set Status(All Players(All Teams), Null, Rooted, 2); Big Message(All Players(All Teams), Custom String("Team Game Starting", Null, Null, Null)); Wait(2, Ignore Condition); Set Global Variable(nextMatchStatus, 2); Set Global Variable(matchStatus, Global Variable(nextMatchStatus)); Clear Status(All Players(All Teams), Phased Out); Clear Status(All Players(All Teams), Rooted); Set Ability 1 Enabled(Host Player, True); Set Secondary Fire Enabled(Host Player, True); } } rule("Menuitem Normal Mode") { event { Ongoing - Global; } conditions { Distance Between(Host Player, Value In Array(Global Variable(arrayOfVectors), 4)) <= Add(Value In Array(Global Variable( arrayOfRadii), 4), 2); Is Button Held(Host Player, Interact) == True; } actions { Set Global Variable(mode, 0); Small Message(Host Player, String("Success", Null, Null, Null)); Set Player Variable(All Players(All Teams), kills, 0); Set Player Variable(All Players(All Teams), roundsWon, 0); Set Player Variable(All Players(All Teams), roundsPlayed, 0); Set Player Variable(All Players(All Teams), score, 0); Set Player Variable(All Players(All Teams), teammate, 0); Set Player Score(All Players(All Teams), 0); Set Global Variable(dynamicTeams, False); } } rule("Menuitem Team Mode") { event { Ongoing - Global; } conditions { Distance Between(Host Player, Value In Array(Global Variable(arrayOfVectors), 5)) <= Add(Value In Array(Global Variable( arrayOfRadii), 5), 2); Is Button Held(Host Player, Interact) == True; } actions { Set Global Variable(mode, 1); Small Message(Host Player, String("Success", Null, Null, Null)); Set Player Variable(All Players(All Teams), kills, 0); Set Player Variable(All Players(All Teams), roundsWon, 0); Set Player Variable(All Players(All Teams), roundsPlayed, 0); Set Player Variable(All Players(All Teams), score, 0); Set Player Variable(All Players(All Teams), teammate, 0); Set Player Score(All Players(All Teams), 0); Big Message(All Players(All Teams), Custom String("Stand CLOSE together with your mate! Teams in 5 seconds", Null, Null, Null)); Wait(5, Ignore Condition); Set Player Variable(All Players(All Teams), searchForMate, True); Small Message(Host Player, String("Success", Null, Null, Null)); Big Message(All Players(All Teams), Custom String("Teams have been made", Null, Null, Null)); Set Global Variable(dynamicTeams, True); Set Global Variable(retryDynamic, True); } } rule("Menuitem Reset Teams") { event { Ongoing - Global; } conditions { Distance Between(Host Player, Value In Array(Global Variable(arrayOfVectors), 8)) <= Add(Value In Array(Global Variable( arrayOfRadii), 8), 2); Is Button Held(Host Player, Interact) == True; Global Variable(mode) == 1; } actions { Set Global Variable(dynamicTeams, False); Set Global Variable(freePlayers, Empty Array); Set Player Variable(All Players(All Teams), teammate, Null); Set Player Variable(All Players(All Teams), searchForMate, False); Small Message(Host Player, String("Success", Null, Null, Null)); Set Global Variable(customTeamMode, False); Set Global Variable(customTeam, Empty Array); Set Global Variable(tempplayer, Null); } } rule("Menuitem Score Infinite") { event { Ongoing - Global; } conditions { Distance Between(Host Player, Value In Array(Global Variable(arrayOfVectors), 9)) <= Add(Value In Array(Global Variable( arrayOfRadii), 9), 2); Is Button Held(Host Player, Interact) == True; } actions { Set Global Variable(scoreType, 0); Small Message(Host Player, String("{0}: {1}", Custom String("Success ScoreType", Null, Null, Null), Global Variable(scoreType), Null)); } } rule("Menuitem Score add 10") { event { Ongoing - Global; } conditions { Distance Between(Host Player, Value In Array(Global Variable(arrayOfVectors), 10)) <= Add(Value In Array(Global Variable( arrayOfRadii), 10), 2); Is Button Held(Host Player, Interact) == True; } actions { Set Global Variable(scoreType, Add(Global Variable(scoreType), 10)); Small Message(Host Player, String("{0}: {1}", Custom String("Success ScoreType", Null, Null, Null), Global Variable(scoreType), Null)); } } rule("Menuitem Score remove 10") { event { Ongoing - Global; } conditions { Distance Between(Host Player, Value In Array(Global Variable(arrayOfVectors), 11)) <= Add(Value In Array(Global Variable( arrayOfRadii), 11), 2); Is Button Held(Host Player, Interact) == True; } actions { Set Global Variable(scoreType, Subtract(Global Variable(scoreType), 10)); Small Message(Host Player, String("{0}: {1}", Custom String("Success ScoreType", Null, Null, Null), Global Variable(scoreType), Null)); } } disabled rule("### Round events ###") { event { Ongoing - Global; } } rule("1 vs 1 mode on Normal Mode") { event { Ongoing - Global; } conditions { Number of Living Players(All Teams) <= Absolute Value(2); Global Variable(oneVoneMode) == False; Global Variable(matchStatus) == 1; Global Variable(mode) == 0; } actions { Wait(0.100, Abort When False); Set Global Variable(oneVoneMode, True); } } rule("1 vs 1 mode off Normal Mode") { event { Ongoing - Global; } conditions { Global Variable(oneVoneMode) == True; Or(Compare(Number of Living Players(All Teams), >, 2), Compare(Global Variable(matchStatus), ==, 0)) == True; Global Variable(mode) == 0; } actions { Wait(0.500, Abort When False); Set Global Variable(oneVoneMode, False); } } rule("1 vs 1 mode on Team Mode") { event { Ongoing - Global; } conditions { Number of Living Players(All Teams) <= Absolute Value(4); Global Variable(oneVoneMode) == False; Global Variable(matchStatus) == 1; Global Variable(mode) == 1; } actions { Wait(0.100, Abort When False); Set Global Variable(oneVoneMode, True); } } rule("1 vs 1 mode off Team Mode") { event { Ongoing - Global; } conditions { Global Variable(oneVoneMode) == True; Or(Compare(Number of Living Players(All Teams), >, 4), Compare(Global Variable(matchStatus), ==, 0)) == True; Global Variable(mode) == 1; } actions { Wait(0.500, Abort When False); Set Global Variable(oneVoneMode, False); } } rule("When 1 v 1 gets Enabled") { event { Ongoing - Global; } conditions { Is Game In Progress == True; Global Variable(oneVoneMode) == True; } actions { Set Ultimate Charge(All Living Players(All Teams), 100); Set Ability 2 Enabled(All Living Players(All Teams), True); Create Effect(All Players(All Teams), Cloud, White, Value In Array(Global Variable(arrayOfVectors), 0), Value In Array( Global Variable(arrayOfRadii), 0), Visible To Position and Radius); Set Global Variable(oneVoneEffects, Last Created Entity); Big Message(All Players(All Teams), String("{0} vs {1}", Value In Array(All Living Players(All Teams), 0), Value In Array( All Living Players(All Teams), 1), Null)); } } rule("When 1 v 1 gets Disabled") { event { Ongoing - Global; } conditions { Is Game In Progress == True; Global Variable(oneVoneMode) == False; } actions { Set Ultimate Charge(All Players(All Teams), 0); Set Ability 2 Enabled(All Players(All Teams), False); Destroy Effect(Global Variable(oneVoneEffects)); } } rule("Set ultUsed true when its used") { event { Ongoing - Each Player; All; All; } conditions { Is Using Ultimate(Event Player) == True; Player Variable(Event Player, ultUsed) == False; } actions { Set Player Variable(Event Player, ultUsed, True); } } rule("Refill Ult") { event { Ongoing - Each Player; All; All; } conditions { Player Variable(Event Player, ultUsed) == False; Global Variable(oneVoneMode) == True; } actions { Wait(1, Abort When False); Set Ultimate Charge(Event Player, 100); } } rule("Start Round, Ressurect and Teleport") { event { Ongoing - Global; } conditions { Global Variable(matchStatus) == 2; Global Variable(initiatedStart) == False; } actions { Set Global Variable(initiatedStart, True); Set Player Variable(All Players(All Teams), active, True); Resurrect(All Players(All Teams)); Teleport(All Players(All Teams), Value In Array(Global Variable(arrayOfVectors), 0)); Set Status(All Players(All Teams), Null, Rooted, 4); Set Status(All Players(All Teams), Null, Frozen, 4); Set Global Variable(oneVoneMode, False); Wait(0.010, Ignore Condition); Set Global Variable(matchStatus, 1); Set Global Variable(initiatedStart, False); Set Player Variable(All Players(All Teams), ultUsed, False); } } rule("End Round Mode 0") { event { Ongoing - Global; } conditions { Number of Living Players(All Teams) <= 1; Number of Dead Players(All Teams) >= 1; Global Variable(matchStatus) == 1; Global Variable(initiatedStart) == False; Global Variable(mode) == 0; } actions { Wait(0.100, Abort When False); Modify Player Variable(All Living Players(All Teams), roundsWon, Add, 1); Big Message(All Players(All Teams), String("{0} {1}", All Living Players(All Teams), String("Wins", Null, Null, Null), Null)); Modify Player Variable(All Players(All Teams), roundsPlayed, Add, 1); Wait(4, Ignore Condition); Set Global Variable(matchStatus, Global Variable(nextMatchStatus)); Set Match Time(900); } } rule("End Round Mode 1") { event { Ongoing - Global; } conditions { Number of Living Players(All Teams) <= 2; Number of Dead Players(All Teams) >= 2; Global Variable(matchStatus) == 1; Global Variable(initiatedStart) == False; Global Variable(mode) == 1; Or(Compare(Value In Array(All Living Players(All Teams), 0), ==, Player Variable(Value In Array(All Living Players(All Teams), 1), teammate)), Compare(Number of Living Players(All Teams), <=, 1)) == True; } actions { Wait(0.100, Abort When False); Modify Player Variable(All Living Players(All Teams), roundsWon, Add, 1); Big Message(All Players(All Teams), String("{0} {1}", String("{0} and {1}", Value In Array(All Living Players(All Teams), 0), Player Variable(Value In Array(All Living Players(All Teams), 0), teammate), Null), String("Win", Null, Null, Null), Null)); Modify Player Variable(All Players(All Teams), roundsPlayed, Add, 1); Wait(4, Ignore Condition); Set Global Variable(matchStatus, Global Variable(nextMatchStatus)); Set Match Time(900); } } disabled rule("### Kill Players out of Range ###") { event { Ongoing - Global; } } rule("Kill Player out of Arena") { event { Ongoing - Each Player; All; All; } conditions { Distance Between(Event Player, Value In Array(Global Variable(arrayOfVectors), 0)) >= Value In Array(Global Variable(arrayOfRadii), 0); Global Variable(matchStatus) == 1; Is Using Ultimate(Event Player) == False; Is Alive(Event Player) == True; } actions { Kill(Event Player, Player Variable(Event Player, killer)); } } rule("Kill Player stuck in Tower (exploit prevention)") { event { Ongoing - Each Player; All; All; } conditions { Distance Between(Event Player, Value In Array(Global Variable(arrayOfVectors), 1)) <= Value In Array(Global Variable(arrayOfRadii), 1); Global Variable(matchStatus) == 1; Is Alive(Event Player) == True; } actions { Kill(Event Player, Player Variable(Event Player, killer)); } } rule("Kill Player when standing below platform height (exploit prevention)") { event { Ongoing - Each Player; All; All; } conditions { Is On Ground(Event Player) == True; Y Component Of(Position Of(Event Player)) <= 38; Is Alive(Event Player) == True; Global Variable(matchStatus) == 1; } actions { Wait(1, Abort When False); Big Message(Event Player, String("Not Today", Null, Null, Null)); Kill(Event Player, Player Variable(Event Player, killer)); } } rule("Kill Player when not involved in Round") { event { Ongoing - Each Player; All; All; } conditions { Has Spawned(Event Player) == True; Player Variable(Event Player, active) == False; Global Variable(matchStatus) == 1; } actions { Kill(Event Player, Null); Disable Built-In Game Mode Respawning(Event Player); Enable Death Spectate All Players(Event Player); Enable Death Spectate Target HUD(Event Player); } } rule("Events when player dies and active") { event { Player Died; All; All; } conditions { Player Variable(Event Player, active) == True; } actions { Create Effect(All Players(All Teams), Bad Aura, Orange, Position Of(Event Player), 1, Visible To); Set Player Variable(Event Player, deathEffect, Last Created Entity); Set Player Variable(Event Player, active, False); Wait(2, Ignore Condition); Destroy Effect(Player Variable(Event Player, deathEffect)); Set Player Variable(Event Player, deathEffect, Null); Disable Built-In Game Mode Respawning(Event Player); Enable Death Spectate All Players(Event Player); Enable Death Spectate Target HUD(Event Player); } } rule("Kill Counter") { event { Player Earned Elimination; All; All; } actions { Modify Player Variable(Event Player, kills, Add, 1); } } disabled rule("### Scoring ###") { event { Ongoing - Global; } } rule("When Score below 0 -> set 0") { event { Ongoing - Global; } conditions { Global Variable(scoreType) < 0; } actions { Set Global Variable(scoreType, 0); } } rule("After Round calculate Skill rating (Infinite Match)") { event { Ongoing - Each Player; All; All; } conditions { Global Variable(matchStatus) == 2; Global Variable(scoreType) == 0; Global Variable(initiatedStart) == False; } actions { Set Player Variable(Event Player, score, Multiply(Divide(Player Variable(Event Player, roundsWon), Player Variable(Event Player, roundsPlayed)), 100)); Set Player Score(Event Player, Player Variable(Event Player, score)); } } rule("After Round set Scoring (limited Points)") { event { Ongoing - Each Player; All; All; } conditions { Global Variable(matchStatus) == 2; Global Variable(scoreType) > 0; Global Variable(initiatedStart) == False; } actions { Set Player Score(Event Player, Player Variable(Event Player, roundsWon)); } } rule("Declare win (limited Points)") { event { Ongoing - Each Player; All; All; } conditions { Global Variable(scoreType) != 0; Player Variable(Event Player, roundsWon) >= Global Variable(scoreType); } actions { Declare Player Victory(Event Player); } } disabled rule("### Doomfist Modifications ###") { event { Ongoing - Global; } } rule("Seismic Slam: stun for 2 secs") { event { Player Dealt Damage; All; All; } conditions { Is Using Ability 2(Attacker) == True; Player Variable(Attacker, teammate) != Victim; } actions { Set Status(Victim, Null, Stunned, 2); } } rule("Ultimate Ability: knockdown for 3 secs") { event { Player Dealt Damage; All; All; } conditions { Is Using Ultimate(Attacker) == True; Player Variable(Attacker, teammate) != Victim; } actions { Set Status(Victim, Null, Knocked Down, 3); } } rule("Register last PlayerDealtDamage as Killer") { event { Player Took Damage; All; All; } actions { Set Player Variable(Event Player, killer, Null); Wait(0.010, Ignore Condition); Set Player Variable(Event Player, killer, Attacker); } } rule("Decay Killer status after 5 secs") { event { Ongoing - Each Player; All; All; } conditions { Player Variable(Event Player, killer) != Null; } actions { Wait(5, Abort When False); Set Player Variable(Event Player, killer, Null); } } disabled rule("### Team Mode ###") { event { Ongoing - Global; } } rule("Global Variables Team") { event { Ongoing - Global; } conditions { Global Variable(mode) != 1; } actions { Set Player Variable(All Players(All Teams), teammate, Null); Destroy HUD Text(Player Variable(All Players(All Teams), mateHUD)); Set Player Variable(All Players(All Teams), mateHUD, Null); Set Global Variable(freePlayers, Empty Array); } } rule("Draw Teammate Hud for each player") { event { Ongoing - Each Player; All; All; } conditions { Global Variable(mode) == 1; Player Variable(Event Player, mateHUD) == Null; } actions { Create HUD Text(Event Player, String("{0}: {1}", Custom String("Teammate", Null, Null, Null), Player Variable(Event Player, teammate), Null), Null, Null, Left, 7, Sky Blue, Red, Red, Visible To and String, Default Visibility); Set Player Variable(Event Player, mateHUD, Last Text ID); } } rule("When Dynamic Teams Enabled Player") { event { Ongoing - Each Player; All; All; } conditions { Global Variable(dynamicTeams) == True; Global Variable(mode) == 1; Player Variable(Event Player, teammate) == Null; Array Contains(Global Variable(freePlayers), Event Player) == False; } actions { Wait(1, Abort When False); Modify Global Variable(freePlayers, Append To Array, Event Player); } } rule("When Dynamic Teams Disabled Player") { event { Ongoing - Global; } conditions { Is Game In Progress == True; } actions { Big Message(All Players(All Teams), Custom String("Welcome to Doomfist Sumo!", Null, Null, Null)); Create HUD Text(All Players(All Teams), Null, Custom String("Made by Crebos, Version 3.4", Null, Null, Null), Null, Right, 7, White, White, White, Visible To and String, Default Visibility); } } rule("When Dynamic Teams Enabled Global") { event { Ongoing - Global; } conditions { Global Variable(dynamicTeams) == True; Global Variable(retryDynamic) == True; Global Variable(mode) == 1; Count Of(Global Variable(freePlayers)) >= 2; } actions { Set Global Variable(retryDynamic, False); Set Player Variable(Value In Array(Global Variable(freePlayers), 0), teammate, Value In Array(Global Variable(freePlayers), 1)); Set Player Variable(Value In Array(Global Variable(freePlayers), 1), teammate, Value In Array(Global Variable(freePlayers), 0)); Wait(0.100, Ignore Condition); Set Global Variable(retryDynamic, True); } } rule("When Dynamic Teams Disabled Global") { event { Ongoing - Global; } conditions { Global Variable(dynamicTeams) == False; } actions { Set Global Variable(freePlayers, Empty Array); } } rule("Release Leaving Players from FreePlayers List (Dynamic Teams)") { event { Player Left Match; All; All; } conditions { Array Contains(Global Variable(freePlayers), Event Player) == True; Global Variable(mode) == 1; } actions { Modify Global Variable(freePlayers, Remove From Array By Value, Event Player); } } rule("Release mated Players from FreePlayers List (Dynamic Teams)") { event { Ongoing - Each Player; All; All; } conditions { Global Variable(mode) == 1; Player Variable(Event Player, teammate) != Null; Array Contains(Global Variable(freePlayers), Event Player) == True; } actions { Modify Global Variable(freePlayers, Remove From Array By Value, Event Player); } } rule("Search for Mate") { event { Ongoing - Each Player; All; All; } conditions { Player Variable(Event Player, searchForMate) == True; Global Variable(mode) == 1; } actions { Set Player Variable(Event Player, teammate, 0); Set Player Variable(Event Player, teammate, Closest Player To(Event Player, All Teams)); Set Player Variable(Event Player, searchForMate, False); } } rule("Teammate found") { event { Ongoing - Each Player; All; All; } conditions { Player Variable(Event Player, teammate) != Null; } actions { Wait(0.500, Abort When False); Small Message(Event Player, String("{0}: {1}", Custom String("Your Teammate is ", Null, Null, Null), Player Variable(Event Player, teammate), Null)); } } rule("Teammate effect") { event { Ongoing - Each Player; All; All; } conditions { Player Variable(Event Player, teammate) != Null; } actions { Create In-World Text(Player Variable(Event Player, teammate), String("Teammate", Null, Null, Null), Event Player, 1, Clip Against Surfaces, Visible To Position and String, Green, Default Visibility); } } rule("Teammate Lost") { event { Ongoing - Each Player; All; All; } conditions { Player Variable(Event Player, teammate) == Null; } actions { Small Message(Event Player, Custom String("You have no Teammate", Null, Null, Null)); } } rule("Remove teammate reference when hes not ingame") { event { Ongoing - Each Player; All; All; } conditions { Array Contains(All Players(All Teams), Player Variable(Event Player, teammate)) == False; } actions { Set Player Variable(Event Player, teammate, Null); } } rule("Check for Team errors and delete them") { event { Ongoing - Each Player; All; All; } conditions { Player Variable(Event Player, teammate) != Null; Player Variable(Player Variable(Event Player, teammate), teammate) != Event Player; Global Variable(mode) == 1; } actions { Wait(0.500, Abort When False); Set Player Variable(Event Player, teammate, Null); Small Message(Host Player, Custom String("Team Error! Enable Dynamic Teams!", Null, Null, Null)); } } rule("Events when teammate dies") { event { Player Died; All; All; } conditions { Player Variable(Event Player, teammate) != Null; Global Variable(mode) == 1; } actions { Big Message(Player Variable(Event Player, teammate), Custom String("Your Teammate Died!", Null, Null, Null)); } } disabled rule("### Custom Team Mode ###") { event { Ongoing - Global; } } rule("Activate customTeamMode (Ability 1 + Interact)") { event { Ongoing - Global; } conditions { Is Button Held(Host Player, Ability 1) == True; Is Button Held(Host Player, Interact) == True; Global Variable(mode) == 1; Global Variable(customTeamMode) == False; } actions { Set Global Variable(customTeamMode, True); Small Message(Host Player, Custom String("Custom Team Mode active! Select first Player", Null, Null, Null)); Set Status(Host Player, Null, Phased Out, 9999); Create In-World Text(All Players(All Teams), Custom String("IN MENU UNKILLABLE", Null, Null, Null), Host Player, 1, Clip Against Surfaces, Visible To Position and String, Red, Default Visibility); Set Global Variable(inMenuText, Last Text ID); } } rule("Cycle Tempplayer forward (Mouse1)") { event { Ongoing - Global; } conditions { Is Button Held(Host Player, Primary Fire) == True; Global Variable(customTeamMode) == True; Index Of Array Value(All Players(All Teams), Global Variable(tempplayer)) < Subtract(Count Of(All Players(All Teams)), 1); } actions { Set Global Variable(tempplayer, Value In Array(All Players(All Teams), Add(Index Of Array Value(All Players(All Teams), Global Variable(tempplayer)), 1))); Small Message(Host Player, String("{0} {1}", Global Variable(tempplayer), Custom String("selected", Null, Null, Null), Null)); } } rule("Cycle Tempplayer backward (Mouse2)") { event { Ongoing - Global; } conditions { Is Button Held(Host Player, Secondary Fire) == True; Global Variable(customTeamMode) == True; Index Of Array Value(All Players(All Teams), Global Variable(tempplayer)) > 0; } actions { Set Global Variable(tempplayer, Value In Array(All Players(All Teams), Subtract(Index Of Array Value(All Players(All Teams), Global Variable(tempplayer)), 1))); Small Message(Host Player, String("{0} {1}", Global Variable(tempplayer), Custom String("selected", Null, Null, Null), Null)); } } rule("Confirm Player add to Team") { event { Ongoing - Global; } conditions { Is Button Held(Host Player, Ability 2) == True; Is Button Held(Host Player, Interact) == True; Global Variable(customTeamMode) == True; Global Variable(tempplayer) != Null; Count Of(Global Variable(customTeam)) < 2; Array Contains(Global Variable(customTeam), Global Variable(tempplayer)) == False; } actions { Modify Global Variable(customTeam, Append To Array, Global Variable(tempplayer)); Small Message(Host Player, String("{0} {1}", Global Variable(tempplayer), Custom String(" Added", Null, Null, Null), Null)); Wait(0.016, Ignore Condition); Set Global Variable(tempplayer, Null); } } rule("Create Team when 2 Players confirmed") { event { Ongoing - Global; } conditions { Global Variable(customTeamMode) == True; Count Of(Global Variable(customTeam)) == 2; } actions { Set Player Variable(Value In Array(Global Variable(customTeam), 0), teammate, Value In Array(Global Variable(customTeam), 1)); Set Player Variable(Value In Array(Global Variable(customTeam), 1), teammate, Value In Array(Global Variable(customTeam), 0)); Small Message(Host Player, String("{0} {1}", String("{0} and {1}", Value In Array(Global Variable(customTeam), 0), Value In Array( Global Variable(customTeam), 1), Null), Custom String(" are in a Team", Null, Null, Null), Null)); Wait(0.016, Ignore Condition); Set Global Variable(customTeamMode, False); Set Global Variable(customTeam, Empty Array); Set Global Variable(tempplayer, Null); Clear Status(Host Player, Phased Out); Destroy In-World Text(Global Variable(inMenuText)); } } rule("Test Bots") { event { Ongoing - Global; } conditions { Is Game In Progress == True; } actions { Create Dummy Bot(Hero(Ana), All Teams, Add(Count Of(All Players(All Teams)), 1), Vector(0, 0, 0), Vector(0, 0, 0)); Create Dummy Bot(Hero(Ashe), All Teams, Add(Count Of(All Players(All Teams)), 1), Vector(0, 0, 0), Vector(0, 0, 0)); } }
View Fullscreen
Copy current Rule
Copy all Rules
Tags | sumo doomfist
Heroes | Doomfist
Maps | King's Row
Created at |
Last updated |
Current version | 3.4

17 Comments

Log in or Sign up to place a comment.
dynamicaljon

I’m having all kinds of issues with the latest patches, people dying at the start and real glitchy behavior, is there an updated one by chance?

dynamicaljon

I put 3.4.1 into the Wild with some fixes, i need to fix Ulting, in 3.4.2

crenix

There is currently a bug where there is a race condition between checking if a player should die and when the players are spawned, which randomly kills people when they spawn. This is due to too small of a Wait() in the "Start Round, Ressurect and Teleport". Changing it to Wait(2, Ignore Condition); seems to fix the issue since it delays setting the matchStatus to 1 so it doesn't kill people.

Also, doom sumo uses a sphere as the boundary, which makes for some unfortunate circumstances where you can die when you feel you shouldn't. How do you feel about using a polygon boundary? I believe I've seen one in another workshop before.

Zenofy

With the workshop maps and changes on the PTR, is it possible Sumo could be played on the new Island map?

Crebos

Ive looked at it and yea looks pretty good. I will make a new version as soon as it goes live, with multiple maps, and other small improvements. :)

Zenofy

Are there any more versions in the works? Love the gamemode, become a sort of household tradition to play this with friends now!

Would love to see a new map or something, a new arena would be awesome.

Crebos

Yes ill sure work on new versions in future

Unfortunately there are no other good maps suited for sumo, and I cannot modify maps to create own arenas.

Zenofy

Would you mind sharing any plans? If I recall, there's a mode called Sigma Dodgeball - that could be a good map for a larger Doomfist sumo match.

Affy

Hi, just to say a completely game braking glitch is that if the winner lands a meteor strike just as the game is ending the next round will be in the lobby not the rooftop but none of the functions work anymore.

Affy

Btw it’s kinda hard to pull off but happens accidentally surprisingly often

Crebos

Hello thanks for telling
Cant quite retrace what you mean. Are you sure you are using the original Version and not a modified one?
I'd love if you could reproduce and show what you mean. My blizz Tag is Crebos#2206 just add and text me

mitsiee

I think I liked the scoring system in 2.5 better. I suppose the new system is more fair with randoms dropping in and out, but when you're with a group of friends is nice to work towards a goal. Which is much harder with the current Winrate score.

Crebos

Hello mitsiee thanks for your Feedback. You are totally right, I now added a Configuration option, to easily change it. Check out version 2.7 :)

firzen

Hey, really enjoying this mode.
However, I cannot find the option to turn off the match to be infinite.

I changed the deathmatch scsores to win to 1 but it still continues after someone has score 1

mitsiee

You could try adding something like this to the "Kill Counter" rule:


actions
{
Skip If(Compare(Player Variable(Event Player, B), <, 10), 1);
Declare Player Victory(Event Player);
}

Where "10" is the number of wins required to win. I'm not entirely certain if that will work, but it's worth a try.

Crebos

It would work yes

Crebos

Hello firzen thanks for your Feedback.
I now have added a configuration option in the Workshop, to easily change the mode from infinite to deathmatch mode. Check out version 2.7 :) (how it works is explained on the bottom)

Workshop.codes - Background image