1package com.fs.starfarer.api.impl.campaign.abilities;
3import java.util.ArrayList;
8import com.fs.starfarer.api.Global;
9import com.fs.starfarer.api.campaign.BattleAPI;
10import com.fs.starfarer.api.campaign.BuffManagerAPI.Buff;
11import com.fs.starfarer.api.campaign.CampaignFleetAPI;
12import com.fs.starfarer.api.campaign.econ.MarketAPI;
13import com.fs.starfarer.api.fleet.FleetMemberAPI;
14import com.fs.starfarer.api.fleet.FleetMemberViewAPI;
15import com.fs.starfarer.api.impl.campaign.ids.Stats;
16import com.fs.starfarer.api.impl.campaign.intel.BaseIntelPlugin;
17import com.fs.starfarer.api.impl.campaign.terrain.CRRecoveryBuff;
18import com.fs.starfarer.api.ui.LabelAPI;
19import com.fs.starfarer.api.ui.TooltipMakerAPI;
20import com.fs.starfarer.api.util.Misc;
21import com.fs.starfarer.api.util.Misc.FleetMemberDamageLevel;
64 if (fleet ==
null)
return;
67 if (crCostFleetMult > 0) {
70 Misc.
applyDamage(member,
null, FleetMemberDamageLevel.LOW,
false,
null,
null,
71 true,
null, member.getShipName() +
" suffers damage from Emergency Burn activation");
75 float crLoss = member.getDeployCost() *
CR_COST_MULT * crCostFleetMult;
76 member.getRepairTracker().applyCREvent(-crLoss,
"Emergency burn");
109 if (fleet ==
null)
return;
119 view.getContrailColor().shift(
getModId(),
new Color(250,150,100,255), 1f, 1f, .75f);
123 view.getEngineGlowSizeMult().shift(
getModId(), 2f, 1f, 1f, 1f);
124 view.getEngineHeightMult().shift(
getModId(), 5f, 1f, 1f, 1f);
125 view.getEngineWidthMult().shift(
getModId(), 3f, 1f, 1f, 1f);
130 float buffDur = 0.1f;
131 boolean needsSync =
false;
134 member.getBuffManager().removeBuff(buffId);
137 Buff test = member.getBuffManager().getBuff(buffId);
142 member.getBuffManager().addBuff(
new CRRecoveryBuff(buffId, 0f, buffDur));
170 if (fleet ==
null)
return;
201 List<FleetMemberAPI> result =
new ArrayList<FleetMemberAPI>();
203 if (fleet ==
null)
return result;
209 if (Math.round(member.getRepairTracker().getCR() * 100) < Math.round(crLoss * 100)) {
225 return Math.round(crLoss * 100f) / 100f;
230 if (fleet ==
null)
return 0f;
238 if (fleet ==
null)
return 0f;
244 cost += member.getDeploymentCostSupplies() *
CR_COST_MULT * crCostFleetMult;
253 if (fleet ==
null)
return;
272 tooltip.
addPara(
"Increases the maximum burn level by %s." +
273 " Reduces sensor range by %s and increases the range at" +
274 " which the fleet can be detected by %s.",
286 String years =
"year's";
288 tooltip.
addPara(
"Consumes %s light " + years +
" worth of fuel and reduces the combat readiness "
289 +
"of all ships by %s of a combat deployment. " +
290 "Prevents combat readiness recovery while active.", pad,
295 tooltip.
addPara(
"Ships with insufficient combat readiness may suffer damage when the ability is activated.", pad);
300 if (supplyCost > 0) {
301 tooltip.
addPara(
"Consumes %s fuel and reduces the combat readiness" +
302 " of all ships, costing up to %s supplies to recover. Also prevents combat readiness recovery while active.", pad,
307 tooltip.
addPara(
"Consumes %s fuel and prevents combat readiness recovery while active.", pad,
313 tooltip.
addPara(
"Not enough fuel.", bad, pad);
317 if (!nonReady.isEmpty()) {
319 tooltip.
addPara(
"Some ships don't have enough combat readiness to safely initiate an emergency burn " +
320 "and may suffer damage if the ability is activated:", pad,
329 if (nonReady.size() > max + 1) {
338 if (!member.isFighterWing()) {
339 str += member.getShipName() +
", ";
340 str += member.getHullSpec().getHullNameWithDashClass();
342 str += member.getVariant().getFullDesignationWithHullName();
366 if (engagedInHostilities) {
402 return super.isUsable() &&
412 return super.getCooldownFraction();
416 return super.showCooldownIndicator();
420 return super.getCooldownFraction() < 1f;
429 return super.getCooldownColor();
static SettingsAPI getSettings()
static boolean CODEX_TOOLTIP_MODE
static SectorAPI getSector()
void modifyMult(String source, float value)
void modifyMult(String source, float value)
void modifyPercent(String source, float value)
void modifyFlat(String source, float value)
boolean isActiveOrInProgress()
CampaignFleetAPI getFleet()
void addIncompatibleToTooltip(TooltipMakerAPI tooltip, boolean expanded)
void fleetOpenedMarket(MarketAPI market)
static float SENSOR_RANGE_MULT
static float MAX_BURN_MOD
static float DETECTABILITY_PERCENT
static float FUEL_USE_MULT
boolean showCooldownIndicator()
void fleetLeftBattle(BattleAPI battle, boolean engagedInHostilities)
void createTooltip(TooltipMakerAPI tooltip, boolean expanded)
float getCooldownFraction()
static float CR_COST_MULT
static float ACCELERATION_MULT
float computeSupplyCost()
void applyEffect(float amount, float level)
List< FleetMemberAPI > getNonReadyShips()
boolean isCooldownRenderingAdditive()
static float ACTIVATION_DAMAGE_PROB
static float getCRCost(FleetMemberAPI member, CampaignFleetAPI fleet)
static final String EMERGENCY_BURN_CR_MULT
static final String INDENT
static Color getNegativeHighlightColor()
static Color getGrayColor()
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)
Color getColor(String id)
List< FleetMemberViewAPI > getViews()
FleetDataAPI getFleetData()
MutableFleetStatsAPI getStats()
FleetLogisticsAPI getLogistics()
FaderUtil getSharedFader()
void removeFuel(float quantity)
List< FleetMemberAPI > getMembersListCopy()
CampaignUIAPI getCampaignUI()
float getFuelCostPerLightYear()
StatBonus getFleetwideMaxBurnMod()
StatBonus getDetectedRangeMod()
MutableStat getAccelerationMult()
DynamicStatsAPI getDynamic()
StatBonus getSensorRangeMod()
float getValue(String id)