001package com.fs.starfarer.api.impl.campaign.rulecmd; 002 003import java.awt.Color; 004import java.util.List; 005import java.util.Map; 006 007import com.fs.starfarer.api.Global; 008import com.fs.starfarer.api.campaign.CampaignFleetAPI; 009import com.fs.starfarer.api.campaign.InteractionDialogAPI; 010import com.fs.starfarer.api.campaign.RepLevel; 011import com.fs.starfarer.api.campaign.SectorEntityToken; 012import com.fs.starfarer.api.campaign.rules.MemKeys; 013import com.fs.starfarer.api.campaign.rules.MemoryAPI; 014import com.fs.starfarer.api.impl.campaign.ids.Factions; 015import com.fs.starfarer.api.util.Misc.Token; 016 017public class RepairAvailable extends BaseCommandPlugin { 018 019 private static final Color HIGHLIGHT_COLOR = Global.getSettings().getColor("buttonShortcut"); 020 021 public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) { 022 CampaignFleetAPI playerFleet = Global.getSector().getPlayerFleet(); 023 024 float needed = playerFleet.getLogistics().getTotalRepairAndRecoverySupplyCost(); 025 if (needed > 0) needed = Math.max(1, Math.round(needed)); 026 memoryMap.get(MemKeys.GLOBAL).set("$repairSupplyCost", (int) needed, 0); 027 028 SectorEntityToken entity = dialog.getInteractionTarget(); 029 if (entity.getMarket() != null && !entity.getMarket().hasSpaceport()) { 030 return false; 031 } 032 033 RepLevel level = entity.getFaction().getRelationshipLevel(Factions.PLAYER); 034 if (level.isAtWorst(RepLevel.SUSPICIOUS)) { 035 return true; 036 } 037 038 039 return false; 040 } 041}