Jump to content

[1.3.0] Filter Extensions 3.0.4 (Jul 11)


Crzyrndm

Recommended Posts

16 minutes ago, Crzyrndm said:

Will fix, it's easy enough to detect scenarios/tutorials (although why would anyone be doing basic tutorials with mods installed...?)

Thanks!

I don't know, I installed the game recently, and downloaded some mods before learning to play...

Link to comment
Share on other sites

On 5/1/2016 at 11:12 AM, Kerbas_ad_astra said:

I concur with rasta -- it works for me.  It might also be good to summon @Papa_Joe as well to look at your commit that fixes the issue, since CLS throws a similar error.

Thanks for this.  I will take a look.   Sorry I've been missing for the past several days... I've been having the time of my life and haven't been thinking abotu KSP at all.  Finding a good woman will do that to you :).

Link to comment
Share on other sites

I'm having an issue where basically clicking on a category does nothing. Whatever parts are on the last category I loaded are just stuck there no matter what I click.

 

Here is what I think is the relevant output_log text:

Spoiler

[Filter Extensions 2.5.0.0]:   at PartModuleList.Contains (Int32 classID) [0x00000] in <filename unknown>:0 
at PartModuleList.Contains (System.String className) [0x00000] in <filename unknown>:0 
at FilterExtensions.Utility.PartType+<>c__DisplayClass2.<checkModuleName>b__0 (System.String s) [0x00000] in <filename unknown>:0 
at System.Linq.Enumerable.Any[String] (IEnumerable`1 source, System.Func`2 predicate) [0x00000] in <filename unknown>:0 
at FilterExtensions.Utility.PartType.checkModuleName (.AvailablePart part, System.String[] value, Boolean contains) [0x00000] in <filename unknown>:0 
at FilterExtensions.ConfigNodes.Check.checkPart (.AvailablePart part, Int32 depth) [0x00000] in <filename unknown>:0 
at FilterExtensions.ConfigNodes.Filter+<>c__DisplayClass4.<checkFilter>b__3 (FilterExtensions.ConfigNodes.Check c) [0x00000] in <filename unknown>:0 
at System.Linq.Enumerable.All[Check] (IEnumerable`1 source, System.Func`2 predicate) [0x00000] in <filename unknown>:0 
at FilterExtensions.ConfigNodes.Filter.checkFilter (.AvailablePart part, Int32 depth) [0x00000] in <filename unknown>:0 
at FilterExtensions.ConfigNodes.customSubCategory+<>c__DisplayClass7.<checkFilters>b__6 (FilterExtensions.ConfigNodes.Filter f) [0x00000] in <filename unknown>:0
at System.Linq.Enumerable.Any[Filter] (IEnumerable`1 source, System.Func`2 predicate) [0x00000] in <filename unknown>:0 
at FilterExtensions.ConfigNodes.customSubCategory.checkFilters (.AvailablePart part, Int32 depth) [0x00000] in <filename unknown>:0 
at FilterExtensions.ConfigNodes.customSubCategory.checkSubCategoryHasParts (System.String category) [0x00000] in <filename unknown>:0 
at FilterExtensions.ConfigNodes.customCategory.initSubcategory (Int32 index, FilterExtensions.ConfigNodes.subCategoryItem toInit, KSP.UI.Screens.Category category) [0x00000] in <filename unknown>:0 

Now, I realize that the log file says version 2.5.0.0, however, I manually installed the 2.5.1 release version from the github releases page. Here are the contents of my FilterExtensions.version file:

{"NAME":"Filter Extensions","URL":"https://github.com/Crzyrndm/FilterExtension/blob/master/GameData/000_FilterExtensions/FilterExtensions.version","DOWNLOAD":"https://github.com/Crzyrndm/FilterExtension/releases","VERSION":{"MAJOR":2,"MINOR":5,"PATCH":1,"BUILD":0},"KSP_VERSION":{"MAJOR":1,"MINOR":1,"PATCH":0}}

Any idea what might be going on?

 

