1package com.fs.starfarer.api.impl.combat;
7import com.fs.starfarer.api.Global;
8import com.fs.starfarer.api.combat.BaseEveryFrameCombatPlugin;
9import com.fs.starfarer.api.combat.EveryFrameCombatPlugin;
10import com.fs.starfarer.api.combat.MutableShipStatsAPI;
11import com.fs.starfarer.api.combat.ShipAPI;
12import com.fs.starfarer.api.combat.ShipAPI.HullSize;
13import com.fs.starfarer.api.combat.ShipSystemAPI;
14import com.fs.starfarer.api.combat.ShipSystemAPI.SystemState;
15import com.fs.starfarer.api.combat.ShipwideAIFlags.AIFlags;
16import com.fs.starfarer.api.input.InputEventAPI;
17import com.fs.starfarer.api.util.Misc;
24 protected static float RANGE = 1500f;
26 public static Color
TEXT_COLOR =
new Color(255,55,55,255);
32 public static class TargetData {
36 public float currDamMult;
37 public float elaspedAfterInState;
53 final String targetDataKey = ship.
getId() +
"_entropy_target_data";
56 if (state == State.IN && targetDataObj ==
null) {
66 }
else if (state == State.IDLE && targetDataObj !=
null) {
68 ((TargetData)targetDataObj).currDamMult = 1f;
71 if (targetDataObj ==
null || ((TargetData) targetDataObj).target ==
null)
return;
73 final TargetData targetData = (TargetData) targetDataObj;
74 targetData.currDamMult = 1f + (
DAM_MULT - 1f) * effectLevel;
76 if (targetData.targetEffectPlugin ==
null) {
79 public void advance(
float amount, List<InputEventAPI> events) {
85 "" + (
int)((targetData.currDamMult - 1f) * 100f) +
"% more damage taken",
true);
88 if (targetData.currDamMult <= 1f || !targetData.ship.
isAlive()) {
106 if (effectLevel > 0) {
107 if (state != State.IN) {
110 float shipJitterLevel = 0;
111 if (state == State.IN) {
112 shipJitterLevel = effectLevel;
115 shipJitterLevel = Math.max(0, durOut - targetData.elaspedAfterInState) / durOut;
117 float targetJitterLevel = effectLevel;
119 float maxRangeBonus = 50f;
120 float jitterRangeBonus = shipJitterLevel * maxRangeBonus;
123 if (shipJitterLevel > 0) {
125 ship.
setJitter(
KEY_SHIP, color, shipJitterLevel, 4, 0f, 0 + jitterRangeBonus * 1f);
128 if (targetJitterLevel > 0) {
149 if (target !=
null) {
152 if (dist > range + radSum) target =
null;
163 if (dist > range + radSum || target.
isFighter()) target =
null;
169 if (target !=
null && target.
isFighter()) target =
null;
170 if (target ==
null) {
183 public StatusData
getStatusData(
int index, State state,
float effectLevel) {
184 if (effectLevel > 0) {
186 float damMult = 1f + (
DAM_MULT - 1f) * effectLevel;
187 return new StatusData(
"" + (
int)((damMult - 1f) * 100f) +
"% more damage to target",
false);
197 if (system.
getState() != SystemState.IDLE)
return null;
200 if (target !=
null && target != ship) {
204 return "OUT OF RANGE";
214 return target !=
null && target != ship;
static CombatEngineAPI getCombatEngine()
void modifyMult(String source, float value)
Object getCustom(AIFlags flag)
boolean hasFlag(AIFlags flag)
float computeEffective(float baseValue)
String getInfoText(ShipSystemAPI system, ShipAPI ship)
void unapply(MutableShipStatsAPI stats, String id)
boolean isUsable(ShipSystemAPI system, ShipAPI ship)
static float getMaxRange(ShipAPI ship)
void apply(MutableShipStatsAPI stats, final String id, State state, float effectLevel)
ShipAPI findTarget(ShipAPI ship)
StatusData getStatusData(int index, State state, float effectLevel)
static Color JITTER_COLOR
static Color JITTER_UNDER_COLOR
static ShipAPI findClosestShipEnemyOf(ShipAPI ship, Vector2f locFromForSorting, HullSize smallestToNote, float maxRange, boolean considerShipRadius)
static float getDistance(SectorEntityToken from, SectorEntityToken to)
void maintainStatusForPlayerShip(Object key, String spriteName, String title, String data, boolean isDebuff)
Map< String, Object > getCustomData()
void removePlugin(EveryFrameCombatPlugin plugin)
void addPlugin(EveryFrameCombatPlugin plugin)
float getElapsedInLastFrame()
float getCollisionRadius()
void showOverloadFloatyIfNeeded()
MutableStat getEmpDamageTakenMult()
StatBonus getSystemRangeBonus()
MutableStat getHullDamageTakenMult()
MutableStat getArmorDamageTakenMult()
CombatEntityAPI getEntity()
MutableStat getShieldDamageTakenMult()
MutableShipStatsAPI getMutableStats()
FluxTrackerAPI getFluxTracker()
Vector2f getMouseTarget()
ShipwideAIFlags getAIFlags()
ShipSystemAPI getSystem()
void setJitter(Object source, Color color, float intensity, int copies, float range)
ShipSystemSpecAPI getSpecAPI()
String getIconSpriteName()