Back to Index Page generated: Nov 12, 2024, 11:02:04 PM

Expansion Simon B's Favorites

Content

Manifest

from Expansion Manager's OXP list from Expansion Manifest
Description Adds Simon B's re-modelled versions of Aphid, Cobra Clipper, Cobra Clipper SAR, Cobra Rapier, Cobra Cutlass and Wolf Mark I. Original ship concepts by 8-Bit Apocalypse, Murgh, Wolfwood. Includes player and NPC ships. Adds Simon B's re-modelled versions of Aphid, Cobra Clipper, Cobra Clipper SAR, Cobra Rapier, Cobra Cutlass and Wolf Mark I. Original ship concepts by 8-Bit Apocalypse, Murgh, Wolfwood. Includes player and NPC ships.
Identifier oolite.oxp.spara.sb-faves oolite.oxp.spara.sb-faves
Title Simon B's Favorites Simon B's Favorites
Category Ships Ships
Author Keeper, Simon B, spara Keeper, Simon B, spara
Version 1.1.3 1.1.3
Tags
Required Oolite Version
Maximum Oolite Version
Required Expansions
Optional Expansions
Conflict Expansions
Information URL http://aegidian.org/bb/viewtopic.php?f=4&t=16618 n/a
Download URL https://wiki.alioth.net/img_auth.php/1/12/Sb-faves_1.1.3.oxz n/a
License CC-BY-NC-SA 4.0 CC-BY-NC-SA 4.0
File Size n/a
Upload date 1610873233

Documentation

Also read http://wiki.alioth.net/index.php/Simon%20B's%20Favorites

Equipment

This expansion declares no equipment.

Ships

Name
Aphid Ball Section
Aphid
aphid-re2dux-player
cobra3-clipper-player
Cobra Clipper
cobra3-clipper-sar-player
Cobra Clipper SAR
cobra3-clipper-sar-re2dux-alt
cobra3-cutlass-player
Cobra Cutlass
cobra3-rapier-player
Cobra Rapier
sbf_ecl_rescue_cobraclipper
Wolf Mark I
sbwolf-re2dux-player

Models

This expansion declares no models.

Scripts

Path
Config/script.js
"use strict";

this.name        = "sbf_clipperschedule"; 
this.author      = "spara"; 
this.copyright      = "2014 Mika SpÄra";
this.description = "Populator for sb-faves sar clippers"; 
this.licence    	= "CC BY-NC-SA 4.0";

this.startUp = function() {
	//to avoid similar population with other oxps
	if (worldScripts["ecl_SAR_worldscript.js"] || worldScripts["clipperschedule"]) {
		delete this.systemWillPopulate;
		delete this.systemWillRepopulate;
	}
}

this.systemWillPopulate = function() {
	//to avoid similar population with other oxps
	if (system.techLevel > 7 && Math.random() > 0.35) {
		//0-3 ships, weighted probs of 1 and 2 ships.
		for (var i = 0; i < Math.round(Math.random() * 3); i++) {
			system.setPopulator("sbf_clippers" + i, {
				callback: function(pos) {
					system.addShips("clipper-rescueship", 1, pos);
				}.bind(this),
				location: "LANE_WPS"
			});
		};
	};
}

this.systemWillRepopulate = function() {
	//a small probability for restocking sar clippers.
	if (system.techLevel > 7 && system.countShipsWithPrimaryRole("clipper-rescueship") < 2 && Math.random() < 0.05) {
		if (Math.random() > 0.5) 
			system.mainStation.launchShipWithRole("clipper-rescueship");
		else 
			system.addShips("clipper-rescueship", 1);
	}
}
Scripts/sbf_cobraClipper.js
"use strict";

this.name      = "cobraClipper"; 
this.author    = "eric walch"; 
this.copyright = "";
this.description = "ship script cobraClipper";
this.version   = "1.1.1";

/*
The original rescueship tried to only find escapepods. This never worked. The used command scanForNearestShipWithRole excludes any cargo. 
Only scanForLoot would work, but that mainly finds barrels. Therefor
*/

this.findPods = function()
{
	function isEscapePod(entity) { return entity.isShip && entity.primaryRole == "escape-capsule"};
	var pod = system.filteredEntities(this, isEscapePod, this.ship, this.ship.scannerRange)[0];
	if(pod)
	{
		if (0 < oolite.compareVersion("1.74"))
        {
            if(this.ship.cargoSpaceUsed == this.ship.cargoCapacity) 
            {
                this.ship.reactToAIMessage("HOLD_FULL")
            }
            else
            {
                this.ship.target = pod
                this.ship.reactToAIMessage("ESCAPEPOD_FOUND")
            }
        }
        else
        {
            if(this.ship.cargoSpaceUsed == this.ship.cargoSpaceCapacity) 
            {
                this.ship.reactToAIMessage("HOLD_FULL")
            }
            else
            {
                this.ship.target = pod
                this.ship.reactToAIMessage("ESCAPEPOD_FOUND")
            }
        }
	}
}