Skip to content

Releases: KSP-KOS/KOS

1.5.0.0

13 Sep 02:24
Compare
Choose a tag to compare
1.5.0.0 Pre-release
Pre-release

New Features

  • New crewmember suffixes commit
  • Added COM suffix to parts to get the accurate center of mass (thanks SofieBrink) commit
  • 3rd party addons can now add custom suffixes to PartModules commit
  • Integrated KSPBuildTools for easier local setup and automated build process commit

Bug Fixes

Catch-up for over a year of little things

13 Feb 05:51
Compare
Choose a tag to compare

v1.4.0.0 - Catch-up for over a year of little things

for KSP v1.12.4 Downloads this release

It's been 3 years since the last kOS release, and a lot of
small changes have trickled in. None were big enough on
their own for a full release but there's been enough of
them and it's been long enough that a release has been
needed for a while now. Since KSP 2 is about to start
hitting early access, it seemed right to get all these little
things out for kOS for KSP 1 just before that happens.

This will also make it so people won't have to keep
overriding the complaints of CKAN for trying to use
kOS on KSP 1.11.x or KSP 1.12.x. (Which it worked for
but CKAN didn't know that. Now it should know that.)

BREAKING CHANGES

  • The bugfix to prevent a local variable from clobbering a
    builtin name could make existing scripts have to rename
    a variable or two.

    Previously if you tried to create a variable that matches
    the name of a built-in variable, it would let you but then
    the built-in variable would be permanently masked and
    unreachable.

    Now by default it won't let you. BUT you can get the old
    behavior back again if you use the @CLOBBERBUILTINS directive,
    if you really want to let yourself do that.
    pull request

NEW FEATURES

  • kOS parts are now findable by typing "kos" into the
    VAB's part search bar.
    pull request

  • kOS parts can be placed inside the KSP cargo inventory system.
    pull request

  • Comma-separated list of LOCAL or SET declarations can
    now be parsed. Example:

    old: local a is 3. local b is 5. local c is 10.
    can now be: local a is 3, b is 5, c is 10.

    This is similar to how it works with PARAMETER.
    pull request

  • Added VESSEL:THRUST, VESSEL:ENGINES, VESSEL:RCS.

    VESSEL:THRUST is the sum of the engine:THRUST of all
    the engines.

    VESSEL:ENGINES is the same list returned by LIST ENGINES,
    but using a somewhat nicer syntax.

    VESSEL:RCS is the list of all the RCS parts on the vessel.
    pull request

  • Added OPCODESLEFT bound variable. This bound variable
    returns the number of instructions yet to execute (how
    much of CONFIG:IPU's instructions there are to go in
    this fixedupdate). Intended to help decide if a WAIT 0.
    would be prudent before entering a critical section of
    code.
    pull request

  • Better integration with RP-1's avionics tech progression.
    (No longer have to buy into the tech from the R&D building
    to cause the kOS cores in avionics parts to get the upgrade.)
    pull request

  • Better integration with RP-1's avionics lockouts when the
    avionics doesn't support the mass. (Previously kOS couldn't
    use ANY of the controls when avionics were insufficient, even
    ones RP-1 meant to still work with insuficient avionics,
    like RCS fore and aft.)
    pull request

  • kOS parts are now findable by typing "kos" into the
    VAB's part search bar.
    pull request

  • Can now read a binary file as a LIST of numeric values (one
    per byte).
    pull request

