-
Posts
754 -
Joined
-
Last visited
Content Type
Profiles
Forums
Developer Articles
KSP2 Release Notes
Everything posted by FlowerChild
-
Lol...best...analogy...ever
-
I was having a problem with textures being all blurry as well, but restarting the game seemed to fix it.
-
Contract Modding Information for Mod Authors
FlowerChild replied to MrHappyFace's topic in KSP1 Mod Development
Ah, cool. I've been editing those values forever both in BTSM and ATC, but never realized before today that RecoveryValue also affects the contract payouts -
Contract Modding Information for Mod Authors
FlowerChild replied to MrHappyFace's topic in KSP1 Mod Development
A small discovery based on the above: The mystery value that is governing all this is RecoveryValue in CelestialBodyScienceParams, which in turn can be accessed through any CelestialBody. As DMagic pointed out, it is then modified both by contract prestige and the contract's agent with different agents having different multipliers to both funds and prestige. You can directly modify contract payments per body through RecoveryValue, just keep in mind you will also be modifying the science payout for recovering a vessel after returning from that body at the same time. Bit messy, but at least there's a way to modify it. -
I just released a version of Better Than Manned which uses ATC extensively to modify the tech tree and planet science values. As such, the related config file (BTSMTechTreeMods.cfg) may act as a decent reference for anyone that's wanting to use ATC to modify the tree. BTSM can be found here if you want to check it out: BTSM Thread Link
-
[1.12.x] Chatterer v.0.9.99 - Keep talking ! [20 Mar 2020]
FlowerChild replied to Athlonic's topic in KSP1 Mod Releases
Just wanted to say thanks for this awesome mod. Been playing with it as of late and the amount of ambiance it adds to the game is incredible.- 751 replies
-
- communication
- chatterer
-
(and 1 more)
Tagged with:
-
Yeah, I definitely second this. It's pretty standard practice for mod threads to list version number and release date in the thread title, plus I tend to disable any mods that access the net immediately, the version checker included, so I don't get the version update notifications anyways. I was actually a little surprised when the version checker was included in ATC given one of the advantages it offers over TreeLoader is not accessing the web
-
Just checked in some changes adding functionality for easily removing stock nodes with ModuleManager commands like: !TECH_NODE[node6_largeControl] { } or, if you're making your own tree from scratch, by simply omitting a node from the .cfg files entirely. It was possible to remove nodes before, but the .cfg file syntax was getting rather messy, like this snippet from my own config files: @TECH_NODE[node6_largeControl] { // delete this node @hideIfNoparts = True // move it out of the way to the right of the visiable area in case there are any lingering purchased parts within @posX = 500 !PARENT_NODE[*],* { } } // delete all references to large control @TECH_NODE[*],* { !PARENT_NODE[node6_largeControl] { } } Which is now all replaced by the simple !TECH_NODE thing above. All references to this node whether it be within part configs or other tech nodes (as in, specifying the deleted node as a parent) are automatically removed with that one statement for convenience, and because it fits the way other stock .cfg files work. Put another way: if a node is not defined within the config file for a tree, it will not appear in game. The !TECH_NODE is only required if you're removing it from an existing tree, like the stock one.
-
Sure, BUT: -The project doesn't contain very much code right now at all. Yes, it would be nice if the dead code were cleaned up and/or isolated, but there's not enough code in total to make it a big deal. -Restrucuring a code base that you don't have any code in is at best...rather odd. Again, doesn't serve any practical purpose, and you're currently an unknown commodity. The people that are already working on it know where everything is at present. If you're going to contribute functioning code at the same time, I'm all for it man. However, your original statement on it seemed to suggest you're just restructuring things in preparation for *attempting* to get something functional going, and at that point, why would you even bother SirJodelstein with a pull request? Inevitably, somebody is going to have to look at your request and what it contains in order to answer the question of whether it should be committed to the main branch, and that takes time.
-
Wouldn't it be best to see if you can get something working before trying to impose structure on a code base you don't have any code in? Don't get me wrong, I'm all for getting add-node functionality in, and if it does go in, I'd certainly support isolating the code in the process. However, I don't think submitting changes that only affect internal structure serves any purpose, other than creating additional overhead for SirJodelstein in having to review the changes, and for anyone else who actively follows the code base to keep up to date on what's happening...like me
-
[WIP] ATC - Alternative Tree Configurator (released)
FlowerChild replied to SirJodelstein's topic in KSP1 Mod Development
Yup, that was the idea. Just didn't have time to get to it yesterday before checking in my changes EDIT: And done... Syntax is as follows: PARENT_NODE { name = node7_advancedMotors parentSide = RIGHT childSide = LEFT } The auto-assign is only overriden if BOTH values are specified. Just going to run a couple of more tests to verify everything is cool before checking it in. EDIT: BTW, OnGUI() and thus the keyboard shortcuts for debug output and tree reload seem to currently be dead code. Not sure if that was intended to disable them, but wanted to mention that in case it wasn't. EDIT: All checked in. Unfortunately your auto-assign code still seems to be messing up on the stock tree though: That seems to be occurring because survivability is the one exception node in the tree where it is closer horizontally than vertically due to the angle on which nodes at that level are presented. I get around this in BTSM by removing the angle, as all those nodes are of equal purchase cost in the mod. This is rather unfortunate given this is one of the first things people will see upon installing the mod as is I was tempted to add a manual override to it in StockTree.cfg, but that's a rather less than optimal solution given people editing the tree would have to know that assignment is there while editing, or would wind up getting some rather odd behavior out of the node. -
[WIP] ATC - Alternative Tree Configurator (released)
FlowerChild replied to SirJodelstein's topic in KSP1 Mod Development
My pleasure! BTW: Sorry that there are a couple of places the indentation seems messed up in ATCTreeDumper.cs. I only noticed that after committing my changes and didn't want to confuse things in you reviewing my changes by doing a second round. Apparently there was some dark recess of my editor that wasn't actually treating tabs as spaces and I've hopefully got that sorted now. Well, if I'm understanding you correctly, that would mean processing the tree from the start inwards basically in the unlock order to prevent such mishaps. Yeah, that could work, although I still sincerely doubt it will be able to cover all circumstances and that a manual override will still be a good thing. One example from the BTSM tree: Now, pretty much the entire tree is displaying the way I'd like after the changes I submitted, but you can still see with the highlighted node in the bottom right (Colonization) that the auto-assign rules are mangling the bottommost connection in a way that would require me to rearrange the tree to get them to "snap" properly. And yes, I realize that the node description panel isn't reacting well to having 4 parent dependencies there either, but that's a separate issue I need to deal with I think this will inevitably be the problem with any kind of auto-assign. It may cover the majority of cases, but they'll always be a few fringe ones where things just aren't quite right and you'll want to be able to manually override it. I'd like to get to work on those manual overrides right away actually, but I suspect if you're going to be working on the auto-assignment code, this might be the wrong time to do it given we'd be directly working on the same bit of code. EDIT: NM, just noticed you've already checked in your changes. Will get to work on that right away then -
[WIP] ATC - Alternative Tree Configurator (released)
FlowerChild replied to SirJodelstein's topic in KSP1 Mod Development
Just committed a whack of changes to github. Kept track of them as I went, so here's the change log: -Added ATCTreeDumper to generate config file based on stock tree. -Added processing of \n newline characters in node descriptions (needed this for BTSM) -Removed code that clears all part assignments to nodes within LoadTree() -Added ability to specify if a tech node is hidden in the R&D gui if it contains no parts, just like the hidden config nodes squad included. This effectively adds the ability to remove nodes from the tech tree if you so desire (which I definitely do in BTSM ). -Switched reading of anyParentUnlocks .cfg entry to use bool.Parse for consistency and to eliminate case sensitivity. -Split the "REQUIRES" config node into separate "PARENT_NODE" nodes for each parent. This allows for manipulating individual parent node connections with standard ModuleManager syntax (e.g. "@PARENT_NODE[node1_basicRocketry]"), and leaves room for future expansion in assigning specific attributes to node connections (like specifying the side they connect to ). -Rearranged settings.cfg to support the new tree-node format, and to make it easier to refer to through ModuleManager commands. -Fixed bug in auto connection assignment code that caused stock tree to display incorrectly. Please see the related (long) comment in the code, as I don't think that the autoassign code is practical overall due to related issues. I've converted *most* (I still need to migrate my planet science values over) of BTSM's tech-tree changes over to the new format to test out various things, so if anyone is interested what using this thing looks like in practice: // config file to modify the tech tree using ATC @TECH_TREE[stock] { @TECH_NODE[*],* { @anyParentUnlocks = False } @TECH_NODE[node1_*],* { @scienceCost = 4 // 5 stock } @TECH_NODE[node2_*],* { @scienceCost = 16 // 21/16/15 stock } @TECH_NODE[node3_*],* { @scienceCost = 45 // 45 stock } @TECH_NODE[node4_*],* { @scienceCost = 90 // 90 stock } @TECH_NODE[node5_*],* { @scienceCost = 180 // 160 stock } @TECH_NODE[node6_*],* { @scienceCost = 360 // 300 stock } @TECH_NODE[node7_*],* { @scienceCost = 1800 // 550 stock } @TECH_NODE[node8_*],* { @scienceCost = 16000 // 1000 stock } @TECH_NODE[node0_start] { @description = Welcome to Better Than Starting Manned!\n\nTIP: If you're having difficulty initially, balancing the weight of your rocket to keep it pointed upwards is key! } @TECH_NODE[node1_basicRocketry] { @description = How hard can rocket science be anyways?\n\nTIP: Staging boosters to fire at different times will help you gain altitude! } @TECH_NODE[node2_generalRocketry] { @description = More engines, more fuel, more ambitious ideas.\n\nIMPORTANT: Includes improved launch capacity, allowing vehicles up to 25 tons. @posX = -1693.861 // align all the tech 2 nodes horizontally } @TECH_NODE[node2_stability] { @description = Reaching for the stars starts with keeping our spacecraft pointed in the right direction.\n\nTIP: Using fins to steer your rocket will allow you to reach new heights! } @TECH_NODE[node2_survivability] { @posX = -1693.861 // align all the tech 2 nodes horizontally } @TECH_NODE[node3_generalConstruction] { @description = New equipment to help keep things stable, especially when spacecraft defy the currents bounds of sanity.\n\nIMPORTANT: Includes 75 ton launch capacity. } @TECH_NODE[node4_heavyRocketry] { @title = Fuel Systems @description = Advancements towards a better understanding of how fuel flows through a rocket. @icon = FUELSYSTEMS } @TECH_NODE[node4_advConstruction] { @description = New advances in construction make it possible to build larger than ever before.\n\nIMPORTANT: Includes 250 ton launch capacity. } @TECH_NODE[node4_fuelSystems] { @title = Heavy Rocketry @description = The next logical step for rocketry technology is to just go bigger. We've also made refinements to our existing technology along the way. @icon = HEAVYROCKETRY } @TECH_NODE[node4_aerodynamicSystems] { @description = New breakthroughs from C7 aerospace allow new types of craft to be built.\n\nIMPORTANT: Includes integrated heat shield for the Command Pod Mk1. } @TECH_NODE[node4_spaceExploration] { @description = To boldly go where no green man has gone before.\n\nTIP: Having not yet developed space suits, going EVA may be a rather bad idea. } @TECH_NODE[node5_specializedConstruction] { @title = Thrust Vectoring @description = We noticed awhile ago that aiming rockets in different directions causes them to go that way, so we decided to do something with that. } @TECH_NODE[node5_advExploration] { @description = Everything necessary to send Kerbals to the Mun without worrying about getting them back again.\n\nTIP: Research Advanced Landing for space suits. } @TECH_NODE[node5_advLanding] { @description = If we're heading to the Mun, these should help with the survivng it bits.\n\nIMPORTANT: Includes space suits, but we still don't have RCS thrusters for them. PARENT_NODE { name = node4_spaceExploration } } @TECH_NODE[node5_actuators] { @title = Modular Design @description = By adopting modular construction techniques we've greatly increased the reliability of our structures.\n\nIMPORTANT: Includes 600 ton launch capacity. } @TECH_NODE[node6_fieldScience] { @description = Freedom to roam as far as curiosity will take you, or as long as the batteries last. } @TECH_NODE[node6_nuclearPropulsion] { @title = Very Heavy Rocketry @description = While ever-larger rockets may not be the answer every time, for all other times, we've developed these. @icon = VERYHEAVYROCKETRY } @TECH_NODE[node6_ionPropulsion] { @title = Miniaturization @description = Ever more refined engineering techniques have allowed us to create parts that will blow your mind without even having to buy them dinner. @icon = EXPERIMENTALROCKETRY } @TECH_NODE[node6_advMetalWorks] { @title = Refined Rocketry @description = The epitome of traditional rocket design. Are you proud? You should be, and we don't appreciate our achievements being diminished like that.\n\nIMPORTANT: Includes the ability to tweak fuel pre-flight. } @TECH_NODE[node6_composites] { @description = Lightweight and strong! Don't worry...we're sure the glue will dry off in no time.\n\nIMPORTANT: Includes 1,000 ton launch capacity. } @TECH_NODE[node7_veryHeavyRocketry] { @title = Experimental Rocketry @description = Turns out, it's not science fiction. @icon = IONPROPULSION } @TECH_NODE[node7_metaMaterials] { @description = An advancement in spacecraft construction so revolutionary, you won't even mind that its naming was wildly inaccurate.\n\nIMPORTANT: Includes 1,500 ton launch capacity. } @TECH_NODE[node7_heavyAerodynamics] { @title = Multidisciplinary Studies @description = Combining the accumulated knowledge of multiple fields, we have made great strides forward both in what we can achieve, and how we can learn more about the cosmos. } @TECH_NODE[node7_advUnmanned] { @title = Not Potatoes @description = Ok, we admit it. We were using potatoes in our batteries. Let's just move on. @icon = EXPERIMENTALELECTRICS PARENT_NODE { name = node6_ionPropulsion } } @TECH_NODE[node7_specializedElectrics] { PARENT_NODE { name = node6_ionPropulsion } } @TECH_NODE[node7_advScienceTech] { @description = Scientific advancements allow new advanced technologies for advancing science.\n\nIMPORTANT: Includes integrated RCS thrusters for space suits. You're welcome. } @TECH_NODE[node7_advancedMotors] { @title = Advanced Field Science @description = In case you were still curious: additional roaming goodness beyond what anyone thought healthy, reasonable, or sane.\n\nTIP: The Klaw allows for Asteroid Redirect Missions for added science! } @TECH_NODE[node8_experimentalRocketry] { @title = Uber Rockets @description = Want to launch insane payloads with little to no effort or rocket design skill? Then Uber Rockets are the rockets for you!\n\nIMPORTANT: Includes 2,000 ton launch capacity. @icon = NUCLEARPROPULSION } @TECH_NODE[node8_nanolathing] { @description = Matter to energy conversion and back again, stirred, frothed, and squirted into a tasty beverage? No problem. @icon = PRECISIONENGINEERING !PARENT_NODE[node6_composites] { } PARENT_NODE { name = node7_metaMaterials } PARENT_NODE { name = node7_heavyAerodynamics } } @TECH_NODE[node8_aerospaceTech] { PARENT_NODE { name = node7_heavyAerodynamics } PARENT_NODE { name = node7_advUnmanned } } @TECH_NODE[node8_experimentalElectrics] { @title = Colonization @description = It has been said that Kerbin is the cradle of Kerbality, and there is only so long you can live in the cradle before you start developing a rash. @icon = START PARENT_NODE { name = node7_advUnmanned } PARENT_NODE { name = node7_advScienceTech } PARENT_NODE { name = node7_advancedMotors } } @TECH_NODE[node8_experimentalMotors] { @title = Science Fiction @icon = EXPERIMENTALSCIENCE } } -
[WIP] ATC - Alternative Tree Configurator (released)
FlowerChild replied to SirJodelstein's topic in KSP1 Mod Development
No, the intention is to use the auto-node-connection code there that SirJodelstein has already written up, but I'd like there to be a way to also manually specify which sides you want them to attach to so you can override that behavior if you like. -
[WIP] ATC - Alternative Tree Configurator (released)
FlowerChild replied to SirJodelstein's topic in KSP1 Mod Development
Here's the output on the stock tree dump I was talking about: // Config file representing the stock tech tree // WARNING: This file should not be edited directly, but rather should either be altered using ModuleManager commands within your own .cfg files OR // a new tree .cfg should be created which settings.cfg can then be set to point to. TECH_TREE { name = stock TECH_NODE { name = node0_start title = Start description = The technology we started out with. scienceCost = 0 icon = START anyParentUnlocks = False hideIfNoparts = False posX = -2022.448 posY = 896.566 } TECH_NODE { name = node2_generalRocketry title = General Rocketry description = More engines, more fuel, more ambitious ideas. scienceCost = 20 icon = GENERALROCKETRY anyParentUnlocks = False hideIfNoparts = False posX = -1652.237 posY = 1074.484 PARENT_NODE { name = node1_basicRocketry } } TECH_NODE { name = node2_survivability title = Survivability description = The art and science of landing and walking away from it. scienceCost = 15 icon = SURVIVABILITY anyParentUnlocks = False hideIfNoparts = False posX = -1732.888 posY = 699.7489 PARENT_NODE { name = node1_basicRocketry } } TECH_NODE { name = node1_basicRocketry title = Basic Rocketry description = How hard can Rocket Science be anyway? scienceCost = 5 icon = BASICROCKETRY anyParentUnlocks = False hideIfNoparts = False posX = -1901.18 posY = 896.566 PARENT_NODE { name = node0_start } } TECH_NODE { name = node2_stability title = Stability description = Reaching for the stars starts with keeping our spacecraft pointed generally in the right direction. scienceCost = 18 icon = STABILITY anyParentUnlocks = False hideIfNoparts = False posX = -1693.861 posY = 896.566 PARENT_NODE { name = node1_basicRocketry } } TECH_NODE { name = node3_advRocketry title = Advanced Rocketry description = A new step ahead in rocket technology. scienceCost = 45 icon = ADVROCKETRY anyParentUnlocks = False hideIfNoparts = False posX = -1469.98 posY = 1184.784 PARENT_NODE { name = node2_generalRocketry } } TECH_NODE { name = node3_scienceTech title = Science Tech description = We are going to ask all the big questions of the Universe... eventually. For now, we're starting with these. scienceCost = 45 icon = SCIENCETECH anyParentUnlocks = False hideIfNoparts = False posX = -1469.98 posY = 580.6995 PARENT_NODE { name = node2_survivability } } TECH_NODE { name = node3_generalConstruction title = General Construction description = New equipment to help out in keeping things stable, especially useful when the size of the spacecraft defies the current bounds of sanity. scienceCost = 45 icon = GENERALCONSTRUCTION anyParentUnlocks = True hideIfNoparts = False posX = -1469.98 posY = 1037.423 PARENT_NODE { name = node2_generalRocketry } PARENT_NODE { name = node2_stability } } TECH_NODE { name = node3_flightControl title = Flight Control description = Tumbling out of control may be fun, but our engineers insist there's more to rocket science than that. scienceCost = 45 icon = FLIGHTCONTROL anyParentUnlocks = True hideIfNoparts = False posX = -1469.98 posY = 796.7432 PARENT_NODE { name = node2_stability } PARENT_NODE { name = node2_survivability } } TECH_NODE { name = node4_advConstruction title = Advanced Construction description = New advances in construction make it possible to build larger than ever before. scienceCost = 90 icon = ADVCONSTRUCTION anyParentUnlocks = False hideIfNoparts = False posX = -1247 posY = 1037.251 PARENT_NODE { name = node3_generalConstruction } } TECH_NODE { name = node4_advFlightControl title = Advanced Flight Control description = The latest advancements in keeping the correct end of the ship pointing towards where you want it to go. scienceCost = 90 icon = ADVFLIGHTCONTROL anyParentUnlocks = False hideIfNoparts = False posX = -1247 posY = 796.7432 PARENT_NODE { name = node3_flightControl } } TECH_NODE { name = node4_electrics title = Electrics description = We did know about electricity before inventing space flight. The big breakthrough here was combining the two. scienceCost = 90 icon = ELECTRICS anyParentUnlocks = True hideIfNoparts = False posX = -1247 posY = 665.3614 PARENT_NODE { name = node3_flightControl } PARENT_NODE { name = node3_scienceTech } } TECH_NODE { name = node4_spaceExploration title = Space Exploration description = To boldly go where no green man has gone before. scienceCost = 90 icon = EVATECH anyParentUnlocks = False hideIfNoparts = False posX = -1247 posY = 580.6476 PARENT_NODE { name = node3_scienceTech } } TECH_NODE { name = node4_landing title = Landing description = Our Engineers are nothing if not optimistic. scienceCost = 90 icon = ADVLANDING anyParentUnlocks = False hideIfNoparts = False posX = -1247 posY = 493 PARENT_NODE { name = node3_scienceTech } } TECH_NODE { name = node4_heavyRocketry title = Heavy Rocketry description = The next logical step for rocketry technology is to just go bigger. scienceCost = 90 icon = HEAVYROCKETRY anyParentUnlocks = False hideIfNoparts = False posX = -1247 posY = 1249 PARENT_NODE { name = node3_advRocketry } } TECH_NODE { name = node4_fuelSystems title = Fuel Systems description = Advancements towards a better understanding of how fuel flows through a rocket. scienceCost = 90 icon = FUELSYSTEMS anyParentUnlocks = True hideIfNoparts = False posX = -1247 posY = 1121 PARENT_NODE { name = node3_advRocketry } PARENT_NODE { name = node3_generalConstruction } } TECH_NODE { name = node5_advExploration title = Advanced Exploration description = They are Self-Deploying Astronaut Mobility Enhancement Devices, I don't know what you mean by "ladders". scienceCost = 160 icon = ADVEXPLORATION anyParentUnlocks = True hideIfNoparts = False posX = -1043 posY = 580.8679 PARENT_NODE { name = node4_electrics } PARENT_NODE { name = node4_spaceExploration } } TECH_NODE { name = node5_precisionEngineering title = Precision Engineering description = Precise engineering techniques allow for construction of ever smaller parts. scienceCost = 160 icon = PRECISIONENGINEERING anyParentUnlocks = True hideIfNoparts = False posX = -1043 posY = 753.5361 PARENT_NODE { name = node4_advFlightControl } PARENT_NODE { name = node4_electrics } } TECH_NODE { name = node5_advElectrics title = Advanced Electrics description = We're fairly certain no one will ever need more than 64kw of power for anything. scienceCost = 160 icon = ADVELECTRICS anyParentUnlocks = False hideIfNoparts = False posX = -1043 posY = 665.3614 PARENT_NODE { name = node4_electrics } } TECH_NODE { name = node5_specializedControl title = Specialized Control description = A new state-of-the-art in control technology. scienceCost = 160 icon = SPECIALIZEDCONTROL anyParentUnlocks = True hideIfNoparts = False posX = -1045.195 posY = 844.1075 PARENT_NODE { name = node4_aerodynamicSystems } PARENT_NODE { name = node4_advFlightControl } } TECH_NODE { name = node5_heavierRocketry title = Heavier Rocketry description = There may be an upper limit to how large a rocket can be built, but we're not there yet. scienceCost = 160 icon = HEAVIERROCKETRY anyParentUnlocks = True hideIfNoparts = False posX = -1043 posY = 1249 PARENT_NODE { name = node4_heavyRocketry } PARENT_NODE { name = node4_fuelSystems } } TECH_NODE { name = node5_specializedConstruction title = Specialized Construction description = Specialized construction techniques provide new ways of attaching things together, and detaching things on purpose. scienceCost = 160 icon = SPECIALIZEDCONSTRUCTION anyParentUnlocks = True hideIfNoparts = False posX = -1043 posY = 1121 PARENT_NODE { name = node4_fuelSystems } PARENT_NODE { name = node4_advConstruction } } TECH_NODE { name = node4_aerodynamicSystems title = Aerodynamics description = New breakthroughs from C7 Aerospace allow for new types of craft to be built. We're looking into hiring some of their engineers as well. scienceCost = 90 icon = AERODYNAMICSYSTEMS anyParentUnlocks = True hideIfNoparts = False posX = -1247 posY = 897.689 PARENT_NODE { name = node3_generalConstruction } PARENT_NODE { name = node3_flightControl } } TECH_NODE { name = node5_advLanding title = Advanced Landing description = Further advances in landing devices, allowing for more controlled descents and a much higher number of parts still attached to the ship after touchdown. scienceCost = 160 icon = LANDING anyParentUnlocks = False hideIfNoparts = False posX = -1043 posY = 493.0854 PARENT_NODE { name = node4_landing } } TECH_NODE { name = node7_metaMaterials title = Meta-Materials description = An advancemement in spacecraft construction so revolutionary, you won't even mind that its naming was wildly inaccurate. scienceCost = 550 icon = METAMATERIALS anyParentUnlocks = True hideIfNoparts = False posX = -635 posY = 1121 PARENT_NODE { name = node6_advMetalWorks } PARENT_NODE { name = node6_composites } } TECH_NODE { name = node7_heavyAerodynamics title = Heavy Aerodynamics description = Advances in construction technology enabled new breakthroughs in aerospace materials. scienceCost = 550 icon = HEAVYAERODYNAMICS anyParentUnlocks = True hideIfNoparts = False posX = -635 posY = 969.6069 PARENT_NODE { name = node6_composites } PARENT_NODE { name = node6_advAerodynamics } } TECH_NODE { name = node6_composites title = Composites description = Lightweight and strong! and don't worry, we're sure the glue will dry off in no time. scienceCost = 300 icon = COMPOSITES anyParentUnlocks = False hideIfNoparts = False posX = -832.9991 posY = 1037.229 PARENT_NODE { name = node5_actuators } } TECH_NODE { name = node6_fieldScience title = Field Science description = Freedom to roam as far as curiosity will take you, or as long as batteries last. scienceCost = 300 icon = FIELDSCIENCE anyParentUnlocks = True hideIfNoparts = False posX = -832.9991 posY = 532.4777 PARENT_NODE { name = node5_advExploration } PARENT_NODE { name = node5_advLanding } } TECH_NODE { name = node6_nuclearPropulsion title = Nuclear Propulsion description = Nuclear engines don't burn fuel, they totally annihilate it. We just hope it doesn't begin any conflicts. scienceCost = 300 icon = NUCLEARPROPULSION anyParentUnlocks = False hideIfNoparts = False posX = -832.9991 posY = 1184.784 PARENT_NODE { name = node5_heavierRocketry } PARENT_NODE { name = node5_specializedConstruction } } TECH_NODE { name = node6_ionPropulsion title = Ion Propulsion description = Turns out, it's not science fiction. scienceCost = 300 icon = IONPROPULSION anyParentUnlocks = False hideIfNoparts = False posX = -832.9991 posY = 722.2196 PARENT_NODE { name = node5_precisionEngineering } PARENT_NODE { name = node5_advElectrics } } TECH_NODE { name = node7_veryHeavyRocketry title = Very Heavy Rocketry description = While ever-larger rockets may not be the answer every time, for all other times, we've developed these. scienceCost = 550 icon = VERYHEAVYROCKETRY anyParentUnlocks = True hideIfNoparts = False posX = -635 posY = 1249 PARENT_NODE { name = node5_heavierRocketry } PARENT_NODE { name = node6_nuclearPropulsion } } TECH_NODE { name = node5_supersonicFlight title = Supersonic Flight description = A new line of aircraft parts that allow for unprecedented maneuverability and speed. scienceCost = 160 icon = SUPERSONICFLIGHT anyParentUnlocks = True hideIfNoparts = False posX = -1043 posY = 932.9431 PARENT_NODE { name = node4_advConstruction } PARENT_NODE { name = node4_aerodynamicSystems } } TECH_NODE { name = node6_largeElectrics title = Large Electrics description = Maximize your energy production and storage potential by maximizing the size of the electrical components on your vessels. scienceCost = 300 icon = LARGEELECTRICS anyParentUnlocks = False hideIfNoparts = False posX = -832.9991 posY = 665.3614 PARENT_NODE { name = node5_advElectrics } } TECH_NODE { name = node6_electronics title = Electronics description = Hopefully these won't become obsolete in the next couple of months. scienceCost = 300 icon = ELECTRONICS anyParentUnlocks = False hideIfNoparts = False posX = -832.9991 posY = 607.9579 PARENT_NODE { name = node5_advElectrics } } TECH_NODE { name = node6_highAltitudeFlight title = High Altitude Flight description = New breakthroughs in engine and intake development to enable flying through the upper reaches of the atmosphere. scienceCost = 300 icon = HIGHALTITUDEFLIGHT anyParentUnlocks = True hideIfNoparts = False posX = -832.9991 posY = 897.7428 PARENT_NODE { name = node5_supersonicFlight } PARENT_NODE { name = node5_specializedControl } } TECH_NODE { name = node6_unmannedTech title = Unmanned Tech description = Warning: May contain traces of sentience. scienceCost = 300 icon = UNMANNEDTECH anyParentUnlocks = True hideIfNoparts = False posX = -832.9991 posY = 788.2225 PARENT_NODE { name = node5_precisionEngineering } } TECH_NODE { name = node6_largeControl title = Large Control description = A newer state-of-the-art in control technology. scienceCost = 300 icon = LARGECONTROL anyParentUnlocks = False hideIfNoparts = False posX = -832.9991 posY = 844.1075 PARENT_NODE { name = node5_specializedControl } } TECH_NODE { name = node6_advMetalWorks title = Advanced MetalWorks description = These new construction techniques allow for craft designs that were considered insane not too long ago... and still are. But they're now possible! scienceCost = 300 icon = ADVMETALWORKS anyParentUnlocks = True hideIfNoparts = False posX = -832.9991 posY = 1121 PARENT_NODE { name = node5_actuators } PARENT_NODE { name = node5_specializedConstruction } } TECH_NODE { name = node7_advancedMotors title = Advanced Motors description = Wheel technology is just rolling along now. You could even say our engineers are on a roll with it. scienceCost = 550 icon = ADVANCEDMOTORS anyParentUnlocks = False hideIfNoparts = False posX = -635 posY = 500 PARENT_NODE { name = node6_fieldScience } } TECH_NODE { name = node7_hypersonicFlight title = Hypersonic Flight description = Push your aircraft to the upper limits of airspeed and sanity. scienceCost = 550 icon = HYPERSONICFLIGHT anyParentUnlocks = True hideIfNoparts = False posX = -635 posY = 897.7428 PARENT_NODE { name = node6_highAltitudeFlight } PARENT_NODE { name = node6_advAerodynamics } } TECH_NODE { name = node5_actuators title = Actuators description = Perfecting the art of making things mobile, without the explicit use of explosives. Our engineers assure us, this is actually a good thing. scienceCost = 160 icon = GENERIC anyParentUnlocks = True hideIfNoparts = False posX = -1043 posY = 1037.229 PARENT_NODE { name = node4_advConstruction } } TECH_NODE { name = node7_specializedElectrics title = Specialized Electrics description = Experience the warm glow of the latest in electrical technology. Figuratively, of course, and maybe also quite literally as well. Actually, try to avoid direct exposure. scienceCost = 550 icon = SPECIALIZEDELECTRICS anyParentUnlocks = True hideIfNoparts = False posX = -635 posY = 665.3614 PARENT_NODE { name = node6_largeElectrics } PARENT_NODE { name = node6_electronics } } TECH_NODE { name = node7_advUnmanned title = Advanced Unmanned Tech description = Improvements in remote control technology for a new generation of probe designs. scienceCost = 550 icon = ADVUNMANNED anyParentUnlocks = True hideIfNoparts = False posX = -635 posY = 788.4528 PARENT_NODE { name = node6_largeControl } PARENT_NODE { name = node6_unmannedTech } } TECH_NODE { name = node7_advScienceTech title = Advanced Science Tech description = Scientific advancements allow new advanced technologies for advancing Science. scienceCost = 550 icon = ADVSCIENCETECH anyParentUnlocks = True hideIfNoparts = False posX = -635 posY = 574.0369 PARENT_NODE { name = node6_electronics } PARENT_NODE { name = node6_fieldScience } } TECH_NODE { name = node6_advAerodynamics title = Advanced Aerodynamics description = Advances in fluid dynamics research technology have allowed development of a new set of streamlined aircraft components, And also these parts here. scienceCost = 300 icon = ADVAERODYNAMICS anyParentUnlocks = True hideIfNoparts = False posX = -832.9991 posY = 969.6069 PARENT_NODE { name = node5_actuators } PARENT_NODE { name = node5_supersonicFlight } } TECH_NODE { name = node8_experimentalRocketry title = Experimental Rocketry description = Don't take "experimental" lightly. scienceCost = 1000 icon = EXPERIMENTALROCKETRY anyParentUnlocks = False hideIfNoparts = True posX = -475.6188 posY = 1249 PARENT_NODE { name = node7_veryHeavyRocketry } PARENT_NODE { name = node7_metaMaterials } } TECH_NODE { name = node8_aerospaceTech title = Aerospace Tech description = The absolute cutting-edge in aerospace technology. Quite literally, some of those edges are very sharp. Handle with care. scienceCost = 1000 icon = AEROSPACETECH anyParentUnlocks = False hideIfNoparts = True posX = -475.6188 posY = 897.7428 PARENT_NODE { name = node7_hypersonicFlight } } TECH_NODE { name = node8_experimentalElectrics title = Experimental Electrics description = The very latest in electrical systems technology. Our engineers are buzzing with excitement over it. They also seem to glow in the dark now. Fascinating! scienceCost = 1000 icon = EXPERIMENTALELECTRICS anyParentUnlocks = False hideIfNoparts = True posX = -475.6188 posY = 665.3614 PARENT_NODE { name = node7_specializedElectrics } } TECH_NODE { name = node8_experimentalAerodynamics title = Experimental Aerodynamics description = Winged flight technology is soaring to unprecendented heights. It could even be said that it's properly taking off now. scienceCost = 1000 icon = EXPERIMENTALAERODYNAMICS anyParentUnlocks = False hideIfNoparts = True posX = -475.6188 posY = 969.6069 PARENT_NODE { name = node7_heavyAerodynamics } } TECH_NODE { name = node8_experimentalScience title = Experimental Science description = Explore novel fields of science that we didn't even know were there. scienceCost = 1000 icon = EXPERIMENTALSCIENCE anyParentUnlocks = False hideIfNoparts = True posX = -475.6188 posY = 574.0369 PARENT_NODE { name = node7_advScienceTech } } TECH_NODE { name = node8_experimentalMotors title = Experimental Motors description = The latest breakthroughs that are driving motor technology forwards, and in reverse, and steering too. scienceCost = 1000 icon = EXPERIMENTALMOTORS anyParentUnlocks = False hideIfNoparts = True posX = -475.6188 posY = 500 PARENT_NODE { name = node7_advancedMotors } } TECH_NODE { name = node8_robotics title = Robotics description = The rumours of robot-led world domination are greatly exaggerated. scienceCost = 1000 icon = ROBOTICS anyParentUnlocks = False hideIfNoparts = True posX = -475.6188 posY = 744.2099 PARENT_NODE { name = node7_advUnmanned } } TECH_NODE { name = node8_automation title = Automation description = We can't think of anything that could go wrong with letting an experimental AI handle every aspect of a mission. scienceCost = 1000 icon = AUTOMATION anyParentUnlocks = False hideIfNoparts = True posX = -475.6188 posY = 827.1248 PARENT_NODE { name = node7_advUnmanned } } TECH_NODE { name = node8_nanolathing title = Nanolathing description = The very latest in construction technology. scienceCost = 1000 icon = NANOLATHING anyParentUnlocks = False hideIfNoparts = True posX = -475.6188 posY = 1037.222 PARENT_NODE { name = node6_composites } } BODY_SCIENCE_PARAMS { name = Sun LandedDataValue = 1 SplashedDataValue = 1 FlyingLowDataValue = 1 FlyingHighDataValue = 1 InSpaceLowDataValue = 11 InSpaceHighDataValue = 2 flyingAltitudeThreshold = 18000 spaceAltitudeThreshold = 1E+09 RecoveryValue = 4 } BODY_SCIENCE_PARAMS { name = Kerbin LandedDataValue = 0.3 SplashedDataValue = 0.4 FlyingLowDataValue = 0.7 FlyingHighDataValue = 0.9 InSpaceLowDataValue = 1 InSpaceHighDataValue = 1.5 flyingAltitudeThreshold = 18000 spaceAltitudeThreshold = 250000 RecoveryValue = 1 } BODY_SCIENCE_PARAMS { name = Mun LandedDataValue = 4 SplashedDataValue = 1 FlyingLowDataValue = 1 FlyingHighDataValue = 1 InSpaceLowDataValue = 3 InSpaceHighDataValue = 2 flyingAltitudeThreshold = 18000 spaceAltitudeThreshold = 60000 RecoveryValue = 2 } BODY_SCIENCE_PARAMS { name = Minmus LandedDataValue = 5 SplashedDataValue = 1 FlyingLowDataValue = 1 FlyingHighDataValue = 1 InSpaceLowDataValue = 4 InSpaceHighDataValue = 2.5 flyingAltitudeThreshold = 18000 spaceAltitudeThreshold = 30000 RecoveryValue = 2.5 } BODY_SCIENCE_PARAMS { name = Moho LandedDataValue = 10 SplashedDataValue = 1 FlyingLowDataValue = 1 FlyingHighDataValue = 1 InSpaceLowDataValue = 8 InSpaceHighDataValue = 7 flyingAltitudeThreshold = 18000 spaceAltitudeThreshold = 80000 RecoveryValue = 7 } BODY_SCIENCE_PARAMS { name = Eve LandedDataValue = 8 SplashedDataValue = 8 FlyingLowDataValue = 6 FlyingHighDataValue = 6 InSpaceLowDataValue = 7 InSpaceHighDataValue = 5 flyingAltitudeThreshold = 22000 spaceAltitudeThreshold = 400000 RecoveryValue = 5 } BODY_SCIENCE_PARAMS { name = Duna LandedDataValue = 8 SplashedDataValue = 1 FlyingLowDataValue = 5 FlyingHighDataValue = 5 InSpaceLowDataValue = 7 InSpaceHighDataValue = 5 flyingAltitudeThreshold = 12000 spaceAltitudeThreshold = 140000 RecoveryValue = 5 } BODY_SCIENCE_PARAMS { name = Ike LandedDataValue = 8 SplashedDataValue = 1 FlyingLowDataValue = 1 FlyingHighDataValue = 1 InSpaceLowDataValue = 7 InSpaceHighDataValue = 5 flyingAltitudeThreshold = 18000 spaceAltitudeThreshold = 50000 RecoveryValue = 5 } BODY_SCIENCE_PARAMS { name = Jool LandedDataValue = 30 SplashedDataValue = 1 FlyingLowDataValue = 12 FlyingHighDataValue = 9 InSpaceLowDataValue = 7 InSpaceHighDataValue = 6 flyingAltitudeThreshold = 120000 spaceAltitudeThreshold = 4000000 RecoveryValue = 6 } BODY_SCIENCE_PARAMS { name = Laythe LandedDataValue = 14 SplashedDataValue = 12 FlyingLowDataValue = 11 FlyingHighDataValue = 10 InSpaceLowDataValue = 9 InSpaceHighDataValue = 8 flyingAltitudeThreshold = 10000 spaceAltitudeThreshold = 200000 RecoveryValue = 8 } BODY_SCIENCE_PARAMS { name = Vall LandedDataValue = 12 SplashedDataValue = 1 FlyingLowDataValue = 1 FlyingHighDataValue = 1 InSpaceLowDataValue = 9 InSpaceHighDataValue = 8 flyingAltitudeThreshold = 18000 spaceAltitudeThreshold = 90000 RecoveryValue = 8 } BODY_SCIENCE_PARAMS { name = Bop LandedDataValue = 12 SplashedDataValue = 1 FlyingLowDataValue = 1 FlyingHighDataValue = 1 InSpaceLowDataValue = 9 InSpaceHighDataValue = 8 flyingAltitudeThreshold = 18000 spaceAltitudeThreshold = 25000 RecoveryValue = 8 } BODY_SCIENCE_PARAMS { name = Tylo LandedDataValue = 12 SplashedDataValue = 1 FlyingLowDataValue = 1 FlyingHighDataValue = 1 InSpaceLowDataValue = 10 InSpaceHighDataValue = 8 flyingAltitudeThreshold = 18000 spaceAltitudeThreshold = 250000 RecoveryValue = 8 } BODY_SCIENCE_PARAMS { name = Gilly LandedDataValue = 9 SplashedDataValue = 1 FlyingLowDataValue = 1 FlyingHighDataValue = 1 InSpaceLowDataValue = 8 InSpaceHighDataValue = 6 flyingAltitudeThreshold = 18000 spaceAltitudeThreshold = 6000 RecoveryValue = 6 } BODY_SCIENCE_PARAMS { name = Pol LandedDataValue = 12 SplashedDataValue = 1 FlyingLowDataValue = 1 FlyingHighDataValue = 1 InSpaceLowDataValue = 9 InSpaceHighDataValue = 8 flyingAltitudeThreshold = 18000 spaceAltitudeThreshold = 22000 RecoveryValue = 8 } BODY_SCIENCE_PARAMS { name = Dres LandedDataValue = 8 SplashedDataValue = 1 FlyingLowDataValue = 1 FlyingHighDataValue = 1 InSpaceLowDataValue = 7 InSpaceHighDataValue = 6 flyingAltitudeThreshold = 18000 spaceAltitudeThreshold = 25000 RecoveryValue = 6 } BODY_SCIENCE_PARAMS { name = Eeloo LandedDataValue = 15 SplashedDataValue = 1 FlyingLowDataValue = 1 FlyingHighDataValue = 1 InSpaceLowDataValue = 12 InSpaceHighDataValue = 10 flyingAltitudeThreshold = 18000 spaceAltitudeThreshold = 60000 RecoveryValue = 10 } } A few notes: -I exposed the hideIfNoparts flag within the nodes as this effectively allows you to delete nodes from an existing tree by getting rid of the parts inside and setting this flag. -I changed stuff like "celestialBody" and "gameObjectName" parameters to the more generic "name" because this allows for using standard ModuleManager syntax like "@BODY_SCIENCE_PARAMS[Kerbin]" or "@TECH_NODE[node1_basicRocketry]" -I ordered the output by tech level to make the file a little easier to navigate. Unfortunately I couldn't figure out how to insert any white-space into config nodes which is why the formatting is so dense -I've moved parent node dependencies into their own individual config nodes as this allows for stuff like manipulating individual node dependencies with commands like "!PARENT_NODE[node1_basicRocketry]" (to say delete an individual parent relationship), and because it allows for additional parameters to be associated with each parent (like, I'd still really like to get the ability to manually specify where the arrows appear for connections). -I decided to include the planet science params in the tech tree itself, as this allows for stuff like specific tech trees for RSS or what have you, where the bodies may have completely different names. I figure individual trees will be balanced around those kind of values so I think it makes sense to associate them directly, and if someone wants to blanket edit them across all trees there is always the "@TECH_TREE[*]" catch-all available. I'm still not convinced on whether these values should go in or outside the tree mind you, so if anyone has any feelings on that point, I'd love to hear them. If anything seems out of whack, let me know, as the next thing I'll be working on is adapting the existing ATC code to read in the above style of .cfg files. -
[WIP] ATC - Alternative Tree Configurator (released)
FlowerChild replied to SirJodelstein's topic in KSP1 Mod Development
You'd be surprised what you can do with just the stock nodes, especially considering the 8 additional invisible nodes that Squad included (more info here if you didn't know about those: http://forum.kerbalspaceprogram.com/threads/53025) IMO, the stock tree actually has way too many nodes as there just aren't enough stock parts to make purchasing each of the nodes worthwhile. Granted, this changes as you integrate more mods into the tree, but through consolidating some of the more useless stock purchases, you wind up with a whole lot of wiggle room in terms of extra nodes to play with. Anyways, what's already in this mod is already beyond what I personally need for BTSM. If anything, I'm most looking forward to being able to delete some extraneous nodes rather than add any -
[WIP] ATC - Alternative Tree Configurator (released)
FlowerChild replied to SirJodelstein's topic in KSP1 Mod Development
Cool stuff Well, it's a little more complicated than that IMO: The tree needs to be generated before ModuleManager processes files, rather than before your code processes the tree. Otherwise, on a first run any .cfg file modifications that are done by other mods to the stock tree won't register (which would obviously be "why this no work?" support hell). Now, whether I can insert code before ModuleManager is one question (I suspect I likely could figure that bit out), and another question is whether the stock tree is even initialized at that stage (and I suspect it isn't which would be a much bigger problem). I'm also wondering if shipping ATC without the .cfg file already present might just result in confusion as that's what people will be likely using as a reference in their own modding work. Really though, if we go with a pregenerated file, what I'm thinking is that this would be a couple of minutes work with each new vanilla release (so every few months) to uncomment the code that dumps the file and run KSP once to get it to execute. If it comes to that I'm willing to take responsibility for maintaining that file myself. I'll get right on the base tree-dumper right away though, and submit a pull request with it soon as I'm done so you can find me on github (My user name is "FlowerChildX" over there). After that's done we can decide where precisely it winds up being called.