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