Starsector API
Loading...
Searching...
No Matches
MoteOnHitEffect.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.combat;
2
3import java.awt.Color;
4
5import org.lwjgl.util.vector.Vector2f;
6
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.DamageType;
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.listeners.ApplyDamageResultAPI;
16import com.fs.starfarer.api.impl.campaign.ids.Stats;
17
18public class MoteOnHitEffect implements OnHitEffectPlugin {
19
20// public static float ANTI_FIGHTER_DAMAGE = 500;
21// public static float ANTI_FIGHTER_DAMAGE_HF = 1000;
22
23 public void onHit(DamagingProjectileAPI projectile, CombatEntityAPI target,
24 Vector2f point, boolean shieldHit, ApplyDamageResultAPI damageResult, CombatEngineAPI engine) {
25 boolean withEMP = false;
26 if (target instanceof ShipAPI) {
27 ShipAPI ship = (ShipAPI) target;
28 if (!ship.isFighter()) {
29 float pierceChance = 1f;
31 boolean piercedShield = shieldHit && (float) Math.random() < pierceChance;
32
33 if (!shieldHit || piercedShield) {
34 float emp = projectile.getEmpAmount();
35 float dam = projectile.getDamageAmount(); // this should be 1 for regular and a bunch for high-frequency
36
37 engine.spawnEmpArcPierceShields(projectile.getSource(), point, target, target,
38 projectile.getDamageType(),
39 dam,
40 emp, // emp
41 100000f, // max range
42 "mote_attractor_impact_emp_arc",
43 20f, // thickness
44 //new Color(100,165,255,255),
46 new Color(255,255,255,255)
47 );
48 withEMP = true;
49 }
50
51 //ship.getFluxTracker().increaseFlux(FLUX_RAISE_AMOUNT, shieldHit);
52
53 } else {
54// float damage = ANTI_FIGHTER_DAMAGE;
55// if (MoteControlScript.isHighFrequency(projectile.getSource())) {
56// damage = ANTI_FIGHTER_DAMAGE_HF;
57// }
58 float damage = MoteControlScript.getAntiFighterDamage(projectile.getSource());
59 Global.getCombatEngine().applyDamage(projectile, ship, point,
60 damage, DamageType.ENERGY, 0f, false, false, projectile.getSource(), true);
61 }
62 } else if (target instanceof MissileAPI) {
63 float damage = MoteControlScript.getAntiFighterDamage(projectile.getSource());
64 Global.getCombatEngine().applyDamage(projectile, target, point,
65 damage, DamageType.ENERGY, 0f, false, false, projectile.getSource(), true);
66 }
67
68 //if (!withEMP) {
69 String impactSoundId = MoteControlScript.getImpactSoundId(projectile.getSource());
70 Global.getSoundPlayer().playSound(impactSoundId, 1f, 1f, point, new Vector2f());
71 //Global.getSoundPlayer().playSound("hit_glancing_energy", 1f, 1f, point, new Vector2f());
72 //}
73 }
74}
75
76
77
static SoundPlayerAPI getSoundPlayer()
Definition Global.java:49
static CombatEngineAPI getCombatEngine()
Definition Global.java:69
void onHit(DamagingProjectileAPI projectile, CombatEntityAPI target, Vector2f point, boolean shieldHit, ApplyDamageResultAPI damageResult, CombatEngineAPI engine)
SoundAPI playSound(String id, float pitch, float volume, Vector2f loc, Vector2f vel)
void applyDamage(CombatEntityAPI entity, Vector2f point, float damageAmount, DamageType damageType, float empAmount, boolean bypassShields, boolean dealsSoftFlux, Object source, boolean playSound)
EmpArcEntityAPI spawnEmpArcPierceShields(ShipAPI damageSource, Vector2f point, CombatEntityAPI pointAnchor, CombatEntityAPI empTargetEntity, DamageType damageType, float damAmount, float empDamAmount, float maxRange, String impactSoundId, float thickness, Color fringe, Color core)
MutableShipStatsAPI getMutableStats()