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.ids.Conditions;
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.Industries;
013import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
014import com.fs.starfarer.api.impl.campaign.ids.People;
015import com.fs.starfarer.api.impl.campaign.ids.Tags;
016import com.fs.starfarer.api.impl.campaign.missions.FleetCreatorMission;
017import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.FleetQuality;
018import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.FleetSize;
019import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.OfficerNum;
020import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.OfficerQuality;
021import com.fs.starfarer.api.impl.campaign.missions.hub.MissionFleetAutoDespawn;
022import com.fs.starfarer.api.loading.VariantSource;
023
024public class PersonalFleetHoracioCaden extends PersonalFleetScript {
025        
026        public PersonalFleetHoracioCaden() {
027                super(People.CADEN);
028                setMinRespawnDelayDays(10f);
029                setMaxRespawnDelayDays(20f);
030        }
031        
032        @Override
033        protected MarketAPI getSourceMarket() {
034                return Global.getSector().getEconomy().getMarket("sindria");
035        }
036
037        @Override
038        public CampaignFleetAPI spawnFleet() {
039                
040                MarketAPI sindria = getSourceMarket();
041                
042                FleetCreatorMission m = new FleetCreatorMission(random);
043                m.beginFleet();
044                
045                Vector2f loc = sindria.getLocationInHyperspace();
046                
047                m.triggerCreateFleet(FleetSize.HUGE, FleetQuality.VERY_HIGH, Factions.LIONS_GUARD, FleetTypes.PATROL_LARGE, loc);
048                m.triggerSetFleetOfficers( OfficerNum.MORE, OfficerQuality.DEFAULT);
049                m.triggerSetFleetCommander(getPerson());
050                m.triggerSetFleetFaction(Factions.DIKTAT);
051                m.triggerSetPatrol();
052                m.triggerSetFleetMemoryValue(MemFlags.MEMORY_KEY_SOURCE_MARKET, sindria);
053                m.triggerFleetSetNoFactionInName();
054                m.triggerFleetSetName("Lion's Guard Grand Armada");
055                m.triggerPatrolAllowTransponderOff();
056                m.triggerFleetSetPatrolActionText("parading");
057                m.triggerOrderFleetPatrol(sindria.getStarSystem());
058                
059                CampaignFleetAPI fleet = m.createFleet();
060                fleet.removeScriptsOfClass(MissionFleetAutoDespawn.class);
061                sindria.getContainingLocation().addEntity(fleet);
062                fleet.setLocation(sindria.getPlanetEntity().getLocation().x, sindria.getPlanetEntity().getLocation().y);
063                fleet.setFacing((float) random.nextFloat() * 360f);
064                
065                // for the Lion's Guard only; make the Executor use the default with-special-weapons variant
066                for (FleetMemberAPI member : fleet.getFleetData().getMembersListCopy()) {
067                        if (member.isCapital()) {
068                                member.setVariant(member.getVariant().clone(), false, false);
069                                member.getVariant().setSource(VariantSource.REFIT);
070                                member.getVariant().addTag(Tags.TAG_NO_AUTOFIT);
071                                member.getVariant().addTag(Tags.VARIANT_CONSISTENT_WEAPON_DROPS);
072                        }
073                }
074                
075                return fleet;
076        }
077
078        @Override
079        public boolean canSpawnFleetNow() {
080                MarketAPI sindria = Global.getSector().getEconomy().getMarket("sindria");
081                if (sindria == null || sindria.hasCondition(Conditions.DECIVILIZED)) return false;
082                if (!sindria.hasIndustry(Industries.LIONS_GUARD)) return false;
083                if (!sindria.getFactionId().equals(Factions.DIKTAT)) return false;
084                return true;
085        }
086
087        @Override
088        public boolean shouldScriptBeRemoved() {
089                return false;
090        }
091
092}
093
094
095
096