Back to home

INFECTION ROYALE

DMAZG
click to copy
This game is archived.
If you with to unarchive it, click the "restore" button in the options menu.

Category:
Custom game mode

Author:
Junker

Rating:
11

Version:
4.5.0

Posted:
4 months ago

Last updated:
about 1 month ago

Tags:
ffa free for all infection junker zombie royale

Project Links

Share this workshop!

Options

INFECTION ROYALE mode:

How to play: This mode starts off as a simple FFA, but you switch to the hero who kills you! Try to infect as many players as you can with your hero! Are you going to start the Orisa stampede, or the Pharah Air Force? Watch out when there's a single Mei against the Baptiste army, things can still turn around!

Rules:

  • Each match has 29 rounds.
  • At the beginning of each round, players can choose any hero from the remaining hero pool. Multiple people can start as the same hero.
  • There is no damage between the same heroes. Abilities might still affect the same hero (work in progress to remove this).
  • When a player is killed, their hero will switch to the hero of the player who killed them.
  • A round ends when all players have been infected by the same hero, or when time is up.
  • At the end of each round, the hero with the highest number of players is removed from the hero pool until the end of the match.
  • The player with the most points at the end wins.

New score method: (All scores may be negative)

Points:

  • For each infected player, you gain one point. (+1 point)
  • Killing an ally (the same hero as yours) results in a loss of two points. (-2 points)
  • Suicide results in a loss of 1 point. (-1 point)

Round Score:

  • Just as it was before
  • if you was killed by an enemy, reset your score

Global Score:

  • At the end of each round your round score is added to the global score.
  • If you have not been infected and your hero has won, your round score is multiplied by three when added to the global score.
  • You can see your global score and that of the first player in the upper right corner of the screen.
  • You can see the global score of all players on the scoreboard at the end of each round.

Mercy:

  • Ability 1 - I recreated the Guardian Angel skill (When the halo turns green, you can fly on the ally) - Cooldown: 1.5 sec
  • Ability 2 - (Rocket Jump) That ability throws you up like paharah Ability 1 - Cooldown: 6 sec
  • Damage +30%

For any suggestion, my social media is:

Battletag: Junker#11164

Discord: Junker#7485

FB: JunkerGamer

Lapricap social media:

Battletag: Lapricap#1329

Discord: Lapricap#3761

Link for this post: bit.ly/infectionroyale

rule("Developed by Junker#11164 and a new collaborator Lapricap#1329")
{
	event
	{
		Ongoing - Global;
	}
}

rule("Vesion 4.5 (For new updates of this mode, acess: http://bit.ly/infectionroyale)")
{
	event
	{
		Ongoing - Global;
	}
}

rule("(DEFAULT) Disable built-in game mode scoring/comoletion, set assemble heros time, set N= fist config (1)")
{
	event
	{
		Ongoing - Global;
	}

	actions
	{
		Disable Built-In Game Mode Scoring;
		Disable Built-In Game Mode Completion;
		Set Match Time(10);
		Set Global Variable(N, 1);
	}
}

rule("(G-VARIABLES) L= list of heros available, GV: (N= start game) (R= nº of rounds) (H= hero winner)")
{
	event
	{
		Ongoing - Global;
	}

	actions
	{
		Set Global Variable(L, All Heroes);
	}
}

rule("(SCORE) HUD text: Event player global score / Player with best score")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	actions
	{
		Create HUD Text(Event Player, Hero Icon String(Hero Of(Global Variable(B))), String("{0} {1}", String("Best", Null, Null, Null),
			String("{0}:", String("Score", Null, Null, Null), Null, Null), Null), String("{0}: {1}", Global Variable(B), Player Variable(
			Global Variable(B), S), Null), Left, 0, Red, Red, Yellow, Visible To and String);
		Create HUD Text(Event Player, Hero Icon String(Hero Of(Event Player)), String("{0} {1}", String("Current", Null, Null, Null),
			String("{0}:", String("Score", Null, Null, Null), Null, Null), Null), String("{0}: {1}", Event Player, Player Variable(
			Event Player, S), Null), Left, 1, Blue, Blue, Yellow, Visible To and String);
	}
}

