Create
Return to post

Comparing difference between and

View raw
  • settings
  • {
  • main
  • {
  • Description: "Great Over Watch Off (code 2177F): A three-round deathmatch inspired by a certain UK baking program. Compete in signature, technical and showstopper challenges. Don't be the soggy bottom or cause a Bingate...or should you? Version 1.1.1 (2021-03-16) by kdau#1430. More info at https://workshop.codes/2177F"
  • Description: "Great Over Watch Off (code 2177F): A three-round deathmatch inspired by a certain UK baking program. Compete in signature, technical and showstopper challenges. Don't be the soggy bottom or cause a Bingate...or should you? Version 1.1.0 (2020-03-05) by kdau#1430. More info at https://workshop.codes/2177F"
  • }
  • lobby
  • {
  • Max FFA Players: 12
  • Max FFA Players: 8
  • Max Spectators: 4
  • }
  • modes
  • {
  • General
  • {
  • Allow Hero Switching: Off
  • Game Length In Minutes: 9
  • Game Mode Start: Immediately
  • Hero Limit: Off
  • }
  • Deathmatch
  • {
  • Score To Win: 50
  • enabled maps
  • {
  • Black Forest
  • Castillo
  • Château Guillard
  • Ecopoint: Antarctica
  • Kanezaka
  • Necropolis
  • Petra
  • }
  • }
  • }
  • heroes
  • {
  • General
  • {
  • Ability Cooldown Time: 50%
  • Ultimate Ability: Off
  • Ultimate Generation: 500%
  • Ana
  • {
  • No Automatic Fire: On
  • Quick Melee: Off
  • }
  • Ashe
  • {
  • No Automatic Fire: On
  • Quick Melee: Off
  • }
  • Brigitte
  • {
  • Primary Fire: Off
  • Quick Melee: Off
  • Repair Pack: Off
  • }
  • D.va
  • {
  • Micro Missiles Cooldown Time: 33%
  • Primary Fire: Off
  • Quick Melee: Off
  • }
  • Doomfist
  • {
  • Primary Fire: Off
  • Quick Melee: Off
  • Rocket Punch Cooldown Time: 125%
  • }
  • Echo
  • {
  • Primary Fire: Off
  • Quick Melee: Off
  • }
  • Genji
  • {
  • Primary Fire: Off
  • Quick Melee: Off
  • }
  • Hanzo
  • {
  • Primary Fire: Off
  • Quick Melee: Off
  • }
  • Junkrat
  • {
  • Primary Fire: Off
  • Quick Melee: Off
  • }
  • Lúcio
  • {
  • Damage Dealt: 250%
  • Primary Fire: Off
  • Quick Melee: Off
  • }
  • Mccree
  • {
  • Damage Dealt: 70%
  • Primary Fire: Off
  • Quick Melee: Off
  • }
  • Mei
  • {
  • Cryo-Freeze Cooldown Time: 75%
  • Damage Dealt: 125%
  • Quick Melee: Off
  • Secondary Fire: Off
  • Weapon Freeze Duration Scalar: 110%
  • }
  • Moira
  • {
  • Biotic Orb Cooldown Time: 40%
  • Biotic Orb Max Damage Scalar: 120%
  • Primary Fire: Off
  • Quick Melee: Off
  • Secondary Fire: Off
  • }
  • Reinhardt
  • {
  • Primary Fire: Off
  • Quick Melee: Off
  • }
  • Roadhog
  • {
  • Quick Melee: Off
  • Secondary Fire: Off
  • }
  • Sigma
  • {
  • Accretion Cooldown Time: 20%
  • Primary Fire: Off
  • Quick Melee: Off
  • }
  • Soldier: 76
  • {
  • Biotic Field Cooldown Time: 75%
  • Helix Rockets Cooldown Time: 45%
  • Primary Fire: Off
  • Quick Melee: Off
  • }
  • Symmetra
  • {
  • Damage Dealt: 85%
  • Primary Fire: Off
  • Quick Melee: Off
  • Sentry Turret Cooldown Time: 120%
  • }
  • Torbjörn
  • {
  • Quick Melee: Off
  • Weapons Enabled: Forge Hammer Only
  • }
  • Tracer
  • {
  • Damage Dealt: 150%
  • Primary Fire: Off
  • }
  • Widowmaker
  • {
  • Ammunition Clip Size Scalar: 29%
  • Damage Dealt: 80%
  • No Automatic Fire: On
  • Quick Melee: Off
  • }
  • Winston
  • {
  • Damage Dealt: 200%
  • Primary Fire: Off
  • }
  • Wrecking Ball
  • {
  • Damage Dealt: 135%
  • Primary Fire: Off
  • Quick Melee: Off
  • Roll Always Active: On
  • }
  • Zarya
  • {
  • Damage Dealt: 110%
  • Primary Fire: Off
  • Projected Barrier: Off
  • Quick Melee: Off
  • }
  • Zenyatta
  • {
  • Ammunition Clip Size Scalar: 75%
  • Damage Dealt: 70%
  • Orb Of Harmony: Off
  • Primary Fire: Off
  • Quick Melee: Off
  • }
  • disabled heroes
  • {
  • Baptiste
  • Bastion
  • Mercy
  • Orisa
  • Pharah
  • Reaper
  • Sombra
  • }
  • }
  • }
  • }
  • variables
  • {
  • global:
  • 0: _extendedGlobalCollection
  • 1: _arrayBuilder
  • 2: ChallengeDuration
  • 3: Challenge
  • 4: UnusedHeroes
  • 5: TechnicalHero
  • 6: InstructionsID
  • 7: RecognizeSoggyBottom
  • 8: SoggyBottomImmortalityDuration
  • 9: CurrentSoggyBottom
  • 10: LastSoggyBottomChange
  • 11: RecognizeBingate
  • 12: BingateBonusPoints
  • 13: BingateAttacker
  • 14: BingateVictim
  • 15: TestingCommands
  • 16: DummyBots
  • 17: RecognizeSelfDamage
  • 18: spawnCount
  • 19: i
  • 20: player
  • 21: maxDeaths
  • 22: candidates
  • 23: newSoggyBottom
  • player:
  • 0: _extendedPlayerCollection
  • 1: ChosenHero
  • 2: KillsInChallenge
  • 3: DeathsInChallenge
  • 4: LastDeathTime
  • 5: LastKiller
  • 6: SoggyBottomEffect
  • }
  • // Extended collection variables:
  • // global [0]: _arrayBuilderStore
  • // global [1]: foreachIndex,
  • // Class identifiers:
  • subroutines
  • {
  • 0: FindUnusedHeroes
  • 1: SetUpChallenge
  • 2: CleanUpSoggyBottom
  • 3: SpawnDummies
  • 4: IntroduceChallenge
  • 5: ResetPrimaryFire
  • 6: UpdateSoggyBottom
  • 7: AnnounceBingate
  • }
  • rule("Sub: Find Unused Heroes")
  • {
  • event
  • {
  • Subroutine;
  • FindUnusedHeroes;
  • }
  • // Action count: 3
  • actions
  • {
  • Set Global Variable(UnusedHeroes, Randomized Array(Allowed Heroes(Host Player)));
  • Modify Global Variable(UnusedHeroes, Remove From Array By Value, Mapped Array(All Players(Team(All)), Hero Of(Current Array Element)));
  • Modify Global Variable(UnusedHeroes, Remove From Array By Value, Array(Hero(D.va), Hero(Tracer), Hero(Winston)));
  • }
  • }
  • rule("Global: Set Up the Match")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global Variable(Challenge) == Null;
  • }
  • // Action count: 25
  • // Action count: 22
  • actions
  • {
  • Set Global Variable(ChallengeDuration, Multiply(60, Workshop Setting Integer(Custom String("General", Null, Null, Null), Custom String("Challenge Duration (Minutes)", Null, Null, Null), 3, 1, 10, 0)));
  • Create HUD Text(All Players(Team(All)), Null, Null, Custom String("Great Over Watch Off", Null, Null, Null), Left, 0.1, Color(Blue), Color(Blue), Color(Blue), Visible To, Visible Always);
  • Create HUD Text(All Players(Team(All)), Null, Custom String("Creator: kdau#1430\nWorkshop Code: 2177F\n", Null, Null, Null), Null, Left, 0.2, Color(Blue), Color(Blue), Color(Blue), Visible To, Visible Always);
  • Create HUD Text(All Players(Team(All)), Null, Custom String(".", Null, Null, Null), Null, Right, 0.1, Color(White), Color(White), Color(White), Visible To, Visible Always);
  • Set Global Variable(ChallengeDuration, Workshop Setting Integer(Custom String("General", Null, Null, Null), Custom String("Challenge Duration (Minutes)", Null, Null, Null), 3, 1, 10, 0));
  • Set Global Variable(RecognizeSoggyBottom, Workshop Setting Toggle(Custom String("General", Null, Null, Null), Custom String("Recognize Soggy Bottoms", Null, Null, Null), True, 101));
  • Set Global Variable(SoggyBottomImmortalityDuration, Workshop Setting Integer(Custom String("General", Null, Null, Null), Custom String("Soggy Bottom Immortality (Seconds)", Null, Null, Null), 15, 0, 60, 102));
  • If(Not(Global Variable(RecognizeSoggyBottom)));
  • Skip(2);
  • End;
  • Create HUD Text(If-Then-Else(Compare(Global Variable(Challenge), !=, 3), All Players(Team(All)), Empty Array), Custom String("Soggy Bottom", Null, Null, Null), Custom String("- Most deaths this challenge\n- Gets wallhacks\n- Immortal for {0} sec (aura)", Global Variable(SoggyBottomImmortalityDuration), Null, Null), If-Then-Else(Compare(Global Variable(CurrentSoggyBottom), !=, Null), Custom String("{0} {1}", Hero Icon String(Hero Of(Global Variable(CurrentSoggyBottom))), Global Variable(CurrentSoggyBottom), Null), Custom String("{0} (None Yet)", Icon String(No), Null, Null)), Right, 0.2, Color(Aqua), Color(Aqua), Color(Aqua), Visible To And String, Visible Always);
  • Create HUD Text(If-Then-Else(Compare(Global Variable(Challenge), !=, 3), All Players(Team(All)), Empty Array), Custom String("Soggy Bottom", Null, Null, Null), Custom String("- Most deaths this challenge\n- Gets wallhacks\n- Immortal for {0} sec (aura)", Global Variable(SoggyBottomImmortalityDuration), Null, Null), If-Then-Else(Compare(Global Variable(CurrentSoggyBottom), !=, Null), Custom String("{0} {1}", Hero Icon String(Hero Of(Global Variable(CurrentSoggyBottom))), Global Variable(CurrentSoggyBottom), Null), Custom String("{0} (None Yet)", Icon String(No), Null, Null)), Right, 0.1, Color(Aqua), Color(Aqua), Color(Aqua), Visible To And String, Visible Always);
  • Set Global Variable(RecognizeBingate, Workshop Setting Toggle(Custom String("General", Null, Null, Null), Custom String("Recognize Bingates", Null, Null, Null), True, 201));
  • Set Global Variable(BingateBonusPoints, Workshop Setting Integer(Custom String("General", Null, Null, Null), Custom String("Bingate Bonus Points", Null, Null, Null), 1, -1, 3, 202));
  • If(Not(Global Variable(RecognizeBingate)));
  • Skip(2);
  • End;
  • Create HUD Text(If-Then-Else(Compare(Global Variable(Challenge), ==, 3), All Players(Team(All)), Empty Array), Custom String("Bingate", Null, Null, Null), Custom String("- Ult shutdown by final blow\n- {0} bonus point(s) for killer\nMost recent:", Global Variable(BingateBonusPoints), Null, Null), If-Then-Else(Compare(Global Variable(BingateAttacker), !=, Null), Custom String("{0} {1} {2}", Global Variable(BingateAttacker), Icon String(X), Global Variable(BingateVictim)), Custom String("{0} (None Yet)", Icon String(No), Null, Null)), Right, 0.2, Color(Purple), Color(Purple), Color(Purple), Visible To And String, Visible Always);
  • Create HUD Text(If-Then-Else(Compare(Global Variable(Challenge), ==, 3), All Players(Team(All)), Empty Array), Custom String("Bingate", Null, Null, Null), Custom String("- Ult shutdown by final blow\n- {0} bonus point(s) for killer\nMost recent:", Global Variable(BingateBonusPoints), Null, Null), If-Then-Else(Compare(Global Variable(BingateAttacker), !=, Null), Custom String("{0} {1} {2}", Global Variable(BingateAttacker), Icon String(X), Global Variable(BingateVictim)), Custom String("{0} (None Yet)", Icon String(No), Null, Null)), Right, 0.1, Color(Purple), Color(Purple), Color(Purple), Visible To And String, Visible Always);
  • Set Global Variable(TestingCommands, Workshop Setting Toggle(Custom String("Testing", Null, Null, Null), Custom String("Allow Testing Commands", Null, Null, Null), False, 0));
  • Set Global Variable(DummyBots, Workshop Setting Toggle(Custom String("Testing", Null, Null, Null), Custom String("Spawn Placeholder Bots", Null, Null, Null), False, 1));
  • Set Global Variable(RecognizeSelfDamage, Workshop Setting Toggle(Custom String("Testing", Null, Null, Null), Custom String("Recognize Self-Damage Deaths", Null, Null, Null), False, 2));
  • Disable Built-In Game Mode Completion;
  • Disable Built-In Game Mode Announcer;
  • Wait Until(Is Game In Progress, 99999);
  • Wait Until(Is True For All(All Players(Team(All)), Has Spawned(Current Array Element)), 3);
  • Call Subroutine(FindUnusedHeroes);
  • Set Global Variable(Challenge, -1);
  • }
  • }
  • rule("Player: Set Up the Match")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • // Action count: 2
  • actions
  • {
  • Create HUD Text(Event Player, Null, Custom String("Kills in Challenge", Null, Null, Null), Player Variable(Event Player, KillsInChallenge), Left, 1, Color(White), Color(White), Color(White), Visible To And String, Default Visibility);
  • Create HUD Text(Event Player, Null, Custom String("Deaths in Challenge", Null, Null, Null), Player Variable(Event Player, DeathsInChallenge), Left, 2, Color(White), Color(White), Color(White), Visible To And String, Default Visibility);
  • Create HUD Text(Event Player, Null, Custom String("Kills in Challenge", Null, Null, Null), Player Variable(Event Player, KillsInChallenge), Left, 0, Color(White), Color(White), Color(White), Visible To And String, Default Visibility);
  • Create HUD Text(Event Player, Null, Custom String("Deaths in Challenge", Null, Null, Null), Player Variable(Event Player, DeathsInChallenge), Left, 1, Color(White), Color(White), Color(White), Visible To And String, Default Visibility);
  • }
  • }
  • rule("Sub: Clean Up from Soggy Bottom")
  • {
  • event
  • {
  • Subroutine;
  • CleanUpSoggyBottom;
  • }
  • // Action count: 7
  • actions
  • {
  • If(Compare(Global Variable(CurrentSoggyBottom), !=, Null));
  • Destroy Effect(Player Variable(Global Variable(CurrentSoggyBottom), SoggyBottomEffect));
  • Set Player Variable(Global Variable(CurrentSoggyBottom), SoggyBottomEffect, Null);
  • Stop Forcing Player Outlines(All Players(Team(All)), Global Variable(CurrentSoggyBottom));
  • Clear Status(Global Variable(CurrentSoggyBottom), Unkillable);
  • Set Global Variable(CurrentSoggyBottom, Null);
  • End;
  • }
  • }
  • rule("Sub: Set Up a Challenge")
  • {
  • event
  • {
  • Subroutine;
  • SetUpChallenge;
  • }
  • // Action count: 10
  • actions
  • {
  • Pause Match Time;
  • Set Match Time(Global Variable(ChallengeDuration));
  • Set Match Time(Multiply(Global Variable(ChallengeDuration), 60));
  • Wait Until(Compare(Match Time, >, 1), 99999);
  • Set Global Variable At Index(_extendedGlobalCollection, 1, 0);
  • While(Compare(Value In Array(Global Variable(_extendedGlobalCollection), 1), <, Count Of(All Players(Team(All)))));
  • Set Player Variable(Value In Array(All Players(Team(All)), Value In Array(Global Variable(_extendedGlobalCollection), 1)), DeathsInChallenge, 0);
  • Set Player Variable(Value In Array(All Players(Team(All)), Value In Array(Global Variable(_extendedGlobalCollection), 1)), KillsInChallenge, 0);
  • Modify Global Variable At Index(_extendedGlobalCollection, 1, Add, 1);
  • End;
  • Call Subroutine(CleanUpSoggyBottom);
  • }
  • }
  • rule("Sub: Spawn Dummy Bots (for testing only)")
  • {
  • event
  • {
  • Subroutine;
  • SpawnDummies;
  • }
  • // Action count: 9
  • actions
  • {
  • If(Not(Global Variable(DummyBots)));
  • Skip(7);
  • End;
  • Destroy All Dummy Bots;
  • Wait Until(Compare(Count Of(Filtered Array(All Players(Team(All)), Is Dummy Bot(Current Array Element))), ==, 0), 99999);
  • Wait Until(Compare(Count Of(Filtered Array(All Players(Team(All)), Is Dummy Bot(Current Array Element))), ==, 0), 3);
  • Set Global Variable(spawnCount, Subtract(8, Number Of Players(Team(All))));
  • For Global Variable(i, 0, Global Variable(spawnCount), 1);
  • Create Dummy Bot(If-Then-Else(Compare(Global Variable(Challenge), ==, 2), Global Variable(TechnicalHero), Value In Array(Global Variable(UnusedHeroes), Global Variable(i))), Team(All), -1, Value In Array(Spawn Points(Team(All)), Global Variable(i)), Vector(0, 0, 0));
  • End;
  • }
  • }
  • rule("Sub: Introduce a Challenge")
  • {
  • event
  • {
  • Subroutine;
  • IntroduceChallenge;
  • }
  • // Action count: 24
  • actions
  • {
  • Pause Match Time;
  • Wait Until(Is True For All(All Players(Team(All)), Has Spawned(Current Array Element)), 3);
  • Disable Hero HUD(All Players(Team(All)));
  • Disable Game Mode HUD(All Players(Team(All)));
  • Destroy HUD Text(Global Variable(InstructionsID));
  • If(Compare(Global Variable(Challenge), ==, 1));
  • Create HUD Text(All Players(Team(All)), Custom String("Signature Challenge", Null, Null, Null), Custom String("- Primary Fire: no\n- Abilities: yes, more often\n- Quick Melee: Tracer, Winston\n- Ultimate: no", Null, Null, Null), Null, Right, 0, Color(Green), Color(Green), Color(Green), Visible To And String, Visible Always);
  • Else If(Compare(Global Variable(Challenge), ==, 2));
  • Create HUD Text(All Players(Team(All)), Custom String("Technical Challenge", Null, Null, Null), Custom String("- Hero: {0}\n- Primary Fire: no\n- Abilities: yes, more often\n- Quick Melee, Ultimate: no", Global Variable(TechnicalHero), Null, Null), Null, Right, 0, Color(Yellow), Color(Yellow), Color(Yellow), Visible To And String, Visible Always);
  • Else;
  • Create HUD Text(All Players(Team(All)), Custom String("Showstopper Challenge", Null, Null, Null), Custom String("- Primary Fire: no\n- Abilities: yes, more often\n- Quick Melee: Tracer, Winston\n- Ultimate: yes, much faster", Null, Null, Null), Null, Right, 0, Color(Red), Color(Red), Color(Red), Visible To And String, Visible Always);
  • End;
  • Set Global Variable(InstructionsID, Last Text ID);
  • Start Camera(All Players(Team(All)), Vector(0, 100, 0), Vector(0, 120, 0), 0);
  • Wait(0.25, Ignore Condition);
  • Play Effect(All Players(Team(All)), Buff Impact Sound, Color(White), Vector(0, 110, 0), 100);
  • Big Message(All Players(Team(All)), If-Then-Else(Compare(Global Variable(Challenge), ==, 1), Custom String("Signature Challenge", Null, Null, Null), If-Then-Else(Compare(Global Variable(Challenge), ==, 2), Custom String("Technical Challenge", Null, Null, Null), Custom String("Showstopper Challenge", Null, Null, Null))));
  • Wait(0.5, Ignore Condition);
  • Small Message(All Players(Team(All)), If-Then-Else(Compare(Global Variable(Challenge), ==, 1), Custom String("No Primary/Unscoped Fire\nFocus on Your Abilities", Null, Null, Null), If-Then-Else(Compare(Global Variable(Challenge), ==, 2), Custom String("Everyone is {0}\nFocus on {0}'s Abilities", Global Variable(TechnicalHero), Null, Null), Custom String("Rapid Ultimate Charge\nFocus on Your Ultimate", Null, Null, Null))));
  • Wait(2.25, Ignore Condition);
  • Stop Camera(All Players(Team(All)));
  • Enable Hero HUD(All Players(Team(All)));
  • Enable Game Mode HUD(All Players(Team(All)));
  • Unpause Match Time;
  • }
  • }
  • rule("Global: Signature Challenge (1/3)")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global Variable(Challenge) == -1;
  • }
  • // Action count: 4
  • actions
  • {
  • Call Subroutine(SetUpChallenge);
  • Set Global Variable(Challenge, 1);
  • Call Subroutine(SpawnDummies);
  • Call Subroutine(IntroduceChallenge);
  • }
  • }
  • rule("Player: Signature Challenge (1/3)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global Variable(Challenge) == 1;
  • Not(Is Dummy Bot(Event Player)) == True;
  • }
  • // Action count: 2
  • actions
  • {
  • Wait Until(Array Contains(All Heroes, Hero Of(Event Player)), Subtract(Global Variable(ChallengeDuration), 1));
  • Wait Until(Array Contains(All Heroes, Hero Of(Event Player)), 3);
  • Set Player Variable(Event Player, ChosenHero, Hero Of(Event Player));
  • }
  • }
  • rule("Global: Technical Challenge (2/3)")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global Variable(Challenge) == 1;
  • Match Time <= 0.1;
  • }
  • // Action count: 6
  • actions
  • {
  • Call Subroutine(SetUpChallenge);
  • Call Subroutine(FindUnusedHeroes);
  • Set Global Variable(TechnicalHero, Random Value In Array(Global Variable(UnusedHeroes)));
  • Set Global Variable(Challenge, 2);
  • Call Subroutine(SpawnDummies);
  • Call Subroutine(IntroduceChallenge);
  • }
  • }
  • rule("Sub: Reset the Primary Fire Status")
  • {
  • event
  • {
  • Subroutine;
  • ResetPrimaryFire;
  • }
  • // Action count: 1
  • actions
  • {
  • Set Primary Fire Enabled(Global Variable(player), Array Contains(Array(Hero(Ana), Hero(Ashe), Hero(Mei), Hero(Roadhog), Hero(Torbjörn), Hero(Widowmaker)), Hero Of(Global Variable(player))));
  • Set Primary Fire Enabled(Global Variable(player), Array Contains(Array(Hero(Ana), Hero(Ashe), Hero(Mei), Hero(Roadhog), Hero(Torbjörn), Hero(Widowmaker)), Global Variable(player)));
  • }
  • }
  • rule("Player: Technical Challenge (2/3)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global Variable(Challenge) == 2;
  • Not(Is Dummy Bot(Event Player)) == True;
  • }
  • // Action count: 8
  • actions
  • {
  • Start Forcing Player To Be Hero(Event Player, Global Variable(TechnicalHero));
  • Respawn(Event Player);
  • Wait Until(Has Spawned(Event Player), 3);
  • Wait(0.25, Ignore Condition);
  • Set Global Variable(player, Event Player);
  • Call Subroutine(ResetPrimaryFire);
  • Set Ultimate Charge(Event Player, 0);
  • Set Ultimate Ability Enabled(Event Player, False);
  • }
  • }
  • rule("Global: Showstopper Challenge (3/3)")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global Variable(Challenge) == 2;
  • Match Time <= 0.1;
  • }
  • // Action count: 4
  • actions
  • {
  • Call Subroutine(SetUpChallenge);
  • Set Global Variable(Challenge, 3);
  • Call Subroutine(SpawnDummies);
  • Call Subroutine(IntroduceChallenge);
  • }
  • }
  • rule("Player: Showstopper Challenge (3/3)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global Variable(Challenge) == 3;
  • Not(Is Dummy Bot(Event Player)) == True;
  • }
  • // Action count: 8
  • actions
  • {
  • Start Forcing Player To Be Hero(Event Player, Player Variable(Event Player, ChosenHero));
  • Respawn(Event Player);
  • Wait Until(Has Spawned(Event Player), 3);
  • Wait(0.25, Ignore Condition);
  • Set Global Variable(player, Event Player);
  • Call Subroutine(ResetPrimaryFire);
  • Set Ultimate Ability Enabled(Event Player, True);
  • Set Ultimate Charge(Event Player, 100);
  • }
  • }
  • rule("Global: Finish the Match")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global Variable(Challenge) == 3;
  • Match Time <= 0.1;
  • }
  • // Action count: 3
  • actions
  • {
  • Set Global Variable(Challenge, -99);
  • Enable Built-In Game Mode Announcer;
  • Enable Built-In Game Mode Completion;
  • }
  • }
  • rule("Sub: Update the Soggy Bottom")
  • {
  • event
  • {
  • Subroutine;
  • UpdateSoggyBottom;
  • }
  • // Action count: 27
  • actions
  • {
  • If(Not(Global Variable(RecognizeSoggyBottom)));
  • Skip(25);
  • End;
  • Set Global Variable(maxDeaths, Last Of(Sorted Array(Mapped Array(All Players(Team(All)), Player Variable(Current Array Element, DeathsInChallenge)), Current Array Element)));
  • Set Global Variable(candidates, Filtered Array(All Players(Team(All)), Compare(Player Variable(Current Array Element, DeathsInChallenge), ==, Global Variable(maxDeaths))));
  • Set Global Variable(newSoggyBottom, Last Of(Sorted Array(Global Variable(candidates), Player Variable(Current Array Element, LastDeathTime))));
  • If(Compare(Player Variable(Global Variable(newSoggyBottom), DeathsInChallenge), ==, 0));
  • Set Global Variable(newSoggyBottom, Null);
  • End;
  • If(Compare(Global Variable(CurrentSoggyBottom), ==, Global Variable(newSoggyBottom)));
  • Skip(16);
  • End;
  • If(Compare(Total Time Elapsed, <, Add(Global Variable(LastSoggyBottomChange), 10)));
  • Skip(13);
  • End;
  • Set Global Variable(LastSoggyBottomChange, Total Time Elapsed);
  • Call Subroutine(CleanUpSoggyBottom);
  • Set Global Variable(CurrentSoggyBottom, Global Variable(newSoggyBottom));
  • Start Forcing Player Outlines(All Living Players(Team(All)), Global Variable(CurrentSoggyBottom), True, Color(Red), Always);
  • Wait Until(Is Alive(Global Variable(CurrentSoggyBottom)), Global Variable(SoggyBottomImmortalityDuration));
  • Big Message(Global Variable(CurrentSoggyBottom), Custom String("You are the Soggy Bottom", Null, Null, Null));
  • Small Message(Global Variable(CurrentSoggyBottom), Custom String("Enjoy wallhacks and {0} seconds of immortality!", Global Variable(SoggyBottomImmortalityDuration), Null, Null));
  • If(Compare(Global Variable(SoggyBottomImmortalityDuration), >, 0));
  • Set Status(Global Variable(CurrentSoggyBottom), Null, Unkillable, Global Variable(SoggyBottomImmortalityDuration));
  • Create Effect(If-Then-Else(Is Alive(Global Variable(CurrentSoggyBottom)), All Players(Team(All)), Empty Array), Bad Aura, Color(Aqua), Global Variable(CurrentSoggyBottom), 1, Visible To Position and Radius);
  • Set Player Variable(Global Variable(CurrentSoggyBottom), SoggyBottomEffect, Last Created Entity);
  • End;
  • }
  • }
  • rule("Player: Handle Death")
  • {
  • event
  • {
  • Player died;
  • All;
  • All;
  • }
  • conditions
  • {
  • Or(Global Variable(RecognizeSelfDamage), Compare(Attacker, !=, Victim)) == True;
  • }
  • // Action count: 7
  • actions
  • {
  • Set Player Variable(Victim, LastDeathTime, Total Time Elapsed);
  • Set Player Variable(Victim, LastKiller, Attacker);
  • Modify Player Variable(Victim, DeathsInChallenge, Add, 1);
  • Modify Player Variable(Attacker, KillsInChallenge, Add, 1);
  • If(Compare(Global Variable(Challenge), !=, 3));
  • Call Subroutine(UpdateSoggyBottom);
  • End;
  • }
  • }
  • rule("Player: Clean Up Soggy Bottom Effect")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Player Variable(Event Player, SoggyBottomEffect) != Null;
  • }
  • // Action count: 3
  • actions
  • {
  • Wait(Global Variable(SoggyBottomImmortalityDuration), Abort When False);
  • Destroy Effect(Player Variable(Event Player, SoggyBottomEffect));
  • Set Player Variable(Event Player, SoggyBottomEffect, Null);
  • }
  • }
  • rule("Sub: Announce a Bingate")
  • {
  • event
  • {
  • Subroutine;
  • AnnounceBingate;
  • }
  • // Action count: 7
  • actions
  • {
  • If(Not(Global Variable(RecognizeBingate)));
  • Skip(5);
  • End;
  • Wait(1, Ignore Condition);
  • Modify Player Score(Global Variable(BingateAttacker), Global Variable(BingateBonusPoints));
  • Small Message(Global Variable(BingateAttacker), Custom String("Bingate Kill of {0} {1}!\n{2} Bonus Point(s) for Ultimate Shutdown", Hero Icon String(Hero Of(Global Variable(BingateVictim))), Global Variable(BingateVictim), Global Variable(BingateBonusPoints)));
  • Play Effect(Global Variable(BingateAttacker), Good Pickup Effect, Color(Purple), Add(Eye Position(Global Variable(BingateAttacker)), Facing Direction Of(Global Variable(BingateAttacker))), 3);
  • }
  • }
  • rule("Player: Handle End of Ultimate")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Not(Is Using Ultimate(Event Player)) == True;
  • }
  • // Action count: 5
  • actions
  • {
  • If(And(And(Compare(Global Variable(Challenge), ==, 3), Global Variable(RecognizeBingate)), Compare(Player Variable(Event Player, LastDeathTime), ==, Total Time Elapsed)));
  • Set Global Variable(BingateAttacker, Player Variable(Event Player, LastKiller));
  • Set Global Variable(BingateVictim, Event Player);
  • Call Subroutine(AnnounceBingate);
  • End;
  • }
  • }
  • rule("Hero: Brigitte: Shield Bash deals more damage")
  • {
  • event
  • {
  • Player dealt damage;
  • All;
  • Brigitte;
  • }
  • conditions
  • {
  • Event Ability == Button(Primary Fire);
  • Is Firing Secondary(Event Player) == True;
  • }
  • // Action count: 1
  • actions
  • {
  • Damage(Victim, Attacker, Subtract(50, Event Damage));
  • }
  • }
  • rule("Hero: D.Va: Light Gun and Call Mech allowed while out of mech")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • D.va;
  • }
  • conditions
  • {
  • Is In Alternate Form(Event Player) == True;
  • }
  • // Action count: 2
  • actions
  • {
  • Set Primary Fire Enabled(Event Player, True);
  • Set Ultimate Ability Enabled(Event Player, True);
  • }
  • }
  • rule("Hero: D.Va: Turn primary fire and ultimate back off when remeched")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • D.va;
  • }
  • conditions
  • {
  • Not(Is In Alternate Form(Event Player)) == True;
  • }
  • // Action count: 6
  • actions
  • {
  • Set Primary Fire Enabled(Event Player, False);
  • Wait(0.25, Abort When False);
  • If(Compare(Global Variable(Challenge), !=, 3));
  • Set Ultimate Charge(Event Player, 0);
  • Set Ultimate Ability Enabled(Event Player, False);
  • End;
  • }
  • }
  • rule("Hero: McCree: Deadeye deals regular damage")
  • {
  • event
  • {
  • Player dealt damage;
  • All;
  • Mccree;
  • }
  • conditions
  • {
  • Is Using Ultimate(Event Player) == True;
  • }
  • // Action count: 1
  • actions
  • {
  • Damage(Victim, Attacker, Divide(Multiply(Event Damage, 3), 7));
  • }
  • }
  • rule("Hero: Soldier: Helix Rockets don't deal self-damage")
  • {
  • event
  • {
  • Player took damage;
  • All;
  • Soldier: 76;
  • }
  • conditions
  • {
  • Attacker == Victim;
  • Event Ability == Button(Secondary Fire);
  • }
  • // Action count: 1
  • actions
  • {
  • Heal(Event Player, Null, Event Damage);
  • }
  • }
  • rule("Player: Deal Huge Self-Damage [key Interact+Crouch]")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Interact)) == True;
  • Is Button Held(Event Player, Button(Crouch)) == True;
  • }
  • // Action count: 4
  • actions
  • {
  • If(Not(Global Variable(TestingCommands)));
  • Abort;
  • End;
  • Damage(Event Player, Event Player, 1000);
  • }
  • }
  • rule("Host: End a Challenge Early [key Interact+Reload]")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Button Held(Host Player, Button(Interact)) == True;
  • Is Button Held(Host Player, Button(Reload)) == True;
  • }
  • // Action count: 4
  • actions
  • {
  • If(Not(Global Variable(TestingCommands)));
  • Abort;
  • End;
  • Set Match Time(0.5);
  • }
  • }
Join the Workshop.codes Discord