private async Task ActivateModule(Module module) { try { module.Activate(false); // If this is a profile module, activate the last active profile after module activation if (module is ProfileModule profileModule) { await _profileService.ActivateLastProfileAnimated(profileModule); } } catch (Exception e) { _logger.Error(new ArtemisPluginException(module.PluginInfo, "Failed to activate module and last profile.", e), "Failed to activate module and last profile"); throw; } }
private void OverrideActivate(Module module) { try { if (module.IsActivated) { return; } module.Activate(true); // If this is a profile module, activate the last active profile after module activation if (module is ProfileModule profileModule) { _profileService.ActivateLastProfile(profileModule); } } catch (Exception e) { _logger.Error(new ArtemisPluginException(module.PluginInfo, "Failed to activate module and last profile.", e), "Failed to activate module and last profile"); throw; } }
/// <inheritdoc /> protected override void OnActivate() { Module.Activate(); base.OnActivate(); }
bool Control(object[] Params) { if (!Session.InSpace || !Session.Safe) { return(false); } if (UndockWarp.Instance != null && !UndockWarp.Instance.Idle && UndockWarp.Instance.CurState.ToString() != "WaitStation") { return(false); } #region Cloaks if (Config.Cloaks) { Module cloakingDevice = MyShip.Modules.FirstOrDefault(a => a.GroupID == Group.CloakingDevice && a.IsOnline); if (cloakingDevice != null) { if ((MyShip.Capacitor / MyShip.MaxCapacitor * 100) < Config.CapCloaks || Decloak) { if (cloakingDevice.IsActive && !cloakingDevice.IsDeactivating) { cloakingDevice.Deactivate(); } } } } if (MyShip.ToEntity.Cloaked) { return(false); } if (Config.Cloaks) { Module cloakingDevice = MyShip.Modules.FirstOrDefault(a => a.GroupID == Group.CloakingDevice && a.IsOnline); if (cloakingDevice != null && (cloakingDevice.TypeID == 11578 || MyShip.ToEntity.Mode != EntityMode.Warping)) { if ((MyShip.Capacitor / MyShip.MaxCapacitor * 100) > Config.CapCloaks && !Decloak && !Entity.All.Any(a => a.Distance < 2000 && a.ID != MyShip.ToEntity.ID)) { if (!Entity.All.Any(a => a.IsTargetingMe && !a.Released && !a.Exploded)) { if (!cloakingDevice.IsActive && !cloakingDevice.IsActivating && !cloakingDevice.IsDeactivating) { cloakingDevice.Activate(); } return(false); } } } } if (MyShip.Modules.Any(a => a.GroupID == Group.CloakingDevice && a.IsActive && a.IsOnline)) { return(false); } #endregion #region Shield Boosters if (Config.ShieldBoosters) { List <Module> shieldBoosters = MyShip.Modules.Where(a => a.GroupID == Group.ShieldBooster && a.IsOnline).ToList(); if (shieldBoosters.Any()) { if ((MyShip.Capacitor / MyShip.MaxCapacitor * 100) > Config.CapShieldBoosters && MyShip.ToEntity.ShieldPct <= Config.MinShieldBoosters) { shieldBoosters.Where(a => a.AllowsActivate()).ForEach(m => m.Activate()); } if ((MyShip.Capacitor / MyShip.MaxCapacitor * 100) < Config.CapShieldBoosters || MyShip.ToEntity.ShieldPct > Config.MaxShieldBoosters) { shieldBoosters.Where(a => a.AllowsDeactivate()).ForEach(m => m.Deactivate()); } } } #endregion #region Armor Repairers if (Config.ArmorRepairs) { List <Module> armorRepairers = MyShip.Modules.Where(a => a.GroupID == Group.ArmorRepairUnit && a.IsOnline).ToList(); if (armorRepairers.Any()) { if ((MyShip.Capacitor / MyShip.MaxCapacitor * 100) > Config.CapArmorRepairs && MyShip.ToEntity.ArmorPct <= Config.MinArmorRepairs) { armorRepairers.Where(a => a.AllowsActivate()).ForEach(m => m.Activate()); } if ((MyShip.Capacitor / MyShip.MaxCapacitor * 100) < Config.CapArmorRepairs || MyShip.ToEntity.ArmorPct > Config.MaxArmorRepairs) { armorRepairers.Where(a => a.AllowsDeactivate()).ForEach(m => m.Deactivate()); } } } #endregion #region Active Hardeners if (Config.ActiveHardeners) { List <Module> shieldHardeners = MyShip.Modules.Where(a => a.GroupID == Group.ShieldHardener && a.IsOnline).ToList(); if (shieldHardeners.Any()) { if ((MyShip.Capacitor / MyShip.MaxCapacitor * 100) > Config.CapActiveHardeners && MyShip.ToEntity.ShieldPct <= Config.MinActiveThreshold) { shieldHardeners.Where(a => a.AllowsActivate()).ForEach(m => m.Activate()); } if (((MyShip.Capacitor / MyShip.MaxCapacitor * 100) < Config.CapActiveHardeners || MyShip.ToEntity.ShieldPct > Config.MinActiveThreshold)) { shieldHardeners.Where(a => a.AllowsDeactivate()).ForEach(m => m.Deactivate()); } } List <Module> armorHardeners = MyShip.Modules.Where(a => (a.GroupID == Group.ArmorHardener || a.GroupID == Group.ArmorResistanceShiftHardener) && a.IsOnline).ToList(); if (armorHardeners.Any()) { if ((MyShip.Capacitor / MyShip.MaxCapacitor * 100) > Config.CapActiveHardeners && MyShip.ToEntity.ArmorPct <= Config.MinActiveThreshold) { armorHardeners.Where(a => a.AllowsActivate()).ForEach(m => m.Activate()); } if ((MyShip.Capacitor / MyShip.MaxCapacitor * 100) < Config.CapActiveHardeners || MyShip.ToEntity.ArmorPct > Config.MinActiveThreshold) { armorHardeners.Where(a => a.AllowsDeactivate()).ForEach(m => m.Deactivate()); } } } #endregion #region Gang Links if (Config.GangLinks && MyShip.ToEntity.Mode != EntityMode.Warping) { List <Module> gangLinks = MyShip.Modules.Where(a => a.GroupID == Group.GangCoordinator && a.TypeID != 11014 && a.IsOnline).ToList(); if (gangLinks.Any()) { if ((MyShip.Capacitor / MyShip.MaxCapacitor * 100) > Config.CapGangLinks) { gangLinks.Where(a => a.AllowsActivate()).ForEach(m => m.Activate()); } if ((MyShip.Capacitor / MyShip.MaxCapacitor * 100) < Config.CapGangLinks) { gangLinks.Where(a => a.AllowsDeactivate()).ForEach(m => m.Deactivate()); } } } #endregion #region Sensor Boosters if (Config.SensorBoosters) { List <Module> sensorBoosters = MyShip.Modules.Where(a => a.GroupID == Group.SensorBooster && a.IsOnline).ToList(); if (sensorBoosters.Any()) { if ((MyShip.Capacitor / MyShip.MaxCapacitor * 100) > Config.CapSensorBoosters) { sensorBoosters.Where(a => a.AllowsActivate()).ForEach(m => m.Activate()); } if ((MyShip.Capacitor / MyShip.MaxCapacitor * 100) < Config.CapSensorBoosters) { sensorBoosters.Where(a => a.AllowsDeactivate()).ForEach(m => m.Deactivate()); } } } #endregion #region Tracking Computers if (Config.TrackingComputers) { List <Module> trackingComputers = MyShip.Modules.Where(a => (a.GroupID == Group.TrackingComputer || a.GroupID == Group.MissileGuidanceComputer) && a.IsOnline).ToList(); if (trackingComputers.Any()) { if ((MyShip.Capacitor / MyShip.MaxCapacitor * 100) > Config.CapTrackingComputers) { trackingComputers.Where(a => a.AllowsActivate()).ForEach(m => m.Activate()); } if ((MyShip.Capacitor / MyShip.MaxCapacitor * 100) < Config.CapTrackingComputers) { trackingComputers.Where(a => a.AllowsDeactivate()).ForEach(m => m.Deactivate()); } } } #endregion #region Drone Tracking Modules if (Config.DroneTrackingModules) { List <Module> droneTrackingModules = MyShip.Modules.Where(a => a.GroupID == Group.DroneTrackingModules && a.IsOnline).ToList(); if (droneTrackingModules.Any()) { if ((MyShip.Capacitor / MyShip.MaxCapacitor * 100) > Config.CapDroneTrackingModules) { droneTrackingModules.Where(a => a.AllowsActivate()).ForEach(m => m.Activate()); } if ((MyShip.Capacitor / MyShip.MaxCapacitor * 100) < Config.CapDroneTrackingModules) { droneTrackingModules.Where(a => a.AllowsDeactivate()).ForEach(m => m.Deactivate()); } } } #endregion #region ECCMs if (Config.ECCMs && MyShip.ToEntity.Mode != EntityMode.Warping) { List <Module> ECCM = MyShip.Modules.Where(a => a.GroupID == Group.ECCM && a.IsOnline).ToList(); if (ECCM.Any()) { if ((MyShip.Capacitor / MyShip.MaxCapacitor * 100) > Config.CapECCMs) { ECCM.Where(a => a.AllowsActivate()).ForEach(m => m.Activate()); } if ((MyShip.Capacitor / MyShip.MaxCapacitor * 100) < Config.CapECCMs) { ECCM.Where(a => a.AllowsDeactivate()).ForEach(m => m.Deactivate()); } } } #endregion #region ECMBursts if (Config.ECMBursts && MyShip.ToEntity.Mode != EntityMode.Warping) { List <Module> ECMBursts = MyShip.Modules.Where(a => a.GroupID == Group.BurstJammer && a.IsOnline).ToList(); if (ECMBursts.Any()) { if ((MyShip.Capacitor / MyShip.MaxCapacitor * 100) > Config.CapECMBursts) { ECMBursts.Where(a => a.AllowsActivate()).ForEach(m => m.Activate()); } if ((MyShip.Capacitor / MyShip.MaxCapacitor * 100) < Config.CapECMBursts) { ECMBursts.Where(a => a.AllowsDeactivate()).ForEach(m => m.Deactivate()); } } } #endregion #region Networked Sensor Array if (Config.DroneControlUnits && MyShip.ToEntity.Mode != EntityMode.Warping) { List <Module> droneControlUnits = MyShip.Modules.Where(a => (int)a.GroupID == 1706 && a.IsOnline).ToList(); if (droneControlUnits.Any()) { if ((MyShip.Capacitor / MyShip.MaxCapacitor * 100) > Config.CapDroneControlUnits) { droneControlUnits.Where(a => a.AllowsActivate()).ForEach(m => m.Activate()); } if ((MyShip.Capacitor / MyShip.MaxCapacitor * 100) < Config.CapDroneControlUnits) { droneControlUnits.Where(a => a.AllowsDeactivate()).ForEach(m => m.Deactivate()); } } } #endregion #region AutoTargeters if (Config.AutoTargeters && MyShip.ToEntity.Mode != EntityMode.Warping) { List <Module> autoTargeters = MyShip.Modules.Where(a => a.GroupID == Group.AutomatedTargetingSystem && a.IsOnline).ToList(); if (autoTargeters.Any()) { if ((MyShip.Capacitor / MyShip.MaxCapacitor * 100) > Config.CapAutoTargeters) { autoTargeters.Where(a => a.AllowsActivate()).ForEach(m => m.Activate()); } if ((MyShip.Capacitor / MyShip.MaxCapacitor * 100) < Config.CapAutoTargeters) { autoTargeters.Where(a => a.AllowsDeactivate()).ForEach(m => m.Deactivate()); } } } #endregion #region Propulsion Modules List <Module> propulsionModules = MyShip.Modules.Where(a => a.GroupID == Group.PropulsionModule && a.IsOnline).ToList(); if (MyShip.ToEntity.Mode == EntityMode.Warping && !KeepPropulsionModuleActive) { propulsionModules.Where(a => a.AllowsDeactivate()).ForEach(m => m.Deactivate()); return(false); } if (Config.PropulsionModules && propulsionModules.Any()) { if ((MyShip.Capacitor / MyShip.MaxCapacitor * 100) > Config.CapPropulsionModules && ((Config.PropulsionModulesApproaching && MyShip.ToEntity.Mode == EntityMode.Approaching) || (Config.PropulsionModulesOrbiting && MyShip.ToEntity.Mode == EntityMode.Orbiting) || Config.PropulsionModulesAlwaysOn)) { propulsionModules.Where(a => a.AllowsActivate()).ForEach(m => m.Activate()); } if (!KeepPropulsionModuleActive && !Config.PropulsionModulesAlwaysOn && ((MyShip.Capacitor / MyShip.MaxCapacitor * 100) < Config.CapPropulsionModules) || MyShip.ToEntity.Mode == EntityMode.Stopped || MyShip.ToEntity.Mode == EntityMode.Aligned) { propulsionModules.Where(a => a.AllowsDeactivate()).ForEach(m => m.Deactivate()); } } #endregion return(false); }