- Updated fonts, Thanks @MrOnak
- Now runtime errors show source location and call stack trace (Github issues #186 and #210). Example:
Tried To push Infinity into the stack.
At MyProgramFile2 on Archive, line 12
PRINT var1/var2.
^
Called from MyProgramFile1 on Archive, line 213
RUN MyProgramFIle2("hello").
^
Called from StartMission on Archive, line 2.
RUN MyProgramFile1.
^
_
- (WHEN and ON) Triggers that are taking longer than an Update is meant to take, and thus can freeze KSP are caught and reported (Github issue #104). Gives the user an explanatory message about the problem.
- WARNING: Because of a change that had to be done for this, it is Highly recommended that you increase your InstructionsPerUpdate setting in config.xml to 150% as much as it was before (i.e. from 100 to 150, or if it was 200, make it 300.).
- Multiple Terminal Windows - possible to have one open per CPU part. (Github issue #158)
- "rename" was deleting files instead of moving them. (Github issue #220).
- Was parsing array index brakets "[..]" incorrectly when they were on the lefthand side of an assignment. (Github issue #219)
- SHIP:SENSORS were reading the wrong ship's sensors sometimes in multi-ship scenarios. (GIthub issue #218 )
- Integer and Floating point numbers were not quite properly interchangable like they were meant to be. (Github issue #209)
- Fixed an issue with Dependancies that kept kOS modules from registering
- BREAKING: Commrange has more or less been removed from stock kOS, we realized that most of the behavior of it was copied by other mods and was invisible to users
- BREAKING: All direction references are now relative to the controlling part, not the vessel, this will only break on vessels there these two directions are not the same.
- BREAKING: Direction:Vector will always return a unit vector.
- BREAKING: Body:Velocity now returns a pair of orbit/surface velocities just like Vessel:Velocity does. (previously it returned just the orbit velocity as a single vector.)
- BREAKING: Direction*Vector now returns the rotated Vector, and vectors can be rotated with DIRECTION suffix.
- BREAKING: DOCKINGPORT:DOCKEDVESSELNAME is not DOCKINGPORT:DOCKEDSHIPNAME
- SHIP:APOAPSIS and SHIP:PERIAPSIS are deprecated for removal later, you can find them both under SHIP:OBT
- SHIP:VESSELNAME is deprecated for later removal, use SHIP:NAME or SHIPNAME
- Added the ability to get and set the current timewarp "Mode" either RAILS or PHYSICS
- Added Boot files that will run when you get to the pad automatically, you select which one will run in the VAB thanks @WazWaz
- Vessels and Bodies now can be used interchangeably as much as possible.
- Three new prediction routines for finding state of an object at a future time:
- POSITIONAT( Object, Time ).
- VELOCITYAT( Object, Time ).
- ORBITATAT( Object, Time ).
- you can now get the FACING of all parts.
- ITERATOR:END is now split into :NEXT and :ATEND
- Direction can now always return a proper vector.
- IE SHIP:FACING returned V(0,0,0) before
- Added a 3d Drawing tool for letting you draw lines and labels.
- Added a new and improved file editor so the edit command actually works again in game!
- Added the ability to switch to MapView and back in code
- ACTIVESHIP alias links to the ship that is currently under user direct control
- added GEOPOSITION suffixes BODY and TERRAINHEIGHT
- due to issues with the new version of RemoteTech, you will always have a connection available for use with kOS.
- if you have a target and attempt to set a new target and that fails, you would no longer have a target
- increased power requirement of the kOS Module
- Bodies are now targetable
- MAXTHRUST no longer includes flamed out engines
- resource floating values are now truncated to 2 significant digits to match the game UI and behavior
- files saved to the local volume maintain their linebreaks
- radar altimiter now returns a double
- fixed an issues where setting some controls blocked the rest.
- allow empty bodies on {} blocks
- locks called from another lock are not correctly recognized
- Neutralizing the controls will clear the values of all controls.
- fixed node initialization
- Better resource processing
- LIST:COPY returns a kOS type that you can actually use
- ORBIT:TRANSITION returns a string type that you can actually use.
- Comments in code dont cause data loss on load/save
BREAKING: DOCKINGPORT:ORIENTATION is now DOCKINGPORT:FACING
- Fixed Terminal linewrap @ the bottom of the terminal
- Fixed "Revert to Launch" button, it was blowing up the world and not allowing control before
- Fixed LOCK s in subprograms
- Fixed RemoteTech integration blowing up everything
- Fixed flight controls not releasing when they should
- Disabled RemoteTech Integration while RT development is stalled
- Fix exception when trying to type a multiline instruction in the interpreter
- srfprograde is available as a new shortcut
- BODY now has an OBT suffix
- Parts now have a SHIP suffix
- You can now work with your target if that target is a docking port
- Added a new PRESERVE keyword for repeating a trigger.
- all active triggers are removed when a script is finished.
- the aforementioned new parser by @marianoapp with all of its speed improvements and other goodies.
- There's a config SpecialValue that can be used to control how some of the mod features work, like setting the execution speed, the integration with RT2 and starting from the archive volume.
- The terminal screen can be scrolled using PageUp and PageDown
- Negative numbers/expressions can be written starting with a minus sign, so no more "0-..."
- Added ELSE syntax!
- Added ELSE syntax!
- Added NOT syntax!!
- Added List square brackets [] as list subelement accessor
- you can use variables as arguments for PRINT AT statements
This version adds a new 0.625m part. Thanks to SMA on this neat new addition.
- it works as a kOS computer core
- has 5000 units of code space
- as a smaller part it is unlocked with "precision engineering" in career mode.
- also has a light that will be controllable before the actual release
Bug fixes
- Cannot "set" a variable that later will become a "lock" #13
- Sanitize values sent to KSP #14
- Strange order of operations: "and" seems to evaluate before ">" #20
- moved some names back to "kOS"
- Work on some structure's ToString return.
- Parameters now get passed in the correct order
- Ship resources no longer generate an error if they arent present
- Ctrl+C now interrupts correctly once again.
- ETA:TRANSITION returns the correct time.
- Better handling of types.
-
BREAKING: Disk Space is now defined by the kOS part, existing missions might have the available space reduced to 500. (whaaw)
-
BREAKING: Vector * Vector Operator has been changed from V( X * X, Y * Y, Z * Z) to a dot product.
-
Added Ctrl+Shift+X hotkey to close the terminal window (jwvanderbeck)
-
Improved RemoteTech integration (jwvanderbeck) Current state is discussed https://github.com/erendrake/KOS/pull/51
-
Added engine stats to the enginevalue
- ACTIVE (get/set)
- ALLOWRESTART (get
- ALLOWSHUTDOWN (get)
- THROTTLELOCK (get)
- THRUSTLIMIT (get/set)
-
Added to BODY:ATM:SEALEVELPRESSURE
-
Added a DockingPort Part Type, You can access it by "LIST DOCKINGPORTS IN ..."
-
Added PART:CONTROLFROM which centers the transform on that part.
-
Vector now has two new Suffixes
- NORMALIZED - Vector keeps same direction, but will have a magnitude of 1.
- SQRMAGNITUDE - https://docs.unity3d.com/Documentation/ScriptReference/Vector3-sqrMagnitude.html
-
New math operators involving Vectors
- VECTORCROSSPRODUCT (VCRS)
- VECTORDOTPRODUCT (VDOT)
- VECTOREXCLUDE (VXCL) - projects one vector onto another
- VECTORANGLE (VANG) - Returns the angle in degrees between from and to.
-
Direct control of vessel and nearby vessels (SHIP:CONTROL, TARGET:CONTROL)
- GETTERS
- YAW - Rotation (1 to -1)
- PITCH - Rotation (1 to -1)
- ROLL - Rotation (1 to -1)
- FORE - Translation (1 to -1)
- STARBOARD - Translation (1 to -1)
- TOP - Translation (1 to -1)
- ROTATION - Vector
- TRANSLATION - Vector
- NEUTRAL - bool,
- MAINTHROTTLE (1 to -1)
- WHEELTHROTTLE (1 to -1)
- WHEELSTEER (1 to -1)
- SETTERS
- YAW - Rotation (1 to -1)
- PITCH - Rotation (1 to -1)
- ROLL - Rotation (1 to -1)
- FORE - Translation (1 to -1)
- STARBOARD - Translation (1 to -1)
- TOP - Translation (1 to -1)
- ROTATION - Vector
- TRANSLATION - Vector
- NEUTRALIZE - bool, releases vessel control,
- MAINTHROTTLE (1 to -1)
- WHEELTHROTTLE (1 to -1)
- WHEELSTEER (1 to -1)
-
changing systems vessel load distance
- LOADDISTANCE get/set for adjusting load distance for every vessel
- VESSELTARGET:LOAD bool - is the vessel loaded
- VESSELTARGET:PACKDISTANCE - Setter for pack distance for every vessel.
-
Added RANDOM() generator (0 - 1)
-
Power requirements are now directly tied to the active volume's size, the ARCHIVE's size is unlimited so it is capped at the equivalent of 50KB.
-
Thanks to enkido and jwvanderbeck for your help.
-
BREAKING: BODY, SHIP:BODY, TARGET:BODY now all return a Body structure rather than the name of the body
-
BREAKING: Removed NODE:APOAPSIS and NODE:PERIAPSIS. They are now available in NODE:ORBIT:APOAPSIS
-
Basic RemoveTech Intergration
-
Added VOLUME:NAME to getting the current volume
-
Lists can now be populated with basic data that you can loop over or index Full Info
- Bodies (eg Kerbin, Mun, Duna)
- Targets - All Vessels other than current
- Engines - Engines on the craft
- Resources - All Ship Resources
- Parts - All Ship Parts (slow)
- Sensors - (eg Pres, Grav, Accel)
- Elements - All flights connected to the active vessel
-
A Lot of bug fixes and refactoring
-
Constants (eg G, E, PI) are now retrieved using CONSTANT() rather than spreadout.
-
Commands resolve in order of descending specificity, rather than in the pseudorandom order they were in before
-
Added Math operators LN, LOG10, MIN, MAX.
-
Compatible with KSP 0.23 Thanks to Logris and MaHuJa for Commits
-
Added List() which creates a collection and the following commands
- ADD - Adds the value of any variable
- CONTAINS - Tests and returns if the value exists in the list
- REMOVE - removes the item from the list if the list contains the item
- LENGTH - returns a count of the items in the list
- COPY - creates a copy of the list
- You can also index into a list with # (ie LIST#1 gives you the second item in the list).
-
Added the following stats
- OBT:PERIOD - http://en.wikipedia.org/wiki/Orbital_period
- OBT:INCLINATION - http://en.wikipedia.org/wiki/Orbital_inclination
- OBT:ECCENTRICITY - http://en.wikipedia.org/wiki/Orbital_eccentricity
- OBT:SEMIMAJORAXIS - http://en.wikipedia.org/wiki/Semi-major_axis
- OBT:SEMIMINORAXIS - http://en.wikipedia.org/wiki/Semi-major_axis
- VOLUME:NAME - Name of the current Volume
- ETA:TRANSITION - Seconds until next patch
- OBT:TRANSITION - Type of next patch: possibilities are
- FINAL
- ENCOUNTER
- ESCAPE
- MANEUVER
-
Adding a few BODY members
- RADIUS
- MU - G * Body Mass
- G - Gravitational Constant
- ATM atmosphere info with sub elements
- EXISTS
- HASOXYGEN
- SCALE
- HEIGHT
-
Added ORBIT to NODE
-
Added the following commands
- UNSET #VARIABLE - remove the variable, ALL removes all variables Thanks a1070
- FOR #USERVARIABLE IN #LIST takes a list and loops over it, exposing each item in the collection as a user defined variable
-
New close window action binding
-
Performance fixes
- Fixed a bug where you couldn't have an IF or WHEN inside an UNTIL
- Added INLIGHT
- Fixed a bug where AND and OR wouldn't work on boolean values
- New expression system added
- Version Info can be grabbed programatically
- Targeting of bodies, getting stats
- Get values from other ships, just like current ship
- Send commands to chutes, legs and solar panels individually
- Round function to x decimals, modulo
- Setting values on structures
- Vectors now use double precision
- Get apoapsis and periapsis of a node
- Problems adding R() structures to headings
- Some commands wouldn't allow dashes in filenames
- Editor X-scrolling bug fixed
- Delimeter matcher would cause error inside comments
- Editor was crashing when you hit end
- Error messages wouldn't have line numbers if the error occurred inside curly braces.
- For nodes, :DELTAV:MAG now works correctly. Note that :DELTAV is now effectively the same as :BURNVECTOR
- You can now use right & left arrows to edit lines in immediate mode
- There is now a LEGS binding for landing legs, use it just like SAS or GEAR
- Same with CHUTES for parachutes
- Couldn't switch to a volume using it's number
- All curly braces were horribly horribly broken
- Maneuver node support added
- Time structure added
- Programs that call other programs no longer give multiple "Program ended" messages
- Official release of mod interoperability
- New altitude radar system
- Improved whitespace support
- Trigonometry Functions ARCSIN, ARCCOS, ARCTAN and ARCTAN2 are now implemented.
- Programs can now contain parameters
- You can now get the distance to an arbitrary latlng with :distance
- Cpu clock speed has been raised from 1 to 5.
- Variables now persist
- Ranges have been increased
- Simplified steering system
- Support for driving your rover wheels to a specific location
- Support for surface vectors
- Rovers can be steered towards arbitrary geo coordinates
- Preliminary support for 3rd party mod integration (Still testing)
- Bug fixes
- Rover bindings
- Range limits for archive drive
- Bug fixes
- Trig functions
- ABS function
- Fix for the matching on boolean operators
- Support for AND and OR in IF statements added
- Fix for nested IF statements
- Fixes locking and waiting for compound values
- Fixes handling of compound values in certain circumstances
- Fixes a bug dealing with the Archive folder
- Bug fixes
- Interact with subelements of R()
- Targetting
- Radar altitude
- Plaintext editing
- Toggle terminal & power from action group
- Maximum thurst variable
- Surface speed variable
- Fix for the typing when not focussed bug
- Fix for file renaming not checking for previous existing file
- Resource tags re-enabled
- Support for limited sub-expressions within R() expressions
- Added non-qwerty keyboard support
- Fix for laggy systems dropping typed characters
- Fix for the case of texture paths that would break on linux
- Implemented a friendly message that your textures are missing
- Fixed an issue that would kill saves
- Added support for maneuver nodes from Ehren Murdick's code
- Added stage:solidfuel from Pierre Adam's code
- Support for loops
- Support for the IF statement
- Support for the BREAK statement
- Initial public release!
- Execution system redesigned to be more heirarchical
- Added support for compound statements
- Successful test of synchronized orbiting
- First trip to orbit successfully done
- Terminal created
- KerboScript designed and implemented
- VAB Part created
- Flight stats and bindings created