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}