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}