blowfish Posted August 14, 2019 Share Posted August 14, 2019 (edited) 6 hours ago, RobertaME said: Trying to create a MM patch to change the Tech Tree, but5 I can't wrap my head around how to do something. I want to change one of the two Parent objects for a Node without changing the other. Here's the source from Techtree.cfg in the Squad folder: Spoiler RDNode { id = stability title = #autoLOC_501028 //#autoLOC_501028 = Stability description = #autoLOC_501029 //#autoLOC_501029 = Reaching for the stars starts with keeping our spacecraft pointed generally in the right direction. cost = 18 hideEmpty = False nodeName = node2_stability anyToUnlock = True icon = RDicon_stability pos = -2170,1201,0 scale = 0.6 Parent { parentID = engineering101 lineFrom = RIGHT lineTo = LEFT } Parent { parentID = basicRocketry lineFrom = RIGHT lineTo = LEFT } } So I want to change ONLY the "parentID = basicRocketry" to "parentID = subsonicFlight" without changing "parentID = engineering101". is there a way to change ONLY a specific instance? If so, I haven't figured it out. Thanks in advance! Just appropriate application of :HAS blocks @TechTree:FOR[SomeMod] { @RDNode:HAS[#id[stability]] { @Parent:HAS[#parentID[basicRocketry]] { @parentID = subsonicFlight } } } (replacing :FOR[SomeMod] with an appropriate pass specifier of course) Edited August 14, 2019 by blowfish Quote Link to comment Share on other sites More sharing options...
RobertaME Posted August 14, 2019 Share Posted August 14, 2019 5 hours ago, blowfish said: Just appropriate application of :HAS blocks @TechTree:FOR[SomeMod] { @RDNode:HAS[#id[stability]] { @Parent:HAS[#parentID[basicRocketry]] { @parentID = subsonicFlight } } } (replacing :FOR[SomeMod] with an appropriate pass specifier of course) See, I didn't know you could nest HAS blocks like that! Thanks! Since the FOR would be my own personal TechTree mods, it would be whatever I chose it to be, right? I'm fairly new to Modding KSP, (though not programming... my knowledge base may be outdated by newer languages, but the logic doesn't change much) so I'm not as familiar with the syntax yet. How exactly do mods set their name... I mean the name that MM will recognize for ordering purposes? Thanks again for cluing me in on nested functions. I'll try playing around with them some to see what else I can do! ::grin:: Quote Link to comment Share on other sites More sharing options...
AloE Posted August 14, 2019 Share Posted August 14, 2019 On 8/7/2019 at 11:06 PM, blowfish said: The RO thing was a backport to make it work with KSP 1.3.x. I don't think it's necessary anymore. things seem to be applied ok in KSP 1.4.5 (i.e. atm seem to be present with expected parameters) with MM 4.0.2 with TRAPIST1 for Principia adjustments to SLIPPIST1, but with MM 4.0.3 I am seeing the following type of 'maths' error for the x2 multiplication that Principia's configs do to the atm curves defined for kopernicus in SLIPPIST1 configs: the full logs for the loads with MM 4.0.2 and MM 4.0.3 are located in the folders at this google drive link: https://drive.google.com/drive/folders/1mWnOI6lPHlbHVEvrHMrasqK9efZEldKw?usp=sharing [LOG 23:10:57.106] Applying update SLIPPIST-1/Scatterer/Sunflares/Sun/@Scatterer_sunflare:HAS[@SlippistSettings:HAS[#SystemPlacement[Home]]]:AFTER[aSLIPPIST-1] to scatterer/config/Sunflares/Sun.cfg/Scatterer_sunflare [LOG 23:10:57.107] Applying update Trappist-1 for Principia/trappist_gravity_model_slippist1/@Kopernicus:AFTER[aSLIPPIST-1] to Kopernicus/Config/System.cfg/Kopernicus[Kerbol System] [ERR 23:10:57.110] Error - Failed to do a maths replacement: @temperatureCurve : original value="0 1446 0.00000E+00 -2.92000E-02" operator=Multiply mod value="2" [ERR 23:10:57.110] Error - Failed to do a maths replacement: @temperatureCurve : original value="5000 1300 -2.92000E-02 -2.66667E-02" operator=Multiply mod value="2" [ERR 23:10:57.110] Error - Failed to do a maths replacement: @temperatureCurve : original value="20000 900 -2.66667E-02 -5.00000E-03" operator=Multiply mod value="2" [ERR 23:10:57.110] Error - Failed to do a maths replacement: @temperatureCurve : original value="30000 850 -5.00000E-03 -1.50000E-02" operator=Multiply mod value="2" [ERR 23:10:57.110] Error - Failed to do a maths replacement: @temperatureCurve : original value="40000 700 -1.50000E-02 -1.25000E-03" operator=Multiply mod value="2" [ERR 23:10:57.110] Error - Failed to do a maths replacement: @temperatureCurve : original value="120000 600 -1.25000E-03 -6.14754E-05" operator=Multiply mod value="2" [ERR 23:10:57.110] Error - Failed to do a maths replacement: @temperatureCurve : original value="5000000 300 -6.14754E-05 0.00000E+00" operator=Multiply mod value="2" [ERR 23:10:57.110] Error - Failed to do a maths replacement: @temperatureSunMultCurve : original value="0 1 0.00000E+00 -6.00000E-05" operator=Multiply mod value="2" [ERR 23:10:57.110] Error - Failed to do a maths replacement: @temperatureSunMultCurve : original value="20000 -0.2 -6.00000E-05 1.33333E-05" operator=Multiply mod value="2" [ERR 23:10:57.110] Error - Failed to do a maths replacement: @temperatureSunMultCurve : original value="50000 0.2 1.33333E-05 0.00000E+00" operator=Multiply mod value="2" [ERR 23:10:57.110] Error - Failed to do a maths replacement: @temperatureSunMultCurve : original value="60000 0.2 0.00000E+00 0.00000E+00" operator=Multiply mod value="2" [ERR 23:10:57.110] Error - Failed to do a maths replacement: @temperatureSunMultCurve : original value="240000 0.2 0.00000E+00 0.00000E+00" operator=Multiply mod value="2" [ERR 23:10:57.110] Error - Failed to do a maths replacement: @pressureCurve : original value="0 1.51988E+03 0.00000E+00 -2.15362E-02" operator=Multiply mod value="2" [ERR 23:10:57.110] Error - Failed to do a maths replacement: @pressureCurve : original value="23000 9.92660E+02 -2.29651E-02 -2.29651E-02" operator=Multiply mod value="2" [ERR 23:10:57.110] Error - Failed to do a maths replacement: @pressureCurve : original value="45000 5.59191E+02 -1.63286E-02 -1.63286E-02" operator=Multiply mod value="2" [ERR 23:10:57.111] Error - Failed to do a maths replacement: @pressureCurve : original value="68000 2.82573E+02 -8.53220E-03 -8.53220E-03" operator=Multiply mod value="2" [ERR 23:10:57.111] Error - Failed to do a maths replacement: @pressureCurve : original value="90000 1.43778E+02 -4.49386E-03 -4.49386E-03" operator=Multiply mod value="2" [ERR 23:10:57.111] Error - Failed to do a maths replacement: @pressureCurve : original value="113000 6.91151E+01 -2.24416E-03 -2.24416E-03" operator=Multiply mod value="2" [ERR 23:10:57.111] Error - Failed to do a maths replacement: @pressureCurve : original value="135000 3.36220E+01 -1.10095E-03 -1.10095E-03" operator=Multiply mod value="2" [ERR 23:10:57.111] Error - Failed to do a maths replacement: @pressureCurve : original value="157000 1.63922E+01 -5.33946E-04 -5.33946E-04" operator=Multiply mod value="2" [ERR 23:10:57.111] Error - Failed to do a maths replacement: @pressureCurve : original value="180000 7.76632E+00 -2.51595E-04 -2.51595E-04" operator=Multiply mod value="2" [ERR 23:10:57.111] Error - Failed to do a maths replacement: @pressureCurve : original value="202000 3.81545E+00 -1.22964E-04 -1.22964E-04" operator=Multiply mod value="2" ... I am grateful for any insights on what might be causing this with MM 4.0.3. Thanks! & Kind regards. Quote Link to comment Share on other sites More sharing options...
Gordon Dry Posted August 14, 2019 Share Posted August 14, 2019 (edited) Hmm. I guess those math replacements only work in comma separated arrays? A few days ago I created a patch where I had to do a regex replacement in a "key" array of all empty spaces to commas, then do the math, then do another regex replacement from commas to spaces... ^This with MM 4.0.3 Edited August 14, 2019 by Gordon Dry Quote Link to comment Share on other sites More sharing options...
blowfish Posted August 15, 2019 Share Posted August 15, 2019 On 8/14/2019 at 7:26 AM, AloE said: things seem to be applied ok in KSP 1.4.5 (i.e. atm seem to be present with expected parameters) with MM 4.0.2 with TRAPIST1 for Principia adjustments to SLIPPIST1, but with MM 4.0.3 I am seeing the following type of 'maths' error for the x2 multiplication that Principia's configs do to the atm curves defined for kopernicus in SLIPPIST1 configs: the full logs for the loads with MM 4.0.2 and MM 4.0.3 are located in the folders at this google drive link: https://drive.google.com/drive/folders/1mWnOI6lPHlbHVEvrHMrasqK9efZEldKw?usp=sharing I am grateful for any insights on what might be causing this with MM 4.0.3. Thanks! & Kind regards. I think this happens because the values are tab separated but the patch expects them to be space separated. Quote Link to comment Share on other sites More sharing options...
AloE Posted August 15, 2019 Share Posted August 15, 2019 38 minutes ago, blowfish said: values are tab separated but the patch expects them to be space separated. ok good was hoping it may be related to delimiters...I'll try converting things to spaces & see if the errors go away. Is there a post/document you recommend that describes delimiter conventions? The main reference I am using to get more familiar with MM/KSP configs is the Primer & its associated links. I welcome your recommendation of link(s) to other information dense documents relevant to MM 4.0.3 Thanks! Quote Link to comment Share on other sites More sharing options...
blowfish Posted August 15, 2019 Share Posted August 15, 2019 4 minutes ago, AloE said: ok good was hoping it may be related to delimiters...I'll try converting things to spaces & see if the errors go away. Is there a post/document you recommend that describes delimiter conventions? The main reference I am using to get more familiar with MM/KSP configs is the Primer & its associated links. I welcome your recommendation of link(s) to other information dense documents relevant to MM 4.0.3 Thanks! The documentation isn't complete sadly. But the delimiter is specified by the patch @key,*[0, ] *= 2 The [0, ] part says to modify the entry at index 0 separated by the character after the comma which in this case is a space Quote Link to comment Share on other sites More sharing options...
AloE Posted August 15, 2019 Share Posted August 15, 2019 1 hour ago, blowfish said: @key,*[0, ] *= 2 The [0, ] part says to modify the entry at index 0 separated by the character after the comma which in this case is a space @eggrobin @GregroxMun this looks like it explains the strange temp, etc readings I have been seeing...the Principia TRAPPIST1 patch appears to not be fully applied to SLIPPIST1...I'll clean the tabs out of the keys in my copy of the SLIPPIST1 0.8.0 configs at least for 1e, switch to MM 4.0.3 & see if my flight recorder plots look better...thanks all! Quote Link to comment Share on other sites More sharing options...
UtilitarianModder Posted August 15, 2019 Share Posted August 15, 2019 (edited) EDIT: Upon closer examination of the output log I found the problem: an old docking mod DLL from 2014 in the plugins folder that escaped deletion. Removing it fixes the crash. At least I'm one post closer to not needing mod approval for my next issue. I'm crashing while loading on game start. I've uninstalled all other mods, and cleaned out my gamedata folder so all that is in there is Squad and Modulemanager.4.0.3.dll Running KSP x64 on Windows 7. output_log.txt: [SNIP] error.log: [SNIP] log files were too large for pastebin; I hope spoiler tagging them is an adequate workaround. This is my first problem with a mod i've been unable to resolve myself or find an existing solution for, so I've never posted here before. Any help or suggestion is welcome. Edited August 15, 2019 by Gargamel Huge walls of text redacted. Quote Link to comment Share on other sites More sharing options...
Gargamel Posted August 15, 2019 Share Posted August 15, 2019 @UtilitarianModder, Hi there! Welcome to the forums. Huge log files posted to the forums, even hidden in spoilers, can cause issues for some users viewing the forums. Please host your log files on a service like dropbox and link them here. Quote Link to comment Share on other sites More sharing options...
blowfish Posted August 16, 2019 Share Posted August 16, 2019 9 hours ago, AloE said: @eggrobin @GregroxMun this looks like it explains the strange temp, etc readings I have been seeing...the Principia TRAPPIST1 patch appears to not be fully applied to SLIPPIST1...I'll clean the tabs out of the keys in my copy of the SLIPPIST1 0.8.0 configs at least for 1e, switch to MM 4.0.3 & see if my flight recorder plots look better...thanks all! For what it's worth you can use any number of spaces as the separator Quote Link to comment Share on other sites More sharing options...
AloE Posted August 16, 2019 Share Posted August 16, 2019 18 hours ago, blowfish said: you can use any number of spaces as the separator that is very helpful...made the delimiter changes last night & indeed no MM errors anymore with 4.0.3. Thanks! Quote Link to comment Share on other sites More sharing options...
captinjoehenry Posted August 17, 2019 Share Posted August 17, 2019 Is there anyway I can mark a mod or a part to not be touched by any MM patch? As I have one mod in particular I really like the way it is but it's being MM patched to hell and for the life of me I can't find what patch is messing it up Quote Link to comment Share on other sites More sharing options...
KerbMav Posted August 17, 2019 Share Posted August 17, 2019 2 hours ago, captinjoehenry said: Is there anyway I can mark a mod or a part to not be touched by any MM patch? As I have one mod in particular I really like the way it is but it's being MM patched to hell and for the life of me I can't find what patch is messing it up I put all my final touches into my own "mod folder" and put zzz at the beginning of the name so it is read last. Not sure if doing that would help though. Quote Link to comment Share on other sites More sharing options...
4x4cheesecake Posted August 17, 2019 Share Posted August 17, 2019 2 hours ago, captinjoehenry said: Is there anyway I can mark a mod or a part to not be touched by any MM patch? As I have one mod in particular I really like the way it is but it's being MM patched to hell and for the life of me I can't find what patch is messing it up You can check the MM log to figure out, which patches are applied to specific parts. MM writes a separate log into "Kerbal Space Program/Logs/ModuleManager/MMPatch.log" (usually it's also dumped into the regular log files of KSP but this one contains just the MM patch information). Search for the name of the part and you should find something like this: Applying update CommunityResourcePack/SurfaceScanner/@PART[SurfaceScanner] to Squad/Parts/Resources/SurfaceScanner/SurfaceScanner.cfg/PART This should allow you to identify every patch which is applied to a part. To prevent these patches to be applied, you have to know how these parts are identified, for example by the part name, the name of a module, etc... Then, you can add a patch to change this identifier in the part, for example by renaming it and run this patch in :FIRST and another patch to undo these changes in :FINAL. Quote Link to comment Share on other sites More sharing options...
Jognt Posted August 17, 2019 Share Posted August 17, 2019 33 minutes ago, KerbMav said: I put all my final touches into my own "mod folder" and put zzz at the beginning of the name so it is read last. Not sure if doing that would help though. That doesn’t really do much. What decides when a patch is run is set by the timing in the patch (FIRST/FOR/BEFORE/AFTER/LAST/FINAL) You should probably use those wisely. You can technically run them all at FINAL, but you should avoid that where possible. If you’re changing another mod’s changes, use AFTER[thatMod]. It’ll also NOT run if thatMod isn’t present. If you want to make your own changes to stock parts, you should do so in FOR[myFolder]. If you want to do something to parts before another mod touches it, you can use BEFORE[thatMod], or if many mods may touch it, you could use FIRST. Quote Link to comment Share on other sites More sharing options...
Masoneus Posted August 25, 2019 Share Posted August 25, 2019 What version of MM do I need for KSP 1.4.5 & BDA 1.1 please Quote Link to comment Share on other sites More sharing options...
eatU4myT Posted August 26, 2019 Share Posted August 26, 2019 (edited) Hi, I'm returning to KSP since Breaking Ground, and am trying to use a small patch I've used successfully in the past, @EXPERIMENT_DEFINITION:Final { @baseValue *= 0.667 } The idea is to take all science experiments, and require you to run them about 3 times more than you would in stock to get full science reward from them. However, MM appears to be setting baseValue to = 0.667, rather than multiplying by a factor of 0.667. Has there been any change to MM that I should be aware of for how this patch should be written? Thanks EDIT: Never mind, this appears to have been caused by a conflict with a tech tree mod I was trying out. Patch is working as expected now that is removed. Edited August 26, 2019 by eatU4myT Resolved Quote Link to comment Share on other sites More sharing options...
zer0Kerbal Posted September 3, 2019 Share Posted September 3, 2019 So what colors does MM recognize in patches? <color=green> text. </color> I know red, green, blue, orange, yellow work. Is there a list? can use (#0000ff) hex codes instead? Quote Link to comment Share on other sites More sharing options...
Starwaster Posted September 3, 2019 Share Posted September 3, 2019 42 minutes ago, zer0Kerbal said: So what colors does MM recognize in patches? <color=green> text. </color> I know red, green, blue, orange, yellow work. Is there a list? can use (#0000ff) hex codes instead? I don't think MM 'recognizes' colors. That goes through KSP/Unity. Quote Link to comment Share on other sites More sharing options...
zer0Kerbal Posted September 3, 2019 Share Posted September 3, 2019 (edited) 53 minutes ago, Starwaster said: I don't think MM 'recognizes' colors. That goes through KSP/Unity. good point. answer I was graciously given: http://digitalnativestudios.com/textmeshpro/docs/ScriptReference/RichTags.html <#453a33></color> works. but \n doesn't. hmmm... Edited September 3, 2019 by zer0Kerbal Quote Link to comment Share on other sites More sharing options...
dueb Posted September 9, 2019 Share Posted September 9, 2019 Hi! So, I'm a bit rusty with ModuleManager... I have 3 questions: Let's say I have this key in a node: title = #autoLOC_501028 (I took the first one on this page ) From what I understood after reading several pages in this topic, because of the way KSP process theses localization keywords, and because ModuleManager comes AFTER KSP has processed theses localization keywords, I can't do things like this: @PART[*]:HAS[#title[#autoLOC_501028]] nor this: PART { name = myPart title = #autoLOC_501028 } (Can even ModuleManager not be confused by this character '#'? I doubt it.) Now, let's say I want to test if the last parameter of node_stack_whatever exist. Is this even possible? Again, I've read several pages of this topic and still don't have an answer. I know you can index them inside nodes (I saw several examples for curves values), but can you test them in a :HAS block? And if so, how? I've tried something like this but...yeah: @PART[*]:HAS[#node_stack_whatever[6,],#myAnnoyingSecondTest[*]] @PART[*]:HAS[#node_stack_whatever,6[>0],#myAnnoyingSecondTest[*]] I don't remember my third question... Thank you for reading! Quote Link to comment Share on other sites More sharing options...
blowfish Posted September 9, 2019 Share Posted September 9, 2019 25 minutes ago, dueb said: From what I understood after reading several pages in this topic, because of the way KSP process theses localization keywords, and because ModuleManager comes AFTER KSP has processed theses localization keywords, I can't do things like this: That is correct. I've looked into changing this, it's certainly possible but it would break a bunch of existing patches that rely on the post-localization values. 26 minutes ago, dueb said: Now, let's say I want to test if the last parameter of node_stack_whatever exist. Is this even possible? Again, I've read several pages of this topic and still don't have an answer. I know you can index them inside nodes (I saw several examples for curves values), but can you test them in a :HAS block? And if so, how? I've tried something like this but...yeah: There's no way to index within a HAS block unfortunately. Quote Link to comment Share on other sites More sharing options...
dueb Posted September 9, 2019 Share Posted September 9, 2019 Thank you for the clarifications @blowfish! Quote Link to comment Share on other sites More sharing options...
RobertaME Posted September 12, 2019 Share Posted September 12, 2019 So I've been learning how to manipulate CFGs using MM over the last month and I think I have it down pretty good, but I'd like another set of eyes to look over my understanding of how things work. (old programmer habits die hard) Here is a sample of a MM edit I'm working on. This one should remove the ability for K&K nuclear reactors and centrifuges to store their own fuel and byproducts. (thus forcing the player to actually use the storage tanks) If someone could verify my code before I commit it I'd appreciate it! @PART[KKAOSS_Centrifuge|KKAOSS_Nuclear_Reactor]:NEEDS[PlanetarySurfaceStructures]:FOR[RemodeledTechTree] { !Resource,* {} // Remove all resources from the parts !MODULE:HAS[#name[ModuleKPBSNuclearStorage]] // Remove the Nuclear Storage Module from the parts @MODULE:HAS[#name[ModuleResourceConverter]] // Find all Resource Converter Modules { @INPUT_RESOURCE:HAS[#FlowMode[NO_FLOW]] // Find all NO_FLOW FlowModes within Input Resources within all Resource Converter Modules { @FlowMode = STAGE_PRIORITY_FLOW // Replace all NO_FLOW Flowmodes with STAGE_PRIORITY_FLOW // This allows the resources to move to and from the storage tanks } @OUTPUT_RESOURCE:HAS[#FlowMode[NO_FLOW]] // Same as above but for Output Resources { @FlowMode = STAGE_PRIORITY_FLOW } } } Any pointers if I messed something up would be appreciated! Thanks! Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.