No, it wasn't leaking, but here's an improved version of your Weakened Morals trigger that should help:
-
Weakened Morals
-

Events
-


Unit - A unit starts the effect of an Ability
-

Conditions
-


(Ability being cast) Equal to Weakened Morals
-

Actions
-


Set TempPoint = (Target point of ability being cast)
-


Set Caster = (Casting unit)
-


Set CastingPlayer = (Triggering player)
-


Set TempGroup = (Units within 500.00 of TempPoint)
-


Unit - Create 1 Dummy (Uncle version) for CastingPlayer at TempPoint facing default building facing degrees
-


Custom script: call RemoveLocation(udg_TempPoint)
-


Set Dummy = (Last created unit)
-


Unit - Set level of Weakened Morals (dummy) for Dummy to (Level of Weakened Morals for Caster)
-


Unit - Add a 0.20 second generic expiration timer to Dummy
-


Unit Group - Pick every unit in TempGroup and do (Actions)
-



Loop - Actions
-




Set Target = (Picked unit)
-




If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-





If - Conditions
-






(Target is Alive) Equal to True
-






(Target belongs to an enemy of CastingPlayer) Equal to True
-





Then - Actions
-






Unit - Order Dummy to Undead Necromancer Banish Target
-





Else - Actions
-


Custom script: call DestroyGroup(udg_TempGroup)
Make sure your Dummy unit is based on the Locust unit with the following settings:
Movement Type = None, Speed Base = 0, Attacks Enabled = None, Model = None, Shadow = None
You really only need 1 Dummy unit with these settings for most if not all of your custom spells. It can cast any number of spells instantly without issue.
That being said, some custom spells use Dummy units as moving missiles which may require different settings than these.
And remember that units have AI that will order them to cast certain spells under certain circumstances. I image Inferno is coded to cast when there are multiple targets nearby. What you can do is disable this ability whenever it's not being manually forced to cast.
Also, Summon looks like a Unit variable, not a Unit-Type variable, so it's not "Set to the unit-type that the boss summons" like you said. Unless there's just a weird translation error or something. A Unit-Type comparison is what you want to use here.