Back to Index Page generated: Dec 20, 2024, 7:22:09 AM

Expansion Deep Space Dredger

Content

Warnings

  1. Found XML equipment list
  2. No version in dependency reference to oolite.oxp.Thargoid.Bigships:null
  3. No version in dependency reference to oolite.oxp.Norby.Towbar:null
  4. Optional Expansions mismatch between OXP Manifest and Expansion Manager at character position 0062 (DIGIT ZERO vs LATIN SMALL LETTER N)

Manifest

from Expansion Manager's OXP list from Expansion Manifest
Description Dredgers operate mainly in deep space as mobile shipyards and markets, scooping up wreckage, hydrogen and space dust. Salvage drones are offered to a clean player to launch as a missile to derelict ships. Super Dredgers can launch big ships also. Dredgers operate mainly in deep space as mobile shipyards and markets, scooping up wreckage, hydrogen and space dust. Salvage drones are offered to a clean player to launch as a missile to derelict ships. Super Dredgers can launch big ships also.
Identifier oolite.oxp.EricWalch.DeepSpaceDredger oolite.oxp.EricWalch.DeepSpaceDredger
Title Deep Space Dredger Deep Space Dredger
Category Dockables Dockables
Author Captain Berf, Eric Walch, Little Bear, Norby, Sabre, phkb, spara Captain Berf, Eric Walch, Little Bear, Norby, Sabre, phkb, spara
Version 2.4.10 2.4.10
Tags
Required Oolite Version
Maximum Oolite Version
Required Expansions
Optional Expansions
  • oolite.oxp.Thargoid.Bigships:0
  • oolite.oxp.Norby.Towbar:0
  • oolite.oxp.Thargoid.Bigships:
  • oolite.oxp.Norby.Towbar:
  • Conflict Expansions
    Information URL http://wiki.alioth.net/index.php/Deep_Space_Dredger n/a
    Download URL https://wiki.alioth.net/img_auth.php/9/9a/DeepSpaceDredger.oxz n/a
    License CC-BY-NC-SA 3.0 CC-BY-NC-SA 3.0
    File Size n/a
    Upload date 1610873387

    Documentation

    Also read http://wiki.alioth.net/index.php/Deep%20Space%20Dredger

    Deep Space Dredger ReadMe.old.rtf

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE abiword PUBLIC "-//ABISOURCE//DTD AWML 1.0 Strict//EN" "http://www.abisource.com/awml.dtd">
    <abiword template="false" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:math="http://www.w3.org/1998/Math/MathML" xid-max="39" xmlns:dc="http://purl.org/dc/elements/1.1/" fileformat="1.1" xmlns:svg="http://www.w3.org/2000/svg" xmlns:awml="http://www.abisource.com/awml.dtd" xmlns="http://www.abisource.com/awml.dtd" xmlns:xlink="http://www.w3.org/1999/xlink" version="2.8.6" xml:space="preserve" props="dom-dir:ltr; document-footnote-restart-section:0; document-endnote-type:numeric; document-endnote-place-enddoc:1; document-endnote-initial:1; lang:hu-HU; document-endnote-restart-section:0; document-footnote-restart-page:0; document-footnote-type:numeric; document-footnote-initial:1; document-endnote-place-endsection:0">
    <!-- ======================================================================== -->
    <!-- This file is an AbiWord document.                                        -->
    <!-- AbiWord is a free, Open Source word processor.                           -->
    <!-- More information about AbiWord is available at http://www.abisource.com/ -->
    <!-- You should not edit this file by hand.                                   -->
    <!-- ======================================================================== -->
    
    <metadata>
    <m key="dc.format">application/x-abiword</m>
    <m key="abiword.generator">AbiWord</m>
    </metadata>
    <styles>
    <s type="C" name="Reference" props="font-size:10pt"/>
    </styles>
    <pagesize pagetype="Custom" orientation="portrait" width="209.902778" height="297.021250" units="mm" page-scale="1.000000"/>
    <section xid="2" props="page-margin-right:1.000000in; columns:1; page-margin-header:0.500000in; page-margin-left:1.000000in; column-gap:0.000000in; page-margin-footer:0.500000in; page-margin-top:1.000000in; page-margin-bottom:1.000000in">
    <p xid="3" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:25pt; color:000000; text-decoration:none; text-position:normal; font-weight:bold; font-style:normal">Deep Space Dredger</c></p>
    <p xid="4" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:12pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal">All ships by Sabre. Scripting by Eric Walch. Messages by Little Bear. Textures by Captain Berf.</c></p>
    <p xid="5" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:14pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal">This OXP for Oolite adds 4 Space Dredgers, a Sabre fighter, a Fury fighter, a Dredger shuttle, a Dredger drone and a Dredger trader to the Ooniverse.</c></p>
    <p xid="6" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:14pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal">Space Dredgers operate mainly in deep space, scooping up wreckage, hydrogen and space dust for later processing. Space Dredgers are occasionally encountered in the border of the space lanes. Commanders choosing to dock with a Dredger can take advantage of its well equipped shipyard or the chance to trade.</c></p>
    <p xid="7" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:14pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal">Attacking a Dredger is unwise, as it is well defended by a squadron of Sabre fighters. The Dredger is not available to the player, although second hand Sabre fighters and Dredger traders are occasionally available on the open market.</c></p>
    <p xid="8" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:14pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal">Version 2.4.6 (Needs Oolite 1.74 or higher)</c></p>
    <p xid="9" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:16pt; color:000000; text-decoration:none; text-position:normal; font-weight:bold; font-style:normal">Salvaging</c></p>
    <p xid="10" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:14pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal">With version 2.0 the dredgers have stepped into the salvage business. In level 9 and higher systems special salvage drones are offered to a clean player. These drones are released as missiles. When fired at a derelict ship, it tries to penetrate the outer hull and will connect to the main computer. In 90% of the cases, an abandoned ship is still intact and the drone will try to contact a nearby dredger. When a dredger is found, the drone will instruct the auto pilot to fly to the dredger and dock with it. Pay-out is based on the ships mass and cargo. Small ships are probably not worth salvaging but big ships give a high pay-out. Just be aware that the drone can only handle ships that fit through the docking slid of a dredger. It can't control a really big ship, but an anaconda is salvageable.</c></p>
    <p xid="11" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:14pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal">The derelict may find pirates on his way that try to destroy the ship to obtain its cargo. A ship flying on autopilot can't defend itself, so it is up to the salvager to protect the derelicts voyage. When the derelict ship docks save with a dredger an amount of money is transferred to the salvager, based on the ships mass and the cargo load.</c></p>
    <p xid="12" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:14pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal">Just be aware that the dredger ships are normally not flying in the space-lane but come from deep space for the rescue. This makes them hard to find but from the starting point of a derelict ship they should be just visible in the distant sky.</c></p>
    <p xid="13" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:14pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal">When you have troubles finding a deep space dredger: There will always be one in the system you are in when loading a saved game. Just keep flying long enough into the darkness of deep space. After this first system they have a 50% change to be somewhere in the deep space of systems with a technical level of 9 or higher. And last but not least: they can be found in any system when there is a salvaged derelict ship.</c></p>
    <p xid="14" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:16pt; color:000000; text-decoration:none; text-position:normal; font-weight:bold; font-style:normal">New Textures</c></p>
    <p xid="15" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:14pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal">Starting with version 2.3, all the ships got a new texture by Captain Berf. Textures are in style with the original ships from Sabre but with more detail and in a higher resolution. In version 2.4 these textures are complemented with "relief maps" to add surface structure for graphic cards that support shaders.</c></p>
    <p xid="16" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:16pt; color:000000; text-decoration:none; text-position:normal; font-weight:bold; font-style:normal">BigShips.oxp</c></p>
    <p xid="17" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:14pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal">Deep Space Dredger supports the bigShips.oxp. When bigShips.oxp is installed you will see the dredgers more often in the normal space lanes. </c></p>
    <p xid="18" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:14pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal">--------</c></p>
    <p xid="19" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:14pt; color:000000; text-decoration:none; text-position:normal; font-weight:bold; font-style:normal">History</c></p>
    <p xid="1" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:14pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal; lang:hu-HU">Version 2.4.6 Set </c><c>market_capacity = 255</c></p>
    <p xid="20" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:14pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal">Version 2.4.6 Introduced frame-callback for the dredger doors for a smoother movement than with timers when used with 1.75.1+.</c></p>
    <p xid="21" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:14pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal">Version 2.4.5 Raised minimum Oolite to 1.74</c></p>
    <p xid="22" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:14pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal">Version 2.4.4 Added custom escort positions that will start working with Oolite 1.75 upwards.</c></p>
    <p xid="23" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:14pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal">Version 2.4.3 fixed a casing bug in JS that will give errors after Oolite 1.74.2.</c></p>
    <p xid="24" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:14pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal">Version 2.4.2 added smoothing groups to the dredger ships.</c></p>
    <p xid="25" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:14pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal">Version 2.4.1 redefined the npc only missiles to work correct with 1.74. Added normal maps for the turret.</c></p>
    <p xid="26" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:14pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal">Version 2.4 All ships have now normal maps (By Captain Berf). (Normal maps needs a computer with shader capability to see the effect)</c></p>
    <p xid="27" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:14pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal">Version 2.3 All ships have new textures (By Captain Berf). The two biggest ships now also have bigger docking bays. Fixed bugs in the meshes of almost all ships. Raised minimum Oolite version to 1.73.</c></p>
    <p xid="28" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:14pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal">Version 2.2.7 Fixed a serious bug introduced in 2.2.6 that that could give huge salvage awards.</c></p>
    <p xid="29" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:14pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal">Version 2.2.6 Removed all predefined derelicts from shipData. Now all traders from any installed oxp can become a derelict. More texture files renaming to unique names.</c></p>
    <p xid="30" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:14pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal">Version 2.2.5 Fixed the commodity definition because it was not used. It will now work for the ships added by this oxp. Renamed texture files to more unique names.</c></p>
    <p xid="31" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:14pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal">Version 2.2.4 Fixed the commodity definition for gold/platinum/gems. Was always defined in Tons. (This bug can leads to crashing while docking at a dredger since 1.73)</c></p>
    <p xid="32" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:14pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal">Version 2.2.3 Raised maximum salvageble weight from 500 000 to 1 000 000 (Hamadryad = 985 000). Made it work for Oolite 1.74.</c></p>
    <p xid="33" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:14pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal">Version 2.2.2 Recognises now bigShips.oxp.  When present, that oxp will control part of the ship additions in the spacelane.</c></p>
    <p xid="34" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:14pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal">Version 2.2 Added Oolite 1.72 compatibility.</c></p>
    <p xid="35" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:14pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal">Version 2.0 Added 3 new Dredger ships from the hand of Sabre with new scripting by Eric Walch and Little Bear.</c></p>
    <p xid="36" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:14pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal">Version 1.2 Bug fix in the docking routine.</c></p>
    <p xid="37" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:14pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal">Version 1.1 Addition by Eric Walch:</c></p>
    <p xid="38" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:14pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal">Added a JavaScript for Oolite 1.71+ that generates encounters with these Dredgers in deep space. For debugging purposes there is always one added in the first system after a restart. When flying far enough in deep space there is a guaranteed encounter in that system.</c></p>
    <p xid="39" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; dom-dir:ltr; margin-bottom:0.2361in; line-height:1.416667; text-align:left; margin-right:0.0000in"><c props="font-family:Verdana; font-size:14pt; color:000000; text-decoration:none; text-position:normal; font-weight:normal; font-style:normal">Version 1.0 Original by Sabre</c></p>
    </section>
    </abiword>
    

    Deep Space Dredger ReadMe.rtf

    {\rtf1\ansi\deff3\adeflang1025
    {\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman;}{\f1\froman\fprq2\fcharset2 Symbol;}{\f2\fswiss\fprq2\fcharset0 Arial;}{\f3\froman\fprq2\fcharset0 Liberation Serif{\*\falt Times New Roman};}{\f4\fswiss\fprq2\fcharset0 Liberation Sans{\*\falt Arial};}{\f5\froman\fprq2\fcharset0 Verdana;}{\f6\froman\fprq2\fcharset0 Liberation Sans{\*\falt Arial};}{\f7\froman\fprq2\fcharset0 Courier New;}{\f8\fnil\fprq2\fcharset0 Noto Sans CJK JP DemiLight;}{\f9\fnil\fprq2\fcharset0 Liberation Sans{\*\falt Arial};}{\f10\fnil\fprq2\fcharset0 FreeSans;}{\f11\fswiss\fprq0\fcharset128 FreeSans;}{\f12\fnil\fprq2\fcharset0 Dingbats;}}
    {\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}
    {\stylesheet{\s0\snext0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038 Normal;}
    {\s1\sbasedon18\snext1\ql\widctlpar\sb440\sa60\keepn\ltrpar\b\dbch\af8\dbch\af10\afs28\loch\f4\fs34 C\u237\'edmsor 1;}
    {\s2\sbasedon18\snext2\ql\widctlpar\sb440\sa60\keepn\ltrpar\b\dbch\af8\dbch\af10\afs28\loch\f4\fs28 C\u237\'edmsor 2;}
    {\s3\sbasedon18\snext3\ql\widctlpar\sb440\sa60\keepn\ltrpar\b\dbch\af8\dbch\af10\afs28\loch\f4\fs24 C\u237\'edmsor 3;}
    {\s4\sbasedon18\snext4\ql\widctlpar\sb440\sa60\keepn\ltrpar\b\dbch\af8\dbch\af10\afs28\loch\f4\fs24 C\u237\'edmsor 4;}
    {\*\cs15\snext15 V\u233\'e9gjegyzet-karakterek;}
    {\*\cs16\snext16\fs20 Reference;}
    {\*\cs17\snext17\fs20 Footnote;}
    {\s18\sbasedon0\snext19\ql\widctlpar\sb240\sa120\keepn\ltrpar\dbch\af8\dbch\af10\afs28\loch\f4\fs28 C\u237\'edmsor;}
    {\s19\sbasedon0\snext19\sl288\slmult1\ql\widctlpar\sb0\sa140\ltrpar\dbch\af9\dbch\af12\afs24\loch\f3\fs24 Sz\u246\'f6vegt\u246\'f6rzs;}
    {\s20\sbasedon19\snext20\sl288\slmult1\ql\widctlpar\sb0\sa140\ltrpar\dbch\af9\dbch\af11\afs24\loch\f3\fs24 Lista;}
    {\s21\sbasedon0\snext21\ql\widctlpar\sb120\sa120\noline\ltrpar\i\dbch\af9\dbch\af11\afs24\ai\loch\f3\fs24 Felirat;}
    {\s22\sbasedon0\snext22\ql\widctlpar\noline\ltrpar\dbch\af9\dbch\af11\afs24\loch\f3\fs24 T\u225\'e1rgymutat\u243\'f3;}
    {\s23\snext23\li720\ri0\lin720\rin0\fi-428\nowidctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af10\afs24\alang1081\loch\f3\hich\af3\fs24\lang1038 Contents 1;}
    {\s24\snext24\li1440\ri0\lin1440\rin0\fi-428\nowidctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af10\afs24\alang1081\loch\f3\hich\af3\fs24\lang1038 Contents 2;}
    {\s25\snext25\li2160\ri0\lin2160\rin0\fi-428\nowidctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af10\afs24\alang1081\loch\f3\hich\af3\fs24\lang1038 Contents 3;}
    {\s26\snext26\li2880\ri0\lin2880\rin0\fi-428\nowidctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af10\afs24\alang1081\loch\f3\hich\af3\fs24\lang1038 Contents 4;}
    {\s27\snext27\tx431\nowidctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af10\afs24\alang1081\loch\f3\hich\af3\fs24\lang1038 Numbered Heading 1;}
    {\s28\snext28\tx431\nowidctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af10\afs24\alang1081\loch\f3\hich\af3\fs24\lang1038 Numbered Heading 2;}
    {\s29\snext29\ql\widctlpar\li720\ri0\lin720\rin0\fi-428\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f5\fs24\lang1038 Square List;}
    {\s30\snext30\li720\ri0\lin720\rin0\fi-428\nowidctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af10\afs24\alang1081\loch\f3\hich\af3\fs24\lang1038 Lower Roman List;}
    {\s31\snext31\ql\widctlpar\li720\ri0\lin720\rin0\fi-428\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f5\fs24\lang1038 Diamond List;}
    {\s32\snext32\ql\widctlpar\li720\ri0\lin720\rin0\fi-428\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f5\fs24\lang1038 Numbered List;}
    {\s33\snext33\ql\widctlpar\li720\ri0\lin720\rin0\fi-428\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f5\fs24\lang1038 Triangle List;}
    {\s34\snext34\tx431\nowidctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af10\afs24\alang1081\loch\f3\hich\af3\fs24\lang1038 Numbered Heading 3;}
    {\s35\snext35\ql\widctlpar\li720\ri0\lin720\rin0\fi-428\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f5\fs24\lang1038 Dashed List;}
    {\s36\sbasedon32\snext36\ql\widctlpar\li720\ri0\lin720\rin0\fi-428\ltrpar\dbch\af9\dbch\af12\afs24\loch\f5\fs24 Upper Roman List;}
    {\s37\snext37\ql\widctlpar\li720\ri0\lin720\rin0\fi-428\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f5\fs24\lang1038 Heart List;}
    {\s38\snext38\qc\sb240\sa117\nowidctlpar\hyphpar0\b\cf0\kerning1\dbch\af8\langfe2052\dbch\af10\afs24\alang1081\loch\f6\hich\af6\fs32\lang1038 Contents Header;}
    {\s39\sbasedon32\snext39\ql\widctlpar\li720\ri0\lin720\rin0\fi-428\ltrpar\dbch\af9\dbch\af12\afs24\loch\f5\fs24 Upper Case List;}
    {\s40\snext40\ql\widctlpar\li720\ri0\lin720\rin0\fi-428\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f5\fs24\lang1038 Bullet List;}
    {\s41\snext41\ql\widctlpar\li720\ri0\lin720\rin0\fi-428\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f5\fs24\lang1038 Hand List;}
    {\s42\snext42\ql\widctlpar\li720\ri0\lin720\rin0\fi-428\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f5\fs24\lang1038 Tick List;}
    {\s43\sbasedon32\snext43\ql\widctlpar\li720\ri0\lin720\rin0\fi-428\ltrpar\dbch\af9\dbch\af12\afs24\loch\f5\fs24 Lower Case List;}
    {\s44\snext44\li1440\ri1440\lin1440\rin1440\fi0\sb0\sa117\nowidctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af10\afs24\alang1081\loch\f3\hich\af3\fs24\lang1038 Block Text;}
    {\s45\sbasedon27\snext45\tx1584 Section Heading;}
    {\s46\snext46\ql\widctlpar\li720\ri0\lin720\rin0\fi-428\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f5\fs24\lang1038 Implies List;}
    {\s47\snext47\ql\widctlpar\li720\ri0\lin720\rin0\fi-428\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f5\fs24\lang1038 Box List;}
    {\s48\snext48\ql\widctlpar\li720\ri0\lin720\rin0\fi-428\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f5\fs24\lang1038 Star List;}
    {\s49\snext49\nowidctlpar\hyphpar0\cf0\kerning1\dbch\af8\langfe2052\dbch\af10\afs24\alang1081\loch\f7\hich\af7\fs24\lang1038 Plain Text;}
    {\s50\sbasedon27\snext50\tx1584 Chapter Heading;}
    }{\*\generator LibreOffice/5.2.5.1$Linux_X86_64 LibreOffice_project/20m0$Build-1}{\info{\creatim\yr0\mo0\dy0\hr0\min0}{\revtim\yr2017\mo3\dy29\hr18\min48}{\printim\yr0\mo0\dy0\hr0\min0}}{\*\userprops}\deftab720\deftab720\deftab720\deftab720\deftab720\deftab720\deftab720\deftab720\deftab720\deftab720\deftab720\deftab720\deftab720\deftab720\deftab720\deftab720\deftab720\deftab720\deftab720\deftab720\deftab720
    \viewscale150
    {\*\pgdsctbl
    {\pgdsc0\pgdscuse451\pgwsxn11906\pghsxn16838\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1440\pgdscnxt0 Alap\u233\'e9rtelmezett st\u237\'edlus;}
    {\pgdsc1\pgdscuse451\pgndec\pgwsxn11906\pghsxn16838\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\pgdscnxt1 V\u233\'e9gjegyzet;}}
    \formshade{\*\pgdscno0}\paperh16838\paperw11906\margl1440\margr1440\margt1440\margb1440\sectd\sbknone\sectunlocked1\pgndec\pgwsxn11906\pghsxn16838\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1440\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnar
    {\*\ftnsep}\pgndec\pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\b\rtlch \ltrch\loch\fs50\lang1038\loch\f5\hich\af5
    Deep Space Dredger}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs24\lang1038\loch\f5\hich\af5
    All ships by Sabre. Scripting by Eric Walch. Messages by Little Bear. Textures by Captain Berf.}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    This OXP for Oolite adds 4 Space Dredgers, a Sabre fighter, a Fury fighter, a Dredger shuttle, a Dredger drone and a Dredger trader to the Ooniverse.}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    Space Dredgers operate mainly in deep space, scooping up wreckage, hydrogen and space dust for later processing. Space Dredgers are occasionally encountered in the border of the space lanes. Commanders choosing to dock with a Dredger can take advantage of its well equipped shipyard or the chance to trade.}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    Attacking a Dredger is unwise, as it is well defended by a squadron of Sabre fighters. The Dredger is not available to the player, although second hand Sabre fighters and Dredger traders are occasionally available on the open market.}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    Version 2.4.6 (Needs Oolite 1.74 or higher)}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl240\slmult1\ql\ltrpar{\b\rtlch \ltrch\loch\fs32\lang1038\loch\f5\hich\af5
    Salvaging}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    With version 2.0 the dredgers have stepped into the salvage business. In level 9 and higher systems special salvage drones are offered to a clean player. These drones are released as missiles. When fired at a derelict ship, it tries to penetrate the outer hull and will connect to the main computer. In 90% of the cases, an abandoned ship is still intact and the drone will try to contact a nearby dredger. When a dredger is found, the drone will instruct the auto pilot to fly to the dredger and dock with it. Pay-out is based on the ships mass and cargo. Small ships are probably not worth salvaging but big ships give a high pay-out. Just be aware that the drone can only handle ships that fit through the docking slid of a dredger. It can't control a really big ship, but an anaconda is salvageable.}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    The derelict may find pirates on his way that try to destroy the ship to obtain its cargo. A ship flying on autopilot can't defend itself, so it is up to the salvager to protect the derelicts voyage. When the derelict ship docks save with a dredger an amount of money is transferred to the salvager, based on the ships mass and the cargo load.}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    Just be aware that the dredger ships are normally not flying in the space-lane but come from deep space for the rescue. This makes them hard to find but from the starting point of a derelict ship they should be just visible in the distant sky.}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    When you have troubles finding a deep space dredger: There will always be one in the system you are in when loading a saved game. Just keep flying long enough into the darkness of deep space. After this first system they have a 50% change to be somewhere in the deep space of systems with a technical level of 9 or higher. And last but not least: they can be found in any system when there is a salvaged derelict ship.}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl240\slmult1\ql\ltrpar{\b\rtlch \ltrch\loch\fs32\lang1038\loch\f5\hich\af5
    New Textures}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    Starting with version 2.3, all the ships got a new texture by Captain Berf. Textures are in style with the original ships from Sabre but with more detail and in a higher resolution. In version 2.4 these textures are complemented with "relief maps" to add surface structure for graphic cards that support shaders.}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl240\slmult1\ql\ltrpar{\b\rtlch \ltrch\loch\fs32\lang1038\loch\f5\hich\af5
    BigShips.oxp}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    Deep Space Dredger supports the bigShips.oxp. When bigShips.oxp is installed you will see the dredgers more often in the normal space lanes. }
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    --------}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\b\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    History}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    Version 2.4.}{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    10}{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
     }{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    Fixed semicolon problems in Mac by hoqllnq.}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    Version 2.4.9 Subentity definitions converted to the new format by phkb.}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    Version 2.4.8 A fix in dredgersDockingAI reported by Welle242.}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    Version 2.4.7 SuperDredger get }{\rtlch \ltrch\loch\fs24\lang1038
    market_capacity = 255 }{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    to match to Superhub. Market definitions converted to js for Oolite 1.82 by spara. OXZ version packaged by Norby.}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    Version 2.4.6 Introduced frame-callback for the dredger doors for a smoother movement than with timers when used with 1.75.1+.}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    Version 2.4.5 Raised minimum Oolite to 1.74}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    Version 2.4.4 Added custom escort positions that will start working with Oolite 1.75 upwards.}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    Version 2.4.3 fixed a casing bug in JS that will give errors after Oolite 1.74.2.}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    Version 2.4.2 added smoothing groups to the dredger ships.}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    Version 2.4.1 redefined the npc only missiles to work correct with 1.74. Added normal maps for the turret.}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    Version 2.4 All ships have now normal maps (By Captain Berf). (Normal maps needs a computer with shader capability to see the effect)}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    Version 2.3 All ships have new textures (By Captain Berf). The two biggest ships now also have bigger docking bays. Fixed bugs in the meshes of almost all ships. Raised minimum Oolite version to 1.73.}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    Version 2.2.7 Fixed a serious bug introduced in 2.2.6 that that could give huge salvage awards.}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    Version 2.2.6 Removed all predefined derelicts from shipData. Now all traders from any installed oxp can become a derelict. More texture files renaming to unique names.}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    Version 2.2.5 Fixed the commodity definition because it was not used. It will now work for the ships added by this oxp. Renamed texture files to more unique names.}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    Version 2.2.4 Fixed the commodity definition for gold/platinum/gems. Was always defined in Tons. (This bug can leads to crashing while docking at a dredger since 1.73)}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    Version 2.2.3 Raised maximum salvageble weight from 500 000 to 1 000 000 (Hamadryad = 985 000). Made it work for Oolite 1.74.}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    Version 2.2.2 Recognises now bigShips.oxp.  When present, that oxp will control part of the ship additions in the spacelane.}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    Version 2.2 Added Oolite 1.72 compatibility.}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    Version 2.0 Added 3 new Dredger ships from the hand of Sabre with new scripting by Eric Walch and Little Bear.}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    Version 1.2 Bug fix in the docking routine.}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    Version 1.1 Addition by Eric Walch:}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    Added a JavaScript for Oolite 1.71+ that generates encounters with these Dredgers in deep space. For debugging purposes there is always one added in the first system after a restart. When flying far enough in deep space there is a guaranteed encounter in that system.}
    \par \pard\plain \s0\ql\widctlpar\ltrpar\hyphpar0\dbch\af9\dbch\af12\afs24\cf0\kerning1\langfe2052\alang1081\loch\f3\fs24\lang1038\sl338\slmult1\ql\sb0\sa336\ltrpar{\rtlch \ltrch\loch\fs28\lang1038\loch\f5\hich\af5
    Version 1.0 Original by Sabre}
    \par }

    Textures/_readme.txt

    Captain Berf's Alternate texture set v. 1.1 for the Oolite Deep Space Dredgers oxp.
    
    Contents:
    Textures/
    ball-turret_dredger_back.png
    ball-turret_dredger_front.png
    dredgerCourier.png
    dredgerCourier2.png
    dredgerCourierEngines.png
    dredgerCourierEngines_emission.png
    dredgerDroid.png
    dredgerEngines.png
    dredgerEngines_emission.png
    dredgerMainShip.png
    dredgerShuttle.png
    dredgerTraderEngines.png
    dredgerTraderEngines_emission.png
    dredgerTraderMainShip.png
    dredgerTraderMainShip_emission.png
    dredgerTraderMainShip_PLAYER.png
    dredgerTraderMainShip_PLAYER_emission.png
    fury_auv.png
    sabre_auv.png
    sabre_auv_emission.png
    SuperDredger.png
    superDredgerEngines.png
    superDredgerEngines_emmision.png
    _ChangeLog.txt
    _DredgerCollageBerf_800x600.jpg
    _Dredger_Salvage_Logo_Red.png
    _readme.txt
    
    
    Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License
    

    Equipment

    Name Visible Cost [deci-credits] Tech-Level
    Dredger Droid Missile yes 500 101+
    Salvage Missile yes 1850 9+

    Ships

    Name
    Docking Slit (horizontal)
    dockingbay door
    Deep Space Dredger
    Dredger Salvage Droid
    dredger Docking Slit
    dockingbay door
    dredgerballturret
    Dredger Battle Droid
    Dredger Shuttle
    dredgershuttle_up
    Dredger Trader
    Dredger Trader
    Deep Space Dredger
    dredgertransport2
    Fury
    Sabre
    Sabre
    super Dredger Docking Slit
    dockingbay door
    Super Dredger

    Models

    This expansion declares no models. This may be related to warnings.

    Scripts

    Path
    Scripts/dredger-market.js
    "use strict";
    
    this.name = "dredger-market";
    this.author = "spara";
    this.license     = "CC BY-NC-SA 4.0"; 
    
    //put the original defs here. no def means there's a zero market of that commodity
    this.$originalDefs = {
          "food" : [0,0,50,2,0,0,0,0,0],
          "luxuries" : [0,0,40,-2,0,0,0,0,0],
          "computers" : [0,0,100,-2,0,0,0,0,0],
          "machinery" : [0,0,80,-2,0,0,0,0,0],
          "alloys" : [0,0,1,0,0,100,0,0,0],
          "minerals" : [0,0,16,-1,-1,85,3,3,0]
    };
    
    this.updateLocalCommodityDefinition = function(goodDefinition) {
    	var commodity = goodDefinition.key;
    	var oldDefs = this.$originalDefs[commodity];
    	
    	//define the market size for the station
    	goodDefinition.capacity = 127;
    	
    	//old style definition found for the good. calculate it the old way
    	if (oldDefs) {
    		var market_base_price = oldDefs[2];
    		var market_eco_adjust_price = oldDefs[3];
    		var market_eco_adjust_quantity = oldDefs[4];
    		var market_base_quantity = oldDefs[5];
    		var market_mask_price = oldDefs[6];
    		var market_mask_quantity = oldDefs[7];
    		var market_rnd = Math.floor(Math.random() * 256);
    
    		var economy = system.economy;
    		
    		var price = (market_base_price + (market_rnd & market_mask_price) + (economy * market_eco_adjust_price)) & 255;
    		price *= 0.4;
    		
    		var quantity = (market_base_quantity + (market_rnd & market_mask_quantity) - (economy * market_eco_adjust_quantity)) & 255;
    		if (quantity > 127) quantity = 0;
    		
    		quantity &= 63;
    		
    		goodDefinition.quantity = quantity;
    		goodDefinition.price = price * 10;
    	}
    	//no definition found. no market on that commodity
    	else {
    		goodDefinition.price = 0;
    		goodDefinition.quantity = 0;
    		goodDefinition.capacity = 0;
    	}
    	//scale down if quantity too high
    	if (goodDefinition.quantity > goodDefinition.capacity)
    		goodDefinition.quantity = Math.floor(goodDefinition.quantity / 127 * goodDefinition.capacity);
    
    	return goodDefinition;
    };
    
    Scripts/dredger.js
    "use strict";
    this.name        = "deep_space_dredger"; 
    this.author      = "eric walch"; 
    this.copyright   = "� 2008 Walch & Sabre & Little Bear"; 
    this.description = "This script places the dredgers in deep space."; 
    this.version     = "2.4.6"; 
    
    
    this.startUp = function ()
    {
        this.dredger = true
        if (this.dredgerTimer)
            this.dredgerTimer.start()
        else
            this.dredgerTimer = new Timer(this, this.dredgerCheck, 150, 120);
    }
    
    this.shipExitedWitchspace = function ()
    {
        if (this.salvageList) {delete this.salvageList; delete this.salvageNameList};
        if (system.isInterstellarSpace || system.sun.hasGoneNova) return;
    	this.dredger = false;
        if (system.techLevel > 8)
    	{
    		if (Math.random() < 0.5)
    		{
    			if (Math.random() < 0.2)
                {
                    system.addShipsToRoute("dredgertrader", 1, Math.random(), "pw");
                }
                this.dredger = true; // dredger can be added to this system.
    		}
    		else
    		{
    			if (Math.random() < 0.05 && !worldScripts["bigShips_populator"]) 
                {
                    system.addShipsToRoute("dredgers", 1, Math.random()*0.5, "pw");
                }
    		}
    	}
        
    	if (system.government < Math.random() * 7) // more change in low governments
    	{
    		if (Math.random() < 0.1) this.addDerelict(0.1+Math.random()*0.8, 1);
    		if (Math.random() < 0.02)
    		{
    			var location = Math.ceil(Math.random()*5);
    			switch(location)
    			{
    			case 1:     { 
                                this.addDerelict(0.97, 5);  // 20%
                                player.commsMessage(expandDescription("[salvage_drone_battle_station]"), 6); 
                                break;
                            }
    			case 5:     {
                                this.addDerelict(0, 5);  // 20%
                                player.commsMessage(expandDescription("[salvage_drone_battle_witchpoint]"), 6); 
                                break;
                            }
    			default:    {
                                this.addDerelict(0.2+Math.random()*0.7, 5);  // 60%
                                player.commsMessage(expandDescription("[salvage_drone_battle_spacelane]"), 6); 
                                break;
                            }
    			}
    			this.dredger = true;
    		}
    	}
    }
    
    this.addDerelict = function (location, count)
    {
    	if (!system.mainStation) return;
        for (var j = 0; j < count; j++)
        {
            var derelict = system.addShipsToRoute("trader", 1, location)[0];
            derelict.bounty = 0;
            
            // set script to default, to avoid a special script for the trader doing stuff. (like setting a new AI)
            if (derelict.script.name != "oolite-default-ship-script") derelict.setScript("oolite-default-ship-script.js");
            derelict.switchAI("nullAI.plist");
    
            if (derelict.escorts)
            {
                for (var i = 0; i < derelict.escorts.length; i++) 
                {
                    derelict.escorts[i].remove(true);
                }
            }
            
            if (derelict.mass > 1E6) // those probably can't dock so we don't want them.
            {
                derelict.remove(true);
            } 
            else
            {
                derelict.script.shipLaunchedEscapePod = this.$shipLaunchedEscapePod; // function to remove the escapepod after launch.
                if (derelict.equipmentStatus("EQ_ESCAPE_POD") == "EQUIPMENT_UNAVAILABLE") derelict.awardEquipment("EQ_ESCAPE_POD")
                derelict.abandonShip(); // make sure no pilot is left behind and this command turns the ship into cargo.
                derelict.primaryRole = "dredgerDerelict"; // to avoid pirate attacks
                derelict.displayName = derelict.displayName + " (derelict)";
            }
        }
    }
    
    this.dredgerCheck = function ()
    {
        if (this.dredger && player.ship.speed > player.ship.maxSpeed && !system.isInterstellarSpace && player.ship.position.distanceTo(system.mainPlanet.position) > 1.5E6) 
        { 
            this.addDredger(); 
            if(Math.random()< 0.5) this.dredger = false;
        }
    }
    
    this.addDredger = function ()
    {
        var orientation = player.ship.orientation; 
        var forwardPosition = player.ship.position.add(orientation.vectorForward().multiply(300E3));
        system.addShips("dredgers", 1, forwardPosition, 1);
        if (Math.random()<0.5) 
        {
            system.addShips("asteroid", Math.ceil(Math.random()*3), forwardPosition, 10E3);
            system.addShips("miner", Math.ceil(Math.random()*3), forwardPosition, 10E3);
        }
    }
    
    // Below are functions used by ships
    this.checkSalvage = function (ship)
    {
        if (!this.salvageList) return false;
        if (this.salvageList.indexOf(ship) > -1) return true;
        return false;
    }
    
    this.addSalvage = function (ship)
    {
        if (!this.salvageList)
        {
            this.salvageList = [ship];
            this.salvageNameList = [ship.displayName];
            return true;
        }
        if (this.salvageList.indexOf(ship) > -1) return false;
        this.salvageList.push(ship)
        this.salvageNameList.push(ship.displayName);
        return true;
    }
    
    this.removeSalvage = function (ship)
    {
        if (!this.salvageList) return false;
        var i = this.salvageList.indexOf(ship)
        if (i> -1)
        {
            this.salvageList.splice(i,1)
            this.salvageNameList.splice(i,1)
            return true;
        }
        return false;
    }
    
    this.startScanner = function (salvager) // activated by dredgerscript
    {
    	this.salvageShip = salvager;
    	this.timerCount = 0;
        if (this.salvageTimer)
            this.salvageTimer.start()
        else
            this.salvageTimer = new Timer(this, this.scanSalvage, 15, 15)
    }
    
    this.scanSalvage= function ()
    {
        if (!this.salvageList || this.salvageList.length === 0 || !this.salvageShip.isValid) this.salvageTimer.stop()
        for (var i=0; i<this.salvageList.length;i++)
        {
            if (!this.salvageList[i].isValid)  // if ship died.
            {
                this.salvageList.splice(i,1)
                var lostShipName = this.salvageNameList.splice(i,1)
                player.commsMessage(expandDescription("[salvage_drone_intro] ") + this.salvageShip.displayName + expandDescription(" [salvage_drone_killed] ") + lostShipName, 6);
    			return;
            }
        }
    	if (this.timerCount++ > 10 && this.salvageNameList.length > 0)
    	{
    		player.consoleMessage(expandDescription("[salvage_drone_intro] ") + this.salvageShip.displayName + " is still waiting for incoming " + this.salvageNameList[0], 6);
    		this.timerCount = 0;
    	}
    }
    
    // next function is attached to derelict ships
    this.$shipLaunchedEscapePod = function (pod)
    {
        pod.remove(true); // we don't want floating escapepods around but need them initially to create the derelict.
    }
    
    // Below are scripts attached by missile-script to the derelict ships
    this.derelictDied = function (ship)
    {
    	var cargo = Math.ceil(Math.random()*10);
        if (ship.cargoSpaceAvailable < cargo) cargo = ship.cargoSpaceAvailable;
    	if (cargo > 0) ship.spawn("cargopod", (Math.random() * 5 + 5));
    }
    
    this.derelictDocked = function (station)
    {
        if (worldScripts.deep_space_dredger.checkSalvage(this.ship))
        {
            /*
            // Suggestion by Switek
    		var cargo = this.ship[maxCargo];
    		if (cargo > 20) cargo = Math.round( ((cargo - 20) * Math.random()) + 20 ); // Cargo total is 20 to max tons for big haulers.
    		var payment = Math.round(this.ship.mass * 0.01 + cargo * (10 + 50 * Math.random() ) ); // Cargo is randomly valued at 10-60 credits/ton
    		if (payment < 5000) payment = payment + 3000; // +3000 = Enough to pay for the misile, making this profitable[/quote]
            */
            var cargo = Math.round(this.ship.cargoSpaceAvailable / 2.5 * Math.random());
            var payment = Math.round(this.ship.mass/1000) * 10 + cargo * 13;
            if (this.ship.bounty > 0) payment *= 1.5;  // give a 50% bonus for criminal ships.
            missionVariables.salvage_drone_award = payment;
            missionVariables.salvage_drone_cargo = cargo;
            missionVariables.salvage_drone_dname = station.displayName;
            missionVariables.salvage_drone_wname = this.ship.name;
            player.commsMessage(expandDescription("[salvage_drone_congrats]"), 6); // should always reach player.
            player.credits += payment;
            missionVariables.salvage_drone_award = null;
            missionVariables.salvage_drone_cargo = null;
            missionVariables.salvage_drone_dname = null;
            missionVariables.salvage_drone_wname = null;
            worldScripts.deep_space_dredger.removeSalvage(this.ship); // remove from the approach list in the main script.
        }
    }
    Scripts/dredgerSabre.js
    "use strict";
    this.name      = "dredgerSabre"; 
    this.author    = "eric walch"; 
    this.copyright   = "� 2008 Walch & Sabre"; 
    this.description = "Script for dredger shuttle";
    this.version   = "1.00";
    
    
    this.shipDied = function ()
    {
        this.ship.commsMessage(expandDescription("[sabre_curse]")); 
    }
    
    this.shipLaunchedEscapePod = function (pod)
    {
        pod.commsMessage(expandDescription("[sabre_curse]")); 
    }
    Scripts/dredgerSalvageMissile.js
    "use strict";
    this.name        = "dredger salvage missile"; 
    this.author      = "eric walch"; 
    this.copyright   = "� 2008 Walch & Sabre & Little Bear"; 
    this.description = "Missile to initiate salvaging."; 
    this.version     = "1.1"; 
    
    this.shipSpawned = function()
    {
        this.addPirates = false
    }
    
    this.shipDied = function(ship)
    {
        if (ship !== this.ship.target) return; // killed by someting else than targetship.
        if (worldScripts.deep_space_dredger.checkSalvage(ship)) {this.ship.commsMessage(expandDescription("[salvage_drone_busy]")); return;}
    
        if (ship.isShip && ship.scanClass === "CLASS_CARGO" && (ship.AI === "nullAI.plist" || ship.AI === "dumbAI.plist"))
        {
            if (Math.random() < 0.05 || ship.maxSpeed < 50 || ship.script.dammaged)
            {
                this.ship.commsMessage(expandDescription("[salvage_drone_damaged]"));
    			ship.script.dammaged = true;
                return;
            }
            if (ship.mass < 1E6) // Hamadryad has 985 456 kg, anaconda has 429 553 kg, a sidewinder 26 737 kg
            {
                // only add when no other dredgers nearby
                if (system.shipsWithPrimaryRole("dredgers", ship, 300E3).length == 0)
                {
                    system.legacy_addShipsAtPrecisely("dredgers", 1, "abs", player.ship.position.add(Vector3D.randomDirection().multiply(200E3)));
                    this.addPirates = true;  // only add once per added dredger.
                }
                var dredger = system.shipsWithPrimaryRole("dredgers")[0]; // choose the closest in case there are more.
                ship.target = dredger;
                ship.group = dredger.group; // needed to set a fixed docking station because it will make the dreger the group leader.
                ship.switchAI("dredgersDockingAI.plist");
                ship.primaryRole = "trader"; // Restore trader role to make sure pirates will find it.
                
    			if (ship.displayName.indexOf("(derelict)")) ship.displayName = ship.displayName.replace(" (derelict)", "") ;
                worldScripts.deep_space_dredger.addSalvage(ship);
                ship.name = ship.displayName; // Store the original displayname in case someone altered it.
                ship.displayName = ship.displayName + " (auto pilot)"; // Make sure it stands out among other ships
                dredger.target = ship;
                dredger.AIState = "HEAD_FOR_SALVAGE";
                if (dredger.group) dredger.group.addShip(ship); // for ease of docking at the right station
    			ship.script.shipDied = worldScripts.deep_space_dredger.derelictDied; //script attached to derelict ship
    			ship.script.shipDockedWithStation = worldScripts.deep_space_dredger.derelictDocked; //script attached to derelict ship
                
                if (this.addPirates)
                {
                    var dredgerDirection = dredger.position.subtract(ship.position); // Vector from derelict to dredger, vector lenghth is distance.
                    system.legacy_addShipsAtPrecisely("pirate", Math.ceil(Math.random()*5), "abs", ship.position.add(dredgerDirection.multiply(0.25)));
                    system.legacy_addShipsAtPrecisely("pirate", Math.ceil(Math.random()*5), "abs", ship.position.add(dredgerDirection.multiply(0.40)));
                    
                }
                
                ship.scannerDisplayColor1 = [0.9, 0.9, 0.7, 1.0];
                ship.thrust = ship.maxThrust * 0.3;
                if (ship.equipmentStatus("EQ_ESCAPE_POD") === "EQUIPMENT_OK") ship.removeEquipment("EQ_ESCAPE_POD");
                
                if (dredger.displayName === dredger.name)
                    dredger.displayName = expandDescription("[salvage_drone_gotit11] [salvage_drone_gotit12]");
                    
                this.ship.commsMessage(expandDescription("[salvage_drone_gotita]") + dredger.displayName + expandDescription("[salvage_drone_gotitb]"));
                // take note that above code runs before any ship-JS of the dredger itself.
            }
            else  this.ship.commsMessage(expandDescription("[salvage_drone_toobig]"));
        }
        else this.ship.commsMessage(expandDescription("[salvage_drone_notwreak]"));
    }
    Scripts/dredgerShip.js
    "use strict";
    this.name      = "dredgerShip"; 
    this.author    = "eric walch"; 
    this.copyright   = "� 2008 Walch & Sabre & Little Bear"; 
    this.description = "Script for dredger ship";
    this.version   = "1.3.6";
    
    this.dockedShuttles = 0;
    this.doorY = 0;
    this.door = this.ship.subEntities[1]; // door must be defines as the second subentity.
    
    this.shipSpawned = function ()
    {
        this.shuttles = Math.round(Math.sqrt(this.ship.mass)/2000); // 20 till 80
        this.ship.primaryRole = "dredgers"; // untill Oolite 1.73, we need this primaryRole for the commodity.plist working correctly.
        if (this.ship.displayName === this.ship.name)
            this.ship.displayName = expandDescription("[salvage_drone_gotit11] [salvage_drone_gotit12]");
        this.oldOolite = (0 < oolite.compareVersion("1.75.1")); // since 1.75.1 it became possible to reliably remove timers on ship removal.
        if (!this.oldOolite)
        {
            delete this.shipDied;
            delete this.playerWillEnterWitchspace;
        }
    }
    
    this.checkLaunches = function ()
    {
        if (this.doorY >= 1 && this.shuttles > 0) // door fully open.
        {
            this.shuttles--;
            this.ship.reactToAIMessage("LAUNCH_SHUTTLE"); 
        }
        else if (!this.waitForDocking)
        {
            this.ship.reactToAIMessage("RESUME_FLIGHT");
            this.shuttles += this.dockedShuttles;
            this.closeDoor();
        }
    }
    
    this.dockingRequested = function ()
    {
    	this.waitForDocking = true;
    }
    
    this.dockingComplete = function ()
    {
    	this.waitForDocking = false;
    }
    
    this.launchFromPlanet= function ()
    {
    	worldScripts.deep_space_dredger.dredgerWaitingShip = this.ship;  // used as target by rising shuttles.
    	var launchVector = this.ship.position.subtract(system.mainPlanet.position).direction();
    	var launchSite = system.mainPlanet.position.add(launchVector.multiply(system.mainPlanet.radius + 2500));
    	var shuttles = system.addShips("dredgershuttle_up", 8, launchSite, 1000);
        
        var launchOrientation = launchVector.rotationTo(new Vector3D(0,0,1)); // align the quaternion to the launchVector
        for (var i=0; i<shuttles.length; i++)
        {
            shuttles[i].orientation = launchOrientation; // now all shuttles should point away from planet.
        }
        
    	this.waitForDocking = true;
        this.openDoor();
    }
    
    this.otherShipDocked = function (ship)
    {
        if (ship.primaryRole == "dredgershuttle_up") this.dockedShuttles++;
    }
    
    this.stationLaunchedShip = function (ship)
    {
        if (ship.primaryRole == "miner" && this.oldOolite) ship.setAI("dredgerLaunchHelperAI.plist"); // added to make sure ships don't turn to soon.
        if (ship.isPlayer)
        {
            this.doorY = 1;
            this.closeDoor();
            this.door.orientation = [1, 1, 0, 0]; // start with full open door.
        }
    }
    
    this.playerWillEnterWitchspace = function ()
    {
        this.$cleanupTimers();
    };
    
    this.startScanner = function ()
    {
    	worldScripts.deep_space_dredger.startScanner(this.ship); // transfer this dredgers entity for messages.
    }
    
    this.shipDied = function ()
    {
        this.$cleanupTimers();
    }
    
    this.entityDestroyed = function ()
    {
        // handler was introduced in Oolite 1.75.1
        this.$cleanupTimers();
    }
    
    this.initiateMinerLaunch = function ()
    {
        this.minersToLaunch = true;
    }
    
    this.openDoor = function ()
    {
        if (this.doorY >= 1) return; // door is open
        this.openSpeed = 0.005;
        this.$startTimers();
    }
    
    this.openDoorFast = function ()
    {
        if (this.doorY >= 1) return; // door is open
        this.openSpeed = 0.05;
        this.$startTimers();
    }
    
    this.closeDoor = function ()
    {
        if (this.doorY <= 0) return; // door is closed
        this.openSpeed = -0.005;
        this.$startTimers();
    }
    
    this.moveDoor = function (delta)
    {
        if (!delta) delta = 0.25;
        if (!this.ship || !this.ship.isValid || !this.ship.status) {this.$cleanupTimers();return;};
        this.doorY += this.openSpeed*4*delta;
        if (this.doorY >= 1) // door is open
        {
            this.$cleanupTimers();
            this.doorY = 1;
            if (this.minersToLaunch)
            {
                this.minersToLaunch = false;
                this.ship.launchMiner();
                this.ship.launchShipWithRole("miner");
            }
        }
        if (this.doorY <= 0)  // door is closed
        {
            this.$cleanupTimers();
            this.doorY = 0;
        }
        this.door.orientation = [1, this.doorY, 0, 0];
    };
    
    
    // function called by Oolite
    (function () {
        const escortPositions =
        [
            // |.|-shape escort pattern
            new Vector3D(-2,  1, -1),
            new Vector3D( 2,  1, -1),
            new Vector3D(-2, -1, -1),
            new Vector3D( 2, -1, -1),
            new Vector3D(-2,  0, -1),
            new Vector3D( 2,  0, -1),
            new Vector3D(-1,  0, -2),
            new Vector3D( 1,  0, -2)
        ];
    
        this.coordinatesForEscortPosition = function (index) {
            var highPart = 1 + (index >> 3) / 3;
            var lowPart = index % 6;
            
            var spacing = this.ship.collisionRadius * highPart;
            
            return escortPositions[lowPart].multiply(spacing);
        };
    }).call(this);
    
    
    this.$startTimers = function ()
    {
        if(this.oldOolite) 
        {
            if (this.moveTimer) this.moveTimer.start()
            else this.moveTimer = new Timer(this, this.moveDoor, 15, 0.25);
        }
        else
        {
            if (!isValidFrameCallback(this.$callbackID)) this.$callbackID = addFrameCallback(this.moveDoor.bind(this));
        }
    }
    
    this.$cleanupTimers = function ()
    {
        if (this.moveTimer) {this.moveTimer.stop(); delete this.moveTimer} // for oolite 1.74
    	if (this.$callbackID && isValidFrameCallback(this.$callbackID)) // for Oolite 1.75+
    	{ 
    		removeFrameCallback(this.$callbackID);
            delete this.$callbackID;
    	}
    }
    Scripts/dredgerShuttle.js
    "use strict";
    this.name      = "dredgerShuttle"; 
    this.author    = "eric walch"; 
    this.copyright   = "� 2008 Walch & Sabre"; 
    this.description = "Script for dredger shuttle";
    this.version   = "1.01";
    
    
    this.checkDistance = function()
    {
        var planet = system.mainPlanet;
        if (!planet) {this.ship.reactToAIMessage("NO_PLANET"); return;};
        var distance = planet.position.distanceTo(this.ship) - planet.radius;
        if (distance < 2500)  this.ship.reactToAIMessage("AEGIS_LEAVING_DOCKING_RANGE"); 
    }
    
    this.findDredger = function()
    {
        if (worldScripts.deep_space_dredger.dredgerWaitingShip)
        {
            this.ship.target = worldScripts.deep_space_dredger.dredgerWaitingShip;
        }
        else
        {
            this.ship.target = system.mainStation;
        }
    }
    
    Scripts/superdredger-market.js
    "use strict";
    
    this.name = "superdredger-market";
    this.author = "spara";
    this.license     = "CC BY-NC-SA 4.0"; 
    
    //put the original defs here. no def means there's a zero market of that commodity
    this.$originalDefs = {
          "food" : [0,0,50,2,0,0,0,0,0],
          "luxuries" : [0,0,40,-2,0,0,0,0,0],
          "computers" : [0,0,100,-2,0,0,0,0,0],
          "machinery" : [0,0,80,-2,0,0,0,0,0],
          "alloys" : [0,0,1,0,0,100,0,0,0],
          "minerals" : [0,0,16,-1,-1,85,3,3,0]
    };
    
    this.updateLocalCommodityDefinition = function(goodDefinition) {
    	var commodity = goodDefinition.key;
    	var oldDefs = this.$originalDefs[commodity];
    	
    	//define the market size for the station
    	goodDefinition.capacity = 255; //matched to Superhub
    	
    	//old style definition found for the good. calculate it the old way
    	if (oldDefs) {
    		var market_base_price = oldDefs[2];
    		var market_eco_adjust_price = oldDefs[3];
    		var market_eco_adjust_quantity = oldDefs[4];
    		var market_base_quantity = oldDefs[5];
    		var market_mask_price = oldDefs[6];
    		var market_mask_quantity = oldDefs[7];
    		var market_rnd = Math.floor(Math.random() * 256);
    
    		var economy = system.economy;
    		
    		var price = (market_base_price + (market_rnd & market_mask_price) + (economy * market_eco_adjust_price)) & 255;
    		price *= 0.4;
    		
    		var quantity = (market_base_quantity + (market_rnd & market_mask_quantity) - (economy * market_eco_adjust_quantity)) & 255;
    		if (quantity > 127) quantity = 0;
    		
    		quantity &= 63;
    		
    		goodDefinition.quantity = quantity;
    		goodDefinition.price = price * 10;
    	}
    	//no definition found. no market on that commodity
    	else {
    		goodDefinition.price = 0;
    		goodDefinition.quantity = 0;
    		goodDefinition.capacity = 0;
    	}
    	//scale down if quantity too high
    	if (goodDefinition.quantity > goodDefinition.capacity)
    		goodDefinition.quantity = Math.floor(goodDefinition.quantity / 127 * goodDefinition.capacity);
    
    	return goodDefinition;
    };