1package com.fs.starfarer.api.impl.combat.threat;
3import java.util.ArrayList;
6import org.lwjgl.util.vector.Vector2f;
8import com.fs.starfarer.api.Global;
9import com.fs.starfarer.api.combat.CombatEngineAPI;
10import com.fs.starfarer.api.combat.ShieldAPI;
11import com.fs.starfarer.api.combat.ShipAPI;
12import com.fs.starfarer.api.combat.ShipCommand;
13import com.fs.starfarer.api.combat.ShipSystemAIScript;
14import com.fs.starfarer.api.combat.ShipSystemAPI;
15import com.fs.starfarer.api.combat.ShipwideAIFlags;
16import com.fs.starfarer.api.combat.ShipwideAIFlags.AIFlags;
17import com.fs.starfarer.api.util.IntervalUtil;
18import com.fs.starfarer.api.util.Misc;
19import com.fs.starfarer.api.util.WeightedRandomPicker;
41 public void advance(
float amount, Vector2f missileDangerDir, Vector2f collisionDangerDir,
ShipAPI target) {
44 if (
tracker.intervalElapsed()) {
60 List<ShipAPI> result =
new ArrayList<>();
65 if (other ==
ship)
continue;
87 if (other.getSystem() ==
null)
continue;
89 if (other.getSystem().getCooldownRemaining() > 0)
continue;
90 if (other.getSystem().isActive())
continue;
91 if (other.getFluxTracker().isOverloadedOrVenting())
continue;
109 ShieldAPI targetShield = other.getShield();
110 boolean targetShieldsFacingUs = targetShield !=
null &&
111 targetShield.
isOn() &&
118 if (dist < 0) dist = 0;
119 if (other == shipTarget) {
123 w += (1f - (dist / 1000f)) * 0.5f;
125 if (other.isPhased()) {
130 picker.
add(other, w);
static CombatEngineAPI getCombatEngine()
void setFlag(AIFlags flag)
void init(ShipAPI ship, ShipSystemAPI system, ShipwideAIFlags flags, CombatEngineAPI engine)
WeightedRandomPicker< ShipAPI > getWeightedTargets(ShipAPI shipTarget)
EnergyLashSystemScript script
void advance(float amount, Vector2f missileDangerDir, Vector2f collisionDangerDir, ShipAPI target)
List< ShipAPI > getPossibleTargets()
boolean isValidLashTarget(ShipAPI ship, ShipAPI other)
boolean isInRange(ShipAPI ship, ShipAPI target)
static RoilingSwarmEffect getSwarmFor(CombatEntityAPI entity)
static boolean isAttackSwarm(ShipAPI ship)
static boolean isSwarmPhaseMode(ShipAPI ship)
void advance(float amount)
static float getDistance(SectorEntityToken from, SectorEntityToken to)
static boolean isInArc(float direction, float arc, Vector2f from, Vector2f to)
List< ShipAPI > getShips()
float getCollisionRadius()
boolean isOverloadedOrVenting()
FluxTrackerAPI getFluxTracker()
ShipwideAIFlags getAIFlags()
void giveCommand(ShipCommand command, Object param, int groupNumber)
ShipSystemStatsScript getScript()
float getCooldownRemaining()
float getCurrentUsefulnessLevel(ShipAPI overseer, ShipAPI ship)