rule("(EFFECT MERCY GA) Create the Effect (PV: Z=Last_Effect) <> (PV: A=Ally_position ; R=(on/off)Effect)")
{
	event
	{
		Ongoing - Each Player;
		All;
		Mercy;
	}

	conditions
	{
		Hero Of(Event Player) == Hero(Mercy);
	}

	actions
	{
		Create Icon(Player Variable(Event Player, R), Player Variable(Event Player, A), Halo, Visible To and Position, Green, False);
		Set Player Variable(Event Player, Z, Last Created Entity);
	}
}

rule("(FF) Remove friendly fire (All) (PV: D=Damage)")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	conditions
	{
		Has Spawned(Event Player) == True;
		Hero Of(Event Player) != Hero(Ana);
		Hero Of(Event Player) != Hero(Bastion);
		Hero Of(Event Player) != Hero(Roadhog);
	}

	actions
	{
		Stop Damage Modification(Player Variable(Event Player, D));
		Start Damage Modification(Event Player, Remove From Array(Players On Hero(Hero Of(Event Player), All Teams), Event Player), 0,
			Receivers and Damagers);
		Set Player Variable(Event Player, D, Last Damage Modification ID);
	}
}

rule("(FF) Remove friendly fire (Ana/Bastion/Road) (PV: D=Damage)")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	conditions
	{
		Has Spawned(Event Player) == True;
		Or(Or(Compare(Hero Of(Event Player), ==, Hero(Ana)), Compare(Hero Of(Event Player), ==, Hero(Bastion))), Compare(Hero Of(
			Event Player), ==, Hero(Roadhog))) == True;
	}

	actions
	{
		Stop Damage Modification(Player Variable(Event Player, D));
		Start Damage Modification(Event Player, Remove From Array(Players On Hero(Hero Of(Event Player), All Teams), Event Player), 0.001,
			Receivers and Damagers);
		Set Player Variable(Event Player, D, Last Damage Modification ID);
	}
}

rule("(0-CONFIG) End the round, remove winner hero (l - h), destroy icons, go back to select hero (N=0)")
{
	event
	{
		Ongoing - Global;
	}

	conditions
	{
		Is Game In Progress == True;
		Global Variable(N) == False;
		Global Variable(R) >= Absolute Value(1);
		Global Variable(R) < Absolute Value(30);
	}

	actions
	{
		Set Status(All Players(All Teams), Null, Frozen, 2);
		Big Message(All Players(All Teams), String("{0}: {1}", String("Winner", Null, Null, Null), Global Variable(H), Null));
		Modify Global Variable(L, Remove From Array By Value, Global Variable(H));
		Wait(2, Ignore Condition);
		Stop Forcing Player To Be Hero(All Players(All Teams));
		Set Player Allowed Heroes(All Players(All Teams), Global Variable(L));
		Destroy All Icons;
		Go To Assemble Heroes;
		Set Match Time(3);
		Wait(3, Ignore Condition);
		Set Global Variable(N, 1);
	}
}

rule("(1-CONFIG) Configure and INITIALIZE the round DOGV: (R  ) (N=2) (B=Player with Best Score) (Score=0)")
{
	event
	{
		Ongoing - Global;
	}

	conditions
	{
		Is Game In Progress == True;
		Global Variable(N) == 1;
	}

	actions
	{
		Modify Global Variable(R, Add, 1);
		Set Global Variable(B, Last Of(Sorted Array(All Players(All Teams), Score Of(Current Array Element))));
		Set Player Score(All Players(All Teams), 0);
		Set Global Variable(N, Absolute Value(2));
		Set Match Time(180);
		Skip If(Compare(Global Variable(R), ==, 30), 2);
		Big Message(All Players(All Teams), String("Round {0}", Global Variable(R), Null, Null));
		Skip(1);
		Big Message(All Players(All Teams), String("Final Round", Null, Null, Null));
		Wait(4, Ignore Condition);
		Big Message(All Players(All Teams), String("{0} {1}", String("Corrupt", Null, Null, Null), String("Enemies", Null, Null, Null),
			Null));
		Wait(0.800, Ignore Condition);
	}
}

rule("(*PREVENT) Prevents new players from selecticg a banid hero")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	actions
	{
		Abort If(Compare(Match Time, <, 165));
		Set Player Allowed Heroes(Event Player, Global Variable(L));
	}
}

