Starsector API
Loading...
Searching...
No Matches
CargoScanApplyResult.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.rulecmd;
2
3import java.awt.Color;
4import java.util.List;
5import java.util.Map;
6
7import com.fs.starfarer.api.Global;
8import com.fs.starfarer.api.campaign.CampaignFleetAPI;
9import com.fs.starfarer.api.campaign.CargoStackAPI;
10import com.fs.starfarer.api.campaign.InteractionDialogAPI;
11import com.fs.starfarer.api.campaign.TextPanelAPI;
12import com.fs.starfarer.api.campaign.rules.MemKeys;
13import com.fs.starfarer.api.campaign.rules.MemoryAPI;
14import com.fs.starfarer.api.fleet.FleetMemberAPI;
15import com.fs.starfarer.api.impl.campaign.ids.Strings;
16import com.fs.starfarer.api.impl.campaign.rulecmd.CargoScan.CargoScanResult;
17import com.fs.starfarer.api.util.Misc;
18import com.fs.starfarer.api.util.Misc.Token;
19
21
22
23 public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
24 if (dialog == null) return false;
25 if (!(dialog.getInteractionTarget() instanceof CampaignFleetAPI)) return false;
26
27 CampaignFleetAPI playerFleet = Global.getSector().getPlayerFleet();
28 CampaignFleetAPI other = (CampaignFleetAPI) dialog.getInteractionTarget();
29
30 MemoryAPI memory = memoryMap.get(MemKeys.LOCAL);
31
32 CargoScanResult result = (CargoScanResult) memory.get(CargoScan.RESULT_KEY);
33
34 TextPanelAPI text = dialog.getTextPanel();
35 Color red = Misc.getNegativeHighlightColor();
36
37 for (CargoStackAPI stack : result.getIllegalFound().getStacksCopy()) {
38 playerFleet.getCargo().removeItems(stack.getType(), stack.getData(), stack.getSize());
39 if (stack.isCommodityStack()) {
40 AddRemoveCommodity.addCommodityLossText(stack.getCommodityId(), (int)stack.getSize(), text);
41 } else {
42 text.setFontSmallInsignia();
43 text.addParagraph("Lost " + (int) stack.getSize() + Strings.X + " " + stack.getDisplayName(), red);
44 text.highlightLastInLastPara("" + (int) stack.getSize() + Strings.X, Misc.getHighlightColor());
45 }
46 text.setFontInsignia();
47 }
48
49 for (FleetMemberAPI member : result.shipsToDamage) {
50 float crLost = Math.min(member.getRepairTracker().getBaseCR(), member.getDeployCost() * 0.5f);
51 crLost += 0.01f * (float)Misc.random.nextInt(10);
52 if (crLost > 0) {
53 member.getRepairTracker().applyCREvent(-crLost, "Vindictive cargo inspection");
54 AddRemoveCommodity.addCRLossText(member, text, crLost);
55 }
56
57 }
58
59 return true;
60 }
61
62}
63
64
65
66
67
68
69
static SectorAPI getSector()
Definition Global.java:59
static void addCommodityLossText(String commodityId, int quantity, TextPanelAPI text)
static void addCRLossText(FleetMemberAPI member, TextPanelAPI text, float crLoss)
boolean execute(String ruleId, InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)