![](https://forum.kerbalspaceprogram.com/uploads/set_resources_17/84c1e40ea0e759e3f1505eb1788ddf3c_pattern.png)
![](https://forum.kerbalspaceprogram.com/uploads/set_resources_17/84c1e40ea0e759e3f1505eb1788ddf3c_default_photo.png)
ialdabaoth
Members-
Posts
549 -
Joined
-
Last visited
Content Type
Profiles
Forums
Developer Articles
KSP2 Release Notes
Everything posted by ialdabaoth
-
[0.20] ModuleManager 1.3 - for all your stock-modding needs
ialdabaoth replied to ialdabaoth's topic in KSP1 Mod Releases
In this case, it was mine. I can make the necessary changes. But in the larger scope, you're right. I'm not sure that there's a good solution to this. I'm not loving that either. One of the problems that I frequently have when I look at ModuleManager, is figuring out use-case tradeoffs. (This is one of the reasons I'm so adamant about not doing wildcards, for example). The sheer number of ways that things can go subtly wrong in specific circumstances, while being completely logical and not in-point-of-fact incorrect, is staggering. At this point in my modding career, my sole evaluation criterion for whether to implement a new feature - or even fix an existing bug - is "will this cause more, or fewer people to bitch that it's broken?" -
[0.20] ModuleManager 1.3 - for all your stock-modding needs
ialdabaoth replied to ialdabaoth's topic in KSP1 Mod Releases
That is correct, but it has nothing to do with deleting or reloading the modules, it's purely a matter of what the in-memory ConfigNode ends up looking like. ANY sub-node within a ConfigNode that gets modified has to be removed and re-added. If you look at ModuleManager.cs, you will see this happening on line 93 and 94. This is because funky things occasionally happen if you just modify a subnode that is parented to a larger configNode (or at least they did in 0.19; I didn't want to risk introducing new bugs in 0.20 so that code remained untouched). As a consequence of this, yeah... it looks like every subnode that gets modified gets bumped to the bottom of the subnode list. One simple solution might be to include a blank patch node for the nodes that you want to ensure show up after the node you're modifying, so you'd wind up with something like this: @PART[liquidEngine2] { @maxTemp = 1800 @MODULE[ModuleGimbal] { @gimbalRange = 2 } @MODULE[ModuleEngines] { @heatProduction = 200 } @MODULE[ModuleGimbal] {} @MODULE[ModuleAlternator] {} @MODULE[ModuleJettison] {} } Note that this has the additional advantage of allowing you to position an inserted node precisely between any two existing nodes, by spelling out the entire new node order explicitly. -
[0.20] ModuleManager 1.3 - for all your stock-modding needs
ialdabaoth replied to ialdabaoth's topic in KSP1 Mod Releases
Note! That isn't actually the current code at all; that's an old fork. This is the actual code: ModuleManager.cs Note that this doesn't actually touch the modules at all; ALL it does is edit the config node before the PartLoader gets to it. -
[1.3.1] Ferram Aerospace Research: v0.15.9.1 "Liepmann" 4/2/18
ialdabaoth replied to ferram4's topic in KSP1 Mod Releases
farram4, if I were to rewrite your UI to be less obnoxious, would you be interested?- 14,073 replies
-
- aerodynamics
- ferram aerospace research
-
(and 1 more)
Tagged with:
-
Unfortunately, I wasn't able to get RCS blocks to allow user-selectable fuels in the VAB. Also: I'm pretty sure 'Oxidizer' *is* H2O2, and MonoPropellant is actually HAN, not Hydrazine (Hydrazine can't get 260 isp). I had tried to allow Oxidizer as a selectable monopropellant at 190 isp, but alas, it was not to be.
-
It's all good - here's the reason why, if you're curious. Let's say I want a 27% LOX / 73% LH2 mix. Let's say that for this tank, LOX has 0.9 Utilization and LH2 has 0.8, and my available volume for the mix is 1000. 1000 * 0.27 * 0.9 = 243 1000 * 0.73 * 0.8 = 584 that's 827 units of actual LOX+LH2. note that 243/827 is 0.294, and 584 / 827 is 0.706; we do NOT have a 27%/73% ratio, and will wind up with about 65 volume worth of LH2 left over after our engine runs out of LOX.
-
Note: The method you described will NOT give the expected results if you have different utilization factors. But, since I already have the correct formula built into the 'configure for engines' code, there's no reason not to just reuse that. Here's what I'm doing for the next version: 1. "efficiency" will be changed to "utilization" (I like this better, I just couldn't find the right term when I was writing the mod) 2. this syntax: { name = LiquidH2 efficiency = 0.99 mass = 0.0 temperature = -253 loss_rate = 0.0000000002 amount = 0.73 * volume maxAmount = 0.73 * volume note = (requires insulation) } will change to this: { name = LiquidH2 utilization = 0.99 mass = 0.0 temperature = -253 loss_rate = 0.0000000002 amount = full maxAmount = 73% note = (requires insulation) } 3. All tank definitions with a '%' in their maxAmount will be processed AFTER all tank definitions with a static maxAmount. 4. amount will no longer take proportional values. It's either a static value, 0, or the word "full". Anything else is semantically ambiguous.
-
SSTOs! Post your pictures here~
ialdabaoth replied to KissSh0t's topic in KSP1 The Spacecraft Exchange
Do vertical SSTO's count? If so, then behold the S.S. Buck Rogers: -
[1.3.1] Ferram Aerospace Research: v0.15.9.1 "Liepmann" 4/2/18
ialdabaoth replied to ferram4's topic in KSP1 Mod Releases
Can you try with this one? Module Manager v1.3- 14,073 replies
-
- aerodynamics
- ferram aerospace research
-
(and 1 more)
Tagged with:
-
[0.20.2] Mission Controller v0.10 (06/24/2013) [ALPHA]
ialdabaoth replied to nobody44's topic in KSP1 Mod Releases
Let me second SchroedingersHat's suggestion, and yes, this is how you'd want to do it. Although you don't need to parse the textfile; you just need to parse the confignode from the GameDatabase - that's where KSP puts it after KSP automatically parses the textfile for you. What you'd do is something like this: RESOURCE_COST { name = LiquidFuel cost = 0.1 max_storable = 99999999 upkeep_cost = 0 } and then your plugin would do: foreach(ConfigNode node in GameDatabase.Instance.GetConfigNodes("RESOURCE_COST")) { string resource = node.GetValue("name"); float.TryParse(node.GetValue("cost"), out resourceInventory[resource].cost); double.TryParse(node.GetValue("upkeep_cost"), resourceInventory[resource].upkeepCost); float.TryParse(node.GetValue("max_storable"), resourceInventory[resource].maxStorage); } After which you could just refer to your resourceInventory[] dictionary. (I added upkeepCost in case you decide to work with something like my ModularFuelTanks' RealFules resources, where fuels like Liquid Oxygen have refrigeration needs). -
Ok everyone, other than tweaks to the sound effects, I believe I'm done - prove me wrong! If no one notices anything utterly bizzare with 2.2f by Monday, I'll update to the final sound effects (adding pitch and volume changes based on how quickly damage is occurring), and release 2.3! And then we'll finally be out of this alpha cycle and back on a 'stable' release.