rule("(2-PREVENT) Prevents new players to select different hero after 15 sec")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	conditions
	{
		Global Variable(N) == 2;
		Has Spawned(Event Player) == False;
		Match Time < Absolute Value(165);
	}

	actions
	{
		Set Player Allowed Heroes(Event Player, Filtered Array(All Heroes, Is Hero Being Played(Current Array Element, All Teams)));
		Wait(0.800, Abort When False);
		Loop If Condition Is True;
	}
}

rule("(2-SEE ALLIES/SCORE) Blue halo in allies / Set PV: (F=First hero) and (Obj Desc=Round Score)")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	conditions
	{
		Global Variable(N) == 2;
		Has Spawned(Event Player) == True;
	}

	actions
	{
		Create Icon(Players On Hero(Hero Of(Event Player), All Teams), Event Player, Halo, Visible To and Position, Blue, False);
		Set Objective Description(Event Player, String("{0} {1}", String("Round", Null, Null, Null), String("{0}!", String("Score", Null,
			Null, Null), Null, Null), Null), Visible To and String);
		Abort If(Compare(Match Time, <, 165));
		Set Player Variable(Event Player, F, Hero Of(Event Player));
	}
}

rule("(2-SEE ENEMIES) Red skull in enemies  at the last minute or has only one enemy")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	conditions
	{
		Global Variable(N) == 2;
		Has Spawned(Event Player) == True;
		Match Time <= 60;
	}

	actions
	{
		Create Icon(Remove From Array(All Players(All Teams), Players On Hero(Hero Of(Event Player), All Teams)), Event Player, Skull,
			Visible To and Position, Red, True);
		Set Global Variable(N, 3);
	}
}

rule("(3-SEE ENEMIES) Message")
{
	event
	{
		Ongoing - Global;
	}

	conditions
	{
		Global Variable(N) == 3;
	}

	actions
	{
		Big Message(All Players(All Teams), String("{0} {1}", String("Enemies", Null, Null, Null), String("{0}!", String("Revealed", Null,
			Null, Null), Null, Null), Null));
		Set Global Variable(N, 2);
		Wait(0.800, Ignore Condition);
	}
}

rule("(2-KILL ENEMY) When a player is killed, turn the victim into the killer, change the scores, (Reset victim PV: F=First hero)")
{
	event
	{
		Player Died;
		All;
		All;
	}

	conditions
	{
		Global Variable(N) == 2;
		Attacker != Victim;
		Hero Of(Attacker) != Hero Of(Victim);
	}

	actions
	{
		Preload Hero(Victim, Hero Of(Attacker));
		Play Effect(Attacker, Good Pickup Effect, Green, Victim, 1);
		Play Effect(Attacker, Buff Explosion Sound, White, Victim, 200);
		Play Effect(Victim, Bad Pickup Effect, Red, Victim, 1);
		Play Effect(Victim, Ring Explosion Sound, White, Victim, 200);
		Modify Player Score(Attacker, 1);
		Set Player Variable(Victim, F, 0);
		Big Message(Attacker, String("{0}: {1}", String("Points Earned", Null, Null, Null), 1, Null));
		Small Message(Attacker, String("{0} {1}", Victim, String("Corrupted", Null, Null, Null), Null));
		Wait(0.250, Ignore Condition);
		Start Forcing Player To Be Hero(Victim, Hero Of(Attacker));
		Set Player Score(Victim, 0);
		Big Message(Victim, String("Try Again", Null, Null, Null));
		Small Message(Victim, String("{0} {1} {2}", Hero Of(Attacker), String("Corrupted", Null, Null, Null), String("{0}!", String("You",
			Null, Null, Null), Null, Null)));
		Wait(0.800, Ignore Condition);
	}
}

