001package com.fs.starfarer.api.impl.hullmods;
002
003import com.fs.starfarer.api.combat.BaseHullMod;
004import com.fs.starfarer.api.combat.MutableShipStatsAPI;
005import com.fs.starfarer.api.combat.ShipAPI;
006import com.fs.starfarer.api.combat.ShipAPI.HullSize;
007import com.fs.starfarer.api.impl.campaign.ids.Stats;
008
009public class DefectiveManufactory extends BaseHullMod {
010
011        //public static float SPEED_REDUCTION = 0.33333333f;
012        //public static float DAMAGE_INCREASE = 0.5f;
013        public static float SPEED_REDUCTION = 0.25f;
014        public static float DAMAGE_INCREASE = 0.25f;
015        
016        
017        public void applyEffectsToFighterSpawnedByShip(ShipAPI fighter, ShipAPI ship, String id) {
018                //if (fighter.getHullSpec().hasTag(Tags.SWARM_FIGHTER)) return;
019                float effect = ship.getMutableStats().getDynamic().getValue(Stats.DMOD_EFFECT_MULT);
020                
021                MutableShipStatsAPI stats = fighter.getMutableStats();
022                
023                stats.getMaxSpeed().modifyMult(id, 1f - SPEED_REDUCTION * effect);
024                
025                stats.getArmorDamageTakenMult().modifyPercent(id, DAMAGE_INCREASE * 100f * effect);
026                stats.getShieldDamageTakenMult().modifyPercent(id, DAMAGE_INCREASE * 100f * effect);
027                stats.getHullDamageTakenMult().modifyPercent(id, DAMAGE_INCREASE * 100f * effect);
028                
029                //fighter.setHeavyDHullOverlay();
030                fighter.setLightDHullOverlay();
031        }
032        
033        public void applyEffectsBeforeShipCreation(HullSize hullSize, MutableShipStatsAPI stats, String id) {
034                CompromisedStructure.modifyCost(hullSize, stats, id);
035        }
036        
037                
038        public String getDescriptionParam(int index, HullSize hullSize, ShipAPI ship) {
039                float effect = 1f;
040                if (ship != null) effect = ship.getMutableStats().getDynamic().getValue(Stats.DMOD_EFFECT_MULT);
041                
042                if (index == 0) return "" + (int) Math.round(SPEED_REDUCTION * 100f * effect) + "%";
043                if (index == 1) return "" + (int) Math.round(DAMAGE_INCREASE * 100f * effect) + "%";
044                if (index >= 2) return CompromisedStructure.getCostDescParam(index, 2); 
045                return null;
046        }
047}
048
049
050
051