1package com.fs.starfarer.api.impl.combat;
3import java.util.Iterator;
7import org.lwjgl.util.vector.Vector2f;
9import com.fs.starfarer.api.Global;
10import com.fs.starfarer.api.combat.CollisionClass;
11import com.fs.starfarer.api.combat.CombatEngineAPI;
12import com.fs.starfarer.api.combat.CombatEntityAPI;
13import com.fs.starfarer.api.combat.DamageType;
14import com.fs.starfarer.api.combat.DamagingProjectileAPI;
15import com.fs.starfarer.api.combat.EmpArcEntityAPI;
16import com.fs.starfarer.api.combat.MissileAPI;
17import com.fs.starfarer.api.combat.OnFireEffectPlugin;
18import com.fs.starfarer.api.combat.ShipAPI;
19import com.fs.starfarer.api.combat.WeaponAPI;
20import com.fs.starfarer.api.combat.WeaponAPI.AIHints;
21import com.fs.starfarer.api.impl.campaign.ids.Stats;
22import com.fs.starfarer.api.util.Misc;
28 public static float ARC = 30f;
36 float thickness = 20f;
37 float coreWidthMult = 0.67f;
46 "shock_repeater_emp_impact",
49 new Color(255,255,255,255)
54 Vector2f from =
new Vector2f(projectile.
getLocation());
65 float range = weapon.
getRange() - spread;
69 Vector2f.add(from, dir, dir);
79 range * 2f, range * 2f);
82 float minScore = Float.MAX_VALUE;
86 ignoreFlares |= weapon.
hasAIHint(AIHints.IGNORES_FLARES);
88 while (iter.hasNext()) {
89 Object o = iter.next();
92 !(o instanceof
ShipAPI))
continue;
94 if (other.
getOwner() == owner)
continue;
98 if (otherShip.
isHulk())
continue;
106 if (ignoreFlares && other instanceof
MissileAPI) {
108 if (missile.
isFlare())
continue;
113 if (dist > range)
continue;
121 if (score < minScore) {
static CombatEngineAPI getCombatEngine()
static final String PD_IGNORES_FLARES
CombatEntityAPI findTarget(DamagingProjectileAPI projectile, WeaponAPI weapon, CombatEngineAPI engine)
void onFire(DamagingProjectileAPI projectile, WeaponAPI weapon, CombatEngineAPI engine)
Vector2f pickNoTargetDest(DamagingProjectileAPI projectile, WeaponAPI weapon, CombatEngineAPI engine)
static Vector2f getUnitVectorAtDegreeAngle(float degrees)
static float getDistance(SectorEntityToken from, SectorEntityToken to)
static float getTargetingRadius(Vector2f from, CombatEntityAPI target, boolean considerShield)
static Vector2f getPointWithinRadius(Vector2f from, float r)
static boolean isInArc(float direction, float arc, Vector2f from, Vector2f to)
Iterator< Object > getCheckIterator(Vector2f loc, float checkWidth, float checkHeight)
EmpArcEntityAPI spawnEmpArcVisual(Vector2f from, CombatEntityAPI fromAnchor, Vector2f to, CombatEntityAPI toAnchor, float thickness, Color fringe, Color core)
CollisionGridAPI getAllObjectGrid()
EmpArcEntityAPI spawnEmpArc(ShipAPI damageSource, Vector2f point, CombatEntityAPI pointAnchor, CombatEntityAPI empTargetEntity, DamageType damageType, float damAmount, float empDamAmount, float maxRange, String impactSoundId, float thickness, Color fringe, Color core)
CollisionClass getCollisionClass()
void setSingleFlickerMode()
void setCoreWidthOverride(float coreWidthOverride)
DynamicStatsAPI getDynamic()
MutableShipStatsAPI getMutableStats()
boolean hasAIHint(AIHints hint)
float getValue(String id)