1package com.fs.starfarer.api.impl.campaign.skills;
3import com.fs.starfarer.api.campaign.FleetDataAPI;
4import com.fs.starfarer.api.characters.FleetTotalItem;
5import com.fs.starfarer.api.characters.FleetTotalSource;
6import com.fs.starfarer.api.characters.MutableCharacterStatsAPI;
7import com.fs.starfarer.api.characters.ShipSkillEffect;
8import com.fs.starfarer.api.characters.SkillSpecAPI;
9import com.fs.starfarer.api.combat.MutableShipStatsAPI;
10import com.fs.starfarer.api.combat.ShipAPI;
11import com.fs.starfarer.api.combat.ShipAPI.HullSize;
12import com.fs.starfarer.api.fleet.FleetMemberAPI;
13import com.fs.starfarer.api.impl.campaign.ids.Strings;
14import com.fs.starfarer.api.ui.TooltipMakerAPI;
15import com.fs.starfarer.api.util.Misc;
22 public static boolean isOfficer(MutableShipStatsAPI stats) {
23 if (stats.getEntity() instanceof ShipAPI) {
24 ShipAPI ship = (ShipAPI) stats.getEntity();
25 if (ship ==
null)
return false;
26 return !ship.getCaptain().isDefault();
28 FleetMemberAPI member = stats.getFleetMember();
29 if (member ==
null)
return false;
30 return !member.getCaptain().isDefault();
35 public FleetTotalItem getFleetTotalItem() {
39 public void apply(MutableShipStatsAPI stats, HullSize hullSize, String
id,
float level) {
43 float timeMult = 1f / ((100f + rateBonus) / 100f);
44 stats.getFighterRefitTimeMult().modifyMult(
id, timeMult);
48 public void unapply(MutableShipStatsAPI stats, HullSize hullSize, String
id) {
49 stats.getFighterRefitTimeMult().unmodifyMult(
id);
52 public String getEffectDescription(
float level) {
56 public void createCustomDescription(MutableCharacterStatsAPI stats, SkillSpecAPI skill,
57 TooltipMakerAPI info,
float width) {
63 info.addPara(
"+%s faster fighter replacement rate (maximum: %s)", 0f,
hc,
hc,
64 "" + (
int) rateBonus +
"%",
67 info.addPara(
indent +
"Effect increased by %s for ships with officers, including flagship",
69 "" + Misc.getRoundedValueMaxOneAfterDecimal(
OFFICER_MULT) + Strings.X);
72 public ScopeDescription getScopeDescription() {
73 return ScopeDescription.ALL_CARRIERS;
static FleetDataAPI getFleetData(MutableShipStatsAPI stats)
FleetTotalItem getFighterBaysTotal()
static boolean hasFighterBays(MutableShipStatsAPI stats)
void init(MutableCharacterStatsAPI stats, SkillSpecAPI skill)
float computeAndCacheThresholdBonus(MutableShipStatsAPI stats, String key, float maxBonus, ThresholdBonusType type)
void addFighterBayThresholdInfo(TooltipMakerAPI info, FleetDataAPI data)
static float REPLACEMENT_RATE_PERCENT
static float OFFICER_MULT
static boolean isOfficer(MutableShipStatsAPI stats)