oolite/Doc/CHANGELOG.TXT

3273 lines
153 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

Changes between Oolite 1.88 and Oolite 1.90:
General:
========
* Custom sounds for specific lasers and specific hit types are
now defined.
* Increasing opacity of GUI cursor for increased visibility.
* Basic compass now changes shape when switching from planet to
station and vice versa.
* Cloaked ships do mass lock the player now.
* The number of turrets on a ship, if they exist, is now shown on
the Ship Library screen.
* Entities designated as excepted for collision with the player will
now not limit the torus speed variability.
* The Javascript runtime size can now be adjusted by the user.
* Default diffuse light model switched to Oren-Nayar instead of
Lambert.
* Light radiance and exposure introduced on all main shaders.
* Illumination mapping of the dark side of custom planets is now
supported on the diffuse map's alpha channel.
* Custom planets now support normal maps, with specular on their alpha
channel.
* Visual improvements made on atmospheres. Lave has now a blue
atmosphere like Earth, while Reorte now has a blue planet
terminator.
* Visual improvements made on planets, which now use correct
reflectivity values for water and land masses for more realistic
specular reflections.
* New nav and witchspace beacons deployed, replacing the previous ones.
* Added the ability to limit star and nebula textures to particular
galaxies, providing the opportunity to make galaxies more visually
unique.
* View Keyboard Settings item from start menu has been replaced with
Game Options, which are now accessible from the get-go rather than
after starting a game first.
* Requesting 16 bits per color component from OpenGL during
initialization is now an option (-16bpcc startup parameter).
* Keyboard controls to cycle and select MFDs in reverse.
* Mac port: Right mouse button to center pitch and roll should now
work the same way as in the Windows and Linux ports.
* Pressing Ctrl while handling the external camera view will now slow
rotation and zoom speeds down. Allows for more precise external
camera control.
* Changed appearance of Lave to reflect the rain forests mentioned in
its description.
* Windows port: CPU type and clock speed are now reported at the log
header.
* Added docking clearance joystick button control to stickmapper.
* Added joystick button support for docking computer (standard and fast).
* Default ambient light level set to 0.1.
* Added filmic tonemapping to default shaders.
Expansion pack development:
===========================
Modified Plists:
----------------
* planetinfo.plist: Reactivated air_color and added air_color_mix_ratio
and terminator_threshold_vector keys.
* planetinfo.plist: Added texture_normspec key for specifying the normal
and specular/gloss maps for custom planets.
* equipment.plist: Added the fx_shot_miss_name, fx_shot_hit_name and
fx_weapon_launch_name keys for controlling weapon sounds for individual
weapons.
* customsounds.plist: Added the following keys to point to the new
individual weapon and ecm-proof missile launch sounds:
[mil-laser-player-laser-miss], [mil-laser-player-laser-hit],
[mining-laser-player-laser-miss], [mining-laser-player-laser-hit],
[beam-laser-player-laser-miss], [beam-laser-player-laser-hit],
[ecm-missile-launch].
* shipdata.plist: Added the escape_pod_rescue_time key.
* Added support for equipment-overrides.plist.
Scripting:
----------
* Planet terminator color and extent is now script controlled via the
'terminatorThresholdVector' JS planet property.
* Atmosphere color for planets is now fully script controlled via
the 'airColor' and 'airColorMixRatio' JS planet properties. No more
of that "always white" atmospheres of 1.88.
* Implemetned an override mechanism for the amount of time a rescue
in an escape pod takes by means of the 'escapePodRescueTime' JS
player property.
* Added activeMissile property to allow scripts to know which of the
missiles is currently selected.
* Added 'isSunlit' to JS entity, allowing scripts to determine
whether entity is in the shadow or not.
* Added playerWillBuyNewShip and playerWillReplaceShip world events.
Replacing a ship is now considered a different event to buying one.
* Added EquipmentInfo.calculatedPrice property. This is the calculated
price of the equipment item, if the equipment item utilises the
updateEquipmentPrice() condition script function.
* Added amount paid parameter to playerBoughtEquipment event. Gives
instant visibility of the actual price paid by the player, taking
into account any rebates or adjustments in the purchase.
* addShipToShipyard can now look for and add lasers from extras array.
This is so a laser weapon can be included in "extras" array and added
to the ship.
* Station shipyard is now accessible from Javascript (station.shipyard).
* World event "commsMessageReceived" will now be triggered when the
"player.commsMessage" function is called. The "sender" argument will
be null in this case. Scripts that implement "commsMessageReceived"
will need to check for a null value, otherwise an error will occur.
Bug fixes:
==========
* Fixed occasional equipment incompatibility references not being
enforced, depending on the order of loading.
* Fixed kg and g unit commodities not being removed when player ship was
being replaced or when a new one was bought and excess kg and g
quantities beyond station's capacity remained unsold during the cargo
selling phase.
* Fixed RGB to HSB conversion in OOColor class.
* Fixed blocked station queues in case where ship in launch queue was
too big for a dock and could not be launched.
* Fixed randomInhabitantsDescription not being able to return the
plural form and fixed a typo in its error message.
* Fixed some quite important typos in the populator script.
* Fixed scoopOverride causing scoop sound to play once when set to false.
* Fixed case where an empty cargopod would be generated for specific
quantities of precious metals and gemstones.
* Fixed an 'index out of range' error on F5 Status screen.
* Fixed issue where sometimes no rows would be selected in the shipyard
screen.
* Docks scripted to not accept player docking now result in autopilot
docking rejection also in the case of fast autodock.
* Fixed native exception when a dictionary was passed to OOIsNumberLiteral
by OOJSSystemInfo.
* Fixed dust color not getting mixed with 50 percent white, as intended
when sun color was set manually.
* Fixed effectRemoved event not triggering when hyperspacing.
* Fixed bug where credits could be generated by 'failing to buy'
multiple mount lasers.
* Fixed planets' dark side always being completely dark, regardless of the
ambient light level setting.
-------------------------------------------------------------------------------
Changes between Oolite 1.86 and Oolite 1.88:
General:
========
* New lighting shaders for physically accurate specular reflections
and light energy conservation.
* Improved planet lighting to make use of the new lighting system.
* New and improved shader for rendering planets' atmospheres.
* Enabled blending when rendering visual effects for increased
effects flexibility.
* Specular maps alpha channel can now be used for storing material
gloss information.
* Updates to the base and shader materials system.
* Number of supported joysticks increased to 4.
* Improved flee AI.
* Energy damage is no longer applied to player occupied escape pods.
* Linux port: Added the command line argument --systemwide-directory
to chose an installation directory other than the default /opt.
* Improved mousewheel handling. When mouse control is active,
speed change rate corresponds to mousewheel roll rate.
* Optimization: When an entity explodes outside of its visibility
range, it is no longer rendered.
* Added multi-page ability to primeable equipment manager.
* Windows DPI awareness applied to all monitors.
* Windows port: Ensure that, in the case of both an integrated and a
high-performance GPU being available, the high-performance one is
selected.
Expansion pack development:
===========================
Modified Plists:
----------------
* Introduced the gamma_correct and gloss base and shader materials keys.
* scanner_minimalistic boolean shipdata key introduced, defines a scanner
without gridlines.
Scripting:
----------
* player.ship.chartHighlightMode property.
* chartHighlightModeChanged world event.
* New mission screen properties:
"customChartZoom" sets the zoom level of a CUSTOM_CHART, must be between
1 and 4.
"customChartCentre" and "customChartCentreInLY" sets the centre point for
a CUSTOM_CHART.
* New "backgroundSpecial" options for mission screens:
"SHORT_RANGE_CHART_SHORTEST" to show the shortest distance between the
current system and destination. ANA equipment required.
"SHORT_RANGE_CHART_QUICKEST" to show the quickest distance between the
current system and destination. ANA equipment required.
"CUSTOM_CHART", "CUSTOM_CHART_SHORTEST", "CUSTOM_CHART_QUICKEST" displays a
custom chart, based on the customChartZoom and customChartCentre
properties. ANA equipment required for "SHORTEST" and "QUICKEST" options.
* New player ship scannerMinimalistic property.
* Introduced the %G###### string expander, which works like %J###, but allows
one to specify both the planet ID and the galaxy number.
Bug fixes:
==========
* Fixed issue where Station JS AI was not triggering an alertConditionChanged
event.
* Fixed issue with the primable equipment manager not being able to handle
more than 21 items.
* Fixed temperature due to air friction not rising when more than one planets
were present in the system.
* Fixed mouse control disabling keyboard speed shortcuts.
* Fixed oddities with mouse control when Caps Lock was active on view
directions other than front.
* Fixed memory leak when setting screen texture descriptors.
* Fixed erroneous behaviour when NaN was passed via script for pitch, yaw
and roll.
* playerCancelledJumpCountdown JS event now firing when starting autopilot,
* Fixed occasionally 'stuck' lighting when in witchspace.
* Fixed keyconfig.plist not being reloaded when using in-game Expansion Pack
Manager.
* Restored orange planet terminator tint, which was accidentally removed
when the atmosphere shaders were introduced.
* Player comms messages are now fully expanded before shown, just like any
other ship's messages.
* Fixed inconsistency between script and configuration files setting of sun
color.
* Windows port: On Windows versions newer than Windows 8, the correct version
is now reported in the log.
-------------------------------------------------------------------------------
Changes between Oolite 1.84 and Oolite 1.86:
General:
========
* Added number of jumps to route information on F6 and F7 screens
* Reinstated rotational velocity also for base entities.
* SDL builds: Expansion Pack Manager can now download OXZs from HTTPS
addresses.
* Economy, government and Tech Level icons added to commander load
screen information.
* Default sound volume is now set to mid-scale rather than full-scale.
* Shader now used for rendering planet atmospheres. Old style atmos
are still available at detail levels less than Extra Detail or if
the newly introduced shader is not found or fails to compile.
* -nosound command line parameter now available for those who want
their game to be silent.
* Page Up and Page Down keys are now used on all screens that can have
more than one page of information.
* Mouse wheel can now be used to control speed when mouse control is on
* Easy start scenario added - start at Tionisla with Cobra MkIII and
1000Cr.
* Oolite is now DPI-aware on Windows.
* Default ambient light level is now set to 0.25 for all core systems
* Improved planets surface appearance using Perlin3D textures when the
in-game option Graphic Detail is set to Extra Detail.
* SDL builds: Max supported resolution upped to 7680x4320. 8K-ready.
* OSX port: Entering the OXZ info screen in the OXZ Manager copies
the OXZ's info URL to clipboard automatically.
* Test Release builds: The planet's relief intensity can now be
adjusted using the user defaults "p3dnsf" key, which takes a float
value. Default is 1.0.
Expansion pack development:
===========================
Modified Plists:
----------------
* descriptions.plist: Contains "sysdata-line-1" thru "sysdata-line-16"
for controlling the layout of information on the F7 system data screen.
* hud.plist: In the drawTargetReticle: selector section, the keys
target_rgba, target_sensitive_rgba and wormhole_rgba can be used to set
the target reticle colors for standard targets and wormholes.
* hud.plist: In the message_gui section, text_color and text_comms_color
can be used to set the color of standard and communication gui messages
respectively.
* hud.plist: In the message_gui section, background_rgba can now set the
background color of the message gui area.
* hud.plist: In the message_gui section, background_automatic can now be
used to define the behaviour of the message gui. Default is yes, which
makes the background fade out together with the messages. If set to no,
the background persists while on in-flight screens.
* hud.plist: In the drawWeaponsOfflineText: selector section, the key
rgb_color can be used to set the color of the Weapons Offline text.
* hud.plist: In the drawFPSInfoCounter: selector section, the key
rgb_color can be used to set the color of the FPS and objects info text.
* planetinfo.plist: The boolean key perlin_3d can be used for each system
to determine whether a Perlin3D or a normal texture will be used for it.
* equipment.plist: A "display_color" property has been added, which
controls the color used to display this item on the Ship Outfitting and
Status screens.
Scripting:
----------
* player.ship.nextSystem property.
* player.ship.compassType read/write property (use with caution).
* player.ship.compassMode read/write property (use with caution).
* player.ship.massLockable property.
* player.ship.primedEquipment read/write property.
* player.ship.addCargoEntity(cargoEntity) method allows cargo ship entities
to be added to the player ship directly when in space.
* station.canDockShip(shipEntity) method.
* playerDockingClearanceGranted world event.
* playerDockingClearanceCancelled world event.
* playerChangedPrimedEquipment world event.
* Scripts are now notified of the change to forward view when a witchjump
begins.
* player.ship.requestDockingClearance(station) method can be used to request
docking clearance from a particular station.
* player.ship.cancelDockingRequest(station) method can be used to cancel a
previous docking request at a particular station.
* Sound.musicSoundSource() method, returns the music sound source object,
enabling direct control on music (volume etc.).
* Added optional volume gain parameter to the Sound.playMusic function.
Gain is capped between 0.0 and 1.0 and is relative to the master gain
* player.ship.reticleColorTarget can set the target reticle's color.
* player.ship.reticleColorTargetSensitive can set the target reticle's
color when the target is lined up for a direct hit.
* player.ship.reticleColorWormhole can be used to set the reticle color
when a wormhole is targeted.
* player.ship.messageGuiTextColor property now sets the color of the
standard gui messages.
* player.ship.messageGuiTextCommsColor property now sets the color of
the gui messages that are tagged as communications.
* selectedMFDChanged and mfdKeyChanged scripting events added.
* player.ship.setPrimedEquipment method now available.
* weaponsSystemsToggled script event handler. Takes the new weapons
state as argument.
* player.ship.compassTarget is now a read/write property.
* EquipmentInfo.infoForKey().displayColor can read and write the display
color used to display equipment items on the ship outfitting and status
screens.
* global.getScreenBackgroundForKey() and global.setScreenBackgroundForKey()
added to allow scripting access to background image information held in
screenbackgrounds.plist.
Bug fixes:
==========
* Fixed Advanced Space Compass not breaking when damaged.
* Fixed fee column alignment in passenger and parcel contract screens.
* Fixed weird behaviour when a startup scenario planet name could not be found
in planetinfo.plist.
* Fixed custom population description duplication in system data screen.
* Fixed exception when accessing shipyard in interstellar space.
* Fixed equivalentTechLevel sometimes returning NSNotFound.
* Fixed MFDs resetting to number 1 when a HUD change occurred.
* Fixed exception when accessing the market screen while docked in
interstellar space.
* Fixed event order - now playerEnteredNewGalaxy is executed correctly before
shipWillExitWitchspace.
* Fixed broken concealment behaviour.
* Fixed native exception when a commander dictionary was requested while not
docked.
* Linux builds: Fixed freezes when using GNUstep 1.24.9 or later.
* Fixed adjacent systems distances not being equal on F6 and F7 screens.
* Fixed planet strings searching not targeting found planets and inability to
use Alt + arrows during planet string search.
* Fixed crash due to uninitialized missile_list (issue #204).
* Fixed issue where, when there is more than one page of ships available on the
Ships For Sale screen, and the display is moved back one page, information
for the first ship on the page will be displayed, even though the "More"
item is actually the selected item.
* Fixed mouse control issues where mouse was not reset properly when external
camera was toggled on and off (issue #237).
* Fixed light color on the system data screen being that of the current system
than that of the system shown (issue #239).
* Fixed awarding bounty even when the player died while trying (e.g. when
crashing into an asteroid).
* noteGuiWillChange notification is now emitted also when going to short and
long range chart screens (issue #233).
* Windows port: Fixed broken first-time window resize when starting the game
with -nosplash.
* Fixed crash in JavaScript profiler.
* Fixed bogus warning about not setting v-sync even when v-sync was corrrectly
set.
* Fixed potential mode duplication in screen modes list, which in some cases
could result in not being able to select desired fullscreen resolution
properly.
* Fixed nova screen backgrounds when traversing route (issue #225).
* Fixed clouds not being drawn on the system data sceen.
* Windows port: Reset to desktop resolution is now forced on exit, if the game
was run fullscreen and in a resolution different to that of the desktop.
* OSX port: Fixed broken target reticle direction cue indicator.
* OSX port: Mouse can now be reset.
* Route is not calculated on every frame now when on the Chart screens; it is
calculated only when the departure system, destination system or Advanced
Navigation Array mode change.
-------------------------------------------------------------------------------
Changes between Oolite 1.82 and Oolite 1.84:
General:
========
* Added shipdata property to OXP verifier
* HUD messages can now be drawn under the console messages
* Tumbling ships on demo screens now do so in a more interesting way,
more reminiscent of the original BBC Elite way of tumbling
* All ships can now carry multiple lasers
* Removing the entire trumbles array from the savefile is now recognized
as a cheat
* Atmospheric fog is now applied also with shaders enabled
* Windows only: Entering the OXZ info screen in the OXZ Manager copies
the OXZ's info URL to clipboard automatically
* Added mobile external view camera
* Added ability to inspect system information for all systems along ANA route
* Added distance information to system info screen
Expansion pack development:
===========================
Modified Plists:
----------------
* planetinfo.plist: link_color can be defined both ways in interstellar space
for gradient effects (also works via JS)
* planetinfo.plist: Star and nebula count multipliers are now floats rather
than unsigned integers, making multipliers like 0.5 etc. possible
Scripting:
----------
* Main planet radius can now be set by script if not in the same system
* Allow "concealment" parameter in systeminfo for selectively displaying information
about a system
* playerDockingClearanceExpired world event
* player.ship.hudAllowsBigGui property
* shipDumpedCargo ship script event
* oolite.resourcePaths property for retrieving the list of currently running OXPs
in Javascript
* player.audioMessage method, speaks a message without displaying anything on screen
* player.stopAudioMessage method, stops any message currently being spoken
* Allow setting of null values (i.e. unset) for sun/corona properties
* playerStartedAutopilot event now fires after the docking music has started playing
* player.ship.infoSystem property
* infoSystemChanged world script event
Bug fixes:
==========
* Fix some full-screen resolution changes on Windows
* Fix entry of '*' OXZ filter taking screenshot
* Fix nova system description
* Fix exhaust drawing when far from origin
* Fix some docking computer/queue problems
* Again allow commodity name as well as key in cargo_carried
* Fix texture generation on secondary planets inheriting too many properties from primary
* Fix bug with equipment scripts and can_carry_multiple
* Scanner "V" now follows FOV changes
* Comms / console GUIs are now properly repositioned on screen resize
* Tidied up drawing of galactic chart so that behaviour is consistent on chart based
mission screens
* Fixed mission screen charts to show routes properly
* Fixed rare case of memory leak under Windows, when the game was getting minimized by
means of Windows hotkey combinations while running in fullscreen
* Cargo hold status is now reported correctly on fuel scoop icon also when docked
* Missile desired speed is now set to maximum speed on launch
* Fixed bug in search for connected systems while galactic jumping
* Fixed rare exception that could happen when switching to a player ship without missiles
and back
* More than one connected joysticks are now listed correctly in the stick mapper screen
* Fixed repair of cargo space requiring equipment requiring cargo space as well
* Fixed rare case of not being able to set max cargo space capacity via JS
* Fixed inability to refresh equip ship screen in the cases where buying a laser would
result in the player remaining with less cash than the laser's price
* Fixed missile AI apparently ignoring cloak activation
* Fixed trumble mission so it ends after nova if not before
* Fixed case of unintended reset to stick mapper first page when setting or unsetting
stick functions
* Credit values for contracts in the manifest screen are now formattable
* Fixed distorted sound on some Windows 32-bit systems
* Applied tentative fix for occasional null docking instructions in priority AI
JS script
* Fixed potential energy gain when shield boosters got damaged
* Fixed incorrect model reference in alloy shipdata definition
* Fixed potential division by zero crash in station market creation
* Capacities are now honoured for main system market
* Fixed long standing cached octree issues, resulting in interesting and quite
hard to reproduce collision bugs
* Fixed mission screen when background special is a chart so the chart is fully zoomed
in (for SHORT_RANGE_CHART) or fully zoomed out (for LONG_RANGE_CHART)
* Fix for chart on Mac retina screen
* Fixed crash when attempting to modify goods properties on a nil station
* Fixed incorrect parcel contracts indexing when more than ten parcel contracts
were present
* Fixed problem with tangent vectors not being orthogonal to normals
* Fixed a bug where diving into the atmosphere and then resetting player ship
position into open space via script would not reset the air resistance factor
to zero, with catastrophic results on sun glare, fog and cabin temperature
* Fixed bug where turning off the hud in a multi-page status screen would result
in the More and Back selections remaining, even if the equipment could fit in one page
* Fixed inability to remove OXZs with ogg files in the Music folder on Windows
* Fixed some Alt-Tab and fullscreen handling issues on Windows
* Fixed applying air resistance to the camera viewpoint rather than the ship
* Fixed sudden switch to black sky in certain external views in atmosphere, when the
camera was positioned far away from the ship
* Fixed bug where contracts would disappear upon assignment if the sender's name was
already existing in a different contract. Senders of the same name are now possible
* Fixed right arrow key (More) not working on status screen with big GUI enabled
* Fixed stray soft edge on Boa model
* missile_role had 10% chance of not being set for non-Thargoid ships (random missile
role was selected instead). This is fixed and changed so that the 10% chance of
random missile role selection happens only when auto_weapons is set in a ship's
shipdata.plist entry
* Removed inconsistency in Windows build, where Shift+Q was used as instant quit
-------------------------------------------------------------------------------
Changes between Oolite 1.80 and Oolite 1.82:
General:
========
* More AI improvements and adjustments. Extensive rebalancing of
combat difficulty for more interesting fights
* Laser damage and heating rates adjusted
* Missile damage adjusted
* Heat cooldown slower
* Installation time now on equipment purchase screen
* OXZ installer now updates dependency check after each install
* Added zooming, scrolling galaxy chart unifying "short range" and "long range"
options
* Internal damage from missiles now more serious
* Damaged equipment now sorts to the top of the status screen
* Adjustments to acceleration, deceleration and top speed of torus drive
* AI reaction to being attacked by ships they can't scan is more useful
* Removed some differences between NPCs and player ship performance
* Advanced Navigational Array now allows for jumping to the next system on
a long route without having to retarget
* Stations will warn if player tries to dock without required clearance
* Docking clearance now defaults to 'on' for new games (no effect on
existing games)
* Keyboard settings can be viewed from game options
* Scrape damage now does not automatically mine asteroids
* Extra detail graphics mode now has more detailed planet textures
* Field of View added as a game option
* Windows port: Improved multi-monitor support
* Windows port: Added support for grabbing mouse inside the game window when
mouse control is active
* Windows and Linux ports: V-Sync can now be controlled via user preferences
Graphics:
=========
* ECM bursts now have an effect on the scanner
* Spacedust fades out when entering atmosphere
* New and more varied explosions
Expansion pack manager:
=======================
* Installation status now updated without having to restart manager
* Missing requirements will be installed automatically if possible
* Ability to filter expansion pack lists by pressing 'f'
* Can view additional information on packs by pressing 'i'
* Can extract a pack to an OXP in your AddOns folder by pressing 'x'
* Update date now visible in OXZ manager
Expansion pack development:
===========================
General:
--------
* mission.setInstructions() can now take an array as its first
parameter. The first element will be a heading on the manifest
screen, with the remaining elements being mission entries.
If multiple entries have the same heading, they are grouped.
* Subentities now inherit their parent's entity personality - useful
for shader randomisation.
* New trade-goods.plist allowing definition of customised trade goods
* New market scripts for JS-based modification of markets
* OXP Developer builds will now warn about deprecated code in OXPs.
* Changes to planet properties made by OXPs will be reverted if the OXP
is uninstalled
* Scenarios may now exclude OXPs and selected core plists
* Maximum star size increased significantly
* Implementation of many core equipment items modified to allow
greater customisation. No difference to effect.
* Waypoints may now have [0,0,0,0] orientation for a non-directional waypoint
New Plists:
-----------
* global-settings.plist: new plist file to hold some properties which didn't
belong in planetinfo.plist
* commodities.plist and illegal-goods.plist replaced by trade-goods.plist
* gui-settings.plist: allows customisation of various GUI options and
chart settings
* explosions.plist: allows custom explosion types to be created
Modified Plists:
----------------
* oolite-font.plist: new f6KernGovernment and f6KernTechLevel options
* equipment.plist: installation_time, repair_time
* equipment.plist: laser properties may be customised using weapon_info and
new laser weapons may be created
* equipment.plist: equipment may 'provide' other equipment
* equipment.plist: can_carry_multiple can be set on non-pylon equipment
* descriptions.plist: long-range-chart-title-G-S now allows chart title
to vary from system to system
Numerous changes due to unification of string formatting systems, see separate
"Format strings" section below
* shipdata.plist: market_broadcast, market_capacity, market_definition, market_monitored, market_script properties for stations
* shipdata.plist: weapon_energy property no longer affects lasers
* shipdata.plist: model_scale_factor property for easy size variations
* shipdata.plist: scanner_hostile_display_color1, scanner_hostile_display_color2
* shipdata.plist: show_damage to control sparks and other damage effects
* planetinfo.plist: all major properties are now coded into the main
planetinfo.plist rather than being generated using random numbers.
* planetinfo.plist: layer property allows overrides of planetinfo to
have different priorities and for JS and plist changes to planetinfo to
coexist more easily.
* planetinfo.plist: coordinates property for system coordinates (may not be
set by JS)
* planetinfo.plist: random_seed property for aspects still requiring random
generation (e.g. the precise detail of planet textures)
* planetinfo.plist: several new properties for customisation - planet_distance,
station_vector, sun_vector, planet_name, sun_name, population_description,
economy_description, government_description, percent_ice
* planetinfo.plist: has_atmosphere can apply to main planets
* planetinfo.plist: market_script property for systems
* hud.plist: MFDs and legends have color property
* hud.plist: allow_big_gui general property for HUDs which don't take up the
bottom six lines of the screen
* hud.plist: new drawCustomImage dial
* hud.plist: 'permanent' can be set on message_gui
* hud.plist: hyperspace destination can be right-aligned
* hud.plist: negative height/width can be applied to HUD bars
* shiplibrary.plist: condition_script property added
Properties:
-----------
* Removed manifest.liquor/wines, manifest.liquorWines, manifest.gemStones
manifest.alienItems aliases for trade goods
* ship.maxYaw, ship.maxPitch, ship.maxRoll, ship.maxThrust, ship.thrust,
ship.maxSpeed, ship.maxEnergy, ship.energyRechargeRate now read/write
* ship.collisionExceptions
* ship.cargoSpaceCapacity now writable
* ship.injectorBurnRate, ship.injectorSpeedFactor properties
* ship.scanDescription
* ship.hyperspaceSpinTime, now writable, now property of all ships not
just player
* ship.scannerHostileDisplayColor1, ship.scannerHostileDisplayColor2
* ship.subEntityRotation
* ship.entityPersonality is now writable
* equipmentInfo.provides
* player.ship.forwardShield, player.ship.maxForwardShield,
player.ship.forwardShieldRechargeRate, player.ship.aftShield,
player.ship.maxAftShield, player.ship.aftShieldRechargeRate are all
now writable.
* player.ship.injectorsEngaged and player.ship.torusEngaged
* player.ship.routeMode
* system.ambientLevel
Methods:
--------
* manifest.comment()
* manifest.setComment()
* manifest.setShortComment()
* manifest.shortComment()
* mission.runShipLibrary()
* systemInfo.samplePrice()
* ship.addCollisionException(ship)
* ship.adjustCargo(commodity,amount)
* ship.removeCollisionException(ship)
* ship.hasEquipmentProviding(eq)
* ship.dumpCargo(amount, preferredtype) second parameter
* player.ship.equipmentStatus(eqKey,true) second parameter
* SystemInfo.setInterstellarProperty(g,s1,s2,l,k,v,[m])
Events:
-------
* gamePaused and gameResumed world events (useful for sound OXPs)
* equipmentAdded and equipmentRemoved ship events
* updateEquipmentPrice(eq,price) condition script event
* allowShowLibraryShip(key) condition script event
* shipWillEnterWitchspace event has second parameter (destination)
* playerRescuedEscapePod(decicredits, reason, rescuee) event
* playerCompletedContract(type,result,fee,contract) event
* playerEnteredContract(type,info) event
* stationReceivedDockingRequest ship event now does what it says
* stationAcceptedDockingRequest new ship event
* playerBoughtNewShip has second 'price' parameter
AI Methods:
-----------
* behaviourWaitHere
Format strings:
---------------
Work has begun on replacing the %@-type formatting strings in descriptions.plist
with ones that work the same as format strings used in scripts. In most cases,
a placeholder like %@ or %d has been replaced with one like [destination] or
[population].
* @-credits -> credits-format
* oxp-containing-messages-list-@ -> oxp-containing-messages-list
* bounty-@-total-@ -> bounty-awarded
* autopilot-station-@-does-not-allow-autodocking -> autopilot-station-does-not-allow-autodocking
* witch-to-@-in-f-seconds -> witch-to-x-in-y-seconds
* witch-blocked-by-@ -> witch-blocked
* witch-galactic-in-f-seconds -> witch-galactic-in-x-seconds
* game-paused-@ -> game-paused
* game-paused-docked-@ -> game-paused-docked
* missile-locked-onto-@ -> missile-locked-onto-target
* ident-locked-onto-@ -> ident-locked-onto-target
* @-armed -> missile-armed and mine-armed
* @-ejected -> commodity-ejected
* @-ready-to-eject and ready-to-eject-@ -> ready-to-eject-commodity
* @-scooped -> scripted-item-scooped
* scoop-captured-@ -> scoop-captured-character
* scoop-rescued-@ -> scoop-rescued-character
* equipment-primed-@ -> equipment-primed
* equipment-primed-hud-@ -> equipment-primed-hud
* mfd-d-selected -> mfd-N-selected
* station-docking-clearance-abort-cancelled-in-f -> station-docking-clearance-abort-cancelled-in-time
* status-hyperspace-system-multi-@-@ -> status-hyperspace-system-multi
* equipment-plural-d-@ -> equipment-plural
* equipment-plural-d-d-@ -> equipment-plural-some-na
* manifest-cargo-quantity-format -> manifest-cargo-quantity
* manifest-cargo-quantity-format2 -> manifest-cargo-quantity-extended
* manifest-@-travelling-to-@-to-arrive-within-@ -> oolite-manifest-person-travelling
* manifest-deliver-@-to-@within-@ -> oolite-manifest-item-delivery
* charts-distance-f -> charts-distance
* charts-est-travel-time-f -> charts-est-travel-time
* short-range-chart-distance-f -> short-range-chart-distance
* short-range-chart-est-travel-time-f -> short-range-chart-est-travel-time
* long-range-chart-distance-f -> long-range-chart-distance
* long-range-chart-est-travel-time-f -> long-range-chart-est-travel-time
* @-commodity-market -> system-commodity-market
* @-station-commodity-market -> station-commodity-market
* cash-@-load-d-of-d -> market-cash-and-load
* sysdata-planet-name-@ -> sysdata-data-on-system
* sysdata-prod-worth -> sysdata-prod-value
* gameoptions-voice-@ -> gameoptions-voice-name
* gameoptions-music-mode-@ -> gameoptions-music-mode
* gameoptions-fullscreen-mode-d-by-d-at-g-hz -> gameoptions-fullscreen-with-refresh-rate
* gameoptions-fullscreen-mode-d-by-d -> gameoptions-fullscreen
* equip-cash-@ -> equip-cash-value
* @-equip-cash-value -> equip-cash-value
* shipyard-price -> shipyard-price-label
* shipyard-cargo -> shipyard-cargo-label
* shipyard-cargo-d-tc -> shipyard-cargo-value
* shipyard-speed -> shipyard-speed-label
* shipyard-speed-f-ls -> shipyard-speed-value
* shipyard-your-@-trade-in-value-@ -> shipyard-trade-in-value
* shipyard-total-available-%@-%@-plus-%@-trade -> shipyard-total-available-with-trade-in
* plus-@ -> shipyard-first-extra and shipyard-additional-extra
* shipyard-forward-weapon-upgraded-to-@ -> shipyard-forward-weapon-upgraded
* shipyard-price-@ -> shipyard-price
* character-a-@-from-@ -> character-generic-description
* sysdata-billion-word has been replaced with sysdata-pop-value, which allows
more flexible formatting of population values
* planetname-derivative-suffix has been replaced with planetname-possessive.
The default planetname-possessive references planetname-derivative-suffix for
compatibility (it isn't used anywhere else).
* New: number-negative
* New: credits-negative
* New: sysdata-tl-value
* New: sysdata-radius-value
* Removed: extra-@-@-(long-description)
* Removed: extra-@-@-@-(passenger-berth-long-description)
* Removed: shipyard-forward-weapon-upgraded-long
* Removed: shipyard-selling-price-@
OXP Verifier:
-------------
* Validates syntax (but not keys) of all plists
* Validates syntax of all JS files
* Updates to shipdata plist verifier
Bug fixes:
==========
* Restore something like the 1.76 behaviour in terms of alloy plates in debris
* Speech synthesis slightly more conservative in detecting 'credits'
abbreviation
* Fixes to some core ship role lists
* Show JS error locations properly
* Better handling of various ZIP formats in the OXZ manager
* Fix slowness in market screen
* Corona_flare property works more consistently
* Better handling of system info changes in Nova mission
* Apply higher safety factor to docking
* Contracts no longer generated to Nova systems
* Suns now display properly at extreme range
* Some missing commands added to the Joystick mapper
* Fix non-alphanumeric characters not being available on mission screen
* Fix problem with large OXZ downloads on Windows
* Fix some problems with docking of fast and fast-turning ships
* Fix display problem with sun corona in rare cases
* Fixed key 5 switching to status screen when used during save game
filename entry.
* Fix Linux uninstall script error handling
* Fix errors with escape pod launch from subentities
* Fix consistency errors on ship library screen
* Ship registration forms now return to interfaces page
* Fix error with "OUTER_SYSTEM" positions in very large systems
* Fix bug where ship.checkScanner would detect a docked player and other
invalid targets.
* Windows and Linux ports: Gamma is now a generic game option, not a save
file one. Fixes unexpected gamma resets when starting a new game.
* Windows port: Fixed unnecessary double OpenGL initializations under
certain resize window conditions.
* Windows port: Fixed bugs in handling a maximized game window.
* Windows and Linux ports: Fix for inability to unset joystick buttons
beyond 16.
* Fix return type of EquipmentInfo.requiredCargoSpace
* Handle sun glare correctly also for too tall or too wide game windows.
* Redefining the currently selected waypoint no longer resets the compass
* Assassins no longer chase players who only take low-risk contracts
* Zero-distance system doubles now handled better on chart
* More docking protocol bug fixes
* Various chart view settings now preserved in the save game
* Some full-screen and multi-monitor fixes
* NPC ships entering hyperspace near massive stations should be clearer
* Destination systems for long-range NPCs now set correctly
* checkScanner method now correctly excludes unpowered ships
* Plasma turrets won't fire when cloaked if cloakPassive is true
* AI errors related to system ID 0 fixed
* Bug making tutorial extremely difficult to complete if player obtained a
bounty fixed.
* Fix error with cargo dumping when reloading save after death
* Fix NPC turret aim
* Some OXZ manager bugs related to duplicate manifest IDs fixed
-------------------------------------------------------------------------------
Changes between Oolite 1.78 and Oolite 1.80:
General:
========
* Automatic expansion pack installer now available (not all existing
expansion packs are available for automatic installation; manual
installation still possible as before)
* New game start screen, including access to a keyboard control
summary and a ship specification library
* New Tutorial option for starting a game, for a basic flight training
course
Gameplay:
=========
* Coordinate precision increased, allowing ships to travel much
further from the witchpoint without problems
* Strict mode now only disables OXPs rather than making other gameplay
changes
* Ship hostility indicator no longer depends on weapon range
* New equipment: Integrated Targeting System
* Standard HUDs now include primable equipment dials, compass target
naming, and multi-function displays. HUD layouts reorganised
slightly to fit the extra components in. ';' and ':' keys manage
multi-function display (MFD) selection
* Major changes to NPC behaviour and AIs, including new courier,
smuggler, assassin, pirate leader, bounty hunter leader, pirate
raider, thargoid raider and police blockade roles. Significant
increases in diversity of ships used for existing roles.
* Widened the difficulty gap between Corporate States (now safer) and
Anarchy (now far more dangerous) systems. System danger now also
depends to an extent on events in neighbouring systems.
* Saving the game at stations other than the main system station is
now possible; stations added by expansion packs must be flagged by
the expansion pack as valid save locations for this to work.
* Save game file name and player commander name are now
independent. Interface added on F4 to set player commander name and
player ship name.
* Docking computers now fly a bit faster
* Improved short-term and long-term assessment of player actions for
more realistic and varied NPC responses
* Parcel and passenger contracts made much more varied. High-price
high-risk contracts added. Reputation scale increased.
* Station rotation slowed down
* Number of cargo containers used by Gold, Platinum, Gems (e.g. after
scooping) now shown on the manifest screen.
Graphics:
=========
* Graphics settings have changed to merge "shader settings" and
"reduced detail" into a single option. There is an 'extra detail'
option suitable for dedicated graphics cards.
* New look for the sun, including improved corona and a glare effect
* New explosion graphics
* Core ship models and textures replaced with significantly improved
ones by Griff/CaptSolo
* New planet and atmosphere graphics (requires 'extra detail')
* Default HUD adjusted a little to improve appearance of text
Sound:
======
* Now uses the OpenAL library to give fully positional sound. Supports
stereo speakers up to 7.1 or binaural HRTF with headphones.
* iTunes integration works again with iTunes 11 on the Mac.
Controls:
=========
* Default key for dump cargo now "Shift-D", not "d", to reduce chance
of pressing accidentally
* Number pad keys can now be bound independently of arrow keys
* Number keys can now be bound independently of function keys
* GUI direction keys now independent of flight direction keys
* With an Advanced Navigation Array, the '?' key now cycles through
different colour highlights
* New ';' and ':' keys for multi-function displays
* 'tab' and '0' keys are now fast activation keys for primable
equipment. Equipment previously using those keys has been rewritten
to be primable equipment and will automatically be initially
assigned to those keys if it is installed. New interface on F4 to
rebind these keys.
* New joystick axis configuration interface, allowing much more
precise control
Settings:
=========
* --noshaders command line option to temporarily start Oolite without
shader support, for debugging graphics card problems.
* Windows and Linux ports: Default spoken messages voice changed to
female.
Expansion pack development:
===========================
Packaging:
----------
* New compressed OXZ format for easy - and automatic - expansion pack
distribution.
* Default Javascript properties set from manifest.plist
General:
--------
* The system populator is now run via Javascript and can be modified
by expansion pack scripts. There is also a system repopulator to
allow replacement of expected ship losses or departures.
* shipdata.plist reorganised to make heavy use of templates. This
allows shipset OXPs to be written to take advantage of future
changes to core shipdata.
* Javascript may be used as a language for ship AIs. Numerous extra JS
properties, methods and handlers have been added to allow this.
* Priority-based AI library available for writing Javascript AIs in,
with a wide range of predefined behaviours and easy addition of
custom behaviours
* Multi-function displays for arbitrary persistent in-flight text display
* Primable equipment dial added to HUD
* Sun colour and background star colour are now separated
* Ship cargo is now defined when ships are created
* Mission screens can now have an arbitrary text entry prompt
* Waypoints can be added - like a compass target, but not attached to
any other entity.
* [oolite_key_FOO] description expansion describes keyconfig entry key_FOO
* Javascript representation for ship exhausts
* Wormholes have a read-only Javascript representation
* Javascript representation for flashers
* Description and mission text expansions now use a much better random
number generator
New properties:
---------------
* entity.isWormhole
* oolite.gameSettings.keyConfig
* planet.name
* player.cargoReputationPrecise
* player.parcelReputationPrecise
* player.passengerReputationPrecise
* player.roleWeights
* player.setPlayerRole(role [,index])
* player.ship.multiFunctionDisplays
* player.ship.renovationCost
* player.ship.renovationMultiplier
* player.ship.viewPosition*
* ship.AIScript
* ship.AIScriptWakeTime
* ship.autoWeapons
* ship.beaconLabel
* ship.cargoList
* ship.crew
* ship.destinationSystem
* ship.dockingInstructions
* ship.energyRechargeRate
* ship.exhaustEmissiveColor
* ship.exhausts
* ship.extraCargo
* ship.flashers
* ship.homeSystem
* ship.isFleeing
* ship.isMinable
* ship.isTurret
* ship.markedForFines
* ship.shipClassName
* ship.shipUniqueName
* ship.sunGlareFilter
* station.allegiance
* station.market[*].legalPenalty
* sun.name
* system.allDemoShips
* system.populatorSettings
* system.stations
* system.waypoints
* system.wormholes
* visualeffect.beaconLabel
* wormhole.arrivalTime
* wormhole.destination
* wormhole.expiryTime
* wormhole.origin
New methods:
------------
* Ship.keys() (static method)
* Ship.keysForRole(role) (static method)
* Ship.roleIsInCategory(role,category) (static method)
* Ship.roles() (static method)
* Ship.shipDataForKey(key) (static method)
* dock.isQueued(ship)
* player.endScenario(key)
* player.ship.hideHUDSelector(selector)
* player.ship.resetScannerZoom()
* player.ship.setMultiFunctionDisplay(index,key)
* player.ship.setMultiFunctionText(key, string)
* player.ship.showHUDSelector(selector)
* ship.becomeCascadeExplosion()
* ship.broadcastCascadeImminent()
* ship.broadcastDistressMessage()
* ship.checkCourseToDestination()
* ship.checkScanner()
* ship.damageAssessment()
* ship.dumpCargo (change to specify how many items to dump)
* ship.enterWormhole(hole)
* ship.findNearestStation()
* ship.getSafeCourseToDestination()
* ship.markTargetForFines()
* ship.notifyGroupOfWormhole()
* ship.offerToEscort(mother)
* ship.patrolReportIn(station)
* ship.performAttack()
* ship.performCollect()
* ship.performEscort()
* ship.performFaceDestination()
* ship.performFlee()
* ship.performFlyToRangeFromDestination()
* ship.performHold()
* ship.performIdle()
* ship.performIntercept()
* ship.performLandOnPlanet()
* ship.performMining()
* ship.performScriptedAI()
* ship.performScriptedAttackAI()
* ship.performStop()
* ship.performTumble()
* ship.recallDockingInstructions();
* ship.removeDefenseTarget(target)
* ship.requestDockingInstructions();
* ship.requestHelpFromGroup()
* ship.setCargoType(type)
* ship.setCrew(crew)
* ship.throwSpark()
* station.abortAllDockings()
* station.abortDockingForShip(ship)
* station.launchEscort()
* system.locationFromCode(code)
* system.setWaypoint()
New handlers:
-------------
* ship.cargoDumpedNearby(cargo,dumper)
* ship.defenseTargetDestroyed(target)
* ship.escortRejected
* ship.helpRequestReceived(ally,enemy)
* ship.shipAIFrustrated(context)
* ship.shipAchievedDesiredRange
* ship.shipNowFacingDestination()
* ship.shipWasDumped()
* ship.shipWitchspaceBlocked(blocker)
* ship.stationWithdrewDockingClearance
* ship.wormholeSuggested(hole)
* station.stationDockingQueuesAreEmpty
* station.stationReceivedDockingRequest(ship)
* world.guiScreenWillChange fires on changing to GUI_SCREEN_INTERFACES
* world.startUpComplete
* world.systemInformationChanged(gal,sys,key,newValue)
Plists:
-------
New plists:
* manifest.plist: required for OXZ format distribution
* role-categories.plist: supersedes and extends pirate-victim-roles.plist
* scenarios.plist: allows alternative game starts to be added
* shiplibrary.plist: adds ships to the start game ship database
* The demoships.plist file no longer has any effect as there is no
longer a demo ships screen.
New properties:
* equipment.plist: fast_affinity_defensive
* equipment.plist: fast_affinity_offensive
* equipment.plist: sort_order
* hud.plist: alert_conditions
* hud.plist: align
* hud.plist: color_critical
* hud.plist: color_high
* hud.plist: color_low
* hud.plist: color_medium
* hud.plist: color_surround
* hud.plist: drawASCTarget:
* hud.plist: drawPrimedEquipment:
* hud.plist: drawWaypoints:
* hud.plist: drawWitchspaceDestination:
* hud.plist: multi_function_displays
* hud.plist: reticle_scale (scanner targeting enhancement)
* hud.plist: scanner_non_linear
* hud.plist: scanner_ultra_zoom
* planetinfo.plist: nebula_color_1
* planetinfo.plist: nebula_color_2
* planetinfo.plist: planet_name
* planetinfo.plist: populator
* planetinfo.plist: repopulator
* planetinfo.plist: sun_name
* shipdata.plist: auto_weapons
* shipdata.plist: escort_roles
* shipdata.plist: exhaust_emissive_color
* shipdata.plist: sun_glare_filter
* shipyard.plist: renovation_multiplier
* shipyard.plist: ship_name
* shipyard.plist: ship_class_name
Shaders:
--------
* tradeInFactor uniform for player ship
* Simplified shader mode no longer exists
Bug fixes:
==========
* Stop previously unknown targets appearing in the target memory
* Reduce need for JS garbage collection while in flight
* Fix some bugs with combat flight causing misses on really easy shots
* Several Javascript crashes fixed
* Errors in NPC escape pod use for lighter ships fixed
* Fix bug with station subentity initialisation
* Fix bug in ship.forwardWeapon property
* Consistently use ship scanner ranges
* Asp can now equip a fuel scoop
* Core ships with only one missile pylon can no longer buy the
Multi-Targeting System as it's only useful to ships with at least
two missiles.
* Fix some bugs with the escape pod launch sequence
* Fix bug with reticle target sensitivity
* Fix some bugs with compass dial requirements
* Fix bug when pressing opposite movement direction keys together
* Fix various random number generation bugs
* Clean up momentum transfer in explosions
* Fix error in manifest screen paging
* Fix problem with duplicate passenger names in contract generation
* Fix some issues moving in and out of strict mode
System requirements:
====================
General
-------
* Use of the "extra detail" graphics setting is likely to require a
dedicated graphics card for best performance.
Mac-specific
------------
* Oolite now requires Mac OS X 10.6 or later, and is 64-bit only.
-------------------------------------------------------------------------------
Changes between Oolite 1.77.1 and Oolite 1.78:
* Bug with behaviour of ship.forwardWeapon when ship had no forward
laser but subentity did fixed.
* Shaders re-enabled on AMD R600/R700 if drivers recent enough
* Game over message no longer depends on HUD settings
* Cosmetic bugs with player escape pod sequence fixed
* Player ship doppelganger no longer persists in obscure cases
* New ships always have weapons online
* Target-sensitive reticle accounts for weapon offsets
* Include fix for build process on lunar-linux
Changes between Oolite 1.77 and Oolite 1.77.1:
* Bug with planetary cloud display fixed
* Cargo/Passenger contracts correctly report premium/advance again
* Fix to escort scan class initialisation
* Fix for mission screen not allowing exit when HUD off
* Fix quaternion constructor to produce identity quaternion as
documented when called as new Quaternion().
* guiScreenChanged now fires on transition when launching
* Yaw and velocity are now also zeroed when launching from a station
* Autopilot status reset on death
* Regression: HUD n_bars now works again
* Bug with NPCs continuing to lock on dead ships fixed
* Laser shot positioning fixed
* Bug with manifest checks in guiScreenChanged when launching fixed
* Reasonably skilled pilots will now remember to look where they're
going when fleeing
* Shields now also protect subentities
* Edge-case for damage to main station fixed
* Frustum culling over-enthusiasm fixed
* Some 'ghost' ship bugs fixed
* Fix mission screen crash with numeric choice keys
* Fix bug with cancelling galactic jump by script
* Fix bug in validation for station interface creation
* Use correct types in JS Station.market object
* Fix bug with docking with stations where dock is very slightly off-axis
* Fix contract reputation calculations so that negative rep works properly
* Fix inconsistencies with cloaking device behaviour
* Fix calculation of heat damage to subentities
* Fix updates of energy, laser temp, alert condition related to autopilot
* Fix for crash when pressing up on long manifest screen
* Fix conflict between "pilot" and "unpiloted" shipdata keys
* Fix equipment condition check in player.replaceShip()
* Fix flasher scaling in visual effects
* Add fuel scoop icon to small HUD
* Lighten mouse cursor cross color
* Sort save-game list alphabetically
* Slightly lengthen deadlines on parcel contracts to avoid impossible ones
* Prevent docking with dead stations
* Fix memory leaks.
* Remove "performBroadside" AI command
* Fix scanner display bug
* Display correct key in 'pause' message
* Fix rotational_velocity for subentities
* Fix shipEnergyBecameFull event to fire as documented
-------------------------------------------------------------------------------
Changes between Oolite 1.76.1 and Oolite 1.77:
Gameplay:
=========
General:
--------
* Enabled reverse-stepping through list of beacons shown by the Advanced
Space Compass. The default key is '|' (Shift-'\').
* Energy bomb made strict mode only.
* Ships with a bounty will often avoid the main station
* A certain classified device is now possible to repair and has had
minor changes to its behaviour.
* Improvements to sound effect handling for scoop and laser
* Several efficiency improvements for smoother gameplay
* New combat behaviour and AI, including:
More consistent missile explosion behaviour
Smarter Thargoids
Smarter use of turret weapons
Better reactions against cloaked opponents
Better reaction to deployment of Q-mines
NPCs can now use side weapons
NPC lasers now equivalent to player lasers in terms of rate of fire
and overheating.
* Gamma control for SDL builds
* System populator cleaner, and hermits now semi-persistent
* Longer visibility distance
* Criminal behaviour sanctions now equivalent for player and NPCs
* Witchspace exit speed now depends on the lead ship, and player
following NPC through a wormhole now behaves better.
* Keyboard precision mode
* Stations can now have multiple docks
* Docking Clearance Protocol now a Game Option
* Interfaces screen on docked F4 for accessing arbitrary station or
ship systems. Passenger and cargo contracts moved to this screen;
parcel contracts added.
* Can switch to custom views while paused
* Improved rendering of planetary atmosphere and sun
* New 'b' key for activation of secondary function of primable
equipment (e.g. a mode switch)
* New starfield textures
* New laser textures
* New exhaust textures
* Mac specific: ctrl-cmd-f is the new toggle key for full screen display
Expansion Pack Development:
===========================
AI:
---
* New events:
DEFENSE_TARGET_LOST
DEFENSE_TARGET_DESTROYED
CASCADE_WEAPON_DETECTED
ATTACKER_MISSED
* New commands:
addFoundTargetAsDefenseTarget
addPrimaryAggressorAsDefenseTarget
broadcastEnergyBlastImminent
clearDefenseTargets
findNewDefenseTarget
performLandOnPlanet
performScriptedAI
performScriptedCombatAI
recallStoredTarget
setTargetToLastStation
setTargetToRandomStation
storeTarget
* Higher skill combat AIs available through 'accuracy' setting
* Full frame-by-frame control over ship AI now available from script
Config files:
-------------
* Required space in equipment.plist now works as intended
* damage_probability setting in equipment.plist
* Ship role list now automatically includes "[shipDataKey]"; roles beginning "[" forbidden.
* Shipdata weapon_facings property to set available laser mounts
* bright_fraction property for flasher subentities
* Crosshair plist files separate from HUD
* Several new descriptions.plist and missiontext.plist entries
* New effectdata.plist to define visual effects - items with a visual appearance, and perhaps a scanner and compass signal, but no physical presence. These can be used to supplement/replace break patterns, among other effects.
* shipdata.plist exhaust z-size now acts as a z-scale within the range
0.5 to 2.0. Out of range values default to 1.0 = standard size
* cloud_alpha property in planetinfo.plist to control atmosphere opacity
Scripting:
----------
* Various debug console improvements
* Additional 'b' key and mode() function for primable equipment
* "Dock" entity type, for control over docking and launching,
especially in multidock stations.
* More parameters for mission.markSystem, to allow custom markers
* Condition scripts for equipment, ships, and shipyard to replace
legacy conditions.
* Numerous additional options for mission.runScreen, and related
properties for mission objects
* "VisualEffect" entity type, for management of effects defined
through effectdata.plist
* guiScreenChanged fires for entering mission screens
* New properties
clock.adjustedSeconds
entity.isInSpace
player.ship.hyperspaceSpinTime
player.ship.missilesOnline
player.ship.price
player.ship.serviceLevel
ship.*Weapon now editable
ship.AIFoundTarget
ship.AIPrimaryAggressor
ship.autoAI
ship.beaconCode
ship.boundingBox
ship.commodity
ship.commodityCount
ship.currentWeapon
ship.dataKey
ship.desiredRange
ship.destination
ship.laserHeatLevel
ship.maxEscorts
ship.pitch, ship.roll, ship.yaw
ship.weaponFacings
ship.weaponPosition*
station.breakPattern
station.hasShipyard
station.market
system.breakPattern
* New methods
global.autoAIForRole(role)
player.replaceShip(key)
player.ship.beginHyperspaceCountdown(delay)
player.ship.cancelHyperspaceCountdown([delay])
player.ship.resetCustomView()
player.ship.setCustomView(position,orientation)
player.ship.takeInternalDamage()
ship.dealEnergyDamage()
ship.getMaterials()
ship.getShaders()
ship.setBounty(amount,reason)
station.setMarketPrice(cargo,price)
station.setMarketQuantity(cargo,price)
system.addVisualEffect(key,position)
* New events
cascadeWeaponDetected(weapon)
dayChanged(day)
equipmentRepaired(equipment)
playerBoughtCargo(commodity, units, price)
playerSoldCargo(commodity, units, price)
shipBeingAttackedUnsuccessfully(attacker)
shipBountyChanged(delta,reason)
shipHitByECM {new 'whom' argument}
shipLandedOnPlanet(planet)
shipScoopedFuel()
Miscellaneous:
--------------
* TAF changes only possible when FPS display is active
* Planettool updated
Bug fixes:
==========
* 'sendAllShipsAway' no longer tries to send ships without a hyperspace
motor away.
* Added missing new keyboard controls to the BBC keyconfig.plist
* Scoop icon fixed for ships carrying special cargo
* Docking behaviour now more reliable at low frame rates and at odd
approach angles
* Negative ship distances on HUD fixed
* Laser position display fix
* Target system memory expansion now works properly with cloaked ships
* Cargo rounding and save/load bugs fixed
* Advanced Navigation Array display bug fixed
* Being on board a witchspacing carrier now works more sensibly
* Larger witchbuoys no longer a collision risk
* Several crash bugs fixed
* Turret declarations now work as intended
* Planetinfo overrides now cleaned up from savegames
* Problems with wormholes in zero-distance doubles fixed
* Fines now only applied at main stations
* Attempting to calculate a route to or from interstellar space no
longer crashes
* Scooped and released escape pods work properly
System requirements:
====================
Mac-specific
------------
* Oolite now requires an Intel processor and Mac OS X 10.5 or later.
-------------------------------------------------------------------------------
Changes between Oolite 1.76 and Oolite 1.76.1:
* Fixed potential bug loading player with no mission_variables dictionary.
* player.ship.launch() can now also be used within the shipWillDockWithStation
and the shipDockedWithStation handler without side effects.
* Ships that have a specific commodity defined as cargo, no longer get their
bounty reduced to 10% when the pilot ejects.
* The scoop icon now correctly shows a full cargo hold when special cargo is
transported.
* Fixed a problem with the shipyard screen when a ship with chance=1 defined
non-installed optional equipment.
* Don't disgorge and revive dead ships from wormholes.
* 32-bit GL contexts are now strongly preferred on SDL systems, with 16-bit
fallback.
* Fixed weapon facing not resetting to forward view when launching from station.
* takeSnapShot() is excluded from the timelimiter.
* Added code to prevent overcorrection pitch and roll with low frame rates.
Should lower the change of ships jumping between two headings, without
proceeding.
* weapon_range and weapon_energy keys in the turret subentity declaration now
work as intended. Values are maximised at 7500 and 100 respectively.
* Buggy consoleMessage() behaviour when called from JS debug console has been
rectified.
* JS debug console macros are saved when Oolite exits to desktop in all
platforms, as originally intended.
* Regression fix: in the log, the searchPaths.dumpAll is shown once every time
searchPaths change (strict/unrestricted mode).
* No more negative ship distances, see http://aegidian.org/bb/viewtopic.php?t=11785
* Fix for guiScreenWillChange for system data screen not firing when double
clicking on systems.
* Fixed crash with malformed gui declarations inside hud plists.
* Fixed timer related crashes.
* The Windows Oolite executable is now large address aware, allowing for more
than 2GB of memory to be allocated to the game.
* Fix for bug where standard subentities defined after any turret subentity
would exhibit turret behaviour.
* Savefiles with wrong passengers and/or passengers berths data are now handled
a bit better.
* Fix bug where equipment depending on currently damaged equipment would be
silently removed from the player's ship on game load.
* Target system memory expansion doesn't try to restore locks on cloaked ships
anymore.
* Fixed bug with resetting of passenger contracts on ship change.
* Fixed Nav Array not showing distance and time information when target system
was selected by using the Find Planet method.
* Frame Callbacks now transfer the correct time difference when
timeAccelerationFactor is active.
* The available_to_all key is now also respected by JS methods that add
equipment.
* Improved the docking approach when arriving from the backside of a station.
* Fixed fuel scoops sound loop issue, discussed in
http://www.aegidian.org/bb/viewtopic.php?f=4&t=11611
* Fixed intermittent crash on missile removal.
-------------------------------------------------------------------------------
Changes between Oolite 1.75.3 and Oolite 1.76:
Gameplay:
=========
General:
--------
* When using docking clearance, player now gets an extra few seconds when very
close to the dock. (Bug #17997)
* Enhanced missile logic for missiles approaching head-on to a target.
* Enhanced damage calculations for collision and missile damage; damage is no
longer dependent on target size.
* Changed the manifest screen to better handle situations when too much cargo,
passengers, or contracts were being displayed.
* All mission screen choices should now also be selectable by mouse.
* The game now ignores all keys except 'Space' on the Arrival Reports screen.
* Enhanced mouse controls to allow maximum pitch.
* It's now possible to pause the game when the autopilot is running.
* Improved AI for ships scooping cargo.
* Improved sun-skimming NPCs.
Bug fixes:
----------
* Non-tonnage commodities are now cleared correctly after a game reset.
* Avoid negative cargo capacity under certain conditions, especially in
conjunction with passenger cabins.
* Various additional checks to ensure ship equipment is not lost when it was
already installed (eg, damaged during a fight, loading a Commander)
* Fuel price is now displayed correctly for ships which have a fuel charge
rate other than 1.0
* Large ships no longer block the launch queue in stations.
* Fix NPCs getting far-away holding positions while waiting to dock.
* Docking Clearance: Player is no longer given clearance while ships are
in the launch queue.
* Aft-firing weapons on an NPC no longer trigger forward-facing weapons.
* No unnecessary auto-save immediately after a manual save.
* Various bug-fixes to better handle entities when the Universe is full which
could lead to crashing.
* No more double spaces in the randomly generated planet descriptions.
* The short range chart no longer shows pre-nova system data for nova systems.
* Regression fix: The autopilot disengages when pressing 'fast-dock'.
* Escape pods should no longer disappear immediately after they launched.
* A damaged Galactic Hyperdrive now correctly aborts the jump.
* Fixed the first witchjump after a galactic jump.
* Improved handling of ships exiting wormholes; various values are properly
reset now and NPCs following the player should no longer crash into the
NavBuoy.
* It's no longer possible to pause the game in invalid situations (such as
the witchspace tunnel).
* Fix docking music either ending before docking was complete, or continuing
to play after a hyperspace jump.
* Sounds no longer continue to play after player death or resetting the game.
(Bug #18108)
* Various fixes for large escort groups; especially Thargoid/Thargons.
* Fix Thargoid message overflow. (Bug #18055)
* NPCs now have the same inactive cloaking behaviour as players.
* Ignore passengers and contracts in hacked strict mode gamesaves.
* Fixed various memory leaks.
Mac-specific:
-------------
* Fix for incorrect playlist selected in iTunes after startup.
* Switching iTunes integration off now pauses iTunes.
* iTunes is muted while the Oolite theme music is played.
Windows and Linux:
------------------
* Spoken messages should no longer crash the game.
* Fixed regression: it should again be possible to select full-screen for
computers with non-standard resolutions.
* Fixed the game screen getting resized to the size of the splash screen.
* Fixed the player ship going crazy when switching to mouse controls.
* Various keyboard fixes to ensure keys are correctly mapped.
Expansion pack development changes:
===================================
Ships:
------
Equipment:
----------
* The plasma cannon now uses the 'weapon_position_' keys from shipdata.plist.
* Weapon names are now always displayed as "<position> <type> laser",
irrespective of what is defined in equipment.plist and descriptions.plist.
Other Configuration Files:
--------------------------
* Script names are no longer expanded unless enclosed by [] in mission text
or mission info.
* Resizing message_gui & comms_log_gui via hud.plists now retains the
comms log and the last 2 message lines.
* Added the key to turn the HUD on and off to keyconfig.plist (default: 'o').
* A wrongly defined 'titleKey' for missionScreens now logs a warning instead
of an internal error.
Javascript:
-----------
* Fixed rounding errors for the "angleTo" method which sometimes returned
a NaN for identical vectors instead of zero.
* Fixed the "rotationTo" method which sometimes returned an illegal
quaternion for some anti-parallel vectors.
* Fixed "isValid" for entities which were destroyed during the current
game tick; always returns 'false' now.
* system.addShip() & system.addGroup() now only returns the ships
actually added to the Universe, instead of the whole group.
* viewDirectionChanged() now fires correctly when switching between
gui screens.
* The "startUp" event should now fire properly after the Universe is
fully initialised.
* Fixed reliability of the Javascript engine when resetting itself.
* Improved logging when loading a commander fails due to JS issues.
* The frameCallback is now only called when the game is actually running.
* When the player aborts a jump countdown, the type of the jump is now
reported.
Scripting bug fixes:
--------------------
* Regression fix: the legacy_spawnShip function should work again.
* system.name, system.population, etc. should now report the correct values
when in interstellar space.
* Changes to system.name, system.techLevel, etc. are now shown correctly on
the short range map.
* ships should now always have the correct orientation after being spawned.
* restoring sub-entities on the player ship now adjusts the trade-in factor
correctly.
* The AI commands 'becomeExplosion' and 'becomeEnergyBlast' now also trigger
the shipDied event handler.
* The game no longer freezes when a script tries to resurrect a ship after
it dies; the ship just dies now. (Bug #18054)
* Specifying 0Cr mandatory equipments no longer freezes the game.
* Specifying illegal flasher declaration no longer causes an exception.
New AI properties and methods:
------------------------------
* checkHeatInsulation - returns either INSULATION_OK or INSULATION_POOR.
OXP Verifier:
-------------
* Fixed bug in the oxp-Verifyer not recognizing 'escorts' in shipdata.
* Added CLASS_MINE to the oxpVerifier.
-------------------------------------------------------------------------------
Changes between Oolite 1.75.2 and Oolite 1.75.3:
* Subentities are now set up correctly when buying a new ship.
* Ships now take subentities into account when deciding whether they can dock.
* Fixed ghost wormholes. Wormholes can no longer have a jump range of zero.
* The fuel indicator is now drawn correctly in interstellar space.
* Additional guards against out-of-range targets for the player.
* Sounds now stop playing when starting a new game. (Bug #18108)
* [Mac] Growl display support is disabled due to upcoming changes to Growl.
* Ships with sun skimmer AI in interstellar space no longer cause errors in the
log, and AIs can handle the situation by responding to NO_SUN_FOUND.
* "sunskim-trader" added to default pirate victim roles.
* interstellar_undocking now works when in interstellar space 0 LY from a
system.
* HUD changes are now deferred, so changing HUDs during HUD drawing is safe.
* The debugging function callObjC() has been disabled.
-------------------------------------------------------------------------------
Changes between Oolite 1.75.1 and Oolite 1.75.2:
* New Linux/POSIX installer.
* Disabled shaders on certain ATi GPUs using Gallium drivers because of crashes.
* Clock adjustments now accumulate in the obvious way (Bug #17969).
* Improved texture filtering for planets and generated emission maps (in non-
shader mode).
* Fixed bug where a ship was apparently attacking itself whenever one of its
subentities was taking energy damage.
* Friendly fire between ships in the same group, and between police, military
or thargoid vessels, no longer leads to hostilities.
* Ships following the player through a wormhole now have jump rings.
* Ships with beacon codes now retain them after jumping to a new system.
(Bug #18068)
* Fixes to mass-dependent fuel pricing.
* Fixed mouse control starting in yaw mode. (Bug #18052)
* Descriptions.plist strings are now scanned for "%n", which could be used
maliciously on GNUstep systems.
* New AI message: ACCEPTED_ESCORT.
* Various bug fixes, inluding bugs #17916, #17919 and #18083.
JavaScript:
* Raised certain JavaScript time limits.
* The shipSpawned() event now fires for the main station.
* Fixed scripted misjumps not working when set from within the
shipWillEnterWitchspace handler for wormholes created by NPCs.
* NPCs in interstellar space can now jump back to their origin system.
(Bug #18082, partial)
* Scripts can no longer give the player an out-of-range target. (Bug #18011)
* Q-mines awarded to NPCs in flight now work. (More accurately, q-mines for
NPCs used to be represented internally as EQ_ENERGY_BOMB instead of
EQ_QC_MINE.)
Known bugs:
* Intermittent crashes when removing pylon-mounted equipment
(http://www.aegidian.org/bb/viewtopic.php?f=3&t=9761)
* Freeze when script resurrects a ship being killed by a Q-bomb (Bug #18054)
* AI crash triggered by large groups of thargoids (Bug #18055)
* Bugs related to repeated misjumps (Bug #18082)
* Unhelpful docking clearance behaviour changing priorities when a ship is on
final approach (Bug #17997)
* Fuel indicator is not drawn correctly in interstellar space (Bug #18097)
* Q-bomb explosions are not drawn properly on some systems (Bug #17276)
* In some conditions, the "break pattern" effect is drawn off-centre.
* Problem with roles of tharglets used as subentities (Bug #17979)
* Problem with frame callbacks and jumps (Bug #17956)
-------------------------------------------------------------------------------
Changes between Oolite 1.75 and Oolite 1.75.1:
* Joystick deadzone restored to previous value (Mac OS X not affected).
(Bug #17945)
* (Mac OS X) Support for game pads that don't pretend to be joysticks.
* (Windows) Uninstaller is now more discriminating about which files it deletes.
* The fast docking button now defaults to the main station if within the aegis,
even if it's outside scanner range, as intended. (Bug #17923)
* Ship mass calculations, and thus mass lock behaviour, have been restored
(except for very small ships). (Bug #17940)
* Thargoids no longer randomly shoot in entirely the wrong direction.
* Fixed "jousting" behaviour where attacking ships would veer off after one hit.
* Various fixes for wormhole behaviour in interstellar space, post-nova systems
and with ships with escorts.
* Interim fix for mass-dependent fuel prices not working. (Bug #17947)
* Various bug fixes and cosmetic tweaks, including but not limited to bugs
#17944, #17968, #17975, #17992, #17993, and #17995.
JavaScript:
* JavaScript Ship equipmentStatus() now works for primary and secondary weapons.
* Calling spawn() on a subentity previously put the spawnees near the
witchpoint. It now works like calling spawn() on the parent ship, which is
suboptimal but less confusing. Relying on the current behaviour is not
recommended as it may be improved in future.
* JavaScript system.addShipsToRoute() now adds ships within scanner range of
the route, and ships added with system.addGroupToRoute() are clustered.
* JavaScript SystemInfo systemsInRange() once again works as an instance method
(which is now the recommended usage).
* New ship event entityDestroyed(). This fires immediately after the ship
becomes invalid, regardless of the reason, except when the game restarts.
* New SystemInfo property internalCoordinates and new PlayerShip properties
cursorCoordinatesInLY, galacticHyperspaceFixedCoordsInLY and
galaxyCoordinatesInLY. This resolves the problem that different coordinate
systems were being used for galactic coordinates in different contexts.
* Mission screens can now be run in flight without generating warnings about
the player being both docked and not docked. (Bug #17953)
-------------------------------------------------------------------------------
Changes between Oolite 1.74.2 and Oolite 1.75:
Gameplay:
* Smarter, more aggressive NPCs - for example, they are now able to shoot you
when you cunningly stand still.
* New master weapon lock key (default: _) disables primary and secondary
weapons, and turrets.
* Simplified autopilot controls: C (or key_autopilot) attempts to autopilot-
dock with the current target station - your target if any, otherwise a
station within scanner range, favouring the main station. Shift-C (now
key_autodock instead of key_autopilot_target) is the same, except it will
fast-dock if permitted. Shift-D is no longer used.
* New "primable equipment" concept: equipment can produce scripted effects
without having to be a missile. New keys: Shift-N and Control-Shift-N cycle
through the list of primable equipment, and N activates the currently selected
equipment. (Key config keys: key_prime_equipment, key_activate_equipment.)
* Target-sensitive reticle mode is now more accurate.
* Fuel price now depends on the mass of your ship.
* Jumping between overlapping systems now uses 0.1 LY worth of fuel.
* A hyperspace misjump now takes 3/4 of the time of a successful jump, rather
than the full time. (It has to be at least 3/4 to avoid exploits. See
http://aegidian.org/bb/viewtopic.php?t=7917 for more information.)
* The trumble offer "mission" now repeats as intended, in case you accidentally
missed it.
* Escape pods now aim for the nearest friendly station/carrier.
* The escape pod key/joystick button must now be pressed twice in rapid
succession to eject (except in strict mode, or if the
escape-pod-activation-immediate hidden setting is set).
* Comm log messages are now spoken. (Feature request #4970)
Bug fixes:
* "Lollipop flashes" eliminated. (Bug #17215)
* Hyperspace countdown messages don't repeat themselves.
* You can no longer sneak into the contract screen through the back door in
secondary stations.
* Secondary weapons are now accounted for properly when evaluating your ship.
(Bug #17450)
* Fixes to joystick configuration (Bug #17482, Bug #17490)
* The usual indescribable yet important "minor tweaks and fixes".
Miscellaneous:
* New icon by seventh.
* Reduced memory usage of various special effects and JavaScript objects. On
the other hand, the new JavaScript engine uses more memory.
Mac-specific:
* The Dread Sound Bug of Doom is fixed. (Bug #17214)
* Joystick support.
* Automatic update support (Sparkle).
* The Oolite Screen Shots folder can now be moved from the desktop and Oolite
will continue to use it (as long as it isn't renamed or moved to the trash).
Windows and Linux:
* Due to a bug in GNUstep, older versions cannot read credit balances of more
than 429496729.5 credits correctly. 1.75 writes saved games in a way that
avoids this problem (even when loaded with old test releases). The Windows
version can also read larger credit quantities in old saved games.
Expansion pack development changes:
Ships:
* New shipdata.plist keys:
- allows_auto_docking (station only): if true, player autopilot docking is
permitted. Default: true.
- allows_fast_docking (station only): if true, fast docking is permitted.
Default: false, except for main station.
- counts_as_kill: if false, the ship does not count as a kill and does not
participate in q-mine cascade happy fun time, even if its scan class and
other properties would otherwise let it do so. Default: true.
- cloak_automatic (NPCs): if true, cloaking device is activated when
attacking; otherwise, it must be activated by a script. Default: true.
- has_patrol_ships (station only, fuzzy boolean): if true, the station will
periodically launch patrols if it has any police ships docked. Default:
false, but ignored (treated as always true) for main station.
- hyperspace_motor (all ships, including player): required to be able to
jump. Default: true.
- interstellar_undocking (station only): if true, docking with the station in
interstellar space doesn't cause the station to jump to an adjacent system.
Default: false.
- weapon_range (turret subentities): plasma shot range. Default: 6000.
- tunnel_corners, tunnel_start_angle and tunnel_aspect_ratio (station only):
these replace docking_pattern_model. See
http://www.aegidian.org/bb/viewtopic.php?p=128823#p128823 for more
information.
* A new ship role, "cinder", is used to generate debris in post-nova systems.
The default cinders look like the default asteroids and boulders, but have
very high heat shielding. If you make custom asteroids, you probably want to
make cinder versions of them. If you're abusing the "asteroid" role to put
random stuff in asteroid fields, you don't want to make a cinder version.
* Turret weapon_energy now defaults to 25.
* Beacon icon data is now handled in a more flexible way
(http://aegidian.org/bb/viewtopic.php?p=128487#p128487; Bug #17828).
Additionally, it is looked up using the ship's beacon code as a key, instead
of its primary role.
Equipment:
* New equipment.plist extra-dictionary keys:
- script: used to implement primable equipment. Equipment scripts have one
predefined property, equipmentKey, and one event handler, activated().
- visible: controls visibility on status screen and shipyard blurbs.
Default: true.
* NPC missiles are now represented as equipment entries instead of ships. For
efficiency, it is recommended that all NPC missile types have an
equipment.plist entry, even if they're not available to the player. (For
example, there is now an EQ_THARGON.) For assistance in setting this up,
enable ship.setUp.missiles in logcontrol.plist (or use
console.setDisplayMessagesInClass("ship.setUp.missiles", true) in the debug
console).
Other configuration files:
* Sounds that are listed in customsounds.plist are now preloaded to avoid
loading delays. Sounds that are played through JavaScript by specifying a
file name cannot be preloaded; if you're doing this, and your sound isn't
particularly rare, I suggest going through a customsounds.plist entry.
* Fortuitously, using customsounds.plist entries from scripts now works
properly.
* Screen backdrops and overlays can now be scaled, allowing for higher
resolutions. (Bug #17201) See http://aegidian.org/bb/viewtopic.php?p=127716
for more information. Additionally, screenbackgrounds.plist entries may be
arrays, in which case one element is picked at random.
* Planets using cube map textures now rotate around the expected polar axis.
Planets using traditional textures don't, but they never did. (Bug #17243)
* New HUD dial selector: drawWeaponsOfflineText:.
JavaScript:
* Upgraded SpiderMonkey to bleeding edge (1.75 uses the same version as
FireFox 4.0 beta 11). This adds most ECMAScript 5th Edition features, notably
including strict mode, which I recommend all OXPers adopt.
* On the other hand, the old SpiderMonkey-specific "strict mode" is disabled by
default because it has some false positives. It can be enabled through the
debug console by setting console.pedanticMode to true.
* Native JSON support may be useful for storing structured data in mission
variables.
* The JavaScript global and console objects are now replaced when resetting the
game, and can no longer be used to smuggle information across sessions.
* Vector3D and Quaternion objects can no longer be compared using == and !=,
because the wart in the JavaScript engine we were previously exploiting no
longer exists. See http://www.aegidian.org/bb/viewtopic.php?f=4&t=8847 for
more information.
* Scripts are now stopped if they run for more than one second. (Slow Oolite
functions are not counted towards the limit. The idea isn't to force a time
limit on you but to kill scripts stuck in an infinite loop. If your script
is deliberately running for more than a second you probably have problems,
though.) During loading and the startUp event, the limit is two seconds.
* All Oolite-provided JavaScript methods and properties have been audited for
consistent error reporting and sane handling of bad values. In some cases,
their error checking has become stricter. In others, they perform normal
implicit conversions (like converting a string with a numerical value to a
number) instead of failing or crashing. All normal parameter errors should
now become JavaScript exceptions; calling an Oolite-defined method with the
wrong type of this value will just halt the script, but it's hard to do that
by accident.
* Oolite now has the ability to write a stack trace when a JavaScript exception
goes unhandled or a warning is logged. This helps you find out how you
reached the point where the error occurs. This is on by default if the debug
OXP is installed, off by default otherwise. You can toggle it by setting
console.dumpStackForErrors and console.dumpStackForWarnings if the console is
active, or the dump-stack-for-errors and dump-stack-for-warnings hidden
settings otherwise. When the console is active, you can also log a stack
trace at any point using the special statement debugger;, which will
otherwise have no effect.
* The JavaScript global object is now exposed as a property of itself, called
global. global === global.global.
* The player's ship is now treated as invalid after ejecting or dying.
* Some exceptions thrown in event handlers, which were mistakenly suppressed
before, are now reported.
* Frame callbacks: callback functions that are called once per frame, useful
for driving animations. See http://aegidian.org/bb/viewtopic.php?f=4&t=8941
for more information.
Scripting bug fixes:
* The prototype chains for Oolite-defined objects were previously set up
incorrectly. This has been fixed. An effect of this is that using methods and
properties on singleton constructors instead of their instances stopped
working. For the most common cases, System and Player there are compatibility
accessors which log warning, much like we've done for deprecated methods in
the past. If you want to actually understand what's going on, my best stab at
explaining it is at http://www.aegidian.org/bb/viewtopic.php?f=4&t=8968 .
* As far as scripts are concerned, the player can now only die once.
(Previously, shipDied() would be called twice, once without parameters and
once with.)
* When the player is killed by a q-bomb, the damageType parameter to shipDied()
is now "cascade weapon" (not "energy damage").
* You can now award multiple trumbles, to the delight of customers everywhere.
* "Display models" of ships and planets no longer show up in the system's
entity lists. You can get at the display model for mission screens with the
new mission.displayModel property. The others are intended to be inaccessible.
* Sound.load() now handles customsounds.plist keys properly.
* Ship exitSystem()/AI performHyperSpaceExit now work in interstellar space.
New world events:
* playerWillSaveGame(saveType) (Feature request #5095)
* escapePodSequenceOver() (called immediately before deciding how to rescue or
kill the player after using an escape pod. See
player.setEscapePodDestination()).
New ship events:
* coordinatesForEscortPosition(index) (not exactly an event, but whatever.)
* distressMessageReceived(aggressor, sender)
* shipTakingDamage(amount, fromEntity, damageType) (Feature request #5077)
* shipKilledOther(target, damageType) (fires after target's shipDied(), but
before actually blowing up).
* shipWillLaunchFromStation(station) (previously restricted to player).
Modified ship events:
* commsMessageReceived() now takes a second parameter, the sending ship.
New JavaScript properties and methods:
* Entity collisionRadius
* Entity dumpState() (only available if console is active): writes a bunch of
junk to the log.
* EquipmentInfo canBeDamaged
* EquipmentInfo canCarryMultiple
* EquipmentInfo isAvailableToNPCs
* EquipmentInfo isAvailableToPlayer
* EquipmentInfo isVisible
* EquipmentInfo scriptName
* Global defaultFont (object with one method, measureString())
* Global addFrameCallback()
* Global formatCredits()
* Global formatInteger()
* Global isValidFrameCallback()
* Global removeFrameCallback()
* Global takeSnapShot()
* mission.displayModel: the spinning-ship backdrop, if one is in use. (If you
set spinModel to false in the runScreen() parameter object, it will refrain
from spinning around for easier manual animation.)
* player.setEscapePodDestination()
* player.ship.viewDirection
* player.ship.weaponsOnline
* player.ship.removePassenger()
* Ship subEntityCapacity
* Ship restoreSubentities()
* Ship scriptedMisjump() (previously player-only)
* Station allowsAutoDocking
* Station allowsFastDocking
* System countEntitiesWithScanClass()
* System scrambledPseudoRandomNumber()
Modified JavaScript properties and methods:
* Ship commsMessage() now takes an optional second parameter, the target ship.
* Ship equipmentStatus() now returns "EQUIPMENT_UKNOWN" when passed an
undefined equipment identifier, instead of throwing an exception.
* The Ship property roleProbabilities has been renamed roleWeights.
New AI commands:
* enterPlayerWormhole
* setDesiredRangeForWaypoint
* setTargetToNearestFriendlyStation
* thargonCheckMother
* updateEscortFormation
New AI messages:
* STATION_LAUNCHED_SHIP
Descriptions.plist changes (for translators):
* Additions:
- number-group-size
- number-group-threshold
- number-decimal-separator
- number-group-separator
- autopilot-station-@-does-not-allow-autodocking
- autopilot-multiple-targets
- autopilot-red-alert
- witch-no-motor
- witch-user-galactic-abort
- weapons-systems-online
- weapons-systems-offline
- equipment-primed-@
- equipment-primed-none
- equipment-primed-none-available
- station-docking-clearance-denied
- initializing-debug-support
- charts-distance-f (short-range-chart-distance-f and
long-range-chart-distance-f now reference this; it is not used directly by
the game)
- charts-est-travel-time-f (short-range-chart-est-travel-time-f and
long-range-chart-est-travel-time-f now reference this; it is not used
directly by the game)
- commodity-market
- stickmapper-weapons-online-toggle
- stickmapper-snapshot
- stickmapper-prime-equipment
- stickmapper-activate-equipment
- stickmapper-escape-pod
- stickmapper-cloak
- stickmapper-scanner-zoom
- gameoverscreen-escape-pod
- snapshots-directory-name
- snapshots-directory-name-mac
- rescue-reward-for-@@-@-credits-@-alt
- capture-reward-for-@@-@-credits-@-alt
- speech-synthesis-incoming-message-@
* Deleted/unused:
- initialising-universe
- speech-synthesis-incoming-message - no longer used directly by the game,
used by speech-synthesis-incoming-message-@ so existing localizations will
(possibly) work.
- autopilot-cannot-dock-with-target - still included, but currently unused.
Debug console:
* Previously, the console object was available from within the console as
console, and anywhere else as debugConsole. Both are now global, and console
is preferred.
* Profiling support: call :profile <expression> to see where <expression>
spends its time. For more detailed information, as a bunch of JavaScript
objects rather than a text dump, use
this.profileData = console.getProfile(function() { <expression> }).
* Tracing support: call :trace <expression> to see the hierarchy of function
calls made by <expression>. (The trace is written to the log.) Tracing and
profiling can't be used at the same time.
* When the result of an expression is an array or plain object, its structure
is now pretty-printed. You can also pretty-print the structure of any object
using the :d <expression> macro. I suggest getting into the habit of doing
this to any object you're curious about. :d player.ship is a good starting
point.
* The call() method has been renamed callObjC() to avoid confusion with the
standard Function.prototype.call(). It now works on more objects - just about
everything except vectors and quaternions - and can deal with Objective-C
methods that return numbers, vectors or quaternions.
-------------------------------------------------------------------------------
Changes between Oolite 1.74.1 and Oolite 1.74.2:
* Stopped player from selecting invalid jump destination during jump countdown.
* Fixed docking permissions inconsistencies: all hostile stations now refuse
docking permissions.
* Switching to custom views now allowed in a consistent way.
* Weapon repeat rate is now per-weapon.
* Current zoom level is now preserved when switching HUDs.
* Exhaust plume now resets after hyperspace jumps/scripted teleporting/auto-
docking.
* Fixed overlapping system confusion when loading games and searching for
systems.
* All automatically generated sun skimmers should now be adequately shielded.
* Fixed occasional “bleached”-looking planets on system info screen.
* Fixed wrong distance showing on the short range chart when switching back
from the long range chart.
* Improved default speech synthesis voice (not Mac OS X).
* SystemInfo.systemsInRange() can now be called on a specific SystemInfo object,
instead of always applying to the current system.
* New JavaScript event: shipAttackedOther() (inverse of shipBeingAttacked(),
called immediately after shipBeingAttacked()).
* If a script removes a piece of equipment in the equipmentDamaged() event
handler, no “equipment damaged” message is generated.
* Ship.removeEquipment() now works on damaged equipment.
* Fixed substitution priority for expandDescription() and expandMissionText(),
the local override dictionary now takes precedence over everything else.
* New shipinfo key: station_roll.
* Fixed some cases where AIs could break group handling.
* Shader errors detected in the link phase (generally, problems involving state
shared between the vertex and fragment shader) are now reported properly.
-------------------------------------------------------------------------------
Changes between Oolite 1.74 and Oolite 1.74.1:
* Scripts can once again award and check for trumbles, and the standard trumble
mission once again works. (Limitation: scripts cannot increase the number of
trumbles by awarding more. This will be fixed in 1.75.)
* The nova mission once again awards the appropriate reward on a successful
outcome.
* No more "Witchspace engine malfunction" message when entering a post-nova
system.
* When docked at a secondary station, the default selection on the game menu
screen is "Game Options" rather than "Begin New Game".
* Fixed annoying audio latency when playing first sound under Mac OS X.
* Fixed several JavaScript interface bugs that could cause a faulty script to
halt without any error message.
* Adjusted graphics settings: shader mode is now restricted to Simple for
Intel GMA 950 and ATI Radeon R300 GPU families, and some other tweaks.
* Fixed a material synthesis bug where illumination_modulate_color was ignored
when using emission_and_illumination_map in shader mode (material test suite
test case 7).
* Possible fix for random freezes when using speech synthesis in Windows.
* Various minor bug fixes and tweaks.
New JavaScript methods:
* vector3D.fromCoordinateSystem()
* vector3D.toCoordinateSystem()
-------------------------------------------------------------------------------
Changes between Oolite 1.73.4 and Oolite 1.74:
Gameplay
* With the Advanced Navigation Array you can now see the fastest (as opposed
to shortest) route by pressing control-shift-6 (Mac: control-^).
* Mouse control (full screen mode only) can be enabled with a yaw-and-pitch
flight model by pressing control-shift-M. (As before, shift-M will use a
roll-pitch model.)
* The ECM alarm no longer goes of while youre docked.
* The "Missile/Mine armed" message now specifies what type of missile/mine it
is.
* Greatly improved traffic control dialogues.
* Speech synthesis is now available on all platforms.
* Improved behaviour on various menu screens.
* When dying, the last saved game is now reloaded. (In strict mode, the game
restarts.)
* Auto-saves are now named "Commander Name (autosave)" instead of just
"autosave". There is no auto-save immediately after restarting.
Graphics
* The default shader mode is now Full except on first-generation shader-
capable systems. Full shader mode will be disabled on some or all of those
systems in future, but is currently enabled for testing purposes.
* [Mac] Enabled "Detailed Planets" option.
* Flashers and particle effects look better. Very large flashers no longer pop
into view at unexpectedly close range.
* Reduced aliasing artefacts ("twinkling") in star field and distant flashers/
particles.
* Many of the built-in ships have been edited to fix minor lighting issues.
* Light maps are now supported in shaderless mode (on systems that support
"texture combiners").
* Improved specular highlights in shaderless mode on most systems.
* Hyperspace and dock tunnels look different.
* [Linux] Fixed tearing issues (v-sync).
* Shader mode changes now take effect immediately.
* "Pink oceans" are no longer a lie.
Bug fixes
* Lasers now hit the right shield, even if they happen to be fired by
subentities.
* No more messages about broken equipment, lost targets and so forth after you
die.
* Fixed lighting issues for objects with shaders, notably demo screen and
shipyard lighting, and shadows.
* Fixed blocked docking queue when ships in the queue die.
* The game now distinguishes between overlapping systems properly.
* Hot ships now dump hot cargo (and escape pods).
* Ships can no longer be sold with both types of energy unit (the regular one
is removed).
* [Mac] Full screen mode is once again restored when relaunching as
appropriate.
* [Mac] No longer freezes indefinitely while waiting for iTunes to respond if,
say, you have a dialog box open in iTunes.
* Collisions are now reported to both ships involved.
* It is now possible to use the same mesh with and without smoothing.
* Callbacks passed to Oolite JavaScript methods can now access variables in
the enclosing context.
* JavaScript scripts can no longer survive the transition to strict mode
(except by attaching themselves to the debug console).
* Lots of boring little crashes, log messages and things. Many lots.
Known bugs
* Planets' axes of rotation can now be messed up in several new ways. There is
still no un-messed-up option. (Bug #17243)
* Scooping is too hard. (Bug #17245)
* Exhaust plumes jump around stupidly after a jump. (Bug #17246)
* New substitution dictionary parameter to expandDescription()/
expandMissionText() has lower priority than description.plist entries,
should be higher. (Bug #17193)
* Overlays and underlays have a fixed resolution and interact badly with
texture rescaling. (Bug #17201, technically old)
* Shot cycle times depend on the last weapon fired, not the currently selected
weapon. (Bug #17240, old)
* Scanner markers appear in the wrong place for one frame when summoning an
NPC ship. (Bug #17215, old)
* When overriding a market system-wide ("market" entry in planetinfo.plist),
the specified market is applied to all stations in the system, not just the
main station as was most likely intended. (Bug #17247, old)
* [Mac] Occasional bursts of very loud noise, causing the system to compensate
by lowering effective volume. (Bug #17214, old)
Remember, if it isnt in the bug tracker, we officially dont know about it.
Miscellaneous
* Decreased memory usage, primarily for flashers and textures.
* The log file is a bit more readable.
* [Mac and Windows] Add-ons, log and screen shots can now be found through
menus.
* Added support for working around specific 3D hardware issues. In particular,
the default shader setting is now hardware-dependent, and point and line
smoothing are disabled on some hardware.
* [Mac] Oolite now requires Mac OS X 10.4 or later.
* [Mac] Oolite is now 64-bit clean in Mac OS X 10.6.
* [Windows and Linux]: Screenshots are now saved in PNG format.
OXP/scripting
* New mission screen model: use mission.runScreen(), ignore everything else.
Generally, use missionScreenOpportunity() event to run mission screens.
Several of the old mission properties and methods are deprecated. See
http://www.aegidian.org/bb/viewtopic.php?t=6860 for details.
* All ships now have "real" equipment that can be manipulated through scripts,
not just the player. Several new equipment-related methods and properties
have been added. Damage status is separated from equipment type (no more
_DAMAGED suffixes in JavaScript). ship.hasEquipment() has been deprecated.
* Script state no longer persists when the game resets/reloads. In particular,
the reset() event is gone; instead, scripts are reloaded from scratch and
startUp() is called again. Also, the ability to create "persistent" timers
that survived resets is gone.
* Background and overlay images: can be set with screenbackground.plist or
setScreenBackground() and setScreenOverlay() functions.
* Whitelisting is now fully in effect: unpermitted methods in legacy scripts,
AIs or HUD dial definitions will be ignored.
* The "homebrew" plist parser has been removed.
* Ship.remove() now takes an optional boolean parameter, suppressDeathEvent.
If true, the ship will not be sent a shipDied() event (and death_actions
will not fire.) A new event, shipRemoved(), is sent regardless (before
shipDied()).
* The shipLaunchedFromStation() event now passes the station as a parameter.
* New context string for shipDied(): "cascade weapon".
* JS timers stop if their callbacks "this" object (the first parameter to the
constructor) dies.
* expandDescription() and the new expandMissionText() can optionally be passed
a dictionary of substitution pairs, as in:
expandDescription("My ball is [my_color].", { "my_color": "red" });
Bug: at the moment, description.plist values take precedence. In 1.74.1,
this will be reversed.
* Ship models can now include per-vertex normals, so you can import models
with smooth parts directly from a real live 3D editor. Unfortunately tangent
generation for such files is completely broken, so they cant be normal
mapped at the moment.
* Flashers are now taken into account when determining a ships cull distance.
This means ships with ridiculous giant flashers are now seen from much
further away. It also means they affect performance from much further away.
Also, distant flashers fade out rather than suddenly disappearing.
* Player ships with player-only shader bindings can now be displayed on the
demo screen and shipyard screen without causing errors. (The same fix also
applies to the doppelganger created when the player ejects.)
* Ship "personality" numbers and "random" shader uniforms are now generated in
a consistent fashion for the player, and transferred from the display model
when buying ships. This means player ship shaders can usefully use "random"
parameters.
* Cube map textures are now supported - especially useful for, but not limited
to, planets.
* Greyscale+alpha PNG textures are now supported.
* Changes to material model: renamed diffuse, specular, ambient and emission
to diffuse_color, specular_color, ambient_color and emission_color. (The old
names are still supported for compatibility.) Added specular_modulate_color
and emission_modulate_color, and added illumination_modulate_color; these
are used to recolour the corresponding texture maps (specular and emission
used to do this, but are now only used when theres no texture map). See
http://www.aegidian.org/bb/viewtopic.php?p=109378#109378 for details.
* It is now possible for a texture to be specified as a specific channel of a
file, as in { name = "my_texture.png"; extract_channel = "r"; };. This comes
with some overhead, but makes it easy to reuse channels of shader effect
maps as emission or illumination maps in non-shader mode.
* Shaders no longer have implicit tex0, tex1 etc. uniforms. Easily fixed:
uniforms = ( tex0 = { type = "texture"; value = 0; }, ... );
* Subentities and flashers can now be specified as dictionaries instead of
non-descriptive strings.
* Flashers with a frequency of 0 now always have full intensity.
(Previously, it was always 0.5.)
* Using the new dictionary-type definition, flashers can now be any colour.
They can also take an array of colours and switch between them in sequence.
Use black to create intermittent flashers.
* Ship radar marker colours can be specified in shipdata.plist as
scanner_display_color1 and scanner_display_color2, and in JavaSCript as
scannerDisplayColor1 and scannerDisplayColor2.
* The ship property cargo_carried can now be set to "SCARCE_GOODS" or
"PLENTIFUL_GOODS". The selected goods then depend on the prices at the local
market.
* Improved missile HUD icons. Outlines are now of consistent thickness.
Arbitrary concave and complex (self-intersecting) polygons are supported,
and more than one contour may be used (by specifying an array of arrays). To
maximise compatibility with existing missiles, the relatively obscure
Positive polygon winding rule is used; you can punch holes by using polygons
with opposite winding order to the first one. Convex corners are bevelled at
30° or sharper angles. For troubleshooting, use the polygon-sprite-dump-svg
hidden setting (http://wiki.alioth.net/index.php/Hidden_Settings_in_Oolite).
* Support for HUD "dial" for joystick sensitivity,
drawStickSensitivityIndicator:. See comment in hud.plist.
* HUD elements can be adapted to window aspect ratio using the new x_origin
and y_origin properties. -1 is bottom/left, 1 is top/right, 0 (default) is
centre.
* HUD elements can have their alpha modified individually.
* New OXPMessages.plist to put notifications on the startup screen.
* New generate-ai-graphviz hidden preference
(http://wiki.alioth.net/index.php/Hidden_Settings_in_Oolite) to dump flow
control graphs for AIs.
* NPC missiles are now associated with equipment types (so that appropriate
EquipmentInfo objects can be used to describe them). If no equipment.plist
entry exists, an EquipmentInfo will be synthesised as needed.
* Carrier AIs now receive DOCKING_REQUESTED and DOCKING_COMPLETE messages in
connection with docking clearance requests.
* New CARGO_DUMPED AI message.
* Overheating behaviour changed as per
http://aegidian.org/bb/viewtopic.php?t=6922.
* Giving player a trumble may fail if they already have some.
* Better error reporting in various situations.
New world events:
* compassTargetChanged()
* guiScreenWillChange()
* missionScreenOpportunity()
* shipSpawned() (Sent immediately after ship event of the same name)
New ship events:
* shipCloakActivated()
* shipCloakDeactivated()
* shipRemoved()
* shipTargetDestroyed() - replaces shipDestroyedTarget()
* shipTargetLost() - replaces shipLostTarget()
New JavaScript properties and methods:
* expandMissionText()
* setScreenBackground()
* setScreenOverlay()
* clock.addSeconds()
* console.displayFPS
* console.glVendorString
* console.glRendererString
* console.glFixedFunctionTextureUnitCount
* console.glFragmentShaderTextureUnitCount
* console.platformDescription
* console.shaderMode
* console.writeLogMarker()
* equipmentInfo.scriptInfo
* EquipmentInfo.allEquipment
* mission.setInstructions
* mission.runScreen()
* oolite.gameSettings
* planet.texture
* planet.orientation
* playerShip.addPassenger()
* playerShip.awardContract()
* playerShip.awardEquipmentToCurrentPylon()
* playerShip.compassMode
* playerShip.compassTarget
* playerShip.engageAutoPilotToStation()
* playerShip.disengageAutoPilot()
* playerShip.hud
* playerShip.hudHidden
* playerShip.manifest
* playerShip.targetSystem
* ship.abandonShip()
* ship.aftWeapon
* ship.awardEquipment() (replaces playerShip.awardEquipment())
* ship.canAwardEquipment()
* ship.cargoSpaceAvailable
* ship.cargoSpaceCapacity
* ship.contracts
* ship.equipment
* ship.equipmentStatus() (replaces playerShip.equipmentStatus())
* ship.exitSystem()
* ship.fireMissile() (NPCs only)
* ship.forwardWeapon
* ship.fuelChargeRate
* ship.isCargo
* ship.isDerelict
* ship.isMissile
* ship.isMine
* ship.isRock
* ship.isBoulder
* ship.isWeapon
* ship.lightsActive
* ship.maxThrust
* ship.missileCapacity
* ship.missiles
* ship.passengers
* ship.portWeapon
* ship.removeEquipment() (replaces playerShip.removeEquipment())
* ship.savedCoordinates
* ship.scannerDisplayColor1
* ship.scannerDisplayColor2
* ship.selectNewMissile()
* ship.setCargo()
* ship.setEquipmentStatus() (replaces playerShip.setEquipmentStatus())
* ship.setMaterials()
* ship.setShaders()
* ship.starboardWeapon
* ship.thrust
* ship.thrustVector
* ship.velocity
* station.dockedContractors
* station.dockedDefenders
* station.dockedPolice
* station.equipmentPriceFactor
* station.launchDefenseShip()
* station.launchMiner()
* station.launchPatrol()
* station.launchPolice()
* station.launchScavenger()
* station.launchShuttle()
* station.launchShipWithRole()
* station.suppressArrivalReports
* system.addGroup()
* system.addGroupToRoute()
* system.addShips()
* system.addShipsToRoute()
* systemInfo.coordinates
* systemInfo.galaxyID
* systemInfo.systemID
* systemInfo.distanceToSystem()
* systemInfo.routeToSystem()
* SystemInfo.filteredSystems()
Deprecated JavaScript properties and methods:
* mission.choice - convert to mission.runScreen().
* mission.runMissionScreen() - convert to mission.runScreen().
* mission.showShipModel() - convert to mission.runScreen().
* mission.setBackgroundImage() - convert to mission.runScreen().
* mission.setMusic() - convert to mission.runScreen().
* mission.setChoicesKey() - convert to mission.runScreen().
* mission.clearMissionScreen() - convert to mission.runScreen().
* planet.setTexture() - assign to planet.texture instead.
* player.hasEquipment() - use equipmentStatus() instead.
* playerShip.awardCargo() - assign to manifest entry instead (e.g.
playerShip.manifest["Food"] += 3).
* ship.availableCargoSpace - use ship.cargoSpaceAvailable instead.
* ship.cargoCapacity - use ship.cargoSpaceCapacity instead.
* timer.isPersistent - no replacement.
New/modified shipdata keys:
* auto_ai (fuzzy boolean, default: true): now applies to escorts.
* cloak_passive (boolean, default false): if true, ships cloak is disabled
when firing weapons.
* debris_role (role, default "boulder" or "splinter"): specifies the type of
debris generated when an asteroid or boulder breaks up.
* docking_pattern_model (DAT file name): replace docking effect model (see the
rock hermit for an example).
* has_scoop_message (boolean, default true): if false, the standard
"<something> scooped." message is suppressed when this ship is scooped.
* market (commodities.plist key): for carriers, specifies the commodity market
to use.
* max_missiles (number, default: same value as "missiles"): now applies to NPC
ships.
* missile_load_time (number, default 0): specifies the minimum interval
between missile shots.
* scanner_display_color1, scanner_display_color2 (colour specifiers, default:
depends on scan class): see above.
* Inconsistent shipdata keys "escort-role", "escort-ship", "hasShipyard",
"isCarrier" and "scanClass" have been supplemented with idiomatic
"escort_role", "escort_ship", "has_shipyard", "is_carrier" and "scan_class".
If both are present, the new one is used. like_ship merging does the right
thing.
New AI commands:
* checkAegis
* checkEnergy
* setCoordinatesFromPosition
* setThrustFactorTo:
-------------------------------------------------------------------------------
Changes between Oolite 1.73.3 and Oolite 1.73.4:
* Fixed nova mission.
* Fixed missing planet name in Constrictor Hunt mission.
* Fixed bug where subentities of sold ships could come back to haunt your log.
* When buying a ship which does not specify a HUD, the default HUD is now used
immediately.
* Scooping can no longer overfill your cargo bay.
* Fixed some cosmetic issues with equipment list UIs.
* removeEquipment scripting method now works with damaged equipment.
* awardEquipment scripting method now works with EQ_REMOVE_MISSILES.
* Fixed spurious OXP verifier warning about display_name key.
* Hyperspeed is now turned off when dying.
* [Windows] Installer now uninstalls old versions correctly.
* [Mac] Fixed an error where random (often very loud) noise could be played
through the right channel at the end of long sounds.
* [Mac] Game now starts in full-screen mode if it was in full-screen mode when
last quit.
* [Non-Mac] Fixed a problem with mouse control.
* [Non-Mac] Added option to suppress splash screen, which forces the game to
run with software rendering on some systems.
-------------------------------------------------------------------------------
Changes between Oolite 1.73.2 and Oolite 1.73.3:
* Fixed failure on startup when two OXPs define the same equipment.
* Partial fix for bug where the system data screen showed a planet in systems
that had gone nova.
* Fixed AI habit of trying to steal cargo right out of other ships' scoops,
with hilarious results.
* [Mac] Docking clearance, the wormhole scanner and targeting of incoming
missiles are now enabled.
* [Mac] Fixed incompatibility with Debug OXP.
* [Mac] Fixed minor leak in Snow Leopard resulting from the recent crash
report enhancement.
-------------------------------------------------------------------------------
Changes between Oolite 1.73 and Oolite 1.73.2:
* Fixed incorrect counting of cargo when docked, which partially resulted in
misbehaviour of -availableCargoSpace.
* Fixed laser purchasing bug.
* Fixed bug whereby after buying an item, the equip ship screen would be
refreshed, even if this screen had ceased to be the active one.
* Various cosmetic and spelling errors fixed (especially 'targetting').
* Improvements to Mac OS X 10.6 crash reports.
* Legacy scripts inside CARGO_SCRIPTED_ITEMs now work again. (bug #15454)
* Fixed bug that allowed players to get rich quickly by selling missiles at
start of game and then going to the shipyard screen.
-------------------------------------------------------------------------------
Changes between Oolite 1.72.2 and Oolite 1.73:
Gameplay
* Made procedurally textured planets a game option. Can be switched on/off in
settings. (This feature is currently not available on the Mac environment.)
* Added splash screen and application icon to Windows and Linux versions.
* Added support for tangent space effects in shaders, including normal
mapping.
* Default shader now supports normal mapping and parallax mapping options.
* Game over screen now displays ranking as well as credits.
* Made passenger carrier market a bit more interesting by rewarding long taxi
runs. Credits paid increase exponentially with number of hops required.
Reputation of player is also taken into account.
* Interface change: While in flight, pressing H from the local galaxy map will
initiate hyperspace jumps - before, the player had to exit the map to do so.
* Added new equipment: Wormhole Scanner.
* Implemented targeting of nearest incoming missile. This is activated using
Shift+T or an assigned joystick button.
* Sell/buy as much as possible on the F8 screen via Shift+left/right. Prefer
to buy with Shift+Return.
* Time Acceleration Factor. Activated while in pause mode with left and right
arrow keys. Can be from 1/16 to 16 times the normal time. TAF is visible in
the FPS display.
* Raised the limit on gold, platinum and gemstones to 10000 units.
* Various AI changes. Most noticeable is that docking ships are now more
likely to react to attacks, and less likely to crash during the final docking
stage with bigger ships.
* Find systems on the long range chart screen: all possible matches now
highlighted while typing.
* Last save directory is now saved in prefs; oolite-saves is only created when
defaulting to it.
* Repositioned message row. Messages are now fully readable in standard
Oolite.
* Equipment on the status screen now displays on multiple screens when needed,
instead of overwriting the message and HUD areas.
* Repeating messages: after 6 seconds of displaying a message, the same
message is shown again. They're discarded otherwise, as before.
* Game settings screen: Mac fullscreen resolution changes are now immediate.
* If no external views are defined for player ships, the cobra3 ones are used
instead.
* The left and right square bracket keys can now be used as controls.
* Joystick hats are now supported on the Windows and Linux builds.
Expansion packs
* Icons and symbols can now be associated to beacons, and will be shown on the
advanced compass.
* Subentity definitions in shipData can now be dictionaries.
* Removed restrictions on vertex and face counts for ship models.
* Introduced the cloak_passive ship dictionary key. When set to true (or yes),
it will cause the cloaking device to be deactivated whenever a main weapon
or missile is fired, making the cloak somewhat less of a superweapon.
Default is no.
* CLASS_NO_DRAW can be used inside plists for specific (ghost?) ships again,
as in 1.65 and before. However, the system populator still overrides
CLASS_NO_DRAW for incoming ships.
* Customsounds.plist now accepts arrays, in a similar way to descriptions.plist.
* Added new system settings to planetinfo.plist: "sun_radius" (float),
"sun_color" = (any colour specifier), "corona_shimmer" = (float: 0-1),
"corona_hues" = (float: 0-1), "corona_flare" = (float: 0-1).
Two more settings: "texture" = (string), "texture_hsb_color" = (hsb color)
available when procedural textures are active.
* Renamed planets: %H and %I now use scripted planet names, including inside
planet descriptions.
* Plural handling for languages with more than one plural form.
* requires_equipment, requires_any_equipment and incompatible_with_equipment
restrictions now work for weapons.
* New %J token for string expansion: expands %J000 to %J255 to its
corresponding system name.
* Implemented the key cloak_indicator_on_status_light in hud.plist (Off by
default).
* Added example of drawing a yaw indicator bar (disabled by default).
Scripting
* Work towards securing legacy scripts, AIs and shader uniform bindings by
whitelisting methods. Game will now print an error message in the log if
non-whitelisted methods are used in legacy scripts or AIs.
* Added class ShipGroup. Groups are now defined in a different way than
previously. ShipGroups are exposed to JS as a property of ships.
* Made time acceleration factor controllable by JavaScript using the
read/write timeAccelerationFactor global property for bullet-time-like
effects.
* PlayerShip.removeEquipment() now works for missiles. Also,
awardEquipment()ing a missile when the player has none now causes the new
missile to be selected.
* Reworked Aegis messages. sun aegis is recognised, approaching planet event
is restored, all handlers have a planet or station as argument.
* Added the JavaScript read/write player ship property scriptedMisjump.
Boolean value, scripted misjumps have a lifespan of one jump only. After
that, auto reset occurs and subsequent jumps become normal ones again.
* Bounty for script added pirates and traders now follow populator rules when
auto_ai is true.
* JavaScript system.info.xx & system.infoForSystem([present galaxy],[system
number]).xx are read/write now. Reading infoForSystem values from outside the
present galaxy is not supported and will return null. However, writing system
info anywhere in all galaxies is fully supported at all times.
New event handlers:
* stationLaunchedShip(ship)
* playerWillEnterWitchspace()
* playerTargetedMissile(missile)
* playerBoughtNewShip(ship)
* arrivalReportScreenEnded()
New JavaScript methods:
* ship.setAIState()
* ship.fireECM()
* player.ship.galaxyCoordinates()
* player.ship.cursorCoordinates()
* station.dockPlayer()
* player.addMessageToArrivalReport(message)
New AI commands:
* dropMessages
* debugDumpPendingMessages
* exitAIWithMessage:
* messageSelf:
* abortAllDockings
* throwSparks
* randomPauseAI:
* launchIndependentShipWithRole:
* checkOwnLegalStatus
* setSpeedToCruiseSpeed
Changed commands:
* Added delay parameter to playerStartedJumpCountdown event.
* Made Entity.position and Entity.orienation read/write, and deprecated
Entity.setPosition() and Entity.setOrientation()
* Ship.exitAI() now can specify a message. Default is RESTARTED.
* Deprecated system.goingNova and system.goneNova in favour of existing Sun
equivalents.
Bug fixes
* Fixed far away docking of ships. Ships that start the dockingAI further away
than 2.5 times scanner distance from a station are sent back to their
original AI.
* SDL & Windows fixes: reworked Windows port to resize game view without
texture loss. Splash screen for both Linux and Windows. When switching
fullscreen resolutions using F11 Oolite now saves the new fullscreen
resolution.
* Fixed negative cargo bug shown in shipyard for ships with cargo capacity
less than 5t that had EQ_PASSENGER_BERTH as optional equipment.
* Oolite now takes incompatible equipment into account when generating ships
for sale.
* Fixed weapon position. It now follows the defined position in shipData
instead of always using the default one.
* Fixed an inconsistency in oolite-font.plist.
* Prevent ships from escorting things with different scan classes.
* Pirates returning to their own pirate cove are now correctly added to the
station defence ships.
* Cloak no longer works as an energy generator when not cloaked.
* Escorts cannot have escorts of their own anymore. This avoids memory
overflows in cases of recursive escort-ship, escort-role and mutual escort
ship references between two or more ships.
* Motherships with a clean legal status now only accept clean escorts.
* Fixed hasShipyard.
* Fixed crash when max_missiles is set to higher than maximum allowed (16).
* Fixed bug in performFaceDestination where a ship would hang still in space.
* launchTrader now launches traders with correct escorts for that ship type.
* sun_radius loop bug: should now cope with all sun_radius values.
* Limited checkcourseToDestination to scanner range so it only changes course
when it actually "sees" something.
* scanForOffenders no longer finds fellow group members.
* Minimum player-bouy distance when entering system raised from 500 to 750
metres.
* Resolved bug that caused ships with subentities to explode inside closed
structures and other sudden collisions near bigger ships.
* More systemInfo changes for the current system are now validated and are
effective immediately, including most sun settings, main planet texture, and
derivative ones (ie commodity market/economy, ship and equipment markets/
techlevel). Properties not yet effective immediately produce a warning.
* AI command setCourseToPlanet no longer sets course to moons, only to the
closest planet.
* Fixed joystick precision mode switch causing continuous yaw to left (Linux
and Windows builds only).
-------------------------------------------------------------------------------
Changes between Oolite 1.72.1 and Oolite 1.72.2:
* Fixed bug in selecting ships after a spawn condition blocked the initial
selection. This was causing disappearing buoys and police ships with some
OXPs.
* Fixed a bug where by flooding the market when selling a ship, cargo remained
on the newly acquired ship even if said ship had no cargo carry capability.
Now, all cargo that cannot be sold when changing ships due to flooding the
market will be lost.
* Fixed an AI bug where a police ship that received a distress call while
returning to the station could get stuck after dealing with the call.
* Fixed a bug where defense ships launched by stations had a patrol AI instead
of a combat AI.
* Cloaking device mission now works again.
* Background images in HUD are now affected by HUD alpha (and thus HUD hiding).
* key_docking_clearance_request is now set in keyconfig.plist.
* Possible fix for texture corruption bug on Windows machines with more than
two processors.
* Cargo pods added by scripts now have cargo.
* Fixed a problem with JavaScript system property setup.
* playerStartedJumpCountdown JS event is now always playerStartedJumpCountdown
and never playerStartedJumpCountDown.
* Improved various error messages.
-------------------------------------------------------------------------------
Changes between Oolite 1.72 and Oolite 1.72.1:
Crashes:
* (Non-Mac) Fixed crash when no sound device available.
* Fixed a bug making random ship selection take unnecessarily long when script
conditions failed - sometimes infinitely long.
* Strict play mode partially fixed - switching no longer crashes, but OXP
world scripts keep running, which they shouldn't.
* Fixed crash when colliding with a ship whose model couldn't be loaded, and
took steps to ensure that such ships don't exist anyway.
Game behaviour:
* Fuel now costs money as nature intended.
* Thargoid death curses no longer have infinite range.
* Tharglets created by scripts are now unpiloted.
* Probabilities for high-tech optional extras on ships are now calculated
correctly.
* Fix for stations/carriers becoming main station in interstellar space.
* Docking clearance cancelling works as intended, and docking clearance is not
required for escape pods.
Technicalities:
* (Mac) Enabled docking clearance system.
* Trumble sounds fixed.
* Fixed bug where going into any of the F6 screens with the injectors key
pressed would result in injectors continuing to run even after releasing the
key.
* SystemDescription.dot file (a tool for people translating Oolite) now
appears in the same directory as the log on all systems.
* Possible fix for rendering problems with Windows and ATI cards (but it's a
long shot).
Ship registry:
* Ships whose model can't be found are now dropped from the ship registry
(with a warning message).
* is_template now works properly (specifically, ships inheriting from
templates do not inherit the is_template value and get dropped).
* Subentities are no longer required to have roles.
* Ships with bad subentity definitions are reported and dropped.
* New ship key is_external_dependency suppresses warning when like_ships
resolution fails. (The ship is silently dropped.)
Misc configuration:
* "hasShipyard" shipdata key now works.
* Setting a shader uniform to a constant float with short syntax (e.g.
myUniform = 42;) in OpenStep-format property lists now works.
* Overall HUD alpha now affects comm log and message log. This also affects
hiding the HUD ("o" key while paused).
JavaScript:
* Galactic hyperspace behaviour properties updated in accordance with documentation
(http://wiki.alioth.net/index.php/Oolite_JavaScript_Reference:_PlayerShip#galacticHyperspaceBehaviour).
* playerBoughtEquipment event now fires even when equipment cost is 0.
* player.bounty fixed.
* player.spawnOne() now works (with deprecation warning, will be removed for
version 1.74).
* equipmentDamaged and equipmentDestroyed events now consistently provide the
equipment key rather than localized name.
* player.ship.setEquipmentStatus() now raises an equipmentDamaged event when
appropriate.
* Passing invalid parameters to Sound.play(), Sound.playSound(),
expandDescription() and displayNameForCommodity() no longer crashes Oolite.
* Ship.heatInsulation setter now works properly.
* System.infoForSystem() no longer causes delayed crash.
-------------------------------------------------------------------------------
Changes between Oolite 1.71.2 and Oolite 1.72:
* New "ship registry" handles ship types and ship roles more robustly and
efficiently. Benefits include less stutter when generating ships (especially
traders and pirates) and various shipdata.plist errors being reported up
front (when rebuilding cache). Also adds new shipdata-overrides.plist and
shipyard-override.plist, which can be used to selectively override certain
properties of ships without redefining them completely. Overrides are
silently ignored for ships that don't have a "primary"
shipdata.plist/shipyard.plist entry.
* New equipment type handling. This is less far-reaching than the ship
registry, and isn't used everywhere, but it's exposed to JavaScript as
EquipmentInfo objects (see EliteWiki for documentation).
* Missiles no longer collide with parent on launch.
* Disarmed missiles now stay disarmed when cycling through targets with
Target System Memory Expansion.
* Workaround for key conflict in old BBC key config files: if both roll and
yaw are assigned to ,/. keys, yaw is disabled.
* Fix for NPCs becoming offenders when counterattacking player.
* Only one energy unit is allowed at a time. Thargoid Plans mission script now
reflects this.
* Approaching non-main planets (including the sun) no longer points compass at
main station.
* Player ship turrets now work.
* Escort turrets now work.
* Carriers can now control their launched defenders.
* Miniature planets from F7 screen no longer float around invisibly
mass-locking you.
* (Non-Mac) Fix failure to launch when cache is corrupt.
* Fixed rounding behaviour of some currency displays.
* Suppressed pointless "Cannot iterate into directory" messages.
* (Non-Mac) Support for joysticks with up to 16 axes and 64 buttons. If you
need more than 16 axes, I shall require photo evidence.
* More (all?) sound goes through customsounds.plist.
* (Non-Mac) SDL sound code rewritten to be more like Mac code. Most noticeable
effect is that more than one instance of a sound can be played at once. As a
result, afterburner2.ogg is no longer needed.
* (Non-Mac) Logs are now written to ~/.Oolite/Logs/under Linux and
\Oolite\Logs\ under Windows. (Oh yes, I intended to change it to GNUstep
default locations. Oh well.) OXP verifier logs also end up there, named by
OXP.
* (Mac only) Updated Smart Crash Reports to 1.5 for Leopard compatibility.
* Similarly, showShipModel: no longer generates escorts.
* More stuff made localizable.
* New is_template shipdata.plist property. Set this to yes/ for ships which
are only used through like_ships and are not intended to be used directly.
If your (otherwise working) OXP generates warnings about ships with no roles
or model attribute, you probably need this.
* New is_submunition shipdata.plist property for cluster weapons. Missiles
with this property inherit their launcher's current target.
* New shipdata.plist key hyperspace_motor_spin_time to modify jump countdown
time.
* New planetinfo.plist keys star_count_multiplier and nebula_count_multiplier.
(Can be used in universal section to modify overall star and nebula density.)
* Putting planets in interstellar space no longer breaks the game.
* Failure to set up a station is now handled somewhat more gracefully, with
useful diagnostic log messages.
* Added commsMessageByUnpiloted: for AIs and legacy scripts.
* switchLightsOn/Off now applies to subentities.
* Fixed some spurious errors in OXP verifier.
* Condition flags for equipment are now enforced when adding items directly,
not only when shopping. More condition flags are now available. The full
list is: available_to_all, requires_empty_pylon, requires_mounted_pylon,
requires_clean, requires_not_clean, portable_between_ships,
requires_free_passenger_berth, requires_full_fuel, requires_non_full_fuel.
Other types of condition are: requires_cargo_space, requires_equipment,
requires_any_equipment, incompatible_with_equipment. Legacy script
conditions can also be used (only apply to player).
* New HUD plist key reticle_target_sensitive makes target selection box go red
when active target is in position (requires Scanner Targeting Enhancement).
Also exposed to JS as player.ship.reticleTargetSensitive.
* Fix for the occasional 15-20 seconds slowdowns experienced during gameplay.
* Some AI tweaks from Eric, and general cleanup of AI formatting.
* Docking clearance support, see http://www.aegidian.org/bb/viewtopic.php?t=5060
* Oolite now builds for Irix, but (last I heard) doesn't run due to threading
issues in GNUstep.
* New shader uniform types randomFloat, randomUnitVector, randomVectorSpatial,
randomVectorRadial and randomQuaternion (which supports asMatrix option,
default is true).
* Various changes for 64-bit compatibility under OS X and Linux. This release
is not 64-bit, though.
* Oolite can now correctly count CPUs under Linux, not that this makes much
difference.
* New web site at oolite.org. (Hey, it's in the subversion log.)
* Spot the graphical tweaks!
JavaScript changes:
* Potential crashing bugs throughout JS code fixed (exceptions weren't being
handled properly). Also added more and better JS error checking.
* missionVariables object no longer treats strings starting with digits but
containing letters as numbers.
* AI sendScriptMessage: can now pass parameters. The AI statement
"sendScriptMessage: foo bar baz" is equivalent to the JS
ship.script.foo(["bar", "baz"]). Note that the parameters are passed as an
array of words.
* Debug console now allows definitions to be split over several lines; for
instance, you can type "this.test = function() {" on one line and
"return 3: }" on the next. Enter an empty line to cancel multi-line input.
Lines which are considered "incomplete" are echoed with a _ prefix instead
of >. (Mac-only: the integrated console also supports multi-line input using
option-return, as it always has.)
* New global function randomInhabitantsDescription(plural : Boolean) : String.
* Entity.call() is now only available when debug OXP is active.
* Entity.isValid now works for invalid entities.
* New Ship properties and methods: desiredSpeed, cargoSpaceUsed,
availableCargoSpace, passengerCount, passengerCapacity, remove().
* Renamed Ship properties: maxCargo -> cargoCapacity, shipDescription -> name,
shipDisplayName -> displayName.
* player split into player and player.ship. All Entity/Ship methods now live
in player.ship. There are compatibility accessors in player, which will be
removed in future (and generate warnings).
* New Player properties and methods: contractReputation, passengerReputation,
increaseContractReputation(), decreaseContractReputation(),
increasePassengerReputation(), decreasePassengerReputation(),
reticleTargetSensitive, rank, legalStatus, forwardShield, aftShield,
maxForwardShield, maxAftShield, forwardShieldRechargeRate,
aftShieldRechargeRate.
* player.orientation is now right way around.
* New System properties and methods: info and infoForSystem(), equivalent to
legact setPlanetInfo: and setSpecificPlanetInfo:. For example,
system.info["foo"] = "bar" is equivalent to "setPlanetInfo: foo bar".
Currently, values can only be written, not read. Also
countShipsWithPrimaryRole(), pseudoRandomNumber, pseudoRandom100,
pseudoRandom256.
* system.setSunNova() deprecated in favour of system.sun.goNova().
* Better error messages for legacy_addShip*() family.
* system properties now make some sort of sense in interstellar space.
* Vector renamed to Vector3D.
* Ability to pass several numbers instead of a vector or quaternion is
deprecated. Use an array or Vector3D instead. (For instance, instead of
ship.position.add(100, 0, 0) use ship.position.add([100, 0, 0]).)
* New script events: playerBoughtEquipment(equipmentKey),
equipmentDamaged(eqipmentKey), equipmentDestroyed(equipmentKey).
* New events for approaching and leaving planets:
shipEnteredPlanetaryVicinity(planet)/shipExitedPlanetaryVicinity(planet) for
JS, CLOSE_TO_PLANET/AWAY_FROM_PLANET for AIs. (Actually, I'm not clear on
how CLOSE_TO_PLANET differs from AEGIS_CLOSE_TO_PLANET. If none, suggest
removing CLOSE_TO_PLANET. Kaks?)
* shipLaunchedEscapePod() is now triggered slightly earlier, before resetting
legal status and trumbles.
NOTE: one warning generated by the ship registry is disabled by default for
the benefit of Realistic Shipyards, namely the warning when a shipyard.plist
entry does not correspond to a shipdata.plist entry. This warning will be
enabled by default in 1.73. To enable it, change
shipData.load.shipyard.unknown to yes in logcontrol.plist.
-------------------------------------------------------------------------------
Changes between Oolite 1.71.1 and Oolite 1.71.2:
* Fixed delayed crash after looking at system info screen in interstellar
space.
* Fixed crash when an array in descriptions.plist is empty.
* Suns, Q-mine explosions and wormholes are now the same size no matter which
direction youíre looking at them from.
* Fix for ships launching with the wrong AI.
* ECM, space compass and ident are now reset properly when restarting the game.
* Fixed HUD alpha/hiddenness for empty missile slots.
* Fixed glitch where it would become impossible to stop playing music after
attempting to play music that does not exist.
* Creating a JavaScript timer with a negative delay value now creates a paused
timer as documented.
* Player.alertEnergy and Player.alertHostiles now work on Windows and Linux.
* Squashed spurious ìship generated with infinite top speed!î log messages.
-------------------------------------------------------------------------------
Changes between Oolite 1.71 and Oolite 1.71.1:
* Fixed hang when entering interstellar space.
* Cloaking device mission now works.
* Credit quantities now display correctly on big-endian systems (such as
PowerPC Macs).
* Fixed problem with double-clicking on load/save screen.
* Growl mode strings can now be localized (Mac OS X only).
-------------------------------------------------------------------------------
Changes between Oolite 1.70 and Oolite 1.71:
Stability:
* Fixed the nasty bug that would occasionally cause Oolite to crash after
having consumed all memory during system population.
* Fixed the selling ship with subentities causes crash bug.
* Fixed strict mode to/from crashes.
* Fixed unmarkSystem crash.
* Removed crash when loading save game with 'stale' oxp missiles (see
http://aegidian.org/bb/viewtopic.php?p=47921&highlight=#47921)
JavaScript:
* All internal game scripts are now JavaScript -- adopted somewhat twiddled
versions of Eric Walch's scripts.
* Implemented JS sound and music interface.
* Fixed scriptActionOnTarget: not setting the script target correctly (note:
scriptActionOnTarget: is now deprecated, use safeScriptActionOnTarget:
instead).
* Added shipHitByECM(pulsesRemaining) script event.
* Added JS systemNameForID() and systemIDForName() methods.
* JS mission.choice is now read-write, mission.resetMissionChoice() deprecated.
* Added JS Ship methods dumpCargo(), ejectItem() and ejectSpecificItem().
* Added playerEnteredNewGalaxy(newGalaxyNumber) script event.
* Added missionChoiceWasReset() script event.
* Most AI reactToMessage: calls now also have a script event; see
http://www.aegidian.org/bb/viewtopic.php?p=47620#47620
* Setting the player's target through JS now works as expected (locks on ident,
with UI feedback, unless a missile is selected in which case current missile
is locked on to the new target).
* Added Ship.explode(), which kills any ShipEntity through energy damage
including the main station. Once again made blowing up the main station with
blowUpMainStation (or explode()) work.
* Added experimental planet.setTexture in JavaScript. Usage restricted to
shipWillExitWitchspace() & shipWillLaunchFromStation().
Bugfixes:
* Fixed a serious memory leak on the short-range chart screen. Other smaller
leaks plugged as well.
* Linux shader support added (did not work with 1.70).
* Fix for trade-ins (like selling missiles or replacing lasers) not working.
* Fix for scripting bug, whereby when adding a second ship to the system with
the same script that was active before, all references to player, system,
mission, worldScript etc. were gone and using them was giving an error in
the log.
* Fixed the "too many saved games in oolite-saves causes weird behavior" bug.
* Fix for OXP verifier turning off log message classes.
* Fix for bug where awardEquipment:EQ_TRUMBLE while a trumble infection is in
progress would innoculate the player against future trumble infections. Also
added code to un-innoculate existing saved games.
* Fixed laser purchasing mishandling bug in equip ship screen.
* Fixed a small bug that was there since 1.65, whereby switching to equip ship
screen would sometimes display information for equipment other than the
normally selected missile.
* Fixed bug where purchasing a ship with an upgraded laser does not reward the
laser (bug #12791).
* Fixed bug whereby when docked with a non-primary station, the New Game option
would be unreachable in the menu, although it was shown as available.
* Fix for Asps not having lasers when bought.
* Fuel injectors on NPC ships are not allowed any more if we are on strict
mode.
* Made newly added ship entities get crews only if they are not scanClass
CLASS_CARGO or CLASS_ROCK. This way, when scooping scripted cargopods or
boulders, for example, the correct scooped commodity is diplayed, instead of
messages of the type 'You have captured a slave'.
* Reverted laser rendering to mode where lasers are clearly visible against the
sun.
* Resolved music not looping problem in SDL builds.
* Station defense Viper's AI fixed and deafult maximum number of station
defenders launched when station is under attack increased from 3 to 8. Key
max_police sets the main stations defenders / number of system patrols.
* Sticky messages bug has been most likely fixed.
* Fixed bug for APPROACHING_SURFACE returning incorrect results.
* Shuttles now take off directly away from the planet (bug #12212).
* Bugfix for very long passenger names in the Carrier Market.
* Fixed bug where scripted cargo pods do not award cargo as expected when
scooped (bug #12659).
* Added the CLASS_CARGO scan class to alloy and splinter in shipdata.plist, so
that they don't appear unscoopable and with legal status when spawned by
scripts.
* Better diagnostics for bad AIs.
* JavaScript legacy_addShipsWithinRadius method fixed and works as expected.
* Fixed Thargoid death broadcast.
* Demo screen behavior has now been fully fixed. No more ships going past the
screen on game startup. Missing/broken ship models displayed as question
marks, missing textures displayed as no-textures-material. No comms message
will be received when on Demo2 screen.
* Comms log now works as expected. First in, first out.
* Repairing a damaged weapon (awarded via oxp) doesn't add an extra weapon
anymore (bugs #13471 & #13481).
* Shipyard techlevel bugfix. It now works as described in the wiki (i.e.
techlevel=5 will allow ships to appear for sale in systems with technological
level 6)
* JS Bugfix: changes to local system properties (tech level, government,
etc...) now take effect immediately.
* Oolite now gives the right message when trying to jump more than 7 ly.
* Added code to hopefully work around sky rendering glitch on S3 hardware.
Improvements:
* Improve speed of traversing saved games list by writing the current system
name in the save file. When Oolite displays summary information about the
saved game, it will try to look for this string. If the current system name
string does not exist, it will fall back to using galaxy seed and coordinates
to extract the system name.
* Great improvement in escort AI.
* Oolite's sound system rewritten for maximum flexibility. Most sounds now go
through customsounds.plist.
* Changed several built-in plists to OpenStep format.
* Mission choices are now sorted.
* Legacy foo_actions can now have local variables, which are cleared when the
_actions completes.
* Special cargo expanded and amended: it can now be saved, and no containers
can be loaded on board while the special cargo is in the hold - scooping
cargo will not work, and purchasing & awardCargo are only allowed for small
valuables.
* Implemented power braking for ridiculous speeds.
* awardEquipment: if undamaged equipment present, trying to assign its damaged
equivalent will fail with a warning. Trying to award an undamaged weapon
using awardEquipment() will also fail with a warning.
New Features:
* Added ability to explicitly bind shaders to subentity rather than root
entity.
* Added support for hull heat glow to default shader (full shader mode only).
* Added support for constant vector and quaternion uniforms for shaders.
* Implemented analog joystick yaw control code. Many more analog joystick
improvements (SDL builds only).
* Added Eric Walch's list of pre-existing roles to pirate-victim-roles.plist.
* Intergalactic jump destinations have been made user/scripter controllable.
* Missiles now use the accuracy variable to determine how well to track
targets. Accuracy must be between 0.0 and 10.0. If not specified, it defaults
to 0.0, which corresponds to standard missile accuracy.
* All game strings are now externalized and easily changeable by the user.
* Added support for 8-bit character encoding, thus enabling Oolite's
internationalization. Oolite now has built-in support for Western European
(Latin-1) text and Greek, Cyrillic, Turkish and Eastern European (Latin-2)
"starter kit" OXPs are now available.
* Made the equipment.plist array mergeable like a dictionary, thus enabling OXP
created equipment to override the standard one instead of being added on top
of it.
* Added support for 'abs' co-ordinate system.
* Added auto_ai support for escort set-up.
* Added script events for planet and station proximity events.
* Added full support for aft lasers in shipyard. Side lasers should work if
defined in a plist, but we don't offer random "upgrades" to them in the
shipyard (bugs #012362 and #012363).
* Added Autosave option in the game options sub-menu.
* Graphics fiddle: scarred alloy is now only scarred on one side, and has a
specular intensity map (if shaders enabled); both types of alloy are now
shinier.
* Oolite now supports multiple textures for nebulae and stars; also uses mix of
sun and star colours for ambient light.
* Added overall_alpha key to HUD dictionaries, defaulting to 75% opacity (25%
transparency).
* HUD can now be switched off with the 'o' key and turned on again with the 'n'
key while game is paused.
Miscellaneous:
* Subentities no longer count as kills.
* Made ship AI send a beingAttacked message to scripts when a missile is fired
against ship.
* Most legacy script methods now show the name of the current script if an
error occurs, but this only works for world scripts.
* Change to Console.consoleMessage: ConsoleMessage('message') is now shorthand
for consoleMessage('command-result','message').
* Ejected items and debris are now spawned with 85% of the parent's cabin
temperature.
* Weapon mounting positions with weapons already mounted are now shown in a
darker green color in the equip ship screen.
* Game over changes: After the player ship has been destroyed, game restarts at
Lave, pulse laser only, 100Cr.
* Energy unit changes: energy units recharge rate adjusted to offer a better
challenge to the player, and naval/extra energy unit purchase behaviour more
flexible (see resolution of Bug #13507, Naval Energy Unit bug in berlios).
* Warnings added if energy units are going to be removed.
* Made the required Advanced Nav Array tech level equal to 7, as it was meant
to be.
-------------------------------------------------------------------------------
Changes between Oolite 1.69.1.1 and Oolite 1.70:
* Greatly enhanced JavaScript scriptability. Ships and planets are now
scriptable objects. Every ship now has an attached JavaScript script. Added
timers and clock object. The system object provides flexible methods for
searching for entities.
* Implemented interactive JavaScript/debug console. Under Mac OS X, this is
integrated into the application (when a special OXP is installed). On all
platforms, the game can communicate with a separate console program over TCP.
Writing a good console is left as a third-party opportunity.
* Added -verify-oxp command-line option.
* Fixed inconsistent usage of "role" attribute by splitting it into a set of
roles and a primary role.
* New extendable property list, pirate-victim-roles.plist, specifies which
(primary) roles pirates will look for when selecting victims. This allows OXP
developers to make their special ships potential victims.
* Integrated Commander McLane's external views OXP. It is recommended that the
OXP be removed when running Oolite 1.70.
* Added travel time estimate for stars within one jump.
* Split game options out of menu.
* Added option to play in wireframe mode.
* Added option to set shader complexity level (Off/Simple/Full) on shader-
capable systems.
* Added default shader, used for all ships in full-shader mode and for
materials with smoothing or options in simple-shader mode. Added material
options for illumination mapping, glow mapping and specular mapping,
currently only implemented with shaders. Made all ships slightly shiny by
default.
* New AI methods:
scanForNearestShipWithPrimaryRole: (new, preferred name for
scanForNearestShipWithRole:)
scanForNearestShipWithAnyPrimaryRole:
scanForNearestShipWithoutPrimaryRole:
scanForNearestShipHavingRole:
scanForNearestShipHavingAnyRole:
scanForNearestShipNotHavingRole:
scanForNearestShipWithScanClass:
scanForNearestShipWithoutScanClass:
sendScriptMessage:
* Converted several plists to OpenStep format for legibility, and cleaned up
some redundant information from shipdata.plist.
* Updated JavaScript engine. JavaScript 1.7 is now supported.
* Legacy script methods awardFuel: and setFuelLeak: now work on the current
script target, not always the player.
* Fixed bug where local planetinfo overrides were not being restored from saved
games properly.
* Fixed bug where several shipdata attributes were ignored for stations (bug
#11684). Added has_npc_traffic attribute to suppress NPC traffic at carriers.
* Fixed bug with stars and nebulae looking wrong when inside an atmosphere.
* Fixed trumble-related crash.
* Added clearMissionScreen scripting method to simplify mission screens.
* Several AI bug fixes contributed by Eric Walch.
* Fix for a certain class of AI crashes (recursive reactToMessage:).
* Made evil XML DTD swizzling hack work with plists generated under
Mac OS X 10.5.
* Made asteroids created by scripts behave the same as asteroids created by the
system populator.
* Fixed bug where cancelling the Open Game dialog caused broken behaviour
(Mac OS X only; bug #11691).
-------------------------------------------------------------------------------
Changes between Oolite 1.69.1 and 1.69.1.1:
* Fixed a consistent crash at startup on x86-based Macs.
-------------------------------------------------------------------------------
Changes between Oolite 1.69b and 1.69.1:
* Several crashes and other severe bugs fixed.
* Fix for a wide class of potential crashes and strange behaviours which were
latent in earlier versions but obscured by an otherwise unhelpful caching
mechanism.
* Fix for ship death_actions and script_actions not working.
* Fix for awardCredits: stealing all your money.
* Fix for shipyard refusing to sell ships whose price is less than your current
trade-in value.
* Added notequal operator to legacy scripting system.
* Reduced trade-in values by 25% across the board to reduce market exploits.
* Temporarily disabled procedurally textured planets to avoid a crashing bug.
* Fix for problem with ships that have multiple common roles being created
by scripts and having the wrong AI, as discussed at
http://www.aegidian.org/bb/viewtopic.php?t=3654 .
* Better handling of out-of-range numbers in property lists.
* Fix for JavaScript methods randomly not doing anything. Also fixed
system.legacyAddShipsWithinRadius() ignoring radius parameter.
* Fix for scripts running while paused, if on a menu screen.
* Fix for wrong galaxy being shown when switching from Open screen to Map
screen.
* Fix for out-of-range laser heat value in shaders on demo screen.
* Damaged equipment is now shown in orange as intended.
* Big yellow question mark is now shown as intended on the Open screen when
selecting a saved game using an unavailable ship.
-------------------------------------------------------------------------------
Changes between Oolite 1.69 and 1.69b:
* Fixed an error that caused certain scripts tied to ships not to run.
-------------------------------------------------------------------------------
Changes between Oolite 1.68 and 1.69:
* New materials model and more flexibility for shaders.
* Lasers can now be any colour, with the limitation that they must be
reasonably bright. The new colour spec syntax introduced for lasers is also
supported for sky colours, but not planets in this release.
* Raised vertex and face counts for meshes, while reducing memory usage.
* Reformatted keyconfig.plist to be more legible and easier to edit.
* Advanced Navigation Array default key changed to ^ (shift-6 on UK keyboards)
to avoid surprise launches.
* Save/load screens now show more information, and show the correct ship type
even if it isnít currently installed (only applies to games saved with 1.69
or later). Also, a question mark is now shown in place of unknown ships (but
looks bad due to bugs in setting up smoothed models).
Under Mac OS X, this only applies in full-screen mode as standard system
dialogs are used in windowed mode.
* The commander status screen now shows damaged equipment in orange.
* The appearance of interstellar space is now set in planetinfo.plist.
* (Mac OS X only) Support for a new Debug menu added. It is enabled by a
special OXP, Debug Menu.oxp.
* New debugging key, key_dump_target_state, which dumps a lot of information
about the playerís target (or the player, if there is no target) to the log.
Not bound to anything by default.
* New requires.plist key added: max_version. This is not expected to be useful
very often, except for Debug Menu.oxp. Any unknown keys in required.plist
will now cause an OXP not to load.
* Improved robustness in various ways, especially with regards to property
list parsing.
* Various redundant bits of code removed; code cleanup; some optimization.
* Cache is no longer pruned at all. Since itís rebuilt when OXPs are changed,
the maximum size of the cache is limited by the installed OXPs. In practice,
sizes of a few MB can be expected. Under GNUstep, cache read/write should be
more efficient and the folder the cache lives in will be created if needed.
* Under Mac OS X and Windows, you can force a cache rebuild by holding down
shift during start-up. This probably sort of works on Linux other systems if
you press it just at the right moment.
* Fixed various issues under Linux (catching up with changes since pre 1.67).
* (Mac OS X only) Spotlight indexer indexes name of ship for games saved with
1.69 or later