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;
020
021public class SDFHegemony extends SDFBase {
022        
023        public SDFHegemony() {
024        }
025
026        @Override
027        protected String getFactionId() {
028                return Factions.HEGEMONY;
029        }
030        
031        protected SkillPickPreference getCommanderShipSkillPreference() {
032                return SkillPickPreference.NO_ENERGY_YES_BALLISTIC_YES_MISSILE_YES_DEFENSE;
033        }
034
035        @Override
036        protected MarketAPI getSourceMarket() {
037                return Global.getSector().getEconomy().getMarket("coatl");
038        }
039
040        @Override
041        protected String getDefeatTriggerToUse() {
042                return "SDFHegemonyDefeated";
043        }
044
045
046        @Override
047        public CampaignFleetAPI spawnFleet() {
048                
049                MarketAPI coatl = getSourceMarket();
050                
051                FleetCreatorMission m = new FleetCreatorMission(random);
052                m.beginFleet();
053                
054                Vector2f loc = coatl.getLocationInHyperspace();
055                
056                m.triggerCreateFleet(FleetSize.MAXIMUM, FleetQuality.SMOD_1, getFactionId(), FleetTypes.PATROL_LARGE, loc);
057                
058                m.triggerSetFleetSizeFraction(1.25f);
059                
060                m.triggerSetFleetOfficers( OfficerNum.ALL_SHIPS, OfficerQuality.HIGHER);
061                m.triggerSetFleetDoctrineComp(5, 0, 0);
062                m.triggerSetFleetCommander(getPerson());
063
064                m.triggerFleetAddCommanderSkill(Skills.COORDINATED_MANEUVERS, 1);
065                m.triggerFleetAddCommanderSkill(Skills.TACTICAL_DRILLS, 1);
066                m.triggerFleetAddCommanderSkill(Skills.CREW_TRAINING, 1);
067                m.triggerFleetAddCommanderSkill(Skills.CARRIER_GROUP, 1);
068                m.triggerFleetAddCommanderSkill(Skills.OFFICER_TRAINING, 1);
069                
070                m.triggerSetPatrol();
071                m.triggerSetFleetMemoryValue(MemFlags.MEMORY_KEY_SOURCE_MARKET, coatl);
072                //m.triggerFleetSetNoFactionInName();
073                m.triggerFleetSetName("Core Worlds Armada");
074                m.triggerPatrolAllowTransponderOff();
075                //m.triggerFleetSetPatrolActionText("patrolling");
076                m.triggerOrderFleetPatrol(coatl.getStarSystem());
077                
078                CampaignFleetAPI fleet = m.createFleet();
079                fleet.removeScriptsOfClass(MissionFleetAutoDespawn.class);
080                coatl.getContainingLocation().addEntity(fleet);
081                fleet.setLocation(coatl.getPlanetEntity().getLocation().x, coatl.getPlanetEntity().getLocation().y);
082                fleet.setFacing((float) random.nextFloat() * 360f);
083                
084                for (FleetMemberAPI member : fleet.getFleetData().getMembersListCopy()) {
085                        if (member.getHullId().equals("legion")) {
086                                member.setVariant(getVariant("legion_xiv_Elite"), false, false);
087                        } else if (member.getHullId().equals("onslaught")) {
088                                member.setVariant(getVariant("onslaught_xiv_Elite"), false, false);
089                        } else if (member.getHullId().equals("eagle")) {
090                                member.setVariant(getVariant("eagle_xiv_Elite"), false, false);
091                        } else if (member.getHullId().equals("falcon")) {
092                                if (random.nextFloat() < 0.5f) {
093                                        member.setVariant(getVariant("falcon_xiv_Elite"), false, false);
094                                } else {
095                                        member.setVariant(getVariant("falcon_xiv_Escort"), false, false);
096                                }
097                        } else if (member.getHullId().equals("dominator")) {
098                                member.setVariant(getVariant("dominator_XIV_Elite"), false, false);
099                        } else if (member.getHullId().equals("enforcer")) {
100                                member.setVariant(getVariant("enforcer_XIV_Elite"), false, false);
101                        }
102                        
103//                              member.setVariant(member.getVariant().clone(), false, false);
104//                              member.getVariant().setSource(VariantSource.REFIT);
105//                              member.getVariant().addTag(Tags.TAG_NO_AUTOFIT);
106//                              member.getVariant().addTag(Tags.VARIANT_CONSISTENT_WEAPON_DROPS);
107                }
108                
109                return fleet;
110        }
111}
112
113
114
115