001package com.fs.starfarer.api.impl.combat;
002
003import java.awt.Color;
004
005import org.lwjgl.util.vector.Vector2f;
006
007import com.fs.starfarer.api.combat.CombatEngineAPI;
008import com.fs.starfarer.api.combat.CombatEntityAPI;
009import com.fs.starfarer.api.combat.DamageType;
010import com.fs.starfarer.api.combat.DamagingProjectileAPI;
011import com.fs.starfarer.api.combat.OnHitEffectPlugin;
012import com.fs.starfarer.api.combat.ShipAPI;
013import com.fs.starfarer.api.combat.listeners.ApplyDamageResultAPI;
014import com.fs.starfarer.api.impl.campaign.ids.Stats;
015
016public class PilumOnHitEffect implements OnHitEffectPlugin {
017
018
019        public void onHit(DamagingProjectileAPI projectile, CombatEntityAPI target,
020                                          Vector2f point, boolean shieldHit, ApplyDamageResultAPI damageResult, CombatEngineAPI engine) {
021                
022                if (!(target instanceof ShipAPI)) return;
023                ShipAPI ship = (ShipAPI) target;
024                float pierceChance = ((ShipAPI)target).getHardFluxLevel() - 0.1f;
025                pierceChance *= ship.getMutableStats().getDynamic().getValue(Stats.SHIELD_PIERCED_MULT);
026                
027                boolean piercedShield = shieldHit && (float) Math.random() < pierceChance;
028                //piercedShield = true;
029                
030                if (!shieldHit || piercedShield) {
031                        float emp = projectile.getEmpAmount();
032                        float dam = 0;
033                        engine.spawnEmpArcPierceShields(
034                                                           projectile.getSource(), point, target, target,
035                                                           DamageType.ENERGY, 
036                                                           dam, // damage
037                                                           emp, // emp 
038                                                           100000f, // max range 
039                                                           "tachyon_lance_emp_impact",
040                                                           20f, // thickness
041                                                           //new Color(25,100,155,255),
042                                                           //new Color(255,255,255,255)
043                                                           new Color(125,125,100,255),
044                                                           new Color(255,255,255,255)
045                                                           );
046                }
047        }
048}