Starsector API
Loading...
Searching...
No Matches
PilumOnHitEffect.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.combat.CombatEngineAPI;
8import com.fs.starfarer.api.combat.CombatEntityAPI;
9import com.fs.starfarer.api.combat.DamageType;
10import com.fs.starfarer.api.combat.DamagingProjectileAPI;
11import com.fs.starfarer.api.combat.OnHitEffectPlugin;
12import com.fs.starfarer.api.combat.ShipAPI;
13import com.fs.starfarer.api.combat.listeners.ApplyDamageResultAPI;
14import com.fs.starfarer.api.impl.campaign.ids.Stats;
15
16public class PilumOnHitEffect implements OnHitEffectPlugin {
17
18
19 public void onHit(DamagingProjectileAPI projectile, CombatEntityAPI target,
20 Vector2f point, boolean shieldHit, ApplyDamageResultAPI damageResult, CombatEngineAPI engine) {
21
22 if (!(target instanceof ShipAPI)) return;
23 ShipAPI ship = (ShipAPI) target;
24 float pierceChance = ((ShipAPI)target).getHardFluxLevel() - 0.1f;
25 pierceChance *= ship.getMutableStats().getDynamic().getValue(Stats.SHIELD_PIERCED_MULT);
26
27 boolean piercedShield = shieldHit && (float) Math.random() < pierceChance;
28 //piercedShield = true;
29
30 if (!shieldHit || piercedShield) {
31 float emp = projectile.getEmpAmount();
32 float dam = 0;
33 engine.spawnEmpArcPierceShields(
34 projectile.getSource(), point, target, target,
35 DamageType.ENERGY,
36 dam, // damage
37 emp, // emp
38 100000f, // max range
39 "tachyon_lance_emp_impact",
40 20f, // thickness
41 //new Color(25,100,155,255),
42 //new Color(255,255,255,255)
43 new Color(125,125,100,255),
44 new Color(255,255,255,255)
45 );
46 }
47 }
48}
void onHit(DamagingProjectileAPI projectile, CombatEntityAPI target, Vector2f point, boolean shieldHit, ApplyDamageResultAPI damageResult, CombatEngineAPI engine)