rule("(2-KILL ALLY) When the player killed is ally, change the scores")
{
	event
	{
		Player Died;
		All;
		All;
	}

	conditions
	{
		Global Variable(N) == 2;
		Attacker != Victim;
		Hero Of(Attacker) == Hero Of(Victim);
	}

	actions
	{
		Play Effect(Attacker, Bad Pickup Effect, Red, Victim, 1);
		Play Effect(Attacker, Debuff Impact Sound, White, Victim, 200);
		Modify Player Score(Attacker, -2.000);
		Big Message(Attacker, String("{0}: {1}", String("Points Lost", Null, Null, Null), 2, Null));
		Small Message(Attacker, String("{0} {1}", String("Ally", Null, Null, Null), String("Attacked", Null, Null, Null), Null));
		Big Message(Victim, String("Try Again", Null, Null, Null));
		Small Message(Victim, String("{0}: {1}", String("Ally", Null, Null, Null), String("{0}, {1}", Attacker, String("{0} {1}", String(
			"Kill", Null, Null, Null), String("{0}!", String("You", Null, Null, Null), Null, Null), Null), Null), Null));
		Respawn(Victim);
		Wait(0.800, Ignore Condition);
	}
}

rule("(2-SUICEDE) Punish self eliminations (SCORE CAN'T BE NEGATIVE)")
{
	event
	{
		Player Died;
		All;
		All;
	}

	conditions
	{
		Global Variable(N) == 2;
		Attacker == Victim;
	}

	actions
	{
		Start Forcing Player To Be Hero(Event Player, Hero Of(Attacker));
		Modify Player Score(Attacker, -1.000);
		Big Message(Victim, String("{0}: {1}", String("Points Lost", Null, Null, Null), 1, Null));
		Small Message(Victim, String("Oops", Null, Null, Null));
		Respawn(Victim);
		Wait(0.800, Ignore Condition);
	}
}

rule("(2-BUG-ABILITIES REMOVE) Remove symmetra and torb Ability 2 (turret)")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	conditions
	{
		Global Variable(N) == 2;
		Or(Compare(Hero Of(Event Player), ==, Hero(Symmetra)), Compare(Hero Of(Event Player), ==, Hero(Torbjörn))) == True;
	}

	actions
	{
		Destroy Effect(Player Variable(Event Player, Z));
		Set Player Variable(Event Player, A, 0);
		Set Player Variable(Event Player, M, 0);
		Set Player Variable(Event Player, R, 0);
		Set Player Variable(Event Player, Z, 0);
		Set Player Variable(Event Player, U, 0);
		Set Ability 1 Enabled(Event Player, False);
		Set Ability 2 Enabled(Event Player, True);
	}
}

rule("(2-BUG-PREVENT HACK) Sombra Can't hack allies")
{
	event
	{
		Ongoing - Each Player;
		All;
		Sombra;
	}

	conditions
	{
		Global Variable(N) == 2;
		Hero Of(Event Player) == Hero(Sombra);
		Is Firing Secondary(Event Player) == True;
		Hero Of(Player Closest To Reticle(Event Player, All Teams)) == Hero(Sombra);
		Distance Between(Event Player, Player Closest To Reticle(Event Player, All Teams)) <= 15;
		Is In Line of Sight(Event Player, Player Closest To Reticle(Event Player, All Teams), Barriers Do Not Block LOS) == True;
	}

	actions
	{
		Disallow Button(Event Player, Secondary Fire);
		Play Effect(Event Player, Explosion Sound, White, Event Player, 200);
		Wait(0.500, Ignore Condition);
		Allow Button(Event Player, Secondary Fire);
	}
}

rule("(2-BUG-PREVENT HOOK) Road Can't hook allies")
{
	event
	{
		Player Dealt Damage;
		All;
		Roadhog;
	}

	conditions
	{
		Global Variable(N) == 2;
		Is Using Ability 1(Event Player) == True;
		Hero Of(Attacker) == Hero(Roadhog);
		Hero Of(Victim) == Hero(Roadhog);
	}

	actions
	{
		Set Status(Attacker, Null, Stunned, 0.001);
		Play Effect(Attacker, Explosion Sound, White, Attacker, 200);
	}
}

rule("(2-BUG-PREVENT WHIP) Brig Can't whip allies")
{
	event
	{
		Ongoing - Each Player;
		All;
		Brigitte;
	}

	conditions
	{
		Global Variable(N) == 2;
		Hero Of(Event Player) == Hero(Brigitte);
		Is Using Ability 1(Event Player) == True;
		Ray Cast Hit Player(Event Player, Add(Eye Position(Event Player), Multiply(Facing Direction Of(Event Player), 20)),
			Players On Hero(Hero Of(Event Player), All Teams), Event Player, False) == True;
	}

	actions
	{
		Set Status(Event Player, Null, Stunned, 0.001);
		Play Effect(Event Player, Explosion Sound, White, Event Player, 200);
	}
}

