1package com.fs.starfarer.api.impl.combat;
3import org.lwjgl.util.vector.Vector2f;
5import com.fs.starfarer.api.Global;
6import com.fs.starfarer.api.combat.ArmorGridAPI;
7import com.fs.starfarer.api.combat.CombatEngineAPI;
8import com.fs.starfarer.api.combat.CombatEntityAPI;
9import com.fs.starfarer.api.combat.DamagingProjectileAPI;
10import com.fs.starfarer.api.combat.OnHitEffectPlugin;
11import com.fs.starfarer.api.combat.ShipAPI;
12import com.fs.starfarer.api.combat.listeners.ApplyDamageResultAPI;
13import com.fs.starfarer.api.util.Misc;
21 if (!shieldHit && target instanceof
ShipAPI) {
35 if (cell ==
null)
return;
37 int gridWidth = grid.
getGrid().length;
38 int gridHeight = grid.
getGrid()[0].length;
42 float damageDealt = 0f;
43 for (
int i = -2; i <= 2; i++) {
44 for (
int j = -2; j <= 2; j++) {
45 if ((i == 2 || i == -2) && (j == 2 || j == -2))
continue;
50 if (cx < 0 || cx >= gridWidth || cy < 0 || cy >= gridHeight)
continue;
52 float damMult = 1/30f;
53 if (i == 0 && j == 0) {
55 }
else if (i <= 1 && i >= -1 && j <= 1 && j >= -1) {
62 float damage = armorDamage * damMult * damageTypeMult;
63 damage = Math.min(damage, armorInCell);
64 if (damage <= 0)
continue;
67 damageDealt += damage;
71 if (damageDealt > 0) {
static CombatEngineAPI getCombatEngine()
static void dealArmorDamage(DamagingProjectileAPI projectile, ShipAPI target, Vector2f point, float armorDamage)
void onHit(DamagingProjectileAPI projectile, CombatEntityAPI target, Vector2f point, boolean shieldHit, ApplyDamageResultAPI damageResult, CombatEngineAPI engine)
static float getDamageTypeMult(ShipAPI source, ShipAPI target)
static boolean shouldShowDamageFloaty(ShipAPI source, ShipAPI target)
static Color FLOATY_ARMOR_DAMAGE_COLOR
void setArmorValue(int cellX, int cellY, float value)
int[] getCellAtLocation(Vector2f loc)
float getArmorValue(int cellX, int cellY)
void addFloatingDamageText(Vector2f loc, float damage, Color color, CombatEntityAPI attachedTo, CombatEntityAPI damageSource)
ArmorGridAPI getArmorGrid()
void syncWithArmorGridState()