1package com.fs.starfarer.api.impl.campaign.abilities;
3import java.util.ArrayList;
8import com.fs.starfarer.api.Global;
9import com.fs.starfarer.api.campaign.BuffManagerAPI.Buff;
10import com.fs.starfarer.api.campaign.CampaignFleetAPI;
11import com.fs.starfarer.api.fleet.FleetMemberAPI;
12import com.fs.starfarer.api.impl.campaign.intel.BaseIntelPlugin;
13import com.fs.starfarer.api.impl.campaign.terrain.CRRecoveryBuff;
14import com.fs.starfarer.api.ui.TooltipMakerAPI;
15import com.fs.starfarer.api.util.Misc;
16import com.fs.starfarer.api.util.Misc.FleetMemberDamageLevel;
32 return FleetMemberDamageLevel.LOW;
50 if (fleet ==
null)
return;
57 true,
null, member.getShipName() +
" suffers damage from " +
spec.
getName() +
" activation");
86 if (fleet ==
null)
return;
94 boolean needsSync =
false;
97 member.getBuffManager().removeBuff(buffId);
100 Buff test = member.getBuffManager().getBuff(buffId);
105 member.getBuffManager().addBuff(
new CRRecoveryBuff(buffId, 0f, buffDur));
132 List<FleetMemberAPI> result =
new ArrayList<FleetMemberAPI>();
136 if (fleet ==
null)
return result;
139 float crLoss =
getCRCost(member, forTooltip);
140 if (Math.round(member.getRepairTracker().getCR() * 100) < Math.round(crLoss * 100)) {
150 return Math.round(crLoss * 100f) / 100f;
155 if (fleet ==
null)
return 0f;
163 if (fleet ==
null)
return 0f;
169 cost += member.getDeploymentCostSupplies() * crCostMult;
180 if (fleet ==
null)
return;
188 String preventsRecovery =
"";
190 preventsRecovery =
" Prevents combat readiness recovery while active.";
193 String deactivateCost =
"";
195 deactivateCost =
" The cost is incurred both when activating and deactivating the ability.";
197 preventsRecovery += deactivateCost;
200 String years =
"year's";
204 if (prefix ==
null) {
209 tooltip.
addPara(prefix +
"onsumes %s light " + years +
" worth of fuel and reduces the combat readiness "
210 +
"of all ships by %s of a combat deployment." + preventsRecovery,
216 if (prefix ==
null) {
221 tooltip.
addPara(prefix +
"educes the combat readiness "
222 +
"of all ships by %s of a combat deployment." + preventsRecovery,
228 if (prefix ==
null) {
233 tooltip.
addPara(prefix +
"onsumes %s light " + years +
" worth of fuel." + preventsRecovery,
240 tooltip.
addPara(
"Ships with insufficient combat readiness may suffer damage when the ability is activated.", pad);
245 if (supplyCost > 0 && fuelCost > 0) {
246 if (prefix ==
null) {
251 tooltip.
addPara(prefix +
"onsumes %s fuel and reduces the combat readiness" +
252 " of all ships, costing up to %s supplies to recover." + preventsRecovery, pad,
256 }
else if (supplyCost > 0) {
257 if (prefix ==
null) {
262 tooltip.
addPara(prefix +
"educes the combat readiness" +
263 " of all ships, costing up to %s supplies to recover." + preventsRecovery, pad,
266 }
else if (fuelCost > 0) {
267 if (prefix ==
null) {
272 tooltip.
addPara(prefix +
"onsumes %s fuel." + preventsRecovery, pad,
278 tooltip.
addPara(
"Not enough fuel.", bad, pad);
284 if (!nonReady.isEmpty()) {
285 tooltip.
addPara(
"Some ships don't have enough combat readiness " +
286 "and may suffer damage if the ability is activated:", pad,
293 if (nonReady.size() > max + 1) {
299 if (!member.isFighterWing()) {
300 str += member.getShipName() +
", ";
301 str += member.getHullSpec().getHullNameWithDashClass();
303 str += member.getVariant().getFullDesignationWithHullName();
333 return super.getCooldownFraction() < 1f;
338 return super.isUsable() &&
352 return super.getCooldownFraction();
361 return super.getCooldownColor();
static boolean CODEX_TOOLTIP_MODE
static SectorAPI getSector()
transient AbilitySpecAPI spec
boolean isActiveOrInProgress()
CampaignFleetAPI getFleet()
void unapplyStatsEffect()
List< FleetMemberAPI > getNonReadyShips(boolean forTooltip)
void applyEffect(float amount, float level)
boolean shouldApplyCostWhenDeactivating(boolean forTooltip)
float getCooldownFraction()
void applyFleetVisual(float amount, float level)
float getCRCost(FleetMemberAPI member, boolean forTooltip)
void addOtherNotUsableReason(TooltipMakerAPI tooltip, boolean expanded)
float getFuelCostMult(boolean forTooltip)
boolean canRecoverCRWhileActive(boolean forTooltip)
boolean isCooldownRenderingAdditive()
float getActivationAtLowCRShipDamageProbability(boolean forTooltip)
void applyStatsEffect(float amount, float level)
float computeFuelCost(boolean forTooltip)
float getCRCostMult(boolean forTooltip)
float computeSupplyCost(boolean forTooltip)
void addCostTooltipSection(TooltipMakerAPI tooltip, boolean expanded, String prefix)
FleetMemberDamageLevel getActivationDamageLevel(boolean forTooltip)
static final String INDENT
static String ucFirst(String str)
static Color getNegativeHighlightColor()
static void applyDamage(FleetMemberAPI member, Random random, FleetMemberDamageLevel level, boolean withCRDamage, String crDamageId, String crDamageReason, boolean withMessage, TextPanelAPI textPanel, String messageText)
static Color scaleAlpha(Color color, float factor)
static Color getHighlightColor()
static String getRoundedValueMaxOneAfterDecimal(float value)
static String getRoundedValue(float value)
FleetDataAPI getFleetData()
FleetLogisticsAPI getLogistics()
FaderUtil getSharedFader()
void removeFuel(float quantity)
List< FleetMemberAPI > getMembersListCopy()
CampaignUIAPI getCampaignUI()
float getFuelCostPerLightYear()