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.HullSize;
006import com.fs.starfarer.api.impl.campaign.ids.Stats;
007
008public class RuggedConstruction extends BaseHullMod {
009
010        public static float DEPLOYMENT_COST_MULT = 0.5f;
011        
012//      public static float MIN_HULL = 30f;
013//      public static float MAX_HULL = 40f;
014//      
015//      public static float MIN_CR = 30f;
016//      public static float MAX_CR = 40f;
017//      
018//      public static float CR_LOSS_WHEN_DISABLED = 0.1f;
019//      public static float REPAIR_FRACTION = 0.5f;
020        
021        public static float DMOD_EFFECT_MULT = 0.5f;
022        public static float DMOD_AVOID_CHANCE = 50f;
023        
024        public void applyEffectsBeforeShipCreation(HullSize hullSize, MutableShipStatsAPI stats, String id) {
025                stats.getDynamic().getStat(Stats.DMOD_EFFECT_MULT).modifyMult(id, DMOD_EFFECT_MULT);
026                //stats.getDynamic().getMod(Stats.DMOD_AVOID_PROB_MOD).modifyFlat(id, DMOD_AVOID_CHANCE * 0.01f);
027                stats.getDynamic().getMod(Stats.DMOD_ACQUIRE_PROB_MOD).modifyMult(id, (1f - DMOD_AVOID_CHANCE * 0.01f));
028                
029                stats.getDynamic().getMod(Stats.INDIVIDUAL_SHIP_RECOVERY_MOD).modifyFlat(id, 1000f);
030                
031                //stats.getDynamic().getStat(Stats.CR_LOSS_WHEN_DISABLED_MULT).modifyMult(id, CR_LOSS_WHEN_DISABLED);
032                //stats.getDynamic().getMod(Stats.INSTA_REPAIR_FRACTION).modifyFlat(id, REPAIR_FRACTION + 0.45f);
033                //stats.getDynamic().getMod(Stats.INSTA_REPAIR_FRACTION).modifyFlat(id, REPAIR_FRACTION);
034                
035                
036//              stats.getDynamic().getMod(Stats.RECOVERED_HULL_MIN).modifyFlat(id, MIN_HULL * 0.01f);
037//              stats.getDynamic().getMod(Stats.RECOVERED_HULL_MAX).modifyFlat(id, MAX_HULL * 0.01f);
038//              stats.getDynamic().getMod(Stats.RECOVERED_CR_MIN).modifyFlat(id, MIN_CR * 0.01f);
039//              stats.getDynamic().getMod(Stats.RECOVERED_CR_MAX).modifyFlat(id, MAX_CR * 0.01f);
040                
041//              stats.getMinArmorFraction().modifyFlat(id, 0.1f);
042//              stats.getBeamDamageTakenMult().modifyMult(id, 0.5f);
043                
044                stats.getSuppliesToRecover().modifyMult(id, DEPLOYMENT_COST_MULT);
045        }
046        
047        public String getDescriptionParam(int index, HullSize hullSize) {
048                if (index == 0) return "" + (int) Math.round((1f - DMOD_EFFECT_MULT) * 100f) + "%";
049                if (index == 1) return "" + (int) DMOD_AVOID_CHANCE + "%";
050                if (index == 2) return "" + (int) Math.round((1f - DEPLOYMENT_COST_MULT) * 100f) + "%";
051                return null;
052        }
053
054        @Override
055        public boolean affectsOPCosts() {
056                return true; // probably intended even though it doesn't, actually -am
057        }
058
059}
060
061
062
063
064
065
066
067