How Do I Make a Constant Beam Weapon?

How do I create a continuous beam weapon? My current attempt is here but the effect does not get deleted when desired.

variables
{
player:
4: Energy
36: ProjVar1
37: ProjVar2
46: DestroyEffect1
47: DestroyEffect2
48: DestroyEffect3
85: RepulsorActive
}

rule("[IRONMAN]: Repulsor Ray Charge Sound")
{
event
{
Ongoing - Each Player;
Team 2;
Pharah;
}

conditions
{
	Is Button Held(Event Player, Primary Fire) == True;
	Is Alive(Event Player) == True;
}

actions
{
	Abort If(Has Status(Event Player, Knocked Down));
	Abort If(Has Status(Event Player, Stunned));
	Abort If(Has Status(Event Player, Asleep));
	Abort If(Has Status(Event Player, Rooted));
	Create Effect(All Players(All Teams), Energy Sound, White, Event Player, 1000, Visible To Position and Radius);
	Set Player Variable(Event Player, DestroyEffect1, Last Created Entity);
	Wait(0.500, Ignore Condition);
	Create Effect(All Players(All Teams), Sparkles Sound, White, Event Player, 10000, Visible To Position and Radius);
	Set Player Variable(Event Player, DestroyEffect2, Last Created Entity);
	Destroy Effect(Player Variable(Event Player, DestroyEffect1));
	Set Player Variable(Event Player, RepulsorActive, True);
}

}

rule("[IRONMAN]: Repulsor Ray Coordinates")
{
event
{
Ongoing - Each Player;
Team 2;
Pharah;
}

conditions
{
	Player Variable(Event Player, RepulsorActive) == True;
	Player Variable(Event Player, Energy) >= 10;
}

actions
{
	Abort If(Compare(Player Variable(Event Player, Energy), <=, 10));
	Wait(0.300, Ignore Condition);
	Modify Player Variable(Event Player, Energy, Subtract, 10);
	Set Player Variable(Event Player, ProjVar1, Ray Cast Hit Position(Eye Position(Event Player), Add(Eye Position(Event Player),
		Multiply(Facing Direction Of(Event Player), 1000)), All Players(All Teams), Event Player, True));
	Set Player Variable(Event Player, ProjVar2, Eye Position(Event Player));
	Play Effect(All Players(All Teams), Bad Explosion, Orange, Player Variable(Event Player, ProjVar1), 5);
	Chase Player Variable At Rate(Event Player, ProjVar2, Player Variable(Event Player, ProjVar1), 120, Destination and Rate);
	Set Player Variable(Event Player, ProjVar2, Eye Position(Event Player));
	Loop If Condition Is True;
}

}

rule("[IRONMAN]: Repulsor Ray Projectile")
{
event
{
Ongoing - Each Player;
Team 2;
Pharah;
}

conditions
{
	Player Variable(Event Player, RepulsorActive) == True;
	Player Variable(Event Player, Energy) >= 10;
}

actions
{
	Create Beam Effect(All Players(All Teams), Bad Beam, Eye Position(Event Player), Player Variable(Event Player, ProjVar2), Orange,
		Visible To Position and Radius);
	Set Player Variable(Event Player, DestroyEffect3, Last Created Entity);
}

}

rule("[IRONMAN]: End Loop")
{
event
{
Ongoing - Each Player;
Team 2;
Pharah;
}

conditions
{
	Player Variable(Event Player, Energy) < 10;
}

actions
{
	Destroy Effect(Player Variable(Event Player, DestroyEffect2));
	Destroy Effect(Player Variable(Event Player, DestroyEffect3));
	Set Player Variable(Event Player, RepulsorActive, False);
}

}

Is this where it goes wrong?

Also, have you made the dmg function yet?

Yes, I guess I forgot to put it in

Well, you set the variables, and deleted them. I don’t understand whats wrong. Imma warn you too,

I’ve noticed this too where rules don’t go false when using Wait() and Loop If Condition Is True