rule("(2-BUG-PREVENT CHARGE) Rein Can't charge allies")
{
	event
	{
		Ongoing - Each Player;
		All;
		Reinhardt;
	}

	conditions
	{
		Global Variable(N) == 2;
		Hero Of(Event Player) == Hero(Reinhardt);
		Is Using Ability 1(Event Player) == True;
		Hero Of(Player Closest To Reticle(Event Player, All Teams)) == Hero(Reinhardt);
		Distance Between(Event Player, Player Closest To Reticle(Event Player, All Teams)) <= 3.400;
	}

	actions
	{
		Set Status(Event Player, Null, Stunned, 0.001);
		Play Effect(Event Player, Explosion Sound, White, Event Player, 200);
	}
}

rule("(2-BUG-PREVENT SLEEP) Remove Ana sleep")
{
	event
	{
		Player Took Damage;
		All;
		Ana;
	}

	conditions
	{
		Global Variable(N) == 2;
		Hero Of(Attacker) == Hero(Ana);
		Hero Of(Victim) == Hero(Ana);
		Is Using Ability 1(Attacker) == True;
	}

	actions
	{
		Play Effect(Attacker, Explosion Sound, White, Event Player, 200);
		Wait(0.500, Ignore Condition);
		Abort If(Not(Has Status(Victim, Asleep)));
		Damage(Victim, Null, 0.100);
		Loop If Condition Is True;
	}
}

rule("(2-BUG-PREVENT DMG) Prevent bastion friendly fire*")
{
	event
	{
		Player Dealt Damage;
		All;
		Bastion;
	}

	conditions
	{
		Global Variable(N) == 2;
		Hero Of(Attacker) == Hero(Bastion);
		Hero Of(Victim) == Hero(Bastion);
	}

	actions
	{
		Set Damage Dealt(Attacker, 0.001);
		Heal(Victim, Null, Event Damage);
		Wait(0.100, Ignore Condition);
		Set Damage Dealt(Attacker, 100);
	}
}

rule("(2-MERCY GA) Set    Ally(A)/Effect (PV: A=Ally_position ; R=(on/off)Effect)")
{
	event
	{
		Ongoing - Each Player;
		All;
		Mercy;
	}

	conditions
	{
		Global Variable(N) == 2;
		Hero Of(Event Player) == Hero(Mercy);
		Hero Of(Event Player) == Hero Of(Player Closest To Reticle(Event Player, All Teams));
		Player Variable(Event Player, M) == 0;
		Player Closest To Reticle(Event Player, All Teams) != Player Variable(Event Player, A);
		Is In Line of Sight(Event Player, Player Closest To Reticle(Event Player, All Teams), Enemy Barriers Block LOS) == True;
		Distance Between(Event Player, Player Closest To Reticle(Event Player, All Teams)) >= 4;
		Distance Between(Event Player, Player Closest To Reticle(Event Player, All Teams)) <= 30;
		Is In View Angle(Event Player, Player Closest To Reticle(Event Player, All Teams), 20) == True;
	}

	actions
	{
		Set Player Variable(Event Player, A, Player Closest To Reticle(Event Player, All Teams));
		Set Player Variable(Event Player, R, Event Player);
	}
}

rule("(2-MERCY GA) Clear Ally(A)/Effect (PV: A=Ally_position ; R=(on/off)Effect)")
{
	event
	{
		Ongoing - Each Player;
		All;
		Mercy;
	}

	conditions
	{
		Global Variable(N) == 2;
		Hero Of(Event Player) == Hero(Mercy);
		Player Variable(Event Player, A) != 0;
		Player Variable(Event Player, R) != 0;
		Or(Or(Or(Compare(Hero Of(Player Variable(Event Player, A)), !=, Hero(Mercy)), Compare(Is In Line of Sight(Event Player,
			Player Variable(Event Player, A), Enemy Barriers Block LOS), ==, False)), Compare(Is In View Angle(Event Player,
			Player Variable(Event Player, A), 20), ==, False)), Or(Compare(Distance Between(Event Player, Player Variable(Event Player,
			A)), <, 4), Compare(Distance Between(Event Player, Player Variable(Event Player, A)), >, 30))) == True;
	}

	actions
	{
		Set Player Variable(Event Player, A, 0);
		Set Player Variable(Event Player, R, 0);
	}
}

