001package com.fs.starfarer.api.impl.hullmods; 002 003import com.fs.starfarer.api.combat.BaseHullMod; 004import com.fs.starfarer.api.combat.MutableShipStatsAPI; 005import com.fs.starfarer.api.combat.ShipAPI; 006import com.fs.starfarer.api.combat.ShipCommand; 007import com.fs.starfarer.api.combat.ShipAPI.HullSize; 008 009public class ShieldAlwaysOn extends BaseHullMod { 010 011 public void applyEffectsBeforeShipCreation(HullSize hullSize, MutableShipStatsAPI stats, String id) { 012 } 013 014 public String getDescriptionParam(int index, HullSize hullSize) { 015 return null; 016 } 017 018 @Override 019 public void advanceInCombat(ShipAPI ship, float amount) { 020 super.advanceInCombat(ship, amount); 021 022 if (!ship.isAlive()) return; 023 024 //CombatEngineAPI engine = Global.getCombatEngine(); 025 026 // so the ship AI can't control it 027 ship.blockCommandForOneFrame(ShipCommand.TOGGLE_SHIELD_OR_PHASE_CLOAK); 028 ship.blockCommandForOneFrame(ShipCommand.VENT_FLUX); 029 030 String id = "shield_always_on"; 031 ship.getMutableStats().getOverloadTimeMod().modifyMult(id, 2f); // frigate hull size; makes it 8 sec base 032 033 if (ship.getFluxTracker().isOverloadedOrVenting()) { 034 ship.getMutableStats().getFluxDissipation().modifyMult(id, 10f); 035 } else { 036 ship.getMutableStats().getFluxDissipation().modifyMult(id, 1f); 037 if (!ship.getShield().isOn()) { 038 ship.getShield().toggleOn(); 039 } 040 if (ship.getFluxLevel() > 0.99f) { 041 ship.getFluxTracker().beginOverloadWithTotalBaseDuration(5f); 042 } 043 } 044 045 } 046} 047 048 049 050 051 052 053 054 055 056 057