Jump to content

MKSheppard

Members
  • Posts

    72
  • Joined

  • Last visited

Everything posted by MKSheppard

  1. If you need configs for this; download them from here https://github.com/WazWaz/EnvironmentalVisualEnhancements/releases/tag/EVE-1.2.2-1
  2. I was wondering if rocket engine plumes/effects/fx would be looked at at some point. If you scale an engine; the plumes end up looking weird relative to the original scale.
  3. Updated python file that handles localizations (sorta). You still have to copy and paste the localization file to the directory the python file is in, and it must be named "en-us.txt" But that's marginal amounts of work compared to copying names/partIDs by hand. #simply place this into a folder and run it. import os import re #regular expressions import pathlib #################################################################################### #variables #################################################################################### cwd = os.getcwd() #This sets the current root working directory to that the python file is in. basedirname = os.path.basename(os.getcwd()) #gets simple base name of directory KSPTitleCleaned = "" #blank since it is used in IF loop RealTitleCleaned = "" #blank since it is used in IF loop PartNameCleaned = "" #blank since it is used in IF loop Bulkhead = "" #blank since it is used in IF loop LocalizationIndex = [] #create here outside of IF loop. LocalizationString = [] #create here outside of IF loop. LOC_INDEX = 0 #create here outside of IF loop. ############################################################################# #functions ############################################################################# def fixVariable(in_str): return re.sub('^.*?= ', '', in_str) # this removes everything before the = sign in a string, plus the = sign itself. def LoadVariableBeforeSign(in_str): return re.sub('\= ', '', in_str) # this removes everything before the = sign in a string, plus the = sign itself. ############################################################################ print("NOTE: If this contains localization strings, you must have the localization file 'en-us.txt' in the same directory as the python file for it to function correctly!") print("") ACRONYM = input("enter acronym (e.g. BDB) that will be used in filenames:") ################################################################################ #We do a localization scan and dump first. LocalizationFile = pathlib.Path("en-us.txt") if LocalizationFile.exists(): #if this file exists print("Localization File Exists....") with open(LocalizationFile, 'r',encoding='utf-8',errors='ignore') as LocalFile: for line in LocalFile: if '#LOC' in line: # we now load the index headers into the list String = line String = String.split('=', 1) [0] String = String.strip() LocalizationIndex.append(String) print("Localization Headers Loaded....") LocalFile.seek(0) # go back to line 0 of partfile. for line in LocalFile: if '#LOC' in line: # we now load the text into the list String = line String = String.split('=', 1) [1] String = String.strip() LocalizationString.append(String) print("Localization Strings Loaded...") #################### # Now that we have all the data loaded, we can now do our parts. with open(ACRONYM + "_DUMP.txt", 'w') as DumpFile: for subdir, dirs, files in os.walk(cwd): #this walks through all subdirs CurrentDir = subdir.replace(cwd, ""); #remove super long full directory listing CurrentDir = CurrentDir[1:] #remove first character CurrentDir = CurrentDir.replace("\\", " -- "); # get rid of backslashes for neatness and to avoid loveing up CFGs DumpFile.write("\n") DumpFile.write(" // " + ACRONYM + " -- " + CurrentDir + " =====================================================================" + "\n") for file in files: if file.endswith(".cfg"): with open(os.path.join(subdir, file), 'r',encoding='utf-8',errors='ignore') as PartFile: for line in PartFile: if 'real_title' in line: RealTitleCleaned = line RealTitleCleaned = fixVariable(RealTitleCleaned) RealTitleCleaned = RealTitleCleaned.strip() if (RealTitleCleaned == ""): #if no real title entry.... PartFile.seek(0) # go back to line 0 of partfile. for line in PartFile: if 'title' in line: KSPTitleCleaned = line KSPTitleCleaned = fixVariable(KSPTitleCleaned) KSPTitleCleaned = KSPTitleCleaned.strip() #We now have to do error checking because of stupid localization. if "#LOC" in KSPTitleCleaned: #if the string contains a localization ID... LOC_INDEX = LocalizationIndex.index(KSPTitleCleaned) # we get the localization index. KSPTitleCleaned = LocalizationString[LOC_INDEX] #grab it out of the string PartFile.seek(0) # go back to line 0 of partfile. for line in PartFile: if 'name' in line: PartNameCleaned = line PartNameCleaned = fixVariable(PartNameCleaned) PartNameCleaned = PartNameCleaned.strip() break PartFile.seek(0) # go back to line 0 of partfile. for line in PartFile: if 'bulkheadProfiles' in line: Bulkhead = line Bulkhead = fixVariable(Bulkhead) Bulkhead = Bulkhead.strip() DumpFile.write("@PART[" + PartNameCleaned + "]{%TechRequired = PLACEHOLDER} // "+ RealTitleCleaned + KSPTitleCleaned + " (" + Bulkhead + ")\n") KSPTitleCleaned = "" # zero it out since the IF branch may not always fire each time. RealTitleCleaned = "" # zero it out since the IF branch may not always fire each time. Bulkhead = "" # zero it out since the IF branch may not always fire each time. LOC_INDEX = 0 # zero it out since the IF branch may not always fire each time. DumpFile.write(" // =========================================================================================" + "\n") os.system("pause") #pause so we can see there are no errors. It basically causes this to go from: // BDB -- SOYUZ ===================================================================== @PART[tantares_adapter_s0p5_s0_1]{%TechRequired = PLACEHOLDER} // #LOC_tantares_tantares_adapter_s0p5_s0_1 (size1, size0p5) @PART[tantares_adapter_s1_s0p5_1]{%TechRequired = PLACEHOLDER} // #LOC_tantares_tantares_adapter_s1_s0p5_1 (size1, size0p5) @PART[tantares_adapter_s1_s0_1]{%TechRequired = PLACEHOLDER} // #LOC_tantares_tantares_adapter_s1_s0_1 (size1, size0) @PART[tantares_basic_engine_s1_1]{%TechRequired = PLACEHOLDER} // #LOC_tantares_tantares_basic_engine_s1_1 (size1) @PART[tantares_basic_fuel_tank_s1_1]{%TechRequired = PLACEHOLDER} // #LOC_tantares_tantares_basic_fuel_tank_s1_1 (size1) @PART[tantares_crew_s1_1]{%TechRequired = PLACEHOLDER} // #LOC_tantares_tantares_crew_s1_1 (size1, size0) @PART[tantares_decoupler_s1_1]{%TechRequired = PLACEHOLDER} // #LOC_tantares_tantares_decoupler_s1_1 (size1) @PART[tantares_engine_s1_1]{%TechRequired = PLACEHOLDER} // #LOC_tantares_tantares_engine_s1_1 (size1) @PART[tantares_fuel_tank_s1_1]{%TechRequired = PLACEHOLDER} // #LOC_tantares_tantares_fuel_tank_s1_1 (size1) @PART[tantares_heatshield_s1_1]{%TechRequired = PLACEHOLDER} // #LOC_tantares_tantares_heatshield_s1_1 (size1) @PART[tantares_orbital_module_s1_1]{%TechRequired = PLACEHOLDER} // #LOC_tantares_tantares_orbital_module_s1_1 (size0p5, size0) @PART[tantares_orbital_module_s1_2]{%TechRequired = PLACEHOLDER} // #LOC_tantares_tantares_orbital_module_s1_2 (size0p5, size0) @PART[tantares_orbital_module_s1_3]{%TechRequired = PLACEHOLDER} // #LOC_tantares_tantares_orbital_module_s1_3 (size0p5, size0) @PART[tantares_orbital_module_s1_4]{%TechRequired = PLACEHOLDER} // #LOC_tantares_tantares_orbital_module_s1_4 (size1) @PART[tantares_parachute_s0_1]{%TechRequired = PLACEHOLDER} // #LOC_tantares_tantares_parachute_s0_1 (size0) // ========================================================================================= To this: // BDB -- SOYUZ ===================================================================== @PART[tantares_adapter_s0p5_s0_1]{%TechRequired = PLACEHOLDER} // Tantares Size 0.5 to Size 0 Adapter (size1, size0p5) @PART[tantares_adapter_s1_s0p5_1]{%TechRequired = PLACEHOLDER} // Tantares Size 1 to Size 0.5 Adapter (size1, size0p5) @PART[tantares_adapter_s1_s0_1]{%TechRequired = PLACEHOLDER} // Tantares Size 1 to Size 0 Adapter (size1, size0) @PART[tantares_basic_engine_s1_1]{%TechRequired = PLACEHOLDER} // Tantares S5.35 "Rullekasse" Propulsion Unit (size1) @PART[tantares_basic_fuel_tank_s1_1]{%TechRequired = PLACEHOLDER} // Tantares Size 1 Basic Service Compartment (size1) @PART[tantares_crew_s1_1]{%TechRequired = PLACEHOLDER} // Tantares 12-A "Vingleboks" Crew Capsule (size1, size0) @PART[tantares_decoupler_s1_1]{%TechRequired = PLACEHOLDER} // Tantares Size 1 Separator (size1) @PART[tantares_engine_s1_1]{%TechRequired = PLACEHOLDER} // Tantares S5.80 "Vognkasse" Propulsion Unit (size1) @PART[tantares_fuel_tank_s1_1]{%TechRequired = PLACEHOLDER} // Tantares Size 1 Service Compartment (size1) @PART[tantares_heatshield_s1_1]{%TechRequired = PLACEHOLDER} // Tantares Size 1 Heatshield (size1) @PART[tantares_orbital_module_s1_1]{%TechRequired = PLACEHOLDER} // Tantares 93-A "Eldstesfære" Orbital Module (size0p5, size0) @PART[tantares_orbital_module_s1_2]{%TechRequired = PLACEHOLDER} // Tantares 93-B "Eldresfære" Orbital Module (size0p5, size0) @PART[tantares_orbital_module_s1_3]{%TechRequired = PLACEHOLDER} // Tantares 93-C "Nysfære" Orbital Module (size0p5, size0) @PART[tantares_orbital_module_s1_4]{%TechRequired = PLACEHOLDER} // Tantares 12-D "Kopiboks" Orbital Module (size1) @PART[tantares_parachute_s0_1]{%TechRequired = PLACEHOLDER} // Tantares Size 0 Inline Parachute (size0) // =========================================================================================
  4. Here's a way to auto generate a tech tree config for using parts of a mod easily using Python 3.xx: #simply place this into a folder and run it. import os import re #regular expressions #variables cwd = os.getcwd() #This sets the current root working directory to that the python file is in. basedirname = os.path.basename(os.getcwd()) #gets simple base name of directory KSPTitleCleaned = "" #blank since it is used in IF loop RealTitleCleaned = "" #blank since it is used in IF loop PartNameCleaned = "" #blank since it is used in IF loop #function def fixVariable(in_str): return re.sub('^.*?= ', '', in_str) # this removes everything before the = sign in a string, plus the = sign itself. ACRONYM = input("enter acronym (e.g. BDB) that will be used in filenames:") with open(ACRONYM + basedirname + "_DUMP.txt", 'w') as DumpFile: for subdir, dirs, files in os.walk(cwd): #this walks through all subdirs CurrentDir = subdir.replace(cwd, ""); #remove super long full directory listing CurrentDir = CurrentDir[1:] #remove first character CurrentDir = CurrentDir.replace("\\", " -- "); # get rid of backslashes for neatness and to avoid loveing up CFGs DumpFile.write("\n") DumpFile.write(" // " + ACRONYM + " -- " + CurrentDir + " =====================================================================" + "\n") for file in files: if file.endswith(".cfg"): with open(os.path.join(subdir, file), 'r',encoding='utf-8',errors='ignore') as PartFile: for line in PartFile: if 'real_title' in line: RealTitleCleaned = line RealTitleCleaned = fixVariable(RealTitleCleaned) RealTitleCleaned = RealTitleCleaned.strip() if (RealTitleCleaned == ""): #if no real title entry.... PartFile.seek(0) # go back to line 0 of partfile. for line in PartFile: if 'title' in line: KSPTitleCleaned = line KSPTitleCleaned = fixVariable(KSPTitleCleaned) KSPTitleCleaned = KSPTitleCleaned.strip() PartFile.seek(0) # go back to line 0 of partfile. for line in PartFile: if 'name' in line: PartNameCleaned = line PartNameCleaned = fixVariable(PartNameCleaned) PartNameCleaned = PartNameCleaned.strip() break DumpFile.write("@PART[" + PartNameCleaned + "]{%TechRequired = PLACEHOLDER} // "+ RealTitleCleaned + KSPTitleCleaned + "\n") KSPTitleCleaned = "" # zero it out since the IF branch may not always fire each time. RealTitleCleaned = "" # zero it out since the IF branch may not always fire each time. DumpFile.write(" // =========================================================================================" + "\n") os.system("pause") #pause so we can see there are no errors. This generates a text file with the following parameters: // BDB -- Agena ===================================================================== @PART[bluedog_agenaB //]{%TechRequired = PLACEHOLDER} // Advanced Agena engine upgrade @PART[bluedog_ATDA_Battery]{%TechRequired = PLACEHOLDER} // Augmented Target Docking Adapter Battery Unit @PART[bluedog_ATDA_RCS]{%TechRequired = PLACEHOLDER} // Augmented Target Docking Adapter RCS System @PART[bluedog_ATDA_VHFAntenna]{%TechRequired = PLACEHOLDER} // Augmented Target Docking Adapter VHF Antenna @PART[bluedog_AgenaA]{%TechRequired = PLACEHOLDER} // XLR81-BA-5 Agena-A/B Liquid Fuel Engine @PART[bluedog_AgenaB_FairingBase_Ranger]{%TechRequired = PLACEHOLDER} // JPL 0.9375m flared fairing base @PART[bluedog_AgenaD]{%TechRequired = PLACEHOLDER} // XLR81-BA-13 Agena-D Liquid Fuel Engine @PART[bluedog_AgenaD_FairingBase_LunarOrbiter]{%TechRequired = PLACEHOLDER} // Lunar Orbiter 0.9375m Flared Fairing Base @PART[bluedog_Agena_AInterstage]{%TechRequired = PLACEHOLDER} // Agena 1.25m to 0.9375m Interstage @PART[bluedog_Agena_Avionics]{%TechRequired = PLACEHOLDER} // Agena Telemetry Response Unit @PART[bluedog_Agena_Decoupler_LunarOrbiter]{%TechRequired = PLACEHOLDER} // Lunar Orbiter Payload Separation Mechanism @PART[bluedog_Agena_EngineMount]{%TechRequired = PLACEHOLDER} // Agena Engine Mount @PART[bluedog_Agena_EngineShroud]{%TechRequired = PLACEHOLDER} // Agena A/B Equipment Rack @PART[bluedog_Agena_Engine_8096C]{%TechRequired = PLACEHOLDER} // XLR81-8096C Advanced Agena Engine @PART[bluedog_Agena_Engine_XLR81]{%TechRequired = PLACEHOLDER} // Bell XLR-81-8096B @PART[bluedog_Agena_EquipmentRack]{%TechRequired = PLACEHOLDER} // Agena D Equipment Rack @PART[bluedog_Agena_MaterialsBay]{%TechRequired = PLACEHOLDER} // Agena 9.375m Materials Bay @PART[bluedog_Agena_MultiPayloadAdapter]{%TechRequired = PLACEHOLDER} // Agena Multiple Payload Adapter @PART[bluedog_Agena_RetroThrustModule]{%TechRequired = PLACEHOLDER} // Agena Retro Thrust Module @PART[bluedog_Agena_SLV3B_FairingBase]{%TechRequired = PLACEHOLDER} // Atlas SLV-3B 1.875m Adapter Fairing Base @PART[bluedog_Agena_SLV3B_Interstage]{%TechRequired = PLACEHOLDER} // Atlas SLV-3B 0.9375m Interstage @PART[bluedog_Agena_StraightInterstage]{%TechRequired = PLACEHOLDER} // Agena 0.9375 Interstage @PART[bluedog_Agena_Tank_Long]{%TechRequired = PLACEHOLDER} // Agena-240BD Liquid Fuel Tank @PART[bluedog_Agena_Tank_Short]{%TechRequired = PLACEHOLDER} // Agena-120A Liquid Fuel Tank @PART[bluedog_Agena_UllageMotor]{%TechRequired = PLACEHOLDER} // Agena A/B Ullage Motor @PART[bluedog_Carrack_AgenaAdapter]{%TechRequired = PLACEHOLDER} // Carrack/Agena Adapter @PART[bluedog_Carrack_StraightAdapter]{%TechRequired = PLACEHOLDER} // Carrack 1.5m Straight Adapter @PART[bluedog_Carrack_WideAdapter]{%TechRequired = PLACEHOLDER} // Carrack 2.1m Wide Adapter @PART[bluedog_GATV_AcquisitionLight]{%TechRequired = PLACEHOLDER} // Agena Target Vehicle Acquisition Light @PART[bluedog_GATV_DockingPort]{%TechRequired = PLACEHOLDER} // Agena Target Vehicle Docking Port @PART[bluedog_GATV_LBandAntenna]{%TechRequired = PLACEHOLDER} // Agena Target Vehicle Command Antenna @PART[bluedog_GATV_MMDetector]{%TechRequired = PLACEHOLDER} // S-00M Micrometeroid Package @PART[bluedog_GATV_MaterialsBay]{%TechRequired = PLACEHOLDER} // Agena Target Vehicle 0.9375m Materials Bay @PART[bluedog_GATV_NoseCone]{%TechRequired = PLACEHOLDER} // Agena Target Vehicle Nose Cone @PART[bluedog_GATV_NuclearPackage]{%TechRequired = PLACEHOLDER} // N-00K Nuclear Package @PART[bluedog_GATV_RunningLight]{%TechRequired = PLACEHOLDER} // Agena Target Vehicle Running Light @PART[bluedog_GATV_SPS]{%TechRequired = PLACEHOLDER} // Model 8250 Agena-D Secondary Engine @PART[bluedog_GATV_SPS_LFO]{%TechRequired = PLACEHOLDER} // Model 8250-B Agena-D Secondary Engine @PART[bluedog_GATV_SPS_RCS]{%TechRequired = PLACEHOLDER} // Model 8250-C Agena-D Secondary Engine @PART[bluedog_GATV_SpiralAntenna]{%TechRequired = PLACEHOLDER} // Agena Target Vehicle Spiral Command Antenna @PART[bluedog_Keyhole_Camera_KH1]{%TechRequired = PLACEHOLDER} // KH-1 Corona Camera System @PART[bluedog_Keyhole_Camera_KH4]{%TechRequired = PLACEHOLDER} // KH-4 Corona Camera System @PART[bluedog_Keyhole_Camera_KH4B]{%TechRequired = PLACEHOLDER} // KH-4B Corona Camera System @PART[bluedog_Keyhole_Camera_KH7]{%TechRequired = PLACEHOLDER} // KH-7 Gambit Camera System @PART[bluedog_Keyhole_Camera_KH8]{%TechRequired = PLACEHOLDER} // KH-8 Gambit 3 Camera System @PART[bluedog_Keyhole_DualAdapter]{%TechRequired = PLACEHOLDER} // Keyhole Dual Adapter @PART[bluedog_Keyhole_OCV_KH7]{%TechRequired = PLACEHOLDER} // KH-7 "Gambit" Orbital Control Vehicle @PART[bluedog_Keyhole_RVAdapter]{%TechRequired = PLACEHOLDER} // Keyhole RVA1 0.9375m to 0.625m Adapter @PART[bluedog_Titan3B_Interstage]{%TechRequired = PLACEHOLDER} // Titan IIIB 1.875m to 0.9375m Adapter Interstage @PART[bluedog_agenaAntenna]{%TechRequired = PLACEHOLDER} // Agena Command Antenna @PART[bluedog_agenaLongTank]{%TechRequired = PLACEHOLDER} // Agena-200D Liquid Fuel Tank @PART[bluedog_agenaLongWhiteTank]{%TechRequired = PLACEHOLDER} // Agena-200 Liquid Fuel Tank @PART[bluedog_agenaMediumTank]{%TechRequired = PLACEHOLDER} // Agena-140B Liquid Fuel Tank @PART[bluedog_agenaNoseCone]{%TechRequired = PLACEHOLDER} // Agena Nose Cone @PART[bluedog_agenaPort]{%TechRequired = PLACEHOLDER} // Agena Docking Port @PART[bluedog_agenaProbeCore]{%TechRequired = PLACEHOLDER} // Agena Telemetry Response Unit @PART[bluedog_agenaSecondaryEngine]{%TechRequired = PLACEHOLDER} // Model 8250 Agena-D Secondary Engine @PART[bluedog_agenaShortTank]{%TechRequired = PLACEHOLDER} // Agena-70W Liquid Fuel Tank @PART[bluedog_agenaShortTankM]{%TechRequired = PLACEHOLDER} // Agena-70 Liquid Fuel Tank // ========================================================================================= You'll still have to do cleanup work, but most of the hard work is done for you, and you can focus on where to assign parts in your tech tree, instead of having to copy partnames.
  5. Is it possible to implement limits on Tweakscale, i.e. you can scale a part up to make it bigger, but you can't scale it down to make it smaller?
  6. If you want to select just probes, use this header: @PART[*]:HAS[@MODULE[ModuleCommand],#CrewCapacity[0]] If you want to select command modules (manned): @PART[*]:HAS[@MODULE[ModuleCommand],#CrewCapacity[>0]] There's also an alternate way to filter for probes, via: vesselType = Probe
  7. How far have you gotten? I've been working on a tech tree of my own for about a month now. If nothing else, I can send you lists full of stuff like: @PART[EnginePlate_2] //Stock Squad EP-25 Engine Plate (2.5m) { %TechRequired = liquid_rocketry_3 } That you can then adapt, since the hardest part of starting a tech tree from scratch is getting partnames for everything and then remembering what they're for.
  8. Okay, so you'll need Module Manager and then apply the following CFG file in your GameData Directory: //Add part name to description //Created by Tonka Crash in 179413-mod-to-show-part-name @PART[*]:FINAL { @description = #$description$ <color=#7F7F7F> [$name$]</color> } This will add a part name to the game as a debug feature to the end of descriptions in everything. Another nice feature you can do for Quality of Life Improvements is this: @PART[seatExternalCmd] //EAS External Command Seat { %TechRequired = externalcontrol @description = #$description$ <color=#FF0000>[Stock KSP]</color> }
  9. Here's a CFG file to add NEXUS to whatever tree. Just do a FIND-Replace and replace the node with one of your choice. @PART[NexusFuelTank] { %TechRequired = advanced_liquid_rockets @description = #$description$ <color=#FF0000>[Tiktaalik's NEXUS]</color> } @PART[Nexus25mShell] { %TechRequired = advanced_liquid_rockets @description = #$description$ <color=#FF0000>[Tiktaalik's NEXUS]</color> } @PART[LF70f-B] { %TechRequired = advanced_liquid_rockets @description = #$description$ <color=#FF0000>[Tiktaalik's NEXUS]</color> } @PART[NexusEnginePlug] { %TechRequired = advanced_liquid_rockets @description = #$description$ <color=#FF0000>[Tiktaalik's NEXUS]</color> } @PART[NexusRCS] { %TechRequired = advanced_liquid_rockets @description = #$description$ <color=#FF0000>[Tiktaalik's NEXUS]</color> } @PART[supermaxiLandingLeg] { %TechRequired = advanced_liquid_rockets @description = #$description$ <color=#FF0000>[Tiktaalik's NEXUS]</color> } @PART[NexusL30AHExpansionDeflection] { %TechRequired = advanced_liquid_rockets @description = #$description$ <color=#FF0000>[Tiktaalik's NEXUS]</color> } @PART[Nexus150fInterstage] { %TechRequired = advanced_liquid_rockets @description = #$description$ <color=#FF0000>[Tiktaalik's NEXUS]</color> } @PART[Nexus150fHeatShield] { %TechRequired = advanced_liquid_rockets @description = #$description$ <color=#FF0000>[Tiktaalik's NEXUS]</color> } @PART[airbrakeNex1] { %TechRequired = advanced_liquid_rockets @description = #$description$ <color=#FF0000>[Tiktaalik's NEXUS]</color> } @PART[fairingSize15] { %TechRequired = advanced_liquid_rockets @description = #$description$ <color=#FF0000>[Tiktaalik's NEXUS]</color> } @PART[fairingSize11] { %TechRequired = advanced_liquid_rockets @description = #$description$ <color=#FF0000>[Tiktaalik's NEXUS]</color> }
  10. How do you represent negative numbers in MM? I'm trying to multiply a number by a negative value (-0.2807) but I can't get it to go negative; even when II start with: NegativeA = 1 NegativeA -= 0.2807 //we have to do this repurposed bovine waste to get a negative number NegativeA = 1 NegativeA -= 0.2807
  11. This one is going into my techtree mod. just ADORE the EVA you made for the 0.625m command pod.
  12. I'm trying to fix some of the exponents used in tweakscale to be more accurate. I've been able to fix engine thrust scaling to be accurate with actual rocket propulsion software with the following code: //This is for engines to fix their size/scaling. @TWEAKSCALEEXPONENTS[ModuleEngines] { %minFuelFlow = 2 //original was set to 2.5 %maxFuelFlow = 2 //original was set to 2.5 %maxThrust = 2 //original was set to 2.5 } But I'm hitting a rock in trying to fix engine mass scaling: //this fixes mass scaling for engines. @TWEAKSCALEEXPONENTS[Part]:HAS[#category[Engine]] { %mass = 2 //original was set to 3 } Doesn't work. Has anyone made a custom CFG that adjusts ONLY engine mass scaling? EDIT: If you want liquid engines to scale correctly; you must use: type = stack_square This correctly scales their mass without the need for a patch
  13. Question. How do you get the APUS Airlock and the APUS Cargo bays to line up in autosnap?
  14. This appears to work in 1.9.1 Here's a CFG file to make you have unlimited parts from the start in the VAB, being limited only by vehicle size and tonnage on the pad, in more logical increments: @CUSTOMBARNKIT { !VAB{}// We nuke the old VAB. VAB { levels = 3 upgradesVisual = 1, 2, 3 upgrades = 50000, 75000, 112500 actionGroupsStockUnlock = 2 actionGroupsCustomUnlock = 3 partCountLimit = -1, -1, -1 } //------------------------------------------------ !LAUNCHPAD{}// We nuke the old LAUNCHPAD LAUNCHPAD { levels = 6 upgradesVisual = 1, 1, 2, 2, 3, 3 upgrades = 50000, 75000, 112500, 168750, 253125, 379688 craftMassLimit = 18, 45, 145, 400, 1200, -1 craftSizeLimit { size = 15, 20, 15 //width, height, length Level 1 Start size = 22.5, 30, 22.5 //width, height, length Level 2 size = 33.8, 45, 33.8 //width, height, length Level 3 size = 50.6, 67.5, 50.6 //width, height, length Level 4 size = 75, 100, 75 //width, height, length Level 5 size = -1, -1, -1 //width, height, length Level 6 } useBuilding = false } //------------------------------------------------ } //END OF FILE This makes you have a launch pad that goes: 18 tonnes (20m height) START 45 tonnes (30m height) Level 2 145 tonnes (45m height) Level 3 400 tonnes (67.5m height) Level 4 1200 tonnes (100m height) Level 5 UNLIMITED UNLIMITED Level 6
  15. Here's a little patch I made to fix a hole in the 1.25m station part list: It converts the PTD-6 Star Utility Module into a combined science-utility module: @PART[sspx-utility-125-1] //Station Parts Expansion Redux 1.0.0 -- 1.25m utility pod { %title = PTD-6 'Star' Science-Utility Module %description = This crewed science-utility module has enough space for the station engineer to poke his head in every once in a while and hope things aren't going *too* wrong. Additionally, it contains provisions for a scientist to do a small amount of research. %category = Science MODULE { name = ModuleScienceContainer reviewActionName = #autoLOC_502204 //#autoLOC_502204 = Review Data storeActionName = #autoLOC_502202 //#autoLOC_502202 = Store Experiments collectActionName = #autoLOC_238018 //#autoLOC_238018 = Take Data evaOnlyStorage = True storageRange = 0.5 allowRepeatedSubjects = True } MODULE { name = ModuleScienceLab containerModuleIndex = 0 dataStorage = 50 crewsRequired = 1 canResetConnectedModules = True canResetNearbyModules = True interactionRange = 5 SurfaceBonus = 0.1 ContextBonus = 0.25 homeworldMultiplier = 0.1 RESOURCE_PROCESS { name = ElectricCharge amount = 10 } } MODULE { name = ModuleScienceConverter dataProcessingMultiplier = 0.5 // Multiplier to data processing rate and therefore science rate scientistBonus = 0.25 //Bonus per scientist star - need at least one! So 0.25x - 2.5x researchTime = 7 //Larger = slower. Exponential! scienceMultiplier = 5 //How much science does data turn into? scienceCap = 25 //How much science can we store before having to transmit? powerRequirement = 2.5 //EC/Sec to research ConverterName = #autoLOC_502055 //#autoLOC_502055 = Research StartActionName = #autoLOC_502056 //#autoLOC_502056 = Start Research StopActionName = #autoLOC_502057 //#autoLOC_502057 = Stop Research } MODULE { name = ModuleKerbNetAccess MinimumFoV = 17 MaximumFoV = 63 AnomalyDetection = 0 DISPLAY_MODES { Mode = Terrain,#autoLOC_438839 //#autoLOC_438839 = Terrain Mode = Biome,#autoLOC_438890 //#autoLOC_438890 = Biome } REQUIRED_EFFECTS { Effect = ScienceSkill } } MODULE { name = ModuleExperienceManagement costPerKerbal = 0 } }
  16. Some help for when you click on WRITE NODE DATA If your cfg file is named KWCS_Nuclear_Pack.cfg it outputs into KWCS_Nuclear_Pack_NH.cfg in the same folder.
  17. Specifically, the data for each level of KSP facility, i.e. Level 1 launchpad is 18 tonnes, level 2 is 140 tonnes, etc... I tried a brief look through in the folders, and then tried searching the forum, but can't find it easily.
  18. If Atlas expansions make you hard; there's a guy who worked on Atlas (his first launch was in about '85) who is compiling drawings of the proposed Atlas variants over here at: https://forum.nasaspaceflight.com/index.php?topic=26915.0;all You have to go all the way down to get to the interesting stuff.
  19. “Fat Core” Titan III Proposals Note: The name comes from an Aerospace Technology article on 29 January 1968, which went: Asked what he foresaw as the launch vehicle beyond an uprated Titan III-C (Titan III-M, seven-segment solid rocket motors and a stretched first stage), Col. Taliaferro said: "That is about the extent of the growth potential of the present Titan III. Beyond that, if and when a firm requirement exists for a booster in the 50,000 to 100,000 lb. payload class, I like the fat-core Titan with optimized 156-in.-dia. solid rocket motors." Col. Taliaferro defined "fat core" as a Titan III vehicle with the diameter extended to 156 in. Four of the current Aerojet liquid-fuel engines are clustered and fed from common tankage. Martin-Marietta Corp. has funded an in-house effort of this nature for some time and such a vehicle has been well defined. TITAN IIIG: "The Titan IIIG has a 15 ft. diameter core with a 4 engine first stage, and can use 7-segment 120-inch or 5-segment 156-inch diameter SRM. Low earth orbit payloads up to 100,000 lbs are claimed. Martin has generated a serious sales effort to sell this vehicle in competition to the Saturn derivative intermediate family (e.g., INT-20)." Selected Comments on Agena and Titan III Family Stages, Case 720; 26 March 1968, Titan III Large Diameter Core (LDC) Family (aka Titan IIIL) Notes: This family was proposed from mid-1971 onwards by Martin Marietta. It would have increased the core stage diameter up from the existing 10 feet (3m) and would have used a varying number of UA-1207 SRMs developed for the Titan IIIM program.
  20. Found some data on the Titans for you. ABOVE: standalone Titan IIIL. BELOW: Titan IIIL as Space Shuttle Booster:
  21. Any chance a properly kerbalized Navaho series of engines could be done? They form the "missing link" between the early V-2 style engines and heavily simplified (Redstone) engines and the Atlas/Thor/Delta engine configurations. The Navaho engines were: Navaho Phase I Notes: Two German-built V-2 engines were reconditioned for this phase, which consisted of taking the engines and operating it with water substituted for propellants at flow rates corresponding to 56,000 lbf of thrust for 64 seconds. Rocketdyne XLR-41-NA-1 (Navaho Phase II) Notes: Simplified V-2 engine made from US-built parts and built to US pipe size and fitting standards. Was water-flow tested, and as it was ready to be hot fired; the program was cancelled in favor of hot testing the early US-designed thrust chambers that would eventually lead to the Redstone NAA-75-110. Rocketdyne XLR-43-NA-1 (Navaho Phase III) Propellants: LOX/Alcohol-Water 75% Thrust (sl): 75,000 lbf Chamber Pressure: 300 psia Rated Lifetime: 60 seconds Notes: Developed for Navaho missile booster which would push the missile to Mach 2.85 at 38,000 feet before burnout. Test fired ahead of schedule in May 1950. This engine formed the basis for the Redstone’s NA 75-110 A-1 to 7 engine. Rocketdyne XLR-43-NA-3 (Navaho Phase IV) Propellants: LOX / 92.5% Alcohol, 7.5% Water, Gas Generator Thrust (sl): 120,000 lbf at 230 ISP Dry Weight: 1,230 lb T/W (sl): 97.5 Notes: First US engine to use “spaghetti” (tubular wall) configuration for the thrust chamber, which reduced weight by 50%. A high speed turbopump was developed for this engine which used a gas generator that was powered by the propellants themselves, eliminating the need for a separate hydrogen peroxide tank to run the turbopump. Rocketdyne XLR-71-NA-1 (G-26 Navaho II / Navaho Phase V) Propellants: LOX / 92.5% Alcohol, 7.5% Water, Gas Generator O/F Ratio: 1.375 Thrust (sl): 240,000 lbf @ 229 ISP Thrust (vac): 278,000 lbf @ 265 ISP Chamber Pressure: 438 psia Dry Weight: 2,501 lbs T/W Ratio (sl): 95.96 T/W Ratio (vac): 111.15 Engine Length: 117 inches Engine Diameter: 77 inches Expansion Area Ratio (ε = Ae/At): 4.6 Rated Lifetime: 65~ seconds Notes: “Doubled up” version of XLR-43-NA-3 with two thrust chambers. This engine proved the feasibility of running two separate thrust chambers fed off a single common gas generator, but retaining separate turbopumps. First test fired September 1953. Rocketdyne XLR-83-NA-1 (G-38 Navaho III / Navaho Phase VI) Thrust (sl): 405,000 lbf @ 245 ISP Propellants: LOX / JP-5 Rated Lifetime: 93 to 100 seconds Notes: “Tripled up” version of XLR-43-NA-3 with three thrust chambers and modified with better cooling to allow the burning of hydrocarbon fuel. Each thrust chamber had it’s own turbopump, but all three chambers were fed off a single common gas generator. First fired January 1956. Navaho Engine Development in Retrospective Despite the program being canceled before any operational missiles could be deployed, the Navaho engines helped rocket technology in the United States take a dramatic leap forward. Instead of a simple welded sheet metal thrust chamber (Redstone and earlier), Navaho pioneered the brazed regeneratively cooled tube wall thrust chamber. Additionally, instead of using HTP to drive the engine turbopump, a bipropellant gas generator which used the same propellants as the engine itself was used; eliminating run time limitations imposed by HTP tank sizes. Finally, the Mark 3 turbopump which was used in various forms on the Thor, Atlas, and Saturn I/IB engines was introduced with Navaho. ************************************** Essentially, you don't need to do all of these engines; just Navaho Phase IV / Navaho Phase V / Navaho Phase VI; which are basically "lets add more combustion chambers for MOAR THRUST".
  22. Martin had many many "fat core" Titan projects proposed. Titan IIIG was the first, and would have been a 180" diameter core and would have had option of two UA-1207 or UA-1565 (156" diam 5 segment SRM) boosters, and would have had four engines. No idea if these were stock LR87s or the 'cut down' single chamber LR87s of only 226 klbf used in Titan IIIL-1207-4 (Spread). Titan IIIL-1207-4 (Spread) had a 192" core and would have been the booster for the Grumman H-33 Shuttle Orbiter. Titan IIIL 2/4/6 (Straight) had a 196" core. Titan IIIM (LDC) (LDC = Large Diameter Core). Will edit to add more information.
  23. I've tried out some of Realistic Progression Zero (RP-0) through CKAN and I'm pretty impressed. From what little I've looked at, it does about 90% of what I was aiming for in my own private mod ideas. I haven't looked through it a lot, but so far I've only got a few quibbles: There's no Jeb/Bob/Etc Kerman at the start. :-( But I do like how you have simple scientific instruments such as a barometer, thermometer, etc available at game start; unlike stock KSP which locks those away. EDIT: Sorry for repeating myself. I'm still kind of getting back into the swing of things here. I'll have some more detailed critique once I've had a chance to play RP-0 a bit more.
  24. I've tried out some of Realistic Progression Zero (RP-0) through CKAN and I'm pretty impressed. From what little I've looked at, it does about 90% of what I was aiming for in my own private mod ideas. I haven't looked through it a lot, but so far I've only got a few quibbles: There's no Jeb/Bob/Etc Kerman at the start. :-( But I do like how you have simple scientific instruments such as a barometer, thermometer, etc available at game start; unlike stock KSP which locks those away.
×
×
  • Create New...