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