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
009@SuppressWarnings("unchecked")
010public class DamagedWeaponMounts extends BaseHullMod {
011
012        public static float ROTATE_MULT = 0.75f;
013        public static float RECOIL_PERCENT = 30f;
014        
015        public void applyEffectsBeforeShipCreation(HullSize hullSize, MutableShipStatsAPI stats, String id) {
016                float effect = stats.getDynamic().getValue(Stats.DMOD_EFFECT_MULT);
017                float rotMult = ROTATE_MULT + (1f - ROTATE_MULT) * (1f - effect);
018                
019                stats.getWeaponTurnRateBonus().modifyMult(id, rotMult);
020                stats.getBeamWeaponTurnRateBonus().modifyMult(id, rotMult);
021                stats.getMaxRecoilMult().modifyPercent(id, RECOIL_PERCENT * effect);
022                stats.getRecoilPerShotMult().modifyPercent(id, RECOIL_PERCENT * effect);
023                
024                CompromisedStructure.modifyCost(hullSize, stats, id);
025        }
026        
027        public String getDescriptionParam(int index, HullSize hullSize, ShipAPI ship) {
028                float effect = 1f;
029                if (ship != null) effect = ship.getMutableStats().getDynamic().getValue(Stats.DMOD_EFFECT_MULT);
030                
031                float rotMult = ROTATE_MULT + (1f - ROTATE_MULT) * (1f - effect);
032                
033                if (index == 0) return "" + (int)Math.round((1f - rotMult) * 100f) + "%";
034                if (index == 1) return "" + (int) Math.round(RECOIL_PERCENT * effect) + "%";
035                if (index >= 2) return CompromisedStructure.getCostDescParam(index, 2);
036                return null;
037        }
038
039
040}