Back to Index Page generated: Oct 8, 2025, 10:50:05 PM

Expansion Missile Spoof

Content

Warnings

  1. License not specified

Manifest

from Expansion Manager's OXP list from Expansion Manifest
Description automatic anti-missile system using flares automatic anti-missile system using flares
Identifier oolite.oxp.Lone_Wolf.Missile_Spoof oolite.oxp.Lone_Wolf.Missile_Spoof
Title Missile Spoof Missile Spoof
Category Equipment Equipment
Author Cmdr Wyvern, Lone_Wolf Cmdr Wyvern, Lone_Wolf
Version 1.04.1 1.04.1
Tags
Required Oolite Version
Maximum Oolite Version
Required Expansions
Optional Expansions
Conflict Expansions
Information URL http://wiki.alioth.net/index.php/Missile_Spoof n/a
Download URL https://wiki.alioth.net/img_auth.php/7/7e/Missile_Spoof_1.04.1.oxz n/a
License
File Size n/a
Upload date 1757499668

Documentation

Also read http://wiki.alioth.net/index.php/Missile%20Spoof

Equipment

Name Visible Cost [deci-credits] Tech-Level
Missile Spoof yes 10000 8+
Sell Missile Spoof yes 0 8+

Ships

Name
Flare
Flare Package

Models

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

Scripts

Path
Scripts/missile-spoof.js
"use strict";
this.name        = "Missile Spoof"; 
this.author      = "Wyvern"; 
this.copyright   = "� 2011 the Oolite team."; 
this.description = "Attempts to break hardened missile lock by triggering ECM and dispersing flares."; 
this.version     = "1.04 - for Oolite 1.82+"; 


this.shipAttackedWithMissile = function(missile, whom)
		{
	if(missile.name == "Missile" && player.ship.equipmentStatus("EQ_MISSILE_SPOOF") == "EQUIPMENT_OK" && player.ship.equipmentStatus("EQ_ECM") == "EQUIPMENT_OK")
	{
	player.ship.fireECM();
	}
	else if(player.ship.fuel < 0.1 && player.ship.equipmentStatus("EQ_MISSILE_SPOOF") == "EQUIPMENT_OK")
		{
	if((player.ship.equipmentStatus("EQ_ECM") == "EQUIPMENT_OK"))
	{
	player.ship.fireECM();
	}
	player.consoleMessage("Fuel exausted. Cannot produce flares.",5);
	}
	else if(player.ship.fuel > 0.0 && player.ship.equipmentStatus("EQ_MISSILE_SPOOF") == "EQUIPMENT_OK")
		{
	if((player.ship.equipmentStatus("EQ_ECM") == "EQUIPMENT_OK"))
	{
	player.ship.fireECM();
	}
	player.ship.fuel -= 0.1;
        system.addShips("spoof_flare_package", 1, player.ship.position.subtract(player.ship.orientation.vectorUp().multiply(20)), 10);
//	system.legacy_addShipsWithinRadius("spoof_flare_package", 1, "abs", player.ship.position.subtract(player.ship.orientation.vectorUp().multiply(20)), 10);
	}
}

this.playerBoughtEquipment = function(equipmentKey)
   {     
   if(equipmentKey == ("EQ_MISSILE_SPOOF_REMOVAL"))
      {
      player.ship.removeEquipment("EQ_MISSILE_SPOOF");
      player.ship.removeEquipment("EQ_MISSILE_SPOOF_REMOVAL");
      player.credits += 1000;
      }
	}
Scripts/spoof-flares.js
"use strict";
this.name = "flares.js";
this.author = "Ramirez, modified by Wyvern for Missile Spoof";
this.copyright = "The Oolite team";
this.description = "Script for Missile Spoof";
this.version = "1.04";


this.deployFlares = function() { // Spawns flares, lures missile to flares.
		var flares = this.ship.spawn("sp_flare", 5); 
		function isHostileMissile(entity) 
			{ 
				return (entity.isShip && entity.scanClass == "CLASS_MISSILE");
			}
		var missiles = system.filteredEntities(this, isHostileMissile, this.ship, 25600)
		
		for(var i=0; i<missiles.length; i++)
			{
				var chance
				switch (missiles[i].name)
				{
					case "Missile": chance = 0.99 ;break;
					case "ECM Hardened Missile": chance = 0.99 ;break;
					case "Fragmentation Missile": chance = 0.75 ;break;
					case "Lawmaker Missile": chance = 0.75 ;break;
					case "Cascade Missile": chance = 0.99 ;break;
					case "Nuclear Torpedo": chance = 0.75 ;break;
					case "Penetrating Torpedo": chance = 0.75 ;break;
					case "Quirium Torpedo": chance = 0.99 ;break;
					case "Naval Torpedo": chance = 0.75 ;break;
					case "Intercept Missile": chance = 0.99 ;break;
					case "Anti-Thargoid Missile": chance = 0.4 ;break;
					case "Anti-Thargoid Warhead": chance = 0.4 ;break;
					case "Defence Missile": chance = 0.75 ;break;
					case "Override Missile": chance = 0.75 ;break;
					case "Military Missile": chance = 0.75 ;break;
					case "Anti-missile dart": chance = 0.0 ;break;
					case "Flare": chance = 0.0 ;break;
					default: chance = 0.75; break; // used for non listed missiles (from other oxp's).
				}
				
				if(Math.random() < chance) missiles[i].target = flares[i];
			}
	}