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