Skip to content

[Bug / Fix] MPL-LG-2 problems due to Shared INTERNAL conflict (KSPIE/Cormorant) #533

Description

@longifolene06

Disclaimer:
Please note: The analysis, coordinate calculations, and the patch provided below were co-authored and generated with the assistance of an AI (Gemini), based on my manual troubleshooting, log readings, and geometric testing in-game.

Bug Description & Symptoms:
I have been experiencing a game-breaking issue with the FreeIVA implementation for the stock Mobile Processing Lab (MPL-LG-2, part name: Large_Crewed_Lab), when used with a ton of mods, FOR WEEKS.

Bug Observation: The top hatche is permanently blocked. Others is avaliable to been opened, but still buggy. If it is not connected to a node, it can be used to go outside with IVA. If it is connected to a node, the opposite hatch is blocked.

Error Log:
Error: [FreeIva] INTERNAL 'Mobile_Processing_Lab_Int' contains PROP 'FreeIva_Hatch_Round_Size0' with attachNodeId 'node_stack_top' but it was not found in PART 'Large_Crewed_Lab'

Root Cause Analysis:
After digging into the ModuleManager.ConfigCache, we discovered this maybe the causes:

"Shared INTERNAL" Pollution (The Culprit):
The root of the problem is that Mobile_Processing_Lab_Int is not exclusive to the stock MPL-LG-2. Several other mods have "stolen" or reused this exact internal space for their own entirely different parts. Specifically, this INTERNAL is shared across at least 5 different parts in my install:

The stock lab itself (Large_Crewed_Lab)

WarpPlugin (KSP Interstellar Extended): kspieIXSScienceLab (WarpPlugin/Parts/Command/IXSModuleSciencelab/sciencelab.cfg)

WarpPlugin (KSP Interstellar Extended): kspiDSD1 (WarpPlugin/Parts/Command/DSD/DSD.cfg)

Cormorant Aeronology: spacelab (Cormorant Aeronology/Assets/SPT/Spacelab/Spacelab.cfg)

Cormorant Aeronology: spacelab_Short (Cormorant Aeronology/Assets/SPT/Spacelab/Spacelab_Short.cfg)

Gemini said:
Because these external parts have completely different physical dimensions and node naming conventions, FreeIVA’s auto-detection algorithm experiences severe cross-talk. It attempts to map the node logic of one part onto the MPL, resulting in ghost errors like looking for node_stack_top when the compiled node is simply top.

(I have no idea this is true or false, but the solution worked.)

(Gemini also mentioned something about rotation here, but I believe these are totally non-sense.)

The Solution (Tested & Working):
I vibe-coded a .cfg to fix MPL-LG-2. I don't care about the other modded labs take part in this, so it's effect on them is not tested.

Here is the working MM patch that fixes the MPL-LG-2:

// 1. Clone the shared INTERNAL and make it exclusive to the stock MPL
+INTERNAL[Mobile_Processing_Lab_Int]:FINAL
{
    @name = Mobile_Processing_Lab_Int_FixedForMPL

    // 2. Map Z-axis hatches (3m distance) to the length of the lab (top/bottom nodes)
    @PROP[FreeIva_Hatch_Round_Size0]:HAS[#position[0,?0,?1.5]]
    {
        %attachNodeId = top
    }
    @PROP[FreeIva_Hatch_Round_Size0]:HAS[#position[0,?0,?-1.5]]
    {
        %attachNodeId = bottom
    }

    // 3. Map Y-axis hatches (2.33m distance) to the width of the lab (airlock nodes)
    @PROP[FreeIva_Hatch_Square]:HAS[#position[0,?1.16533005,?0]]
    {
        %attachNodeId = airlockR
    }
    @PROP[FreeIva_Hatch_Square]:HAS[#position[0,?-1.16532791,?0]]
    {
        %attachNodeId = airlockL
    }
}

// 4. Redirect the stock lab to use the fixed INTERNAL
@PART[Large_Crewed_Lab]:FINAL
{
    @INTERNAL
    {
        @name = Mobile_Processing_Lab_Int_FixedForMPL
    }
}

I hope this report is worth reading for you :>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions