Resolve merge conflicts in Universe.m and ShipEntity.m
This commit is contained in:
commit
88265c298c
@ -164,7 +164,7 @@ function inspect()
|
||||
|
||||
Oolite Debug OXP
|
||||
|
||||
Copyright © 2007-2013 the Oolite team
|
||||
Copyright © 2007-2014 the Oolite team
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
@ -191,7 +191,7 @@ this.name = "oolite-debug-console";
|
||||
this.author = "Jens Ayton";
|
||||
this.copyright = "© 2007-2013 the Oolite team.";
|
||||
this.description = "Debug console script.";
|
||||
this.version = "1.77";
|
||||
this.version = "1.81";
|
||||
|
||||
|
||||
(function() {
|
||||
|
@ -1,3 +1,3 @@
|
||||
{
|
||||
version = "1.79";
|
||||
version = "1.81";
|
||||
}
|
||||
|
BIN
Doc/AdviceForNewCommanders.odt
Normal file
BIN
Doc/AdviceForNewCommanders.odt
Normal file
Binary file not shown.
Binary file not shown.
@ -1,3 +1,357 @@
|
||||
Changes between Oolite 1.80 and Oolite 1.82:
|
||||
|
||||
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.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
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
|
||||
|
@ -7,7 +7,6 @@ The various ports of Oolite are using a number of external libraries for graphic
|
||||
2. SDL v1.2.13 - (Windows) window resizing issues, backported fix for setting gamma crash.
|
||||
3. SpiderMonkey v1.85 (all platforms) - certain JS macro definitions required by Oolite not guaranteed or non-existent in standard library.
|
||||
4. eSpeak v1.43.03 (Windows) - Special build of the Windows speech synthesis libespeak.dll to enable asynchronous playback. Also, defaults the eSpeak data directory to Resources/espeak-data.
|
||||
5. SDL_mixer v1.2.7 (Windows) - Bug fix for static heard over OGG music when music loops.
|
||||
|
||||
The changes made in the source code of each of these libraries are as follows:
|
||||
|
||||
@ -102,8 +101,5 @@ The entire source code of the library can be downloaded from ftp://anonymous@ftp
|
||||
|
||||
|
||||
|
||||
5. SDL_mixer v1.2.7 (Windows)
|
||||
- music.c: Commented out lines 334 and 335 of music_mixer function.
|
||||
|
||||
|
||||
Certain other Oolite dependencies are built with specific project settings on the Mac platform, without further changes to their source code. These libraries are libpng (uses also a custom pngusr.h header for the Mac version) and libogg/libvorbis. Also, the Mac debug support uses a modified version of RBSplitView, mostly to enable it to build on 64-bit Mac OS X.
|
||||
|
BIN
Doc/OoliteRS.odt
BIN
Doc/OoliteRS.odt
Binary file not shown.
BIN
Doc/OoliteRS.pdf
BIN
Doc/OoliteRS.pdf
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -5,7 +5,6 @@ installers/autopackage/default.x86.apspec
|
||||
installers/autopackage/default.x86_64.apspec
|
||||
src/Cocoa/Info-Oolite.plist
|
||||
src/Cocoa/oolite-version.xcconfig
|
||||
Resources/Scripts/*
|
||||
Resources/InfoPlist.strings (twice. note: UTF-16)
|
||||
|
||||
- Major versions:
|
||||
@ -20,6 +19,6 @@ On release:
|
||||
|
||||
http://www.oolite.org/download (current version six times, previous version for Windows updater once)
|
||||
Topic of #oolite
|
||||
latest news at berlios.de
|
||||
latest news at http://www.oolite.org/
|
||||
update changelog link on freshmeat.net project page
|
||||
Submit A Release, freshmeat
|
||||
|
@ -214,6 +214,7 @@ OOLITE_GRAPHICS_MATERIAL_FILES = \
|
||||
OOMaterial.m \
|
||||
OONullTexture.m \
|
||||
OOPlanetTextureGenerator.m \
|
||||
OOStandaloneAtmosphereGenerator.m \
|
||||
OOPNGTextureLoader.m \
|
||||
OOShaderMaterial.m \
|
||||
OOShaderProgram.m \
|
||||
@ -396,6 +397,7 @@ OOLITE_MISC_FILES = \
|
||||
OOEquipmentType.m \
|
||||
OOMouseInteractionMode.m \
|
||||
OORoleSet.m \
|
||||
OOShipLibraryDescriptions.m \
|
||||
OOShipRegistry.m \
|
||||
OOSpatialReference.m \
|
||||
OOTrumble.m \
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 3df6ed027e4ef6955cb530e98b459870a68fc652
|
||||
Subproject commit f3072cde0471c7c8e964eb697c5a47ed8389004e
|
@ -416,6 +416,8 @@
|
||||
1AB4AEB90D688AD9003076D6 /* OOLogHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 1AB4AEB70D688AD9003076D6 /* OOLogHeader.m */; settings = {COMPILER_FLAGS = $SNAPSHOT_MACROS; }; };
|
||||
1AB5E1EF12BD628500C334DD /* OOJoystickManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AB5E1ED12BD628500C334DD /* OOJoystickManager.h */; };
|
||||
1AB5E1F012BD628500C334DD /* OOJoystickManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1AB5E1EE12BD628500C334DD /* OOJoystickManager.m */; settings = {COMPILER_FLAGS = "-fvisibility=default"; }; };
|
||||
1AB6963C191D85F600E4B232 /* OOStandaloneAtmosphereGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AB6963A191D85F600E4B232 /* OOStandaloneAtmosphereGenerator.h */; };
|
||||
1AB6963D191D85F600E4B232 /* OOStandaloneAtmosphereGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 1AB6963B191D85F600E4B232 /* OOStandaloneAtmosphereGenerator.m */; };
|
||||
1AB7761012CA2EE0001478BB /* libjs_for_oolite.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1AB7760212CA2E53001478BB /* libjs_for_oolite.a */; };
|
||||
1AB784F90D554F7B00517983 /* OOJSSoundSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AB784F70D554F7B00517983 /* OOJSSoundSource.h */; };
|
||||
1AB784FA0D554F7B00517983 /* OOJSSoundSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 1AB784F80D554F7B00517983 /* OOJSSoundSource.m */; };
|
||||
@ -461,6 +463,8 @@
|
||||
1ACEA7AB0C91E32800C7CE97 /* OOJSMission.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ACEA7A90C91E32800C7CE97 /* OOJSMission.m */; };
|
||||
1AD1F4FF0CD9E83700EAE520 /* NSThreadOOExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 1AD1F4C80CD9E42A00EAE520 /* NSThreadOOExtensions.m */; };
|
||||
1AD1F5000CD9E83800EAE520 /* NSThreadOOExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD1F4C70CD9E42A00EAE520 /* NSThreadOOExtensions.h */; };
|
||||
1AD2E31618F17BC700239EBB /* OOShipLibraryDescriptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD2E31418F17BC700239EBB /* OOShipLibraryDescriptions.h */; };
|
||||
1AD2E31718F17BC700239EBB /* OOShipLibraryDescriptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 1AD2E31518F17BC700239EBB /* OOShipLibraryDescriptions.m */; };
|
||||
1AD3C339163A92F600469C4D /* OOOpenGLStateManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1AD3C338163A92F600469C4D /* OOOpenGLStateManager.m */; };
|
||||
1AD8522517947BD600CBE743 /* OOHPVector.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD8522317947BD600CBE743 /* OOHPVector.h */; };
|
||||
1AD8522617947BD600CBE743 /* OOHPVector.m in Sources */ = {isa = PBXBuildFile; fileRef = 1AD8522417947BD600CBE743 /* OOHPVector.m */; };
|
||||
@ -1507,6 +1511,8 @@
|
||||
1AB4AEB70D688AD9003076D6 /* OOLogHeader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OOLogHeader.m; sourceTree = "<group>"; };
|
||||
1AB5E1ED12BD628500C334DD /* OOJoystickManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OOJoystickManager.h; sourceTree = "<group>"; };
|
||||
1AB5E1EE12BD628500C334DD /* OOJoystickManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OOJoystickManager.m; sourceTree = "<group>"; };
|
||||
1AB6963A191D85F600E4B232 /* OOStandaloneAtmosphereGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OOStandaloneAtmosphereGenerator.h; sourceTree = "<group>"; };
|
||||
1AB6963B191D85F600E4B232 /* OOStandaloneAtmosphereGenerator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OOStandaloneAtmosphereGenerator.m; sourceTree = "<group>"; };
|
||||
1AB775FC12CA2E53001478BB /* libjs.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = libjs.xcodeproj; path = "deps/Cocoa-deps/libjs/libjs.xcodeproj"; sourceTree = "<group>"; };
|
||||
1AB784F70D554F7B00517983 /* OOJSSoundSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OOJSSoundSource.h; sourceTree = "<group>"; };
|
||||
1AB784F80D554F7B00517983 /* OOJSSoundSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OOJSSoundSource.m; sourceTree = "<group>"; };
|
||||
@ -1565,8 +1571,9 @@
|
||||
1AD0C32F0C463FCB0070BD23 /* autoAImap.plist */ = {isa = PBXFileReference; explicitFileType = text; fileEncoding = 4; languageSpecificationIdentifier = plist; path = autoAImap.plist; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.simpleColoring; };
|
||||
1AD1F4C70CD9E42A00EAE520 /* NSThreadOOExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSThreadOOExtensions.h; sourceTree = "<group>"; };
|
||||
1AD1F4C80CD9E42A00EAE520 /* NSThreadOOExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSThreadOOExtensions.m; sourceTree = "<group>"; };
|
||||
1AD2E31418F17BC700239EBB /* OOShipLibraryDescriptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OOShipLibraryDescriptions.h; sourceTree = "<group>"; };
|
||||
1AD2E31518F17BC700239EBB /* OOShipLibraryDescriptions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OOShipLibraryDescriptions.m; sourceTree = "<group>"; };
|
||||
1AD3C338163A92F600469C4D /* OOOpenGLStateManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OOOpenGLStateManager.m; sourceTree = "<group>"; };
|
||||
1AD5A81A12D3A9FD00B62503 /* exports-debug-32.exp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.exports; name = "exports-debug-32.exp"; path = "src/Cocoa/exports-debug-32.exp"; sourceTree = "<group>"; };
|
||||
1AD5A81B12D3A9FD00B62503 /* exports-debug-64.exp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.exports; name = "exports-debug-64.exp"; path = "src/Cocoa/exports-debug-64.exp"; sourceTree = "<group>"; };
|
||||
1AD8522317947BD600CBE743 /* OOHPVector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OOHPVector.h; sourceTree = "<group>"; };
|
||||
1AD8522417947BD600CBE743 /* OOHPVector.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OOHPVector.m; sourceTree = "<group>"; };
|
||||
@ -2341,6 +2348,8 @@
|
||||
1AECE9EE11779910003986A8 /* OOPixMap.m */,
|
||||
1A19783C117F81B10060DB56 /* OOPixMapChannelOperations.h */,
|
||||
1A19783D117F81B10060DB56 /* OOPixMapChannelOperations.m */,
|
||||
1AB6963A191D85F600E4B232 /* OOStandaloneAtmosphereGenerator.h */,
|
||||
1AB6963B191D85F600E4B232 /* OOStandaloneAtmosphereGenerator.m */,
|
||||
1AB01ABC0BB15AED00F1B949 /* OOTextureScaling.h */,
|
||||
1AB01ABD0BB15AED00F1B949 /* OOTextureScaling.m */,
|
||||
1A95C03E118A450E002EE302 /* OOConvertCubeMapToLatLong.h */,
|
||||
@ -2957,7 +2966,6 @@
|
||||
1A45BCC9104AB46900A89324 /* oolite-targets.xcconfig */,
|
||||
1A846BA90D79F9570081280D /* oolite-version.xcconfig */,
|
||||
1A0730E817888C44008A1829 /* oolite-warnings.xcconfig */,
|
||||
1AD5A81A12D3A9FD00B62503 /* exports-debug-32.exp */,
|
||||
1AD5A81B12D3A9FD00B62503 /* exports-debug-64.exp */,
|
||||
1A1B24C313293ED2007A0940 /* exports-release.exp */,
|
||||
);
|
||||
@ -3045,6 +3053,8 @@
|
||||
1ACEA3480C91507000C7CE97 /* OORoleSet.m */,
|
||||
1A0479E70DC9F81000EE1CD0 /* OOShipRegistry.h */,
|
||||
1A0479E80DC9F81000EE1CD0 /* OOShipRegistry.m */,
|
||||
1AD2E31418F17BC700239EBB /* OOShipLibraryDescriptions.h */,
|
||||
1AD2E31518F17BC700239EBB /* OOShipLibraryDescriptions.m */,
|
||||
1A62F0FC0E26A2A000897506 /* OOEquipmentType.h */,
|
||||
1A62F0FB0E26A2A000897506 /* OOEquipmentType.m */,
|
||||
1A7038A112BB9F5A0015CCDC /* dummy.cpp */,
|
||||
@ -3136,6 +3146,7 @@
|
||||
25F3E63B0994F08A002F25FD /* OOOpenGL.h in Headers */,
|
||||
25160E2F0995362F0037C2E1 /* OOCocoa.h in Headers */,
|
||||
1AA08611182578B8007CCAEB /* OOOpenAL.h in Headers */,
|
||||
1AB6963C191D85F600E4B232 /* OOStandaloneAtmosphereGenerator.h in Headers */,
|
||||
25161158099544390037C2E1 /* AI.h in Headers */,
|
||||
2516115D099544390037C2E1 /* GameController.h in Headers */,
|
||||
25161162099544390037C2E1 /* OOTrumble.h in Headers */,
|
||||
@ -3195,6 +3206,7 @@
|
||||
1A26D0BC0BCF9CF80073F257 /* PlayerEntityContracts.h in Headers */,
|
||||
1A26D0BE0BCF9CF80073F257 /* PlanetEntity.h in Headers */,
|
||||
1A26D0C10BCF9CF80073F257 /* Entity.h in Headers */,
|
||||
1AD2E31618F17BC700239EBB /* OOShipLibraryDescriptions.h in Headers */,
|
||||
1A26D0C50BCF9CF80073F257 /* WormholeEntity.h in Headers */,
|
||||
1A92AB711846403200C507E3 /* OOJSExhaustPlume.h in Headers */,
|
||||
1A26D0C70BCF9CF80073F257 /* StationEntity.h in Headers */,
|
||||
@ -3418,7 +3430,7 @@
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
BuildIndependentTargetsInParallel = YES;
|
||||
LastUpgradeCheck = 0500;
|
||||
LastUpgradeCheck = 0510;
|
||||
ORGANIZATIONNAME = "the Oolite team";
|
||||
};
|
||||
buildConfigurationList = 08B31CB008FE63D70038D42F /* Build configuration list for PBXProject "Oolite" */;
|
||||
@ -3698,6 +3710,7 @@
|
||||
1A9406850BAF66D6005F6CF3 /* OOVoxel.m in Sources */,
|
||||
1AB01B5F0BB1639600F1B949 /* OOTextureScaling.m in Sources */,
|
||||
1A5DB1EB0BBD8F0000D57389 /* OOConstToString.m in Sources */,
|
||||
1AD2E31718F17BC700239EBB /* OOShipLibraryDescriptions.m in Sources */,
|
||||
1A5DBAA70BC000DC00D57389 /* OOJavaScriptEngine.m in Sources */,
|
||||
1A5DBAA90BC000DC00D57389 /* OOJSScript.m in Sources */,
|
||||
1A5DBAAB0BC000DC00D57389 /* OOPListScript.m in Sources */,
|
||||
@ -3734,6 +3747,7 @@
|
||||
1A26D0E80BCF9D3B0073F257 /* OOPNGTextureLoader.m in Sources */,
|
||||
1A26D0EB0BCF9D3B0073F257 /* OOTextureLoader.m in Sources */,
|
||||
1A43234F0BCFC9BB00F65914 /* OOOpenGLExtensionManager.m in Sources */,
|
||||
1AB6963D191D85F600E4B232 /* OOStandaloneAtmosphereGenerator.m in Sources */,
|
||||
1ADBA5510BD0F173008FC99C /* OOBasicMaterial.m in Sources */,
|
||||
1A5D588A1825241800C779AE /* unzip.c in Sources */,
|
||||
1A2A16680BD10B1200152975 /* OOSingleTextureMaterial.m in Sources */,
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0500"
|
||||
LastUpgradeVersion = "0510"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0500"
|
||||
LastUpgradeVersion = "0510"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0500"
|
||||
LastUpgradeVersion = "0510"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
|
@ -27,7 +27,6 @@ MA 02110-1301, USA.
|
||||
"use strict";
|
||||
|
||||
this.name = "Oolite Assassin AI";
|
||||
this.version = "1.79";
|
||||
|
||||
this.aiStarted = function() {
|
||||
var ai = new worldScripts["oolite-libPriorityAI"].PriorityAIController(this.ship);
|
||||
@ -43,6 +42,7 @@ this.aiStarted = function() {
|
||||
ai.setWaypointGenerator(ai.waypointsWitchpointPatrol);
|
||||
}
|
||||
|
||||
ai.setParameter("oolite_personalityMatchesLeader",0.9);
|
||||
ai.setCommunicationsRole("assassin");
|
||||
|
||||
ai.setParameter("oolite_flag_witchspacePursuit",true);
|
||||
@ -67,11 +67,6 @@ this.aiStarted = function() {
|
||||
behaviour: ai.behaviourEnterWitchspace,
|
||||
reconsider: 15
|
||||
},
|
||||
{
|
||||
condition: ai.conditionHasRememberedTarget,
|
||||
behaviour: ai.behaviourFollowCurrentTarget,
|
||||
reconsider: 15
|
||||
},
|
||||
/* Check for couriers */
|
||||
{
|
||||
preconfiguration: ai.configurationCheckScanner,
|
||||
@ -90,8 +85,8 @@ this.aiStarted = function() {
|
||||
{
|
||||
preconfiguration: ai.configurationAcquireScannedTarget,
|
||||
condition: ai.conditionCombatOddsGood,
|
||||
behaviour: ai.behaviourDestroyCurrentTarget,
|
||||
reconsider: 1
|
||||
behaviour: ai.behaviourAssassinateCurrentTarget,
|
||||
reconsider: 10
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -104,6 +99,11 @@ this.aiStarted = function() {
|
||||
behaviour: ai.behaviourDestroyCurrentTarget,
|
||||
reconsider: 20
|
||||
},
|
||||
{
|
||||
condition: ai.conditionHasRememberedTarget,
|
||||
behaviour: ai.behaviourFollowCurrentTarget,
|
||||
reconsider: 15
|
||||
},
|
||||
{
|
||||
preconfiguration: ai.configurationAppointGroupLeader,
|
||||
condition: ai.conditionIsGroupLeader,
|
||||
|
@ -28,7 +28,6 @@ MA 02110-1301, USA.
|
||||
|
||||
// this is the AI version for a local patrol or an assistant
|
||||
this.name = "Oolite Bounty Hunter AI";
|
||||
this.version = "1.79";
|
||||
|
||||
this.aiStarted = function() {
|
||||
var ai = new worldScripts["oolite-libPriorityAI"].PriorityAIController(this.ship);
|
||||
@ -37,6 +36,7 @@ this.aiStarted = function() {
|
||||
|
||||
ai.setWaypointGenerator(ai.waypointsSpacelanePatrol);
|
||||
|
||||
ai.setParameter("oolite_personalityMatchesLeader",0.9);
|
||||
ai.setCommunicationsRole("hunter");
|
||||
|
||||
ai.setParameter("oolite_friendlyRoles",["oolite-bounty-hunter"]);
|
||||
@ -81,7 +81,7 @@ this.aiStarted = function() {
|
||||
preconfiguration: ai.configurationCheckScanner,
|
||||
condition: ai.conditionScannerContainsFugitive,
|
||||
configuration: ai.configurationAcquireScannedTarget,
|
||||
behaviour: ai.behaviourDestroyCurrentTarget,
|
||||
behaviour: ai.behaviourCommenceAttackOnCurrentTarget,
|
||||
reconsider: 1
|
||||
},
|
||||
{
|
||||
@ -92,7 +92,7 @@ this.aiStarted = function() {
|
||||
* odds they'll never shoot anything */
|
||||
{
|
||||
notcondition: ai.conditionCombatOddsBad,
|
||||
behaviour: ai.behaviourDestroyCurrentTarget,
|
||||
behaviour: ai.behaviourCommenceAttackOnCurrentTarget,
|
||||
reconsider: 1
|
||||
}
|
||||
]
|
||||
|
@ -27,7 +27,6 @@ MA 02110-1301, USA.
|
||||
"use strict";
|
||||
|
||||
this.name = "Oolite Bounty Hunter Leader AI";
|
||||
this.version = "1.79";
|
||||
|
||||
this.aiStarted = function() {
|
||||
var ai = new worldScripts["oolite-libPriorityAI"].PriorityAIController(this.ship);
|
||||
@ -36,6 +35,7 @@ this.aiStarted = function() {
|
||||
|
||||
ai.setWaypointGenerator(ai.waypointsSpacelanePatrol);
|
||||
|
||||
ai.setParameter("oolite_personalityMatchesLeader",0.9);
|
||||
ai.setCommunicationsRole("hunter");
|
||||
|
||||
ai.setParameter("oolite_friendlyRoles",["oolite-bounty-hunter"]);
|
||||
@ -64,7 +64,7 @@ this.aiStarted = function() {
|
||||
preconfiguration: ai.configurationCheckScanner,
|
||||
condition: ai.conditionScannerContainsFugitive,
|
||||
configuration: ai.configurationAcquireScannedTarget,
|
||||
behaviour: ai.behaviourDestroyCurrentTarget,
|
||||
behaviour: ai.behaviourCommenceAttackOnCurrentTarget,
|
||||
reconsider: 1
|
||||
},
|
||||
{
|
||||
@ -75,7 +75,7 @@ this.aiStarted = function() {
|
||||
* odds they'll never shoot anything */
|
||||
{
|
||||
notcondition: ai.conditionCombatOddsBad,
|
||||
behaviour: ai.behaviourDestroyCurrentTarget,
|
||||
behaviour: ai.behaviourCommenceAttackOnCurrentTarget,
|
||||
reconsider: 1
|
||||
}
|
||||
]
|
||||
|
@ -27,7 +27,6 @@ MA 02110-1301, USA.
|
||||
"use strict";
|
||||
|
||||
this.name = "Oolite Constrictor AI";
|
||||
this.version = "1.79";
|
||||
|
||||
this.aiStarted = function() {
|
||||
var ai = new worldScripts["oolite-libPriorityAI"].PriorityAIController(this.ship);
|
||||
|
@ -27,7 +27,6 @@ MA 02110-1301, USA.
|
||||
"use strict";
|
||||
|
||||
this.name = "Oolite Defense Ship AI";
|
||||
this.version = "1.79";
|
||||
|
||||
this.aiStarted = function() {
|
||||
var ai = new worldScripts["oolite-libPriorityAI"].PriorityAIController(this.ship);
|
||||
|
@ -27,7 +27,6 @@ MA 02110-1301, USA.
|
||||
"use strict";
|
||||
|
||||
this.name = "Oolite Escort AI";
|
||||
this.version = "1.79";
|
||||
|
||||
this.aiStarted = function() {
|
||||
var ai = new worldScripts["oolite-libPriorityAI"].PriorityAIController(this.ship);
|
||||
|
@ -27,7 +27,6 @@ MA 02110-1301, USA.
|
||||
"use strict";
|
||||
|
||||
this.name = "Oolite Missile AI";
|
||||
this.version = "1.79";
|
||||
|
||||
this.aiStarted = function() {
|
||||
var ai = new worldScripts["oolite-libPriorityAI"].PriorityAIController(this.ship);
|
||||
@ -39,6 +38,13 @@ this.aiStarted = function() {
|
||||
* destroy the remainder. */
|
||||
// ai.setParameter("oolite_flag_autoSpreadMissiles",true);
|
||||
|
||||
/* Launch correction when fired at target in aft arc */
|
||||
if (this.ship.target && this.ship.target.position.subtract(this.ship.position).direction().dot(this.ship.vectorForward) < -0.8)
|
||||
{
|
||||
this.oolite_priorityai.setParameter("oolite_flag_launchAdjustMissile",true);
|
||||
}
|
||||
|
||||
|
||||
ai.setPriorities([
|
||||
{
|
||||
condition: ai.conditionMissileOutOfFuel,
|
||||
@ -51,6 +57,12 @@ this.aiStarted = function() {
|
||||
behaviour: ai.behaviourApproachDestination,
|
||||
reconsider: 2
|
||||
},
|
||||
{
|
||||
condition: ai.conditionMissileNeedsLaunchEvasion,
|
||||
configuration: ai.configurationMissileAdjustLaunch,
|
||||
behaviour: ai.behaviourApproachDestination,
|
||||
reconsider: 2
|
||||
},
|
||||
{
|
||||
condition: ai.conditionHasTarget,
|
||||
behaviour: ai.behaviourMissileInterceptTarget,
|
||||
@ -69,6 +81,7 @@ this.aiStarted = function() {
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
/* ECM response function */
|
||||
this._ecmProofMissileResponse = function()
|
||||
{
|
||||
@ -87,4 +100,5 @@ this._ecmProofMissileResponse = function()
|
||||
return;
|
||||
}
|
||||
this.ship.explode();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,3 +1,2 @@
|
||||
this.name = "Null AI";
|
||||
this.version = "1.79";
|
||||
// does nothing
|
||||
|
@ -27,13 +27,13 @@ MA 02110-1301, USA.
|
||||
"use strict";
|
||||
|
||||
this.name = "Oolite Pirate AI";
|
||||
this.version = "1.79";
|
||||
|
||||
this.aiStarted = function() {
|
||||
this.ai = new worldScripts["oolite-libPriorityAI"].PriorityAIController(this.ship);
|
||||
|
||||
ai.setParameter("oolite_flag_watchForCargo",true);
|
||||
|
||||
ai.setParameter("oolite_personalityMatchesLeader",0.9);
|
||||
ai.setCommunicationsRole("pirate");
|
||||
|
||||
ai.setParameter("oolite_friendlyRoles",["oolite-pirate"]);
|
||||
|
@ -28,13 +28,13 @@ MA 02110-1301, USA.
|
||||
"use strict";
|
||||
|
||||
this.name = "Oolite Pirate Fighter AI";
|
||||
this.version = "1.79";
|
||||
|
||||
this.aiStarted = function() {
|
||||
this.ai = new worldScripts["oolite-libPriorityAI"].PriorityAIController(this.ship);
|
||||
|
||||
ai.setParameter("oolite_flag_watchForCargo",true);
|
||||
|
||||
ai.setParameter("oolite_personalityMatchesLeader",0.95);
|
||||
ai.setCommunicationsRole("pirate");
|
||||
|
||||
ai.setParameter("oolite_friendlyRoles",["oolite-pirate"]);
|
||||
|
@ -27,14 +27,21 @@ MA 02110-1301, USA.
|
||||
"use strict";
|
||||
|
||||
this.name = "Oolite Pirate Freighter AI";
|
||||
this.version = "1.79";
|
||||
|
||||
this.aiStarted = function() {
|
||||
var ai = new worldScripts["oolite-libPriorityAI"].PriorityAIController(this.ship);
|
||||
|
||||
ai.setParameter("oolite_flag_watchForCargo",true);
|
||||
|
||||
ai.setCommunicationsRole("pirate");
|
||||
ai.setParameter("oolite_personalityMatchesLeader",0.95);
|
||||
if (worldScripts["oolite-libPriorityAI"]._getCommunicationPersonalities("pirate-freighter").length > 0)
|
||||
{
|
||||
ai.setCommunicationsRole("pirate-freighter");
|
||||
}
|
||||
else
|
||||
{
|
||||
ai.setCommunicationsRole("pirate");
|
||||
}
|
||||
|
||||
ai.setParameter("oolite_friendlyRoles",["oolite-pirate"]);
|
||||
|
||||
|
@ -28,7 +28,6 @@ MA 02110-1301, USA.
|
||||
"use strict";
|
||||
|
||||
this.name = "Oolite Pirate Interceptor AI";
|
||||
this.version = "1.79";
|
||||
|
||||
this.aiStarted = function() {
|
||||
this.ai = new worldScripts["oolite-libPriorityAI"].PriorityAIController(this.ship);
|
||||
@ -38,17 +37,27 @@ this.aiStarted = function() {
|
||||
|
||||
// to hunt the hunters, go where they go
|
||||
var searchalgorithm = ai.conditionScannerContainsHunters;
|
||||
var commsrole = "pirate";
|
||||
if (this.ship.primaryRole == "pirate-aegis-raider")
|
||||
{
|
||||
if (worldScripts["oolite-libPriorityAI"]._getCommunicationPersonalities("pirate-aegis-raider").length > 0)
|
||||
{
|
||||
commsrole = "pirate-aegis-raider";
|
||||
}
|
||||
searchalgorithm = ai.conditionScannerContainsCleanShip;
|
||||
ai.setWaypointGenerator(ai.waypointsStationPatrol);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (worldScripts["oolite-libPriorityAI"]._getCommunicationPersonalities("pirate-aegis-raider").length > 0)
|
||||
{
|
||||
commsrole = "pirate-interceptor";
|
||||
}
|
||||
ai.setWaypointGenerator(ai.waypointsSpacelanePatrol);
|
||||
}
|
||||
|
||||
ai.setCommunicationsRole("pirate");
|
||||
ai.setParameter("oolite_personalityMatchesLeader",0.95);
|
||||
ai.setCommunicationsRole(commsrole);
|
||||
|
||||
ai.setParameter("oolite_friendlyRoles",["oolite-pirate"]);
|
||||
|
||||
|
@ -27,7 +27,6 @@ MA 02110-1301, USA.
|
||||
"use strict";
|
||||
|
||||
this.name = "Oolite Police AI";
|
||||
this.version = "1.79";
|
||||
|
||||
this.aiStarted = function() {
|
||||
var ai = new worldScripts["oolite-libPriorityAI"].PriorityAIController(this.ship);
|
||||
@ -60,6 +59,7 @@ this.aiStarted = function() {
|
||||
|
||||
ai.setParameter("oolite_friendlyRoles",["oolite-trader","oolite-bounty-hunter","oolite-scavenger","oolite-shuttle"]);
|
||||
|
||||
ai.setParameter("oolite_personalityMatchesLeader",0.5);
|
||||
ai.setCommunicationsRole("police");
|
||||
|
||||
ai.setPriorities([
|
||||
@ -87,13 +87,13 @@ this.aiStarted = function() {
|
||||
preconfiguration: ai.configurationCheckScanner,
|
||||
condition: ai.conditionScannerContainsFugitive,
|
||||
configuration: ai.configurationAcquireScannedTarget,
|
||||
behaviour: ai.behaviourDestroyCurrentTarget,
|
||||
behaviour: ai.behaviourCommenceAttackOnCurrentTarget,
|
||||
reconsider: 1
|
||||
},
|
||||
{
|
||||
condition: ai.conditionScannerContainsSeriousOffender,
|
||||
configuration: ai.configurationAcquireScannedTarget,
|
||||
behaviour: ai.behaviourDestroyCurrentTarget,
|
||||
behaviour: ai.behaviourCommenceAttackOnCurrentTarget,
|
||||
reconsider: 1
|
||||
},
|
||||
{
|
||||
|
@ -27,7 +27,6 @@ MA 02110-1301, USA.
|
||||
"use strict";
|
||||
|
||||
this.name = "Oolite Q-bomb AI";
|
||||
this.version = "1.79";
|
||||
|
||||
this.shipWasDumped = function() {
|
||||
// don't need a priority AI for this one
|
||||
|
@ -27,12 +27,18 @@ MA 02110-1301, USA.
|
||||
"use strict";
|
||||
|
||||
this.name = "Oolite Rock Hermit AI";
|
||||
this.version = "1.79";
|
||||
|
||||
this.aiStarted = function() {
|
||||
var ai = new worldScripts["oolite-libPriorityAI"].PriorityAIController(this.ship);
|
||||
|
||||
ai.setCommunicationsRole("station");
|
||||
if (worldScripts["oolite-libPriorityAI"]._getCommunicationPersonalities("hermit").length > 0)
|
||||
{
|
||||
ai.setCommunicationsRole("hermit");
|
||||
}
|
||||
else
|
||||
{
|
||||
ai.setCommunicationsRole("station");
|
||||
}
|
||||
|
||||
ai.setParameter("oolite_friendlyRoles",["oolite-scavenger"]);
|
||||
|
||||
|
@ -27,7 +27,6 @@ MA 02110-1301, USA.
|
||||
"use strict";
|
||||
|
||||
this.name = "Oolite Scavenger AI";
|
||||
this.version = "1.79";
|
||||
|
||||
this.aiStarted = function() {
|
||||
var ai = new worldScripts["oolite-libPriorityAI"].PriorityAIController(this.ship);
|
||||
|
@ -27,7 +27,6 @@ MA 02110-1301, USA.
|
||||
"use strict";
|
||||
|
||||
this.name = "Oolite Shuttle AI";
|
||||
this.version = "1.79";
|
||||
|
||||
this.aiStarted = function() {
|
||||
var ai = new worldScripts["oolite-libPriorityAI"].PriorityAIController(this.ship);
|
||||
@ -35,7 +34,14 @@ this.aiStarted = function() {
|
||||
ai.setParameter("oolite_flag_sendsDistressCalls",true);
|
||||
ai.setParameter("oolite_flag_allowPlanetaryLanding",true);
|
||||
|
||||
ai.setCommunicationsRole("shuttle");
|
||||
if (this.ship.primaryRole == "escape-capsule")
|
||||
{
|
||||
ai.setCommunicationsRole("escapepod");
|
||||
}
|
||||
else
|
||||
{
|
||||
ai.setCommunicationsRole("shuttle");
|
||||
}
|
||||
|
||||
ai.setParameter("oolite_friendlyRoles",["oolite-pirate-victim"]);
|
||||
|
||||
|
@ -27,7 +27,6 @@ MA 02110-1301, USA.
|
||||
"use strict";
|
||||
|
||||
this.name = "Oolite Main Station AI";
|
||||
this.version = "1.79";
|
||||
|
||||
this.aiStarted = function() {
|
||||
var ai = new worldScripts["oolite-libPriorityAI"].PriorityAIController(this.ship);
|
||||
|
@ -27,7 +27,6 @@ MA 02110-1301, USA.
|
||||
"use strict";
|
||||
|
||||
this.name = "Oolite Tharglet AI";
|
||||
this.version = "1.79";
|
||||
|
||||
this.aiStarted = function() {
|
||||
var ai = new worldScripts["oolite-libPriorityAI"].PriorityAIController(this.ship);
|
||||
@ -37,6 +36,7 @@ this.aiStarted = function() {
|
||||
|
||||
ai.setParameter("oolite_flag_fightsNearHostileStations",true);
|
||||
ai.setParameter("oolite_flag_scanIgnoresUnpowered",true);
|
||||
ai.setParameter("oolite_flag_likesInterstellarSpace",true);
|
||||
|
||||
ai.setPriorities([
|
||||
/* Check for mothership */
|
||||
|
@ -27,12 +27,13 @@ MA 02110-1301, USA.
|
||||
"use strict";
|
||||
|
||||
this.name = "Oolite Thargoid AI";
|
||||
this.version = "1.79";
|
||||
|
||||
|
||||
this.aiStarted = function() {
|
||||
var ai = new worldScripts["oolite-libPriorityAI"].PriorityAIController(this.ship);
|
||||
|
||||
ai.setParameter("oolite_flag_fightsNearHostileStations",true);
|
||||
ai.setParameter("oolite_flag_likesInterstellarSpace",true);
|
||||
|
||||
ai.setCommunicationsRole("_thargoid");
|
||||
ai.setCommunicationsPersonality("thargoid");
|
||||
|
@ -27,7 +27,6 @@ MA 02110-1301, USA.
|
||||
"use strict";
|
||||
|
||||
this.name = "Oolite Trader AI";
|
||||
this.version = "1.79";
|
||||
|
||||
this.aiStarted = function() {
|
||||
var ai = new worldScripts["oolite-libPriorityAI"].PriorityAIController(this.ship);
|
||||
@ -36,17 +35,27 @@ this.aiStarted = function() {
|
||||
ai.setParameter("oolite_flag_surrendersEarly",true);
|
||||
ai.setParameter("oolite_flag_escortsCoverRetreat",true);
|
||||
|
||||
ai.setCommunicationsRole("trader");
|
||||
|
||||
var commsrole = "trader";
|
||||
// same AI works for freighters, couriers and smugglers with minimal
|
||||
// modification
|
||||
if (this.ship.primaryRole == "trader-smuggler")
|
||||
{
|
||||
if (worldScripts["oolite-libPriorityAI"]._getCommunicationPersonalities("trader-smuggler").length > 0)
|
||||
{
|
||||
commsrole = "trader-smuggler";
|
||||
}
|
||||
ai.setParameter("oolite_flag_fleesPreemptively",true);
|
||||
}
|
||||
else if (this.ship.primaryRole == "trader-courier")
|
||||
{
|
||||
ai.setParameter("oolite_flag_noDockingUntilDestination",true);
|
||||
if (worldScripts["oolite-libPriorityAI"]._getCommunicationPersonalities("trader-courier").length > 0)
|
||||
{
|
||||
commsrole = "trader-courier";
|
||||
}
|
||||
}
|
||||
ai.setCommunicationsRole(commsrole);
|
||||
|
||||
ai.setParameter("oolite_friendlyRoles",["oolite-trader"]);
|
||||
|
||||
|
@ -28,14 +28,20 @@ MA 02110-1301, USA.
|
||||
"use strict";
|
||||
|
||||
this.name = "Oolite Trader Opportunist AI";
|
||||
this.version = "1.79";
|
||||
|
||||
this.aiStarted = function() {
|
||||
var ai = new worldScripts["oolite-libPriorityAI"].PriorityAIController(this.ship);
|
||||
|
||||
ai.setParameter("oolite_flag_sendsDistressCalls",true);
|
||||
|
||||
ai.setCommunicationsRole("trader");
|
||||
if (worldScripts["oolite-libPriorityAI"]._getCommunicationPersonalities("trader-opportunist").length > 0)
|
||||
{
|
||||
ai.setCommunicationsRole("trader-opportunist");
|
||||
}
|
||||
else
|
||||
{
|
||||
ai.setCommunicationsRole("trader");
|
||||
}
|
||||
|
||||
ai.setPriorities([
|
||||
{
|
||||
@ -76,8 +82,13 @@ this.aiStarted = function() {
|
||||
{
|
||||
condition: ai.conditionScannerContainsLoneVictim,
|
||||
configuration: ai.configurationAcquireScannedTarget,
|
||||
behaviour: ai.behaviourDestroyCurrentTarget,
|
||||
reconsider: 20
|
||||
truebranch: [
|
||||
{
|
||||
condition: ai.conditionCombatOddsGood,
|
||||
behaviour: ai.behaviourDestroyCurrentTarget,
|
||||
reconsider: 20
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
condition: ai.conditionCargoIsProfitableHere,
|
||||
|
@ -27,7 +27,6 @@ MA 02110-1301, USA.
|
||||
"use strict";
|
||||
|
||||
this.name = "Oolite Tutorial Fighter AI";
|
||||
this.version = "1.79";
|
||||
|
||||
this.aiStarted = function() {
|
||||
var ai = new worldScripts["oolite-libPriorityAI"].PriorityAIController(this.ship);
|
||||
|
@ -15,6 +15,9 @@
|
||||
*/
|
||||
|
||||
{
|
||||
"assassin-light" = "oolite-assassinAI.js";
|
||||
"assassin-medium" = "oolite-assassinAI.js";
|
||||
"assassin-heavy" = "oolite-assassinAI.js";
|
||||
"asteroid" = "dumbAI.plist";
|
||||
"escort" = "oolite-escortAI.js";
|
||||
"hunter" = "oolite-bountyHunterAI.js";
|
||||
|
@ -850,6 +850,12 @@
|
||||
"@-damaged" = "%@ damaged.";
|
||||
"@-destroyed" = "%@ destroyed.";
|
||||
|
||||
// beacon labels
|
||||
"oolite-beacon-label-station" = "%H Station";
|
||||
"oolite-beacon-label-witchpoint" = "Witchpoint";
|
||||
"oolite-beacon-label-target" = "Target";
|
||||
"oolite-default-star-name" = "Star";
|
||||
|
||||
// icons for the hud
|
||||
"EQ_HARDENED_MISSILE" =
|
||||
(
|
||||
@ -1041,13 +1047,219 @@
|
||||
"oolite-start-option-1" = " Start New Commander ";
|
||||
"oolite-start-option-2" = " Load Commander ";
|
||||
"oolite-start-option-3" = " View Ship Library ";
|
||||
"oolite-start-option-4" = " Manage Expansion Packs ";
|
||||
"oolite-start-option-5" = " Exit Game ";
|
||||
"oolite-start-option-4" = " View Keyboard Settings ";
|
||||
"oolite-start-option-5" = " Manage Expansion Packs ";
|
||||
"oolite-start-option-6" = " Exit Game ";
|
||||
|
||||
|
||||
"oolite-newgame-title" = "Start New Commander";
|
||||
|
||||
"oolite-ship-library-title" = "Ship Library";
|
||||
"oolite-ship-library-exit" = "Press space to exit ship library";
|
||||
"oolite-ship-library-exit" = "Use arrow keys to view ships; press space to exit library";
|
||||
|
||||
"oolite-ship-library-classified" = "Classified";
|
||||
"oolite-ship-library-unknown" = "Unknown";
|
||||
|
||||
"oolite-ship-library-category-ship" = "Ship";
|
||||
"oolite-ship-library-category-station" = "Installation";
|
||||
"oolite-ship-library-category-weapon" = "Weapon";
|
||||
"oolite-ship-library-category-thargoid" = "Thargoid Ship";
|
||||
"oolite-ship-library-category-misc" = "Miscellaneous";
|
||||
|
||||
"oolite-ship-library-category-plural-ship" = "Ships";
|
||||
"oolite-ship-library-category-plural-station" = "Installations";
|
||||
"oolite-ship-library-category-plural-weapon" = "Weapons";
|
||||
"oolite-ship-library-category-plural-thargoid" = "Thargoid Ships";
|
||||
"oolite-ship-library-category-plural-misc" = "Miscellaneous";
|
||||
|
||||
"oolite-ship-library-speed-custom" = "Speed: %@";
|
||||
"oolite-ship-library-speed-stationary" = "Speed: Stationary";
|
||||
"oolite-ship-library-speed-veryslow" = "Speed: Very Slow";
|
||||
"oolite-ship-library-speed-slow" = "Speed: Slow";
|
||||
"oolite-ship-library-speed-average" = "Speed: Average";
|
||||
"oolite-ship-library-speed-fast" = "Speed: Fast";
|
||||
"oolite-ship-library-speed-veryfast" = "Speed: Very Fast";
|
||||
|
||||
"oolite-ship-library-turn-custom" = "Turn rate: %@";
|
||||
"oolite-ship-library-turn-veryslow" = "Turn rate: Very Slow";
|
||||
"oolite-ship-library-turn-slow" = "Turn rate: Slow";
|
||||
"oolite-ship-library-turn-average" = "Turn rate: Average";
|
||||
"oolite-ship-library-turn-fast" = "Turn rate: Fast";
|
||||
"oolite-ship-library-turn-veryfast" = "Turn rate: Very Fast";
|
||||
|
||||
"oolite-ship-library-cargo-custom" = "Cargo: %@";
|
||||
"oolite-ship-library-cargo-none" = "Cargo: None";
|
||||
"oolite-ship-library-cargo-carried-u" = "Cargo: %u TC";
|
||||
|
||||
"oolite-ship-library-generator-custom" = "Generator: %@";
|
||||
"oolite-ship-library-generator-weak" = "Generator: Weak";
|
||||
"oolite-ship-library-generator-average" = "Generator: Average";
|
||||
"oolite-ship-library-generator-strong" = "Generator: Strong";
|
||||
|
||||
"oolite-ship-library-shields-custom" = "Shields: %@";
|
||||
"oolite-ship-library-shields-veryweak" = "Shields: Very Weak";
|
||||
"oolite-ship-library-shields-weak" = "Shields: Weak";
|
||||
"oolite-ship-library-shields-average" = "Shields: Average";
|
||||
"oolite-ship-library-shields-strong" = "Shields: Strong";
|
||||
"oolite-ship-library-shields-verystrong" = "Shields: Very Strong";
|
||||
|
||||
"oolite-ship-library-witchspace-custom" = "Witchspace: %@";
|
||||
"oolite-ship-library-witchspace-yes" = "Witchspace: Yes";
|
||||
"oolite-ship-library-witchspace-no" = "Witchspace: No";
|
||||
|
||||
"oolite-ship-library-weapons-custom" = "Weapons: %@";
|
||||
"oolite-ship-library-weapons-none" = "Weapons: None";
|
||||
"oolite-ship-library-weapons-u-u" = "Weapons: %u fixed, %u pylons";
|
||||
|
||||
"oolite-ship-library-size-custom" = "Size: %@";
|
||||
"oolite-ship-library-size-u-u-u" = "Size: %um x %um x %um";
|
||||
|
||||
|
||||
"oolite-ship-library-summary-CG" = "Goods container";
|
||||
"oolite-ship-library-summary-CP" = "Evacuation ship";
|
||||
"oolite-ship-library-summary-HF" = "Heavy fighter";
|
||||
"oolite-ship-library-summary-HFr" = "Heavy freighter";
|
||||
"oolite-ship-library-summary-HT" = "Heavy transport";
|
||||
"oolite-ship-library-summary-HM" = "Heavy multi-role";
|
||||
"oolite-ship-library-summary-LF" = "Light fighter";
|
||||
"oolite-ship-library-summary-LFr" = "Light freighter";
|
||||
"oolite-ship-library-summary-LM" = "Light multi-role";
|
||||
"oolite-ship-library-summary-LT" = "Light transport";
|
||||
"oolite-ship-library-summary-MF" = "Medium fighter";
|
||||
"oolite-ship-library-summary-MFr" = "Medium freighter";
|
||||
"oolite-ship-library-summary-MM" = "Medium multi-role";
|
||||
"oolite-ship-library-summary-MT" = "Medium transport";
|
||||
"oolite-ship-library-summary-NB" = "Natural body";
|
||||
"oolite-ship-library-summary-PHF" = "Police heavy fighter";
|
||||
"oolite-ship-library-summary-PLF" = "Police light fighter";
|
||||
"oolite-ship-library-summary-RW" = "Recon warship";
|
||||
"oolite-ship-library-summary-SM" = "Mining installation";
|
||||
"oolite-ship-library-summary-SA" = "Navigation aid";
|
||||
"oolite-ship-library-summary-SO" = "Orbital station";
|
||||
"oolite-ship-library-summary-WMn" = "Timed explosive";
|
||||
"oolite-ship-library-summary-WMs" = "Fire-and-forget missile";
|
||||
|
||||
"oolite-ship-library-description-adder" = "The Adder is the smallest ship capable of fitting a witchdrive. It has little else to recommend it other than extreme manoeuvrability, but its low price and reliability makes it useful in high-risk mining and salvage operations";
|
||||
"oolite-ship-library-description-anaconda" = "The Anaconda's large interior is almost entirely cargo space, leaving the ship little room for engines or generators. As a bulk cargo hauler, however, no other ship can carry anywhere near as much - but it requires a strong escort in all but the safest systems.";
|
||||
"oolite-ship-library-description-asp" = "The Asp is a pure fighter, with powerful shields and excellent speed. It is most popular with military organisations where the lack of cargo space and singular missile pylon are not significant disadvantages, but it also sees some more peaceful use as a fast courier.";
|
||||
"oolite-ship-library-description-asteroid" = "Asteroids and other smaller rocky bodies are found throughout Cooperative space. As a minor hazard to navigation there is a small fee paid for their destruction, but more usually they are broken apart by mining ships for possible mineral content.";
|
||||
"oolite-ship-library-description-barrel" = "The majority of trade goods are shipped in standard 1 TC containers. The containers are relatively sturdy and occasionally survive the destruction of the ship carrying them - all traders are recommended to travel with sufficient escort to deter this form of piracy.";
|
||||
"oolite-ship-library-description-boa" = "The Boa is the modern mainstay of the freight corporations, largely replacing the older Python design, which it outclasses in most respects - it is larger, faster, and better able to protect itself.";
|
||||
"oolite-ship-library-description-boa-mk2" = "The Boa Cruiser is a significant refinement of the basic Boa design, using the latest advances in system miniaturisation, and the fitting of a military-grade drive system, to give a fast freighter with 40 percent more cargo space than the basic Boa. So far, it has only been practical to produce in relatively small quantities.";
|
||||
"oolite-ship-library-description-buoy" = "The standard navigation buoy marks places of interest such as Cooperative orbital stations and the system witchspace exit point. It is equipped with a powerful radio transmitter which can be detected across the entire system by an Advanced Space Compass.";
|
||||
"oolite-ship-library-description-cobra3" = "The first truly successful multi-role design, with enough cargo space to trade or salvage effectively, and enough firepower not to need an escort while doing so. Its introduction led to a significant rise in the number of independent pilots - traders, bounty hunters and pirates - operating outside traditional corporate and criminal power structures.";
|
||||
"oolite-ship-library-description-cobramk1" = "The original Cobra design was the first attempt at a multi-role craft. While relatively good for its day, more modern craft have superseded it. It still sees use from those who need flexibility and can't afford better, especially pirates and miners.";
|
||||
"oolite-ship-library-description-coriolis" = "The Coriolis Station is the standard Cooperative orbital station seen in almost all systems. A kilometre across, with room for over a hundred ships and tens of thousands of inhabitants, these stations are key trading hubs for their systems, as well as housing several police Viper patrols.";
|
||||
"oolite-ship-library-description-dodec" = "The Dodecahedron station has replaced the Coriolis in many richer systems as its internal layout provides a greater number of decks at a suitable gravity for luxury space-side accommodation. The easy access to corporate executives makes them centres of trade for entire regions.";
|
||||
"oolite-ship-library-description-hardmissile" = "With countermeasures (and the Thargoid equivalent) sufficient to render standard missiles almost useless, military forces and wealthy civilians are often willing to pay over ten times the cost of a standard missile for the HMX5. The payload and range is the same as the HM3, but it has a sophisticated sensor suite almost immune to modern countermeasures systems.";
|
||||
"oolite-ship-library-description-escape" = "The Escape Capsule provides a last-resort means of evacuation from a doomed ship. It is fragile and slow, but even criminal pilots will usually scoop them up and bring them to safety for a no-questions-asked recovery fee.";
|
||||
"oolite-ship-library-description-ferdelance" = "The Fer-de-lance is officially classified as a medium transport, fitted out with luxury passenger cabins for rich travellers. Hunters, pirates, and assassins, however, have discovered that if refitted for combat its narrow profile and high speed makes an excellent hit-and-run fighter.";
|
||||
"oolite-ship-library-description-gecko" = "The Gecko is an extremely effective combat ship, not far behind the Asp in effectiveness but considerably easier to maintain - the space saved by not fitting a witchdrive means that far less miniaturisation is required for the remaining components. Very popular both as a heavy escort and a pirate fighter";
|
||||
"oolite-ship-library-description-ico" = "The Icosahedron station is a modern design slowly replacing the Coriolis in richer systems. Its internal layout is designed around its shipyard and hangar - while it has less accommodation and cargo space than the Coriolis, it can carry twice as many ships, supported by fully-equipped maintenance bays.";
|
||||
"oolite-ship-library-description-krait" = "The Krait is an old light fighter design, originally made in the millions, but rarely produced today. Its only remaining advantage is ease of customisation - the Mamba has superseded it in almost every niche as a light fighter.";
|
||||
"oolite-ship-library-description-mamba" = "The premier modern civilian light fighter, this is one of the most common escort craft, used by traders, pirates and bounty hunters alike. Cheap and easy to maintain, it can still hold its own against much larger ships.";
|
||||
"oolite-ship-library-description-missile" = "The HM3 missile available at almost all stations, this is faster than even the fastest Cooperative ship, and has a maximum range of 30km, continuing to home in even if the launching ship is destroyed. It is extremely vulnerable to counter-measures systems, which will cause it to lose target lock and explode";
|
||||
"oolite-ship-library-description-moray" = "This light ship is popular for small transport jobs, especially of medical supplies, due to its agility and ability to operate in a wide range of environments. This also makes it popular with smaller pirate bands, who are unable to acquire a dedicated freighter.";
|
||||
"oolite-ship-library-description-python" = "The aging Python design is falling out of favour with traders as the more modern Boa supersedes it. It is still extremely popular with pirates as it is famously easy to repair, and new traders may find they are unable to afford anything better.";
|
||||
"oolite-ship-library-description-qbomb" = "The Quirium Cascade Mine is an extremely powerful timed weapon, rarely used by civilians due to its ability to destroy a wide area including the launching ship. Fuel stores aboard ships hit by its blast create a secondary explosion of equal power, making the exact level of destruction hard to control.";
|
||||
"oolite-ship-library-description-rockhermit" = "The largest asteroids are often hollowed out, both for internal mining operations and as a convenient base for mining ships to operate from. Their isolated nature also makes them a common pirate haunt, especially in the less stable systems.";
|
||||
"oolite-ship-library-description-shuttle" = "These light unarmed ships are regularly used to transfer personnel and cargo between a planet's surface and its orbital stations. Their slow speed and poor endurance means that they are rarely seen away from the planet.";
|
||||
"oolite-ship-library-description-sidewinder" = "An excellent light fighter often deployed by military forces to support larger ships such as the Asp, it is also commonly used by trading corporations as an escort fighter. Pirates rarely use this ship as its military heritage makes it difficult to maintain.";
|
||||
"oolite-ship-library-description-tharglet" = "The Thargon Drone fighter is carried in large numbers by Thargoid warships. It is lightly armed and fragile, though its tiny size makes it almost impossible to hit. Most pilots ignore these as much as possible and concentrate on destroying the warship, which will make these ships enter an inert state.";
|
||||
"oolite-ship-library-description-thargoid" = "The Thargoid Warship is the smallest independent Thargoid craft generally encountered, and appears to currently be used as a recon ship and opportunistic raider. It is faster than most Cooperative ships, and incredibly well-shielded. Its primary weapon is a laser turret with full sphere coverage, but its drone fighters often do more damage.";
|
||||
"oolite-ship-library-description-thargoid-weapons" = "1 laser turret, drone fighters.";
|
||||
"oolite-ship-library-description-transporter" = "The Transporter is the most common ship used for in-system cargo and personnel transfers, with more range and capacity than the orbital shuttle. It is usually unarmed, though some fit a mining laser to make asteroid mining more efficient.";
|
||||
"oolite-ship-library-description-viper" = "The Viper patrol craft is seen in every system - in greater or lesser numbers - protecting the space lanes and the Cooperative stations. Its design is starting to show its age especially against modern fighter craft, but most criminals will still retreat when confronted by a full patrol wing.";
|
||||
"oolite-ship-library-description-viperinterceptor" = "This next generation police fighter has recently been introduced as a replacement for the aging Viper design. Expensive to build and maintain, it is rarely seen except in the richest systems, where it is extremely effective in securing the space lanes against piracy.";
|
||||
"oolite-ship-library-description-worm" = "A light transport craft similar to the orbital shuttle in capacity but with a longer range. Its weapon mounting is usually used by miners for a cheap mining ship, but particularly desperate pilots have been known to fit it with a pulse laser and use it as a (very) light escort craft.";
|
||||
|
||||
"oolite-keysetting-screen" = "Keyboard Settings";
|
||||
"oolite-keysetting-text" = "See documentation for more information. Press space to return to the menu";
|
||||
|
||||
"oolite-keydesc-key_roll_left" = "Roll left";
|
||||
"oolite-keydesc-key_roll_right" = "Roll right";
|
||||
"oolite-keydesc-key_pitch_forward" = "Pitch down";
|
||||
"oolite-keydesc-key_pitch_back" = "Pitch up";
|
||||
"oolite-keydesc-key_yaw_left" = "Yaw left";
|
||||
"oolite-keydesc-key_yaw_right" = "Yaw right";
|
||||
|
||||
"oolite-keydesc-key_view_forward" = "Forward view";
|
||||
"oolite-keydesc-key_view_aft" = "Aft view";
|
||||
"oolite-keydesc-key_view_port" = "Port view";
|
||||
"oolite-keydesc-key_view_starboard" = "Starboard view";
|
||||
|
||||
"oolite-keydesc-key_gui_screen_status" = "Status screens";
|
||||
"oolite-keydesc-key_gui_chart_screens" = "Chart screens";
|
||||
"oolite-keydesc-key_gui_system_data" = "System screens";
|
||||
"oolite-keydesc-key_gui_market" = "Market screens";
|
||||
|
||||
"oolite-keydesc-key_gui_arrow_left" = "GUI Left";
|
||||
"oolite-keydesc-key_gui_arrow_right" = "GUI Right";
|
||||
"oolite-keydesc-key_gui_arrow_up" = "GUI Up";
|
||||
"oolite-keydesc-key_gui_arrow_down" = "GUI Down";
|
||||
|
||||
"oolite-keydesc-key_increase_speed" = "Accelerate";
|
||||
"oolite-keydesc-key_decrease_speed" = "Decelerate";
|
||||
"oolite-keydesc-key_inject_fuel" = "Fuel Injectors";
|
||||
|
||||
"oolite-keydesc-key_fire_lasers" = "Fire laser";
|
||||
"oolite-keydesc-key_weapons_online_toggle" = "Weapons toggle";
|
||||
"oolite-keydesc-key_launch_missile" = "Launch missile";
|
||||
"oolite-keydesc-key_next_missile" = "Next missile";
|
||||
"oolite-keydesc-key_ecm" = "ECM";
|
||||
|
||||
"oolite-keydesc-key_prime_equipment" = "Select item";
|
||||
"oolite-keydesc-key_activate_equipment" = "Item button 1";
|
||||
"oolite-keydesc-key_mode_equipment" = "Item button 2";
|
||||
"oolite-keydesc-key_fastactivate_equipment_a" = "Item shortcut 1";
|
||||
"oolite-keydesc-key_fastactivate_equipment_b" = "Item shortcut 2";
|
||||
|
||||
"oolite-keydesc-key_target_incoming_missile" = "Target incoming";
|
||||
"oolite-keydesc-key_target_missile" = "Target missile";
|
||||
"oolite-keydesc-key_untarget_missile" = "Untarget missile";
|
||||
"oolite-keydesc-key_ident_system" = "Ident system";
|
||||
|
||||
"oolite-keydesc-key_scanner_zoom" = "Zoom scanner";
|
||||
"oolite-keydesc-key_scanner_unzoom" = "Unzoom scanner";
|
||||
|
||||
"oolite-keydesc-key_launch_escapepod" = "Escape Pod";
|
||||
|
||||
"oolite-keydesc-key_galactic_hyperspace" = "Galactic jump";
|
||||
"oolite-keydesc-key_hyperspace" = "Witchspace jump";
|
||||
"oolite-keydesc-key_jumpdrive" = "Torus drive";
|
||||
|
||||
"oolite-keydesc-key_dump_cargo" = "Dump cargo";
|
||||
"oolite-keydesc-key_rotate_cargo" = "Rotate cargo";
|
||||
|
||||
"oolite-keydesc-key_autopilot" = "Docking computer";
|
||||
"oolite-keydesc-key_autodock" = "Fast docking";
|
||||
"oolite-keydesc-key_docking_clearance_request" = "Request clearance";
|
||||
|
||||
"oolite-keydesc-key_snapshot" = "Take snapshot";
|
||||
"oolite-keydesc-key_docking_music" = "Docking music";
|
||||
|
||||
"oolite-keydesc-key_advanced_nav_array" = "Route planner";
|
||||
"oolite-keydesc-key_map_home" = "Home map";
|
||||
"oolite-keydesc-key_map_info" = "Show chart icons";
|
||||
|
||||
"oolite-keydesc-key_pausebutton" = "Pause";
|
||||
"oolite-keydesc-key_show_fps" = "Show FPS";
|
||||
"oolite-keydesc-key_mouse_control" = "Mouse control";
|
||||
"oolite-keydesc-key_hud_toggle" = "Toggle HUD";
|
||||
|
||||
"oolite-keydesc-key_comms_log" = "Comms log";
|
||||
"oolite-keydesc-key_prev_compass_mode" = "ASC back";
|
||||
"oolite-keydesc-key_next_compass_mode" = "ASC forward";
|
||||
|
||||
"oolite-keydesc-key_chart_highlight" = "Chart highlight";
|
||||
|
||||
"oolite-keydesc-key_cycle_mfd" = "Cycle MFD";
|
||||
"oolite-keydesc-key_switch_mfd" = "Select MFD";
|
||||
|
||||
"oolite-keydesc-key_next_target" = "Next target";
|
||||
"oolite-keydesc-key_previous_target" = "Previous target";
|
||||
|
||||
"oolite-keydesc-key_custom_view" = "External view";
|
||||
|
||||
"oolite-loadsave-exit" = "Return to Menu";
|
||||
"oolite-scenario-exit" = "Return to Menu";
|
||||
@ -1061,6 +1273,7 @@
|
||||
"oolite-oxzmanager-title" = "Expansion Pack Manager";
|
||||
"oolite-oxzmanager-title-downloading" = "Downloading file...";
|
||||
"oolite-oxzmanager-title-install" = "Select pack to install";
|
||||
"oolite-oxzmanager-title-installed" = "Select pack to update";
|
||||
"oolite-oxzmanager-title-remove" = "Select pack to remove";
|
||||
"oolite-oxzmanager-exit" = "Return to Menu";
|
||||
"oolite-oxzmanager-exit-restart" = "Return to Menu (applies changes)";
|
||||
@ -1069,18 +1282,21 @@
|
||||
"oolite-oxzmanager-download-list" = "Download expansions list";
|
||||
"oolite-oxzmanager-update-list" = "Update expansions list";
|
||||
"oolite-oxzmanager-install" = "Install expansion pack";
|
||||
"oolite-oxzmanager-installed" = "List installed expansion packs";
|
||||
"oolite-oxzmanager-remove" = "Remove expansion pack";
|
||||
"oolite-oxzmanager-firstrun" = "Before Oolite can install your requested expansions automatically, it needs to retrieve the expansions list. You will need to be connected to the internet for this to work. Use the 'Download expansions list' option when you are ready, or 'Return to Menu' if you do not have internet access now or would rather download and install expansions yourself.";
|
||||
"oolite-oxzmanager-intro" = "Oolite can automatically install some expansions for you if you are connected to the internet. Use the 'Update expansions list' option to retrieve the latest expansions list, and the 'Install expansions' and 'Remove expansions' options to add and remove expansion packs.\n\nThere are also many more expansion packs not available through the automatic installer.\n\nCalculations of conflicts and dependencies between expansion packs are based on your currently running packs. So, if pack A requires pack B to work, and you install pack B, pack A will still show up as having unmet requirements until you have exited and re-entered the manager, which will restart all the packs. You can, if you know you just installed pack B, install pack A anyway - both packs will then be loaded at once when you exit the manager.";
|
||||
"oolite-oxzmanager-nothing-removable" = "Oolite can only remove expansion packs which have been added through this system, and there are currently none installed. Expansion packs which you have installed manually must also be removed manually.";
|
||||
"oolite-oxzmanager-firstrun" = "Before Oolite can install your requested expansions automatically, it needs to retrieve the expansions list. You will need to be connected to the internet for this to work. Use the 'Download expansions list' option when you are ready, or 'Return to Menu' if you do not have internet access now or would rather download and install expansions yourself.\n\nImportant: if you have old expansion packs installed in the OXP format, Oolite will not be able to automatically detect that they are the same pack as a new release. When downloading an expansion through this manager, you must first uninstall any old OXP versions of the same expansion to avoid problems.";
|
||||
"oolite-oxzmanager-intro" = "Oolite can automatically install some expansions for you if you are connected to the internet. Use the 'Update expansions list' option to retrieve the latest expansions list, and the 'Install expansions' and 'Remove expansions' options to add and remove expansion packs.\n\nThere are also many more expansion packs not available through the automatic installer.\n\nImportant: if you have old expansion packs installed in the OXP format, Oolite will not be able to automatically detect that they are the same pack as a new release. When downloading an expansion through this manager, you must first uninstall any old OXP versions of the same expansion to avoid problems.\n\nCalculations of conflicts and dependencies between expansion packs are based on your currently running packs. So, if pack A requires pack B to work, and you install pack B, pack A will still show up as having unmet requirements until you have exited and re-entered the manager, which will restart all the packs. You can, if you know you just installed pack B, install pack A anyway - both packs will then be loaded at once when you exit the manager.";
|
||||
"oolite-oxzmanager-nothing-removable" = "Oolite can only remove expansion packs which have been added through this system, and there are currently none installed. Expansion packs which you have installed manually must also be removed manually. Oolite is not able to manage old OXP format expansion packs for you.";
|
||||
"oolite-oxzmanager-restart" = "As you have changed the expansion packs you have installed, Oolite now needs to reload the game data. This may take a few seconds or several minutes depending on how fast your computer is and how many packs you have installed. Please be patient while this reload completes: Oolite will not respond to the keyboard or mouse until this is done.";
|
||||
"oolite-oxzmanager-progress-@-of-@" = "Downloading: %@ of %@";
|
||||
"oolite-oxzmanager-progress-done" = "Download complete";
|
||||
"oolite-oxzmanager-progress-warning" = "If you are downloading a large file Oolite may sometimes appear to hang during the download without updating the progress. The download is still progressing - please be patient as Oolite will return to normal operation when the download is complete.";
|
||||
"oolite-oxzmanager-progress-done-%u-%u" = "Download complete. There are now %u expansion packs available for download, and %u pack(s) have been installed here.";
|
||||
"oolite-oxzmanager-removal-done" = "Expansion pack removed";
|
||||
"oolite-oxzmanager-progress-error" = "Download failed! See Latest.log for more details. Using the '[oolite-oxzmanager-update-list]' menu option if you have not done so already and re-attempting the download may sometimes fix the problem.";
|
||||
"oolite-oxzmanager-heading-category" = "Category";
|
||||
"oolite-oxzmanager-heading-title" = "Title";
|
||||
"oolite-oxzmanager-heading-version" = "Version";
|
||||
"oolite-oxzmanager-heading-downloadable"= "Available";
|
||||
"oolite-oxzmanager-heading-installed" = "Installed";
|
||||
"oolite-oxzmanager-infoline-url" = "URL: ";
|
||||
"oolite-oxzmanager-infoline-size" = "Download size: ";
|
||||
@ -1092,6 +1308,10 @@
|
||||
"oolite-oxzmanager-installable-already" = "Status: Installed and at the current version.";
|
||||
"oolite-oxzmanager-installable-manual" = "Status: Manually installed; cannot also be installed automatically.";
|
||||
"oolite-oxzmanager-installable-version" = "Status: Incompatible with this version of Oolite.";
|
||||
"oolite-oxzmanager-installable-noremote"= "Status: Installed but no longer available for download.";
|
||||
"oolite-oxzmanager-installer-nonepicked" = "Select a pack and press return to install or upgrade it if possible. Packs in orange can be installed but will require other packs to be installed before they work, or conflict with a pack you have already installed.";
|
||||
"oolite-oxzmanager-installed-nonepicked" = "Select a pack and press return to upgrade it if upgrades are available. Manually installed packs are not listed here.";
|
||||
"oolite-oxzmanager-remover-nonepicked" = "Select a pack and press return to remove it. If the pack is coloured blue it is no longer available for download and you will not be able to reinstall it if you remove it.";
|
||||
|
||||
|
||||
// Loading screen (currently Mac only), also logged under start.progress
|
||||
@ -1140,6 +1360,8 @@
|
||||
"equipment-pass-berth-@%1" = "%d Passenger Berths";
|
||||
"equipment-@-not-available" = "%@ (N/A)";
|
||||
"manifest-cargo-quantity-format" = "%d %@ × %@"; // $count $units × $commodityName
|
||||
"oolite-manifest-cargo-quantity-format2" = "%d %@ × %@ (%d TC)"; // $count $units × $commodityName ($containers TC)
|
||||
|
||||
|
||||
// Short and Long Range Chart Overrides
|
||||
"charts-distance-f" = "Distance: %.1f Light Years";
|
||||
@ -1210,6 +1432,7 @@
|
||||
"gameoptions-sound-volume-mute" = " Sound Volume: Mute ";
|
||||
"gameoptions-volume-external-only" = " Sound Volume: External Control Only ";
|
||||
"gameoptions-spoken-messages-yes" = " Spoken Messages: On ";
|
||||
"gameoptions-spoken-messages-comms" = " Spoken Messages: Comms only ";
|
||||
"gameoptions-spoken-messages-no" = " Spoken Messages: Off ";
|
||||
"gameoptions-voice-@" = " Voice: %@ ";
|
||||
"gameoptions-voice-M" = " Gender: Male ";
|
||||
@ -1428,8 +1651,8 @@
|
||||
|
||||
// Save/Overwrite commander screens
|
||||
"savescreen-title" = "Save Commander";
|
||||
"savescreen-commander-name-@" = "Commander name: %@";
|
||||
"savescreen-commander-name" = "Commander name: ";
|
||||
"savescreen-commander-name-@" = "Save name: %@";
|
||||
"savescreen-commander-name" = "Save name: ";
|
||||
"overwrite-save-commander-@" = "Save Commander %@";
|
||||
"overwritescreen-commander-@-already-exists-overwrite-query" = "A file named %@ already exists. Do you wish to overwrite it?";
|
||||
"overwritescreen-yes" = " Overwrite ";
|
||||
@ -1637,7 +1860,7 @@
|
||||
// translations of special keys
|
||||
"oolite-keycode-unset" = "(not set)";
|
||||
"oolite-keycode-tab" = "Tab";
|
||||
"oolite-keycode-esc" = "Escape";
|
||||
"oolite-keycode-esc" = "Esc";
|
||||
"oolite-keycode-space" = "Space";
|
||||
"oolite-keycode-f1" = "F1";
|
||||
"oolite-keycode-f2" = "F2";
|
||||
@ -1650,16 +1873,26 @@
|
||||
"oolite-keycode-f9" = "F9";
|
||||
"oolite-keycode-f10" = "F10";
|
||||
"oolite-keycode-f11" = "F11";
|
||||
"oolite-keycode-right" = "Right Arrow";
|
||||
"oolite-keycode-left" = "Left Arrow";
|
||||
"oolite-keycode-down" = "Down Arrow";
|
||||
"oolite-keycode-up" = "Up Arrow";
|
||||
"oolite-keycode-right" = "Right";
|
||||
"oolite-keycode-left" = "Left";
|
||||
"oolite-keycode-down" = "Down";
|
||||
"oolite-keycode-up" = "Up";
|
||||
"oolite-keycode-home" = "Home";
|
||||
"oolite-keycode-end" = "End";
|
||||
"oolite-keycode-insert" = "Insert";
|
||||
"oolite-keycode-delete" = "Delete";
|
||||
"oolite-keycode-pageup" = "Page Up";
|
||||
"oolite-keycode-pagedown" = "Page Down";
|
||||
"oolite-keycode-numpad0" = "Numpad 0";
|
||||
"oolite-keycode-numpad1" = "Numpad 1";
|
||||
"oolite-keycode-numpad2" = "Numpad 2";
|
||||
"oolite-keycode-numpad3" = "Numpad 3";
|
||||
"oolite-keycode-numpad4" = "Numpad 4";
|
||||
"oolite-keycode-numpad5" = "Numpad 5";
|
||||
"oolite-keycode-numpad6" = "Numpad 6";
|
||||
"oolite-keycode-numpad7" = "Numpad 7";
|
||||
"oolite-keycode-numpad8" = "Numpad 8";
|
||||
"oolite-keycode-numpad9" = "Numpad 9";
|
||||
|
||||
|
||||
// Mac multi-screen handling
|
||||
|
@ -7,6 +7,7 @@
|
||||
available_to_all = true;
|
||||
condition_script = "oolite-conditions.js";
|
||||
requires_non_full_fuel = true;
|
||||
sort_order = 1; // always first
|
||||
}
|
||||
),
|
||||
(
|
||||
|
@ -84,6 +84,24 @@
|
||||
smooth_points = false; // Point smoothing is not supported in hardware.
|
||||
use_dust_shader = false; // Vertex shaders are emulated on CPU.
|
||||
};
|
||||
|
||||
|
||||
"Intel GMA 3100 family" =
|
||||
{
|
||||
match =
|
||||
{
|
||||
vendor = "Tungsten|Intel";
|
||||
/* e.g. "Mesa DRI Intel(R) G33" - as above entry, mesa
|
||||
* drivers use chipset number
|
||||
*/
|
||||
renderer = "(Intel|GMA).*\\bG?3[13](\\b|$)";
|
||||
};
|
||||
maximum_shader_level = "SHADERS_SIMPLE";
|
||||
default_shader_level = "SHADERS_SIMPLE";
|
||||
smooth_points = false; // Point smoothing is not supported in hardware.
|
||||
use_dust_shader = false; // Vertex shaders are emulated on CPU.
|
||||
};
|
||||
|
||||
|
||||
"ATI R300 family" =
|
||||
{
|
||||
|
@ -137,6 +137,15 @@
|
||||
x = -152;
|
||||
y = -201;
|
||||
},
|
||||
// not enabled in default HUD - uncomment to use
|
||||
// { /* witchspace destination label */
|
||||
// selector = "drawWitchspaceDestination:";
|
||||
// height = 10;
|
||||
// width = 10;
|
||||
// y = -207;
|
||||
// x = -176;
|
||||
// color = (0.25,0.25,1.0,1.0);
|
||||
// },
|
||||
{ /* cabin temperature bar */
|
||||
height = 8;
|
||||
selector = "drawCabinTempBar:";
|
||||
@ -203,42 +212,48 @@
|
||||
},
|
||||
{
|
||||
text = "Roll";
|
||||
x = -192;
|
||||
align = 1;
|
||||
x = -181;
|
||||
y = -180;
|
||||
height = 8;
|
||||
width = 8;
|
||||
},
|
||||
{
|
||||
text = "Pitch";
|
||||
x = -196;
|
||||
align = 1;
|
||||
x = -181;
|
||||
y = -192;
|
||||
height = 8;
|
||||
width = 8;
|
||||
},
|
||||
{
|
||||
text = "FUEL";
|
||||
x = -197;
|
||||
align = 1;
|
||||
x = -181;
|
||||
y = -206;
|
||||
height = 8;
|
||||
width = 8;
|
||||
},
|
||||
{
|
||||
text = "CT";
|
||||
x = -189;
|
||||
align = 1;
|
||||
x = -181;
|
||||
y = -216;
|
||||
height = 8;
|
||||
width = 8;
|
||||
},
|
||||
{
|
||||
text = "LT";
|
||||
x = -188;
|
||||
align = 1;
|
||||
x = -181;
|
||||
y = -226;
|
||||
height = 8;
|
||||
width = 8;
|
||||
},
|
||||
{
|
||||
text = "ALT";
|
||||
x = -193;
|
||||
align = 1;
|
||||
x = -181;
|
||||
y = -236;
|
||||
height = 8;
|
||||
width = 8;
|
||||
|
@ -140,6 +140,16 @@
|
||||
y = 61;
|
||||
y_origin = -1;
|
||||
},
|
||||
// not enabled in default HUD - uncomment to use
|
||||
// { // witchspace destination label
|
||||
// selector = "drawWitchspaceDestination:";
|
||||
// height = 10;
|
||||
// width = 10;
|
||||
// y = 55;
|
||||
// x = -240;
|
||||
// y_origin = -1;
|
||||
// color = (0.25,0.25,1.0,1.0);
|
||||
// },
|
||||
{ // cabin temperature bar
|
||||
height = 8;
|
||||
selector = "drawCabinTempBar:";
|
||||
@ -185,7 +195,7 @@
|
||||
height = 12;
|
||||
selector = "drawClock:";
|
||||
width = 12;
|
||||
x = -48;
|
||||
x = -41;
|
||||
y = 18;
|
||||
y_origin = -1;
|
||||
},
|
||||
@ -228,100 +238,107 @@
|
||||
(
|
||||
{ // LHS
|
||||
text = "FWD";
|
||||
x = -264;
|
||||
y = 82;
|
||||
align = 1;
|
||||
x = -245;
|
||||
y = 86;
|
||||
y_origin = -1;
|
||||
height = 20;
|
||||
width = 10;
|
||||
height = 12;
|
||||
width = 12;
|
||||
with_dial = "drawForwardShieldBar:";
|
||||
},
|
||||
{ text = "AFT";
|
||||
x = -262;
|
||||
y = 66;
|
||||
align = 1;
|
||||
x = -245;
|
||||
y = 70;
|
||||
y_origin = -1;
|
||||
height = 20;
|
||||
width = 10;
|
||||
height = 12;
|
||||
width = 12;
|
||||
with_dial = "drawAftShieldBar:";
|
||||
},
|
||||
{
|
||||
text = "FUEL";
|
||||
x = -264;
|
||||
y = 52;
|
||||
align = 1;
|
||||
x = -245;
|
||||
y = 55;
|
||||
y_origin = -1;
|
||||
height = 14;
|
||||
width = 9;
|
||||
height = 10;
|
||||
width = 10;
|
||||
with_dial = "drawFuelBar:";
|
||||
},
|
||||
{
|
||||
text = "CT";
|
||||
x = -255;
|
||||
y = 42;
|
||||
align = 1;
|
||||
x = -245;
|
||||
y = 45;
|
||||
y_origin = -1;
|
||||
height = 14;
|
||||
width = 9;
|
||||
height = 10;
|
||||
width = 10;
|
||||
with_dial = "drawCabinTempBar:";
|
||||
},
|
||||
{
|
||||
text = "LT";
|
||||
x = -254;
|
||||
y = 32;
|
||||
align = 1;
|
||||
x = -245;
|
||||
y = 34;
|
||||
y_origin = -1;
|
||||
height = 14;
|
||||
width = 9;
|
||||
height = 10;
|
||||
width = 10;
|
||||
with_dial = "drawWeaponTempBar:";
|
||||
},
|
||||
{
|
||||
text = "ALT";
|
||||
x = -260;
|
||||
y = 22;
|
||||
align = 1;
|
||||
x = -245;
|
||||
y = 24;
|
||||
y_origin = -1;
|
||||
height = 14;
|
||||
width = 9;
|
||||
height = 10;
|
||||
width = 10;
|
||||
with_dial = "drawAltitudeBar:";
|
||||
},
|
||||
{
|
||||
text = "MISS";
|
||||
x = -266;
|
||||
y = 4;
|
||||
align = 1;
|
||||
x = -245;
|
||||
y = 3;
|
||||
y_origin = -1;
|
||||
height = 16;
|
||||
width = 10;
|
||||
height = 14;
|
||||
width = 14;
|
||||
with_dial = "drawMissileDisplay:";
|
||||
},
|
||||
{ // RHS
|
||||
text = "SPD";
|
||||
x = 241;
|
||||
y = 82;
|
||||
x = 242;
|
||||
y = 86;
|
||||
y_origin = -1;
|
||||
height = 20;
|
||||
width = 10;
|
||||
height = 14;
|
||||
width = 14;
|
||||
with_dial = "drawSpeedBar:";
|
||||
},
|
||||
{
|
||||
text = "ROLL";
|
||||
x = 241;
|
||||
x = 242;
|
||||
y = 72;
|
||||
y_origin = -1;
|
||||
height = 12;
|
||||
width = 9;
|
||||
width = 12;
|
||||
with_dial = "drawRollBar:";
|
||||
},
|
||||
//{ // yaw bar legend, disabled by default
|
||||
// // uncomment as required to enable
|
||||
// text = "YAW";
|
||||
// x = 241;
|
||||
// x = 242;
|
||||
// y = -138;
|
||||
// height = 12;
|
||||
// width = 9;
|
||||
// width = 12;
|
||||
// with_dial = "drawYawBar:";
|
||||
//},
|
||||
{
|
||||
text = "PITCH";
|
||||
x = 241;
|
||||
x = 242;
|
||||
y = 62;
|
||||
y_origin = -1;
|
||||
height = 12;
|
||||
width = 9;
|
||||
width = 12;
|
||||
with_dial = "drawPitchBar:";
|
||||
}
|
||||
);
|
||||
|
@ -21,6 +21,13 @@
|
||||
key_gui_arrow_up = 255;
|
||||
key_gui_arrow_down = 254;
|
||||
|
||||
/* // alternative settings to use numpad instead
|
||||
key_gui_arrow_left = 314; //numpad 4
|
||||
key_gui_arrow_right = 316; //numpad 6
|
||||
key_gui_arrow_up = 318; //numpad 8
|
||||
key_gui_arrow_down = 312; //numpad 2
|
||||
*/
|
||||
|
||||
key_increase_speed = "w";
|
||||
key_decrease_speed = "s";
|
||||
key_inject_fuel = "i";
|
||||
@ -53,7 +60,7 @@
|
||||
key_hyperspace = "h";
|
||||
key_jumpdrive = "j";
|
||||
|
||||
key_dump_cargo = "d";
|
||||
key_dump_cargo = "D";
|
||||
key_rotate_cargo = "R";
|
||||
|
||||
key_autopilot = "c";
|
||||
|
@ -226,8 +226,9 @@
|
||||
rendering.reset = yes;
|
||||
rendering.reset.start = inherit;
|
||||
rendering.reset.end = no;
|
||||
|
||||
|
||||
|
||||
resourceManager.error = yes;
|
||||
resourceManager.foundFile = no; // Tells you where all assets (models, textures, sounds) are found. Very verbose!
|
||||
|
||||
|
||||
@ -293,6 +294,7 @@
|
||||
script.javaScript.init.success = no;
|
||||
script.javaScript.init.error = $error; // Fatal start-up error
|
||||
script.javaScript.timeLimit = yes; // Script ran for too long and has been killed.
|
||||
script.javaScript.timeLimit.debug = no; // Time limiter debugging info
|
||||
script.javaScript.willLoad = no;
|
||||
|
||||
script.load = no;
|
||||
@ -321,7 +323,7 @@
|
||||
|
||||
|
||||
searchPaths.dumpAll = $troubleShootingDump;
|
||||
|
||||
searchPaths.debug = no;
|
||||
|
||||
$shaderDebug = $shaderDebugOn;
|
||||
$shaderError = $error;
|
||||
|
@ -198,12 +198,12 @@
|
||||
"oolite-tutorial-controls-mode2" = "Mode: restart lesson";
|
||||
|
||||
"oolite-tutorial-0-0-title" = "Flight Training Course";
|
||||
"oolite-tutorial-0-0-message" = "Welcome to the Cooperative Flight Training Course, pilot. This course will demonstrate the basic functionality of Cooperative ships to you, in a specially-prepared simulator.\n\nThe course is in multiple lessons. While in the simulator, you can use the '[oolite_key_activate_equipment]' key to advance to the next entry in the current lesson. Using the '[oolite_key_mode_equipment]' key will temporarily change the functionality of the '[oolite_key_activate_equipment]' key, and allow you to skip lessons you have previously completed, or restart the current lessons.\n\nOnce the simulation begins, a panel on your screen will display instructions, which you should follow to progress through the course. If you wish to temporarily hide the panel, press the '[oolite_key_cycle_mfd]' key. You can bring it back with the same key, or it will automatically reappear when there are new instructions.\n\nWhere an instruction asks you to press a letter key, press the letter key alone if it is lower case (e.g. 'i'), and press shift and the key together if it is upper case (e.g. 'K').\n\nWhen you are ready, press the Enter key to begin the simulation with the first lesson.";
|
||||
"oolite-tutorial-0-0-message" = "Welcome to the Cooperative Flight Training Course, pilot. This course will demonstrate the basic functionality of Cooperative ships to you, in a specially-prepared simulator.\n\nThe course is in multiple lessons. While in the simulator, you can usually use the '[oolite_key_activate_equipment]' key to advance to the next entry in the current lesson once you have finished reading the instructions. Occasionally this will not work, as you will be expected to demonstrate what you have just learned.\n\nUsing the '[oolite_key_mode_equipment]' key will temporarily change the functionality of the '[oolite_key_activate_equipment]' key, and allow you to skip lessons you have previously completed, or restart the current lessons.\n\nOnce the simulation begins, a panel on your screen will display instructions, which you should follow to progress through the course. If you wish to temporarily hide the panel, press the '[oolite_key_cycle_mfd]' key. You can bring it back with the same key, or it will automatically reappear when there are new instructions.\n\nWhere an instruction asks you to press a letter key, press the letter key alone if it is lower case (e.g. 'i'), and press shift and the key together if it is upper case (e.g. 'K').\n\nWhen you are ready, press the Enter key to begin the simulation with the first lesson.";
|
||||
"oolite-tutorial-0-0-choices" = { "1" = "Begin Course"; };
|
||||
|
||||
"oolite-tutorial-0-2" = "Welcome to the pilot's training course. The lesson information will be displayed on this panel.\n\nYou will often need to press '[oolite_key_activate_equipment]' to go to the next step - do this now to start the first lesson.\n\nRemember, you can also press '[oolite_key_mode_equipment]' to skip or restart lessons.";
|
||||
|
||||
"oolite-tutorial-1-0" = "Lesson 1: the HUD\nThis lesson introduces the HUD components in turn.\nWhen you start, the HUD components will all be hidden. As you go through this lesson, they will be made visible and introduced.";
|
||||
"oolite-tutorial-1-0" = "Lesson 1: the HUD\nThis lesson introduces the Head-Up Display (HUD) components in turn.\nWhen you start, the HUD components will all be hidden. As you go through this lesson, they will be made visible and introduced.";
|
||||
|
||||
"oolite-tutorial-1-1" = "Energy banks: 1/3\nThe energy bank gauge shows the stored energy in your ship's capacitors, which are used to power various high-energy systems.\nThey are continually recharged from your ship's power plant, but intensive activity will drain them faster than they can be charged.";
|
||||
|
||||
@ -217,7 +217,7 @@
|
||||
|
||||
"oolite-tutorial-1-6" = "Primary Shields: 3/3\nThe shields will slowly recharge from the energy banks if they are drained, and the bars will change colour to highlight a drained state. As with the energy banks, a full recharge will take some time.";
|
||||
|
||||
"oolite-tutorial-1-7" = "Fuel: 1/2\nThis bar shows the amount of witchspace fuel currently available. The full capacity is sufficient for a seven light-year witchspace jump. With the optional Fuel Injectors upgrade fitted, fuel can also be used to significantly boost your speed in normal space.";
|
||||
"oolite-tutorial-1-7" = "Fuel: 1/2\nThis bar shows the amount of witchspace fuel currently available. The full capacity is sufficient for a seven light-year witchspace intersystem jump. With the optional Fuel Injectors upgrade fitted, fuel can also be used to significantly boost your speed in normal space.";
|
||||
|
||||
"oolite-tutorial-1-8" = "Fuel: 2/2\nThe vertical line shows the amount of fuel needed to reach the currently selected witchspace destination. If the fuel is insufficient, this will change colour.";
|
||||
|
||||
@ -283,7 +283,7 @@
|
||||
|
||||
"oolite-tutorial-3-1" = "To refresh your memory, the basic flight controls are:\n[oolite_key_roll_left]: roll left\n[oolite_key_roll_right]: roll right\n[oolite_key_pitch_forward]: pitch forward\n[oolite_key_pitch_back]: pitch back\n[oolite_key_increase_speed]: increase speed\n[oolite_key_decrease_speed]: decrease speed\nHolding the Ctrl key while turning will increase precision.";
|
||||
|
||||
"oolite-tutorial-3-2" = "We have added a dense asteroid cluster nearby. Use your scanner to locate the buoy within it, then fly within 500m of the buoy and come to a complete stop.\n\nTip: use the range lines on the scanner to judge distance.";
|
||||
"oolite-tutorial-3-2" = "We have added a dense asteroid cluster nearby. Use your scanner to locate the buoy within it, then fly within 500m of the buoy and come to a complete stop.\n\nTip: use the range lines on the scanner to judge distance and zoom in with the '[oolite_key_scanner_zoom]' key to separate the closely-packed blobs";
|
||||
|
||||
"oolite-tutorial-3-3-error" = "To continue, come to a stop near the buoy. Use your '[oolite_key_scanner_unzoom]' key to maximise scan range if you are having trouble finding it.";
|
||||
|
||||
@ -395,7 +395,7 @@
|
||||
|
||||
"oolite-tutorial-8-1" = "Status screen: 1/4\nPressing '[oolite_key_gui_screen_status]' or 'F5' will bring up the status screen. You can use '[oolite_key_view_forward]' to return to forward view at any time while viewing it. Try it now, then come back to the forward view before continuing.";
|
||||
|
||||
"oolite-tutorial-8-2" = "Status screen: 2/4\nThe top of the screen shows your current location and witchspace destination, a text description of your alert condition (remember the status light from the first lesson), your current fuel and cash, and your legal status and combat rating.";
|
||||
"oolite-tutorial-8-2" = "Status screen: 2/4\nThe top of the status screen shows your current location and witchspace destination, a text description of your alert condition (remember the status light from the first lesson), your current fuel and cash, and your legal status and combat rating.";
|
||||
|
||||
"oolite-tutorial-8-3" = "Status screen: 3/4\nThe bottom of the screen lists your ship's fitted equipment. We have added a few extra items to your ship which you can inspect now.";
|
||||
|
||||
@ -447,7 +447,7 @@
|
||||
|
||||
"oolite-tutorial-9-1" = "We have transported your ship near to the witchpoint buoy. This buoy marks a stable exit point from witchspace, and ships entering the system will do so near this buoy.";
|
||||
|
||||
"oolite-tutorial-9-2" = "The compass is used to direct you towards the planet. If you are facing the planet, the indicator will be green and centred. If you are facing directly away from the planet, it will be red and centred. Otherwise you will need to turn in the direction indicated. Turn your ship around and then use it to locate the planet it again.";
|
||||
"oolite-tutorial-9-2" = "The compass is used to direct you towards the planet. If you are facing the planet, the indicator will be green and centred. If you are facing directly away from the planet, it will be red and centred. Otherwise the off-centre position indicates the direction of the planet.";
|
||||
|
||||
"oolite-tutorial-9-3" = "Turn towards the planet and accelerate to maximum speed. Even at your top normal speed, it can take up to an hour to reach orbit. You can speed your flight up using the torus drive. Press '[oolite_key_jumpdrive]' to activate it.";
|
||||
|
||||
@ -457,21 +457,23 @@
|
||||
|
||||
"oolite-tutorial-9-6" = "Not all ships will be as friendly as the trader. Pirates will attack shipping even occasionally in safe systems. If you are attacked, unable to run, and outnumbered too much to fight, then you can dump cargo to distract them. Use the '[oolite_key_rotate_cargo]' key to select the item to dump, then the '[oolite_key_dump_cargo]' key to drop it.";
|
||||
|
||||
"oolite-tutorial-9-7" = "We have removed the trade ship now, so you should be back at condition Green. Re-engage the torus drive and continue approaching the planet. Watch your altitude bar - don't get too close to the surface";
|
||||
"oolite-tutorial-9-7" = "It can take a long time to get past another ship without the torus drive. If you're in a hurry, it's often quicker to go fly a few kilometres perpendicular to their travel, and go around them.";
|
||||
|
||||
"oolite-tutorial-9-7-sun" = "This is the sun, not the planet. Easy mistake to make, so try again.";
|
||||
"oolite-tutorial-9-8" = "We have removed the trade ship now, so you should be back at condition Green. Re-engage the torus drive with '[oolite_key_jumpdrive]' and continue approaching the planet. Watch your altitude bar - don't get too close to the surface";
|
||||
|
||||
"oolite-tutorial-9-7-toofar" = "Approach the planet to move to the next stage";
|
||||
"oolite-tutorial-9-8-sun" = "This is the sun, not the planet. Easy mistake to make, so try again.";
|
||||
|
||||
"oolite-tutorial-9-8" = "Now that you are near the planet, your compass has changed to track the main station. Stop the torus drive with the '[oolite_key_jumpdrive]' key, then use the compass to locate the station.";
|
||||
"oolite-tutorial-9-8-toofar" = "Approach the planet to move to the next stage";
|
||||
|
||||
"oolite-tutorial-9-9" = "Head towards the station. If you stopped far enough from the planet, you will still be able to use your torus drive. Otherwise, travel there at conventional speeds, or temporarily head further from the planet until your condition returns to Green.";
|
||||
"oolite-tutorial-9-9" = "Now that you are near the planet, your compass has changed to track the main station. Stop the torus drive with the '[oolite_key_jumpdrive]' key, then use the compass to locate the station.";
|
||||
|
||||
"oolite-tutorial-9-9-toofar" = "Approach the station to move to the next stage";
|
||||
"oolite-tutorial-9-10" = "Head towards the station. If you stopped far enough from the planet, you will still be able to use your torus drive. Otherwise, travel there at conventional speeds, or for a faster journey temporarily head further from the planet until your condition returns to Green.";
|
||||
|
||||
"oolite-tutorial-9-10" = "When you are close enough to the station, the aegis indicator - a large S - will appear. This indicates that you are within sensor range of the station and will be protected against pirate attack by the station's police ships.";
|
||||
"oolite-tutorial-9-10-toofar" = "Approach the station to move to the next stage";
|
||||
|
||||
"oolite-tutorial-9-11" = "Between the station and the planet you will see the navigation buoy. As covered in previous lessons, you should now dock with the station. Remember to ask for clearance first with the '[oolite_key_docking_clearance_request]' key.";
|
||||
"oolite-tutorial-9-11" = "When you are close enough to the station, the aegis indicator - a large S - will appear. This indicates that you are within sensor range of the station and will be protected against pirate attack by the station's police ships.";
|
||||
|
||||
"oolite-tutorial-9-12" = "Between the station and the planet you will see the navigation buoy. As covered in previous lessons, you should now dock with the station. Remember to ask for clearance first by targeting the station and using the '[oolite_key_docking_clearance_request]' key.";
|
||||
|
||||
"oolite-tutorial-end-mfd" = "You have completed the course. Press '[oolite_key_activate_equipment]' to view your test scores.";
|
||||
|
||||
|
@ -135,7 +135,9 @@
|
||||
"hunter",
|
||||
"hunter-medium",
|
||||
"hunter-heavy",
|
||||
"escape-capsule"
|
||||
"escape-capsule",
|
||||
"police",
|
||||
"rockhermit"
|
||||
);
|
||||
|
||||
/* Roles the police are less likely to side with in a clean v
|
||||
|
@ -7,6 +7,8 @@
|
||||
// Use the following settings to add custom images to Oolite's screens
|
||||
|
||||
intro = "intro.png"; // background for the ships at game start
|
||||
shiplibrary = "shiplibrary.png"; // background for the ship library screen
|
||||
keyboardsettings = "keyboardsettings.png"; // background for the keyboard settings display
|
||||
newgame = "newgame.png"; // background for the new game (scenario select) screen
|
||||
status = "status.png";
|
||||
status_docked = "status-docked.png"; // if not defined, same as status
|
||||
|
@ -147,7 +147,7 @@
|
||||
missiles = 1;
|
||||
model = "oolite_adder.dat";
|
||||
name = "Adder";
|
||||
roles = "trader(0.25) trader-courier(0.5) trader-smuggler pirate-light-fighter(0.25) pirate-independent(0.2) scavenger shuttle hermit-ship";
|
||||
roles = "trader(0.25) trader-courier(0.5) trader-smuggler pirate-light-fighter(0.25) pirate(0.2) scavenger shuttle hermit-ship";
|
||||
scoop_position = "0.0 -5.1 22.724";
|
||||
thrust = 30;
|
||||
view_position_aft = "0.0 5.0 -22.5";
|
||||
@ -972,7 +972,8 @@
|
||||
{
|
||||
ai_type = "buoyAI.plist";
|
||||
beacon = "N0100 Navigation Buoy";
|
||||
beacon_label = "%H Station";
|
||||
/* Beacon label for now set in populator, not shipdata, for compatibility
|
||||
* with old OXP like_ship entries */
|
||||
cargo_type = "CARGO_NOT_CARGO";
|
||||
energy_recharge_rate = 2;
|
||||
forward_weapon_type = "WEAPON_NONE";
|
||||
@ -1018,7 +1019,6 @@
|
||||
like_ship = "oolite_template_buoy";
|
||||
is_template = 1;
|
||||
beacon = "W0100 Navigation Buoy (Witchpoint)";
|
||||
beacon_label = "Witchpoint";
|
||||
name = "Witchpoint Beacon";
|
||||
roles = "buoy-witchpoint";
|
||||
subentities = (
|
||||
@ -1587,6 +1587,7 @@
|
||||
name = "Coriolis Station";
|
||||
roles = "coriolis station";
|
||||
rotating = yes;
|
||||
scan_class = "CLASS_STATION";
|
||||
station_roll = "0.08"; // 1G at rim
|
||||
subentities =
|
||||
(
|
||||
@ -1933,6 +1934,7 @@
|
||||
"-2.60324 -1.47267 -2.7841 0.35 0.35 0.5"
|
||||
);
|
||||
forward_weapon_type = "WEAPON_NONE";
|
||||
hyperspace_motor = no;
|
||||
is_template = 1;
|
||||
materials =
|
||||
{
|
||||
@ -2082,7 +2084,7 @@
|
||||
missiles = 2;
|
||||
model = "oolite_ferdelance.dat";
|
||||
name = "Fer-de-Lance";
|
||||
roles = "trader-freighter(0.25) trader-courier trader-smuggler(0.5) pirate-medium-fighter(0.75) pirate-heavy-fighter(0.75) pirate-interceptor pirate-aegis-raider(0.75) pirate(0.25) hunter-medium(0.75) hunter-heavy assassin-medium";
|
||||
roles = "trader(0.25) trader-courier trader-smuggler(0.5) pirate-medium-fighter(0.75) pirate-heavy-fighter(0.75) pirate-interceptor pirate-aegis-raider(0.75) pirate(0.25) hunter-medium(0.75) hunter-heavy assassin-medium";
|
||||
scoop_position = "0.0 -10.0322 21.6829";
|
||||
thrust = 36;
|
||||
view_position_aft = "0.0 12.0 -32.5";
|
||||
@ -2388,6 +2390,11 @@
|
||||
roles = "oolite-tutorial-fighter";
|
||||
script = "oolite-tutorial-fighter.js";
|
||||
};
|
||||
"oolite_template_tutorial-krait-wave1" = {
|
||||
like_ship = "oolite_template_tutorial-krait";
|
||||
energy_recharge_rate = 0.25; /* significant reduction */
|
||||
roles = "oolite-tutorial-fighter-wave1";
|
||||
};
|
||||
"oolite_template_mamba" = {
|
||||
aft_eject_position = "0.0 -9.26 -35.1";
|
||||
ai_type = "oolite-pirateAI.js";
|
||||
@ -3250,6 +3257,7 @@
|
||||
cargo_type = "CARGO_THARGOID";
|
||||
energy_recharge_rate = 3;
|
||||
forward_weapon_type = "WEAPON_PULSE_LASER";
|
||||
hyperspace_motor = no;
|
||||
is_template = 1;
|
||||
laser_color = "greenColor";
|
||||
materials =
|
||||
@ -3404,6 +3412,7 @@
|
||||
frangible = 0;
|
||||
has_ecm = yes;
|
||||
has_escape_pod = yes;
|
||||
hyperspace_motor = no;
|
||||
is_template = 1;
|
||||
laser_color = "magentaColor";
|
||||
materials =
|
||||
@ -4111,6 +4120,10 @@
|
||||
{
|
||||
"like_ship" = "oolite_template_tutorial-krait";
|
||||
};
|
||||
"oolite-tutorial-krait-wave1" =
|
||||
{
|
||||
"like_ship" = "oolite_template_tutorial-krait-wave1";
|
||||
};
|
||||
"oolite-tutorial-station" =
|
||||
{
|
||||
"like_ship" = "oolite_template_tutorial-station";
|
||||
|
222
Resources/Config/shiplibrary.plist
Normal file
222
Resources/Config/shiplibrary.plist
Normal file
@ -0,0 +1,222 @@
|
||||
(
|
||||
/* Ordered to match shipdata.plist to make it easier to edit; will
|
||||
* be re-ordered by Oolite to a more sensible order later. Classes
|
||||
* currently defined by Oolite are "ship", "station", "weapon",
|
||||
* "thargoid", and "misc". Other classes may be created by
|
||||
* defining "oolite-ship-library-category-X" and
|
||||
* "oolite-ship-library-category-plural-X" description.plist
|
||||
* keys */
|
||||
{
|
||||
ship = "adder";
|
||||
class = "ship";
|
||||
summary = "[oolite-ship-library-summary-LT]";
|
||||
description = "[oolite-ship-library-description-adder]";
|
||||
},
|
||||
{
|
||||
ship = "anaconda";
|
||||
class = "ship";
|
||||
summary = "[oolite-ship-library-summary-HFr]";
|
||||
description = "[oolite-ship-library-description-anaconda]";
|
||||
cargo = "750 TC"; // because the NPC isn't really this big
|
||||
},
|
||||
{
|
||||
ship = "asp";
|
||||
class = "ship";
|
||||
summary = "[oolite-ship-library-summary-HF]";
|
||||
description = "[oolite-ship-library-description-asp]";
|
||||
},
|
||||
{
|
||||
ship = "asteroid";
|
||||
class = "misc";
|
||||
summary = "[oolite-ship-library-summary-NB]";
|
||||
description = "[oolite-ship-library-description-asteroid]";
|
||||
},
|
||||
{
|
||||
ship = "barrel";
|
||||
class = "misc";
|
||||
summary = "[oolite-ship-library-summary-CG]";
|
||||
description = "[oolite-ship-library-description-barrel]";
|
||||
},
|
||||
{
|
||||
ship = "boa";
|
||||
class = "ship";
|
||||
summary = "[oolite-ship-library-summary-MFr]";
|
||||
description = "[oolite-ship-library-description-boa]";
|
||||
},
|
||||
{
|
||||
ship = "boa-mk2";
|
||||
class = "ship";
|
||||
summary = "[oolite-ship-library-summary-MFr]";
|
||||
description = "[oolite-ship-library-description-boa-mk2]";
|
||||
},
|
||||
{
|
||||
ship = "buoy";
|
||||
class = "misc";
|
||||
summary = "[oolite-ship-library-summary-SA]";
|
||||
description = "[oolite-ship-library-description-buoy]";
|
||||
},
|
||||
{
|
||||
ship = "cobramk1";
|
||||
class = "ship";
|
||||
summary = "[oolite-ship-library-summary-LM]";
|
||||
description = "[oolite-ship-library-description-cobramk1]";
|
||||
},
|
||||
{
|
||||
ship = "cobra3-trader";
|
||||
class = "ship";
|
||||
summary = "[oolite-ship-library-summary-HM]";
|
||||
description = "[oolite-ship-library-description-cobra3]";
|
||||
},
|
||||
{
|
||||
ship = "coriolis-station";
|
||||
class = "station";
|
||||
summary = "[oolite-ship-library-summary-SO]";
|
||||
description = "[oolite-ship-library-description-coriolis]";
|
||||
},
|
||||
{
|
||||
ship = "dodecahedron-station";
|
||||
class = "station";
|
||||
summary = "[oolite-ship-library-summary-SO]";
|
||||
description = "[oolite-ship-library-description-dodec]";
|
||||
},
|
||||
{
|
||||
ship = "ecm-proof-missile";
|
||||
class = "weapon";
|
||||
summary = "[oolite-ship-library-summary-WMs]";
|
||||
description = "[oolite-ship-library-description-hardmissile]";
|
||||
},
|
||||
{
|
||||
ship = "escape-capsule";
|
||||
class = "misc";
|
||||
ship_data = true; // it's a ship, sort of
|
||||
summary = "[oolite-ship-library-summary-CP]";
|
||||
description = "[oolite-ship-library-description-escape]";
|
||||
},
|
||||
{
|
||||
ship = "ferdelance";
|
||||
class = "ship";
|
||||
summary = "[oolite-ship-library-summary-MT]";
|
||||
description = "[oolite-ship-library-description-ferdelance]";
|
||||
},
|
||||
{
|
||||
ship = "gecko";
|
||||
class = "ship";
|
||||
summary = "[oolite-ship-library-summary-MF]";
|
||||
description = "[oolite-ship-library-description-gecko]";
|
||||
},
|
||||
{
|
||||
ship = "icosahedron-station";
|
||||
class = "station";
|
||||
summary = "[oolite-ship-library-summary-SO]";
|
||||
description = "[oolite-ship-library-description-ico]";
|
||||
},
|
||||
{
|
||||
ship = "krait";
|
||||
class = "ship";
|
||||
summary = "[oolite-ship-library-summary-LF]";
|
||||
description = "[oolite-ship-library-description-krait]";
|
||||
},
|
||||
{
|
||||
ship = "mamba";
|
||||
class = "ship";
|
||||
summary = "[oolite-ship-library-summary-LF]";
|
||||
description = "[oolite-ship-library-description-mamba]";
|
||||
},
|
||||
{
|
||||
ship = "missile";
|
||||
class = "weapon";
|
||||
summary = "[oolite-ship-library-summary-WMs]";
|
||||
description = "[oolite-ship-library-description-missile]";
|
||||
},
|
||||
{
|
||||
ship = "moray";
|
||||
class = "ship";
|
||||
summary = "[oolite-ship-library-summary-LM]";
|
||||
description = "[oolite-ship-library-description-moray]";
|
||||
},
|
||||
{
|
||||
ship = "python";
|
||||
class = "ship";
|
||||
summary = "[oolite-ship-library-summary-MFr]";
|
||||
description = "[oolite-ship-library-description-python]";
|
||||
},
|
||||
{
|
||||
ship = "qbomb";
|
||||
class = "weapon";
|
||||
summary = "[oolite-ship-library-summary-WMn]";
|
||||
description = "[oolite-ship-library-description-qbomb]";
|
||||
},
|
||||
{
|
||||
ship = "rock-hermit";
|
||||
class = "station";
|
||||
summary = "[oolite-ship-library-summary-SM]";
|
||||
description = "[oolite-ship-library-description-rockhermit]";
|
||||
},
|
||||
{
|
||||
ship = "shuttle";
|
||||
class = "ship";
|
||||
summary = "[oolite-ship-library-summary-LT]";
|
||||
description = "[oolite-ship-library-description-shuttle]";
|
||||
},
|
||||
{
|
||||
ship = "sidewinder";
|
||||
class = "ship";
|
||||
summary = "[oolite-ship-library-summary-LF]";
|
||||
description = "[oolite-ship-library-description-sidewinder]";
|
||||
},
|
||||
{
|
||||
ship = "tharglet";
|
||||
class = "thargoid";
|
||||
summary = "[oolite-ship-library-summary-LF]";
|
||||
description = "[oolite-ship-library-description-tharglet]";
|
||||
ship_data = true;
|
||||
speed = "[oolite-ship-library-unknown]";
|
||||
turn_rate = "[oolite-ship-library-unknown]";
|
||||
generator = "[oolite-ship-library-unknown]";
|
||||
shields = "[oolite-ship-library-unknown]";
|
||||
},
|
||||
{
|
||||
ship = "thargoid";
|
||||
class = "thargoid";
|
||||
summary = "[oolite-ship-library-summary-RW]";
|
||||
description = "[oolite-ship-library-description-thargoid]";
|
||||
ship_data = true;
|
||||
speed = "[oolite-ship-library-unknown]";
|
||||
cargo = "[oolite-ship-library-unknown]";
|
||||
turn_rate = "[oolite-ship-library-unknown]";
|
||||
generator = "[oolite-ship-library-unknown]";
|
||||
shields = "[oolite-ship-library-unknown]";
|
||||
weapons = "[oolite-ship-library-description-thargoid-weapons]";
|
||||
},
|
||||
{
|
||||
ship = "transporter";
|
||||
class = "ship";
|
||||
summary = "[oolite-ship-library-summary-MT]";
|
||||
description = "[oolite-ship-library-description-transporter]";
|
||||
},
|
||||
{
|
||||
ship = "viper";
|
||||
class = "ship";
|
||||
summary = "[oolite-ship-library-summary-PLF]";
|
||||
description = "[oolite-ship-library-description-viper]";
|
||||
turn_rate = "[oolite-ship-library-classified]";
|
||||
generator = "[oolite-ship-library-classified]";
|
||||
shields = "[oolite-ship-library-classified]";
|
||||
},
|
||||
{
|
||||
ship = "viper-interceptor";
|
||||
class = "ship";
|
||||
summary = "[oolite-ship-library-summary-PHF]";
|
||||
description = "[oolite-ship-library-description-viperinterceptor]";
|
||||
turn_rate = "[oolite-ship-library-classified]";
|
||||
generator = "[oolite-ship-library-classified]";
|
||||
shields = "[oolite-ship-library-classified]";
|
||||
},
|
||||
{
|
||||
ship = "worm";
|
||||
class = "ship";
|
||||
summary = "[oolite-ship-library-summary-LT]";
|
||||
description = "[oolite-ship-library-description-worm]";
|
||||
}
|
||||
|
||||
)
|
@ -274,6 +274,7 @@
|
||||
"escape_pod_model",
|
||||
"aft_eject_position",
|
||||
"auto_ai",
|
||||
"auto_weapons",
|
||||
"script",
|
||||
"conditions",
|
||||
"condition_script",
|
||||
|
@ -331,6 +331,7 @@
|
||||
"drawYellowSurround:",
|
||||
"drawGreenSurround:",
|
||||
"drawFuelBar:",
|
||||
"drawWitchspaceDestination:",
|
||||
"drawCabinTempBar:",
|
||||
"drawWeaponTempBar:",
|
||||
"drawAltitudeBar:",
|
||||
@ -348,6 +349,7 @@
|
||||
"position",
|
||||
"orientation",
|
||||
"relativePosition",
|
||||
"cameraRelativePosition",
|
||||
"viewpointOffset",
|
||||
"collisionRadius",
|
||||
"mass",
|
||||
|
Binary file not shown.
@ -8,9 +8,6 @@
|
||||
<integer>16308</integer>
|
||||
<key>comm_log</key>
|
||||
<array>
|
||||
<string>Coriolis Station:</string>
|
||||
<string>You are cleared to dock. Please proceed. </string>
|
||||
<string>Clearance expires at 2084004:20:25:55</string>
|
||||
</array>
|
||||
<key>contract_record</key>
|
||||
<dict>
|
||||
|
@ -35,7 +35,6 @@ MA 02110-1301, USA.
|
||||
this.name = "Cloaking Device";
|
||||
this.author = "cim";
|
||||
this.copyright = "© 2008-2013 the Oolite team.";
|
||||
this.version = "1.79";
|
||||
|
||||
|
||||
this.activated = function()
|
||||
|
@ -37,7 +37,6 @@ this.name = "oolite-cloaking-device";
|
||||
this.author = "Jens Ayton";
|
||||
this.copyright = "© 2007-2013 the Oolite team.";
|
||||
this.description = "Cloaking device mission in galaxy 5.";
|
||||
this.version = "1.79";
|
||||
|
||||
|
||||
this.startUp = function ()
|
||||
|
@ -36,7 +36,6 @@
|
||||
this.name = "oolite-cloaking-device-pod";
|
||||
this.author = "Jens Ayton";
|
||||
this.copyright = "© 2007-2013 the Oolite team.";
|
||||
this.version = "1.79";
|
||||
|
||||
|
||||
this.shipWasScooped = function (scooper)
|
||||
|
@ -36,7 +36,6 @@ MA 02110-1301, USA.
|
||||
this.name = "oolite-cloaking-device-target-ship";
|
||||
this.author = "Jens Ayton";
|
||||
this.copyright = "© 2008-2013 the Oolite team.";
|
||||
this.version = "1.79";
|
||||
|
||||
|
||||
this.shipDied = function ()
|
||||
|
@ -36,7 +36,6 @@ MA 02110-1301, USA.
|
||||
this.name = "oolite-conditions";
|
||||
this.author = "cim";
|
||||
this.copyright = "© 2008-2013 the Oolite team.";
|
||||
this.version = "1.79";
|
||||
|
||||
|
||||
/* contexts: npc, purchase, scripted, newShip, (loading), (damage), (portable) */
|
||||
|
@ -37,7 +37,6 @@ MA 02110-1301, USA.
|
||||
this.name = "oolite-constrictor-hunt";
|
||||
this.author = "Eric Walch";
|
||||
this.copyright = "© 2008-2013 the Oolite team.";
|
||||
this.version = "1.79";
|
||||
|
||||
|
||||
this._cleanUp = function ()
|
||||
|
@ -30,7 +30,6 @@
|
||||
this.name = "oolite-constrictor-pilot";
|
||||
this.author = "Eric Walch";
|
||||
this.copyright = "© 2008-2010 the Oolite team.";
|
||||
this.version = "1.79";
|
||||
|
||||
|
||||
this.unloadCharacter = function ()
|
||||
|
@ -36,7 +36,6 @@ MA 02110-1301, USA.
|
||||
this.name = "oolite-constrictor";
|
||||
this.author = "Eric Walch";
|
||||
this.copyright = "© 2008-2013 the Oolite team.";
|
||||
this.version = "1.79";
|
||||
|
||||
|
||||
/*
|
||||
|
@ -37,7 +37,7 @@ this.name = "oolite-contracts-cargo";
|
||||
this.author = "cim";
|
||||
this.copyright = "© 2012-2013 the Oolite team.";
|
||||
this.description = "Cargo delivery contracts.";
|
||||
this.version = "1.79";
|
||||
|
||||
|
||||
/**** Configuration options and API ****/
|
||||
|
||||
|
@ -37,7 +37,59 @@ this.name = "oolite-contracts-helpers";
|
||||
this.author = "cim";
|
||||
this.copyright = "© 2012-2013 the Oolite team.";
|
||||
this.description = "Helper functions for various contracts.";
|
||||
this.version = "1.79";
|
||||
|
||||
|
||||
/* Save and retrieve client names for use in Assassin AIs */
|
||||
this.startUp = function()
|
||||
{
|
||||
if (missionVariables.oolite_contract_clientnames)
|
||||
{
|
||||
this.$clientNames = JSON.parse(missionVariables.oolite_contract_clientnames);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.$clientNames = [];
|
||||
for (var i=0;i<20;i++)
|
||||
{
|
||||
// one-time initialisation
|
||||
this.$clientNames[i] = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
this.playerWillSaveGame = function()
|
||||
{
|
||||
missionVariables.oolite_contract_clientnames = JSON.stringify(this.$clientNames);
|
||||
}
|
||||
|
||||
|
||||
// set a client name in the random selection
|
||||
this._setClientName = function(name)
|
||||
{
|
||||
this.$clientNames[Math.floor(Math.random()*20)] = name;
|
||||
}
|
||||
|
||||
|
||||
// get a random recent (usually) client name
|
||||
this._getClientName = function()
|
||||
{
|
||||
var idx = Math.floor(Math.random()*20);
|
||||
for (var i=0;i<20;i++)
|
||||
{
|
||||
var name = this.$clientNames[(idx+i)%20];
|
||||
if (name != "")
|
||||
{
|
||||
return name;
|
||||
}
|
||||
}
|
||||
// being requested when no clients recorded, ever!
|
||||
// unlikely but might happen
|
||||
return expandDescription("%N ")+expandDescription("[nom]");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// returns a string containing the necessary number of "hair spaces" to
|
||||
// pad the currentText string to the specified length in 'em'
|
||||
|
@ -37,7 +37,6 @@ this.name = "oolite-contracts-parcels";
|
||||
this.author = "cim";
|
||||
this.copyright = "© 2012-2013 the Oolite team.";
|
||||
this.description = "Parcel delivery contracts.";
|
||||
this.version = "1.79";
|
||||
|
||||
/**** Configuration options and API ****/
|
||||
|
||||
@ -346,13 +345,18 @@ this._initialiseParcelContractsForSystem = function()
|
||||
var prudence = (2*Math.random())-1;
|
||||
|
||||
var desperation = (Math.random()*(0.5+parcel.risk)) * (1+1/(Math.max(0.5,dtime-(routeToDestination.time * 3600))));
|
||||
var competency = Math.max(50,(routeToDestination.route.length-1)*(1+(parcel.risk*2)));
|
||||
var competency = Math.max(50,(routeToDestination.route.length-1)*(0.5+(parcel.risk*2)));
|
||||
if(parcel.risk == 0)
|
||||
{
|
||||
competency -= 10;
|
||||
competency -= 30;
|
||||
}
|
||||
parcel.payment = Math.floor(parcel.payment * (1+(0.4*prudence)));
|
||||
parcel.payment += (parcel.risk * 200);
|
||||
if (parcel.payment < 100)
|
||||
{
|
||||
competency -= 15;
|
||||
// paying this little probably can't ask for anyone good
|
||||
}
|
||||
parcel.skill = competency + 20*(prudence-desperation);
|
||||
}
|
||||
else
|
||||
@ -360,6 +364,13 @@ this._initialiseParcelContractsForSystem = function()
|
||||
parcel.skill = -1; // always available
|
||||
}
|
||||
|
||||
if (parcel.skill > 60)
|
||||
{
|
||||
parcel.skill = 60;
|
||||
}
|
||||
|
||||
// log(this.name,parcel.payment,parcel.skill,parcel.risk);
|
||||
|
||||
// add parcel to contract list
|
||||
this._addParcelToSystem(parcel);
|
||||
}
|
||||
@ -770,6 +781,18 @@ this._acceptContract = function()
|
||||
"oolite-parcel-contents" : this._formatPackageName(parcel.description)
|
||||
});
|
||||
player.ship.addParcel(desc,system.ID,parcel.destination,parcel.deadline,parcel.payment,0,parcel.risk);
|
||||
|
||||
if (parcel.risk > 0)
|
||||
{
|
||||
// once for medium risk
|
||||
worldScripts["oolite-contracts-helpers"]._setClientName(parcel.sender);
|
||||
if (parcel.risk > 1)
|
||||
{
|
||||
// three times for high risk
|
||||
worldScripts["oolite-contracts-helpers"]._setClientName(parcel.sender);
|
||||
worldScripts["oolite-contracts-helpers"]._setClientName(parcel.sender);
|
||||
}
|
||||
}
|
||||
|
||||
// remove the parcel from the station list
|
||||
this.$parcels.splice(this.$contractIndex,1);
|
||||
|
@ -37,7 +37,6 @@ this.name = "oolite-contracts-passengers";
|
||||
this.author = "cim";
|
||||
this.copyright = "© 2012-2013 the Oolite team.";
|
||||
this.description = "Parcel delivery contracts.";
|
||||
this.version = "1.79";
|
||||
|
||||
/**** Configuration options and API ****/
|
||||
|
||||
@ -294,13 +293,43 @@ this._initialisePassengerContractsForSystem = function()
|
||||
|
||||
if (passenger.species.match(new RegExp(expandDescription("[human-word]"),"i")))
|
||||
{
|
||||
passenger.name = expandDescription("%R ")+expandDescription("[nom]");
|
||||
passenger.name = expandDescription("%N ")+expandDescription("[nom]");
|
||||
}
|
||||
else
|
||||
{
|
||||
passenger.name = randomName()+" "+randomName();
|
||||
}
|
||||
|
||||
/* Because passengers with duplicate names won't be accepted,
|
||||
* check for name duplication with either other passengers
|
||||
* here or other passengers carried by the player, and adjust
|
||||
* this passenger's name a little if there's a match */
|
||||
do {
|
||||
var okay = true;
|
||||
for (var j=0;j<player.ship.passengers.length;j++)
|
||||
{
|
||||
if (player.ship.passengers[j].name == passenger.name)
|
||||
{
|
||||
okay = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (okay) {
|
||||
for (var j=0;j<this.$passengers.length;j++)
|
||||
{
|
||||
if (this.$passengers[j].name == passenger.name)
|
||||
{
|
||||
okay = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!okay) {
|
||||
passenger.name += "a";
|
||||
}
|
||||
} while (!okay);
|
||||
|
||||
|
||||
passenger.risk = Math.floor(Math.random()*3);
|
||||
passenger.species = expandDescription("[passenger-description-risk"+passenger.risk+"]")+" "+passenger.species;
|
||||
|
||||
@ -327,18 +356,20 @@ this._initialisePassengerContractsForSystem = function()
|
||||
|
||||
var prudence = (2*Math.random())-1;
|
||||
var desperation = (Math.random()*(0.5+passenger.risk)) * (1+1/(Math.max(0.5,dtime-(routeToDestination.time * 3600))));
|
||||
var competency = Math.max(50,(routeToDestination.route.length-1)*(1+(passenger.risk*2)));
|
||||
var competency = Math.max(50,(routeToDestination.route.length-1)*(0.5+(passenger.risk*2)));
|
||||
if(passenger.risk == 0)
|
||||
{
|
||||
competency -= 10;
|
||||
competency -= 30;
|
||||
}
|
||||
passenger.payment = Math.floor(passenger.payment * (1+(0.4*prudence)));
|
||||
passenger.payment += (passenger.risk * 200);
|
||||
passenger.skill = competency + 20*(prudence-desperation);
|
||||
passenger.skill = Math.min(60,competency + 20*(prudence-desperation));
|
||||
|
||||
passenger.advance = Math.min(passenger.payment*0.9,Math.max(0,Math.floor(passenger.payment * (0.05 + (0.1*desperation) + (0.02*player.passengerReputationPrecise))))); // some% up front
|
||||
passenger.payment -= passenger.advance;
|
||||
|
||||
// log(this.name,passenger.payment,passenger.skill,passenger.risk);
|
||||
|
||||
// add passenger to contract list
|
||||
this._addPassengerToSystem(passenger);
|
||||
}
|
||||
@ -775,30 +806,43 @@ this._processPassengerChoice = function(choice)
|
||||
// move a passenger from the contracts list to the player's ship (if possible)
|
||||
this._acceptContract = function()
|
||||
{
|
||||
var passenger = this.$passengers[this.$contractIndex];
|
||||
var passenger = this.$passengers[this.$contractIndex];
|
||||
|
||||
// give the passenger to the player
|
||||
var result = player.ship.addPassenger(passenger.name,system.ID,passenger.destination,passenger.deadline,passenger.payment,passenger.advance);
|
||||
|
||||
if (result)
|
||||
// give the passenger to the player
|
||||
var result = player.ship.addPassenger(passenger.name,system.ID,passenger.destination,passenger.deadline,passenger.payment,passenger.advance,passenger.risk);
|
||||
|
||||
if (result)
|
||||
{
|
||||
// pay the advance
|
||||
player.credits += passenger.advance;
|
||||
|
||||
// remove the passenger from the station list
|
||||
this.$passengers.splice(this.$contractIndex,1);
|
||||
|
||||
// update the interface description
|
||||
this._updateMainStationInterfacesList();
|
||||
|
||||
this.$helper._soundSuccess();
|
||||
|
||||
if (passenger.risk > 0)
|
||||
{
|
||||
// pay the advance
|
||||
player.credits += passenger.advance;
|
||||
|
||||
// remove the passenger from the station list
|
||||
this.$passengers.splice(this.$contractIndex,1);
|
||||
|
||||
// update the interface description
|
||||
this._updateMainStationInterfacesList();
|
||||
|
||||
this.$helper._soundSuccess();
|
||||
}
|
||||
else
|
||||
{
|
||||
// else must have had another passenger board recently
|
||||
// (unlikely, but another OXP could have done it)
|
||||
this.$helper._soundFailure();
|
||||
// once for medium risk
|
||||
worldScripts["oolite-contracts-helpers"]._setClientName(passenger.name);
|
||||
if (passenger.risk > 1)
|
||||
{
|
||||
// three times for high risk
|
||||
worldScripts["oolite-contracts-helpers"]._setClientName(passenger.name);
|
||||
worldScripts["oolite-contracts-helpers"]._setClientName(passenger.name);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
// else must have had another passenger board recently
|
||||
// (unlikely, but another OXP could have done it)
|
||||
this.$helper._soundFailure();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -36,6 +36,5 @@ this.name = "oolite-default-effect-script";
|
||||
this.author = "cim";
|
||||
this.copyright = "© 2012-2013 the Oolite team.";
|
||||
this.description = "Standard script for effects.";
|
||||
this.version = "1.79";
|
||||
|
||||
// this script does not define default behaviours for any handlers.
|
||||
|
@ -34,4 +34,3 @@ this.name = "oolite-default-player-script";
|
||||
this.author = "Jens Ayton";
|
||||
this.description = "Standard script for player ship.";
|
||||
this.copyright = "© 2007-2013 the Oolite team.";
|
||||
this.version = "1.79";
|
||||
|
@ -36,7 +36,6 @@ this.name = "oolite-default-ship-script";
|
||||
this.author = "Jens Ayton";
|
||||
this.copyright = "© 2007-2013 the Oolite team.";
|
||||
this.description = "Standard script for ships.";
|
||||
this.version = "1.79";
|
||||
|
||||
|
||||
// launch_actions handled on shipSpawned(). For parity with 1.65, launch_actions don’t fire for the main station.
|
||||
|
@ -46,7 +46,6 @@ MA 02110-1301, USA.
|
||||
this.name = "oolite-global-prefix";
|
||||
this.author = "Jens Ayton";
|
||||
this.copyright = "© 2009-2013 the Oolite team.";
|
||||
this.version = "1.79";
|
||||
|
||||
|
||||
(function (special) {
|
||||
|
@ -35,7 +35,6 @@ MA 02110-1301, USA.
|
||||
this.name = "oolite-locale-functions";
|
||||
this.author = "Jens Ayton";
|
||||
this.copyright = "© 2012-2013 the Oolite team.";
|
||||
this.version = "1.79";
|
||||
|
||||
|
||||
(function () {
|
||||
|
@ -36,7 +36,6 @@ MA 02110-1301, USA.
|
||||
this.name = "oolite-nova";
|
||||
this.author = "Eric Walch, Jens Ayton, Kaks";
|
||||
this.copyright = "© 2008-2013 the Oolite team.";
|
||||
this.version = "1.79";
|
||||
|
||||
|
||||
this._endTheMission = function ()
|
||||
|
@ -36,7 +36,6 @@ MA 02110-1301, USA.
|
||||
this.name = "oolite-populator";
|
||||
this.author = "cim";
|
||||
this.copyright = "© 2008-2013 the Oolite team.";
|
||||
this.version = "1.79";
|
||||
|
||||
|
||||
this.startUp = function()
|
||||
@ -80,6 +79,7 @@ this.systemWillPopulate = function()
|
||||
var nb = system.addShips("buoy",1,pos,0)[0];
|
||||
nb.scanClass = "CLASS_BUOY";
|
||||
nb.reactToAIMessage("START_TUMBLING");
|
||||
nb.beaconLabel = "[oolite-beacon-label-station]";
|
||||
},
|
||||
deterministic: true
|
||||
});
|
||||
@ -93,6 +93,7 @@ this.systemWillPopulate = function()
|
||||
var wb = system.addShips("buoy-witchpoint",1,pos,0)[0];
|
||||
wb.scanClass = "CLASS_BUOY";
|
||||
wb.reactToAIMessage("START_TUMBLING");
|
||||
wb.beaconLabel = "[oolite-beacon-label-witchpoint]";
|
||||
},
|
||||
deterministic: true
|
||||
});
|
||||
@ -1271,16 +1272,19 @@ this.interstellarSpaceWillPopulate = function()
|
||||
|
||||
this.interstellarSpaceWillRepopulate = function()
|
||||
{
|
||||
if (system.countShipsWithPrimaryRole("thargoid") < 2)
|
||||
if (Math.random() < 0.25)
|
||||
{
|
||||
if (Math.random() > 0.01)
|
||||
if (system.countShipsWithPrimaryRole("thargoid") < 3)
|
||||
{
|
||||
system.addShips("thargoid",1,[0,0,0],25600);
|
||||
}
|
||||
else
|
||||
{
|
||||
// everyone's getting ambushed today
|
||||
system.addShips("trader",1,[0,0,0],6400);
|
||||
if (Math.random() > 0.05)
|
||||
{
|
||||
system.addShips("thargoid",1+Math.floor(Math.random()*3),[0,0,0],25600);
|
||||
}
|
||||
else
|
||||
{
|
||||
// everyone's getting ambushed today
|
||||
system.addShips("trader",1,[0,0,0],6400);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1332,6 +1336,7 @@ this._addFreighter = function(pos)
|
||||
t[0].homeSystem = system.ID;
|
||||
t[0].destinationSystem = this._weightedNearbyTradeSystem();
|
||||
goods = "PLENTIFUL_GOODS";
|
||||
t[0].fuel = 7;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1359,9 +1364,15 @@ this._addFreighter = function(pos)
|
||||
{
|
||||
t[0].bounty = Math.ceil(Math.random()*20);
|
||||
// half of the offender traders are a bit more sinister
|
||||
if (Math.random() < 0.5)
|
||||
// can only happen with ships which allow autoAI
|
||||
if (Math.random() < 0.5 && t[0].autoAI)
|
||||
{
|
||||
t[0].switchAI("oolite-traderOpportunistAI.js");
|
||||
if (t[0].autoWeapons)
|
||||
{
|
||||
this._setSkill(t[0],2); // need to be decent pilots to make this work
|
||||
this._setWeapons(t[0],2.5); // boost weapons
|
||||
}
|
||||
goods = "PIRATE_GOODS";
|
||||
}
|
||||
var eg = t[0].escortGroup.ships;
|
||||
@ -1531,13 +1542,13 @@ this._addMediumHunterRemote = function(pos)
|
||||
|
||||
this._addMediumHunterReturn = function(pos)
|
||||
{
|
||||
this._addHunterPack(pos,system.ID,this._nearbyDangerousSystem(1),"hunter-medium",true);
|
||||
this._addHunterPack(pos,system.ID,this._nearbyDangerousSystem(4),"hunter-medium",true);
|
||||
}
|
||||
|
||||
|
||||
this._addMediumHunterOutbound = function(pos)
|
||||
{
|
||||
this._addHunterPack(pos,system.ID,this._nearbyDangerousSystem(1),"hunter-medium",false);
|
||||
this._addHunterPack(pos,system.ID,this._nearbyDangerousSystem(4),"hunter-medium",false);
|
||||
}
|
||||
|
||||
|
||||
@ -1573,6 +1584,8 @@ this._addHunterPack = function(pos,home,dest,role,returning)
|
||||
{
|
||||
t[0].bounty = 0;
|
||||
t[0].homeSystem = home;
|
||||
t[0].destinationSystem = dest;
|
||||
|
||||
if (returning)
|
||||
{
|
||||
this._setMissiles(t[0],-1);
|
||||
@ -1583,8 +1596,6 @@ this._addHunterPack = function(pos,home,dest,role,returning)
|
||||
this._setFuel(t[0]);
|
||||
}
|
||||
|
||||
t[0].destinationSystem = dest;
|
||||
|
||||
var group = new ShipGroup("hunter group",t[0]);
|
||||
t[0].group = group;
|
||||
|
||||
@ -1614,7 +1625,12 @@ this._addHunterPack = function(pos,home,dest,role,returning)
|
||||
this._setWeapons(t[0],1.9);
|
||||
}
|
||||
this._setSkill(t[0],3); // likely to be good pilot
|
||||
t[0].switchAI("oolite-bountyHunterLeaderAI.js");
|
||||
if (t[0].autoAI)
|
||||
{
|
||||
t[0].switchAI("oolite-bountyHunterLeaderAI.js");
|
||||
// auto AI will normally get this already but not if the hunter
|
||||
// addition used fallback roles
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1674,7 +1690,14 @@ this._addPirateAssistant = function(role,lead,pos)
|
||||
asst[0].destinationSystem = lead.destinationSystem;
|
||||
if (role == "pirate-interceptor")
|
||||
{
|
||||
asst[0].switchAI("oolite-pirateInterceptorAI.js");
|
||||
// autoAI gets this (except if we've fallen back to generic
|
||||
// pirates) once OXPs have caught up and we can be confident
|
||||
// that the new roles will be available, this can be
|
||||
// simplified.
|
||||
if (asst[0].autoAI)
|
||||
{
|
||||
asst[0].switchAI("oolite-pirateInterceptorAI.js");
|
||||
}
|
||||
asst[0].setBounty(50+system.government+Math.floor(Math.random()*36),"setup actions");
|
||||
// interceptors not actually part of group: they just get the
|
||||
// same destinations
|
||||
@ -1688,7 +1711,12 @@ this._addPirateAssistant = function(role,lead,pos)
|
||||
{
|
||||
asst[0].group = lead.group;
|
||||
lead.group.addShip(asst[0]);
|
||||
asst[0].switchAI("oolite-pirateFighterAI.js");
|
||||
// autoAI gets this (except if we've fallen back to generic
|
||||
// pirates - see above)
|
||||
if (asst[0].autoAI)
|
||||
{
|
||||
asst[0].switchAI("oolite-pirateFighterAI.js");
|
||||
}
|
||||
asst[0].setBounty(20+system.government+Math.floor(Math.random()*12),"setup actions");
|
||||
if (role == "pirate-light-fighter")
|
||||
{
|
||||
@ -1777,7 +1805,11 @@ this._addPiratePack = function(pos,leader,lf,mf,hf,thug,home,destination,returni
|
||||
lead[0].setCargoType("PIRATE_GOODS");
|
||||
}
|
||||
this._setEscortWeapons(lead[0]);
|
||||
lead[0].switchAI("oolite-pirateFreighterAI.js");
|
||||
if (lead[0].autoAI)
|
||||
{
|
||||
// may have fallen back to generic 'pirate' role, so make sure
|
||||
lead[0].switchAI("oolite-pirateFreighterAI.js");
|
||||
}
|
||||
return lead[0];
|
||||
}
|
||||
|
||||
@ -1917,36 +1949,41 @@ this._addAssassin = function(pos)
|
||||
{
|
||||
main.awardEquipment("EQ_SHIELD_BOOSTER");
|
||||
}
|
||||
// assassins don't respect escape pods and won't expect anyone
|
||||
// else to either.
|
||||
main.removeEquipment("EQ_ESCAPE_POD");
|
||||
main.fuel = 7;
|
||||
this._setWeapons(main,ws);
|
||||
this._setSkill(main,extra);
|
||||
}
|
||||
// main.bounty = 1+Math.floor(Math.random()*10);
|
||||
main.switchAI("oolite-assassinAI.js");
|
||||
// main.switchAI("oolite-assassinAI.js"); // autoAI can get this
|
||||
if (extra > 0)
|
||||
{
|
||||
var g = new ShipGroup("assassin group",main);
|
||||
main.group = g;
|
||||
var numext = Math.floor(Math.random()*3)+1;
|
||||
if (role == "assassin-heavy")
|
||||
{
|
||||
var extras = this._addShips("assassin-medium",2,pos,3E3);
|
||||
var extras = this._addShips("assassin-medium",numext,pos,3E3);
|
||||
}
|
||||
else
|
||||
{
|
||||
var extras = this._addShips("assassin-light",2,pos,3E3);
|
||||
var extras = this._addShips("assassin-light",numext,pos,3E3);
|
||||
}
|
||||
for (var i=0;i<2;i++)
|
||||
for (var i=0;i<numext;i++)
|
||||
{
|
||||
extras[i].group = g;
|
||||
g.addShip(extras[i]);
|
||||
if (extras[i].autoWeapons)
|
||||
{
|
||||
extras[i].awardEquipment("EQ_FUEL_INJECTION");
|
||||
extras[i].removeEquipment("EQ_ESCAPE_POD");
|
||||
extras[i].fuel = 7;
|
||||
this._setWeapons(extras[i],1.8);
|
||||
}
|
||||
// extras[i].bounty = 1+Math.floor(Math.random()*5);
|
||||
extras[i].switchAI("oolite-assassinAI.js");
|
||||
// extras[i].switchAI("oolite-assassinAI.js");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1989,7 +2026,7 @@ this._addPoliceStationPatrol = function(pos)
|
||||
p.primaryRole = "police-station-patrol";
|
||||
p.group = system.mainStation.group;
|
||||
p.group.addShip(p);
|
||||
p.switchAI("oolite-policeAI.js");
|
||||
// p.switchAI("oolite-policeAI.js");// autoAI gets this
|
||||
p.bounty = 0;
|
||||
p.maxEscorts = 16;
|
||||
if (system.info.techlevel >= 14)
|
||||
@ -2010,7 +2047,7 @@ this._addInterceptors = function(pos)
|
||||
h.ships[i].maxEscorts = 16;
|
||||
h.ships[i].homeSystem = system.ID;
|
||||
h.ships[i].destinationSystem = system.ID;
|
||||
h.ships[i].switchAI("oolite-policeAI.js");
|
||||
// h.ships[i].switchAI("oolite-policeAI.js"); // auto AI
|
||||
// only +1 as core already gives police ships better AI
|
||||
this._setSkill(h.ships[i],1);
|
||||
|
||||
@ -2245,7 +2282,7 @@ this._setReturnFuel = function(ship)
|
||||
this._wormholePos = function()
|
||||
{
|
||||
var v = Vector3D.randomDirection().multiply(2000+Math.random()*3000);
|
||||
if (v.z < 0 && v.x+v.y < 500)
|
||||
if (v.z < 0 && Math.abs(v.x)+Math.abs(v.y) < 1000)
|
||||
{
|
||||
v.z = -v.z; // avoid collision risk with witchbuoy
|
||||
}
|
||||
@ -2510,6 +2547,10 @@ this._weightedNearbyTradeSystem = function()
|
||||
}
|
||||
}
|
||||
// fallback
|
||||
if (locals.length > 0)
|
||||
{
|
||||
return locals[0].systemID;
|
||||
}
|
||||
return system.ID;
|
||||
}
|
||||
|
||||
|
@ -36,7 +36,7 @@ MA 02110-1301, USA.
|
||||
this.name = "oolite-primable-equipment-register";
|
||||
this.author = "cim";
|
||||
this.copyright = "© 2008-2013 the Oolite team.";
|
||||
this.version = "1.79";
|
||||
|
||||
|
||||
this.startUpComplete = this.shipDockedWithStation = this.playerBoughtNewShip = function()
|
||||
{
|
||||
|
@ -29,7 +29,6 @@
|
||||
|
||||
/* AI Library */
|
||||
this.name = "oolite-libPriorityAI";
|
||||
this.version = "1.79";
|
||||
this.copyright = "© 2008-2013 the Oolite team.";
|
||||
this.author = "cim";
|
||||
|
||||
@ -208,7 +207,7 @@ this.PriorityAIController = function(ship)
|
||||
this.__ltcache = {};
|
||||
this.__ltcachestart = clock.adjustedSeconds + 60;
|
||||
}
|
||||
if (!this.__ltcache.oolite_nearestStation)
|
||||
if (!this.__ltcache.oolite_nearestStation || !this.__ltcache.oolite_nearestStation.isValid)
|
||||
{
|
||||
this.__ltcache.oolite_nearestStation = this.ship.findNearestStation();
|
||||
}
|
||||
@ -395,6 +394,27 @@ this.PriorityAIController = function(ship)
|
||||
}
|
||||
|
||||
|
||||
this.communicationsPersonality = function()
|
||||
{
|
||||
return commsPersonality;
|
||||
}
|
||||
|
||||
|
||||
this.communicationsRole = function()
|
||||
{
|
||||
return commsRole;
|
||||
}
|
||||
|
||||
|
||||
this.fireECM = function()
|
||||
{
|
||||
// give a chance for missiles fired close to their target to
|
||||
// hit before it can use ECM
|
||||
var delay = (12-this.ship.accuracy)/4; // 0.5 - 4.25
|
||||
var etimer = new Timer(this,function() { this.ship.fireECM() }.bind(this),delay);
|
||||
}
|
||||
|
||||
|
||||
this.getParameter = function(key)
|
||||
{
|
||||
if (key in parameters)
|
||||
@ -420,7 +440,8 @@ this.PriorityAIController = function(ship)
|
||||
/* Requests reconsideration of behaviour ahead of schedule. */
|
||||
this.reconsiderNow = function()
|
||||
{
|
||||
_resetReconsideration.call(this,0.1);
|
||||
// 0.1 - 1.6 seconds depending on accuracy
|
||||
_resetReconsideration.call(this,0.1+((10-this.ship.accuracy)/10));
|
||||
}
|
||||
|
||||
|
||||
@ -436,8 +457,78 @@ this.PriorityAIController = function(ship)
|
||||
this.setCommunicationsRole = function(role)
|
||||
{
|
||||
commsRole = role;
|
||||
// TODO: if personality is generic, pick a new one from the
|
||||
// allowed list. If possible use the same as the group leader.
|
||||
// If personality is generic, or doesn't exist in this role,
|
||||
// pick a new one from the allowed list.
|
||||
var cps = worldScripts["oolite-libPriorityAI"]._getCommunicationPersonalities(role);
|
||||
|
||||
if (commsPersonality == "generic" || cps.indexOf(commsPersonality) == -1)
|
||||
{
|
||||
/* Allow group leaders to optionally set their own
|
||||
* personality on ships in their group with the same
|
||||
* role. This bit is for setting a follower's
|
||||
* personality. */
|
||||
var pmatch = this.getParameter("oolite_personalityMatchesLeader");
|
||||
if (pmatch && Math.random() < pmatch)
|
||||
{
|
||||
if (this.ship.group)
|
||||
{
|
||||
var l = this.ship.group.leader;
|
||||
if (l && l != this.ship && l.AIScript.oolite_priorityai)
|
||||
{
|
||||
|
||||
if (l.AIScript.oolite_priorityai.communicationsRole() == role)
|
||||
{
|
||||
var lp = l.AIScript.oolite_priorityai.communicationsPersonality();
|
||||
if (lp != "generic")
|
||||
{
|
||||
this.setCommunicationsPersonality(lp);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (cps.length > 0)
|
||||
{
|
||||
if (cps.length == 1)
|
||||
{
|
||||
this.setCommunicationsPersonality(cps[0]);
|
||||
}
|
||||
else
|
||||
{
|
||||
var cpx = this.ship.entityPersonality % cps.length;
|
||||
if (cps[cpx] != "generic")
|
||||
{
|
||||
this.setCommunicationsPersonality(cps[cpx]);
|
||||
}
|
||||
else
|
||||
{
|
||||
var cpx2 = this.ship.entityPersonality % (cps.length-1);
|
||||
if (cpx2 >= cpx)
|
||||
{
|
||||
++cpx2; // don't pick the same as cpx
|
||||
}
|
||||
this.setCommunicationsPersonality(cps[cpx2]);
|
||||
}
|
||||
}
|
||||
}
|
||||
/* Set personalities of followers */
|
||||
if (pmatch && this.ship.group && this.ship.group.leader == this.ship)
|
||||
{
|
||||
var fs = this.ship.group.ships;
|
||||
for (var i=fs.length-1;i>=0;--i)
|
||||
{
|
||||
if (fs[i] != this.ship && Math.random() < pmatch && fs[i].AIScript.oolite_priorityai)
|
||||
{
|
||||
if (fs[i].AIScript.oolite_priorityai.communicationsRole() == role)
|
||||
{
|
||||
fs[i].AIScript.oolite_priorityai.setCommunicationsPersonality(commsPersonality);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -532,6 +623,15 @@ PriorityAIController.prototype.allied = function(ship1,ship2)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
// main and other galcop stations allied with police
|
||||
if (ship1.isStation && (ship1.allegiance == "galcop" || ship1.isMainStation) && ship2.scanClass == "CLASS_POLICE")
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (ship2.isStation && (ship2.allegiance == "galcop" || ship2.isMainStation) && ship1.scanClass == "CLASS_POLICE")
|
||||
{
|
||||
return true;
|
||||
}
|
||||
// Okay, these ships really do have nothing to do with each other...
|
||||
return false;
|
||||
}
|
||||
@ -689,11 +789,28 @@ PriorityAIController.prototype.entityCommsParams = function(entity)
|
||||
{
|
||||
params["oolite_entityName"] = entity.displayName;
|
||||
}
|
||||
if (!entity.isPlayer)
|
||||
{
|
||||
var crew = entity.crew;
|
||||
if (entity.crew && entity.crew.length > 0)
|
||||
{
|
||||
params["oolite_entityCrew"] = entity.crew[0].name;
|
||||
}
|
||||
else
|
||||
{
|
||||
params["oolite_entityCrew"] = params["oolite_entityName"];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
params["oolite_entityCrew"] = player.name;
|
||||
}
|
||||
}
|
||||
else if (entity.name)
|
||||
{
|
||||
params["oolite_entityClass"] = entity.name;
|
||||
params["oolite_entityName"] = entity.name;
|
||||
params["oolite_entityCrew"] = entity.name;
|
||||
}
|
||||
}
|
||||
return params;
|
||||
@ -713,7 +830,7 @@ PriorityAIController.prototype.fineThreshold = function()
|
||||
// May need to move this and hostileStation to native code for efficiency
|
||||
PriorityAIController.prototype.friendlyStation = function(station)
|
||||
{
|
||||
if (!station || !station.isInSpace)
|
||||
if (!station || !station.isValid || !station.isInSpace)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -762,7 +879,11 @@ PriorityAIController.prototype.friendlyStation = function(station)
|
||||
|
||||
PriorityAIController.prototype.homeStation = function()
|
||||
{
|
||||
if (this.__ltcache.oolite_homeStation !== undefined)
|
||||
if (this.__ltcache.oolite_homeStation === null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
if (this.__ltcache.oolite_homeStation !== undefined && this.__ltcache.oolite_homeStation.isValid)
|
||||
{
|
||||
return this.__ltcache.oolite_homeStation;
|
||||
}
|
||||
@ -795,7 +916,7 @@ PriorityAIController.prototype.homeStation = function()
|
||||
// be an exact negation
|
||||
PriorityAIController.prototype.hostileStation = function(station)
|
||||
{
|
||||
if (!station || !station.isInSpace)
|
||||
if (!station || !station.isValid || !station.isInSpace)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -1109,6 +1230,8 @@ PriorityAIController.prototype.setWitchspaceRouteTo = function(dest)
|
||||
if (system.info.distanceToSystem(info) < this.ship.fuel)
|
||||
{
|
||||
this.setParameter("oolite_witchspaceDestination",dest);
|
||||
this.communicate("oolite_selectedWitchspaceDestination",{"oolite_witchspaceDestination":info.name},4);
|
||||
|
||||
return;
|
||||
}
|
||||
else
|
||||
@ -1123,6 +1246,7 @@ PriorityAIController.prototype.setWitchspaceRouteTo = function(dest)
|
||||
if (system.info.distanceToSystem(System.infoForSystem(galaxyNumber,next)) < this.ship.fuel)
|
||||
{
|
||||
this.setParameter("oolite_witchspaceDestination",next);
|
||||
this.communicate("oolite_selectedWitchspaceDestination",{"oolite_witchspaceDestination":System.infoForSystem(galaxyNumber,next).name},4);
|
||||
return;
|
||||
}
|
||||
this.setParameter("oolite_witchspaceDestination",null);
|
||||
@ -1551,7 +1675,7 @@ PriorityAIController.prototype.conditionLosingCombat = function()
|
||||
|
||||
if (!this.getParameter("oolite_flag_fightsNearHostileStations"))
|
||||
{
|
||||
if (this.__ltcache.oolite_nearestStation && this.distance(this.__ltcache.oolite_nearestStation) < 51200 && this.hostileStation(this.__ltcache.oolite_nearestStation))
|
||||
if (this.__ltcache.oolite_nearestStation && this.__ltcache.oolite_nearestStation.isValid && this.distance(this.__ltcache.oolite_nearestStation) < 51200 && this.hostileStation(this.__ltcache.oolite_nearestStation))
|
||||
{
|
||||
// if there is a hostile station nearby, probably best to leave
|
||||
return true;
|
||||
@ -1712,17 +1836,31 @@ PriorityAIController.prototype.conditionFriendlyStationExists = function()
|
||||
|
||||
PriorityAIController.prototype.conditionFriendlyStationNearby = function()
|
||||
{
|
||||
if (!this.__ltcache.oolite_nearestStation)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return this.friendlyStation(this.__ltcache.oolite_nearestStation) && this.distance(this.__ltcache.oolite_nearestStation) < this.scannerRange;
|
||||
}
|
||||
|
||||
|
||||
PriorityAIController.prototype.conditionGroupIsSeparated = function()
|
||||
{
|
||||
if (!this.ship.group || !this.ship.group.leader)
|
||||
var group = this.ship.group;
|
||||
if (!group)
|
||||
{
|
||||
return false;
|
||||
return;
|
||||
}
|
||||
var leader = this.ship.group.leader;
|
||||
var leader;
|
||||
if (group.leader)
|
||||
{
|
||||
leader = group.leader;
|
||||
}
|
||||
else
|
||||
{
|
||||
leader = group.ships[0];
|
||||
}
|
||||
|
||||
if (leader.isStation)
|
||||
{
|
||||
// can get 2x as far from station
|
||||
@ -1779,6 +1917,10 @@ PriorityAIController.prototype.conditionHomeStationNearby = function()
|
||||
|
||||
PriorityAIController.prototype.conditionHostileStationNearby = function()
|
||||
{
|
||||
if (!this.__ltcache.oolite_nearestStation)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return this.hostileStation(this.__ltcache.oolite_nearestStation) && this.distance(this.__ltcache.oolite_nearestStation) < 51200;
|
||||
}
|
||||
|
||||
@ -1848,6 +1990,10 @@ PriorityAIController.prototype.conditionSelectedStationNearMainPlanet = function
|
||||
|
||||
PriorityAIController.prototype.conditionStationNearby = function()
|
||||
{
|
||||
if (!this.__ltcache.oolite_nearestStation || !this.__ltcache.oolite_nearestStation.isValid)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return this.distance(this.__ltcache.oolite_nearestStation) < this.scannerRange*2;
|
||||
}
|
||||
|
||||
@ -2092,9 +2238,12 @@ PriorityAIController.prototype.conditionScannerContainsLoneVictim = function()
|
||||
var target = null;
|
||||
for (var i = scan.length-1 ; i >= 0 ; i--)
|
||||
{
|
||||
if (!this.allied(this.ship,scan[i]) && this.shipInRoleCategory(scan[i],"oolite-pirate-victim") && scan[i].cargoSpaceCapacity > 0)
|
||||
if (!this.allied(this.ship,scan[i]))
|
||||
{
|
||||
target = scan[i];
|
||||
if (this.shipInRoleCategory(scan[i],"oolite-pirate-victim") && scan[i].cargoSpaceCapacity > 0)
|
||||
{
|
||||
target = scan[i];
|
||||
}
|
||||
others++;
|
||||
}
|
||||
}
|
||||
@ -2177,7 +2326,7 @@ PriorityAIController.prototype.conditionScannerContainsRocks = function()
|
||||
}
|
||||
// no boulders, what about asteroids?
|
||||
return this.checkScannerWithPredicate(function(s) {
|
||||
return s.isInSpace && s.hasRole("asteroid");
|
||||
return s.isInSpace && s.isMinable;
|
||||
});
|
||||
}
|
||||
|
||||
@ -2511,6 +2660,12 @@ PriorityAIController.prototype.conditionIsGroupLeader = function()
|
||||
}
|
||||
|
||||
|
||||
PriorityAIController.prototype.conditionMissileNeedsLaunchEvasion = function()
|
||||
{
|
||||
return (this.getParameter("oolite_flag_launchAdjustMissile") != null);
|
||||
}
|
||||
|
||||
|
||||
PriorityAIController.prototype.conditionMissileOutOfFuel = function()
|
||||
{
|
||||
var range = 30000; // 30 km default
|
||||
@ -2524,7 +2679,10 @@ PriorityAIController.prototype.conditionMissileOutOfFuel = function()
|
||||
|
||||
PriorityAIController.prototype.conditionPatrolIsOver = function()
|
||||
{
|
||||
return this.ship.distanceTravelled > 200000 || this.conditionSuppliesLow();
|
||||
/* patrol is over after 200km, or if supplies are low after 20km
|
||||
* 20km to prevent patrol being over on launch if a ship is set up
|
||||
* to always have low supplies on creation */
|
||||
return this.ship.distanceTravelled > 200000 || (this.ship.distanceTravelled > 20000 && this.conditionSuppliesLow());
|
||||
}
|
||||
|
||||
|
||||
@ -2613,6 +2771,22 @@ PriorityAIController.prototype.behaviourApproachDestination = function()
|
||||
}
|
||||
|
||||
|
||||
PriorityAIController.prototype.behaviourAssassinateCurrentTarget = function()
|
||||
{
|
||||
var params = this.entityCommsParams(this.ship.target);
|
||||
if (this.ship.target.isPlayer)
|
||||
{
|
||||
params["oolite_entityContracts"] = worldScripts["oolite-contracts-helpers"]._getClientName();
|
||||
}
|
||||
else
|
||||
{
|
||||
params["oolite_entityContracts"] = expandDescription("%N ")+expandDescription("[nom]");
|
||||
}
|
||||
this.communicate("oolite_beginningAssassination",params,3);
|
||||
this.behaviourCommenceAttackOnCurrentTarget();
|
||||
}
|
||||
|
||||
|
||||
PriorityAIController.prototype.behaviourAvoidCascadeExplosion = function()
|
||||
{
|
||||
var handlers = {};
|
||||
@ -2694,6 +2868,13 @@ PriorityAIController.prototype.behaviourCollectSalvage = function()
|
||||
}
|
||||
|
||||
|
||||
PriorityAIController.prototype.behaviourCommenceAttackOnCurrentTarget = function()
|
||||
{
|
||||
this.communicate("oolite_beginningFight",this.ship.target,3);
|
||||
this.behaviourDestroyCurrentTarget();
|
||||
}
|
||||
|
||||
|
||||
PriorityAIController.prototype.behaviourDestroyCurrentTarget = function()
|
||||
{
|
||||
this.setParameter("oolite_witchspaceEntry",null);
|
||||
@ -2770,22 +2951,27 @@ PriorityAIController.prototype.behaviourDockWithStation = function()
|
||||
this.ship.target = null;
|
||||
this.reconsiderNow();
|
||||
break;
|
||||
case "TRY_AGAIN_LATER":
|
||||
if (this.distance(station) < 10000)
|
||||
{
|
||||
this.ship.destination = station.position;
|
||||
this.ship.desiredRange = 12500;
|
||||
this.ship.desiredSpeed = this.cruiseSpeed();
|
||||
this.ship.performFlyToRangeFromDestination();
|
||||
break;
|
||||
}
|
||||
// else fall through
|
||||
case "HOLD_POSITION":
|
||||
this.communicate("oolite_dockingWait",{},4);
|
||||
this.ship.destination = station.position;
|
||||
this.ship.performFaceDestination();
|
||||
// and will reconsider in a little bit
|
||||
break;
|
||||
case "TRY_AGAIN_LATER":
|
||||
if (this.distance(station) < 5000)
|
||||
{
|
||||
if (this.__ltcache.oolite_dockingclearpos)
|
||||
{
|
||||
this.ship.destination = this.__ltcache.oolite_dockingclearpos;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.ship.destination = station.position.add(Vector3D.randomDirection(8000+station.collisionRadius));
|
||||
this.__ltcache.oolite_dockingclearpos = this.ship.destination;
|
||||
}
|
||||
}
|
||||
this.ship.performFlyToRangeFromDestination();
|
||||
break;
|
||||
case "APPROACH_COORDINATES":
|
||||
if (this.ship.escortGroup && this.ship.escortGroup.count > 1)
|
||||
{
|
||||
@ -2853,9 +3039,9 @@ PriorityAIController.prototype.behaviourEnterWitchspace = function()
|
||||
// wait for escorts to launch
|
||||
if (!this.conditionAllEscortsInFlight())
|
||||
{
|
||||
if (this.__ltcache.oolite_nearestStation)
|
||||
if (this.__ltcache.oolite_nearestStation && this.__ltcache.oolite_nearestStation.isValid && this.distance(this.__ltcache.oolite_nearestStation) < 5000)
|
||||
{
|
||||
var launchpos = this.ship.position.add(this.__ltcache.oolite_nearestStation.vectorForward.multiply(8000).add(this.__ltcache.oolite_nearestStation.vectorRight.multiply(30000)));
|
||||
var launchpos = this.ship.position.add(this.__ltcache.oolite_nearestStation.vectorForward.multiply(12000).add(this.__ltcache.oolite_nearestStation.vectorRight.multiply(30000)));
|
||||
this.ship.destination = launchpos;
|
||||
}
|
||||
else
|
||||
@ -2898,7 +3084,7 @@ PriorityAIController.prototype.behaviourEnterWitchspace = function()
|
||||
this.setParameter("oolite_witchspaceEntry",clock.seconds + 15);
|
||||
}
|
||||
|
||||
if (this.__ltcache.oolite_nearestStation)
|
||||
if (this.__ltcache.oolite_nearestStation && this.__ltcache.oolite_nearestStation.isValid && this.distance(this.__ltcache.oolite_nearestStation) < 5000)
|
||||
{
|
||||
var launchpos = this.ship.position.add(this.__ltcache.oolite_nearestStation.vectorForward.multiply(8000).add(this.__ltcache.oolite_nearestStation.vectorRight.multiply(30000)));
|
||||
this.ship.destination = launchpos;
|
||||
@ -3065,7 +3251,7 @@ PriorityAIController.prototype.behaviourFleeCombat = function()
|
||||
// if the leader has departed and the wormhole is
|
||||
// reachable, go for it!
|
||||
this.ship.destination = wormhole.position;
|
||||
this.ship.desiredSpeed = this.ship.maxFlightSpeed * 7;
|
||||
this.ship.desiredSpeed = this.ship.maxSpeed * 7;
|
||||
this.ship.performFlyToRangeFromDestination();
|
||||
return;
|
||||
}
|
||||
@ -3988,6 +4174,7 @@ PriorityAIController.prototype.configurationSelectRandomTradeStation = function(
|
||||
if (Math.random() < 0.9 && this.friendlyStation(system.mainStation))
|
||||
{
|
||||
this.setParameter("oolite_selectedStation",system.mainStation);
|
||||
this.communicate("oolite_selectedStation",system.mainStation,4);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -3996,6 +4183,7 @@ PriorityAIController.prototype.configurationSelectRandomTradeStation = function(
|
||||
if (Math.random() < 0.5 && this.friendlyStation(system.mainStation))
|
||||
{
|
||||
this.setParameter("oolite_selectedStation",system.mainStation);
|
||||
this.communicate("oolite_selectedStation",system.mainStation,4);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -4064,6 +4252,7 @@ PriorityAIController.prototype.configurationSelectShuttleDestination = function(
|
||||
else
|
||||
{
|
||||
this.setParameter("oolite_selectedStation",destination);
|
||||
this.communicate("oolite_selectedStation",destination,4);
|
||||
this.setParameter("oolite_selectedPlanet",null);
|
||||
}
|
||||
}
|
||||
@ -4119,6 +4308,19 @@ PriorityAIController.prototype.configurationSelectWitchspaceDestinationOutbound
|
||||
/*** Destination configuration ***/
|
||||
|
||||
|
||||
PriorityAIController.prototype.configurationMissileAdjustLaunch = function()
|
||||
{
|
||||
// clear flag
|
||||
this.setParameter("oolite_flag_launchAdjustMissile",null);
|
||||
|
||||
/* tilt down and accelerate - assumes missile is co-aligned to
|
||||
* ship on launch, and launched from below the ship */
|
||||
this.ship.destination = this.ship.position.add(this.ship.vectorUp);
|
||||
this.ship.desiredRange = 100000;
|
||||
this.ship.desiredSpeed = this.ship.maxSpeed;
|
||||
}
|
||||
|
||||
|
||||
PriorityAIController.prototype.configurationMissileAdjustSpread = function()
|
||||
{
|
||||
var near = this.getParameter("oolite_scanResultSpecific");
|
||||
@ -4126,13 +4328,13 @@ PriorityAIController.prototype.configurationMissileAdjustSpread = function()
|
||||
{
|
||||
this.ship.destination = this.ship.target.position;
|
||||
this.ship.desiredRange = 100;
|
||||
this.ship.desiredSpeed = this.ship.maxFlightSpeed;
|
||||
this.ship.desiredSpeed = this.ship.maxSpeed;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.ship.destination = near.position.add(Vector3D.randomDirection(20));
|
||||
this.ship.desiredRange = 1000;
|
||||
this.ship.desiredSpeed = this.ship.maxFlightSpeed;
|
||||
this.ship.desiredSpeed = this.ship.maxSpeed;
|
||||
}
|
||||
}
|
||||
|
||||
@ -4255,7 +4457,7 @@ PriorityAIController.prototype.configurationSetDestinationToNearestHostileStatio
|
||||
|
||||
PriorityAIController.prototype.configurationSetDestinationToNearestStation = function()
|
||||
{
|
||||
if (this.__ltcache.oolite_nearestStation)
|
||||
if (this.__ltcache.oolite_nearestStation && this.__ltcache.oolite_nearestStation.isValid)
|
||||
{
|
||||
this.ship.destination = this.__ltcache.oolite_nearestStation.position;
|
||||
this.ship.desiredRange = 15000;
|
||||
@ -4448,6 +4650,10 @@ PriorityAIController.prototype.configurationSetWaypoint = function()
|
||||
|
||||
PriorityAIController.prototype.configurationSetNearbyFriendlyStationForDocking = function()
|
||||
{
|
||||
if (!this.__ltcache.oolite_nearestStation)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (this.friendlyStation(this.__ltcache.oolite_nearestStation))
|
||||
{
|
||||
if (this.distance(this.__ltcache.oolite_nearestStation) < this.scannerRange)
|
||||
@ -4663,6 +4869,7 @@ PriorityAIController.prototype.responsesAddDocking = function(handlers)
|
||||
{
|
||||
handlers.stationWithdrewDockingClearance = this.responseComponent_docking_stationWithdrewDockingClearance;
|
||||
handlers.shipAchievedDesiredRange = this.responseComponent_docking_shipAchievedDesiredRange;
|
||||
handlers.shipAIFrustrated = this.responseComponent_docking_shipAIFrustrated;
|
||||
}
|
||||
|
||||
/* Override of standard handlers for use while escorting */
|
||||
@ -4805,7 +5012,7 @@ PriorityAIController.prototype.responseComponent_standard_helpRequestReceived =
|
||||
this.ship.addDefenseTarget(enemy);
|
||||
if (enemy.scanClass == "CLASS_MISSILE" && this.distance(enemy) < this.scannerRange && this.ship.equipmentStatus("EQ_ECM") == "EQUIPMENT_OK")
|
||||
{
|
||||
this.ship.fireECM();
|
||||
this.fireECM();
|
||||
}
|
||||
if (enemy.scanClass == "CLASS_THARGOID" && this.ship.scanClass != "CLASS_THARGOID" && (!this.ship.target || this.ship.target.scanClass != "CLASS_THARGOID"))
|
||||
{
|
||||
@ -4818,6 +5025,17 @@ PriorityAIController.prototype.responseComponent_standard_helpRequestReceived =
|
||||
|
||||
if (!this.ship.hasHostileTarget)
|
||||
{
|
||||
// can't see the target
|
||||
if (this.distance(enemy) > this.scannerRange)
|
||||
{
|
||||
this.ship.destination = enemy.position;
|
||||
this.ship.desiredRange = this.scannerRange * 0.75;
|
||||
// rush to help on injectors if possible
|
||||
this.ship.desiredSpeed = this.ship.maxSpeed * 7;
|
||||
this.ship.performFlyToRangeFromDestination();
|
||||
// don't reconsider just yet
|
||||
return;
|
||||
}
|
||||
this.reconsiderNow();
|
||||
return; // not in a combat mode
|
||||
}
|
||||
@ -4839,6 +5057,7 @@ PriorityAIController.prototype.responseComponent_standard_offenceCommittedNearby
|
||||
{
|
||||
if (this.ship == victim) return; // other handlers can get this one
|
||||
if (this.distance(attacker) > this.scannerRange) return; // can't mark what you can't see
|
||||
if (attacker.scanClass == "CLASS_POLICE") return; // ignored
|
||||
if (this.getParameter("oolite_flag_markOffenders"))
|
||||
{
|
||||
if (attacker.bounty == 0 && victim.bounty == 0)
|
||||
@ -4894,6 +5113,11 @@ PriorityAIController.prototype.responseComponent_standard_playerWillEnterWitchsp
|
||||
{
|
||||
this.ship.enterWormhole(wormhole);
|
||||
}
|
||||
/* Given a chance to leave interstellar space, take it */
|
||||
else if (system.isInterstellarSpace && !this.getParameter("oolite_flag_likesInterstellarSpace") && this.distance(player.ship) < this.scannerRange)
|
||||
{
|
||||
this.ship.enterWormhole();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -4961,7 +5185,7 @@ PriorityAIController.prototype.responseComponent_standard_shipAttackedWithMissil
|
||||
}
|
||||
if (this.ship.equipmentStatus("EQ_ECM") == "EQUIPMENT_OK")
|
||||
{
|
||||
this.ship.fireECM();
|
||||
this.fireECM();
|
||||
this.ship.addDefenseTarget(missile);
|
||||
this.ship.addDefenseTarget(whom);
|
||||
// but don't reconsider immediately, because the ECM will
|
||||
@ -5039,6 +5263,12 @@ PriorityAIController.prototype.responseComponent_standard_shipBeingAttacked = fu
|
||||
// ignore it
|
||||
return;
|
||||
}
|
||||
// clean ships ignore friendly fire from police
|
||||
if (this.ship.bounty == 0 && whom.scanClass == "CLASS_POLICE")
|
||||
{
|
||||
this.communicate("oolite_friendlyFire",whom,3);
|
||||
return;
|
||||
}
|
||||
if (Math.random() > 0.1)
|
||||
{
|
||||
// usually ignore it anyway as we know they didn't mean to
|
||||
@ -5225,7 +5455,36 @@ PriorityAIController.prototype.responseComponent_standard_shipFiredMissile = fun
|
||||
|
||||
PriorityAIController.prototype.responseComponent_standard_shipKilledOther = function(other)
|
||||
{
|
||||
this.communicate("oolite_killedTarget",other,3);
|
||||
if (this.ship.target == other)
|
||||
{
|
||||
if (this.allied(this.ship,other))
|
||||
{
|
||||
this.communicate("oolite_killedAlly",other,3);
|
||||
}
|
||||
else if (other.crew && other.crew.length > 0)
|
||||
{
|
||||
this.communicate("oolite_killedTarget",other,2);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.communicate("oolite_killedUncrewedTarget",other,3);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (this.allied(this.ship,other))
|
||||
{
|
||||
this.communicate("oolite_killedAlly",other,3);
|
||||
}
|
||||
else if (other.crew && other.crew.length > 0)
|
||||
{
|
||||
this.communicate("oolite_killedNonTarget",other,3);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.communicate("oolite_killedUncrewedNonTarget",other,3);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -5254,7 +5513,10 @@ PriorityAIController.prototype.responseComponent_standard_shipLaunchedFromStatio
|
||||
|
||||
PriorityAIController.prototype.responseComponent_standard_shipScoopedOther = function(other)
|
||||
{
|
||||
this.communicate("oolite_scoopedCargo",{"oolite_goodsDescription":displayNameForCommodity(other.commodity)},4);
|
||||
if (other.commodity)
|
||||
{
|
||||
this.communicate("oolite_scoopedCargo",{"oolite_goodsDescription":displayNameForCommodity(other.commodity)},4);
|
||||
}
|
||||
this.setParameter("oolite_cargoDropped",null);
|
||||
this.reconsiderNow();
|
||||
}
|
||||
@ -5427,7 +5689,7 @@ PriorityAIController.prototype.responseComponent_station_shipAttackedWithMissile
|
||||
this.ship.alertCondition = 3;
|
||||
if (this.ship.equipmentStatus("EQ_ECM") == "EQUIPMENT_OK")
|
||||
{
|
||||
this.ship.fireECM();
|
||||
this.fireECM();
|
||||
this.ship.addDefenseTarget(missile);
|
||||
this.ship.addDefenseTarget(whom);
|
||||
// but don't reconsider immediately
|
||||
@ -5463,6 +5725,13 @@ PriorityAIController.prototype.responseComponent_station_shipBeingAttacked = fun
|
||||
// ignore it
|
||||
return;
|
||||
}
|
||||
// allegiance=galcop case covered by this.allied
|
||||
if (whom.scanClass == "CLASS_POLICE" && (this.ship.allegiance == "hunter" || this.ship.allegiance == "neutral"))
|
||||
{
|
||||
this.communicate("oolite_friendlyFire",whom,4);
|
||||
// ignore it
|
||||
return;
|
||||
}
|
||||
if (Math.random() > 0.1)
|
||||
{
|
||||
// usually ignore it anyway
|
||||
@ -5530,7 +5799,37 @@ PriorityAIController.prototype.responseComponent_station_shipFiredMissile = func
|
||||
|
||||
PriorityAIController.prototype.responseComponent_station_shipKilledOther = function(other)
|
||||
{
|
||||
this.communicate("oolite_killedTarget",other,3);
|
||||
// slightly lower message priorities than the ship version
|
||||
if (this.ship.target == other)
|
||||
{
|
||||
if (this.allied(this.ship,other))
|
||||
{
|
||||
this.communicate("oolite_killedAlly",other,3);
|
||||
}
|
||||
else if (other.crew && other.crew.length > 0)
|
||||
{
|
||||
this.communicate("oolite_killedTarget",other,3);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.communicate("oolite_killedUncrewedTarget",other,4);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (this.allied(this.ship,other))
|
||||
{
|
||||
this.communicate("oolite_killedAlly",other,3);
|
||||
}
|
||||
else if (other.crew && other.crew.length > 0)
|
||||
{
|
||||
this.communicate("oolite_killedNonTarget",other,3);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.communicate("oolite_killedUncrewedNonTarget",other,4);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -5545,7 +5844,7 @@ PriorityAIController.prototype.responseComponent_station_helpRequestReceived = f
|
||||
this.ship.addDefenseTarget(enemy);
|
||||
if (enemy.scanClass == "CLASS_MISSILE" && this.distance(enemy) < this.scannerRange && this.ship.equipmentStatus("EQ_ECM") == "EQUIPMENT_OK")
|
||||
{
|
||||
this.ship.fireECM();
|
||||
this.fireECM();
|
||||
return;
|
||||
}
|
||||
if (!this.ship.alertCondition == 3)
|
||||
@ -5638,6 +5937,16 @@ PriorityAIController.prototype.responseComponent_docking_shipAchievedDesiredRang
|
||||
}
|
||||
|
||||
|
||||
PriorityAIController.prototype.responseComponent_docking_shipAIFrustrated = function()
|
||||
{
|
||||
var station = this.getParameter("oolite_dockingStation",null);
|
||||
station.abortDockingForShip(this.ship);
|
||||
this.communicate("oolite_abortDocking",{},3);
|
||||
this.setParameter("oolite_dockingStation",null);
|
||||
this.reconsiderNow();
|
||||
}
|
||||
|
||||
|
||||
PriorityAIController.prototype.responseComponent_docking_stationWithdrewDockingClearance = function()
|
||||
{
|
||||
this.setParameter("oolite_dockingStation",null);
|
||||
@ -5660,7 +5969,7 @@ PriorityAIController.prototype.responseComponent_escort_helpRequestReceived = fu
|
||||
this.ship.addDefenseTarget(enemy);
|
||||
if (enemy.scanClass == "CLASS_MISSILE" && this.distance(enemy) < this.scannerRange && this.ship.equipmentStatus("EQ_ECM") == "EQUIPMENT_OK")
|
||||
{
|
||||
this.ship.fireECM();
|
||||
this.fireECM();
|
||||
}
|
||||
if (enemy.scanClass == "CLASS_THARGOID" && this.ship.scanClass != "CLASS_THARGOID" && (!this.ship.target || this.ship.target.scanClass != "CLASS_THARGOID"))
|
||||
{
|
||||
@ -5684,7 +5993,7 @@ PriorityAIController.prototype.responseComponent_escort_helpRequestReceived = fu
|
||||
this.ship.addDefenseTarget(enemy);
|
||||
if (enemy.scanClass == "CLASS_MISSILE" && this.distance(enemy) < this.scannerRange && this.ship.equipmentStatus("EQ_ECM") == "EQUIPMENT_OK")
|
||||
{
|
||||
this.ship.fireECM();
|
||||
this.fireECM();
|
||||
return;
|
||||
}
|
||||
if (!this.ship.hasHostileTarget)
|
||||
@ -5713,7 +6022,7 @@ PriorityAIController.prototype.responseComponent_expectWitchspace_shipTargetLost
|
||||
{
|
||||
target = this.getParameter("oolite_rememberedTarget");
|
||||
}
|
||||
if (target) {
|
||||
if (target && target.position) {
|
||||
var pos = target.position;
|
||||
var ws = system.wormholes;
|
||||
// most likely to be most recent
|
||||
@ -5752,7 +6061,7 @@ PriorityAIController.prototype.responseComponent_trackPlayer_playerWillEnterWitc
|
||||
{
|
||||
this.ship.enterWormhole(wormhole);
|
||||
}
|
||||
else
|
||||
else if (this.getParameter("oolite_rememberedTarget") == player.ship)
|
||||
{
|
||||
this.ship.enterWormhole();
|
||||
}
|
||||
@ -6039,6 +6348,14 @@ PriorityAIController.prototype.templateWitchspaceJumpOutbound = function()
|
||||
|
||||
PriorityAIController.prototype.waypointsSpacelanePatrol = function()
|
||||
{
|
||||
// interstellar space exception
|
||||
if (!system.sun)
|
||||
{
|
||||
this.setParameter("oolite_waypoint",new Vector3D(0,0,0));
|
||||
this.setParameter("oolite_waypointRange",7500);
|
||||
return;
|
||||
}
|
||||
|
||||
var p = this.ship.position;
|
||||
var choice = "";
|
||||
if (p.magnitude() < 10000)
|
||||
@ -6229,6 +6546,7 @@ PriorityAIController.prototype.waypointsWitchpointPatrol = function()
|
||||
|
||||
this.startUp = function()
|
||||
{
|
||||
delete this.startUp;
|
||||
// initial definition is just essential communications for now
|
||||
this.$commsSettings = {};
|
||||
this.$commsAllowed = true;
|
||||
@ -6241,7 +6559,7 @@ this.startUp = function()
|
||||
},
|
||||
trader: {
|
||||
generic: {
|
||||
oolite_acceptPirateDemand: "[oolite-comms-acceptPirateDemand]",
|
||||
oolite_agreeingToDumpCargo: "[oolite-comms-acceptPirateDemand]",
|
||||
oolite_makeDistressCall: "[oolite-comms-makeDistressCall]"
|
||||
}
|
||||
},
|
||||
@ -6260,7 +6578,7 @@ this.startUp = function()
|
||||
},
|
||||
assassin: {
|
||||
generic: {
|
||||
oolite_beginningAttack: "[oolite-comms-contractAttack]",
|
||||
oolite_beginningFight: "[oolite-comms-contractAttack]",
|
||||
}
|
||||
},
|
||||
_thargoid: {
|
||||
@ -6270,36 +6588,6 @@ this.startUp = function()
|
||||
}
|
||||
});
|
||||
|
||||
/* These are temporary for testing. Remove before release... */
|
||||
this.$commsSettings.generic.generic.oolite_continuingAttack = "I've got the [oolite_entityClass]";
|
||||
this.$commsSettings.police.generic.oolite_continuingAttack = function(k,p) { return "Targeting the "+p.oolite_entityName+". Cover me."; };
|
||||
this.$commsSettings.generic.generic.oolite_beginningAttack = "Die, [oolite_entityName]!";
|
||||
this.$commsSettings.police.generic.oolite_beginningAttack = function(k,p) { return "Leave the system or die, "+p.oolite_entityName+"!"; };
|
||||
this.$commsSettings.generic.generic.oolite_beginningAttackInanimate = "I've got you this time, [oolite_entityName]!";
|
||||
this.$commsSettings.generic.generic.oolite_hitTarget = "Take that, scum.";
|
||||
this.$commsSettings.generic.generic.oolite_killedTarget = "[oolite_entityClass] down!";
|
||||
this.$commsSettings.pirate.generic.oolite_hitTarget = "Where's the cargo, [oolite_entityName]?";
|
||||
this.$commsSettings.generic.generic.oolite_friendlyFire = "Watch where you're shooting, [oolite_entityName]!";
|
||||
this.$commsSettings.generic.generic.oolite_eject = "Condition critical! I'm bailing out...";
|
||||
this.$commsSettings.generic.generic.oolite_thargoidAttack = "%N! A thargoid warship!";
|
||||
this.$commsSettings.generic.generic.oolite_firedMissile = "Dodge this for a bit, [oolite_entityName].";
|
||||
this.$commsSettings.generic.generic.oolite_incomingMissile = "Help! Help! Missile!";
|
||||
this.$commsSettings.generic.generic.oolite_startHelping = "Hold on! I'm on them.";
|
||||
this.$commsSettings.generic.generic.oolite_switchTarget = "I'll get the [oolite_entityClass].";
|
||||
this.$commsSettings.generic.generic.oolite_newAssailant = "Where did that [oolite_entityClass] come from?";
|
||||
this.$commsSettings.generic.generic.oolite_startFleeing = "I can't take this much longer! I'm getting out of here.";
|
||||
this.$commsSettings.generic.generic.oolite_continueFleeing = "I'm still not clear. Someone please help!";
|
||||
this.$commsSettings.generic.generic.oolite_groupIsOutnumbered = "Please, let us go!";
|
||||
this.$commsSettings.pirate.generic.oolite_groupIsOutnumbered = "Argh! They're tougher than they looked. Break off the attack!"
|
||||
this.$commsSettings.generic.generic.oolite_dockingWait = "Bored now.";
|
||||
this.$commsSettings.generic.generic.oolite_dockEscorts = "I've got clearance now. Begin your own docking sequences when ready.";
|
||||
this.$commsSettings.generic.generic.oolite_mining = "Maybe this one has gems.";
|
||||
this.$commsSettings.generic.generic.oolite_quiriumCascade = "Cascade! %N! Get out of here!";
|
||||
this.$commsSettings.pirate.generic.oolite_scoopedCargo = "Ah, [oolite_goodsDescription]. We should have shaken them down for more.";
|
||||
this.$commsSettings.generic.generic.oolite_agreeingToDumpCargo = "Have it! But please let us go!";
|
||||
this.$commsSettings.generic.generic.oolite_engageWitchspaceDrive = "Anyone want a free ride out of the system?";
|
||||
this.$commsSettings.generic.generic.oolite_engageWitchspaceDriveGroup = "All ships, form up for witchspace jump.";
|
||||
this.$commsSettings.generic.generic.oolite_engageWitchspaceDriveFlee = "There's too many of them! Get out of here!";
|
||||
}
|
||||
|
||||
|
||||
@ -6361,7 +6649,7 @@ this._getCommunication = function(role, personality, key)
|
||||
/* Returns the available personalities for a particular role */
|
||||
this._getCommunicationPersonalities = function(role)
|
||||
{
|
||||
if (!this.$commsSettings[role])
|
||||
if (!this.$commsSettings || !this.$commsSettings[role])
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
@ -36,7 +36,6 @@ MA 02110-1301, USA.
|
||||
this.name = "oolite-registership";
|
||||
this.author = "cim";
|
||||
this.copyright = "© 2008-2013 the Oolite team.";
|
||||
this.version = "1.79";
|
||||
|
||||
this.startUp = this.shipWillExitWitchspace = function()
|
||||
{
|
||||
|
@ -36,7 +36,6 @@ MA 02110-1301, USA.
|
||||
this.name = "oolite-thargoid-plans";
|
||||
this.author = "Eric Walch";
|
||||
this.copyright = "© 2008-2013 the Oolite team.";
|
||||
this.version = "1.79";
|
||||
|
||||
|
||||
this._cleanUp = function ()
|
||||
|
@ -36,7 +36,6 @@ MA 02110-1301, USA.
|
||||
this.name = "oolite-thargoid-warship";
|
||||
this.author = "Jens Ayton";
|
||||
this.copyright = "© 2008-2013 the Oolite team.";
|
||||
this.version = "1.79";
|
||||
|
||||
|
||||
this.shipDied = function ()
|
||||
|
@ -37,7 +37,6 @@ this.name = "oolite-trumbles";
|
||||
this.author = "Jens Ayton";
|
||||
this.copyright = "© 2008-2013 the Oolite team.";
|
||||
this.description = "Random offers of trumbles.";
|
||||
this.version = "1.79";
|
||||
|
||||
|
||||
(function () {
|
||||
|
@ -35,7 +35,6 @@ MA 02110-1301, USA.
|
||||
this.name = "Tutorial Controls";
|
||||
this.author = "cim";
|
||||
this.copyright = "© 2008-2013 the Oolite team.";
|
||||
this.version = "1.79";
|
||||
|
||||
this.$mode = 0;
|
||||
|
||||
|
@ -36,7 +36,6 @@ MA 02110-1301, USA.
|
||||
this.name = "oolite-tutorial-fighter";
|
||||
this.author = "cim";
|
||||
this.copyright = "© 2013-2013 the Oolite team.";
|
||||
this.version = "1.79";
|
||||
|
||||
|
||||
this.shipDied = function (killer)
|
||||
|
@ -35,7 +35,6 @@ MA 02110-1301, USA.
|
||||
this.name = "oolite-tutorial";
|
||||
this.author = "cim";
|
||||
this.copyright = "© 2008-2013 the Oolite team.";
|
||||
this.version = "1.79";
|
||||
|
||||
this.startUp = function()
|
||||
{
|
||||
@ -461,6 +460,7 @@ this.startUp = function()
|
||||
{
|
||||
player.ship.showHUDSelector(this.$HUDSelectors[i]);
|
||||
}
|
||||
player.ship.resetScannerZoom();
|
||||
}
|
||||
|
||||
this._hideHUDItems = function()
|
||||
@ -1177,7 +1177,7 @@ this.startUp = function()
|
||||
},5,5);
|
||||
|
||||
|
||||
var target = this._addShips("oolite-tutorial-fighter",1,player.ship.position,10E3);
|
||||
var target = this._addShips("oolite-tutorial-fighter-wave1",1,player.ship.position,10E3);
|
||||
target[0].forwardWeapon = "EQ_WEAPON_NONE";
|
||||
target[0].accuracy = 5;
|
||||
}
|
||||
@ -1185,17 +1185,17 @@ this.startUp = function()
|
||||
this.__stage6sub3 = function()
|
||||
{
|
||||
this._setInstructions("oolite-tutorial-6-3");
|
||||
var target = this._addShips("oolite-tutorial-fighter",1,player.ship.position,10E3);
|
||||
target[0].accuracy = 0;
|
||||
var target = this._addShips("oolite-tutorial-fighter-wave1",1,player.ship.position,10E3);
|
||||
target[0].accuracy = -5;
|
||||
this._stage6scorer();
|
||||
}
|
||||
|
||||
this.__stage6sub4 = function()
|
||||
{
|
||||
this._setInstructions("oolite-tutorial-6-4");
|
||||
var target = this._addShips("oolite-tutorial-fighter",2,player.ship.position,10E3);
|
||||
target[0].accuracy = 0;
|
||||
target[1].accuracy = 0;
|
||||
var target = this._addShips("oolite-tutorial-fighter-wave1",2,player.ship.position,10E3);
|
||||
target[0].accuracy = -5;
|
||||
target[1].accuracy = -5;
|
||||
this._stage6scorer();
|
||||
}
|
||||
|
||||
@ -1543,49 +1543,54 @@ this.startUp = function()
|
||||
|
||||
this.__stage9sub7 = function()
|
||||
{
|
||||
this._resetShips();
|
||||
this._setInstructions("oolite-tutorial-9-7");
|
||||
this._showHUDItem("drawAltitudeBar:");
|
||||
}
|
||||
|
||||
this.__stage9sub8 = function()
|
||||
{
|
||||
if (system.mainPlanet.position.distanceTo(player.ship) > system.mainPlanet.radius * 3)
|
||||
{
|
||||
player.consoleMessage(expandMissionText("oolite-tutorial-9-7-toofar"));
|
||||
--this.$tutorialSubstage;
|
||||
}
|
||||
else
|
||||
{
|
||||
this._setInstructions("oolite-tutorial-9-8");
|
||||
this._showHUDItem("drawCompass:");
|
||||
}
|
||||
this._resetShips();
|
||||
this._setInstructions("oolite-tutorial-9-8");
|
||||
this._showHUDItem("drawAltitudeBar:");
|
||||
}
|
||||
|
||||
this.__stage9sub9 = function()
|
||||
{
|
||||
this._setInstructions("oolite-tutorial-9-9");
|
||||
}
|
||||
|
||||
this.__stage9sub10 = function()
|
||||
{
|
||||
if (system.mainStation.position.distanceTo(player.ship) > 51200)
|
||||
if (system.mainPlanet.position.distanceTo(player.ship) > system.mainPlanet.radius * 3)
|
||||
{
|
||||
player.consoleMessage(expandMissionText("oolite-tutorial-9-9-toofar"));
|
||||
player.consoleMessage(expandMissionText("oolite-tutorial-9-8-toofar"));
|
||||
--this.$tutorialSubstage;
|
||||
}
|
||||
else
|
||||
{
|
||||
this._setInstructions("oolite-tutorial-9-10");
|
||||
this._setInstructions("oolite-tutorial-9-9");
|
||||
this._showHUDItem("drawCompass:");
|
||||
}
|
||||
}
|
||||
|
||||
this.__stage9sub10 = function()
|
||||
{
|
||||
this._setInstructions("oolite-tutorial-9-10");
|
||||
}
|
||||
|
||||
this.__stage9sub11 = function()
|
||||
{
|
||||
if (system.mainStation.position.distanceTo(player.ship) > 51200)
|
||||
{
|
||||
player.consoleMessage(expandMissionText("oolite-tutorial-9-10-toofar"));
|
||||
--this.$tutorialSubstage;
|
||||
}
|
||||
else
|
||||
{
|
||||
this._setInstructions("oolite-tutorial-9-11");
|
||||
this._showHUDItem("drawAegis");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
this.__stage9sub11 = function()
|
||||
this.__stage9sub12 = function()
|
||||
{
|
||||
this.$advanceByEquipment = false;
|
||||
this._setInstructions("oolite-tutorial-9-11");
|
||||
this._setInstructions("oolite-tutorial-9-12");
|
||||
}
|
||||
|
||||
this._endTutorial = function()
|
||||
|
@ -164,7 +164,6 @@ vec4 CalcSpecularLight(in vec3 lightVector, in vec3 eyeVector, in float exponent
|
||||
}
|
||||
|
||||
|
||||
#ifndef OO_REDUCED_COMPLEXITY
|
||||
uniform float uHullHeatLevel;
|
||||
uniform float uTime;
|
||||
|
||||
@ -206,7 +205,6 @@ vec4 TemperatureGlow(in float level)
|
||||
|
||||
return result;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
void main(void)
|
||||
@ -317,12 +315,10 @@ void main(void)
|
||||
totalColor += specularColor * specularLight;
|
||||
#endif
|
||||
|
||||
#ifndef OO_REDUCED_COMPLEXITY
|
||||
// Heat glow
|
||||
float hullHeat = max(uHullHeatLevel - 0.5, 0.0) * 2.0;
|
||||
hullHeat = Pulse(hullHeat * hullHeat, 0.1);
|
||||
totalColor += TemperatureGlow(hullHeat);
|
||||
#endif
|
||||
|
||||
gl_FragColor = totalColor;
|
||||
}
|
||||
|
@ -392,6 +392,16 @@
|
||||
);
|
||||
};
|
||||
$aiFileName =
|
||||
{
|
||||
type = "oneOf";
|
||||
options =
|
||||
(
|
||||
"$aiFileNamePlist",
|
||||
"$aiFileNameJs"
|
||||
);
|
||||
key = "aiFileName";
|
||||
};
|
||||
$aiFileNamePlist =
|
||||
{
|
||||
type = "delegatedType";
|
||||
baseType =
|
||||
@ -400,7 +410,16 @@
|
||||
filter = "lowerCase";
|
||||
requiredSuffix = ".plist";
|
||||
};
|
||||
key = "aiFileName";
|
||||
};
|
||||
$aiFileNameJs =
|
||||
{
|
||||
type = "delegatedType";
|
||||
baseType =
|
||||
{
|
||||
type = "string";
|
||||
filter = "lowerCase";
|
||||
requiredSuffix = ".js";
|
||||
};
|
||||
};
|
||||
$shaderFileName =
|
||||
{
|
||||
|
@ -118,7 +118,7 @@
|
||||
0867D690FE84028FC02AAC07 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0500;
|
||||
LastUpgradeCheck = 0510;
|
||||
};
|
||||
buildConfigurationList = 730F235809181A3A00AB638C /* Build configuration list for PBXProject "Ogg" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
|
@ -330,7 +330,7 @@
|
||||
0867D690FE84028FC02AAC07 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0500;
|
||||
LastUpgradeCheck = 0510;
|
||||
};
|
||||
buildConfigurationList = 730F23F3091827B200AB638C /* Build configuration list for PBXProject "Vorbis" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
|
@ -1763,7 +1763,7 @@
|
||||
08FB7793FE84155DC02AAC07 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0500;
|
||||
LastUpgradeCheck = 0510;
|
||||
};
|
||||
buildConfigurationList = 1DEB91EF08733DB70010E9CD /* Build configuration list for PBXProject "libjs" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
|
@ -154,7 +154,7 @@
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
BuildIndependentTargetsInParallel = YES;
|
||||
LastUpgradeCheck = 0500;
|
||||
LastUpgradeCheck = 0510;
|
||||
ORGANIZATIONNAME = "";
|
||||
};
|
||||
buildConfigurationList = 08B31CB008FE63D70038D42F /* Build configuration list for PBXProject "libpng" */;
|
||||
|
2
deps/Linux-deps
vendored
2
deps/Linux-deps
vendored
@ -1 +1 @@
|
||||
Subproject commit fd8dcaa0e4dc532ad07cc8eb2df802ed70ec0ddf
|
||||
Subproject commit 341a3d978bec1c72d686bd8c0c2099e36a92936f
|
@ -18,7 +18,7 @@ Packager: Konstantinos Sykas <ksykas@gmail.com>
|
||||
Summary: Oolite is an Elite tribute game that is easily expandable.
|
||||
URL: http://oolite.aegidian.org
|
||||
License: GNU GPL version 2
|
||||
SoftwareVersion: 1.79
|
||||
SoftwareVersion: 1.81
|
||||
AutopackageTarget: 1.4
|
||||
# Use 'CPUArchitectures: x86_64' if 'uname -m' gives x86_64
|
||||
CPUArchitectures: x86
|
||||
|
@ -18,7 +18,7 @@ Packager: Konstantinos Sykas <ksykas@gmail.com>
|
||||
Summary: Oolite is an Elite tribute game that is easily expandable.
|
||||
URL: http://oolite.aegidian.org
|
||||
License: GNU GPL version 2
|
||||
SoftwareVersion: 1.79
|
||||
SoftwareVersion: 1.81
|
||||
AutopackageTarget: 1.4
|
||||
# Use 'CPUArchitectures: x86' if 'uname -m' gives i?86 (i.e. consider '?' as a wildcard)
|
||||
CPUArchitectures: x86_64
|
||||
|
@ -8,6 +8,8 @@
|
||||
# adds a header defining the environment variables used below.
|
||||
#
|
||||
# 2011-04-03: Updated to facilitate rsync repository setup for oolite-update script
|
||||
# 2014-06-20: Enhanced error code generation to facilitate error recognition
|
||||
# Updated to remove ManagedAddOns folder tree
|
||||
#
|
||||
|
||||
|
||||
@ -97,7 +99,7 @@ rm -rf AddOns/Basic-debug.oxp/ 1> /dev/null 2> /dev/null
|
||||
rmdir AddOns/ 1> /dev/null 2> /dev/null
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
rm_rc=$(($rm_rc+1))
|
||||
rm_rc=$(($rm_rc+2))
|
||||
fi
|
||||
|
||||
# Only remove known files from oolite.app/ and
|
||||
@ -110,7 +112,7 @@ rm -rf oolite.app/Resources/ 1> /dev/null 2> /dev/null
|
||||
rmdir oolite.app/ 1> /dev/null 2> /dev/null
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
rm_rc=$(($rm_rc+1))
|
||||
rm_rc=$(($rm_rc+4))
|
||||
fi
|
||||
|
||||
# Remove uninstall script
|
||||
@ -120,7 +122,19 @@ rm -f ${SELF_FILENAME}
|
||||
rmdir ${OOLITE_ROOT}/ 1> /dev/null 2> /dev/null
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
rm_rc=$(($rm_rc+1))
|
||||
rm_rc=$(($rm_rc+8))
|
||||
fi
|
||||
|
||||
# Remove Oolite/ManagedAddOns folder if it is empty
|
||||
rmdir ~/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/ 1> /dev/null 2> /dev/null
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
rm_rc=$(($rm_rc+16))
|
||||
fi
|
||||
rmdir ~/GNUstep/Library/ApplicationSupport/Oolite/ 1> /dev/null 2> /dev/null
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
rm_rc=$(($rm_rc+32))
|
||||
fi
|
||||
|
||||
echo "Done."
|
||||
@ -129,6 +143,7 @@ echo "Done."
|
||||
# Finished uninstall!
|
||||
if [ $rm_rc -ne 0 ]
|
||||
then
|
||||
# TO DO: Issue a message showing which folders could not be removed
|
||||
echo "Warning $rm_rc: Some folders could not be removed."
|
||||
fi
|
||||
|
||||
|
@ -285,7 +285,17 @@ RMDir /r "$SMPROGRAMS\Oolite"
|
||||
|
||||
; Remove Package files (but leave any generated content behind)
|
||||
RMDir /r "$INSTDIR\oolite.app\Contents"
|
||||
|
||||
; Managed OXZs, if present, must survive the uninstall
|
||||
IfFileExists "$INSTDIR\oolite.app\GNUstep\Library\ApplicationSupport\Oolite\ManagedAddOns\*.oxz" NoRemoveOXZFolder RemoveOXZFolder
|
||||
NoRemoveOXZFolder:
|
||||
RMDir /r "$INSTDIR\oolite.app\GNUstep\Defaults"
|
||||
RMDir /r "$INSTDIR\oolite.app\GNUstep\Library\Caches"
|
||||
goto EndOfOXZFolderCheck
|
||||
RemoveOXZFolder:
|
||||
RMDir /r "$INSTDIR\oolite.app\GNUstep"
|
||||
EndOfOXZFolderCheck:
|
||||
|
||||
RMDir /r "$INSTDIR\oolite.app\oolite.app"
|
||||
RMDir /r "$INSTDIR\oolite.app\Resources"
|
||||
RMDir /r "$INSTDIR\oolite.app\Logs"
|
||||
|
@ -80,7 +80,7 @@
|
||||
<key>CFBundleSignature</key>
|
||||
<string>Ool8</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.79</string>
|
||||
<string>1.81</string>
|
||||
<key>LSApplicationCategoryType</key>
|
||||
<string>public.app-category.games</string>
|
||||
<key>LSMinimumSystemVersionByArchitecture</key>
|
||||
|
@ -70,14 +70,25 @@ enum GameViewKeys
|
||||
gvNumberKey6,
|
||||
gvNumberKey7,
|
||||
gvNumberKey8,
|
||||
gvNumberKey9
|
||||
gvNumberKey9,
|
||||
gvNumberPadKey0 = 310,
|
||||
gvNumberPadKey1,
|
||||
gvNumberPadKey2,
|
||||
gvNumberPadKey3,
|
||||
gvNumberPadKey4,
|
||||
gvNumberPadKey5,
|
||||
gvNumberPadKey6,
|
||||
gvNumberPadKey7,
|
||||
gvNumberPadKey8,
|
||||
gvNumberPadKey9 //319
|
||||
};
|
||||
|
||||
enum StringInput
|
||||
{
|
||||
gvStringInputNo = 0,
|
||||
gvStringInputAlpha = 1,
|
||||
gvStringInputAll = 2
|
||||
gvStringInputLoadSave = 2,
|
||||
gvStringInputAll = 3
|
||||
};
|
||||
|
||||
extern int debug;
|
||||
|
@ -645,14 +645,20 @@ FAIL:
|
||||
}
|
||||
}
|
||||
|
||||
// full input for load-save screen
|
||||
if (allowingStringInput == gvStringInputAll)
|
||||
// full input for load-save screen or 'all' input
|
||||
if (allowingStringInput >= gvStringInputLoadSave)
|
||||
{
|
||||
// except '/' for loadsave
|
||||
if (isprint(key) && key != '/')
|
||||
{
|
||||
isAlphabetKeyDown = YES;
|
||||
[typedString appendFormat:@"%c", key];
|
||||
}
|
||||
else if (key == '/' && allowingStringInput == gvStringInputAll)
|
||||
{
|
||||
isAlphabetKeyDown = YES;
|
||||
[typedString appendFormat:@"%c", key];
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
OOLITE_VERSION=1.79
|
||||
OOLITE_VERSION=1.81
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user