BUG FIXES

  • Documentation: Many small one-line documentation fixes that are
    too numerous to mention all of them one by one.
    pull request
    pull request
    pull request
    pull request
    pull request
    pull request

  • A change to make it backward compatible with a call
    kOSPropMonitor was doing.
    pull request

  • Cause the mod RocketSoundEnhancement to stop muffling
    kOS's sounds. (By explicitly telling Unity those
    sounds don't emit from the kOS Part's "location" and
    instead are ambient.)
    pull request

  • Make PART:DECOUPLER behave more consistently with what the
    documentation says about docking ports.
    pull request

  • Reduce excessive repeats of GUI ONCONFIRM calls being triggered
    when they werent' supposed to be triggered.
    pull request

  • Remove legacy old version of kOS's computer from the parts
    definition file so it can't appear by accident in the parts bin.
    This is no longer needed for backward compatibility like it
    was before because this version of kOS cannot run on the
    very old versions of KSP that part was for anyway.
    pull request

  • When reporting the terrainheight of a geoposition, it no
    longer returns false results caused by seeing certain
    stock parts that put trigger colliders on the "terrain layer".
    pull request

  • Fix SteeringManager believing RCS blocks were capable of
    more thrust than they were (causing steering to be tuned
    wrong when steering via RCS). Problem was caused when stock
    parts now have multiple alternate RCS nozzle arrangements,
    and kOS was summing up all the thrust all the nozzle variants
    can do even though only a subset of those nozzles actually
    exist in any given variant.
    pull request
    pull request

  • When setting the volume name for a disk drive by copying the
    vessel's name to the volume's name, it now strips out
    characters that are not allowed in volume names (but are
    in vessel names, thus the bug).
    pull request

  • BOUNDS now does a better job of calculating based on
    part's colliders rather than their visual meshes which
    don't always agree with the colliders.
    pull request

  • No longer bogs down as much when someone creates the same
    LOCK expression repeatedly in a loop. (Still not a good idea,
    but kOS tolerates it better now.)
    pull request

  • Performance: No longer pays the cost of tracking a stopwatch
    when the user doesn't even have profiling turned on so they're
    not looking at the timings anyway.
    pull request

  • A VOICE's volume is now persisting properly after playing a
    NOTE. Previously playing the NOTE caused the VOICE volume
    setting to get clobbered by the NOTE's volume.
    pull request

  • Make it so kOS's ModuleCargoPart settings don't break in
    older KSP 1.10.x (which doesn't have ModuleCargoPart).
    pull request

  • Fix a bug when a thing that is locked is used as the
    left side of a suffix when setting the suffix.
    pull request

  • Prevent a local variable from clobbering a builtin name
    pull request

  • Allow kOS code to "see" a change to a manuever node's ETA
    made outside the script, after having obtained the node
    in a variable.
    pull request

  • Fix Compiler exceptions not showing the filename correctly.
    pull request

  • Fix ALT:RADAR sometimes wrong when high above ground.
    pull request

  • Fix race condition that caused terminal to spam the log
    on scene changes and sometimes spam the log enough to
    lag the game for some people.
    pull request

  • Fix throwing exception when setting SASMODE while the
    navball is hidden.
    pull request

  • Made the doc generation scripts work on python 3.x
    pull request

Dont Steer Me Wronger

24 Jan 21:57
Compare
Choose a tag to compare

for KSP v1.10.1 Downloads this release

A quick patch to v1.3.0.0 that fixes issue #2857 that would
zero controls for just a brief single physics frame if
raw control neutralize had been previously used or if a
reboot had occurred while raw controls were in use. Most
players won't notice a single physics frame of zeroed
controls, but if you're using realism mods with limited
engine ignitions, it would unfairly consume an engine
ignition when the throttle zeroed for an instant. (Which
was a disaster if the engine only gets to have one
ignition.)

Normally one bug fix wouldn't warrant a release, but this
bug was caused by changes in v1.3.0.0, and the consumed
ignition was unfair.

See release v1.3.0.0 below for the long changelog with all the things in 1.3.0.0.

Dont Steer Me Wrong, This Time

18 Jan 23:48
Compare
Choose a tag to compare

for KSP v1.10.1 Downloads this release

See release v1.3.0.0 below for the long changelog.

There were about a year of changes. This v1.3.1.0 release is just a minor patch on top of the big changes in v1.3.0.0 that fixed one bug with the change from TimeSpan to TimeStamp that wasn't quite right in the v1.3.0.0 release (issue: #2850).

Don't Steer Me Wrong

17 Jan 23:28
Compare
Choose a tag to compare
Don't Steer Me Wrong Pre-release
Pre-release

v1.3.0.0 - Don't Steer Me Wrong

If you want to download this, please download https://github.com/KSP-KOS/KOS/releases/tag/v1.3.2.0 instead, as it has a hot patch to fix an important error. The ZIP file for this release has been taken down in favor of the v1.3.1.0 release.

for KSP v1.10.1 Downloads this release

There's a lot of small changes over the last year that have added
up to a big release. This release supports KSP 1.10 and KSP 1.11.
It has no specific KSP 1.11 changes but it has been tested and it does
work with KSP 1.11.

(NOTE ABOUT KSP 1.11 - If you want to put a kOS part into one of
the new cargo inventory slots that came with KSP 1.11, you can do so
but remember to FIRST attach it to the vessel in the VAB/SPH so you can
adjust the disk space and boot file settings, then detach it from the
vessel and drag it into the cargo slot - that way it has the settings you
gave it. If you just drag it directly into the cargo slot from the parts
bin then it only has the default values.)

The most important changes are probably in steering and control.
Cooked steering shouldn't waste as much RCS as it used to, and if you
are using raw control you now have the ability to set the player's trim
settings for yaw, pitch, and roll so you can steer using those and
not completely lock the player out of control. There is also a
panic button for telling kOS to suppress all of its controls if the
player needs to take over the controls regardless of what the script
is doing.

As always, recompile KSM files with this release. Especially as there
was an important KSM bugfix.

BREAKING CHANGES

  • TimeSpan used to mean a fixed stamp in time (the name was not
    really accurate). Now there are two types, TimeStamp and
    TimeSpan, and the one that USED to be called TimeSpan
    is now called TimeStamp, with TimeSpan now being a new
    type that didn't exist before. This could affect scripts if
    you ever did a check for :istype("TimeSpan") (because of
    the rename) but shouldn't affect anything else.
  • Even more than usual it's important to recompile any KSM files.
    A major bug in how KSM files were written was discovered that this
    release fixes. There's a chance your existing KSM files may
    already be wrong. If you have any bug reports about a KSM file
    not working right, please try testing again with this release by
    recreating the KSM file. There's a small chance you might have
    had the bug this release fixes. (Look for "KSM" in the bug section
    below.)
  • If you are using the output of SteeringManager:WRITECSVFILES,
    be warned that output now has a new column in the second-to-last
    position, the MinOutput column. That means the MaxOutput column
    has shifted one position to the right. This should only affect
    people who are analyzing that data with external software.
  • In order to support Kerbal Alarm Clock version 3.0.0.2 or higher
    it was necessary to break compatibiltiy with versions of Kerbal
    Alarm Clock that are older than that. The API wrapper changed
    enough that backward compatibility is too messy to maintain.
  • The :LIST suffix of VOLUME said in the documentation
    that it returns a LIST when in reality it always returned
    a LEXICON. If you relied on this and wanted the lexicon
    not the list, you need to now use the new suffix :LEXICON
    because the old suffix :LIST has been changed to match the
    documentation and be a real actual LIST now.
  • Temperature tolerance for the kOS parts was way too high, making
    them effective heat shields when they shouldn't be. If you had been
    taking advantage of this before that might not work anymore.
  • CREATEORBIT() used to take mean anomaly at epoch as a value in
    radians, which didn't match how everything else in kOS works.
    It is now expecting it in degrees as described in BUG FIXES
    below.
  • If you ever happend to have a string literal with a backslash
    followed by a quote mark (\") that has now become a special
    escaped quote char and is no longer literally a backslash and
    quote mark.

NEW FEATURES

  • Maneuver Nodes can now be constructed with either ETA time or
    with UT time, and you can read their time either as UT (:TIME)
    or as ETA (:ETA). They also can take in the new Timestamp
    or TimeSpan types instead of just a Scalar number of seconds if
    you like.
    pull request
  • There's a new button, "Reread Boot Folder", on the kOS toolbar
    window when you're in the VAB or the SPH. This button lets you
    tell kOS to re-read the boot directory when you've just added
    a new file to it, so you don't have to leave the VAB and come
    back for it to show up in the list of boot files.
    pull request
  • The old TimeSpan type has been renamed to TimeStamp and
    a new TimeSpan type has been made in its place. This is to
    fit the design pattern where a "stamp" is a fixed point in time (a
    date and a time of day) and a "span" is a time offset. The main
    difference in Kerbal is whether you count years and days
    starting at 1 or at 0.
    pull request
  • Suffixes :PARTSTAGGED, :PARTSNAMED, and :PARTSDUBBED
    can now be used with parts instead of with entire vessels. Doing
    so searches just the sub-branch of the ship starting from that
    part, instead of the whole ship.
    pull reqeust
  • Added a new Suffix to RCS parts, :DEADBAND that lets you
    finally override the game's enforced 5% deadband on RCS
    controls. It turns out the deadband isn't in the controls,
    but rather it's in the RCS Parts themselves and doesn't apply
    to other torque sources like reaction wheels. That's why
    you notice it when translating (where only RCS works) and not
    when rotating (where reaction wheels do something and take
    up the slack left by the RCS thrusters not responding).
    pull request
  • Big overhaul to SteeringManager's internals:
    There's been some important refactoring in SteeringManager that
    should reduce the control vibrations and consequently the
    RCS fuel wastage especially in Realism Overhaul (which relies
    more on RCS than stock does). Also, there's some
    user-settable epsilon values - if you want to change the tuning
    you can adjust SteeringManger:ROTATIONEPSILONMIN and
    SteeringManager:ROTATIPONEPSILONMAX.
  • The random number generator now can be fed a seed.
    pull request
  • PIDLoop is now a serializable structure so you can save
    your PID's settings and bring them back from a file. Also
    PIDloop's CSV output now has a Minoutput column.
    pull request
  • Enlarged max allowed terminal font size to 48, to benefit
    people with tiny pixels (i.e. 4k monitors).
    pull request
  • Uses the changes to Kerbal Alarm Clock's API that started
    with Kerbal Alarm Clock v3.0.0.2. (This does break compatibility
    with older versions of Kerbal Alarm Clock, though.)
    pull reqeust
  • On-Screen warning when SAS is fighting kOS: The message
    appears when both SAS and lock stering have been active for a
    few seconds and goes away when one or the other is turned off.
    pull request 2780
    pull request 2783
  • Emergency Suppress Autopilot: You can now click an emergency
    toggle button on the kOS toolbar dialog window that will
    temporarily suppress all of kOS's locked steering so you have
    manual control. If you use this, the script will still keep
    running and think it's moving the controls, but the steering
    manager will ignore the script's commands until you turn the
    suppression toggle off. This can also be bound to an
    action group for the kOS PartModule if you want a fast hotkey
    for it.

    pull request
  • Part suffixes that allow you to traverse the symmetrical
    sets of parts. (i.e. if you place 4 fins in radial symmetry,
    and have a reference to one of the fins, you can find the other
    3 fins that it is symmetrical with.)in the same symmetry set)
    pull request
  • The player's own TRIM controls are now settable by script.
    (Example use case: You want an autopilot to control an
    airplane by moving the trim but not the main controls so
    the player is still free to push the main control stick at
    any time).
    pull request
  • ETA:NEXTNODE now an alias for NEXTNODE:ETA
    pull request
  • Trajectories Addon updated to support Trajectories v2.4 changes.
    (Thanks PiezPiedPy)
    pull request
  • Kuniverse:launchcraftwithcrewfrom()
    (Thanks Jonny...
Read more

hotfix for DDS loading on UNIX

02 Nov 23:21
Compare
Choose a tag to compare

v1.2.1.0 Get Backslash to where you once belonged.

((UPDATE - edited the version file to tell CKAN it works up to KSP 1.9.1. Hoping CKAN's crawler will pick up on the change))

for KSP v1.8.1 Downloads this release

Just a hot fix to solve the problem where the new DDS texture loading routine in v1.2 broke on UNIX platforms because of the path separator being hardcoded to backslashes.

Unity update for KSP 1.8.x

02 Nov 01:43
Compare
Choose a tag to compare

for KSP v1.8.1 Downloads this release

v1.2 Unity Update

This update is mostly to make kOS compatible with KSP 1.8.x, which
started using a newer version of Unity, and a newer version of .Net,
which have some consequent changes in the code and build process.

BREAKING CHANGES

None that are known about, other than the usual reminder that
KSM files need a recompile after every version update of kOS.

NEW FEATURES

  • Now forces both the toolbar window and the telnet welcome menu
    to list the kOS CPUs in a consistent unchanging sort order.
    Previously, it was pretty much random what order you would
    see kOS CPU's listed in the menu, which made it hard for
    JonnyOThan's Twitch-Plays-KSP chatbot to know which CPU it
    was attaching to when it sent commands to kOS. This has been
    changed to a predictable sort order as follows: (1) Sort by
    which vessel the CPU is on, starting from the active vessel,
    and then for other vessels, sorting by distance from the active
    vessel, closest first. (2) When the same vessel has more than
    one CPU, break that tie by number of "hops" from the root part,
    such that CPU's attached closer to the root come first. This
    is by "number of parts to walk through to reach root" rather
    than by actual physical distance, since using physical distance
    might have led to inconsistent sort order given that some ship
    parts can hinge and extend, changing that distance.
    pull request
  • New suffixes Dockingport:PARTNER and Dockingport:HASPARTER
    will tell you which docking port this docking port is docked with.
    issue
    pull request
  • HEADING() Now allows optional 3rd argument, "roll".
    issue
    pull request
  • Let user-made GUIs toggle IMGUI's wordwrap flag with a
    new suffix: Style:WORDWRAP. This should let you fix
    that annoying problem where a GUI Label would insist on
    wrapping even when it could have fit by making the window
    wide enough. Setting wordwrap to false will force the
    GUI layout engine to keep the label's area wide enough
    to not wrap the text.
    issue
    pull request
  • Add BODYEXISTS test
    issue
    pull request
  • Allow FLOOR() and CEILING() to specify a decimal place other
    than the one's place, like ROUND() can do.
    issue
    pull request
  • Add a constructor, CREATEORBIT() that will make a new
    Orbit object for any hypothetical orbit given Keplerian
    parameters, without it coming from a vessel or a body that
    already exists.
    issue
    pull request
  • Added new suffix to waypoint: :ISSELECTED, which will
    tell you if the waypoint is the one the user has selected
    for their navball.
    issue
    pull request

BUG FIXES

  • Bound variables like SHIP, UP, VELOCITY, etc stopped existing
    in the KSP 1.8.x update. This was because kOS makes use of
    reflection techniques to store information about C# Attributes
    that help it find the bound variables in its code, and .Net 4.x
    changed the meaning of Attribute.Equals() in such a way that it
    broke what kOS was doing to store this reflection information.
    A Dictionary that kOS was using to track bound variables by Attributes
    started having key clashes because of that change to what it means
    for an Attribute to be Equal to another Attribute.
    ((No link to a github issue because this was part of the general
    KSP 1.8 update PR and didn't have an issue.))
  • Prevent waypoints with bogus body names.
    pull request
  • Fix a problem that made the GUI terminal sometimes get stuck
    refusing to repaint when resized to a size too small to
    hold all the text it previously had showing.
    issue
    pull request
  • Several minor doc typos
    pull request
    pull request
  • The startup message about default font and "if you want the old look" was
    quite obsolete by now and needed to be removed.
    issue
    pull request
  • Changed the technique used to load DDS icons used in the
    kOS GUI terminal and the kOS toolbars, to bypass KSP's
    strange API and go directly to Unity. This may or may
    not help people who had the purple square icon problem.
    ((No issue - SlimJimDodger contributed PR out of the blue.))
    pull request

Breaking Bounds

31 Jul 20:37
Compare
Choose a tag to compare

for KSP v1.7.3 Downloads this release

v1.1.9.0 Breaking Bounds

This update is a mix of new features, mostly

BREAKING CHANGES

NEW FEATURES

  • Bounding box information for parts and for the vessel as
    a whole is now exposed for scripts to read.
    pull request 1.
    pull request 2.
  • The above bounding box feature also came with some new suffixes
    for Vecdraw so you can now draw plain lines (suppress the
    arrowhead, suppress the opacity fade) with them.
  • Lexicons can now use the suffix syntax. i.e. where you
    say mylex["key1"] you can now say mylex:key1,
    provided the key is something that works as a valid identifier
    string (no spaces, etc).
    pull request.
  • Can now set the default terminal Width and Height for all
    newly spawned terminals.
    pull request 1.
  • A ternary conditional operator exists in kerboscript now,
    using the syntax CHOOSE expr1 IF bool_expr ELSE expr2.
    If bool_expr is true, it returns expr1. If it's false,
    it returns expr2.
    pull request.
  • Added support to read more atmospheric values from KSP.
    pull request.

BUG FIXES

  • TimeSpan now peeks at the KSP game to learn its notion of
    how long a day is, and how long a year is, rather than hardcoding
    the values.
    pull request.
  • Fix cooked control triggers not working during a WHEN/ON trigger.
    pull request.
  • Fix mangled state if kOS is out of electricity when scenes switch
    or the game is saved.
    pull request.
  • Obsolete list command documentation removed.
    pull request.
  • Allow part modules'd fields to work even when no GUI name is defined.
    It seems that the main game allows the GUI name to be left out and if
    so it inherits from the base name under tne hood. Now kOS follows
    this behaviour.
    pull request.
  • Prevent using UNSET on built-in variable names like SHIP, ALTITUDE,
    and so on.
    pull request.
  • RP-1 used a different technique to lock out controls due to
    insufficient avionics that kOS didn't know about. kOS bypassed
    this lockout and still controlled the vessel anyway. This is no
    longer the case.
    pull request.
  • PartModule:SETFIELD now works properly with the new type of slider
    widget that robotic parts use in KSP 1.7.x. KSP introduced a new
    type of slider widget that presents false information when kOS tried
    to obey its min, max, and detent values, those being only dummy
    placeholders for these types of sliders, not actually populated with
    the real values. For these sliders, the real limit values come from
    another field, requiring a more indirect method call to get the information.
    pull request.
  • GUI windows no longer use the KSP control lock system to emulate
    keyboard focus, instead relying on the built-in Unity IMGUI
    focus rules for widgets, thus they won't 'steal focus' as much.
    pull request.

Breaking Bounds

28 Jul 17:07
Compare
Choose a tag to compare
Breaking Bounds Pre-release
Pre-release

for KSP v1.7.3 Downloads this release

BREAKING CHANGES

(None known about, other than the usual "make sure you recompile any KSM files.")

NEW FEATURES

  • Bounding box information for parts and for the vessel as
    a whole is now exposed for scripts to read.
    pull request 1.
    pull request 2.
  • The above bounding box feature also came with some new suffixes
    for Vecdraw so you can now draw plain lines (suppress the
    arrowhead, suppress the opacity fade) with them.
  • Lexicons can now use the suffix syntax. i.e. where you
    say mylex["key1"] you can now say mylex:key1,
    provided the key is something that works as a valid identifier
    string (no spaces, etc).
    pull request.
  • Can now set the default terminal Width and Height for all
    newly spawned terminals.
    pull request 1.
  • A ternary conditional operator exists in kerboscript now,
    using the syntax CHOOSE expr1 IF bool_expr ELSE expr2.
    If bool_expr is true, it returns expr1. If it's false,
    it returns expr2.
    pull request.
  • Added support for reading Principia's flight planning nodes,
    from contributor RCrockford.
    pull request.
  • Added support to read more atmospheric values from KSP.
    pull request.

BUG FIXES

  • Fix cooked control triggers not working during a WHEN/ON trigger.
    pull request.
  • Fix mangled state if kOS is out of electricity when scenes switch
    or the game is saved.
    pull request.
  • Obsolete list command documentation removed.
    pull request.
  • Allow part modules'd fields to work even when no GUI name is defined.
    It seems that the main game allows the GUI name to be left out and if
    so it inherits from the base name under tne hood. Now kOS follows
    this behaviour.
    pull request.
  • Prevent using UNSET on built-in variable names like SHIP, ALTITUDE,
    and so on.
    pull request.
  • RP-1 used a different technique to lock out controls due to
    insufficient avionics that kOS didn't know about. kOS bypassed
    this lockout and still controlled the vessel anyway. This is no
    longer the case.
    pull request.
  • PartModule:SETFIELD now works properly with the new type of slider
    widget that robotic parts use in KSP 1.7.x. KSP introduced a new
    type of slider widget that presents false information when kOS tried
    to obey its min, max, and detent values, those being only dummy
    placeholders for these types of sliders, not actually populated with
    the real values. For these sliders, the real limit values come from
    another field, requiring a more indirect method call to get the information.
    pull request.
  • GUI windows no longer use the KSP control lock system to emulate
    keyboard focus, instead relying on the built-in Unity IMGUI
    focus rules for widgets, thus they won't 'steal focus' as much.
    pull request.

Engines and KSP 1.7 compatibility

01 May 20:21
Compare
Choose a tag to compare

for KSP v1.7 Downloads this release

Mostly this was motivated by a need to get an officially
recompiled-for-KSP-1.7 version out there (even though the previous
version worked on KSP 1.7, it wasn't officially compiled for KSP
1.7.)

Along the way there were one or two bug fixes and documenation
cleanups.

BREAKING CHANGES

  • Not that we know of, unless you were unaware that some of
    the bugs fixed were in fact bugs and had written a script
    to expect that behaviour as normal. (Read the bug fixes
    below to be sure.)

NEW FEATURES

  • Support of multiple-at-the-same-time engines that exist in
    some mods (but not in stock, as far as we can tell). Stock
    contains single engines in a part, and multi-mode engines
    in a part (where only one of the engines in the part is
    active at a time, i.e. wet/dry mode engines or jet/rocket
    mode engines). But some mods contain parts that have more
    than one engine in them that are selected at the same time,
    rather than toggle-switched like the stock multi-mode engines.
    One example is the RD-108 engine that the RealEngines mod
    provides. Its main "straight" engines are one Engine Module,
    and its smaller "gimbal" engines around the edge are a second
    Engine Module. Both modules are active at once and need their
    information aggregated to work with kOS's "an engine part is
    just one module" system. This PR does so.
    pull request
    Special thanks to first time contributer RCrockford for doing
    all the legwork on this
    .

BUG FIXES

  • The behaviour of LIST ENGINES in regards to multi-mode engines
    was restored to what it was supposed to have been. Becuase of a
    small change KSP made, it's been wrong since KSP 1.5, apparently.
    Prior to KSP 1.5 it worked correctly by giving a list that contains
    one entry in the LIST ENGINES per engine. But since then it has been
    returning 3 duplicate instances in the list per each multi-mode engine.
    This release fixes it, and the previous correct behavior is restored
    (just returning one, not three).
    The problem was discovered during regression testing of
    the pull request,
    so the fix is inside that same pull request.
  • kOS could be rendered completely inert and broken if other mods not
    under kOS's control had broken DLL files. Specifically, kOS would
    abort partway through initializing itself if any other DLL file in the
    entire KSP game had failed to load during the KSP loading screen. kOS
    has a "reflection" walk through all the classes that hadn't accounted
    for the fact that .net apparently keeps a null stub of a class in memory
    after a class fails to load, rather than it just not existing at all
    like one would expect.
    pull request
    (This was discovered with KSP 1.7 because KSP 1.7 broke some other
    mod's DLLs making them not load, but the problem was actually there
    all along waiting for some DLL file to trigger it.)
  • Reworking the position of the Connectivity Manager Dialog box.
    Our exploratory reverse-engineering of just what the undocumented
    arguments to KSP's MultiOptionDialog mean, which was used to move the
    box to fix issue 2456
    were still wrong. They didn't do exactly what we thought they did.
    (The misinterpretation became relevant when the player has UI scaling
    set higher than 100% and that pushed the dialog box off screen.)
    Thanks to contributor madman2003 for doing more reverse-engineering
    on this and submitting the fix.

    pull request
  • Fix to bug where kOS scripts could no longer SET TARGET to a
    Celestial Body and could only set targets to vessels or parts.
    This bug was introduced in the previous release of kOS by a
    hamfisted typing error while fixing the fact that Body wasn't
    serializable. It was an error that unfortunately didn't result
    in any noticable problem when compiling or testing, as it
    only removed the Body's declaration that "I am the kind of class
    that knows how to be a target" and it affected nothing else.
    pull request
  • Several small documentation edits:
    pull request,
    pull request,
    pull request
  • Trying to toggle the panels value on or off would result
    in infinite log spam if the ship contained a fixed undeployable
    solar panel like the OX-STAT. kOS was watching for the existence
    of ModuleDeployableSolarPanel to see if the part could be deployed
    or not, but apparently at some point KSP started defining all
    solar panels as having ModuleDeployableSolarPanel, even if they're
    not actually deployable. Now kOS doesn't treat the panel as
    deployable unless it also has its animation property defined in
    addition to claiming to be a ModuleDeployableSolarPanel.
    pull request