rule("(2-MERCY GA) Ability 1 (PV: M=Cooldown ; A=Ally_position ; R=(on/off)Effect)")
{
	event
	{
		Ongoing - Each Player;
		All;
		Mercy;
	}

	conditions
	{
		Global Variable(N) == 2;
		Hero Of(Event Player) == Hero(Mercy);
		Is Button Held(Event Player, Ability 1) == True;
		Player Variable(Event Player, A) != 0;
		Hero Of(Player Variable(Event Player, A)) == Hero(Mercy);
	}

	actions
	{
		Skip If(Compare(Player Variable(Event Player, M), >, 0), 8);
		Set Player Variable(Event Player, R, 0);
		Set Status(Event Player, Null, Rooted, 9999);
		Apply Impulse(Event Player, Up, 0.450, To Player, Cancel Contrary Motion);
		Set Gravity(Event Player, 0);
		Set Move Speed(Event Player, 309.081);
		Apply Impulse(Event Player, Vector Towards(Event Player, Player Variable(Event Player, A)), 17, To World, Cancel Contrary Motion);
		Set Player Variable(Event Player, M, 3.900);
		Chase Player Variable At Rate(Event Player, M, 1.500, 1, None);
		Wait(0.250, Ignore Condition);
		Loop If(And(And(Compare(Distance Between(Event Player, Player Variable(Event Player, A)), >=, 4), Compare(Distance Between(
			Event Player, Player Variable(Event Player, A)), <=, 30)), And(Compare(Is Button Held(Event Player, Ability 1), ==, Compare(
			Player Variable(Event Player, M), >, 1.500)), Compare(Is In Line of Sight(Event Player, Player Variable(Event Player, A),
			Barriers Do Not Block LOS), ==, True))));
		Stop Chasing Player Variable(Event Player, M);
		Set Player Variable(Event Player, M, 1.500);
		Set Player Variable(Event Player, A, 0);
		Set Ability 1 Enabled(Event Player, False);
		Chase Player Variable At Rate(Event Player, M, 0, 1, None);
		Set Gravity(Event Player, 100);
		Set Move Speed(Event Player, 100);
		Clear Status(Event Player, Rooted);
		Wait(1.500, Ignore Condition);
		Set Ability 1 Enabled(Event Player, True);
	}
}

rule("(2-MERCY RJ) Ability 2 - Rocket Jump (PV-U=Cooldown)")
{
	event
	{
		Ongoing - Each Player;
		All;
		Mercy;
	}

	conditions
	{
		Global Variable(N) == 2;
		Hero Of(Event Player) == Hero(Mercy);
		Is Button Held(Event Player, Ability 2) == True;
		Player Variable(Event Player, U) == 0;
	}

	actions
	{
		Set Ability 2 Enabled(Event Player, False);
		Set Player Variable(Event Player, U, 6);
		Apply Impulse(Event Player, Up, 17, To Player, Cancel Contrary Motion);
		Chase Player Variable At Rate(Event Player, U, 0, 1, None);
		Wait(6, Ignore Condition);
		Set Ability 2 Enabled(Event Player, True);
	}
}

rule("(2-MERCY CLEAR) Destroy all mercy effects and reset variable if you change your hero")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	conditions
	{
		Global Variable(N) == 2;
		Hero Of(Event Player) != Hero(Mercy);
		Hero Of(Event Player) != Hero(Symmetra);
		Hero Of(Event Player) != Hero(Torbjörn);
	}

	actions
	{
		Destroy Effect(Player Variable(Event Player, Z));
		Set Player Variable(Event Player, A, 0);
		Set Player Variable(Event Player, M, 0);
		Set Player Variable(Event Player, R, 0);
		Set Player Variable(Event Player, Z, 0);
		Set Player Variable(Event Player, U, 0);
		Set Ability 1 Enabled(Event Player, True);
		Set Ability 2 Enabled(Event Player, True);
	}
}

