001package com.fs.starfarer.api.impl.campaign.skills;
002
003import com.fs.starfarer.api.campaign.econ.MarketAPI;
004import com.fs.starfarer.api.characters.MarketSkillEffect;
005import com.fs.starfarer.api.impl.campaign.ids.Stats;
006
007public class Hypercognition {
008        
009        public static float ACCESS = 0.1f;
010        public static float FLEET_SIZE = 20f;
011        public static int DEFEND_BONUS = 50;
012        public static float STABILITY_BONUS = 1;
013        
014        
015        public static class Level1 implements MarketSkillEffect {
016                public void apply(MarketAPI market, String id, float level) {
017                        market.getAccessibilityMod().modifyFlat(id, ACCESS, "Hypercognition");
018                }
019
020                public void unapply(MarketAPI market, String id) {
021                        market.getAccessibilityMod().unmodifyFlat(id);
022                }
023                
024                public String getEffectDescription(float level) {
025                        return "+" + (int)Math.round(ACCESS * 100f) + "% accessibility";
026                }
027                
028                public String getEffectPerLevelDescription() {
029                        return null;
030                }
031
032                public ScopeDescription getScopeDescription() {
033                        return ScopeDescription.GOVERNED_OUTPOST;
034                }
035        }
036        
037        public static class Level2 implements MarketSkillEffect {
038                public void apply(MarketAPI market, String id, float level) {
039                        market.getStats().getDynamic().getMod(Stats.COMBAT_FLEET_SIZE_MULT).modifyFlat(id, FLEET_SIZE / 100f, "Hypercognition");
040                }
041                
042                public void unapply(MarketAPI market, String id) {
043                        market.getStats().getDynamic().getMod(Stats.COMBAT_FLEET_SIZE_MULT).unmodifyFlat(id);
044                }
045                
046                public String getEffectDescription(float level) {
047                        //return "" + (int)Math.round(FLEET_SIZE) + "% larger fleets";
048                        return "+" + (int)Math.round(FLEET_SIZE) + "% fleet size";
049                }
050                
051                public String getEffectPerLevelDescription() {
052                        return null;
053                }
054                
055                public ScopeDescription getScopeDescription() {
056                        return ScopeDescription.GOVERNED_OUTPOST;
057                }
058        }
059        
060        public static class Level3 implements MarketSkillEffect {
061                public void apply(MarketAPI market, String id, float level) {
062                        market.getStats().getDynamic().getMod(Stats.GROUND_DEFENSES_MOD).modifyMult(id, 1f + DEFEND_BONUS * 0.01f, "Hypercognition");
063                }
064
065                public void unapply(MarketAPI market, String id) {
066                        //market.getStats().getDynamic().getMod(Stats.GROUND_DEFENSES_MOD).unmodifyPercent(id);
067                        market.getStats().getDynamic().getMod(Stats.GROUND_DEFENSES_MOD).unmodifyMult(id);
068                }
069                
070                public String getEffectDescription(float level) {
071                        return "+" + (int)(DEFEND_BONUS) + "% effectiveness of ground defenses";
072                }
073                
074                public String getEffectPerLevelDescription() {
075                        return null;
076                }
077
078                public ScopeDescription getScopeDescription() {
079                        return ScopeDescription.GOVERNED_OUTPOST;
080                }
081        }
082        
083        public static class Level4 implements MarketSkillEffect {
084                public void apply(MarketAPI market, String id, float level) {
085                        market.getStability().modifyFlat(id, STABILITY_BONUS, "Hypercognition");
086                }
087
088                public void unapply(MarketAPI market, String id) {
089                        market.getStability().unmodifyFlat(id);
090                }
091                
092                public String getEffectDescription(float level) {
093                        return "+" + (int)STABILITY_BONUS + " stability";
094                }
095                
096                public String getEffectPerLevelDescription() {
097                        return null;
098                }
099
100                public ScopeDescription getScopeDescription() {
101                        return ScopeDescription.GOVERNED_OUTPOST;
102                }
103        }
104}
105
106