C#:
using System.Collections.Generic;
using UnityEngine;
using System.Linq;
// Added IsDestroyed check
namespace Oxide.Plugins
{
[Info("SharksWithFrickinLaserBeams", "Steenamaroo", "1.0.1", ResourceId = 0)]
[Description("Basic plugin writing template.")]
class SharksWithFrickinLaserBeams : RustPlugin
{
void OnServerInitialized()
{
foreach (var shark in BaseNetworkable.serverEntities.OfType<SimpleShark>())
AddLaser(shark);
}
void OnEntitySpawned(SimpleShark shark) => AddLaser(shark);
List<LaserDetector> detectors = new List<LaserDetector>();
void AddLaser(SimpleShark shark)
{
NextTick(() =>
{
if (shark == null || shark.IsDestroyed)
return;
LaserDetector laser = (LaserDetector)GameManager.server.CreateEntity("assets/prefabs/deployable/playerioents/detectors/laserdetector/laserdetector.prefab", Vector3.zero, Quaternion.Euler(0, 0, 0));
laser.Spawn();
laser.SetParent(shark, false, true);
detectors.Add(laser);
laser.UpdateHasPower(1000, 0);
});
}
void Unload()
{
foreach (var entry in detectors.ToList())
if (entry != null && !entry.IsDestroyed)
entry?.Kill();
}
}
}