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}