edit: I should mention that I did read the last couple pages of the thread, and this seems to be a similar issue as what other people have posted, so I'm surprised that the latest release downloaded from the github doesn't seem to be working for me. Particularly it seems curious that the version is listed in the log as 2.5.0.0, however, I've verified that there are no other FilterExtension DLLs anywhere in my KSP install except the fresh one that I literally just downloaded from the github. Is it possible that the dll in the github 'latest release' isn't the fixed version? Or is this something different from the last page or so of bug reports?

 

edit 2:

I did a fresh install of FE and loaded a sandbox game. The first time I clicked any category, FE stopped working completely. The last thing in output_log was this:

Spoiler

NullReferenceException: Object reference not set to an instance of an object
  at PartModuleList.Contains (Int32 classID) [0x00000] in <filename unknown>:0

  at PartModuleList.Contains (System.String className) [0x00000] in <filename unknown>:0

  at FilterExtensions.Utility.PartType+<>c__DisplayClass2.<checkModuleName>b__0 (System.String s) [0x00000] in <filename unknown>:0

  at System.Linq.Enumerable.Any[String] (IEnumerable`1 source, System.Func`2 predicate) [0x00000] in <filename unknown>:0

  at FilterExtensions.Utility.PartType.checkModuleName (.AvailablePart part, System.String[] value, Boolean contains) [0x00000] in <filename unknown>:0

  at FilterExtensions.ConfigNodes.Check.checkPart (.AvailablePart part, Int32 depth) [0x00000] in <filename unknown>:0

  at FilterExtensions.ConfigNodes.Filter+<>c__DisplayClass4.<checkFilter>b__3 (FilterExtensions.ConfigNodes.Check c) [0x00000] in <filename unknown>:0

  at System.Linq.Enumerable.All[Check] (IEnumerable`1 source, System.Func`2 predicate) [0x00000] in <filename unknown>:0

  at FilterExtensions.ConfigNodes.Filter.checkFilter (.AvailablePart part, Int32 depth) [0x00000] in <filename unknown>:0

  at FilterExtensions.ConfigNodes.customSubCategory+<>c__DisplayClass7.<checkFilters>b__6 (FilterExtensions.ConfigNodes.Filter f) [0x00000] in <filename unknown>:0

  at System.Linq.Enumerable.Any[Filter] (IEnumerable`1 source, System.Func`2 predicate) [0x00000] in <filename unknown>:0

  at FilterExtensions.ConfigNodes.customSubCategory.checkFilters (.AvailablePart part, Int32 depth) [0x00000] in <filename unknown>:0

  at FilterExtensions.Utility.PartType.checkSubcategory (.AvailablePart part, System.String[] value, Int32 depth) [0x00000] in <filename unknown>:0

  at FilterExtensions.ConfigNodes.Check.checkPart (.AvailablePart part, Int32 depth) [0x00000] in <filename unknown>:0

  at FilterExtensions.ConfigNodes.Filter+<>c__DisplayClass4.<checkFilter>b__3 (FilterExtensions.ConfigNodes.Check c) [0x00000] in <filename unknown>:0

  at System.Linq.Enumerable.All[Check] (IEnumerable`1 source, System.Func`2 predicate) [0x00000] in <filename unknown>:0

  at FilterExtensions.ConfigNodes.Filter.checkFilter (.AvailablePart part, Int32 depth) [0x00000] in <filename unknown>:0

  at FilterExtensions.ConfigNodes.customSubCategory+<>c__DisplayClass7.<checkFilters>b__6 (FilterExtensions.ConfigNodes.Filter f) [0x00000] in <filename unknown>:0

  at System.Linq.Enumerable.Any[Filter] (IEnumerable`1 source, System.Func`2 predicate) [0x00000] in <filename unknown>:0

  at FilterExtensions.ConfigNodes.customSubCategory.checkFilters (.AvailablePart part, Int32 depth) [0x00000] in <filename unknown>:0

  at FilterExtensions.ConfigNodes.customSubCategory.<initialise>b__4 (.AvailablePart p) [0x00000] in <filename unknown>:0

  at UniLinq.Enumerable+<CreateWhereIterator>d__209`1[AvailablePart].MoveNext () [0x00000] in <filename unknown>:0

  at System.Collections.Generic.List`1[AvailablePart].AddEnumerable (IEnumerable`1 enumerable) [0x00000] in <filename unknown>:0

  at System.Collections.Generic.List`1[AvailablePart]..ctor (IEnumerable`1 collection) [0x00000] in <filename unknown>:0

  at UniLinq.Enumerable.ToList[AvailablePart] (IEnumerable`1 source) [0x00000] in <filename unknown>:0

  at EditorPartListFilterList`1[AvailablePart].GetFilteredList (System.Collections.Generic.List`1 list) [0x00000] in <filename unknown>:0

  at KSP.UI.Screens.EditorPartList.RefreshPartList () [0x00000] in <filename unknown>:0

  at KSP.UI.Screens.EditorPartList.Refresh () [0x00000] in <filename unknown>:0

  at KSP.UI.Screens.EditorPartList.Refresh (State state) [0x00000] in <filename unknown>:0

  at KSP.UI.Screens.PartCategorizer+<UpdateDaemon>c__IteratorC4.MoveNext () [0x00000] in <filename unknown>:0
 
