1package com.fs.starfarer.api.impl.combat;
3import java.util.ArrayList;
6import com.fs.starfarer.api.combat.BaseEveryFrameCombatPlugin;
7import com.fs.starfarer.api.combat.CombatEngineAPI;
8import com.fs.starfarer.api.combat.ShipAPI;
9import com.fs.starfarer.api.combat.WeaponAPI;
10import com.fs.starfarer.api.combat.ShipEngineControllerAPI.ShipEngineAPI;
11import com.fs.starfarer.api.input.InputEventAPI;
12import com.fs.starfarer.api.util.IntervalUtil;
13import com.fs.starfarer.api.util.WeightedRandomPicker;
19 private float severity;
20 private float elapsed = 0f;
21 private float beforeDamage;
25 private float disableAttempts = 0;
29 this.severity = severity;
31 beforeDamage = 1f + 2f * (float) Math.random();
35 disableTargets.
add(weapon);
39 if (!engine.isSystemActivated()) {
40 disableTargets.
add(engine);
44 disableAttempts = Math.max(1, Math.round((0.25f + 0.75f * severity) * (
float) disableTargets.
getItems().size() * 0.25f));
47 disableAttempts *= 2f;
52 if (disableAttempts <= 0)
return;
54 List<Object>
remove =
new ArrayList<Object>();
56 for (Object target : disableTargets.
getItems()) {
73 for (Object target :
remove) {
74 disableTargets.
remove(target);
77 Object module = disableTargets.
pick();
79 disableTargets.
remove(module);
90 public void advance(
float amount, List<InputEventAPI> events) {
98 if (elapsed > beforeDamage) {
100 if (tracker.intervalElapsed()) {
104 if (ship.
isHulk() || disableAttempts <= 0) {
static boolean isOkToPermanentlyDisableStatic(ShipAPI ship, Object module)
void advance(float amount, List< InputEventAPI > events)
void init(CombatEngineAPI engine)
LowCRShipDamageSequence(ShipAPI ship, float severity)
void advance(float amount)
void removePlugin(EveryFrameCombatPlugin plugin)
boolean isEntityInPlay(CombatEntityAPI entity)
List< WeaponAPI > getUsableWeapons()
void applyCriticalMalfunction(Object module)
ShipEngineControllerAPI getEngineController()
List< ShipEngineAPI > getShipEngines()