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