Removing MFT causes invalid parts in existing spacecraft design
Opened this issue · 3 comments
What is this about
Bug. Dependency issue with MFT.
Issue description
When MFT is present, TAC LifeSupport creates 4 new part for 4 different sizes that supports MFT.
However, when MFT is removed, any spacecraft using any of those 4 tanks will become invalid.
Existing designs will become unusable and in-flight spacecraft will get removed from the game.
Effectively breaking players' save file.
Recommendation
Instead of creating 4 new parts, re-use **"TacLifeSupportContainer"**s and add supports to MFT to those 4 tanks.
Perhaps re-use those HexCans as well.
By doing so, when user deletes MFT, any existing saves will not get breaked due to absence of custom part.
Note
This issue is related to #96.
My make-shift solution to solve this issue.
Note: this mitigates issue #96 as well.
// Hides all of the resource specific containers so that there are only three, one per size: small, medium, large
@PART[TacWaterContainerSmall]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
%category = -1
%TechRequired = hidden
}
@PART[TacWaterContainerLarge]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
%category = -1
%TechRequired = hidden
}
@PART[TacWaterContainerLarge375]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
%category = -1
%TechRequired = hidden
}
@PART[TacWaterContainer]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
%category = -1
%TechRequired = hidden
}
@PART[TacWasteContainerSmall]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
//%category = -1
//%TechRequired = hidden
MODULE
{
name = ModuleFuelTanks
type = LifeSupportWaste
basemass = -1
volume = 25
}
}
@PART[TacWasteContainerLarge]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
//%category = -1
//%TechRequired = hidden
MODULE
{
name = ModuleFuelTanks
type = LifeSupportWaste
basemass = -1
volume = 2200
}
}
@PART[TacWasteContainerLarge375]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
//%category = -1
//%TechRequired = hidden
MODULE
{
name = ModuleFuelTanks
type = LifeSupportWaste
basemass = -1
volume = 3300
}
}
@PART[TacWasteContainer]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
//%category = -1
//%TechRequired = hidden
MODULE
{
name = ModuleFuelTanks
type = LifeSupportWaste
basemass = -1
volume = 240
}
}
@PART[TacOxygenContainerSmall]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
%category = -1
%TechRequired = hidden
}
@PART[TacOxygenContainerLarge]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
%category = -1
%TechRequired = hidden
}
@PART[TacOxygenContainerLarge375]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
%category = -1
%TechRequired = hidden
}
@PART[TacOxygenContainer]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
%category = -1
%TechRequired = hidden
}
@PART[TacLifeSupportContainerSmall]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
//%category = -1
//%TechRequired = hidden
MODULE
{
name = ModuleFuelTanks
type = LifeSupportAll
basemass = -1
volume = 25
}
}
@PART[TacLifeSupportContainerLarge]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
//%category = -1
//%TechRequired = hidden
MODULE
{
name = ModuleFuelTanks
type = LifeSupportAll
basemass = -1
volume = 2200
}
}
@PART[TacLifeSupportContainerLarge375]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
//%category = -1
//%TechRequired = hidden
MODULE
{
name = ModuleFuelTanks
type = LifeSupportAll
basemass = -1
volume = 3300
}
}
@PART[TacLifeSupportContainer]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
//%category = -1
//%TechRequired = hidden
MODULE
{
name = ModuleFuelTanks
type = LifeSupportAll
basemass = -1
volume = 240
}
}
@PART[TacFoodContainerSmall]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
%category = -1
%TechRequired = hidden
}
@PART[TacFoodContainerLarge]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
%category = -1
%TechRequired = hidden
}
@PART[TacFoodContainerLarge375]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
%category = -1
%TechRequired = hidden
}
@PART[TacFoodContainer]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
%category = -1
%TechRequired = hidden
}
@PART[HexCanOxygenSmall]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
%category = -1
%TechRequired = hidden
}
@PART[HexCanOxygen]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
%category = -1
%TechRequired = hidden
}
@PART[HexCanOxygenLarge]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
%category = -1
%TechRequired = hidden
}
@PART[HexCanDrinkingWaterSmall]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
%category = -1
%TechRequired = hidden
}
@PART[HexCanDrinkingWater]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
%category = -1
%TechRequired = hidden
}
@PART[HexCanDrinkingWaterLarge]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
%category = -1
%TechRequired = hidden
}
@PART[HexCanFoodSmall]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
%category = -1
%TechRequired = hidden
}
@PART[HexCanFood]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
%category = -1
%TechRequired = hidden
}
@PART[HexCanFoodLarge]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
%category = -1
%TechRequired = hidden
}
@PART[HexCanLifeSupportWasteSmall]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
//%category = -1
//%TechRequired = hidden
MODULE
{
name = ModuleFuelTanks
type = LifeSupportWaste
basemass = -1
volume = 16.25
}
}
@PART[HexCanLifeSupportWaste]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
//%category = -1
//%TechRequired = hidden
MODULE
{
name = ModuleFuelTanks
type = LifeSupportWaste
basemass = -1
volume = 130
}
}
@PART[HexCanLifeSupportWasteLarge]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
//%category = -1
//%TechRequired = hidden
MODULE
{
name = ModuleFuelTanks
type = LifeSupportWaste
basemass = -1
volume = 1040
}
}
@PART[HexCanLifeSupportSmall]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
//%category = -1
//%TechRequired = hidden
MODULE
{
name = ModuleFuelTanks
type = LifeSupportAll
basemass = -1
volume = 16.25
}
}
@PART[HexCanLifeSupport]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
//%category = -1
//%TechRequired = hidden
MODULE
{
name = ModuleFuelTanks
type = LifeSupportAll
basemass = -1
volume = 130
}
}
@PART[HexCanLifeSupportLarge]:FOR[TacLifeSupport]:NEEDS[modularFuelTanks|RealFuels]
{
//%category = -1
//%TechRequired = hidden
MODULE
{
name = ModuleFuelTanks
type = LifeSupportAll
basemass = -1
volume = 1040
}
}
You are on the wrong fork my friend.
this original fork is no longer maintained as TaranisElsu has left the scene.
The current fork is here:
https://github.com/KSP-RO/TacLifeSupport/tree/Develop
Having said that your PR does not make sense to me. If MFT is installed it is behaving as originally designed.
If you remove MFT like any mod, yes it will break your saves. But LifeSupportAll will also be invalid and the part would have no resources. or errors on load if you did the above and removed MFT anyway?
errors on load if you did the above and removed MFT anyway?
Not any error I can see through interface.
I did not attempt to fly the vehicle nor try to suffocate/starve/dehydrate any Kerbal (which I should).
I'll try it again once tonight or tomorrow (just finished all my final exams).
And move this issue to the link you gave me.