Ooooooo. Yeah, here it is. (whole mod is in the OP, also)
package data.missions.class1v1;
import com.fs.starfarer.api.combat.BattleObjectiveAPI;
import com.fs.starfarer.api.fleet.FleetGoal;
import com.fs.starfarer.api.fleet.FleetMemberType;
import com.fs.starfarer.api.mission.FleetSide;
import com.fs.starfarer.api.mission.MissionDefinitionAPI;
import com.fs.starfarer.api.mission.MissionDefinitionPlugin;
public class MissionDefinition implements MissionDefinitionPlugin {
private String[] capitalShips = { "onslaught_Standard",
"onslaught_Outdated",
"onslaught_Elite",
"conquest_Elite",
"astral_Elite",
};
private String[] cruisers = { "apogee_Balanced",
"aurora_Balanced",
"dominator_Assault",
"dominator_Support",
"dominator_Outdated",
"eagle_Assault",
"eagle_Balanced",
"falcon_CS",
"falcon_Attack",
"venture_Balanced",
};
private String[] destroyers = { "buffalo_FS",
"condor_Strike",
"condor_FS",
"enforcer_Assault",
"enforcer_CS",
"enforcer_Balanced",
"gemini_Standard",
"hammerhead_Balanced",
"hammerhead_Elite",
"medusa_Attack",
"medusa_CS",
"medusa_PD",
"sunder_CS",
};
private String[] frigates = {
"brawler_Assault",
"hound_Assault",
"hyperion_Strike",
"lasher_Assault",
"lasher_PD",
"lasher_Strike",
"lasher_CS",
"omen_PD",
"tempest_Attack",
"vigilance_FS",
"vigilance_Strike",
"wolf_Assault",
"wolf_Strike",
"wolf_PD",
"wolf_CS",
};
private String getRandomShip(String[] ship_type) {
int index = (int)(Math.random() * ship_type.length);
return ship_type[index];
}
public void defineMission(MissionDefinitionAPI api) {
// Set up the fleets
api.initFleet(FleetSide.PLAYER, "ISS", FleetGoal.DEFEND, false);
api.initFleet(FleetSide.ENEMY, "ISS", FleetGoal.DEFEND, true);
// Set a witty blurb for each fleet
api.setFleetTagline(FleetSide.PLAYER, "Suck it, Blue!");
api.setFleetTagline(FleetSide.ENEMY, "No you suck it, Blue?");
// These show up as items in the bulleted list under
// "Tactical Objectives" on the mission detail screen
api.addBriefingItem("Kill the other Dude");
api.addBriefingItem("You can pretend you are testing balance");
api.addBriefingItem("But really you should be able to kill the other Dude since you are a Smarty");
// Pick a ship size
int size = (int)(Math.random() * 4);
String[] shipsAvailable = frigates;
switch(size) {
case 0:
shipsAvailable = capitalShips;
break;
case 1:
shipsAvailable = cruisers;
break;
case 2:
shipsAvailable = destroyers;
break;
case 3:
shipsAvailable = frigates;
break;
}
// Pick a random ship for each side
api.addToFleet(FleetSide.PLAYER, getRandomShip(shipsAvailable), FleetMemberType.SHIP, "Red", true);
api.addToFleet(FleetSide.ENEMY, getRandomShip(shipsAvailable), FleetMemberType.SHIP, false);
// Set up the map.
float width = 20000f;
float height = 12000f;
api.initMap((float)-width/2f, (float)width/2f, (float)-height/2f, (float)height/2f);
float minX = -width/2;
float minY = -height/2;
// All the addXXX methods take a pair of coordinates followed by data for
// whatever object is being added.
// Add two big nebula clouds
api.addNebula(minX + width * 0.66f, minY + height * 0.5f, 2000);
api.addNebula(minX + width * 0.25f, minY + height * 0.6f, 1000);
api.addNebula(minX + width * 0.25f, minY + height * 0.4f, 1000);
// And a few random ones to spice up the playing field.
// A similar approach can be used to randomize everything
// else, including fleet composition.
for (int i = 0; i < 5; i++) {
float x = (float) Math.random() * width - width/2;
float y = (float) Math.random() * height - height/2;
float radius = 100f + (float) Math.random() * 400f;
api.addNebula(x, y, radius);
}
// Add objectives.
api.addObjective(minX + width * 0.5f, minY + height * 0.5f,
"sensor_array", BattleObjectiveAPI.Importance.NORMAL);
api.addAsteroidField(-(minY + height), minY + height, -45, 2000f,
20f, 70f, 100);
api.addPlanet(minX + width * 0.8f, minY + height * 0.8f, 300f, "jungle", 300f);
}
}
straight1v1 was previously last. If that's relevant at all.