Starsector API
Loading...
Searching...
No Matches
PeriodicMissileReload.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.hullmods;
2
3import com.fs.starfarer.api.Global;
4import com.fs.starfarer.api.combat.BaseHullMod;
5import com.fs.starfarer.api.combat.CombatEngineAPI;
6import com.fs.starfarer.api.combat.MutableShipStatsAPI;
7import com.fs.starfarer.api.combat.ShipAPI;
8import com.fs.starfarer.api.combat.WeaponAPI;
9import com.fs.starfarer.api.combat.ShipAPI.HullSize;
10import com.fs.starfarer.api.combat.WeaponAPI.WeaponType;
11import com.fs.starfarer.api.util.IntervalUtil;
12
13public class PeriodicMissileReload extends BaseHullMod {
14
15
16 public static String MR_DATA_KEY = "core_reload_data_key";
17
18 public static class PeriodicMissileReloadData {
19 IntervalUtil interval = new IntervalUtil(10f, 15f);
20 }
21
22 public void applyEffectsBeforeShipCreation(HullSize hullSize, MutableShipStatsAPI stats, String id) {
23 }
24
25 public String getDescriptionParam(int index, HullSize hullSize) {
26 return null;
27 }
28
29 @Override
30 public void advanceInCombat(ShipAPI ship, float amount) {
31 super.advanceInCombat(ship, amount);
32
33 if (!ship.isAlive()) return;
34
35 CombatEngineAPI engine = Global.getCombatEngine();
36
37 String key = MR_DATA_KEY + "_" + ship.getId();
38 PeriodicMissileReloadData data = (PeriodicMissileReloadData) engine.getCustomData().get(key);
39 if (data == null) {
40 data = new PeriodicMissileReloadData();
41 engine.getCustomData().put(key, data);
42 }
43
44 data.interval.advance(amount);
45 if (data.interval.intervalElapsed()) {
46 for (WeaponAPI w : ship.getAllWeapons()) {
47 if (w.getType() != WeaponType.MISSILE) continue;
48
49 if (w.usesAmmo() && w.getAmmo() < w.getMaxAmmo()) {
50 w.setAmmo(w.getMaxAmmo());
51 }
52 }
53 }
54
55 }
56
57}
58
59
60
61
62
63
64
65
66
67
68
static CombatEngineAPI getCombatEngine()
Definition Global.java:63
void applyEffectsBeforeShipCreation(HullSize hullSize, MutableShipStatsAPI stats, String id)