Difference between revisions of "Friend or Foe"

From Elite Wiki
(Version History: v1.1 (2012-11-21))
(Updated to v1.2)
Line 4: Line 4:
 
|version = 1.0
 
|version = 1.0
 
|release = 2012-11-21
 
|release = 2012-11-21
 +
|license = CC BY-NC-SA 3.0
 +
|features = Enhances ship group interaction
 +
|category = Mechanics OXPs
 +
|author = [[User:Tricky|Tricky]]
 +
|feedback = [http://aegidian.org/bb/viewtopic.php?f=4&t=13038 BB-Link]
 +
}}
 +
----
 +
{{Infobox OXP{{OXPLevel|0}}
 +
{{Infobox OXPb
 +
|title = Friend or Foe
 +
|version = 1.2
 +
|release = 2012-11-25
 
|license = CC BY-NC-SA 3.0
 
|license = CC BY-NC-SA 3.0
 
|features = Enhances ship group interaction  
 
|features = Enhances ship group interaction  
Line 12: Line 24:
 
----
 
----
 
{{Infobox OXP
 
{{Infobox OXP
 +
|title = Friend or Foe
 +
|download = [[Friend or Foe#Downloads|Download Links]]
 +
|version = 1.2 (2012-11-25)
 +
|story = [[Friend or Foe#Version History|Version History]]
 +
|stations = None
 +
|ships = None
 +
|mission = None
 +
|equipment = None
 +
|alternativeHUD = None
 +
|soundSet = None
 +
|category = Mechanics OXPs
 +
|author = [[User:Tricky|Tricky]]
 +
}}
 +
== Overview ==
 +
An OXP that enhances ship group interaction.
 +
 +
The Friend or Foe system will allow groups of ships to work as a team independently without being setup as escorts. There is no concept of a leader or escorts/wingmen in this system. Each ship has complete autonomy and can call on help from any other team member. Each ship keeps track of who has attacked them and will ignore stray shots, ie friendly fire. Also if an attacker disappears off the scanner and later comes back the team will remember them and restart the attack run.
 +
 +
== Requirements ==
 +
* Oolite 1.75+
 +
 +
== Optional OXPs ==
 +
* OXPConfig - For log control.
 +
 +
== Downloads ==
 +
* https://www.box.com/s/gxyvr7nlfh9k9kqnxm49 (box.com)
 +
* https://dl.dropbox.com/u/31706855/Oolite/OXPs/Friend_or_Foe.zip (dropbox.com)
 +
* rsync://ebspso.dnsalias.org/friend_or_foe or ebspso.dnsalias.org::friend_or_foe (rsync)
 +
 +
== Install ==
 +
After unzipping, move or copy the folder, "Friend_or_Foe_1.2.oxp", into your AddOns directory.
 +
 +
== Uninstall ==
 +
Delete the directory, "Friend_or_Foe_1.2.oxp", from your AddOns directory.
 +
 +
== Ship installation HOWTO ==
 +
For a basic installation, create a ship script that follows this template,
 +
change the standard public variables as needed...
 +
 +
<pre>
 +
(function () {
 +
    "use strict";
 +
 +
    /* Standard public variables for OXP scripts. */
 +
    this.name = "yourshipscripthere.js";
 +
    this.author = "Your Name";
 +
    this.copyright = "© 2012 Your Name";
 +
    this.license = "CC BY-NC-SA 3.0";
 +
    this.description = "Ship script for your ship.";
 +
    this.version = "1.0";
 +
 +
    /* Identifies this as a friendly to the 'Friend or Foe OXP'.
 +
    * This is needed.
 +
    */
 +
    this.$fof_ship = true;
 +
 +
    /* Group name for your ship.
 +
    * Optional/Not needed.
 +
    */
 +
    this.$fof_groupName = "yourgroupnamehere";
 +
 +
    /* Ship event callbacks. */
 +
 +
    /* The spawnedAsEscort handler is called for newly added escort ships. It does trigger on adding the ship and
 +
    * before the shipSpawned() handlers is activated. It has the mothership as argument.
 +
    *
 +
    * INPUT
 +
    *  mother - entity of the mothership.
 +
    */
 +
    this.spawnedAsEscort = function (mother) {
 +
        /* No longer needed after setting up. */
 +
        delete this.spawnedAsEscort;
 +
 +
        /* Register this escort as a friendly. Delay it to allow the system to do it's stuff. */
 +
        if (worldScripts["Friend or Foe"]) {
 +
            this.$addFriendlyTimerReference = new Timer(this, function () {
 +
                    worldScripts["Friend or Foe"].$addFriendly(this.ship, mother);
 +
                    delete this.$addFriendlyTimerReference;
 +
                }, 2);
 +
        }
 +
        this.$isEscort = true;
 +
    };
 +
 +
    /* The shipSpawned handler is called for newly added ships. It does not trigger on adding but on the first update
 +
    * after adding. On a witchspace jump it means that first all ships are added to the system, then afterwards all
 +
    * the shipSpawned() events are triggered.
 +
    */
 +
    this.shipSpawned = function () {
 +
        /* No longer needed after setting up. */
 +
        delete this.shipSpawned;
 +
 +
        if (this.$isEscort) {
 +
            /* Already been setup as a friendly. */
 +
            return;
 +
        }
 +
 +
        /* Register this ship as a friendly. Delay it to allow the system to do it's stuff. */
 +
        if (worldScripts["Friend or Foe"]) {
 +
            this.$addFriendlyTimerReference = new Timer(this, function () {
 +
                    worldScripts["Friend or Foe"].$addFriendly(this.ship);
 +
                    delete this.$addFriendlyTimerReference;
 +
                }, 2);
 +
        }
 +
    };
 +
}).call(this);
 +
</pre>
 +
 +
Place the above code in the Scripts directory of your ship OXP. In shipdata.plist add a reference to the script.
 +
Rememeber to save the above code with a .js extension.
 +
 +
Player's, thargoids and tharglets are ignored.
 +
 +
== Ship script event handlers ==
 +
This is a list of all the ship script event handlers that a ship registered with the Friend or Foe OXP will respond to. If the ship already has code for these handlers it's ship script then they will be called afterwards.
 +
 +
* [[Oolite_JavaScript_Reference:_ship_script_event_handlers#shipAttackedWithMissile|shipAttackedWithMissile]]
 +
* [[Oolite_JavaScript_Reference:_ship_script_event_handlers#shipBeingAttacked|shipBeingAttacked]]
 +
* [[Oolite_JavaScript_Reference:_ship_script_event_handlers#shipDied|shipDied]]
 +
* [[Oolite_JavaScript_Reference:_ship_script_event_handlers#shipTargetDestroyed|shipTargetDestroyed]]
 +
 +
== Further documentation ==
 +
* [[Friend_or_Foe/AI_sendScriptMessage_functions|AI sendScriptMessage functions.]]
 +
 +
== Version History ==
 +
v1.2 (2012-11-25)
 +
* Registered police, interceptors and wingman are now recognised.
 +
* Thargoids and tharglets can not be registered.
 +
* Bug fix for the route2patrolAI.plist switch AI.
 +
v1.1 (2012-11-21)
 +
* Minor bug fix.
 +
v1.0 (2012-11-21)
 +
* Initial release.
 +
 +
== Copyright ==
 +
Copyright © 2012 Richard Thomas Harrison (Tricky)
 +
 +
This work is licensed under the Creative Commons
 +
Attribution-Noncommercial-Share Alike 3.0 Unported License.
 +
 +
To view a copy of this license, visit
 +
http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter
 +
to Creative Commons, 171 Second Street, Suite 300, San Francisco,
 +
California, 94105, USA.
 +
 
|title = Friend or Foe
 
|title = Friend or Foe
 
|download = [[Friend or Foe#Downloads|Download Links]]
 
|download = [[Friend or Foe#Downloads|Download Links]]

Revision as of 14:55, 25 November 2012

Levelindicator0.png
0-{{{2}}}
Version Released License Features Category Author(s) Feedback
1.0 2012-11-21 CC BY-NC-SA 3.0 Enhances ship group interaction Mechanics OXPs Tricky BB-Link

{{Infobox OXP

Levelindicator0.png
0-{{{2}}}
Version Released License Features Category Author(s) Feedback
1.2 2012-11-25 CC BY-NC-SA 3.0 Enhances ship group interaction Mechanics OXPs Tricky BB-Link

Friend or Foe
No picture available
Download Link Download Links
Version 1.2 (2012-11-25)
History Version History
Stations None
Ships None
Missions None
Equipment None
Alternative HUD
Available
None
Sound Set
Available
None
Category Mechanics OXPs
Author Tricky

Overview

An OXP that enhances ship group interaction.

The Friend or Foe system will allow groups of ships to work as a team independently without being setup as escorts. There is no concept of a leader or escorts/wingmen in this system. Each ship has complete autonomy and can call on help from any other team member. Each ship keeps track of who has attacked them and will ignore stray shots, ie friendly fire. Also if an attacker disappears off the scanner and later comes back the team will remember them and restart the attack run.

Requirements

  • Oolite 1.75+

Optional OXPs

  • OXPConfig - For log control.

Downloads

Install

After unzipping, move or copy the folder, "Friend_or_Foe_1.2.oxp", into your AddOns directory.

Uninstall

Delete the directory, "Friend_or_Foe_1.2.oxp", from your AddOns directory.

Ship installation HOWTO

For a basic installation, create a ship script that follows this template, change the standard public variables as needed...

(function () {
    "use strict";

    /* Standard public variables for OXP scripts. */
    this.name = "yourshipscripthere.js";
    this.author = "Your Name";
    this.copyright = "© 2012 Your Name";
    this.license = "CC BY-NC-SA 3.0";
    this.description = "Ship script for your ship.";
    this.version = "1.0";

    /* Identifies this as a friendly to the 'Friend or Foe OXP'.
     * This is needed.
     */
    this.$fof_ship = true;

    /* Group name for your ship.
     * Optional/Not needed.
     */
    this.$fof_groupName = "yourgroupnamehere";

    /* Ship event callbacks. */

    /* The spawnedAsEscort handler is called for newly added escort ships. It does trigger on adding the ship and
     * before the shipSpawned() handlers is activated. It has the mothership as argument.
     *
     * INPUT
     *   mother - entity of the mothership.
     */
    this.spawnedAsEscort = function (mother) {
        /* No longer needed after setting up. */
        delete this.spawnedAsEscort;

        /* Register this escort as a friendly. Delay it to allow the system to do it's stuff. */
        if (worldScripts["Friend or Foe"]) {
            this.$addFriendlyTimerReference = new Timer(this, function () {
                    worldScripts["Friend or Foe"].$addFriendly(this.ship, mother);
                    delete this.$addFriendlyTimerReference;
                }, 2);
        }
        this.$isEscort = true;
    };

    /* The shipSpawned handler is called for newly added ships. It does not trigger on adding but on the first update
     * after adding. On a witchspace jump it means that first all ships are added to the system, then afterwards all
     * the shipSpawned() events are triggered.
     */
    this.shipSpawned = function () {
        /* No longer needed after setting up. */
        delete this.shipSpawned;

        if (this.$isEscort) {
            /* Already been setup as a friendly. */
            return;
        }

        /* Register this ship as a friendly. Delay it to allow the system to do it's stuff. */
        if (worldScripts["Friend or Foe"]) {
            this.$addFriendlyTimerReference = new Timer(this, function () {
                    worldScripts["Friend or Foe"].$addFriendly(this.ship);
                    delete this.$addFriendlyTimerReference;
                }, 2);
        }
    };
}).call(this);

Place the above code in the Scripts directory of your ship OXP. In shipdata.plist add a reference to the script. Rememeber to save the above code with a .js extension.

Player's, thargoids and tharglets are ignored.

Ship script event handlers

This is a list of all the ship script event handlers that a ship registered with the Friend or Foe OXP will respond to. If the ship already has code for these handlers it's ship script then they will be called afterwards.

Further documentation

Version History

v1.2 (2012-11-25)

  • Registered police, interceptors and wingman are now recognised.
  • Thargoids and tharglets can not be registered.
  • Bug fix for the route2patrolAI.plist switch AI.

v1.1 (2012-11-21)

  • Minor bug fix.

v1.0 (2012-11-21)

  • Initial release.

Copyright

Copyright © 2012 Richard Thomas Harrison (Tricky)

This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.

To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.

|title = Friend or Foe |download = Download Links |version = 1.0 (2012-11-21) |story = Version History |stations = None |ships = None |mission = None |equipment = None |alternativeHUD = None |soundSet = None |category = Mechanics OXPs |author = Tricky }}

Overview

An OXP that enhances ship group interaction.

The Friend or Foe system will allow groups of ships to work as a team independently without being setup as escorts. There is no concept of a leader or escorts/wingmen in this system. Each ship has complete autonomy and can call on help from any other team member. Each ship keeps track of who has attacked them and will ignore stray shots, ie friendly fire. Also if an attacker disappears off the scanner and later comes back the team will remember them and restart the attack run.

Requirements

  • Oolite 1.75+

Optional OXPs

  • OXPConfig - For log control.

Downloads

Install

After unzipping, move or copy the folder, "Friend_or_Foe_1.0.oxp", into your AddOns directory.

Uninstall

Delete the directory, "Friend_or_Foe_1.0.oxp", from your AddOns directory.

Ship installation HOWTO

For a basic installation, create a ship script that follows this template, change the standard public variables as needed...

(function () {
    "use strict";

    /* Standard public variables for OXP scripts. */
    this.name = "yourshipscripthere.js";
    this.author = "Your Name";
    this.copyright = "© 2012 Your Name";
    this.license = "CC BY-NC-SA 3.0";
    this.description = "Ship script for your ship.";
    this.version = "1.0";

    /* Identifies this as a friendly to the 'Friend or Foe OXP'.
     * This is needed.
     */
    this.$fof_ship = true;

    /* Group name for your ship.
     * Optional/Not needed.
     */
    this.$fof_groupName = "yourgroupnamehere";

    /* Ship event callbacks. */

    /* Initialise the ship with 'Friend or Foe OXP' on birth. */
    this.shipSpawned = function () {
        /* No longer needed after setting up. */
        delete this.shipSpawned;

        /* Register this ship as a friendly. Delay it to allow the system to do it's stuff. */
        if (worldScripts["Friend or Foe"]) {
            this.$addFriendlyTimerReference = new Timer(this, function () {
                    worldScripts["Friend or Foe"].$addFriendly(this.ship);
                    delete this.$addFriendlyTimerReference;
                }, 2);
        }
    };
}).call(this);

Place the above code in the Scripts directory of your ship OXP. In shipdata.plist add a reference to the script. Rememeber to save the above code with a .js extension.

This OXP does not work for ships with the SCAN_CLASS of police due to hard-coded bounty increments in the Oolite executable. Thargoids and tharglets are also ignored.

Version History

v1.1 (2012-11-21)

  • Minor bug fix.

v1.0 (2012-11-21)

  • Initial release.

Copyright

Copyright © 2012 Richard Thomas Harrison (Tricky)

This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.

To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.