1package com.fs.starfarer.api.impl.campaign.intel.group;
3import com.fs.starfarer.api.Global;
4import com.fs.starfarer.api.campaign.CampaignFleetAPI;
5import com.fs.starfarer.api.campaign.StarSystemAPI;
6import com.fs.starfarer.api.fleet.FleetMemberAPI;
7import com.fs.starfarer.api.impl.campaign.ids.Factions;
8import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
9import com.fs.starfarer.api.impl.campaign.ids.Ranks;
10import com.fs.starfarer.api.impl.campaign.ids.Skills;
11import com.fs.starfarer.api.impl.campaign.intel.events.TriTachyonHostileActivityFactor;
12import com.fs.starfarer.api.impl.campaign.missions.FleetCreatorMission;
13import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.FleetQuality;
14import com.fs.starfarer.api.ui.TooltipMakerAPI;
15import com.fs.starfarer.api.util.IntervalUtil;
16import com.fs.starfarer.api.util.Misc;
25 public static String
KEY =
"$TTMA_ref";
31 protected IntervalUtil
interval =
new IntervalUtil(0.1f, 0.3f);
55 return "mercenary attack";
60 return super.getForcesNoun();
66 return "Tri-Tachyon Mercenary Attack";
70 transient protected boolean merc =
false;
73 if (
getRandom().nextFloat() < 0.5f || size == 10) {
75 return Factions.MERCENARY;
78 return Factions.TRITACHYON;
91 m.triggerSetFleetQuality(FleetQuality.SMOD_3);
93 }
else if (
getRandom().nextFloat() < 0.5f) {
94 m.triggerSetFleetQuality(FleetQuality.SMOD_1);
96 m.triggerSetFleetQuality(FleetQuality.SMOD_2);
100 m.triggerMakeNonHostileToFaction(Factions.TRITACHYON);
104 m.triggerMakeNonHostileToFaction(Factions.DIKTAT);
105 m.triggerMakeNonHostileToFaction(Factions.PIRATES);
109 m.triggerFleetAddCommanderSkill(Skills.COORDINATED_MANEUVERS, 1);
110 m.triggerFleetAddCommanderSkill(Skills.TACTICAL_DRILLS, 1);
112 m.triggerFleetAddCommanderSkill(Skills.PHASE_CORPS, 1);
113 m.triggerFleetAddCommanderSkill(Skills.FLUX_REGULATION, 1);
117 m.triggerFleetAddCommanderSkill(Skills.ELECTRONIC_WARFARE, 1);
118 m.triggerFleetAddCommanderSkill(Skills.SUPPORT_DOCTRINE, 1);
128 boolean lightDetachment = size <= 5;
129 if (lightDetachment) {
130 m.triggerSetFleetMaxShipSize(3);
133 m.triggerFleetMakeFaster(
true, tugs,
true);
138 boolean hasCombatCapital =
false;
139 boolean hasCivCapital =
false;
140 for (FleetMemberAPI member : fleet.getFleetData().getMembersListCopy()) {
141 if (member.isCapital()) {
142 hasCombatCapital |= !member.isCivilian();
143 hasCivCapital |= member.isCivilian();
148 fleet.setName(
"Tactistar Operations Command");
149 fleet.getCommander().setRankId(Ranks.SPACE_ADMIRAL);
151 }
else if (hasCombatCapital) {
152 fleet.setName(
"Tactistar Assault Detachment");
153 fleet.getCommander().setRankId(Ranks.SPACE_CAPTAIN);
154 }
else if (hasCivCapital) {
155 fleet.setName(
"Tactistar Support Detachment");
156 fleet.getCommander().setRankId(Ranks.SPACE_CAPTAIN);
158 fleet.setName(
"Tactistar Light Detachment");
159 fleet.getCommander().setRankId(Ranks.SPACE_COMMANDER);
167 for (CampaignFleetAPI curr :
getFleets()) {
168 curr.getMemoryWithoutUpdate().unset(
TTMA_FLEET);
178 super.advance(amount);
180 float days = Misc.getDays(amount);
187 String reason =
"TTMA";
188 for (CampaignFleetAPI curr :
getFleets()) {
189 Misc.setFlagWithReason(curr.getMemoryWithoutUpdate(), MemFlags.MEMORY_KEY_MAKE_HOSTILE,
200 StarSystemAPI target = TriTachyonHostileActivityFactor.getPrimaryTriTachyonSystem();
205 info.addPara(
"Mercenary companies are notoriously flexible in their allegiances.", opad,
206 Misc.getHighlightColor(),
"notoriously flexible");
static SectorAPI getSector()
void setNeverStraggler(CampaignFleetAPI fleet)
List< CampaignFleetAPI > getFleets()
boolean isCurrent(String id)
static String PAYLOAD_ACTION
void addPostAssessmentSection(TooltipMakerAPI info, float width, float height, float opad)
void configureFleet(int size, FleetCreatorMission m)
static final String TTMA_FLEET
void configureFleet(int size, CampaignFleetAPI fleet)
static TTMercenaryAttack get()
String getFleetCreationFactionOverride(int size)
void advance(float amount)
TTMercenaryAttack(GenericRaidParams params)
static final String TTMA_COMMAND