FirstPersonKSP / RasterPropMonitor

Plugin for Kerbal Space Program
https://forum.kerbalspaceprogram.com/index.php?/topic/190737-18x-rasterpropmonitor-adopted/&tab=comments#comment-3723047
Other
24 stars 13 forks source link

RPM breaks BP9PS fuel switching in resource converters #93

Closed JadeOfMaar closed 1 year ago

JadeOfMaar commented 1 year ago

Describe the bug When IVA mods are installed, apparently RasterPropMonitor.dll performs a behavior that quietly interferes with B9PS. It locks fuel switching on resource converters, namely, anything that tries to be a fuel cell. If I want to use Hydrolox or Methalox in my fuel cell as well as my engines, I'm barred from doing so.

KSP.log file log, zipped, OneDrive download. There is no apparent warning, error or exception so it's a pretty harmless situation.

To Reproduce Steps to reproduce the behavior: 1: Install B9 Part Switch, CommunityResourcePack, RPM and RPM Core, Rational Resources and Rational Resources Companion via CKAN. listing CKAN listing GameData

2: Create a test craft in game. Attach a fuel cell that has RR switching in it. Change the fuel cell to anything other than LFO... Attach any normal LFO tank and lock its LiquidFuel. editor preview RR fuel cell

3: Start the fuel cell and see that it's asking for LiquidFuel yet being told to ask for something else. flight preview

Expected behavior The fuel cell should be consuming LqdMethane + Oxidizer or its error status should read Missing LqdMethane if the LqdMethane is locked or absent.

Desktop (please complete the following information): Win 10, KSP 1.12.5

Additional context None.

JonnyOThan commented 1 year ago
ModuleResourceConverter:

public virtual ConversionRecipe Recipe => _recipe ?? (_recipe = LoadRecipe());

RPM’s VesselModule will iterate all the resource converters in search of fuel cells, and if it calls this function before b9ps has set up the module, it’ll get the wrong recipe and never change again.

I think the proper fix here is to have b9ps reload the recipe after changing the module, which would allow for changing recipes midflight without the save/load that is currently required. But if a new b9ps release is unlikely, we could change RPM to delay calling this function until the module is properly loaded.