+++Misc Fixes and Changes
* Fixed issue where disabled RCS would enable during staging. Mods need to set stagingEnabled=False in their ModuleRCS blocks (unless they want staging on).
* Catch exceptions during part loading so the loading process doesn't come to a halt.
* Fix some issues with decouple modules, allow specifying the ejection force vector.
* Try/catch the other PartModule update loops so one bad module doesn't interrupt others.
* Don't try to set constant KSPFields.
* Null check when getting resource mass on unloaded vessels with removed resources.
* Remove some debug spam when querying Science Subjects by ID.
* Fix Resource Display to show all resources correctly.
* Improve launch clamp stability on revert.
* Fix an issue with ModuleTripLogger not applying to kerbals in non-root parts.
* Ablative shields with Ablator tweaked down in the VAB no longer show up pre-scorched in flight.
* Ablative shields no longer show solid black when reaching zero ablator.
* Fix serious regression with flow multipliers in ModuleEnginesFX.
* Fix a wrong rotation in Moment of Intertia calculations.
* Correct stock temperature gauges to use gauge threshold.
* Fixed currency symbols not displaying properly when UI scale is changed by using inline Text Mesh Pro sprites.
* Probe cores now have a hibernate feature which offers only partial control when activated but draws much less electricity. Can be set to automatically hibernate in warp (advanced tweakable).
* Added a game setting for default throttle (rather than keeping it in Physics.cfg).
* Fix bug where space center view can be messed up on loading a save from the main menu if the game was switched away from during load (old workaround was clear the input locks).
* Renamed Science Tech to Scanning Tech since that's what it's for.
* Fixed where CoPOffset and CoLOffset had CoMOffset added to them during application.
* Fixed where an exception during loading of parts would stop the game loading.
* IVA navball works like normal navball (vectors hidden when velocity is too small, radial and normal cues show only in Orbit mode).
* Fix an issue where prop requirement met (on engine menus) was not being intuitively correct. See note in Moddability, below, for how to update jet parts.
* Fix kerbals sliding on ladders.
* For EVA kerbals, 'SAS' light shows whether the kerbal will reorient when a translate key is pressed (as set in Input Settings). T toggles this behavior when in EVA mode.
* Several dialogs (such as quicksave) now accept Escape and Enter keys for dismissing or accepting contents. Science reports accept Tab to cycle messages.
* Quicksave and Quickload hotkeys (F5/F9) work in KSC view.
* The VAB/SPH part search tool now clears when pressing Escape.
* Crossfeed toggle module can now require a technology researched to enable itself. Radial decouplers now cannot toggle crossfeed until Fuel Systems.
* Fixed loader info in saves to not contaminate a stock save if you load a modded save while playing pure stock.
* Can toggle whether navball hides going into map view.
* Can now use antenna's Start Transmission action in control groups.
* Added ability to register credit for Kerbal experience gains in the MPL
* When a Kerbal plants a flag, credit is given to all landed/splashed Kerbals in physics range. Prevents the need to have flag-planting parties with large crews.
* Made celestial bodies rotate in the R&D archives again
* Updated in flight Pause Menu to include Load, Save and Exit options
* Updated in flight quickloads to show more detailed load dialog
* Fix CBAttributeMapSO (biome detection) to use only nearby biomes as candidates, not all biomes.
* Fix for vessels not retaining targets on quickload
* Fix for targeting hanging up in limbo state when reverting to launch
* Fix for losing targeting when switching vessels (such as when docking)
* Targeting properly restores for individual parts (i.e. docking ports) during quickload and vessel switching
* Fix for Tracking station list deselcting active vessel on list changes
* Fix for Map filter hiding the current and/or targetted vessel
* Fix an issue with stars fading in/out instantly.
* Add lift and drag displays back to wings/control surfaces.
* Fix some EVA state issues not updating correctly, leading to kerbals getting stuck 'floating'.
* Retractable landing gear produce less drag than they used to when retracted and much more when extended.
* Enable staging toggling on fairings.
* Fix ModuleSAS in standalone mode using real time not game time for resource requests.
* Properly format facility name in editor exit dialog.
* Stopping near things no longer keeps EVA interaction messages open in map.
* Corrected usage of the word "topology" in ScienceDefs.
* Settings screen does not actually set the resolution unless the resolution actually changes.
* Mark 2 docking port given the same tooltips as other docking ports.
* World First speed, distance, and altitude records can no longer be set while in a prelaunch state.
* Fix engineer report entries not updating when their icons change.
* Fix Skywinder stock vessel having no description.
* Fix typos in stock "SatelliteLauncher" craft file.
* Fix early game progression cheat not unlocking the science progress node.
* Manufacturer added to mystery goo.
* Part search now splits search terms on dashes, fixing searches for several engine designations, and things like "Convert-O-Tron".
* Version text made more visible in experimental builds.
* Using curly braces in a vessel name no longer obliterates the universe.
* Resource scanners now show "0%" rather than "Unknown" if the area is known, but the resource abundance is super low.
* Remove roll torque on docking ports (by default).
* Fix pod lights not being in Lights action group by default.
* Fix some zeroed attachment vectors on parts leading to log spam.
* Fix drag from struts and fuel lines.
* Vessel G-force is now reported correctly when on rails.
* Fix issue with ModuleDeployablePart (and solar panels, which derive from it) always reporting multiple drag cubes even when the animation isn't the panel's and it doesn't track the sun.
* Fix long-standing bug with FlightLogger not logging Gs right.
* Fix missing manufacturer for Mystery Goo.
* Ion engine now has resource bars, and will leave a tiny bit of EC remaining when drawing EC so the vessel can still be controlled.
* Fix issue with ladder tests in Engineer's Report.
* Fix explosions moving with vessel.
* Fix issue with command seat and docking port joints.
* Fix vessel counts in vessel type filters.
* Fix shielded docking ports to not be stageable.
* Fix issue where parts would play their staging FX on load, not just on staging.
* Fix an issue with zero drag area breaking physics.
* Deactivate Lab if it is activated and no scientists are present.
* Improve stars' fade-in-fade-out during dawn and dusk.
* Fix issue where loading an unloaded vessel with a converter will lead to it not processing all ore.
* Default to not logging (to flight logger or to the log file) when engine exhaust heats a part.
* Show negative funds and negative altitudes (depth) by turning the widget red.
* Fix issue with screen rotating when KSP is not the active application.
* Ignore launch clamps when getting craft size for facility checks.
* Fix CoP/CoL on two fins being off.
* When finding first vessel control source, require crewed parts to also have the command module on them before they are valid candidates.
* IVA radar altitude gauge shows height from seabed when underwater.
* Fix initial rotation of LT-1 and LT-2 landing legs.
* Don't allow docking port shields to be closed while docked.
* RCS thrust forces array properly zeroed when RCS is not firing.
* Fix Offset Gizmo issue for surface mounted parts with colliders that don't cover the entire visual model (like the LY-01). They will no longer jump when an offset is attempted.
* Fix vessels/kerbals landed on other vessels teleporting to the ground on load.
* Fix issue with a kerbal targeting a vessel and boarding it leading to maneuver node functionality being broken.
* Fix wrong vessel being made dominant during docking if the docking is so fast as to skip the acquire phase.
* Fix Aero FX being improperly applied to some explosion FX causing square particles and slowdown.
* Fix planet orbits sometimes not responding to clicks (or responding when clicked off-orbit).
* Empty science containers (or containers with limited capacity) may show experiment count/capacity.
* Fix problems with sliding maneuver nodes.
* Fix landing legs exploding when landing on Gilly.
* Fix handling of mouse interaction with solar escape trajectories (for maneuver node placement).
* Fix bad things happening when quickloading while warping.
* Fix IVA overlay button not always responding.
* Fix offset target markers when more than 200m away.
* Tweaks to wheel autoboost to help with wheels.
* Increased allowable gizmo offset when holding SHIFT.
* Fix bug when transferring fuel from an empty to an empty tank (causing the universe to come unglued).
* Added highlighter brightness factor to game settings.
* Added settingsload and settingssave commands to debug console.
* Added highlighter colors to settings.cfg so they can be edited as well.
* Added in flight UI for highlighter setting.
* Add Mouselook mapping to settings screen.
* Add shielding status to parts.
* Add Lights to MPL.
* Fix occlusion shielding radius values for Cargo Bays.
* Add version stamps to save files for version save created in and version last saved in.
* Fix issue with WarpTo orbit jumping.
* Add "Always show closest approach for target" markers option.
* Fix AppLauncher not having global scale applied.
+++Moddability
API Docs: https://kerbalspaceprogram.com/api/index.html
* Added FlightGlobals.VesselsLoaded and FlightGlobals.VesselsUnloaded which lets us iterate over a specific portion of Vessels without checking the entire list.
* Added onVesselPartCountChanged event, fires any time a part is added or removed, the moment it happens, unlike onVesselModified.
* Added onVesselStandardModification event, collects various vessel events and fires them off with a single one. (onVesselPartCountChanged, onVesselModified, docked, undocked, et al)
* Added onScreenResolutionModified event, fires when the screen resolution is modified.
* Added many accessors/setters.
* Vessel control level can be clamped to a field in Vessel (so can be restricted to Partial even if otherwise would be Full).
* GetModuleMass/Cost methods can now be passed the situation.
* Fix where kerbal mass (if set to nonzero) was not applied in the editor.
* Added two new dictionary-related classes (DictionaryValueList and ListDictionary).
* Celestial bodies now cache all of their PQS Cities.
* All game root nodes now generate a random persistent seed, which is different from game to game.
* All forces on valid parts except wheel forces are now done via Part.AddForce/Torque/AddForceAtPosition. Note that the forcemode used is Force; to use a different forcemode, convert the force to the correct amount. It is the job of the Flight Integrator to then apply all these forces to actual rigidbodies (rather than all the disparate modules' job).
* Use mass-weighted average angular velocity of parts for vessel angular velocity.
* ITorqueProvider now reports two Vector3s, positive torque (that produced by control actuation 1,1,1) and negative torque (that produced by -1,-1,-1).
* Added various accessors.
* Node definitions can take an extra digit after size, either 0 or 1: that sets whether the node can crossfeed. Defaults to 1 (yes). NODE definitions can take crossfeed = True/False
* ModuleEngines now supports `clampPropReceived = True`. This will clamp the ratio of propellant requested based on prior results, so if IntakeAir is listed first and less than the full requirement is returned, it will request only that ratio of further propellants. In this case the "Prop Req Met" display will show the minimum requirement-met ratio rather than the average. Engines that use IntakeAir (or other cases like that) need to have `clampPropReceived = True` in each of their MODULEs that do that, and need to have that PROPELLANT first and the other PROPELLANTs later. See stock jet cfgs for examples.
* Added another crew transfer event.
* Added more startup options for KSPAddon
* Allow kerbals to have/save/load arbitrary experience points.
* ResearchAndDevelopment.GetTechnologyTitle(string id) will convert a tech ID to a tech title and is available as soon as parts start loading (can be used in GetInfo() ).
* Support max pressure (dynamic + static), `maxPressure`, and max G, `gTolerance`, for parts.
* Added system to allow mods to add custom difficulty settings.
* Added CelestialBody.hasSurface so mods that add a PQSController to gas giant don't cause silly things such as "Plant a flag on Jool" contracts.
* Replaced all checks for experience traits (Pilot, Scientist, Engineer) with individual experience effects. They are now loaded before part loading so can be queried in GetInfo().
* Icons in TechTree.cfg can now use a relative path (allows mod icons to live outside the Squad directory).
* Added KSPAssemblyDependencyEqualMajor as an attribute. Use instead of KSPAssemblyDependency if you want to force requiring the stated major version, not >= the major version, from your dependency.
* If you are setting a vessel's position and/or changing its orbit, call Vessel.IgnoreGForces(framecount) on the vessel for the number of frames that g forces should be ignored (try 1, then 2 if that doesn't work, etc).
* ModuleDeployablePart (covers antennas, solars, radiators) also has a gResistance (for Gs) as well as windResistance (for Q).
* Crew transfer now derives from a generic abstract PartItemTransfer class. Classes can derive from it to implement any kind of (crew transfer-style) part-part transfer. Also we fire an event right before a crew transfer is created so mods can just kill it and easily create their own CrewTransfer-derived class and have that be called on that event.
* Extended ModuleScienceContainer to allow sending and, (from ModuleScienceExperiment) receiving, experiment data. Also added support for a Collect All option to such containers.
* ModuleColorChanger supports changing arbitrary shader colors and implements IScalarModule. ModuleAnimationSetter works similarly and is used to more directly link an animation to being set by IScalarModule.
* PartModules now support upgrades. In a MODULE node, add an UPGRADE node. Inside that add one node per techID you wish to provide upgrades, in ascending order. Inside that place keys and nodes you wish to upgrade. e.g. `UPGRADES { basicRocketry { maxThrust = 250 } }` will change maxThrust to 250 once basicRocketry unlocks. Upgrades will never override persistent data. Further, by default they overwrite each other; to make a node apply on a clean slate (so you can, say, add two PROPELLANT nodes and not have them conflict due to the overwrite logic) set `IsExclusiveUpgrade__ = True` in the upgrade's node. That will clear the upgrade state and apply that upgrade fresh. Upgrades are applied only when you add a part to a craft in the VAB/SPH, they don't magically apply in flight. When a part on a craft is upgraded, a new option will appear in the PAW (when in VAB/SPH) where you can view the current stats of all those modules with upgrades.
* ModuleEngines now supports alternate (RealFuels-style) throttling and rates.
* ModuleEngines now supports throttle-Isp interactions. Turn on with useThrottleIspCurve = True and set the throttleIspCurve and throttleIspCurveAtmStrength curves. Final Isp = input Isp * Lerp(1, throttleIspCurve.Eval(throttle state), throttleIspCurveAtmStrength.Eval(atms of pressure))
* Support part upgrades, see docs.
* Added events dealing with kerbals going on/off ladders on parts and added a new vessel field for accessing the vessel of the part of the ladder the kerbal is climbing (if all of those are valid).
* CelestialBody now has thermo/atmo stats methods so FlightIntegrator's temperature calcs can be called from anywhere / any mod.
* Events that throw an exception now print the full stack trace.
* PartModuleUtil.PrintResourceSI() is now just KSPUtil.PrintSI().
* Add ModuleDragAreaModifier with field areaFactor. Note: this will also affect buoyancy and thermo.
* Added ModuleHeatEffects and FXModuleThrottleEffects which can take any number of IScalarModules and are set by skin temp and throttle respectively.
* AvailablePart.entryCost is now get-only and calls a static delegate so they can be
* FindEngineNearby and FindEngineInterface are now PartModuleList methods instead of being duplicates in FXModuleAnimateThrottle and ModuleAlternator.
* Many KerbalEVA, Kerbal, and KerbalExpressionSystem methods made virtual, and kerbal spawning in ProtoCrewMember and EVA spawning in FlightEVA made delegates.
* Added IContractObjectiveModule, which allows mods to specify valid parts for contract objectives, rather than it being configuration based.
* Waypoint captions on the map are now moddable.
* Added game events for CommNet status changes both for the connection in general and the connection to KSC.
* Added game event that fires when PQS starts, just before the sphere is started.
* Added game event that fires when PQSCities start.
* Added game event for orbital resource survey completion.
* Added game event for vessel control state changing.
* Orbit now has a constructor that clones another orbit.
* Vessel now has a method to kill all parts in permanent ground contact (eg: launch clamps).
* Added ModuleGenerator.isGroundFixture for launch clamps.
* The "escape" progress milestone now uses standard World First award methods, which allows it to be disabled by mods properly.
* Icon_Hidden tag now hides all children of the transform so tagged.
* Add requiresFullControl to events, actions, and UI controls. If false, will work normally in full and partial control and refuse to work only with no control. If true, will work only with full control.
* AssemblyLoader ignores abstract classes.
* Support symbols in the font.
* Made Kerbals and EVA kerbals more moddable. EVAs and the flag now have partial part cfgs which can be modded. All Kerbal and KerbalEVA methods are virtual and the FSM is opened up. New hooks added.
* Made vessel load/unload/pack/unpack ranges changeable in Physics.cfg.
* Support adding options to the game difficulty screen.
* Vessel now has radarAltitude. Use it for min(altitude, heightFromTerrain)
* add PartModule.OnIconCreate which runs just before the partmodule is stripped from the icon gameobject when the editor part icon is being created.
* Particle systems can be registered with FloatingOrigin for handling origin/krakensbane offsetting natively.
* ProtoPartResourceSnapshot no longer relies on strings, and its resourceValues node is now inaccessible. Instead, directly get / set the amount/maxAmount/flowState.
* PartModules now come with a resHandler object (of type ModuleResourceHandler) for handling ModuleResource / RESOURCE nodes, so code need not be duplicated.
* When a landed vessel goes off rails and is detected to be landed on parts, not the ground, it is offset up slightly, controlled by one static Vessel field HeightFromPartOffsetGlobal (default 0.5 meters) and one instance field heightFromPartOffsetLocal (default 0 meters). The vessel is offset upwards the sum of those two fields.
* Fix OnVesselSwitching always sending a null reference, add OnVesselSwitchingUnloaded.
* Allow reference to Kerbal's animator cache and renderer cache.
* Add map toggle interface for mods.
* OrbitTargeter opened up, delegate added for creating the on-click context menus so they can be modded.
* Add delegates so KB apps can be modded.
* Add currency-agnostic CanAfford method.
* Add many more options to ModuleLiftingSurface and for customizing body lift.
* ModuleAnimateGeneric now supports defaultActionGroup.
* ConfigNode now formats float and double values such that no data is lost.
* ConfigNode AddValue/SetValue now support most types.
* Flag decals in IVAs (InternalFlagDecal module)
* Add Crew counts to Vessels