1package com.fs.starfarer.api.impl.campaign.skills;
5import com.fs.starfarer.api.Global;
6import com.fs.starfarer.api.campaign.FleetDataAPI;
7import com.fs.starfarer.api.characters.CharacterStatsSkillEffect;
8import com.fs.starfarer.api.characters.FleetStatsSkillEffect;
9import com.fs.starfarer.api.characters.FleetTotalItem;
10import com.fs.starfarer.api.characters.FleetTotalSource;
11import com.fs.starfarer.api.characters.MutableCharacterStatsAPI;
12import com.fs.starfarer.api.characters.ShipSkillEffect;
13import com.fs.starfarer.api.characters.SkillSpecAPI;
14import com.fs.starfarer.api.combat.MutableShipStatsAPI;
15import com.fs.starfarer.api.combat.MutableStat.StatMod;
16import com.fs.starfarer.api.combat.ShipAPI.HullSize;
17import com.fs.starfarer.api.combat.StatBonus;
18import com.fs.starfarer.api.fleet.FleetMemberAPI;
19import com.fs.starfarer.api.fleet.MutableFleetStatsAPI;
20import com.fs.starfarer.api.impl.campaign.ids.Stats;
21import com.fs.starfarer.api.ui.TooltipMakerAPI;
22import com.fs.starfarer.api.util.Misc;
51 public String getEffectDescription(
float level) {
63 info.
addPara(
"-%s crew lost due to hull damage in combat (maximum: %s)", 0f,
hc,
hc,
64 "" + (
int) damBonus +
"%",
70 public ScopeDescription getScopeDescription() {
71 return ScopeDescription.ALL_SHIPS;
84 public String getEffectDescription(
float level) {
85 return "The \"Emergency Burn\" ability no longer reduces combat readiness";
88 public String getEffectPerLevelDescription() {
92 public ScopeDescription getScopeDescription() {
93 return ScopeDescription.FLEET;
97 public static class Level3
implements FleetStatsSkillEffect {
98 public void apply(MutableFleetStatsAPI stats, String
id,
float level) {
99 stats.getDynamic().getStat(Stats.FUEL_SALVAGE_VALUE_MULT_FLEET).modifyFlat(
id,
FUEL_SALVAGE_BONUS * 0.01f);
102 public void unapply(MutableFleetStatsAPI stats, String
id) {
103 stats.getDynamic().getStat(Stats.FUEL_SALVAGE_VALUE_MULT_FLEET).unmodify(
id);
106 public String getEffectDescription(
float level) {
109 return "+" + (int) max +
"% fuel salvaged";
112 public String getEffectPerLevelDescription() {
116 public ScopeDescription getScopeDescription() {
117 return ScopeDescription.FLEET;
125 float useMult = getFuelUseMult(
id,
getFleetData(stats));
134 public String getEffectDescription(
float level) {
138 protected float getFuelUseBase(String
id,
FleetDataAPI data) {
139 if (data ==
null)
return 0f;
143 StatBonus stat = curr.getStats().getFuelUseMod();
148 fuelUse += curr.getFuelUse();
150 stat.
modifyMult(mod.source, mod.value, mod.desc);
156 protected float getFuelUseMult(String
id,
FleetDataAPI data) {
157 if (data ==
null)
return 0f;
159 String key =
"conproc1";
161 if (bonus !=
null)
return bonus;
163 float fuelUse = getFuelUseBase(
id, data);
170 useMult = 1f - maxReduced / fuelUse;
185 info.
addPara(
"Reduces fuel consumption by %s or %s units, whichever is lower",
194 float fuelUse = getFuelUseBase(
id, data);
195 float useMult = getFuelUseMult(
id, data);
197 float reduction = fuelUse * (1f - useMult);
199 boolean has = stats.getSkillLevel(skill.
getId()) > 0;
201 if (!has) is =
"would be";
202 info.
addPara(
indent +
"Your fleet has a base fuel consumption of %s, which " + is +
" reduced by %s, or %s units",
205 "" + (
int)(Math.round((1f - useMult) * 100f)) +
"%",
218 public ScopeDescription getScopeDescription() {
219 return ScopeDescription.FLEET;
233 public void createCustomDescription(MutableCharacterStatsAPI stats,
SkillSpecAPI skill,
245 public ScopeDescription getScopeDescription() {
246 return ScopeDescription.GOVERNED_OUTPOST;
static SectorAPI getSector()
void modifyMult(String source, float value)
void modifyMult(String source, float value)
StatMod getMultBonus(String source)
void unmodifyMult(String source)
void modifyFlat(String source, float value)
void unmodifyFlat(String source)
static final String FUEL_SUPPLY_BONUS_MOD
static final String EMERGENCY_BURN_CR_MULT
static FleetDataAPI getFleetData(MutableShipStatsAPI stats)
static boolean isInCampaign()
void init(MutableCharacterStatsAPI stats, SkillSpecAPI skill)
float computeAndCacheThresholdBonus(MutableShipStatsAPI stats, String key, float maxBonus, ThresholdBonusType type)
static float OP_ALL_THRESHOLD
FleetTotalItem getOPTotal()
void addOPThresholdAll(TooltipMakerAPI info, FleetDataAPI data, MutableCharacterStatsAPI cStats, float threshold)
static float FUEL_SALVAGE_BONUS
static float FUEL_USE_REDUCTION_MAX_FUEL
static String FUEL_EFFECT_ID
static float CREW_LOSS_REDUCTION
static float FUEL_USE_REDUCTION_MAX_PERCENT
static float FUEL_PROD_BONUS
static Color getBasePlayerColor()
static Color getGrayColor()
static String getRoundedValueMaxOneAfterDecimal(float value)
FleetDataAPI getFleetData()
List< FleetMemberAPI > getMembersListCopy()
Map< String, Object > getCacheClearedOnSync()
CampaignFleetAPI getPlayerFleet()
DynamicStatsAPI getDynamic()
MutableStat getCrewLossMult()
StatBonus getFuelUseMod()
DynamicStatsAPI getDynamic()
MutableStat getStat(String id)
StatBonus getMod(String id)