taraniselsu / TacLifeSupport

Life Support from Thunder Aerospace Corporation
Other
76 stars 61 forks source link

Removing MFT causes invalid parts in existing spacecraft design #97

Open 8749236 opened 7 years ago

8749236 commented 7 years ago

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.

8749236 commented 7 years ago

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
    }
}
JPLRepo commented 7 years ago

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?

8749236 commented 7 years ago

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.