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.impl.campaign.events.OfficerManagerEvent.SkillPickPreference;
009import com.fs.starfarer.api.impl.campaign.ids.Factions;
010import com.fs.starfarer.api.impl.campaign.ids.FleetTypes;
011import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
012import com.fs.starfarer.api.impl.campaign.ids.Skills;
013import com.fs.starfarer.api.impl.campaign.missions.FleetCreatorMission;
014import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.FleetQuality;
015import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.FleetSize;
016import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.OfficerNum;
017import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.OfficerQuality;
018import com.fs.starfarer.api.impl.campaign.missions.hub.MissionFleetAutoDespawn;
019
020public class SDFTriTachyon extends SDFBase {
021        
022        public SDFTriTachyon() {
023                super();
024        }
025
026        @Override
027        protected String getFactionId() {
028                return Factions.TRITACHYON;
029        }
030        
031        protected SkillPickPreference getCommanderShipSkillPreference() {
032                return SkillPickPreference.YES_ENERGY_NO_BALLISTIC_NO_MISSILE_YES_DEFENSE;
033        }
034
035        @Override
036        protected MarketAPI getSourceMarket() {
037                return Global.getSector().getEconomy().getMarket("culann");
038        }
039
040        @Override
041        protected String getDefeatTriggerToUse() {
042                return "SDFTriTachyonDefeated";
043        }
044
045
046        @Override
047        public CampaignFleetAPI spawnFleet() {
048                
049                MarketAPI culann = getSourceMarket();
050                
051                FleetCreatorMission m = new FleetCreatorMission(random);
052                m.beginFleet();
053                
054                Vector2f loc = culann.getLocationInHyperspace();
055                
056                m.triggerCreateFleet(FleetSize.MAXIMUM, FleetQuality.SMOD_3, getFactionId(), FleetTypes.PATROL_LARGE, loc);
057                
058                m.triggerSetFleetSizeFraction(1.15f);
059                
060                m.triggerSetFleetOfficers( OfficerNum.DEFAULT, OfficerQuality.DEFAULT);
061                m.triggerSetFleetDoctrineComp(5, 0, 3); // will get some Astrals anyway
062                m.triggerSetFleetCommander(getPerson());
063                
064                m.triggerFleetAddCommanderSkill(Skills.FIGHTER_UPLINK, 1);
065                m.triggerFleetAddCommanderSkill(Skills.FLUX_REGULATION, 1);
066                m.triggerFleetAddCommanderSkill(Skills.PHASE_CORPS, 1);
067                m.triggerFleetAddCommanderSkill(Skills.ELECTRONIC_WARFARE, 1);
068                m.triggerFleetAddCommanderSkill(Skills.CYBERNETIC_AUGMENTATION, 1);
069                
070                
071                m.triggerSetPatrol();
072                m.triggerSetFleetMemoryValue(MemFlags.MEMORY_KEY_SOURCE_MARKET, culann);
073                //m.triggerFleetSetNoFactionInName();
074                m.triggerFleetSetName("Capital Assurance Reserve"); // Armada");
075                m.triggerPatrolAllowTransponderOff();
076                //m.triggerFleetSetPatrolActionText("patrolling");
077                m.triggerOrderFleetPatrol(culann.getStarSystem());
078                
079                CampaignFleetAPI fleet = m.createFleet();
080                fleet.removeScriptsOfClass(MissionFleetAutoDespawn.class);
081                culann.getContainingLocation().addEntity(fleet);
082                fleet.setLocation(culann.getPlanetEntity().getLocation().x, culann.getPlanetEntity().getLocation().y);
083                fleet.setFacing((float) random.nextFloat() * 360f);
084                
085//              for (FleetMemberAPI member : fleet.getFleetData().getMembersListCopy()) {
086//              }
087                
088                return fleet;
089        }
090}
091
092
093
094