1package com.fs.starfarer.api.impl.combat.dweller;
5import org.lwjgl.util.vector.Vector2f;
7import com.fs.starfarer.api.Global;
8import com.fs.starfarer.api.combat.BeamAPI;
9import com.fs.starfarer.api.combat.BeamEffectPlugin;
10import com.fs.starfarer.api.combat.CollisionClass;
11import com.fs.starfarer.api.combat.CombatEngineAPI;
12import com.fs.starfarer.api.combat.DamageType;
13import com.fs.starfarer.api.combat.DamagingProjectileAPI;
14import com.fs.starfarer.api.combat.EmpArcEntityAPI;
15import com.fs.starfarer.api.combat.EmpArcEntityAPI.EmpArcParams;
16import com.fs.starfarer.api.combat.ShipAPI;
17import com.fs.starfarer.api.impl.combat.NegativeExplosionVisual.NEParams;
18import com.fs.starfarer.api.impl.combat.RiftCascadeMineExplosion;
19import com.fs.starfarer.api.loading.DamagingExplosionSpec;
20import com.fs.starfarer.api.util.IntervalUtil;
21import com.fs.starfarer.api.util.Misc;
47 if (normalWeaponMode) primary =
true;
54 Vector2f to2 = beam.
getTo();
67 boolean lengthChanged =
prevTo ==
null ||
72 if (!primary) forceRiftSpawn =
false;
96 boolean spawnedExplosion =
false;
97 float maxTimeWithoutExplosion = 1f;
98 if (normalWeaponMode) {
99 maxTimeWithoutExplosion = 0.5f;
101 if ((
float) Math.random() > 0.8f || forceRiftSpawn || (primary &&
sinceRiftSpawn > maxTimeWithoutExplosion)) {
108 float distFactor = 0f;
110 distFactor = (dist - 500f) / 1500f;
111 if (distFactor < 0f) distFactor = 0f;
112 if (distFactor > 1f) distFactor = 1f;
115 float sizeAdd = 5f * distFactor;
116 float baseSize = 15f;
117 if (normalWeaponMode) {
123 color, baseSize + sizeAdd);
128 p.spawnHitGlowAt = 1f;
129 p.additiveBlend =
true;
130 p.blackColor = Color.white;
132 p.withNegativeParticles =
false;
133 p.withHitGlow =
false;
139 spawnedExplosion =
true;
143 if (dist > 100f && ((
float) Math.random() > 0.5f || (normalWeaponMode && spawnedExplosion))) {
145 EmpArcParams params =
new EmpArcParams();
146 params.segmentLengthMult = 8f;
147 params.zigZagReductionFactor = 0.15f;
148 params.fadeOutDist = 50f;
149 params.minFadeOutMult = 10f;
151 params.flickerRateMult = 0.3f;
155 float fraction = Math.min(0.33f, 300f / dist);
156 params.brightSpotFullFraction = fraction;
157 params.brightSpotFadeFraction = fraction;
160 params.movementDurOverride = Math.max(0.05f, dist / arcSpeed);
167 new Color(255,255,255,255),
176 Vector2f pt = Vector2f.add(from, to,
new Vector2f());
184 if (normalWeaponMode) {
185 Vector2f pt = Vector2f.add(from, to,
new Vector2f());
190 }
else if (primary) {
191 Vector2f pt = Vector2f.add(from, to,
new Vector2f());
215 new Color(255,255,255,0),
216 new Color(255,100,100,0)
static SoundPlayerAPI getSoundPlayer()
static void spawnStandardRift(DamagingProjectileAPI explosion, NEParams params)
static NEParams createStandardRiftParams(String minelayerId, float baseRadius)
static float DAMAGE_MULT_NORMAL_WEAPON
IntervalUtil fireInterval
boolean hadDamageTargetPrev
void advance(float amount, CombatEngineAPI engine, BeamAPI beam)
DamagingExplosionSpec createExplosionSpec(float damageMult)
boolean lengthChangedPrev
static String DARKENED_GAZE_SYSTEM_TAG
static String DARKENED_GAZE_PRIMARY_WEAPON_TAG
static float RIFT_LIGHTNING_SPEED
static Color RIFT_LIGHTNING_COLOR
void setSoundSetId(String soundSetId)
void setSoundVolume(float soundVolume)
void setDamageType(DamageType damageType)
void setUseDetailedExplosion(boolean useDetailedExplosion)
void advance(float amount)
static float getDistance(SectorEntityToken from, SectorEntityToken to)
void playLoop(String id, Object playingEntity, float pitch, float volume, Vector2f loc, Vector2f vel)
SoundAPI playSound(String id, float pitch, float volume, Vector2f loc, Vector2f vel)
CombatEntityAPI getDamageTarget()
Vector2f getRayEndPrevFrame()
EmpArcEntityAPI spawnEmpArcVisual(Vector2f from, CombatEntityAPI fromAnchor, Vector2f to, CombatEntityAPI toAnchor, float thickness, Color fringe, Color core)
DamagingProjectileAPI spawnDamagingExplosion(DamagingExplosionSpec spec, ShipAPI source, Vector2f location)
void setSingleFlickerMode()
void setFadedOutAtStart(boolean fadedOutAtStart)
void setRenderGlowAtStart(boolean renderGlowAtStart)
void setCoreWidthOverride(float coreWidthOverride)
boolean hasTag(String tag)