1package com.fs.starfarer.api.impl.combat.threat;
5import com.fs.starfarer.api.combat.MutableShipStatsAPI;
6import com.fs.starfarer.api.combat.ShipAPI;
7import com.fs.starfarer.api.combat.ShipwideAIFlags.AIFlags;
8import com.fs.starfarer.api.combat.WeaponAPI;
9import com.fs.starfarer.api.combat.WeaponAPI.AIHints;
10import com.fs.starfarer.api.combat.WeaponGroupAPI;
11import com.fs.starfarer.api.combat.listeners.WeaponRangeModifier;
12import com.fs.starfarer.api.impl.campaign.ids.Stats;
13import com.fs.starfarer.api.impl.campaign.ids.Tags;
14import com.fs.starfarer.api.util.Misc;
25 if (effectLevel <= 0f) {
36 if (w.hasAIHint(AIHints.PD))
continue;
37 if (w.hasAIHint(AIHints.NO_MANUAL_FIRE))
continue;
40 w.setGlowAmount(effectLevel, glowColor);
47 if (state == State.OUT) {
51 if (state != State.ACTIVE) {
61 if (w.hasAIHint(AIHints.NO_MANUAL_FIRE))
continue;
63 if (!w.hasAIHint(AIHints.PD) && w.getSpec().hasTag(
Tags.
FRAGMENT)) {
64 if (w.getCooldownRemaining() > 1f) {
65 w.setRemainingCooldownTo(1f);
68 w.setAmmo(w.getMaxAmmo());
70 w.setForceFireOneFrame(
true);
72 w.setForceNoFireOneFrame(
true);
85 public StatusData
getStatusData(
int index, State state,
float effectLevel) {
86 if (effectLevel <= 0f)
return null;
88 return new StatusData(
"firing fragments",
false);
89 }
else if (index == 1) {
113 float overseerDistFactor = 0f;
114 if (distToOverseer < 1000f) {
116 overseerDistFactor = (1f - Math.max(0f, distToOverseer - min) / (1000f - min)) * 0.25f;
118 return Math.min(1f, 0.5f + Math.min(0.5f, ship.
getFluxLevel() * 1f) + overseerDistFactor);
127 float min = Float.MAX_VALUE;
128 boolean found =
false;
130 if (w.isDecorative())
continue;
131 if (!w.hasAIHint(AIHints.PD) &&
132 !w.hasAIHint(AIHints.NO_MANUAL_FIRE) &&
134 min = Math.min(min, w.getRange());
151 !weapon.
hasAIHint(AIHints.NO_MANUAL_FIRE) &&
void unmodifyMult(String source)
void modifyMult(String source, float value)
Object getCustom(AIFlags flag)
static final String FRAGMENT_SWARM_RESPAWN_RATE_MULT
void setStandardJitter(ShipAPI ship, State state, float effectLevel)
float getWeaponRangeFlatMod(ShipAPI ship, WeaponAPI weapon)
static float FRAGMENT_RANGE_MULT
float getWeaponRangeMultMod(ShipAPI ship, WeaponAPI weapon)
static float getMinFragmentWeaponRange(ShipAPI ship)
float getCurrentUsefulnessLevel(ShipAPI overseer, ShipAPI ship)
float getWeaponRangePercentMod(ShipAPI ship, WeaponAPI weapon)
void applyImpl(ShipAPI ship, MutableShipStatsAPI stats, String id, State state, float effectLevel)
static float FRAGMENT_REGEN_RATE_MULT
static float MAX_VOLLEY_RANGE
StatusData getStatusData(int index, State state, float effectLevel)
static Color EMP_FRINGE_COLOR
static Color setAlpha(Color color, int alpha)
static float getDistance(SectorEntityToken from, SectorEntityToken to)
float getCollisionRadius()
DynamicStatsAPI getDynamic()
void removeListenerOfClass(Class<?> c)
void addListener(Object listener)
void setShipTarget(ShipAPI ship)
boolean hasListenerOfClass(Class<?> c)
List< WeaponAPI > getAllWeapons()
List< WeaponGroupAPI > getWeaponGroupsCopy()
ShipwideAIFlags getAIFlags()
ShipSystemAPI getSystem()
boolean hasAIHint(AIHints hint)
boolean hasTag(String tag)
MutableStat getStat(String id)