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