001package com.fs.starfarer.api.impl.campaign.fleets; 002 003import org.lwjgl.util.vector.Vector2f; 004 005import com.fs.starfarer.api.Global; 006import com.fs.starfarer.api.campaign.CampaignFleetAPI; 007import com.fs.starfarer.api.campaign.econ.MarketAPI; 008import com.fs.starfarer.api.fleet.FleetMemberAPI; 009import com.fs.starfarer.api.impl.campaign.events.OfficerManagerEvent.SkillPickPreference; 010import com.fs.starfarer.api.impl.campaign.ids.Factions; 011import com.fs.starfarer.api.impl.campaign.ids.FleetTypes; 012import com.fs.starfarer.api.impl.campaign.ids.MemFlags; 013import com.fs.starfarer.api.impl.campaign.ids.Skills; 014import com.fs.starfarer.api.impl.campaign.missions.FleetCreatorMission; 015import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.FleetQuality; 016import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.FleetSize; 017import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.OfficerNum; 018import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.OfficerQuality; 019import com.fs.starfarer.api.impl.campaign.missions.hub.MissionFleetAutoDespawn; 020import com.fs.starfarer.api.util.WeightedRandomPicker; 021 022public class SDFLeague extends SDFBase { 023 024 public SDFLeague() { 025 } 026 027 @Override 028 protected String getFactionId() { 029 return Factions.PERSEAN; 030 } 031 032 protected SkillPickPreference getCommanderShipSkillPreference() { 033 return SkillPickPreference.NO_ENERGY_YES_BALLISTIC_YES_MISSILE_YES_DEFENSE; 034 } 035 036 @Override 037 protected MarketAPI getSourceMarket() { 038 return Global.getSector().getEconomy().getMarket("kazeron"); 039 } 040 041 @Override 042 protected String getDefeatTriggerToUse() { 043 return "SDFLeagueDefeated"; 044 } 045 046 047 @Override 048 public CampaignFleetAPI spawnFleet() { 049 050 WeightedRandomPicker<String> capitalShipNames = new WeightedRandomPicker<>(random); 051 capitalShipNames.add("Pride of Hannan"); 052 capitalShipNames.add("Pride of Kato"); 053 capitalShipNames.add("Pride of Yaribay"); 054 capitalShipNames.add("Reynard's Gift"); 055 capitalShipNames.add("Fortuna's Gift"); 056 capitalShipNames.add("Mairaath Remembered"); 057 capitalShipNames.add("Navarch Arnulf Hannan"); 058 capitalShipNames.add("Navarch Mars Kato"); 059 capitalShipNames.add("Navarch Leandro Tethys"); 060 capitalShipNames.add("Navarch Herman Zhou"); 061 062 MarketAPI kazeron = getSourceMarket(); 063 064 FleetCreatorMission m = new FleetCreatorMission(random); 065 m.beginFleet(); 066 067 Vector2f loc = kazeron.getLocationInHyperspace(); 068 069 m.triggerCreateFleet(FleetSize.MAXIMUM, FleetQuality.SMOD_2, getFactionId(), FleetTypes.PATROL_LARGE, loc); 070 071 m.triggerSetFleetSizeFraction(1.25f); 072 073 m.triggerSetFleetOfficers( OfficerNum.MORE, OfficerQuality.HIGHER); 074 m.triggerSetFleetDoctrineComp(5, 0, 0); 075 m.triggerSetFleetCommander(getPerson()); 076 077 m.triggerFleetAddCommanderSkill(Skills.CREW_TRAINING, 1); 078 m.triggerFleetAddCommanderSkill(Skills.TACTICAL_DRILLS, 1); 079 m.triggerFleetAddCommanderSkill(Skills.SUPPORT_DOCTRINE, 1); 080 m.triggerFleetAddCommanderSkill(Skills.FLUX_REGULATION, 1); 081 082 m.triggerSetPatrol(); 083 m.triggerSetFleetMemoryValue(MemFlags.MEMORY_KEY_SOURCE_MARKET, kazeron); 084 //m.triggerFleetSetNoFactionInName(); 085 m.triggerFleetSetName("All-League Aegis"); // Defense Fleet"); 086 m.triggerPatrolAllowTransponderOff(); 087 //m.triggerFleetSetPatrolActionText("patrolling"); 088 m.triggerOrderFleetPatrol(kazeron.getStarSystem()); 089 090 CampaignFleetAPI fleet = m.createFleet(); 091 fleet.removeScriptsOfClass(MissionFleetAutoDespawn.class); 092 kazeron.getContainingLocation().addEntity(fleet); 093 fleet.setLocation(kazeron.getPlanetEntity().getLocation().x, kazeron.getPlanetEntity().getLocation().y); 094 fleet.setFacing((float) random.nextFloat() * 360f); 095 096 for (FleetMemberAPI member : fleet.getFleetData().getMembersListCopy()) { 097 if (member.isCapital()) { 098 String name = capitalShipNames.pickAndRemove(); 099 if (name != null) { 100 member.setShipName(name); 101 } 102 } 103 } 104 105 return fleet; 106 } 107} 108 109 110 111