Page 1 of 1

[RELEASE] Friend or Foe OXP v1.2

Posted: Wed Nov 21, 2012 6:14 pm
by Tricky
An offshoot from Jaguar Company.

Code: Select all

Friend or Foe 1.2 (2012-11-26)

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.

TOC
---
Overview
Requirements
Optional OXPs
Downloads
Install
Uninstall
Ship installation HOWTO
Further documentation
Version History
Copyright

Overview
--------
An OXP that enhances ship group interaction.

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_1.2.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...

---- START CODE (copy all up to the END CODE block) ----
(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. Remember to set the same group name as the mother for an escort 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);
---- END CODE ----

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.

The player, thargoids and tharglets are ignored.

Police and Interceptors are also ignored because of the way bounties are hard-coded into the system. When Oolite v1.78 is released, it should be possible to integrate them.

== 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 in it's ship script then they will be called afterwards.

    shipAttackedWithMissile
    shipBeingAttacked
    shipDied
    shipTargetDestroyed

Further information from:
    http://wiki.alioth.net/index.php/Oolite_JavaScript_Reference:_ship_script_event_handlers

Further documentation
---------------------
    AI sendScriptMessage functions: http://wiki.alioth.net/index.php/Friend_or_Foe/AI_sendScriptMessage_functions
        You can also find this in the same directory as this readme named 'AI_sendScriptMessage_functions.txt'.

Version History
---------------
v1.2 (2012-11-26)
    Escorts or wingman of police and interceptors won't be registered.
    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.
Wiki: [EliteWiki] Friend or Foe OXP
Wiki: Image Friend or Foe OXP - AI sendScriptMessage functions
Downloads:
  • box.com
  • dropbox.com
  • rsync://ebspso.dnsalias.org/friend_or_foe_1.2 or ebspso.dnsalias.org::friend_or_foe_1.2 (rsync)

Re: [RELEASE] Friend or Foe OXP v1.1

Posted: Wed Nov 21, 2012 7:07 pm
by Tricky
v1.1 (2012-11-21)
Minor bug fix.

Re: [RELEASE] Friend or Foe OXP v1.1

Posted: Thu Nov 22, 2012 4:35 am
by Tricky
Added clickable download links to the bottom of the OP.

Will add a entry to the OXP List once the wiki starts repsonding more fluidly. At the moment it takes about 2-3 minutes before a page is shown. Doesn't matter which page either.

Re: [RELEASE] Friend or Foe OXP v1.1

Posted: Thu Nov 22, 2012 6:53 am
by Diziet Sma
So what exactly is it in aid of? I get that it tags you as a "friendly".. but to whom, and why?

Re: [RELEASE] Friend or Foe OXP v1.1

Posted: Thu Nov 22, 2012 7:03 am
by Tricky
Diziet Sma wrote:
So what exactly is it in aid of? I get that it tags you as a "friendly".. but to whom, and why?
I've added this bit of blurb to the OP...
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.

Re: [RELEASE] Friend or Foe OXP v1.1

Posted: Thu Nov 22, 2012 9:43 am
by Diziet Sma
Cool.. I can see that being useful.. 8) :D

Re: [RELEASE] Friend or Foe OXP v1.2

Posted: Mon Nov 26, 2012 1:43 am
by Tricky
v1.2 (2012-11-26)
Escorts or wingman of police and interceptors won't be registered.
Thargoids and tharglets can not be registered.
Bug fix for the route2patrolAI.plist switch AI.

Unfortunately, police or interceptors can not be integrated with this OXP currently. When Oolite v1.78 is finally released there will be a way, maybe with setBounty.

Please note there is a new ship template that handles escorts of regular ships.