(Filename:  Line: -1)

 

Edited by drhay53
adding some info about what I looked into before posting
Link to comment
Share on other sites

Drop this file in to GameData/000_FilterExtensions: https://github.com/Crzyrndm/FilterExtension/blob/master/GameData/000_FilterExtensions/FilterExtensions.dll?raw=true

Release version still has the issue (next release will be after I finish some stuff that isn't working correctly yet)

@Papa_Joe

The issue for me was Part.Modules.Contains using a string or int input somehow triggers the partmodule awake sequence in which a module was self destructing.

  1. If you can, use the typed contains (ie. Contains<ModuleEngines>()) which is safe or,
  2. If you can't because the class is not a part of KSP/your mod, this is my "safe" version using string input here: https://github.com/Crzyrndm/FilterExtension/blob/master/FilterExtension/Utility/Extensions.cs#L50
Edited by Crzyrndm
Link to comment
Share on other sites

Ah, I had thought based on the last page that the latest github released version had the fixed dll already. Thanks for the link, that version seems to work. I'll keep an eye out for the next released version on github.

Link to comment
Share on other sites

@Crzyrndm

In CKAN, this isn't listed as compatible with 1.1.2

Is that the case?  if not, and if you need help, I've fixed this with my mods;  essentially, make sure that with the .version file, you specify a min and max version of KSP, and make sure the max version is at least 1.1.2.  For most of my mods, I set the mas to 1.1.99, and that seems to take care of it.

LGG

Link to comment
Share on other sites

CKAN showing or not showing my mod is not my problem as far as I'm concered, and no the current release isn't fully compatible with other mods (see reports of things exploding on the last page) so I'd rather not have a flood of duplicate reports from CKAN right now.

Edited by Crzyrndm
Link to comment
Share on other sites

So just out of curiosity, how are people using this mod?

  1. Building your own customised set of subcategories
  2. Using the "Default" set of categories and subcategories
  3. Using the "Stock Rework" set of categories and subcategories
  4. ...

Any opinions on the distributed libraries?

(I'm just randomly getting curious here...)

Edited by Crzyrndm
Link to comment
Share on other sites

Using the defaults, as all of my attempts to create one fail. :sealed:

 

I will try again and with help, work out what I am doing wrong.

This mod is a MUST HAVE..

Thanks for all of your work.

Cheers.

Link to comment
Share on other sites

awesome mod, why Squad couldn't have done this to begin with is forever a mystery.

how do I get my mod loaded by filter extension with icon? include mod_config and 32x icons? All I'm looking to do is manufacturer/mod group.

Edit. woah already got an icon nice! how does the plugin match icon with mod? by icon file name = mod folder name?

Edited by nli2work
Link to comment
Share on other sites

3 hours ago, nli2work said:

woah already got an icon nice! how does the plugin match icon with mod? by icon file name = mod folder name?

I'd have to double check this, but IIRC it matches the icon name, a second icon which is the first name + "_selected", and the name given to the subcategory (will double check that last bit later). It finds all uniquely named icons that are 32x32 in size to use as options so as long as it's not in PluginData you can put it anywhere

EDIT

I should probably make note of the more explicit version as well. Any nodes named as "FilterSetIcon" in GameData and having fields that look like "blah = <subcategoryName>=><iconName>" will explicitly set the icon to anything you want.

Just note that these functions are probably limited to subcategories created by FE (ie. probably not "Filter by Module") unless I'm mis remembering
Never mind that, I hit all of them after all
 

Edited by Crzyrndm
Link to comment
Share on other sites

I love this mod. It helps me find stuff a lot quicker now, but I have a small problem.

I updated the mod and now in the Filter by Resource tab it doesn't show all of the tanks anymore in an existing save file, but if I make a new save file everything is normal.

Never mind. Creating a new Sandbox Test save game somehow fixed my problem. Everything is back to normal for all of my saves.

Edited by marioluigi653
Link to comment
Share on other sites

On 8-5-2016 at 0:30 PM, Crzyrndm said:

So just out of curiosity, how are people using this mod?

  1. Building your own customised set of subcategories
  2. Using the "Default" set of categories and subcategories
  3. Using the "Stock Rework" set of categories and subcategories
  4. ...

Any opinions on the distributed libraries?

(I'm just randomly getting curious here...)

I think it's the responsibility of Mod developers to create meaningfull sub catergies, at least that what I did for KSPI-E where I created the following subscategies to create clarity in complexity

    @SUBCATEGORIES
    {
	list = 0,Pods
	list = 1,Fuel Tanks
	list = 2,Engines
	list = 3,Command and Control
	list = 4,Reactors 
	list = 5,ElectricGenerators
	list = 6,Radiators 
	list = 7,PreCooler
	list = 8,MicrowavePower
	list = 9,IRSU
	list = 10,Science
	list = 11,Warp Engines
    }

 

Link to comment
Share on other sites

On 5/8/2016 at 6:30 AM, Crzyrndm said:

So just out of curiosity, how are people using this mod?

  1. Building your own customised set of subcategories
  2. Using the "Default" set of categories and subcategories
  3. Using the "Stock Rework" set of categories and subcategories
  4. ...

Any opinions on the distributed libraries?

(I'm just randomly getting curious here...)

I'm trying to make my own set of customised categories. I have quite a bit working, but there are a few things happening that are making no sense to me. Note that I'm using v2.5.2.0 with KSP 1.1.2, and I have not included any of the configs from the "000_FilterExtensions Configs" directory in the release (I'm trying to set up my own from scratch using the included ones as examples).

I have the following set of sub-categories for "filter by function:"

Spoiler

CATEGORY
{
    name = Filter by Function
    type = stock
    value = replace
    
    SUBCATEGORIES
    {
        list = 0,Command
        list = 1,Crew
        list = 2,Attitude Control
        list = 3,Fuel Tanks
        list = 4,Engines
        list = 5,Boosters
        list = 6,Atmospheric Engines
        list = 7,Active Structural
        list = 8,Pure Structural
        list = 9,Aerodynamics
        list = 10,Thermal
        list = 11,Electrical
        list = 12,Utility
        list = 13,Science
    }
}

I have the "Fuel Tanks" sub-category set up as follows (the important part is bolded):

Spoiler

SUBCATEGORY
{
    name = Fuel Tanks
    icon = stockIcon_fueltank
    FILTER
    {
        CHECK
        {
            type = category
            value = FuelTank
        }
    }

    FILTER
    {
        CHECK
        {
            type = resource
            value = LiquidFuel
        }
        CHECK
        {
            type = moduleName
            value = ModuleEngines, ModuleEnginesFX
            invert = true
        }
        CHECK
        {
            type = moduleName
            value = ModuleCommand
            invert = true
        }
    }
    FILTER
    {
        CHECK
        {
            type = resource
            value = MonoPropellant
        }
        CHECK
        {
            type = moduleName
            value = ModuleEngines, ModuleEnginesFX
            invert = true
        }
        CHECK
        {
            type = moduleName
            value = ModuleCommand
            invert = true
        }
    }
    FILTER
    {
        CHECK
        {
            type = resource
            value = XenonGas
        }
        CHECK
        {
            type = moduleName
            value = ModuleEngines, ModuleEnginesFX
            invert = true
        }
        CHECK
        {
            type = moduleName
            value = ModuleCommand
            invert = true
        }
    }
}

This works for most all of the fuel tanks... except the ore tanks and the fuel line are not included, and I can't figure out why. The bolded section above should cause them to be part of this sub-category.

Also, I have the aerodynamics sub-category set up as follows:

Spoiler

SUBCATEGORY
{
    name = Aerodynamics
    icon = stockIcon_aerodynamics
    FILTER
    {
        CHECK
        {
            type = category
            value = Aero
        }
    }
}

But the Aerodynamics category never shows up and the logs tell me:
[Filter Extensions 2.5.1.0]: Aerodynamics in category Filter by Function has no valid parts and was not initialised

I've double-checked that I downloaded 2.5.2.0, so I'm not sure why the log lists 2.5.1.0...

 

I'm not seeing any errors in the logs, so my next step is to try removing mods (although I don't have many to begin with). Any help would be appreciated.

Link to comment
Share on other sites

2.5.1.0 in the log file is my fault (forgot to change the number *before* release...)

Aero and FuelTank don't work because I did something that is possibly very very stupid and used the ingame category names and they are different from what is in part .cfgs (I'm kicking myself right now...). The current names are: Pods, Engines, Fuel Tanks, Control, Structural, Aerodynamics, Utility, Science, and None. I'll add the .cfg names as alternatives for the next release because that makes sense...

Also, for the fuel tank category, it would be simpler to write it like this (part has a resource other than ("NotAResource" or "IntakeAir") and is not (an engine or Command part))

SUBCATEGORY
{
    name = Fuel Tanks
    icon = stockIcon_fueltank

    FILTER
    {
        CHECK
        {
            type = resource
            value = NotAResource, IntakeAir // I figure you don't really want Intakes being classed as fuel tanks
            contains = false // we're looking for any resource that *isn't* listed
        }
        CHECK
        {
            type = moduleName
            value = ModuleEngines, ModuleCommand // No need to list ModuleEnginesFX
            invert = true
        }
    }
}

 

Edited by Crzyrndm
Link to comment
Share on other sites

1 hour ago, Crzyrndm said:

Aero and FuelTank don't work because I did something that is possibly very very stupid and used the ingame category names and they are different from what is in part .cfgs (I'm kicking myself right now...). The current names are: Pods, Engines, Fuel Tanks, Control, Structural, Aerodynamics, Utility, Science, and None. I'll add the .cfg names as alternatives for the next release because that makes sense...

That fixed it, thanks!

I'm getting close to finished with my config now. I'm including it here for anyone who's interested in another example:

Spoiler

CATEGORY
{
    name = Filter by Function
    type = stock
    value = replace
    
    SUBCATEGORIES
    {
        list = 0,Command
        list = 1,Crew
        list = 2,Attitude Control
        list = 3,Fuel Tanks
        list = 4,Engines
        list = 5,Boosters
        list = 6,Atmospheric Engines
        list = 7,Aerodynamics
        list = 8,Adapters and Cones
        list = 9,Active Structural
        list = 10,Pure Structural
        list = 11,Thermal
        list = 12,Electrical
        list = 13,Utility
        list = 14,Science
    }
}

SUBCATEGORY
{
    name = Command
    icon = stockIcon_pods
    FILTER
    {
        CHECK
        {
            type = category
            value = Pods
        }
    }
    FILTER
    {
        CHECK
        {
            type = moduleName
            value = ModuleCommand
        }
    }
}

SUBCATEGORY
{
    name = Crew
    icon = Passengers
    FILTER
    {
        CHECK
        {
            type = crew
            value = 0
            equality = GreaterThan
        }
        CHECK
        {
            type = moduleName
            value = ModuleCommand
            invert = true
        }
    }
}

SUBCATEGORY
{
    name = Attitude Control
    icon = stockIcon_cmdctrl
    FILTER
    {
        CHECK
        {
            type = category
            value = Control
        }
    }
    FILTER
    {
        CHECK
        {
            type = moduleName
            value = ModuleReactionWheel, RWSaturatable
        }
        CHECK
        {
            type = moduleName
            value = ModuleCommand
            invert = true
        }
    }
    FILTER
    {
        CHECK
        {
            type = moduleName
            value = ModuleRCS
        }
        CHECK
        {
            type = moduleName
            value = ModuleCommand, MomentumDischargeThruster
            invert = true
        }
    }
}

SUBCATEGORY
{
    name = Fuel Tanks
    icon = stockIcon_fueltank
    FILTER
    {
        CHECK
        {
            type = category
            value = Fuel Tanks
        }
    }
    FILTER
    {
        CHECK
        {
            type = resource
            value = LiquidFuel, MonoPropellant, XenonGas
        }
        CHECK
        {
            type = moduleName
            value = ModuleEngines, ModuleEnginesFX, ModuleCommand
            invert = true
        }
    }
}

SUBCATEGORY
{
    name = Engines
    icon = EngineLFO
    FILTER
    {
        CHECK
        {
            type = category
            value = Engine
        }
        CHECK
        {
            type = propellant
            value = SolidFuel
            invert = true
        }
        CHECK
        {
            type = propellant
            value = IntakeAir
            invert = true
        }
    }
    FILTER
    {
        CHECK
        {
            type = moduleName
            value = ModuleEngines, ModuleEnginesFX
        }
        CHECK
        {
            type = propellant
            value = SolidFuel
            invert = true
        }
        CHECK
        {
            type = propellant
            value = IntakeAir
            invert = true
        }
    }
}

SUBCATEGORY
{
    name = Boosters
    icon = EngineSolid
    FILTER
    {
        CHECK
        {
            type = category
            value = Engine
        }
        CHECK
        {
            type = propellant
            value = SolidFuel
        }
    }
    FILTER
    {
        CHECK
        {
            type = moduleName
            value = ModuleEngines, ModuleEnginesFX
        }
        CHECK
        {
            type = propellant
            value = SolidFuel
        }
    }
}

SUBCATEGORY
{
    name = Atmospheric Engines
    icon = Firespitter
    FILTER
    {
        CHECK
        {
            type = category
            value = Engine
        }
        CHECK
        {
            type = propellant
            value = IntakeAir
        }
    }
    FILTER
    {
        CHECK
        {
            type = moduleName
            value = ModuleEngines, ModuleEnginesFX
        }
        CHECK
        {
            type = propellant
            value = IntakeAir
        }
    }
    FILTER
    {
        CHECK
        {
            type = moduleName
            value = ModuleResourceIntake
        }
        CHECK
        {
            type = resource
            value = IntakeAir
        }
    }
}

SUBCATEGORY
{
    name = Aerodynamics
    icon = stockIcon_aerodynamics
    FILTER
    {
        CHECK
        {
            type = category
            value = Aerodynamics
        }
        CHECK
        {
            type = moduleName
            value = ModuleEngines, ModuleEnginesFX, ModuleResourceIntake, ModuleAblator
            invert = true
        }
        CHECK
        {
            type = resource
            value = IntakeAir
            invert = true
        }
        CHECK
        {
            type = name
            value = InflatableHeatShield
            invert = true
        }
    }
}

SUBCATEGORY
{
    name = Adapters and Cones
    icon = Adapter
    FILTER
    {
        // TBD
        CHECK
        {
            type = category
            value = None
        }
    }
}

SUBCATEGORY
{
    name = Active Structural
    icon = stockIcon_structural
    FILTER
    {
        CHECK
        {
            type = moduleName
            value = LaunchClamp, ModuleCargoBay, ModuleAnchoredDecoupler, ModuleDecouple, ModuleDockingNode
        }
        CHECK
        {
            type = moduleName
            value = ModuleAblator, ModuleProceduralFairing
            invert = true
        }
    }
}

SUBCATEGORY
{
    name = Pure Structural
    icon = Girder
    FILTER
    {
        CHECK
        {
            type = category
            value = Structural
        }
        CHECK
        {
            type = subcategory
            value = Active Structural
            invert = true
        }
        CHECK
        {
            type = subcategory
            value = Atmospheric Engines
            invert = true
        }
    }
}

SUBCATEGORY
{
    name = Thermal
    icon = FanEngine
    FILTER
    {
        CHECK
        {
            type = moduleName
            value = ModuleActiveRadiator, ModuleAblator
        }
    }
    FILTER
    {
        CHECK
        {
            type = name
            value = InflatableHeatShield
        }
    }
}

SUBCATEGORY
{
    name = Electrical
    icon = ElectricCharge
    FILTER
    {
        CHECK
        {
            type = category
            value = Utility
        }
        CHECK
        {
            type = resource
            value = ElectricCharge
        }
    }
    FILTER
    {
        CHECK
        {
            type = category
            value = Utility
        }
        CHECK
        {
            type = moduleName
            value = ModuleDeployableSolarPanel, ModuleGenerator, ModuleLight
        }
        CHECK
        {
            type = moduleName
            value = ModuleWheelBase, ModuleWheelSuspension
            invert = true
        }
    }
}

SUBCATEGORY
{
    name = Utility
    icon = stockIcon_utility
    FILTER
    {
        CHECK
        {
            type = subcategory
            value = Command
            invert = true
        }
        CHECK
        {
            type = subcategory
            value = Crew
            invert = true
        }
        CHECK
        {
            type = subcategory
            value = Attitude Control
            invert = true
        }
        CHECK
        {
            type = subcategory
            value = Fuel Tanks
            invert = true
        }
        CHECK
        {
            type = subcategory
            value = Engines
            invert = true
        }
        CHECK
        {
            type = subcategory
            value = Boosters
            invert = true
        }
        CHECK
        {
            type = subcategory
            value = Atmospheric Engines
            invert = true
        }
        CHECK
        {
            type = subcategory
            value = Active Structural
            invert = true
        }
        CHECK
        {
            type = subcategory
            value = Pure Structural
            invert = true
        }
        CHECK
        {
            type = subcategory
            value = Aerodynamics
            invert = true
        }
        CHECK
        {
            type = subcategory
            value = Thermal
            invert = true
        }
        CHECK
        {
            type = subcategory
            value = Electrical
            invert = true
        }
        CHECK
        {
            type = subcategory
            value = Science
            invert = true
        }
    }
}

SUBCATEGORY
{
    name = Science
    icon = stockIcon_science
    FILTER
    {
        CHECK
        {
            type = category
            value = Science
        }
    }
    FILTER
    {
        CHECK
        {
            type = moduleName
            value = ModuleScienceExperiment
        }
        CHECK
        {
            type = moduleName
            value = ModuleCommand
            invert = true
        }
        CHECK
        {
            type = crew
            value = 0
        }
    }
}
 

 

Link to comment
Share on other sites

I'm pretty sure the check type "check" is no longer using OR logic in the current version. I have the following config:

Spoiler

SUBCATEGORY
{
    name = Adapters and Cones
    icon = Adapter
    FILTER
    {
        CHECK
        {
            type = check
            CHECK
            {
                type = custom
                value = adapter
            }
            CHECK
            {
                type = custom
                value = multicoupler
            }
            CHECK
            {
                type = title
                value = Nose Cone,Multi-Point Connector
            }
        }
    }
}

If I simplify it to just one of the three sub-checks it will include the correct subset of parts, but with all three I get no parts and the sub-category does not show up.

Link to comment
Share on other sites

The only custom stuff I did with this mod was add custom main groups for the main part addons I have installed; i.e. KAX, USI, SpaceY, etc.

I'd love to make custom categories but I haven't really had the time to sit down and figure out how to figure out how to do it (the repeat was intentional). The biggest hurdle I think is locating all of the different classes that each part has, especially in mods.

Also, on another note, is anyone else seeing the Nuclear Rockets custom section just completely full of basically all engines?

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...