public IEnumerator <bool> Run() { while (true) { // Get Position Position = Entity.GetPosition(); yield return(true); // Get Entities Targets.Clear(); List <long> entities = MyVisualScriptLogicProvider.GetEntitiesInSphere(Position, Config.Instance.Radius); foreach (long entityId in entities) { if (entityId == Entity.EntityId) { continue; } IMyEntity entity = MyVisualScriptLogicProvider.GetEntityById(entityId); if (entity is IMyBatteryBlock) { IMyBatteryBlock bat = entity as IMyBatteryBlock; if (bat.IsSameConstructAs(Battery)) { continue; } if (!bat.Enabled) { continue; } if (bat.ChargeMode == Sandbox.ModAPI.Ingame.ChargeMode.Discharge) { continue; } Target targ = new Target() { IBattery = bat, Distance = (float)Vector3D.Distance(entity.GetPosition(), Position) }; targ.Loss = targ.Distance * Config.Instance.LossPercentPerM; Targets.Add(targ); } } yield return(true); yield return(true); } }