001package com.fs.starfarer.api.impl.campaign.econ; 002 003import com.fs.starfarer.api.Global; 004import com.fs.starfarer.api.campaign.econ.MarketAPI; 005import com.fs.starfarer.api.campaign.econ.MarketConditionAPI; 006import com.fs.starfarer.api.campaign.econ.MarketImmigrationModifier; 007import com.fs.starfarer.api.impl.campaign.ids.Conditions; 008import com.fs.starfarer.api.impl.campaign.ids.Factions; 009import com.fs.starfarer.api.impl.campaign.population.PopulationComposition; 010import com.fs.starfarer.api.ui.TooltipMakerAPI; 011import com.fs.starfarer.api.util.Misc; 012 013 014 015public class RogueAICore extends BaseMarketConditionPlugin implements MarketImmigrationModifier { 016 017 public static final float STABILITY_PENALTY = 1f; 018 019 public static RogueAICore get(MarketAPI market) { 020 MarketConditionAPI mc = market.getCondition(Conditions.ROGUE_AI_CORE); 021 if (mc != null && mc.getPlugin() instanceof RogueAICore) { 022 return (RogueAICore) mc.getPlugin(); 023 } 024 return null; 025 } 026 027 private float daysActive = 0f; 028 @Override 029 public void advance(float amount) { 030 super.advance(amount); 031 float days = Global.getSector().getClock().convertToDays(amount); 032 daysActive += days; 033 } 034 035 public float getDaysActive() { 036 return daysActive; 037 } 038 039 public void setDaysActive(float daysActive) { 040 this.daysActive = daysActive; 041 } 042 043 public void apply(String id) { 044 market.addTransientImmigrationModifier(this); 045 046 market.getStability().modifyFlat(id, -STABILITY_PENALTY, "Rogue AI core"); 047 } 048 049 @Override 050 public boolean isTransient() { 051 return false; 052 } 053 054 public void unapply(String id) { 055 market.removeTransientImmigrationModifier(this); 056 057 market.getStability().unmodifyFlat(id); 058 } 059 060 public void modifyIncoming(MarketAPI market, PopulationComposition incoming) { 061 incoming.add(Factions.LUDDIC_PATH, 10f); 062 } 063 064 protected void createTooltipAfterDescription(TooltipMakerAPI tooltip, boolean expanded) { 065 super.createTooltipAfterDescription(tooltip, expanded); 066 067 tooltip.addPara("%s stability.", 068 10f, Misc.getHighlightColor(), 069 "-" + (int)STABILITY_PENALTY); 070 } 071} 072 073 074 075 076