sarbian

[1.4.0-1.6.x] Module Manager 3.1.3 (January 8th 2019) - It's Dangerous to go Alone! Take those Cats with you

Recommended Posts

I'm trying to create a config for the SimpleFuelSwitch mod and this is pretty much the first time I'm writing a MM patch which contains more than a couple of row, so I have a couple of questions here^^

The Config is supposed to add every fuel type to every fuel tank but it is also configurable in a separate config file. The config file is not part of the mod, this is just my idea how to realize this via MM.

My testing config file contains these values:

SFS_Alternative_Config
{
	//LF_Only tanks	
	LF_Add_LFO = true
	LF_Add_Ox = false
	LF_Add_Mono = false
	LF_Add_Xe = true
	
	//LFO tanks	
	LFO_Add_LF = false
	LFO_Add_Ox = true
	LFO_Add_Mono = true
	LFO_Add_Xe = true
	
	//MonoProp tanks
	Mono_Add_LF = false
	Mono_Add_LFO = false
	Mono_Add_Ox = true
	Mono_Add_Xe = false
	
	//Xenon tanks
	Xe_Add_LF = true
	Xe_Add_LFO = true
	Xe_Add_Ox = true
	Xe_Add_Mono = true
}

The actual patch (not finished yet):

//Add dummy modules to write the config settings into the required parts
//These modules can be used to set up MM filter to progress further 

//Take care of LF only tanks
@PART[*]:HAS[@RESOURCE[LiquidFuel],!RESOURCE[Oxidizer],!RESOURCE[IntakeAir]]
{
	//Add dummy module
	MODULE
	{
		name = SFS_LF
		LF_Add_LFO = #$@SFS_Alternative_Config/LF_Add_LFO$
		LF_Add_Ox = #$@SFS_Alternative_Config/LF_Add_Ox$
		LF_Add_Mono = #$@SFS_Alternative_Config/LF_Add_Mono$
		LF_Add_Xe = #$@SFS_Alternative_Config/LF_Add_Xe$
		LF_Amount = #$/RESOURCE[LiquidFuel]/amount$
		LF_MaxAmount = #$/RESOURCE[LiquidFuel]/maxAmount$		
	}	
	//Remove stock LF resources
	//!RESOURCE[LiquidFuel] {}
}

//Take care of LFO tanks
@PART[*]:HAS[@RESOURCE[Oxidizer],@RESOURCE[LiquidFuel],!MODULE[ModuleEnginesFX],!MODULE[ModuleCommand]]
{
	//Add dummy module
	MODULE
	{
		name = SFS_LFO
		LFO_Add_LF = #$@SFS_Alternative_Config/LFO_Add_LF$
		LFO_Add_Ox = #$@SFS_Alternative_Config/LFO_Add_Ox$
		LFO_Add_Mono = #$@SFS_Alternative_Config/LFO_Add_Mono$
		LFO_Add_Xe = #$@SFS_Alternative_Config/LFO_Add_Xe$
		LF_Amount = #$/RESOURCE[LiquidFuel]/amount$
		LF_MaxAmount = #$/RESOURCE[LiquidFuel]/maxAmount$
		Ox_Amount = #$/RESOURCE[Oxidizer]/amount$
		Ox_MaxAmount = #$/RESOURCE[Oxidizer]/maxAmount$
	}	
	//Remove stock LFO resources
	//!RESOURCE[LiquidFuel] {}
	//!RESOURCE[Oxidizer] {}
}

//Take care of monoprop tanks
@PART[*]:HAS[@RESOURCE[MonoPropellant],!MODULE[ModuleCommand]]
{
	//Add dummy module
	MODULE
	{
		name = SFS_MONO
		Mono_Add_LF = #$@SFS_Alternative_Config/Mono_Add_LF$
		Mono_Add_LFO = #$@SFS_Alternative_Config/Mono_Add_LFO$
		Mono_Add_Ox = #$@SFS_Alternative_Config/Mono_Add_Ox$
		Mono_Add_Xe = #$@SFS_Alternative_Config/Mono_Add_Xe$
		Mono_Amount = #$/RESOURCE[MonoPropellant]/amount$
		Mono_MaxAmount = #$/RESOURCE[MonoPropellant]/maxAmount$
	}	
	//Remove stock LFO resources
	//!RESOURCE[MonoPropellant] {}
}

