Can you prove that this one is? Where's it even stolen from?
On topic:
-
Unit - Set level of Ghost Ship Numbness for (Last created unit) to (Level of Ghost Ship for (Triggering unit))
You have a variable for (Triggering unit) - GhostShipCaster should be used in place.
--------------------------
-
(Custom value of (Picked unit)) Equal to 50
You should not use Custom Value, it will interfere with Unit Indexer resources. I suggest a variable in place.
---------------------------
-
Custom script: call DestroyGroup(udg_GhostShipArrived)
-
Custom script: call DestroyGroup(udg_GhostShipPickedUnit)
Move the Destroys after the unit group finishes, or you will destroy them on the first iteration.
---------------------------
-
Set GhostShip = (Picked unit)
Move this to the beginning of the Unit Group section, and use the variable for the first section too. It doesn't need to be declared in the middle.
--------------------------
To be loyal to DotA, "Return" should not be added when you learn X marks the spot, but when you cast it, and should be removed when X expires.
-------------------------
Ghost Ship movements are way too jerky - should be smoother.
-------------------------
X from X Marks the Spot appears at center of playable map area, does not go away.
-
Special Effect - Create a special effect attached to the overhead of (Target unit of ability being cast) using X_Mark_the_Spot.mdx
It is not a unit target, therefore you should not use Target of Ability Being Cast.
-------------------------
TorrentGroup leaks in Torrent trigger
-------------------------
In TorrentFlying, save Picked Unit to a unit variable and use it.
-------------------------
Torrent effect will be visible to enemies, giving away where the torrent is (extremely bad)