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