001package com.fs.starfarer.api.impl.combat;
002
003import java.util.Random;
004
005import com.fs.starfarer.api.combat.CombatEngineAPI;
006import com.fs.starfarer.api.combat.EveryFrameWeaponEffectPlugin;
007import com.fs.starfarer.api.combat.ShipAPI;
008import com.fs.starfarer.api.combat.WeaponAPI;
009
010public class BlinkerEffect implements EveryFrameWeaponEffectPlugin {
011
012        private float elapsed = 0;
013        boolean on = true;
014        public void advance(float amount, CombatEngineAPI engine, WeaponAPI weapon) {
015                if (engine.isPaused()) return;
016                elapsed += amount;
017
018                if (elapsed > 0.5f) {
019                        on = !on;
020                        elapsed -= 0.5f;
021                }
022                
023                ShipAPI ship = weapon.getShip();
024                if (ship.isHulk()) on = false;
025                
026                if (ship.getFluxTracker().isVenting()) {
027                        on = false;
028                } else if (ship.getFluxTracker().isOverloaded()) {
029                        on = new Random().nextInt(4) == 3;
030                }
031                
032                if (on) {
033                        weapon.getAnimation().setFrame(0);
034                } else {
035                        weapon.getAnimation().setFrame(1);
036                }
037        }
038}