1package com.fs.starfarer.api.impl.campaign.missions;
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.campaign.DModManager;
16import com.fs.starfarer.api.impl.campaign.ids.Factions;
17import com.fs.starfarer.api.impl.campaign.ids.HullMods;
18import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
19import com.fs.starfarer.api.impl.campaign.ids.Ranks;
20import com.fs.starfarer.api.impl.campaign.ids.Tags;
21import com.fs.starfarer.api.impl.campaign.ids.Voices;
22import com.fs.starfarer.api.impl.campaign.intel.bases.PirateBaseManager;
23import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithBarEvent;
24import com.fs.starfarer.api.util.Misc;
25import com.fs.starfarer.api.util.Misc.Token;
26import com.fs.starfarer.api.util.WeightedRandomPicker;
31 public static WeightedRandomPicker<String>
HULLS =
new WeightedRandomPicker<String>();
33 HULLS.add(
"buffalo_Hull", 7f);
34 HULLS.add(
"tarsus_Hull", 7f);
35 HULLS.add(
"colossus_Hull", 5f);
36 HULLS.add(
"atlas_Hull", 1f);
37 HULLS.add(
"wayfarer_Hull", 5f);
38 HULLS.add(
"gemini_Hull", 1f);
39 HULLS.add(
"mule_d_pirates_Hull", 1f);
40 HULLS.add(
"mule_Hull", 1f);
48 protected boolean create(MarketAPI createdAt,
boolean barEvent) {
50 float probAbort = 0.75f * PirateBaseManager.getInstance().getStandardTimeFactor();
51 if (rollProbability(probAbort))
return false;
54 setGiverFaction(Factions.INDEPENDENT);
55 setGiverPost(Ranks.POST_SPACER);
56 setGiverVoice(Voices.SPACER);
57 setGiverImportance(pickLowImportance());
58 setGiverTags(Tags.CONTACT_UNDERWORLD, Tags.CONTACT_TRADE);
59 findOrCreateGiver(createdAt,
false,
false);
62 PersonAPI person = getPerson();
63 if (person ==
null)
return false;
64 MarketAPI market = person.getMarket();
65 if (market ==
null)
return false;
67 if (!setPersonMissionRef(person,
"$hmdf_ref")) {
72 setGiverIsPotentialContactOnSuccess();
88 String variantId =
HULLS.pick(genRandom);
91 assignShipName(
member, Factions.INDEPENDENT);
93 int dMods = 2 + genRandom.nextInt(3);
97 member.getCrewComposition().setCrew(100000);
98 member.getRepairTracker().setCR(0.7f);
102 setRepFactionChangesTiny();
103 setRepPersonChangesVeryLow();
112 set(
"$hmdf_ref2",
this);
114 set(
"$hmdf_barEvent", isBarEvent());
115 set(
"$hmdf_hullClass",
member.getHullSpec().getHullNameWithDashClass());
116 set(
"$hmdf_price", Misc.getWithDGS(
price));
117 set(
"$hmdf_manOrWoman", getPerson().getManOrWoman());
118 set(
"$hmdf_hisOrHer", getPerson().getHisOrHer());
119 set(
"$hmdf_member",
member);
123 protected boolean callAction(String action, String ruleId, InteractionDialogAPI dialog, List<Token> params,
124 Map<String, MemoryAPI> memoryMap) {
125 if (
"showShip".equals(action)) {
126 dialog.getVisualPanel().showFleetMemberInfo(
member,
true);
128 }
else if (
"showPerson".equals(action)) {
129 dialog.getVisualPanel().showPersonInfo(getPerson(),
true);
137 return "Hand-me-down Freighter";
141 public void accept(InteractionDialogAPI dialog, Map<String, MemoryAPI> memoryMap) {
145 currentStage =
new Object();
148 for (CampaignFleetAPI fleet : getPerson().getMarket().getContainingLocation().getFleets()) {
149 if (fleet.getFaction().isPlayerFaction())
continue;
150 if (!Misc.isPatrol(fleet))
continue;
151 fleet.getMemoryWithoutUpdate().set(MemFlags.PATROL_EXTRA_SUSPICION, 1f);
static SettingsAPI getSettings()
static FactoryAPI getFactory()
static void addDMods(FleetMemberData data, boolean own, CampaignFleetAPI recoverer, Random random)
static void removeDMod(ShipVariantAPI v, String id)
static float BASE_PRICE_MULT
void updateInteractionDataImpl()
boolean create(MarketAPI createdAt, boolean barEvent)
void accept(InteractionDialogAPI dialog, Map< String, MemoryAPI > memoryMap)
static WeightedRandomPicker< String > HULLS
boolean callAction(String action, String ruleId, InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)
FleetMemberAPI createFleetMember(FleetMemberType type, String variantOrWingId)
ShipVariantAPI getVariant(String variantId)