Ya, i kinda tried what u posted, but couldn’t use it for the way I needed it to work.
Tell ya what; Here’s my code. This works fine as long as there’s only 1 hero per team using this. What i need to convert it to thou is for it to function correctly if i turn off Hero Limits, and all 6 ppl on a team went this hero.
variables
{
player:
11: IDs
15: SharedVar
22: Cooldown
}
rule("Winston Unique 2: Tesla Orb (Main)")
{
event
{
Ongoing - Each Player;
All;
Winston;
}
conditions
{
Is Button Held(Event Player, Button(Secondary Fire)) == True;
Is Button Held(Event Player, Button(Interact)) == True;
Is Using Ultimate(Event Player) == False;
Is Alive(Event Player) == True;
disabled Is Using Ultimate(Event Player) == False;
disabled Event Player.Cooldown[0] == 0;
}
actions
{
Create HUD Text(Event Player, Custom String("Charge Level: {0}%", Round To Integer(Event Player.A * 200, To Nearest)), Null, Null,
Top, 1, Event Player.A != 0.500 ? Color(White) : Color(Red), Color(White), Color(White), String and Color, Default Visibility);
Event Player.IDs[0] = Last Text ID;
Wait(0.016, Ignore Condition);
"What Player Sees"
Create Effect(Event Player, Good Aura, Color(Purple), Eye Position(Event Player) + World Vector Of(Vector(-0.050, -0.200, 0),
Event Player, Rotation) + Facing Direction Of(Event Player) * 0.600, Event Player.A / 5, Position and Radius);
Event Player.IDs[1] = Last Created Entity;
"What Everyone Else sees"
Create Effect(Remove From Array(All Players(All Teams), Event Player), Sphere, Color(Purple), Update Every Frame(Eye Position(
Event Player) + World Vector Of(Vector(-0.550, -1, 0), Event Player, Rotation) + Facing Direction Of(Event Player) * 2),
Event Player.A / 2, Position and Radius);
Event Player.IDs[2] = Last Created Entity;
Wait(0.016, Ignore Condition);
Chase Player Variable Over Time(Event Player, A, 0.500 * 1, 3, None);
Wait Until(!Is Button Held(Event Player, Button(Secondary Fire)) || Is Button Held(Event Player, Button(Primary Fire)), 10);
Stop Chasing Player Variable(Event Player, A);
Destroy HUD Text(Event Player.IDs[0]);
Destroy Effect(Event Player.IDs[1]);
Destroy Effect(Event Player.IDs[2]);
Wait(0.016, Ignore Condition);
"Create Tesla Orb"
If(!Is Button Held(Event Player, Button(Primary Fire)));
Event Player.B = Eye Position(Event Player);
Event Player.C = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(Event Player)
* 50, Null, All Players(All Teams), False);
"Distance Check"
If(Distance Between(Event Player, Event Player.C) > 8);
Create Effect(All Players(All Teams), Sphere, Color(Purple), Event Player.B, Event Player.A / 2, Position and Radius);
Event Player.IDs[3] = Last Created Entity;
Wait(0.016, Ignore Condition);
Chase Player Variable At Rate(Event Player, B, Event Player.C, 7.500, None);
"Victim Array Set Loop"
While(Event Player.B != Event Player.C);
Players Within Radius(Event Player.B, 7.500, Opposite Team Of(Team Of(Event Player)), Surfaces And Enemy Barriers)
.SharedVar[0] = Event Player;
Wait(0.240, Ignore Condition);
End;
Stop Chasing Player Variable(Event Player, B);
Event Player.B = Null;
disabled Event Player.Cooldown[0] = 30;
Destroy Effect(Event Player.IDs[3]);
Wait(0.016, Ignore Condition);
Play Effect(All Players(All Teams), Ring Explosion, Color(Purple), Event Player.C, Event Player.A * 10);
Damage(Players Within Radius(Event Player.C, Event Player.A * 10, Opposite Team Of(Team Of(Event Player)), Surfaces), Event Player,
Event Player.A * 200);
Else;
Small Message(Event Player, Custom String("Distance too Close. Tesla Orb Aborted"));
End;
Else;
Small Message(Event Player, Custom String("Tesla Orb Terminated"));
End;
Wait(0.064, Ignore Condition);
Event Player.A = Null;
End;
}
}
rule("Winston Unique 2: Tesla Orb (Effect)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.SharedVar[0] == True;
}
actions
{
Create Beam Effect(All Players(All Teams), Bad Beam, Event Player, Event Player.SharedVar[0].B, Color(Blue), Position and Radius);
Event Player.SharedVar[1] = Last Created Entity;
Wait(0.016, Ignore Condition);
Start Damage Over Time(Event Player, Event Player.SharedVar[0], 15, 50 * Event Player.SharedVar[0].A);
Event Player.SharedVar[2] = Last Damage Over Time ID;
Wait Until(Distance Between(Event Player, Event Player.SharedVar[0].B) > 8 || Event Player.SharedVar[0].B != True, 20);
Destroy Effect(Event Player.SharedVar[1]);
Stop Damage Over Time(Event Player.SharedVar[2]);
Event Player.SharedVar[0] = False;
}
}
I Did come up with a way that IS specific to each player. So there could be several hero’s (in this case, Monkey) who could use this at the say time. However, it’s…ugly. It has to loop over Creating & Destroying the Effects & DOT every time the list changes (Variable X Array) which can happen several times a sec as it passes by a group of players…