Back to home

idaspin's training range

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

Category:
Training / Drills / Tools

Author:
idaspin

Rating:
1

Version:
1.0.0

Posted:
about 1 month ago

Last updated:
about 1 month ago

Tags:
tracer tracer recall training aim aim training hitscan training any hero practice range practice aim practice

Project Links

Share this workshop!

Options

Before we start, I must tell you I loaded [https://workshop.elohell.gg/GpB1CVCUx/Tracer_Recall_Hook_Practise](this workshop mode) & and modified to fit my needs. In fact, I just needed a more meaningful training ground to learn how to shoot on Tracer. Well, I got it. Most likely I will not develop this game-mode. But I hope you find it useful.

Further comments of this mod developers: https://workshop.elohell.gg/GpB1CVCUx/Tracer_Recall_Hook_Practise, and then me.

ARM: A blue orb will follow Tracer around at the exact position to which she will recall if she presses the button at any given moment.

idaspin: My modification is a kind of Spawn-management for bots. This modification does not allow bots to gather in stacks of 4, 5, 6 people. Because of what, sometimes during training it is becomes too difficult to focus on a specific opponent. Also, there are no situations when you eliminate all team so it takes a long time to wait for all of them until they will return from respawn. Just add 6 bot - Ana (Easy) & enjoy/ If there is too many opponents at the Objective, you can click on one of the two "Kill All" button. First one is under the respawn near the stairs. Second one: near a large first-aid kit behind the Objective. Too easy? Just increase the Ana's damage using the standard Match Browser editor.

rule("idaspin: CUSTOMIZE HERE: MAX COUNT OF BOTS")
{
	event
	{
		Ongoing - Global;
	}

	actions
	{
		Set Global Variable(M, 3);
	}
}

rule("ARM: Clock - Set Variable P At Spawn")
{
	event
	{
		Ongoing - Each Player;
		All;
		%u0422%u0440%u0435%u0439%u0441%u0435%u0440;
	}

	conditions
	{
		Has Spawned(Event Player) == True;
	}

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

rule("ARM: Clock - Count up Pre 75")
{
	event
	{
		Ongoing - Each Player;
		All;
		%u0422%u0440%u0435%u0439%u0441%u0435%u0440;
	}

	conditions
	{
		Has Spawned(Event Player) == True;
		Count Of(Player Variable(Event Player, P)) < Absolute Value(75);
	}

	actions
	{
		Wait(0.040, Ignore Condition);
		Modify Player Variable(Event Player, P, Append To Array, Position Of(Event Player));
		Loop If Condition Is True;
	}
}

rule("ARM: Clock - Count up Post 75")
{
	event
	{
		Ongoing - Each Player;
		All;
		%u0422%u0440%u0435%u0439%u0441%u0435%u0440;
	}

	conditions
	{
		Has Spawned(Event Player) == True;
		Count Of(Player Variable(Event Player, P)) >= Absolute Value(75);
	}

	actions
	{
		Wait(0.040, Ignore Condition);
		Modify Player Variable(Event Player, P, Append To Array, Position Of(Event Player));
		Modify Player Variable(Event Player, P, Remove From Array By Index, 0);
		Loop If Condition Is True;
	}
}

rule("ARM: Effect")
{
	event
	{
		Ongoing - Each Player;
		All;
		%u0422%u0440%u0435%u0439%u0441%u0435%u0440;
	}

	actions
	{
		Create Effect(All Players(All Teams), Orb, Blue, Add(Position Of(Value In Array(Player Variable(Event Player, P), 11)), Vector(0,
			0.810, 0)), 0.200, None);
		Set Player Variable(Event Player, O, Last Created Entity);
		Wait(0.040, Ignore Condition);
		Destroy Effect(Player Variable(Event Player, O));
		Loop;
	}
}

rule("ARM: Recall Resets Everything")
{
	event
	{
		Ongoing - Each Player;
		All;
		%u0422%u0440%u0435%u0439%u0441%u0435%u0440;
	}

	conditions
	{
		Is Using Ability 2(Event Player) == True;
	}

	actions
	{
		Play Effect(All Players(All Teams), Good Explosion, Blue, Position Of(Value In Array(Player Variable(Event Player, P), 11)),
			0.250);
		Destroy Effect(Player Variable(Event Player, O));
		Create Effect(All Players(Opposite Team Of(All Teams)), Orb, Yellow, Add(Position Of(Value In Array(Player Variable(Event Player,
			P), 11)), Vector(0, 0.810, 0)), 0.250, None);
		Set Player Variable(Event Player, R, Last Created Entity);
		Wait(1.250, Ignore Condition);
		Destroy Effect(Player Variable(Event Player, R));
		Set Player Variable(Event Player, P, 0);
	}
}

rule("ARM: If not Tracer, Destroy all Effects")
{
	event
	{
		Ongoing - Each Player;
		All;
		%u0412%u0441%u0435;
	}

	conditions
	{
		Hero Of(Event Player) != Hero(%u0422%u0440%u0435%u0439%u0441%u0435%u0440);
	}

	actions
	{
		Destroy Effect(Last Created Entity);
		Wait(0.020, Ignore Condition);
		Loop;
	}
}

rule("idaspin: %u0420%u0435%u0441%u043F%u0430%u0432%u043D %u0442%u0440%u0435%u043D%u0435%u0440%u0443%u044E%u0449%u0435%u0433%u043E%u0441%u044F")
{
	event
	{
		Player Died;
		Team 1;
		%u0412%u0441%u0435;
	}

	actions
	{
		Respawn(Event Player);
	}
}

rule("idaspin: C%u043F%u0430%u0432%u043D %u0442%u0440%u0435%u043D%u0435%u0440%u0443%u044E%u0449%u0435%u0433%u043E%u0441%u044F")
{
	event
	{
		Ongoing - Each Player;
		Team 1;
		%u0412%u0441%u0435;
	}

	conditions
	{
		Is In Spawn Room(Event Player) == True;
	}

	actions
	{
		Teleport(Event Player, Vector(-4.120, 7, -22.380));
	}
}

rule("idaspin: %u041E%u0442%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0435 %u043A%u043D%u043E%u043F%u043E%u043A")
{
	event
	{
		Ongoing - Global;
	}

	actions
	{
		Set Global Variable(A, 0);
		Create In-World Text(All Players(All Teams), String("%u0423%u0431%u0438%u0439%u0441%u0442%u0432%u0430", Null, Null, Null), Vector(7.960, 8.200, -22.000), 1,
			Clip Against Surfaces, Visible To Position and String);
		Create In-World Text(All Players(All Teams), String("%u0423%u0431%u0438%u0442%u044C", Null, Null, Null), Vector(14.280, 5, 18.700), 1,
			Clip Against Surfaces, Visible To Position and String);
		Create In-World Text(All Players(All Teams), String("%u0423%u0431%u0438%u0442%u044C", Null, Null, Null), Vector(-10.040, 2, -29.620), 1,
			Clip Against Surfaces, Visible To Position and String);
		Create Effect(All Players(All Teams), Sphere, White, Vector(7.960, 8.200, -22.000), 0.500, Visible To Position and Radius);
		Create Effect(All Players(All Teams), Sphere, White, Vector(14.280, 5, 18.700), 0.500, Visible To Position and Radius);
		Create Effect(All Players(All Teams), Sphere, White, Vector(-10.040, 2, -29.620), 0.500, Visible To Position and Radius);
		Set Player Variable(All Players(Team 2), A, False);
	}
}

rule("idaspin: %u041D%u0430%u0436%u0430%u0442%u0438%u0435 %u043D%u0430 %u043A%u043D%u043E%u043F%u043A%u0443 %u0423%u0431%u0438%u0442%u044C1")
{
	event
	{
		Ongoing - Each Player;
		Team 1;
		%u0412%u0441%u0435;
	}

	conditions
	{
		Distance Between(Vector(14.280, 5, 18.700), Event Player) < 2;
	}

	actions
	{
		Kill(All Living Players(Team 1), Null);
		Wait(1.250, Ignore Condition);
		Respawn(Random Value In Array(All Dead Players(Team 2)));
		Wait(1.250, Ignore Condition);
		Respawn(Random Value In Array(All Dead Players(Team 2)));
		Wait(1.250, Ignore Condition);
		Respawn(Random Value In Array(All Dead Players(Team 2)));
	}
}

rule("idaspin: %u041D%u0430%u0436%u0430%u0442%u0438%u0435 %u043D%u0430 %u043A%u043D%u043E%u043F%u043A%u0443 %u0423%u0431%u0438%u0442%u044C2")
{
	event
	{
		Ongoing - Each Player;
		Team 1;
		%u0412%u0441%u0435;
	}

	conditions
	{
		Distance Between(Vector(-10.040, 2, -29.620), Event Player) < 2;
	}

	actions
	{
		Kill(All Living Players(Team 2), Null);
		Wait(1.250, Ignore Condition);
		Respawn(Random Value In Array(All Dead Players(Team 2)));
		Wait(1.250, Ignore Condition);
		Respawn(Random Value In Array(All Dead Players(Team 2)));
		Wait(1.250, Ignore Condition);
		Respawn(Random Value In Array(All Dead Players(Team 2)));
	}
}

rule("idaspin: %u041D%u0430%u0436%u0430%u0442%u0438%u0435 %u043D%u0430 %u043A%u043D%u043E%u043F%u043A%u0443 HUD")
{
	event
	{
		Ongoing - Each Player;
		Team 1;
		%u0412%u0441%u0435;
	}

	conditions
	{
		Distance Between(Vector(6.800, 7.400, -21.600), Event Player) < 2;
	}

	actions
	{
		Destroy HUD Text(Last Text ID);
		Create HUD Text(Event Player, String("{0}, {1} %u0438 {2}", Position Of(Event Player), String("{0}: {1}", Hero Icon String(Hero Of(
			Random Value In Array(All Players(Team 2)))), Global Variable(A), Null), String("{0}: {1}", Hero Icon String(Hero Of(
			Event Player)), Global Variable(E), Divide(Global Variable(D), Global Variable(E)))), Null, Null, Left, 0, White, White, White,
			Visible To and String);
		Set Global Variable(E, 0);
		Set Global Variable(D, 0);
	}
}

rule("idaspin: %u0421%u043C%u0435%u0440%u0442%u044C %u0410%u043D%u043D")
{
	event
	{
		Player Died;
		Team 2;
		%u0412%u0441%u0435;
	}

	conditions
	{
		Attacker != All Players(Team 1);
	}

	actions
	{
		Set Global Variable(A, Subtract(Global Variable(A), 1));
		Set Player Variable(Event Player, A, False);
	}
}

rule("idaspin: %u0421%u043F%u0430%u0432%u043D %u0410%u043D%u043D")
{
	event
	{
		Ongoing - Each Player;
		Team 2;
		%u0412%u0441%u0435;
	}

	conditions
	{
		Is In Spawn Room(Event Player) == True;
		Player Variable(Event Player, A) == False;
	}

	actions
	{
		Set Global Variable(A, Add(Global Variable(A), 1));
		Set Player Variable(Event Player, A, False);
	}
}

rule("idaspin: %u0422%u041F %u0410%u043D%u043D")
{
	event
	{
		Ongoing - Each Player;
		Team 2;
		%u0412%u0441%u0435;
	}

	conditions
	{
		Is In Spawn Room(Event Player) == True;
		Global Variable(A) <= Global Variable(M);
	}

	actions
	{
		Teleport(Event Player, Vector(33.360, 0.090, -2.930));
	}
}

rule("idaspin: %u0422%u041F %u0410%u043D%u043D %u0435%u0441%u043B%u0438 %u043D%u0435 %u0434%u043E%u0431%u0435%u0436%u0430%u043B%u0438")
{
	event
	{
		Ongoing - Each Player;
		Team 2;
		%u0412%u0441%u0435;
	}

	conditions
	{
		Distance Between(Event Player, Vector(51.590, -0.735, -1.950)) < 22.110;
		Distance Between(All Living Players(Team 2), Vector(9.280, -0.990, -1.370)) > 40;
		Global Variable(A) <= Global Variable(M);
	}

	actions
	{
		Teleport(Event Player, Vector(33.360, 0.090, -2.930));
	}
}

rule("idaspin: %u0423%u0431%u0438%u0439%u0441%u0442%u0432%u043E %u0410%u043D%u044B")
{
	event
	{
		Player dealt damage;
		Team 1;
		%u0412%u0441%u0435;
	}

	conditions
	{
		Is Dead(Victim) == True;
	}

	actions
	{
		Set Global Variable(E, Add(Global Variable(E), 1));
		Set Global Variable(A, Subtract(Global Variable(A), 1));
		Set Player Variable(Victim, A, False);
	}
}

rule("idaspin: %u041C%u0435%u0442%u043A%u043E%u0441%u0442%u044C")
{
	event
	{
		Player dealt damage;
		Team 1;
		%u0412%u0441%u0435;
	}

	conditions
	{
		Attacker == All Living Players(Team 1);
	}

	actions
	{
		Set Global Variable(D, Add(Global Variable(D), Event Damage));
	}
}