Compatibility with Vanish pluginSuggestion
I edited the plugin on my server to fix the conflict it has when you are vanish enabled and not heli safe.  Follow these steps to update your plugin.

1. Insert the following on line 5...
using Oxide.Core;
using Oxide.Core.Libraries.Covalence;
using Oxide.Core.Plugins;
​

2. Then insert the following on what is now line 17...
private Plugin Vanish;​

3. Then insert the following on what is now line 124 (should be just before the "if(!skipStep)" line)...

				if (!(Vanish?.Call<bool>("IsInvisible", player) ?? false))
				{
					SetHostility(player, false);
					skipStep = true;
				}

For this to properly work, the following needs to be:

#2 (line 17)

[PluginReference] private Plugin Vanish;

Without the [PluginReference] Vanish ends up completely empty.

#3 (line 124)
if (Vanish?.Call<bool>("IsInvisible", player) ?? false)
{
    if (settings.DebugMessages)
    {
        Puts($"Detected vanished player for '{player.displayName}'.");
    }
    SetHostility(player, false);
    skipStep = true;
}
​

The ! actually evaluates it backwards and makes everyone invulnerable to the heli, and invisible people become vulnerable.  I added the DebugMessages in there just for consistency with the rest of the function.

It has been working very well on my server the way I posted it.  The addition of [PluginReference] is not needed. It could also work by removing the ! as you suggested but you would have to change the false to true on that same line.  I would not have posted this suggestion if it was not confirmed to work correctly.

?? is a null coalescing operator.  Basically all it says that if Vanish?.Call<bool>("IsInvisible", player) returns NULL (aka Vanish isn't installed for instance) it will evaluate that to false.  So, if the person is invisible, it returns true.  If Vanish returns that the person is visible, it returns false. If Vanish isn't found, it returns false (coalesced). If you add the debugmessages as I suggested, and turn on debugging, you will find that It is triggering the SetHostility(player, false) when the player is visible and not invisible.

As for the PluginReference, it could just be my version of Oxide (latest), but without it, Vanish was empty.  We figured that out by putting in a debug Put that output the contents of Vanish, which were empty until the PluginReference was added.

The Plugin variable would always be null if the attribute isn't there above it, as that attribute is used by Oxide to assign the instance of the plugin when it has loaded.