001package com.fs.starfarer.api.impl.combat; 002 003import com.fs.starfarer.api.combat.CombatEngineAPI; 004import com.fs.starfarer.api.combat.DamagingProjectileAPI; 005import com.fs.starfarer.api.combat.MissileAPI; 006import com.fs.starfarer.api.combat.OnFireEffectPlugin; 007import com.fs.starfarer.api.combat.WeaponAPI; 008 009public class CanisterFlakPlugin implements OnFireEffectPlugin { 010 011 public CanisterFlakPlugin() { 012 } 013 014 public void onFire(DamagingProjectileAPI projectile, WeaponAPI weapon, CombatEngineAPI engine) { 015 float speedMult = 0.25f + 0.75f * (float) Math.random(); 016 projectile.getVelocity().scale(speedMult); 017 018 float angVel = (float) (Math.signum((float) Math.random() - 0.5f) * 019 (0.5f + Math.random()) * 720f); 020 projectile.setAngularVelocity(angVel); 021 022 if (projectile instanceof MissileAPI) { 023 MissileAPI missile = (MissileAPI) projectile; 024 float flightTimeMult = 0.25f + 0.75f * (float) Math.random(); 025 missile.setMaxFlightTime(missile.getMaxFlightTime() * flightTimeMult); 026 } 027 028 if (weapon != null) { 029 float delay = 0.25f + 0.75f * (float) Math.random(); 030 weapon.setRefireDelay(delay); 031 } 032 033 } 034} 035 036 037 038