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