//Take care of xenon tanks
@PART[*]:HAS[@RESOURCE[XenonGas]]
{
	//Add dummy module
	MODULE
	{
		name = SFS_XENON
		Xe_Add_LF = #$@SFS_Alternative_Config/Xe_Add_LF$
		Xe_Add_LFO = #$@SFS_Alternative_Config/Xe_Add_LFO$
		Xe_Add_Ox = #$@SFS_Alternative_Config/Xe_Add_Ox$
		Xe_Add_Mono = #$@SFS_Alternative_Config/Xe_Add_Mono$
		Xe_Amount = #$/RESOURCE[XenonGas]/amount$
		Xe_MaxAmount = #$/RESOURCE[XenonGas]/maxAmount$
	}	
	//Remove stock LFO resources
	//!RESOURCE[XenonGas] {}
}

//Add SimpleFuelSwitch module if any fuel type is added
//LF tanks            
@PART[*]:HAS[@MODULE[SFS_LF]:HAS[#LF_Add_LFO[true]]|[#LF_Add_Ox[true]]|[#LF_Add_Mono[true]]|[#LF_Add_Xe[true]]]
{	
	MODULE
	{
		name = ModuleSimpleFuelSwitch
	}
}

//LFO tanks
@PART[*]:HAS[@MODULE[SFS_LFO]:HAS[#LFO_Add_LF[true]]|[#LFO_Add_Ox[true]]|[#LFO_Add_Mono[true]]|[#LFO_Add_Xe[true]]]
{	
	MODULE
	{
		name = ModuleSimpleFuelSwitch
	}
}

//MonoProp tanks
@PART[*]:HAS[@MODULE[SFS_MONO]:HAS[#Mono_Add_LFO[true]]|[#Mono_Add_Ox[true]]|[#Mono_Add_LF[true]]|[#Mono_Add_Xe[true]]]
{	
	MODULE
	{
		name = ModuleSimpleFuelSwitch
	}
}

//Xenon tanks
@PART[*]:HAS[@MODULE[SFS_XENON]:HAS[#Xe_Add_LFO[true]]|[#Xe_Add_Ox[true]]|[#Xe_Add_Mono[true]]|[#Xe_Add_LF[true]]]
{	
	MODULE
	{
		name = ModuleSimpleFuelSwitch
	}
}

//Add fuel resources for SimpleFuelSwitch

//LF tanks
//Add default fuel
@PART[*]:HAS[@MODULE[SFS_LF],@MODULE[ModuleSimpleFuelSwitch]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = liquid_fuel_only
		displayName = #SimpleFuelSwitch_LiquidFuel
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		isDefault = true
		RESOURCE
		{
			name = LiquidFuel
			amount = #$/MODULE[SFS_LF]/LF_Amount$
			maxAmount = #$/MODULE[SFS_LF]/LF_MaxAmount$
		}
	}
}

//Add LFO
@PART[*]:HAS[@MODULE[SFS_LF]:HAS[#LF_Add_LFO[true]]]
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = liquid_fuel_oxidizer
		displayName = #SimpleFuelSwitch_LiquidFuelAndOxidizer
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		RESOURCE
		{
			name = LiquidFuel
			amount = #$/MODULE[SFS_LF]/LF_Amount$
			@amount *= 0.45
			maxAmount = #$/MODULE[SFS_LF]/LF_MaxAmount$
			@maxAmount *= 0.45
		}
		RESOURCE
		{
			name = Oxidizer
			amount = #$/MODULE[SFS_LF]/LF_Amount$
			@amount *= 0.55
			maxAmount = #$/MODULE[SFS_LF]/LF_MaxAmount$
			@maxAmount *= 0.55
		}
	}
}

//Add MonoProp
@PART[*]:HAS[@MODULE[SFS_LF]:HAS[#LF_Add_Mono[true]]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = mono_only
		displayName = #SimpleFuelSwitch_Mono
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		RESOURCE
		{
			name = MonoPropellant
			amount = #$/MODULE[SFS_LF]/LF_Amount$
			@amount *= 1.25 
			maxAmount = #$/MODULE[SFS_LF]/LF_MaxAmount$
			@maxAmount *= 1.25 
		}
	}
}

//Add Ox_Only
@PART[*]:HAS[@MODULE[SFS_LF]:HAS[#LF_Add_Ox[true]]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = oxidizer_only
		displayName = #SimpleFuelSwitch_OxOnly
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		RESOURCE
		{
			name = Oxidizer
			amount = #$/MODULE[SFS_LF]/LF_Amount$
			@amount /= 0.45
			@amount *= 0.55
			maxAmount = #$/MODULE[SFS_LF]/LF_MaxAmount$
			@maxAmount /= 0.45
			@maxAmount *= 0.55
		}
	}
}

//Add Xenon
@PART[*]:HAS[@MODULE[SFS_LF]:HAS[#LF_Add_Xe[true]]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = xenon_only
		displayName = #SimpleFuelSwitch_Xenon
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		RESOURCE
		{
			name = XenonGas
			amount = #$/MODULE[SFS_LF]/LF_Amount$
			@amount *= 50 
			maxAmount = #$/MODULE[SFS_LF]/LF_MaxAmount$
			@maxAmount *= 50
		}
	}
}

//LFO tanks
//Add default fuel
@PART[*]:HAS[@MODULE[SFS_LFO],@MODULE[ModuleSimpleFuelSwitch]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = liquid_fuel_oxidizer
		displayName = #SimpleFuelSwitch_LiquidFuelAndOxidizer
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		isDefault = true
		RESOURCE
		{
			name = LiquidFuel
			amount = #$/MODULE[SFS_LFO]/LF_Amount$
			maxAmount = #$/MODULE[SFS_LFO]/LF_MaxAmount$
		}
		RESOURCE
		{
			name = Oxidizer
			amount = #$/MODULE[SFS_LFO]/Ox_Amount$
			maxAmount = #$/MODULE[SFS_LFO]/Ox_MaxAmount$
		}
	}
}

//Add LF_Only
@PART[*]:HAS[@MODULE[SFS_LFO]:HAS[#LFO_Add_LF[true]]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = liquid_fuel_only
		displayName = #SimpleFuelSwitch_LiquidFuel
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		RESOURCE
		{
			name = LiquidFuel
			amount = #$/MODULE[SFS_LFO]/LF_Amount$
			@amount += #$/MODULE[SFS_LFO]/Ox_Amount$
			maxAmount = #$/MODULE[SFS_LFO]/LF_MaxAmount$
			@maxAmount += #$/MODULE[SFS_LFO]/Ox_MaxAmount$
		}
	}
}

//Add MonoProp
@PART[*]:HAS[@MODULE[SFS_LFO]:HAS[#LFO_Add_Mono[true]]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = mono_only
		displayName = #SimpleFuelSwitch_Mono
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		RESOURCE
		{
			name = MonoPropellant
			amount = #$/MODULE[SFS_LFO]/LF_Amount$
			@amount += #$/MODULE[SFS_LFO]/Ox_Amount$
			@amount *= 1.25
			maxAmount = #$/MODULE[SFS_LFO]/LF_MaxAmount$
			@maxAmount += #$/MODULE[SFS_LFO]/Ox_MaxAmount$
			@maxAmount *= 1.25
		}
	}
}

//Add Ox_Only
@PART[*]:HAS[@MODULE[SFS_LFO]:HAS[#LFO_Add_Ox[true]]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = oxidizer_only
		displayName = #SimpleFuelSwitch_OxOnly
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		RESOURCE
		{
			name = Oxidizer
			amount = #$/MODULE[SFS_LFO]/LF_Amount$
			@amount += #$/MODULE[SFS_LFO]/Ox_Amount$
			@amount *= #$/MODULE[SFS_LFO]/Ox_Amount$
			@amount /= #$/MODULE[SFS_LFO]/LF_Amount$
			maxAmount = #$/MODULE[SFS_LFO]/LF_MaxAmount$
			@maxAmount += #$/MODULE[SFS_LFO]/Ox_MaxAmount$
			@maxAmount *= #$/MODULE[SFS_LFO]/Ox_Amount$
			@maxAmount /= #$/MODULE[SFS_LFO]/LF_Amount$
		}
	}
}

//Add Xenon
@PART[*]:HAS[@MODULE[SFS_LFO]:HAS[#LFO_Add_Xe[true]]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = xenon_only
		displayName = #SimpleFuelSwitch_Xenon
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		RESOURCE
		{
			name = XenonGas
			amount = #$/MODULE[SFS_LFO]/LF_Amount$
			@amount += #$/MODULE[SFS_LFO]/Ox_Amount$
			@amount *= 50
			maxAmount = #$/MODULE[SFS_LFO]/LF_MaxAmount$
			@maxAmount += #$/MODULE[SFS_LFO]/Ox_MaxAmount$
			@maxAmount *= 50
		}
	}
}

//MonoProp tanks
//Add default fuel
@PART[*]:HAS[@MODULE[SFS_MONO],@MODULE[ModuleSimpleFuelSwitch]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = mono_only
		displayName = #SimpleFuelSwitch_Mono
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		isDefault = true
		RESOURCE
		{
			name = MonoPropellant
			amount = #$/MODULE[SFS_MONO]/Mono_Amount$			
			maxAmount = #$/MODULE[SFS_MONO]/Mono_MaxAmount$		
		}		
	}
}

//Add LF_Only
@PART[*]:HAS[@MODULE[SFS_MONO]:HAS[#Mono_Add_LF[true]]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = liquid_fuel_only
		displayName = #SimpleFuelSwitch_LiquidFuel
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		RESOURCE
		{
			name = LiquidFuel
			amount = #$/MODULE[SFS_MONO]/Mono_Amount$	
			@amount *= 0.8
			maxAmount = #$/MODULE[SFS_MONO]/Mono_MaxAmount$	
			@maxAmount *= 0.8
		}
	}
}

//Add LFO
@PART[*]:HAS[@MODULE[SFS_MONO]:HAS[#Mono_Add_LFO[true]]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = liquid_fuel_oxidizer
		displayName = #SimpleFuelSwitch_LiquidFuelAndOxidizer
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		RESOURCE
		{
			name = LiquidFuel
			amount = #$/MODULE[SFS_MONO]/Mono_Amount$	
			@amount *= 0.36
			maxAmount = #$/MODULE[SFS_MONO]/Mono_MaxAmount$	
			@maxAmount *= 0.36
		}
		RESOURCE
		{
			name = Oxidizer
			amount = #$/MODULE[SFS_MONO]/Mono_Amount$	
			@amount *= 0.44
			maxAmount = #$/MODULE[SFS_MONO]/Mono_MaxAmount$	
			@maxAmount *= 0.44
		}
	}
}

//Add Ox_Only
@PART[*]:HAS[@MODULE[SFS_MONO]:HAS[#Mono_Add_Ox[true]]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = oxidizer_only
		displayName = #SimpleFuelSwitch_OxOnly
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		RESOURCE
		{
			name = Oxidizer
			amount = #$/MODULE[SFS_MONO]/Mono_Amount$	
			@amount *= 0.44
			@amount /= 0.45
			maxAmount = #$/MODULE[SFS_MONO]/Mono_MaxAmount$	
			@maxAmount *= 0.44
			@maxAmount /= 0.45
		}
	}
}

//Add Xenon
@PART[*]:HAS[@MODULE[SFS_MONO]:HAS[#Mono_Add_Xe[true]]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = xenon_only
		displayName = #SimpleFuelSwitch_Xenon
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		RESOURCE
		{
			name = XenonGas
			amount = #$/MODULE[SFS_MONO]/Mono_Amount$	
			@amount *= 40
			maxAmount = #$/MODULE[SFS_MONO]/Mono_MaxAmount$	
			@maxAmount *= 40
		}
	}
}

//Xenon tanks
//Add default fuel
@PART[*]:HAS[@MODULE[SFS_XENON],@MODULE[ModuleSimpleFuelSwitch]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = xenon_only
		displayName = #SimpleFuelSwitch_Xenon
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		isDefault = true
		RESOURCE
		{
			name = XenonGas
			amount = #$/MODULE[SFS_XENON]/Xe_Amount$			
			maxAmount = #$/MODULE[SFS_XENON]/Xe_MaxAmount$
		}
	}
}

//Add LF_Only
@PART[*]:HAS[@MODULE[SFS_XENON]:HAS[#Xe_Add_LF[true]]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = liquid_fuel_only
		displayName = #SimpleFuelSwitch_LiquidFuel
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		RESOURCE
		{
			name = LiquidFuel
			amount = #$/MODULE[SFS_XENON]/Xe_Amount$
			@amount *= 0.02
			maxAmount = #$/MODULE[SFS_XENON]/Xe_MaxAmount$
			@maxAmount *= 0.02
		}
	}
}

//Add LFO
@PART[*]:HAS[@MODULE[SFS_XENON]:HAS[#Xe_Add_LFO[true]]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = liquid_fuel_oxidizer
		displayName = #SimpleFuelSwitch_LiquidFuelAndOxidizer
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		RESOURCE
		{
			name = LiquidFuel
			amount = #$/MODULE[SFS_XENON]/Xe_Amount$
			@amount *= 0.009
			maxAmount = #$/MODULE[SFS_XENON]/Xe_MaxAmount$
			@maxAmount *= 0.009
		}
		RESOURCE
		{
			name = Oxidizer
			amount = #$/MODULE[SFS_XENON]/Xe_Amount$
			@amount *= 0.011
			maxAmount = #$/MODULE[SFS_XENON]/Xe_MaxAmount$
			@maxAmount *= 0.011
		}
	}
}

//Add MonoProp
@PART[*]:HAS[@MODULE[SFS_XENON]:HAS[#Xe_Add_Mono[true]]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = mono_only
		displayName = #SimpleFuelSwitch_Mono
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		RESOURCE
		{
			name = MonoPropellant
			amount = #$/MODULE[SFS_XENON]/Xe_Amount$
			@amount *= 0.025
			maxAmount = #$/MODULE[SFS_XENON]/Xe_MaxAmount$
			@maxAmount *= 0.025
		}
	}
}

//Add Ox_Only
@PART[*]:HAS[@MODULE[SFS_XENON]:HAS[#Xe_Add_Ox[true]]]
{
	MODULE
	{
		name = ModuleSwitchableResources
		resourcesId = oxidizer_only
		displayName = #SimpleFuelSwitch_OxOnly
		selectorFieldName = #SimpleFuelSwitch_fuelTypeLabel
		RESOURCE
		{
			name = Oxidizer
			amount = #$/MODULE[SFS_XENON]/Xe_Amount$
			@amount *= 0.011
			@amount /= 0.45
			maxAmount = #$/MODULE[SFS_XENON]/Xe_MaxAmount$
			@maxAmount *= 0.011
			@maxAmount /= 0.45
		}
	}
}

Basically:

  • I'm writing the config values into a dummy module
  • add this module to each tank that is supposed to be changed (so I can use the name of the dummy module in the filter)
  • If at least one of these values is true, add the module 'ModuleSimpleFuelSwitch'
  • If the dummy module AND ModuleSimpleFuelSwitch is available, add the default fuel type
  • If the dummy module is available, add other fuels as well
  • (Missing so far: remove stock resource entries and the dummy modules after everything is done)

So my questions so far:

Is it possible to multiply factions of numbers, so I can simplify terms like this:

maxAmount = #$/MODULE[SFS_XENON]/Xe_MaxAmount$
@maxAmount *= 0.011
@maxAmount /= 0.45

This 'OR' query does not work properly and actually just checks the very first value (:HAS[#LF_Add_LFO[true] in this case):

@PART[*]:HAS[@MODULE[SFS_LF]:HAS[#LF_Add_LFO[true]]|[#LF_Add_Ox[true]]|[#LF_Add_Mono[true]]|[#LF_Add_Xe[true]]]

I cannot figure out what's wrong there...ideas?

In general: Is this a proper approach? Does it make sense to split the patch in these small steps? Any suggestions for improvements? :)

edit:

Apparently, using the 'OR' operator in a :HAS block will only parse the first value:

@PART[*]:HAS[@MODULE[SFS_LF]:HAS[#LF_Add_LFO[true]]|@MODULE[SFS_LF]:HAS[#LF_Add_Ox[true]]]

^ this doesn't work.

BUT, the 'AND' operator works fine, so:

@PART[*]:HAS[@MODULE[SFS_LF]:HAS[!#LF_Add_LFO[false]],@MODULE[SFS_LF]:HAS[!#LF_Add_Ox[false]]]

^ will do the job.

Basically, I cannot check multiple entries to be 'true' but I can check multiple values to be not 'false'. Sounds like a bug to me :o

Nope, still doesn't work if both values are 'false'

Edited by 4x4cheesecake

Share this post


Link to post
Share on other sites

I updated my modded save to KSP 1.6.1 and every time I've loaded it up, It crashes when trying to load the part configs. I kept removing mods that it crashed while loading, but it kept crashing on a different one. I narrowed down the problem to Module Manager, and when I removed it, KSP loaded fine with no errors. I then stripped down the GameData folder to nothing but stock files and a single test config. It loaded everything fine.

Here is the crash file.

Screenshot of GameData folder here.

All mods are up to date, including Module Manager.

 

Share this post


Link to post
Share on other sites
2 hours ago, Mrsupersonic8 said:

I updated my modded save to KSP 1.6.1 and every time I've loaded it up, It crashes when trying to load the part configs. I kept removing mods that it crashed while loading, but it kept crashing on a different one. I narrowed down the problem to Module Manager, and when I removed it, KSP loaded fine with no errors. I then stripped down the GameData folder to nothing but stock files and a single test config. It loaded everything fine.

Here is the crash file.

Screenshot of GameData folder here.

All mods are up to date, including Module Manager.

 

Can you provide the log (just KSP.log or output_log.txt will do) from when you actually experienced the crash?  It doesn't look like ModuleManager was installed when that output_log.txt was generated

E: that output_log.txt is from KSP 1.3.1 - maybe it was just left over in an upgraded install?  Unity writes that file to %AppData%/LocalLow/Squad/Kerbal Space Program/ now

Edited by blowfish

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now