| 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];
			}
	}
 |