1package com.fs.starfarer.api.impl.combat.threat;
3import java.util.HashMap;
6import org.lwjgl.util.vector.Vector2f;
8import com.fs.starfarer.api.GameState;
9import com.fs.starfarer.api.Global;
10import com.fs.starfarer.api.combat.CombatEngineAPI;
11import com.fs.starfarer.api.combat.CombatFleetManagerAPI;
12import com.fs.starfarer.api.combat.DamagingProjectileAPI;
13import com.fs.starfarer.api.combat.EveryFrameWeaponEffectPlugin;
14import com.fs.starfarer.api.combat.FighterWingAPI;
15import com.fs.starfarer.api.combat.OnFireEffectPlugin;
16import com.fs.starfarer.api.combat.ShipAPI;
17import com.fs.starfarer.api.combat.WeaponAPI;
18import com.fs.starfarer.api.impl.campaign.ids.HullMods;
19import com.fs.starfarer.api.impl.campaign.ids.Stats;
20import com.fs.starfarer.api.util.Misc;
39 public static Map<String, Integer>
WING_SIZE =
new HashMap<>();
40 public static Map<String, String>
WING_IDS =
new HashMap<>();
63 if (ship ==
null)
return;
74 boolean disable = active < required;
87 if (
currWing !=
null && ((swarmsActive <= 1 && max > 1) || swarmsActive <= 0 && max <= 1)) {
95 if (
currWing ==
null && swarm !=
null) {
97 preferred = (int) Math.min(preferred, swarm.
params.baseMembersToMaintain * 0.9f);
98 if (active < preferred ) {
111 "SWARMS ACTIVE: " + swarmsActive,
131 if (wingId !=
null)
return wingId;
137 if (weapon.
getShip() !=
null) {
143 return (
int) Math.round(wingSize);
163 curr.setDoNotRender(
true);
164 curr.setExplosionScale(0f);
165 curr.setHulkChanceOverride(0f);
167 curr.getArmorGrid().clearComponentMap();
170 if (curr.getWing() !=
null) {
171 curr.getWing().removeMember(curr);
179 Vector2f.add(curr.getVelocity(), takeoffVel, curr.getVelocity());
185 if (sourceSwarm !=
null) {
189 int transfer = required;
192 Vector2f loc =
new Vector2f(takeoffVel);
209 if (swarm ==
null)
return 0;
214 if (w.isFiring())
continue;
225 if (required ==
null)
return 0;
227 int num = Math.min(wingSize, 2);
228 return required * num;
static SettingsAPI getSettings()
static CombatEngineAPI getCombatEngine()
static GameState getCurrentState()
static final String THREAT_HULLMOD
static final String SWARM_LAUNCHER_WING_SIZE_MOD
static RoilingSwarmEffect createSwarmFor(ShipAPI ship)
int getNumActiveMembers()
RoilingSwarmParams params
void transferMembersTo(RoilingSwarmEffect other, float fraction)
static RoilingSwarmEffect getSwarmFor(CombatEntityAPI entity)
static Map< String, Integer > FRAGMENT_NUM
static String RECLAMATION_SWARM_VARIANT
static Map< String, Integer > WING_SIZE
static float IMPACT_VOLUME_MULT
String getWingId(WeaponAPI weapon)
static String ATTACK_SWARM_WING
static String ATTACK_SWARM_VARIANT
int getPreferredNumFragmentsToFire(WeaponAPI weapon)
static String ATTACK_SWARM_HULL
static float INITIAL_SPAWN_DELAY
static String SWARM_LAUNCHER
void onFire(DamagingProjectileAPI projectile, WeaponAPI weapon, CombatEngineAPI engine)
int getPreferredNumFragmentsToFireConsideringAllWeapons(ShipAPI ship)
int getWingSize(WeaponAPI weapon)
static String CONSTRUCTION_SWARM_WING
void advance(float amount, CombatEngineAPI engine, WeaponAPI weapon)
static String CONSTRUCTION_SWARM_VARIANT
static String RECLAMATION_SWARM_WING
static Map< String, Integer > SWARM_RADIUS
static Map< String, String > WING_IDS
static String SHIP_UNDER_CONSTRUCTION
static Vector2f getUnitVectorAtDegreeAngle(float degrees)
static float getDistance(SectorEntityToken from, SectorEntityToken to)
String getSpriteName(String category, String id)
void maintainStatusForPlayerShip(Object key, String spriteName, String title, String data, boolean isDebuff)
CombatFleetManagerAPI getFleetManager(FleetSide side)
void removeEntity(CombatEntityAPI entity)
ShipAPI spawnShipOrWing(String specId, Vector2f location, float facing)
void removeDeployed(ShipAPI ship, boolean retreated)
void setSuppressDeploymentMessages(boolean suppressDeploymentMessages)
List< ShipAPI > getWingMembers()
void addMember(ShipAPI ship)
void setSourceShip(ShipAPI sourceShip)
DynamicStatsAPI getDynamic()
MutableShipStatsAPI getMutableStats()
boolean hasTag(String tag)
List< WeaponAPI > getAllWeapons()
ShipVariantAPI getVariant()
boolean hasHullMod(String id)
void setForceDisabled(boolean forceDisabled)
void setForceFireOneFrame(boolean forceFire)
void setCustom(Object custom)
int getPreferredNumFragmentsToFire(WeaponAPI weapon)
float getValue(String id)