001package com.fs.starfarer.api.impl.hullmods; 002 003import com.fs.starfarer.api.Global; 004import com.fs.starfarer.api.combat.BaseHullMod; 005import com.fs.starfarer.api.combat.CombatEngineAPI; 006import com.fs.starfarer.api.combat.MutableShipStatsAPI; 007import com.fs.starfarer.api.combat.ShipAPI; 008import com.fs.starfarer.api.combat.WeaponAPI; 009import com.fs.starfarer.api.combat.ShipAPI.HullSize; 010import com.fs.starfarer.api.combat.WeaponAPI.WeaponType; 011import com.fs.starfarer.api.util.IntervalUtil; 012 013public class PeriodicMissileReload extends BaseHullMod { 014 015 016 public static String MR_DATA_KEY = "core_reload_data_key"; 017 018 public static class PeriodicMissileReloadData { 019 IntervalUtil interval = new IntervalUtil(10f, 15f); 020 } 021 022 public void applyEffectsBeforeShipCreation(HullSize hullSize, MutableShipStatsAPI stats, String id) { 023 } 024 025 public String getDescriptionParam(int index, HullSize hullSize) { 026 return null; 027 } 028 029 @Override 030 public void advanceInCombat(ShipAPI ship, float amount) { 031 super.advanceInCombat(ship, amount); 032 033 if (!ship.isAlive()) return; 034 035 CombatEngineAPI engine = Global.getCombatEngine(); 036 037 String key = MR_DATA_KEY + "_" + ship.getId(); 038 PeriodicMissileReloadData data = (PeriodicMissileReloadData) engine.getCustomData().get(key); 039 if (data == null) { 040 data = new PeriodicMissileReloadData(); 041 engine.getCustomData().put(key, data); 042 } 043 044 data.interval.advance(amount); 045 if (data.interval.intervalElapsed()) { 046 for (WeaponAPI w : ship.getAllWeapons()) { 047 if (w.getType() != WeaponType.MISSILE) continue; 048 049 if (w.usesAmmo() && w.getAmmo() < w.getMaxAmmo()) { 050 w.setAmmo(w.getMaxAmmo()); 051 } 052 } 053 } 054 055 } 056 057} 058 059 060 061 062 063 064 065 066 067 068