rule("(2-END R) Check if all players are the same hero")
{
	event
	{
		Ongoing - Global;
	}

	conditions
	{
		Global Variable(N) == 2;
		Global Variable(R) <= Absolute Value(30);
		Match Time < Absolute Value(165);
		Number of Players(All Teams) >= Absolute Value(2);
		Number of Heroes(Hero Of(Random Value In Array(Filtered Array(All Players(All Teams), Has Spawned(Current Array Element)))),
			All Teams) == Count Of(Filtered Array(All Players(All Teams), Has Spawned(Current Array Element)));
	}

	actions
	{
		Set Global Variable(H, Hero Of(Last Of(Sorted Array(Filtered Array(All Players(All Teams), Has Spawned(Current Array Element)),
			Number of Heroes(Hero Of(Current Array Element), All Teams)))));
		Set Global Variable(N, False);
	}
}

rule("(2-END R) Time out")
{
	event
	{
		Ongoing - Global;
	}

	conditions
	{
		Global Variable(N) == 2;
		Global Variable(R) <= Absolute Value(30);
		Match Time <= Absolute Value(0);
		Number of Players(All Teams) >= Absolute Value(2);
	}

	actions
	{
		Set Global Variable(H, Hero Of(Last Of(Sorted Array(Filtered Array(All Players(All Teams), Has Spawned(Current Array Element)),
			Number of Heroes(Hero Of(Current Array Element), All Teams)))));
		Small Message(All Players(All Teams), String("{0} {1}", String("Times", Null, Null, Null), String("{0}!", String("Up", Null, Null,
			Null), Null, Null), Null));
		Set Global Variable(N, False);
	}
}

rule("(0-SCORE) PV: S= Global score (IF: F=H -> 3xScore)")
{
	event
	{
		Ongoing - Each Player;
		All;
		All;
	}

	conditions
	{
		Global Variable(N) == False;
	}

	actions
	{
		Skip If(Compare(Player Variable(Event Player, F), ==, Global Variable(H)), 2);
		Modify Player Variable(Event Player, S, Add, Score Of(Event Player));
		Skip(1);
		Modify Player Variable(Event Player, S, Add, Multiply(Score Of(Event Player), 3));
		Set Player Score(Event Player, Player Variable(Event Player, S));
		Set Objective Description(Event Player, String("{0} {1}", String("Total", Null, Null, Null), String("{0}!", String("Score", Null,
			Null, Null), Null, Null), Null), Visible To and String);
	}
}

rule("(0-END M) End the match after 30 rounds")
{
	event
	{
		Ongoing - Global;
	}

	conditions
	{
		Global Variable(N) == False;
		Global Variable(R) == 30;
	}

	actions
	{
		Big Message(All Players(All Teams), String("{0}: {1}", String("Winner", Null, Null, Null), Global Variable(H), Null));
		Set Status(All Players(All Teams), Null, Frozen, 2);
		Set Status(All Players(All Teams), Null, Burning, 2);
		Wait(2, Ignore Condition);
		Declare Player Victory(Last Of(Sorted Array(All Players(All Teams), Score Of(Current Array Element))));
	}
}

Changelog

about 1 month ago 4.5.0

Rounds:

  • Total rounds changed due to Sigma (30 rounds)

DMAZG
click to copy
about 1 month ago 4.3.0

Buff:

  • Mercy damage +30%

New score method: (All scores may be negative)

  • Kill enemies: +1 point

  • Kill allies: -2 points

  • Suicide: -1 point

    Round Score:

  • Just as it was before.

  • if you was killed by an enemy, reset your score.

    Global Score:

  • At the end of each round your round score is added to the global score.

  • If you have not been infected and your hero has won, your round score is multiplied by three when added to the global score.

  • You can see your global score and that of the first player in the upper right corner of the screen.

  • You can see the global score of all players on the scoreboard at the end of each round.

JYWNR
click to copy
about 1 month ago 4.2.0

Bugs fixed: Mei can no longer freeze allies

NTSV5
click to copy
about 1 month ago 4.1.0

Bugs fixed:

Mercy:

  • Mercy could fly to enemies;

  • Error where skills were blocked after using mercy.

    Round:

  • Error determining the winning hero of the round.

A3S5C
click to copy
about 1 month ago 4.0.0

