1package com.fs.starfarer.api.impl.combat.threat;
5import org.lwjgl.util.vector.Vector2f;
7import com.fs.starfarer.api.Global;
8import com.fs.starfarer.api.combat.CombatEngineAPI;
9import com.fs.starfarer.api.combat.CombatEntityAPI;
10import com.fs.starfarer.api.combat.DamageAPI;
11import com.fs.starfarer.api.combat.DamagingProjectileAPI;
12import com.fs.starfarer.api.combat.MissileAPI;
13import com.fs.starfarer.api.combat.OnHitEffectPlugin;
14import com.fs.starfarer.api.combat.ShipAPI;
15import com.fs.starfarer.api.combat.WeaponAPI;
16import com.fs.starfarer.api.combat.listeners.ApplyDamageResultAPI;
17import com.fs.starfarer.api.combat.listeners.DamageDealtModifier;
18import com.fs.starfarer.api.impl.combat.DisintegratorEffect;
19import com.fs.starfarer.api.impl.combat.threat.RoilingSwarmEffect.RoilingSwarmParams;
20import com.fs.starfarer.api.impl.combat.threat.RoilingSwarmEffect.SwarmMember;
21import com.fs.starfarer.api.util.Misc;
68 params.flashFringeColor =
new Color(130,165,50,50);
69 params.flashCoreColor =
new Color(130,165,50,127);
77 params.flashCoreRadiusMult = 0f;
78 params.renderFlashOnSameLayer =
true;
79 params.flashRadius = 40f;
80 params.preFlashDelay = 0.5f * (float) Math.random();
82 params.flashFrequency = 40f;
83 params.flashProbability = 1f;
107 return FragmentBehaviorOnImpact.STOP_AND_FADE;
112 Color color = swarm.
params.flashFringeColor;
114 float size = swarm.params.flashRadius * 2f;
122 if (shieldHit)
return;
125 if (!(target instanceof
ShipAPI))
return;
130 Vector2f offset = Vector2f.sub(point, target.
getLocation(),
new Vector2f());
133 protected float getTotalDamage() {
136 protected int getNumTicks() {
139 protected boolean canDamageHull() {
142 protected int getNumParticlesPerTick() {
145 protected String getSoundLoopId() {
146 return "devouring_swarm_loop";
148 protected void addParticle() {
149 ParticleData p =
new ParticleData(25f, 3f + (
float) Math.random() * 2f, 1f);
150 p.color =
new Color(125,100,200,25);
156 protected void damageDealt(Vector2f loc,
float hullDamage,
float armorDamage) {
160 if ((
float) Math.random() < 0.25f)
return;
161 if (hullDamage > 0 || armorDamage > 0) {
180 return super.withEMPArc();
191 Color c = Color.white;
static SoundPlayerAPI getSoundPlayer()
static CombatEngineAPI getCombatEngine()
void modifyMult(String source, float value)
DamagingProjectileAPI projectile
RoilingSwarmEffect sourceSwarm
int getNumOtherMembersToTransfer()
void onHit(DamagingProjectileAPI projectile, CombatEntityAPI target, Vector2f point, boolean shieldHit, ApplyDamageResultAPI damageResult, CombatEngineAPI engine)
void onFire(DamagingProjectileAPI projectile, WeaponAPI weapon, CombatEngineAPI engine)
int getNumOtherMembersToAdd()
Color getEMPFringeColor()
boolean explodeOnFizzling()
static String DISMANTLING_SWARM
void reportFragmentHit(MissileAPI missile, SwarmMember p, RoilingSwarmEffect swarm, CombatEntityAPI target)
void configureMissileSwarmParams(RoilingSwarmParams params)
FragmentBehaviorOnImpact getOtherFragmentBehaviorOnImpact()
RoilingSwarmParams params
static RoilingSwarmEffect getSwarmFor(CombatEntityAPI entity)
void setDurationIn(float durationIn)
static Color setAlpha(Color color, int alpha)
static Vector2f rotateAroundOrigin(Vector2f v, float angle)
static Color scaleColorOnly(Color color, float factor)
static Vector2f getPointWithinRadius(Vector2f from, float r)
SoundAPI playSound(String id, float pitch, float volume, Vector2f loc, Vector2f vel)
void addHitParticle(Vector2f loc, Vector2f vel, float size, float brightness, float duration, Color color)
CombatEntityAPI addLayeredRenderingPlugin(CombatLayeredRenderingPlugin plugin)
MutableStat getModifier()
void setDidDamage(boolean didDamage)
void addListener(Object listener)
boolean hasListenerOfClass(Class<?> c)