|
|
发表于 2025-8-24 21:22:47
|
显示全部楼层
当前位置添加余晖母舰
runcode import com.fs.starfarer.api.impl.campaign.fleets.FleetFactoryV3;
import com.fs.starfarer.api.impl.campaign.procgen.themes.BaseThemeGenerator;
import com.fs.starfarer.api.impl.campaign.procgen.themes.RemnantOfficerGeneratorPlugin;
import com.fs.starfarer.api.impl.campaign.procgen.themes.RemnantThemeGenerator;
import com.fs.starfarer.api.util.DelayedActionScript;
import com.fs.starfarer.api.impl.campaign.procgen.themes.RemnantStationFleetManager;
String type = "remnant_station2_Standard";
Random random = new Random();
final CampaignFleetAPI fleet = FleetFactoryV3.createEmptyFleet(Factions.REMNANTS, FleetTypes.BATTLESTATION, null);
FleetMemberAPI member = Global.getFactory().createFleetMember(FleetMemberType.SHIP, type);
fleet.getFleetData().addFleetMember(member);
fleet.getMemoryWithoutUpdate().set(MemFlags.MEMORY_KEY_MAKE_AGGRESSIVE, true);
fleet.getMemoryWithoutUpdate().set(MemFlags.MEMORY_KEY_NO_JUMP, true);
fleet.getMemoryWithoutUpdate().set(MemFlags.MEMORY_KEY_MAKE_ALLOW_DISENGAGE, true);
fleet.addTag(Tags.NEUTRINO_HIGH);
fleet.setStationMode(true);
RemnantThemeGenerator.addRemnantStationInteractionConfig(fleet);
fleet.clearAbilities();
fleet.addAbility(Abilities.TRANSPONDER);
fleet.getAbility(Abilities.TRANSPONDER).activate();
fleet.getDetectedRangeMod().modifyFlat("gen", 1000f);
fleet.setAI(null);
/*RemnantThemeGenerator.setEntityLocation(fleet, loc, null);
RemnantThemeGenerator.convertOrbitWithSpin(fleet, 5f);*/
final LocationAPI loc = Global.getSector().getCurrentLocation();
loc.addEntity(fleet);
CampaignFleetAPI player = Global.getSector().getPlayerFleet();
fleet.setLocation(player.getLocation().x, player.getLocation().y);
boolean damaged = type.toLowerCase().contains("damaged");
String coreId = Commodities.ALPHA_CORE;
if (damaged) {
fleet.getMemoryWithoutUpdate().set("$damagedStation", true);
fleet.setName(fleet.getName() + " (Damaged)");
}
AICoreOfficerPlugin plugin = Misc.getAICoreOfficerPlugin(coreId);
PersonAPI commander = plugin.createPerson(coreId, fleet.getFaction().getId(), random);
fleet.setCommander(commander);
fleet.getFlagship().setCaptain(commander);
if (!damaged) {
RemnantOfficerGeneratorPlugin.integrateAndAdaptCoreForAIFleet(fleet.getFlagship());
RemnantOfficerGeneratorPlugin.addCommanderSkills(commander, fleet, null, 3, random);
}
member.getRepairTracker().setCR(member.getRepairTracker().getMaxCR());
loc.addScript(new DelayedActionScript(1) {
@Override
public void doAction() {
int maxFleets = 10; /* close enough */
RemnantStationFleetManager activeFleets = new RemnantStationFleetManager(
fleet, 1f, 0, maxFleets, 15f, 8, 24);
loc.addScript(activeFleets);
}
}); |
|