Mercy: Ability 1 - I recreated the Guardian Angel skill (When the halo turns green, you can fly on the ally) - Cooldown: 1.5 sec Ability 2 - (Rocket Jump) That ability throws you up like paharah Ability 1 - Cooldown: 6 sec

Roadhog: When trying to pull an ally, your ability gets in cooldown.

Sombra: It is no longer possible to hack allies.

Brigitte: When trying to use whip shot (Ability 1) in allies, your ability gets in cooldown.

ReinHardt: If ReinHardt's charge ability hits an ally, it is canceled.

Ana: When you put an ally to sleep with Ana, he will wake up and the ability gets in cooldown.

Bastion: Blizzard is already aware of the bug where bastion in turret mode is damaging. However, as long as they don't fix it, I have created a way to avoid this damage. This can cause some delay to deal damage after shooting an ally. If this is disrupting the game, just disable the rule: (BUG PREVENT DMG).

New effects: I added new effects by infecting someone and killing an ally.

Coming soon: New effects for end of round and match; New skills for heroes who are very weak, mostly sups. Reworking the scoring method. I am researching ways to avoid Junk trapping and other forms of stun on allies.

3M6N2
click to copy
about 1 month ago 4.0.0

Mercy: Ability 1 - I recreated the Guardian Angel skill (When the halo turns green, you can fly on the ally) - Cooldown: 1.5 sec Ability 2 - (Rocket Jump) That ability throws you up like paharah Ability 1 - Cooldown: 6 sec

Roadhog: When trying to pull an ally, your ability gets in cooldown.

Sombra: It is no longer possible to hack allies.

Brigitte: When trying to use whip shot (Ability 1) in allies, your ability gets in cooldown.

ReinHardt: If ReinHardt's charge ability hits an ally, it is canceled.

Ana: When you put an ally to sleep with Ana, he will wake up and the ability gets in cooldown.

Bastion: Blizzard is already aware of the bug where bastion in turret mode is damaging. However, as long as they don't fix it, I have created a way to avoid this damage. This can cause some delay to deal damage after shooting an ally. If this is disrupting the game, just disable the rule: (BUG PREVENT DMG).

New effects: I added new effects by infecting someone and killing an ally.

Coming soon: New effects for end of round and match; New skills for heroes who are very weak, mostly sups. Reworking the scoring method. I am researching ways to avoid Junk trapping and other forms of stun on allies.

126NW
click to copy
3 months ago 3.4.0

Updates v3.4:

Fixed the bug in which new players can choose banned hero in the first 15 seconds.

3XE4K
click to copy
4 months ago 3.4.0

Updates v3.4:

Fixed the bug in which new players can choose banned hero in the first 15 seconds.

SMMGK
click to copy
4 months ago 1.0.0

Bugs:

When another round begins, a random hero is selected. (I Don’t know why this is happening, however just don’t click anything and the menu to select the hero will open automatically after about 3 seconds)

Is possible to attack allies with skills and projectile weapon. (This is not a bug, however I have not yet found any other way to remove the friendly fire in FFA mode.)

6W9ZK
click to copy
4 months ago 2.0.0

Updates:

The error of a random hero being selected has been fixed.

Sombra can be invisible for only 5 seconds.

Fixed the error in which new players could choose a banned hero.

3ZQD1
click to copy
4 months ago 3.1.0

Updates v3.1:

With the addition of the “Start Damage Modification” command on May 2, damage to allies was completely removed.

With the addition of the “Set Secondary Fire Enabled” command on May 3, the WRECKING BALL loosens the hook after 5 seconds to prevent it from hiding.

The hero with the greatest number now actually wins the match.

After 15 seconds of the match has begun, new players will be able to choose only the heroes that are already being played.

All heroes are frozen at the end

S4NEC
click to copy
4 months ago 3.2.0

Updates v3.2:

Fixed the bug in which the new players could choose only one hero.

Missing one minute, all enemies are revealed.

You can see where are all allies.

Bugs:

Is possible to use skills in allies, but this will not cause damage. (The command “clear status” can clear only effects create by “set status”)

81KZR
click to copy
4 months ago 3.3.0

  • Updates v3.3:

Fixed the bug where the round never ends if someone don't select a hero.

ZHGVT
click to copy