diff --git a/Ship_Game/AI/ShipAI/ShipAI.Goods.cs b/Ship_Game/AI/ShipAI/ShipAI.Goods.cs index a58ea7f354..7ec62ed54f 100644 --- a/Ship_Game/AI/ShipAI/ShipAI.Goods.cs +++ b/Ship_Game/AI/ShipAI/ShipAI.Goods.cs @@ -144,7 +144,7 @@ public override void Execute(FixedSimTime timeStep, ShipAI.ShipGoal g) : FreighterPriority.ExcessCargoLeft; Owner.Loyalty.IncreaseFastVsBigFreighterRatio(freighterPriority); - importPlanet.Mend(-5); // Helping with planet repair/heal troops/buildings + importPlanet.Mend(2); // Helping with planet repair/heal troops/buildings Planet toOrbit = importPlanet; if (toOrbit.TradeBlocked || Owner.Loyalty != toOrbit.Owner) diff --git a/Ship_Game/AI/ShipAI/ShipAI.cs b/Ship_Game/AI/ShipAI/ShipAI.cs index ac1f878cf4..4993aab56f 100644 --- a/Ship_Game/AI/ShipAI/ShipAI.cs +++ b/Ship_Game/AI/ShipAI/ShipAI.cs @@ -367,7 +367,7 @@ public void ProcessResupply(ResupplyReason resupplyReason) Planet nearestRallyPoint = null; switch (resupplyReason) { - case ResupplyReason.LowOrdnanceCombat: + case ResupplyReason.LowOrdnanceCombatOrDepleted: case ResupplyReason.LowOrdnanceNonCombat: Ship supplyShip = NearBySupplyShip; if (supplyShip != null && State != AIState.ResupplyEscort) diff --git a/Ship_Game/Espionage/InfiltrationOpsRebellion.cs b/Ship_Game/Espionage/InfiltrationOpsRebellion.cs index dbe2f843ee..6d45eb98f4 100644 --- a/Ship_Game/Espionage/InfiltrationOpsRebellion.cs +++ b/Ship_Game/Espionage/InfiltrationOpsRebellion.cs @@ -1,4 +1,5 @@ using Microsoft.Xna.Framework; +using SDGraphics; using SDUtils; using Ship_Game.Data.Serialization; using Ship_Game.Ships; @@ -33,17 +34,17 @@ public override void CompleteOperation() Espionage espionage = Owner.GetEspionage(Them); var potentials = Them.GetPlanets().Sorted(p => p.PopulationBillion).TakeItems(5); Planet targetPlanet = Them.Random.Item(potentials); - int numRebels = 5 + targetPlanet.GetDefendingTroopCount() + targetPlanet.NumMilitaryBuildings; + int numRebels = (targetPlanet.GetDefendingTroopCount() + targetPlanet.NumMilitaryBuildings - 2).LowerBound(2); float takeoverOrbitalChance = 50; switch (result) { case InfiltrationOpsResult.Phenomenal: - numRebels += 7; + numRebels += 5; takeoverOrbitalChance = 100; break; case InfiltrationOpsResult.GreatSuccess: - numRebels += 3; + numRebels += 2; takeoverOrbitalChance = 75; break; case InfiltrationOpsResult.Success: diff --git a/Ship_Game/Fleets/Fleet.cs b/Ship_Game/Fleets/Fleet.cs index 62bd2ceb5f..a3031877d3 100644 --- a/Ship_Game/Fleets/Fleet.cs +++ b/Ship_Game/Fleets/Fleet.cs @@ -969,7 +969,7 @@ void DoAssaultPlanet(MilitaryTask task) bool combatEffective = StillCombatEffective(task); bool remnantsTargeting = !Owner.WeAreRemnants && CommandShip?.System == task.TargetPlanet.System - && Owner.Universe.Remnants.AnyActiveFleetsTargetingSystem(task.TargetPlanet.System); + && Owner.Universe.Remnants.Remnants.HostileTargetingSystem(task.TargetPlanet.System); EndInvalidTask(remnantsTargeting || !MajorityTroopShipsAreInWell(task.TargetPlanet) && (!invasionEffective || !combatEffective)); @@ -1610,7 +1610,7 @@ void DoGlassPlanet(MilitaryTask task) bool remnantsTargeting = !Owner.WeAreRemnants && CommandShip?.System == task.TargetPlanet.System - && Owner.Universe.Remnants.AnyActiveFleetsTargetingSystem(task.TargetPlanet.System); + && Owner.Universe.Remnants.Remnants.HostileTargetingSystem(task.TargetPlanet.System); if (EndInvalidTask(task.TargetPlanet.Owner == null || remnantsTargeting || !StillCombatEffective(task))) return; diff --git a/Ship_Game/GameScreens/DiplomacyScreen/RelationshipsDiagramScreen.cs b/Ship_Game/GameScreens/DiplomacyScreen/RelationshipsDiagramScreen.cs index 3e89be74fb..02244602ae 100644 --- a/Ship_Game/GameScreens/DiplomacyScreen/RelationshipsDiagramScreen.cs +++ b/Ship_Game/GameScreens/DiplomacyScreen/RelationshipsDiagramScreen.cs @@ -135,19 +135,10 @@ void HandleSelectedEmpire(InputState input) void DrawRelations(SpriteBatch batch) { Peer[] knownPeers = Peers.Filter(p => p.IntelLevel > 0); - if (!ViewOnlyWarsOrAllies) - { - foreach (Peer us in knownPeers) - foreach (Peer peer in Peers) - if (ShowPeer(us.Empire, peer.Empire)) - DrawPeerLinesNoWarOrAlliance(batch, us, peer); - } - - // Drawing War/Alliance on top of all other lines foreach (Peer us in knownPeers) foreach (Peer peer in Peers) - if (ShowPeer(us.Empire, peer.Empire)) - DrawPeerLinesWarOrAlliance(batch, us, peer); + if (ShowPeer(us.Empire, peer.Empire)) + DrawTreatyPeerLines(batch, us, peer); foreach (Peer empire in Peers) { @@ -163,10 +154,10 @@ bool ShowPeer(Empire us, Empire peer) && (SelectedEmpire == null || SelectedEmpire == us || SelectedEmpire == peer); } - void DrawPeerLinesNoWarOrAlliance(SpriteBatch batch, Peer us, Peer peer) + void DrawTreatyPeerLines(SpriteBatch batch, Peer us, Peer peer) { Relationship rel = us.Empire.GetRelationsOrNull(peer.Empire); - if (rel == null || rel.AtWar || rel.Treaty_Alliance) + if (rel == null) return; if (rel.Treaty_Peace) @@ -175,25 +166,22 @@ void DrawPeerLinesNoWarOrAlliance(SpriteBatch batch, Peer us, Peer peer) return; } - if (rel.Treaty_OpenBorders) - DrawPeerLine(batch, us.LinkPos, peer.LinkPos, ColorBorders); - else if (rel.Treaty_NAPact) - DrawPeerLine(batch, us.LinkPos, peer.LinkPos, ColorNap); - if (ViewTradeTreaties && rel.Treaty_Trade) DrawPeerLine(batch, us.TradePos, peer.TradePos, ColorTrade); - } - void DrawPeerLinesWarOrAlliance(SpriteBatch batch, Peer source, Peer peer) - { - Relationship rel = source.Empire.GetRelationsOrNull(peer.Empire); - if (rel == null) - return; + if (!ViewOnlyWarsOrAllies) + { + if (rel.Treaty_OpenBorders) + DrawPeerLine(batch, us.LinkPos, peer.LinkPos, ColorBorders); + else if (rel.Treaty_NAPact) + DrawPeerLine(batch, us.LinkPos, peer.LinkPos, ColorNap); + } if (rel.AtWar) - DrawPeerLine(batch, source.LinkPos, peer.LinkPos, ColorWar, thickness: 3); + DrawPeerLine(batch, us.LinkPos, peer.LinkPos, ColorWar, thickness: 3); else if (rel.Treaty_Alliance) - DrawPeerLine(batch, source.LinkPos, peer.LinkPos, ColorAlly, thickness: 3); + DrawPeerLine(batch, us.LinkPos, peer.LinkPos, ColorAlly, thickness: 3); + } void DrawPeerLine(SpriteBatch batch, Vector2 pos1, Vector2 pos2, Color color, int thickness = 1) diff --git a/Ship_Game/Remnants.cs b/Ship_Game/Remnants.cs index 0025fe8634..3c78cac75a 100644 --- a/Ship_Game/Remnants.cs +++ b/Ship_Game/Remnants.cs @@ -619,6 +619,14 @@ public float RequiredAttackFleetStr(Empire targetEmpire) max: str * effectiveLevel / MaxLevel); } + public bool HostileTargetingSystem(SolarSystem solarSystem) + { + if (Story == RemnantStory.AncientHelpers) + return false; + + return Owner.AnyActiveFleetsTargetingSystem(solarSystem); + } + public void CallGuardians(Ship portal) // One guarding from each relevant system { foreach (SolarSystem system in portal.Universe.Systems) diff --git a/Ship_Game/Ships/Ship.cs b/Ship_Game/Ships/Ship.cs index 2aa91f57ee..2c081b5688 100644 --- a/Ship_Game/Ships/Ship.cs +++ b/Ship_Game/Ships/Ship.cs @@ -65,7 +65,7 @@ public partial class Ship : PhysicsObject, IDisposable public bool EnginesKnockedOut; public float InhibitionRadius; public bool IsPlatform; - public bool IsGuardian; // Remnant Guardian created at game start + public bool IsGuardian; // All Remnant ships are guardians SceneObject ShipSO; public bool ManualHangarOverride; [StarData] public Ship Mothership; diff --git a/Ship_Game/Ships/ShipInfoUIElement.cs b/Ship_Game/Ships/ShipInfoUIElement.cs index b0b80ffd63..5963e464b3 100644 --- a/Ship_Game/Ships/ShipInfoUIElement.cs +++ b/Ship_Game/Ships/ShipInfoUIElement.cs @@ -385,10 +385,10 @@ void DrawResupplyReason(SpriteBatch batch, Ship ship) } break; case ResupplyReason.LowOrdnanceNonCombat: - case ResupplyReason.LowOrdnanceCombat: text = "Ammo Reserves Critical"; break; - case ResupplyReason.NoCommand: text = "No Command, Cannot Attack"; break; - case ResupplyReason.FighterReactorsDamaged: text = "Reactors Damaged"; break; - case ResupplyReason.LowHealth: text = "Structural Integrity Compromised"; break; + case ResupplyReason.LowOrdnanceCombatOrDepleted: text = "Ammo Reserves Critical"; break; + case ResupplyReason.NoCommand: text = "No Command, Cannot Attack"; break; + case ResupplyReason.FighterReactorsDamaged: text = "Reactors Damaged"; break; + case ResupplyReason.LowHealth: text = "Structural Integrity Compromised"; break; case ResupplyReason.LowTroops: text = "Need Troops"; int numTroopRebasing = ship.NumTroopsRebasingHere; diff --git a/Ship_Game/Ships/ShipResupply.cs b/Ship_Game/Ships/ShipResupply.cs index 6e5b04edb0..e71f4d4151 100644 --- a/Ship_Game/Ships/ShipResupply.cs +++ b/Ship_Game/Ships/ShipResupply.cs @@ -85,7 +85,7 @@ public ResupplyReason Resupply() || Ship.IsSingleTroopShip || Ship.IsSupplyShuttle || Ship.Carrier.HasSupplyShuttlesInSpace - || (Ship.AI.HasPriorityOrder || Ship.AI.HasPriorityTarget) && Ship.AI.State != AIState.Bombard && !Ship.Resupplying) + || Ship.AI.HasPriorityOrder && Ship.AI.State != AIState.Bombard && !Ship.Resupplying) { return ResupplyReason.NotNeeded; } @@ -100,8 +100,8 @@ public ResupplyReason Resupply() if (ResupplyNeededLowOrdnance()) { - if (InCombat) - return ResupplyReason.LowOrdnanceCombat; + if (InCombat || Ship.OrdnancePercent < OrdnanceThresholdCombat) + return ResupplyReason.LowOrdnanceCombatOrDepleted; return Ship.IsPlatformOrStation ? ResupplyReason.RequestResupplyForOrbital : ResupplyReason.LowOrdnanceNonCombat; @@ -317,7 +317,7 @@ public enum ResupplyReason { NotNeeded, LowHealth, - LowOrdnanceCombat, + LowOrdnanceCombatOrDepleted, LowOrdnanceNonCombat, LowTroops, FighterReactorsDamaged, diff --git a/Ship_Game/Ships/Ship_Rendering.cs b/Ship_Game/Ships/Ship_Rendering.cs index 9b7ff2f9bd..91dcfa5fc2 100644 --- a/Ship_Game/Ships/Ship_Rendering.cs +++ b/Ship_Game/Ships/Ship_Rendering.cs @@ -297,7 +297,9 @@ public void DrawTacticalIcon(UniverseScreen us, UniverseScreen.UnivScreenState v } else if (viewState <= UniverseScreen.UnivScreenState.ShipView) { - DrawTactical(us, pos, radius, 16f, 8f); + if (!HasSO) + DrawTactical(us, pos, radius, radius, radius*1.8f); + DrawStatusIcons(us, radius, pos); } } diff --git a/Ship_Game/Universe/SolarBodies/Planet/Planet.cs b/Ship_Game/Universe/SolarBodies/Planet/Planet.cs index c9941b74cd..a12c234ce9 100644 --- a/Ship_Game/Universe/SolarBodies/Planet/Planet.cs +++ b/Ship_Game/Universe/SolarBodies/Planet/Planet.cs @@ -72,7 +72,7 @@ public override string ToString() => [StarData] public Mineable Mining; [StarData] public float SensorRange { get; private set; } - public bool SpaceCombatNearPlanet { get; private set; } // FB - warning - this will be false if there is owner for the planet + public bool SpaceCombatNearPlanet { get; private set; } // FB - warning - this will be false if there is no owner for the planet public float ColonyValue { get; private set; } public float ExcessGoodsIncome { get; private set; } // FB - excess goods tax for empire to collect public float SpaceDefMaintenance { get; private set; } @@ -597,7 +597,7 @@ void UpdateHabitable(FixedSimTime timeStep) PlanetUpdatePerTurnTimer = Universe.P.TurnTimer; UpdateBaseFertility(); UpdateDynamicBuildings(); - Mend(((int)InfraStructure + Level).Clamped(1, 10)); + Mend(SpaceCombatNearPlanet || RecentCombat ? 1 : (int)(InfraStructure + Level).Clamped(1, 10)); } Troops.Update(timeStep); @@ -883,6 +883,7 @@ void UpdatePlanetShields() if (ShieldStrengthCurrent == 0 && Shield != null) Shield = null; } + public bool CanRepairOrHeal() { return BombingIntensity == 0 || Random.RollDice(100 - BombingIntensity); diff --git a/Ship_Game/Universe/SolarBodies/SolarSystemBody.cs b/Ship_Game/Universe/SolarBodies/SolarSystemBody.cs index eecb649a08..509a2462a2 100644 --- a/Ship_Game/Universe/SolarBodies/SolarSystemBody.cs +++ b/Ship_Game/Universe/SolarBodies/SolarSystemBody.cs @@ -68,7 +68,7 @@ public void DamageColonySurface(Bomb bomb) DamageBuildings(hardDamage, bomb.ShipLevel); TryCreateVolcano(hardDamage); Surface.ApplyBombEnvEffects(popKilled, envDamage, bomb.Owner); // Fertility and pop loss - Surface.AddBombingIntensity(hardDamage); + Surface.AddBombingIntensity(hardDamage*2); } void TryCreateVolcano(int hardDamage) diff --git a/Ship_Game/Universe/UniverseScreen/UniverseScreen.Draw.cs b/Ship_Game/Universe/UniverseScreen/UniverseScreen.Draw.cs index cb9e1be424..07548fac3a 100644 --- a/Ship_Game/Universe/UniverseScreen/UniverseScreen.Draw.cs +++ b/Ship_Game/Universe/UniverseScreen/UniverseScreen.Draw.cs @@ -750,7 +750,7 @@ void DrawShipsAndProjectiles(SpriteBatch batch) Ship ship = ships[i]; if (ship.InFrustum && ship.InPlayerSensorRange) { - if ((viewState > UnivScreenState.ShipView || ShowingFTLOverlay || !ship.HasSO) && !IsCinematicModeEnabled) + if (!IsCinematicModeEnabled) DrawTacticalIcon(ship); DrawOverlay(ship); @@ -820,7 +820,6 @@ void DrawOverlay(Ship ship) void DrawTacticalIcon(Ship ship) { if (!LookingAtPlanet && (!ship.IsSubspaceProjector || ShowingFTLOverlay)) - { ship.DrawTacticalIcon(this, viewState); } diff --git a/UnitTests/Ships/CarrierTests.cs b/UnitTests/Ships/CarrierTests.cs index 47b4759873..dcd6080af7 100644 --- a/UnitTests/Ships/CarrierTests.cs +++ b/UnitTests/Ships/CarrierTests.cs @@ -216,7 +216,7 @@ public void CarrierOrdnanceInSpace() // NOTE: This requires Carrier to have low ordnance production capability ResupplyReason resupplyReason = Carrier.Supply.Resupply(); - AssertEqual(resupplyReason, ResupplyReason.LowOrdnanceNonCombat, "Carrier should want to resupply non combat"); + AssertEqual(resupplyReason, ResupplyReason.LowOrdnanceCombatOrDepleted, "Carrier should want to resupply depleted"); Carrier.ChangeOrdnance(Carrier.OrdinanceMax); // add all ordnance AssertEqual(Carrier.Ordinance, Carrier.OrdinanceMax, "Carrier ordnance storage should be full"); diff --git a/UnitTests/Ships/TestResupplyLogic.cs b/UnitTests/Ships/TestResupplyLogic.cs index fb821494db..5fec6cbe82 100644 --- a/UnitTests/Ships/TestResupplyLogic.cs +++ b/UnitTests/Ships/TestResupplyLogic.cs @@ -49,7 +49,7 @@ public void ResupplyConditionOrdnanceNonCombat() OurShip.ChangeOrdnance(-OurShip.OrdinanceMax); resupplyReason = OurShip.Supply.Resupply(); - Assert.IsTrue(resupplyReason == ResupplyReason.LowOrdnanceNonCombat, "Ship should need resupply for low ordnance not in combat"); + Assert.IsTrue(resupplyReason == ResupplyReason.LowOrdnanceCombatOrDepleted, "Ship should need resupply for low ordnance depleted"); OurShip.AI.ProcessResupply(resupplyReason); Assert.IsTrue(OurShip.AI.IgnoreCombat, "Ship should ignore combat after processing resupply"); Assert.IsTrue(OurShip.AI.HasPriorityOrder, "Ship should have a priority order when resupplying"); @@ -88,7 +88,7 @@ public void ResupplyConditionOrdnanceInCombat() OurShip.ChangeOrdnance(-2); // Now go below he combat threshold resupplyReason = OurShip.Supply.Resupply(); - Assert.IsTrue(resupplyReason == ResupplyReason.LowOrdnanceCombat, "Ship should need resupply if ordnance below combat threshold"); + Assert.IsTrue(resupplyReason == ResupplyReason.LowOrdnanceCombatOrDepleted, "Ship should need resupply if ordnance below combat threshold"); } [TestMethod] diff --git a/game/Content/GameText.yaml b/game/Content/GameText.yaml index 97dd40a972..137931b109 100644 --- a/game/Content/GameText.yaml +++ b/game/Content/GameText.yaml @@ -12303,8 +12303,8 @@ EmpireRelationships: UKR: "Перехресні посилання на імперські відносини" ViewWarsOrAlliancesName: Id: 4350 - ENG: "View Wars or Alliances" - UKR: "Переглянути війни або альянси" + ENG: "View Only Wars or Alliances" + UKR: "Перегляньте лише війни чи союзи" ViewWarsOrAlliancesTip: Id: 4351 ENG: "Filters out non War or Alliances links" diff --git a/game/Content/ShipDesigns/Remnant/Ancient Assimilator.design b/game/Content/ShipDesigns/Remnant/Ancient Assimilator.design index 133c9e74d4..17aa91c4bc 100644 --- a/game/Content/ShipDesigns/Remnant/Ancient Assimilator.design +++ b/game/Content/ShipDesigns/Remnant/Ancient Assimilator.design @@ -12,6 +12,7 @@ HangarDesignation=General IsShipyard=false IsOrbitalDefense=false IsCarrierOnly=false +FixedUpkeep=1 # Maps module UIDs to Index, first UID has index 0 ModuleUIDs=AncientArmor_3x3;AncientArmor_2x2;Sensor1x2;AncientArmor_1x1;LaserCannon;EnergyPDRapid;MarineBarracks6x3;EnergyPDHeavy;TroopAssaultBay;AdvAmplifier;EMPTurret3x3;AncientShield_3x3;Amplifier;Bridge;SiphonBeam2x3;Main Engineering;ThalaronBeam2x3;AncientReactorMed;AncientShield2kw;RemnantSmallReactor;Reinforced Bulkhead;TractorBeamTurret2x2;Internal Bulkhead;RemnantEngine1;RemnantEngine3 Modules=131 diff --git a/game/Content/ShipDesigns/Remnant/Ancient Battleship.design b/game/Content/ShipDesigns/Remnant/Ancient Battleship.design index 758d230b52..2bb8f7852f 100644 --- a/game/Content/ShipDesigns/Remnant/Ancient Battleship.design +++ b/game/Content/ShipDesigns/Remnant/Ancient Battleship.design @@ -11,6 +11,7 @@ HangarDesignation=General IsShipyard=false IsOrbitalDefense=false IsCarrierOnly=false +FixedUpkeep=3 # Maps module UIDs to Index, first UID has index 0 ModuleUIDs=AncientArmor_3x3;AncientArmor_2x2;EnergyPDRapid;Amplifier;Pulse Capacitor;AncientArmor_1x1;HVTurret_3x3;AncientShield_3x3;RemnantSmallFuelCell;IonCannon1x3;QTCannon;DisintegratorArray;Bridge;MarineBarracks2x2;RemnantPort;Main Engineering;Sensor1x2;RemnantNuker;AncientReactorMed;RemnantEngine1;WarpEngine_3x3;RemnantEngine3 Modules=102 diff --git a/game/Content/ShipDesigns/Remnant/Ancient Bomber.design b/game/Content/ShipDesigns/Remnant/Ancient Bomber.design index 16bfe9eaad..436d687b5a 100644 --- a/game/Content/ShipDesigns/Remnant/Ancient Bomber.design +++ b/game/Content/ShipDesigns/Remnant/Ancient Bomber.design @@ -12,6 +12,7 @@ HangarDesignation=General IsShipyard=false IsOrbitalDefense=false IsCarrierOnly=false +FixedUpkeep=1 # Maps module UIDs to Index, first UID has index 0 ModuleUIDs=Crystal Armor Large;Crystal Armor Med;PhasorTurret2x2;RemnantSmallFuelCell;MarineBarracks2x2;NuclearBombBay2x2;AncientShield_3x3;PolaronTurret4x4;Bridge;AncientReactorMed;LaserCannon;Main Engineering;Fabricator;IonCannon1x3;Crystal Armor Small;RemnantSmallReactor;EnergyPDHeavy;RemnantEngine1;RemnantEngine3 Modules=125 diff --git a/game/Content/ShipDesigns/Remnant/Ancient Carrier.design b/game/Content/ShipDesigns/Remnant/Ancient Carrier.design index 1d38ac2d3e..f2b6cd4cbd 100644 --- a/game/Content/ShipDesigns/Remnant/Ancient Carrier.design +++ b/game/Content/ShipDesigns/Remnant/Ancient Carrier.design @@ -12,6 +12,7 @@ HangarDesignation=General IsShipyard=false IsOrbitalDefense=false IsCarrierOnly=false +FixedUpkeep=3 # Maps module UIDs to Index, first UID has index 0 ModuleUIDs=AncientArmor_3x3;AncientArmor_2x2;AncientShield2kw;AncientArmor_1x1;Amplifier;Raider Bay;RemnantNuker;FighterBay;Bridge;RemnantHV2x3;Main Engineering;AncientShield_3x3;OrdnanceLockerSmall;RemnantSmallFuelCell;Fabricator;AncientReactorMed;EnergyPDHeavy;EnergyPDRapid;RemnantEngine1;WarpEngine_1x1;DarkMatterCannon_1x2;RemnantEngine3 Modules=116 diff --git a/game/Content/ShipDesigns/Remnant/Ancient Cruiser.design b/game/Content/ShipDesigns/Remnant/Ancient Cruiser.design index 1331ec3331..aecc47a665 100644 --- a/game/Content/ShipDesigns/Remnant/Ancient Cruiser.design +++ b/game/Content/ShipDesigns/Remnant/Ancient Cruiser.design @@ -12,6 +12,7 @@ HangarDesignation=General IsShipyard=false IsOrbitalDefense=false IsCarrierOnly=false +FixedUpkeep=1 # Maps module UIDs to Index, first UID has index 0 ModuleUIDs=CompositeAlloys Large;CompositeAlloys Med;AdvancedCellSmall;Pulse Capacitor;BosonTransmiter;PhasorTurret2x2;AdvancedCellMed;MarineBarracks2x2;CompositeAlloys Small;PolaronTurret4x4;RemnantSmallReactor;AncientShield_3x3;DisintegratorArray;AncientReactorMed;Bridge;EnergyPDHeavy;EnergyPDRapid;RemnantEngine1;RemnantEngine3 Modules=135 diff --git a/game/Content/ShipDesigns/Remnant/Ancient Frigate.design b/game/Content/ShipDesigns/Remnant/Ancient Frigate.design index 2cd352e694..68cc8a3282 100644 --- a/game/Content/ShipDesigns/Remnant/Ancient Frigate.design +++ b/game/Content/ShipDesigns/Remnant/Ancient Frigate.design @@ -12,6 +12,7 @@ HangarDesignation=General IsShipyard=false IsOrbitalDefense=false IsCarrierOnly=false +FixedUpkeep=0.05 # Maps module UIDs to Index, first UID has index 0 ModuleUIDs=PlaSteelArmorMed;PlaSteelArmorSmall;FusionTurret2x2;RemnantSmallFuelCell;RemnantDrisruptor_2x2;AncientShield2kw;EnergyPDHeavy;EnergyPDRapid;IonCannon1x3;AncientReactorMed;Reinforced Bulkhead;MarineBarracks2x2;RemnantSmallReactor;Bridge;RemnantEngine1;RemnantEngine2 Modules=78 diff --git a/game/Content/ShipDesigns/Remnant/Ancient Torpedo Cruiser.design b/game/Content/ShipDesigns/Remnant/Ancient Torpedo Cruiser.design index 617cce8a90..bd4c6a7cd5 100644 --- a/game/Content/ShipDesigns/Remnant/Ancient Torpedo Cruiser.design +++ b/game/Content/ShipDesigns/Remnant/Ancient Torpedo Cruiser.design @@ -12,6 +12,7 @@ HangarDesignation=General IsShipyard=false IsOrbitalDefense=false IsCarrierOnly=false +FixedUpkeep=1 # Maps module UIDs to Index, first UID has index 0 ModuleUIDs=AncientArmor_3x3;AncientArmor_2x2;EnergyPDHeavy;Amplifier;EnergyPDRapid;Pulse Capacitor;AncientArmor_1x1;QTCannon;RemnantHV2x3;RemnantSmallFuelCell;AncientShield_3x3;Fabricator;IonCannon1x3;Bridge;MarineBarracks2x2;DarkMatterCannon_1x2;Main Engineering;Sensor1x2;RemnantNuker;AncientReactorMed;RemnantEngine1;WarpEngine_3x3;RemnantEngine3 Modules=93 diff --git a/game/Content/ShipDesigns/Remnant/Battle Drone.design b/game/Content/ShipDesigns/Remnant/Battle Drone.design index d1d8ec0080..a33bbf441d 100644 --- a/game/Content/ShipDesigns/Remnant/Battle Drone.design +++ b/game/Content/ShipDesigns/Remnant/Battle Drone.design @@ -11,6 +11,7 @@ HangarDesignation=General IsShipyard=false IsOrbitalDefense=false IsCarrierOnly=false +FixedUpkeep=0.03 # Maps module UIDs to Index, first UID has index 0 ModuleUIDs=AncientArmor_1x1;RemnantDrisruptor_2x2;Amplifier;Cockpit;AncientShield2kw;AncientReactorMed;RemnantEngine1;RemnantEngine2 Modules=23 diff --git a/game/Content/ShipDesigns/Remnant/Beam Drone.design b/game/Content/ShipDesigns/Remnant/Beam Drone.design index a265b76085..ddd55a4f7f 100644 --- a/game/Content/ShipDesigns/Remnant/Beam Drone.design +++ b/game/Content/ShipDesigns/Remnant/Beam Drone.design @@ -11,6 +11,7 @@ HangarDesignation=General IsShipyard=false IsOrbitalDefense=false IsCarrierOnly=false +FixedUpkeep=0.03 # Maps module UIDs to Index, first UID has index 0 ModuleUIDs=AncientArmor_1x1;Amplifier;Cockpit;FusionTurret2x2;IonCannon1x2;AncientShield2kw;LaserCannon;AncientReactorMed;RemnantEngine1;RemnantEngine2 Modules=27 diff --git a/game/Content/ShipDesigns/Remnant/Behemoth.design b/game/Content/ShipDesigns/Remnant/Behemoth.design index 4a87b1becb..ae8090a541 100644 --- a/game/Content/ShipDesigns/Remnant/Behemoth.design +++ b/game/Content/ShipDesigns/Remnant/Behemoth.design @@ -11,6 +11,7 @@ HangarDesignation=General IsShipyard=false IsOrbitalDefense=false IsCarrierOnly=false +FixedUpkeep=20 # Maps module UIDs to Index, first UID has index 0 ModuleUIDs=AncientArmorV2_1x1;AncientArmorV2_3x3;AncientArmorV2_2x2;REDisintegratorArray;RemnantSmallReactor;Maneuvering_Thruster_1x4;BosonTransmiter;LRMmk3;AntiMatterReactor;EMPTurret2x2;ConventionalTorpedo;RepairDrone;AdvancedCellSmall;Main Engineering;Inertial Damper;RemnantNuker;Phalanx PD;Internal Bulkhead;CanopyShield;FlakAA Cannon;Warp Inhibitor;PolaronTurret3x3;Aegis;Crystal Armor Small;PolaronTurret4x4;AdvancedCellMed;CIC;MarineBarracks6x3;OrdnanceLockerSmall;RemnantPort;AdvAmplifier;OrdnanceLocker;Pulse Capacitor;SubspaceSensors;RemnantEngine4 Modules=1025 diff --git a/game/Content/ShipDesigns/Remnant/Captured Gunship.design b/game/Content/ShipDesigns/Remnant/Captured Gunship.design index 8561b3d530..343b14f6fa 100644 --- a/game/Content/ShipDesigns/Remnant/Captured Gunship.design +++ b/game/Content/ShipDesigns/Remnant/Captured Gunship.design @@ -12,6 +12,7 @@ HangarDesignation=General IsShipyard=false IsOrbitalDefense=false IsCarrierOnly=false +FixedUpkeep=0.03 # Maps module UIDs to Index, first UID has index 0 ModuleUIDs=SteelArmorSmall;Sensor1x2;DarkMatterCannon_1x2;AncientShield2kw;RemnantSmallReactor;AncientReactorMed;Cockpit;RemnantEngine2 Modules=27 diff --git a/game/Content/ShipDesigns/Remnant/Heavy Drone.design b/game/Content/ShipDesigns/Remnant/Heavy Drone.design index 7349068928..f5972280f9 100644 --- a/game/Content/ShipDesigns/Remnant/Heavy Drone.design +++ b/game/Content/ShipDesigns/Remnant/Heavy Drone.design @@ -11,6 +11,7 @@ HangarDesignation=General IsShipyard=false IsOrbitalDefense=false IsCarrierOnly=false +FixedUpkeep=0.03 # Maps module UIDs to Index, first UID has index 0 ModuleUIDs=PlaSteelArmorSmall;Amplifier;Cockpit;RemnantHV2x3;AncientShield2kw;AncientReactorMed;RemnantEngine1;RemnantEngine2 Modules=25 diff --git a/game/Content/ShipDesigns/Remnant/Hvy Drone Mk IV.design b/game/Content/ShipDesigns/Remnant/Hvy Drone Mk IV.design index 43faf2db8c..f42042ee29 100644 --- a/game/Content/ShipDesigns/Remnant/Hvy Drone Mk IV.design +++ b/game/Content/ShipDesigns/Remnant/Hvy Drone Mk IV.design @@ -12,6 +12,7 @@ HangarDesignation=General IsShipyard=false IsOrbitalDefense=false IsCarrierOnly=false +FixedUpkeep=0.03 # Maps module UIDs to Index, first UID has index 0 ModuleUIDs=AncientArmor_1x1;Amplifier;RemnantDrisruptor_2x2;AncientShield2kw;AncientReactorMed;Cockpit;RemnantEngine2 Modules=26 diff --git a/game/Content/ShipDesigns/Remnant/Light Ancient Bomber.design b/game/Content/ShipDesigns/Remnant/Light Ancient Bomber.design index 3bb153678f..30b7db43af 100644 --- a/game/Content/ShipDesigns/Remnant/Light Ancient Bomber.design +++ b/game/Content/ShipDesigns/Remnant/Light Ancient Bomber.design @@ -12,6 +12,7 @@ HangarDesignation=General IsShipyard=false IsOrbitalDefense=false IsCarrierOnly=false +FixedUpkeep=0.03 # Maps module UIDs to Index, first UID has index 0 ModuleUIDs=PlaSteelArmorSmall;OrdnanceLockerSmall;NuclearBombBay2x2;DarkMatterCannon_1x2;AncientShield2kw;Amplifier;AncientReactorMed;Cockpit;RemnantEngine2 Modules=24 diff --git a/game/Content/ShipDesigns/Remnant/Medium Ancient Bomber.design b/game/Content/ShipDesigns/Remnant/Medium Ancient Bomber.design index 0ffc2d2233..e492efa17a 100644 --- a/game/Content/ShipDesigns/Remnant/Medium Ancient Bomber.design +++ b/game/Content/ShipDesigns/Remnant/Medium Ancient Bomber.design @@ -12,6 +12,7 @@ HangarDesignation=General IsShipyard=false IsOrbitalDefense=false IsCarrierOnly=false +FixedUpkeep=0.05 # Maps module UIDs to Index, first UID has index 0 ModuleUIDs=AncientArmor_2x2;AncientArmor_1x1;RemnantDrisruptor_2x2;RemnantHV2x3;NuclearBombBay2x2;AncientReactorMed;AdvAmplifier;AdvancedCellSmall;Cockpit;AncientShield2kw;Fabricator;Bridge;LaserCannon;Ceramic Armor Small;RemnantEngine2;RemnantEngine1 Modules=74 diff --git a/game/Content/ShipDesigns/Remnant/Remnant Exterminator.design b/game/Content/ShipDesigns/Remnant/Remnant Exterminator.design index 010f5882b2..9102bd6423 100644 --- a/game/Content/ShipDesigns/Remnant/Remnant Exterminator.design +++ b/game/Content/ShipDesigns/Remnant/Remnant Exterminator.design @@ -11,6 +11,7 @@ HangarDesignation=General IsShipyard=false IsOrbitalDefense=false IsCarrierOnly=false +FixedUpkeep=3 # Maps module UIDs to Index, first UID has index 0 ModuleUIDs=Crystal Armor Small;Crystal Armor Large;AdvancedCellSmall;Crystal Armor Med;PhasorTurret3x3;Pulse Capacitor;LRMmk3;BosonTransmiter;AncientShield_3x3;RemnantNuker;SubspaceSensors;Raider Bay;PolaronTurret4x4;REDisintegratorArray;AdvancedCellMed;OrdnanceLockerSmall;LargeFabricator;Main Engineering;RemnantSmallReactor;Reinforced Bulkhead;CIC;OrdnanceLocker;AntiMatterReactor;PolaronTurret3x3;PhasorTurret4x4;Internal Bulkhead;RemnantHV2x3;PhasorTurret2x2;Bridge;MarineBarracks6x3;EnergyPDRapid;RemnantEngine1;RepairDrone;EnergyPDHeavy;RemnantEngine4;RemnantEngine3 Modules=380 diff --git a/game/Content/ShipDesigns/Remnant/Remnant Inhibitor.design b/game/Content/ShipDesigns/Remnant/Remnant Inhibitor.design index d2d7656bd8..2cb4a6e110 100644 --- a/game/Content/ShipDesigns/Remnant/Remnant Inhibitor.design +++ b/game/Content/ShipDesigns/Remnant/Remnant Inhibitor.design @@ -12,6 +12,7 @@ HangarDesignation=General IsShipyard=false IsOrbitalDefense=false IsCarrierOnly=false +FixedUpkeep=1 # Maps module UIDs to Index, first UID has index 0 ModuleUIDs=Crystal Armor Large;Crystal Armor Med;RemnantNuker;Ceramic Armor Med;Crystal Armor Small;RemnantSmallFuelCell;PhasorTurret3x3;AncientShield_3x3;Ceramic Armor Small;PhasorTurret2x2;PhotonTurret4x4;Warp Inhibitor;AdvancedCellMed;Bridge;Main Engineering;RemnantSmallReactor;OrdnanceLockerSmall;EnergyPDHeavy;AncientReactorMed;Fabricator;EnergyPDRapid;RemnantEngine4 Modules=113 diff --git a/game/Content/ShipDesigns/Remnant/Remnant Mothership.design b/game/Content/ShipDesigns/Remnant/Remnant Mothership.design index 9bd66ce53f..3ad5b021e9 100644 --- a/game/Content/ShipDesigns/Remnant/Remnant Mothership.design +++ b/game/Content/ShipDesigns/Remnant/Remnant Mothership.design @@ -11,6 +11,7 @@ HangarDesignation=General IsShipyard=false IsOrbitalDefense=false IsCarrierOnly=false +FixedUpkeep=5 # Maps module UIDs to Index, first UID has index 0 ModuleUIDs=Crystal Armor Small;Crystal Armor Med;Crystal Armor Large;PolaronTurret4x4;OrdnanceLockerSmall;RemnantNuker;LRMmk2;MarineBarracks6x3;SubspaceSensors;EnergyPDHeavy;AdvancedCellMed;Main Engineering;AncientShield_3x3;EMPTurret3x3;Pulse Capacitor;AdvancedCellSmall;REDisintegratorArray;Sickbay;AdvAmplifier;AncientArmor_1x1;Reinforced Bulkhead;TroopAssaultBay;AntiMatterReactor;DarkMatterCannon_1x2;CanopyShield;RemnantPort;RepairDrone;BosonTransmiter;RemnantHV2x3;CIC;Bridge;PhasorTurret3x3;HVTurret_3x3;Engine;AncientShield2kw;RemnantEngine2;RemnantEngine3;IonCannon1x3;RemnantEngine4;EnergyPDRapid Modules=374 diff --git a/game/Content/ShipDesigns/Remnant/Remnant Portal.design b/game/Content/ShipDesigns/Remnant/Remnant Portal.design index 88c399f869..8345f8e8c3 100644 --- a/game/Content/ShipDesigns/Remnant/Remnant Portal.design +++ b/game/Content/ShipDesigns/Remnant/Remnant Portal.design @@ -11,6 +11,7 @@ HangarDesignation=General IsShipyard=false IsOrbitalDefense=false IsCarrierOnly=false +FixedUpkeep=20 # Maps module UIDs to Index, first UID has index 0 ModuleUIDs=AncientArmorV2_3x3;AncientArmorV2_1x1;AdvancedCellMed;REAegis;AdvancedCellSmall;PhasorTurret2x2;AncientShield2kw;ArmoredMissile;Pulse Capacitor;OrdnanceLocker;PolaronTurret3x3;BosonTransmiter;MarineBarracks8x4;RemnantPort;AncientShield_3x3;OrdnanceLockerSmall;LaserCannon;PlasmaThrower;Phalanx PD;CanopyShield;Main Engineering;PolaronTurret4x4;Amplifier;AncientArmorV2_2x2;Fabricator;RepairDrone;CIC;AntiMatterReactor;AdvAmplifier;EMPTurret3x3;PowerConduit;PhotonTurret3x3;Internal Bulkhead;Crystal Armor Small;SubspaceSensors;LargeOrdStorage Modules=791 diff --git a/game/Content/ShipDesigns/Remnant/Remnant Slaver.design b/game/Content/ShipDesigns/Remnant/Remnant Slaver.design index 6ce4f66687..e19c2fe186 100644 --- a/game/Content/ShipDesigns/Remnant/Remnant Slaver.design +++ b/game/Content/ShipDesigns/Remnant/Remnant Slaver.design @@ -12,6 +12,7 @@ HangarDesignation=General IsShipyard=false IsOrbitalDefense=false IsCarrierOnly=false +FixedUpkeep=1 # Maps module UIDs to Index, first UID has index 0 ModuleUIDs=CompositeAlloys Large;CompositeAlloys Med;RemnantSmallFuelCell;CompositeAlloys Small;Pulse Capacitor;AdvAmplifier;LaserCannon;TroopAssaultBay;PowerConduit;BosonTransmiter;AncientShield_3x3;EMPTurret3x3;SiphonBeam2x3;Bridge;AncientReactorMed;MarineBarracks6x3;ThalaronBeam2x3;Amplifier;AncientShield2kw;EMPTurret2x2;Engine;WarpEngine_3x3;RemnantEngine3 Modules=131 diff --git a/game/Content/ShipDesigns/Remnant/Support Drone.design b/game/Content/ShipDesigns/Remnant/Support Drone.design index 95c678f024..da20b5a889 100644 --- a/game/Content/ShipDesigns/Remnant/Support Drone.design +++ b/game/Content/ShipDesigns/Remnant/Support Drone.design @@ -12,6 +12,7 @@ HangarDesignation=General IsShipyard=false IsOrbitalDefense=false IsCarrierOnly=false +FixedUpkeep=0.03 # Maps module UIDs to Index, first UID has index 0 ModuleUIDs=RepairDrone;AncientArmor_1x1;RemnantDrisruptor_2x2;AncientReactorMed;Cockpit;OrdnanceLockerSmall;AncientShield2kw;RemnantEngine1;RemnantEngine2 Modules=23 diff --git a/game/Content/ShipDesigns/Remnant/Xeno Fighter.design b/game/Content/ShipDesigns/Remnant/Xeno Fighter.design index 817a8afd6e..22e8c0a000 100644 --- a/game/Content/ShipDesigns/Remnant/Xeno Fighter.design +++ b/game/Content/ShipDesigns/Remnant/Xeno Fighter.design @@ -12,6 +12,7 @@ HangarDesignation=General IsShipyard=false IsOrbitalDefense=false IsCarrierOnly=false +FixedUpkeep=0.01 # Maps module UIDs to Index, first UID has index 0 ModuleUIDs=DarkMatterCannon_1x2;PlaSteelArmorSmall;Cockpit;RemnantSmallReactor;Fighter Shield;RemnantEngine1;Amplifier Modules=12