Starsector API
Loading...
Searching...
No Matches
MercsOnTheRun.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.missions;
2
3import java.util.List;
4import java.util.Map;
5
6import com.fs.starfarer.api.Global;
7import com.fs.starfarer.api.campaign.CampaignFleetAPI;
8import com.fs.starfarer.api.campaign.InteractionDialogAPI;
9import com.fs.starfarer.api.campaign.econ.MarketAPI;
10import com.fs.starfarer.api.campaign.rules.MemoryAPI;
11import com.fs.starfarer.api.characters.PersonAPI;
12import com.fs.starfarer.api.combat.ShipVariantAPI;
13import com.fs.starfarer.api.fleet.FleetMemberAPI;
14import com.fs.starfarer.api.fleet.FleetMemberType;
15import com.fs.starfarer.api.impl.PlayerFleetPersonnelTracker;
16import com.fs.starfarer.api.impl.campaign.DModManager;
17import com.fs.starfarer.api.impl.campaign.ids.Factions;
18import com.fs.starfarer.api.impl.campaign.ids.HullMods;
19import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
20import com.fs.starfarer.api.impl.campaign.ids.Ranks;
21import com.fs.starfarer.api.impl.campaign.ids.Tags;
22import com.fs.starfarer.api.impl.campaign.ids.Voices;
23import com.fs.starfarer.api.impl.campaign.intel.bases.PirateBaseManager;
24import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithBarEvent;
25import com.fs.starfarer.api.util.Misc;
26import com.fs.starfarer.api.util.Misc.Token;
27import com.fs.starfarer.api.util.WeightedRandomPicker;
28
30 public static float BASE_PRICE_MULT = 0.75f;
31
33 protected int price;
34 protected int quantity;
35 protected MarketAPI market;
36 protected String commodity;
37 protected int totalPrice;
38
39 @Override
40 protected boolean create(MarketAPI createdAt, boolean barEvent) {
41
42 if (barEvent) {
47 //no. setGiverTags(Tags.CONTACT_UNDERWORLD, Tags.CONTACT_TRADE);
48 findOrCreateGiver(createdAt, false, false);
49 }
50
51 PersonAPI person = getPerson();
52 if (person == null) return false;
53
54 market = person.getMarket();
55 if (market == null) return false;
56
57 if (!setPersonMissionRef(person, "$motr_ref")) {
58 return false;
59 }
60
61 commodity = "marines"; // kosher?
62
63 quantity = 30 + genRandom.nextInt(21);
64
65 float _price = market.getSupplyPrice(commodity, 1, true);
66
67 float unitPrice = (int) (_price * BASE_PRICE_MULT);
68 if (unitPrice > 50) {
69 unitPrice = unitPrice / 10 * 10;
70 }
71 if (unitPrice < 1 && unitPrice > 0) {
72 unitPrice = 1;
73 }
74
75 price = (int)(unitPrice * quantity);
76
79
80 return true;
81 }
82
83 protected void updateInteractionDataImpl() {
84 // this is weird - in the accept() method, the mission is aborted, which unsets
85 // $hmdf_ref. So: we use $hmdf_ref2 in the ContactPostAccept rule
86 // and $hmdf_ref2 has an expiration of 0, so it'll get unset on its own later.
87 set("$motr_ref2", this);
88
89 set("$motr_barEvent", isBarEvent());
90 set("$motr_price", price);
91 set("$motr_numberOfMarines", quantity);
92 set("$motr_priceText", Misc.getWithDGS(price));
93 set("$motr_manOrWoman", getPerson().getManOrWoman());
94 set("$motr_hisOrHer", getPerson().getHisOrHer());
95 set("$motr_member", member);
96 }
97
98 @Override
99 protected boolean callAction(String action, String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
100 //if ("showShip".equals(action)) {
101 // dialog.getVisualPanel().showFleetMemberInfo(member, true);
102 // return true;
103 if ("buyMarines".equals(action)) {
104 //dialog.getVisualPanel().showPersonInfo(getPerson(), true);
107 return true;
108 }
109 return false;
110 }
111
112 @Override
113 public String getBaseName() {
114 return "Mercs On The Run"; // not used I don't think
115 }
116
117 @Override
118 public void accept(InteractionDialogAPI dialog, Map<String, MemoryAPI> memoryMap) {
119 // it's just an transaction immediate transaction handled in rules.csv
120 // no intel item etc
121
122 currentStage = new Object(); // so that the abort() assumes the mission was successful
123 abort();
124
125 for (CampaignFleetAPI fleet : getPerson().getMarket().getContainingLocation().getFleets()) {
126 if (fleet.getFaction().isPlayerFaction()) continue;
127 if (!Misc.isPatrol(fleet)) continue;
128 fleet.getMemoryWithoutUpdate().set(MemFlags.PATROL_EXTRA_SUSPICION, 1f);
129 }
130 }
131
132}
133
134
135
136
boolean callAction(String action, String ruleId, InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)
void accept(InteractionDialogAPI dialog, Map< String, MemoryAPI > memoryMap)
boolean create(MarketAPI createdAt, boolean barEvent)
void findOrCreateGiver(MarketAPI market, boolean addToCommDirectory, boolean cleanUpOnMissionOverIfWasNewPerson)
static String getWithDGS(float num)
Definition Misc.java:1381
static boolean isPatrol(CampaignFleetAPI fleet)
Definition Misc.java:4761
float getSupplyPrice(String commodityId, double quantity, boolean isPlayerPrice)