Oolite test release 1.72
Posted: Sun Nov 02, 2008 6:00 pm
Oolite test release 1.72 – What, It’s Autumn Already? Edition is now available from GURPO. This release adds numerous new features, especially on the scripting side, just not the ones we were expecting to add. The updater can be applied to 1.65 and the test release series up to and including 1.71 (specifically, versions 1.65, 1.67, 1.67.1, 1.68, 1.69, 1.69b, 1.69.1, 1.69.1.1, 1.69.1.2, 1.70, 1.71, 1.71.1 and 1.71.2).
Changes since Oolite 1.71.2:
Changes since Oolite 1.71.2:
- 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 <app directory>\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/<true/> 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 https://bb.oolite.space/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!
- 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.