1package com.fs.starfarer.api.impl.campaign.missions;
6import com.fs.starfarer.api.Global;
7import com.fs.starfarer.api.campaign.BattleAPI;
8import com.fs.starfarer.api.campaign.CampaignEventListener.FleetDespawnReason;
9import com.fs.starfarer.api.campaign.CampaignFleetAPI;
10import com.fs.starfarer.api.campaign.FactionAPI;
11import com.fs.starfarer.api.campaign.InteractionDialogAPI;
12import com.fs.starfarer.api.campaign.ReputationActionResponsePlugin.ReputationAdjustmentResult;
13import com.fs.starfarer.api.campaign.SectorEntityToken;
14import com.fs.starfarer.api.campaign.StarSystemAPI;
15import com.fs.starfarer.api.campaign.econ.MarketAPI;
16import com.fs.starfarer.api.campaign.listeners.FleetEventListener;
17import com.fs.starfarer.api.campaign.rules.MemoryAPI;
18import com.fs.starfarer.api.characters.PersonAPI;
19import com.fs.starfarer.api.fleet.FleetMemberAPI;
20import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin;
21import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.MissionCompletionRep;
22import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.RepActionEnvelope;
23import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.RepActions;
24import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.RepRewards;
25import com.fs.starfarer.api.impl.campaign.ids.Factions;
26import com.fs.starfarer.api.impl.campaign.ids.FleetTypes;
27import com.fs.starfarer.api.impl.campaign.ids.Ranks;
28import com.fs.starfarer.api.impl.campaign.ids.Tags;
29import com.fs.starfarer.api.impl.campaign.intel.bases.PirateBaseIntel;
30import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithBarEvent;
31import com.fs.starfarer.api.impl.campaign.missions.hub.ReqMode;
32import com.fs.starfarer.api.ui.SectorMapAPI;
33import com.fs.starfarer.api.ui.TooltipMakerAPI;
34import com.fs.starfarer.api.util.Misc;
42 public static class BountyResult {
44 public float fraction;
45 public ReputationAdjustmentResult repFaction;
46 public ReputationAdjustmentResult repPerson;
47 public BountyResult(
int payment,
float fraction, ReputationAdjustmentResult repPerson, ReputationAdjustmentResult repFaction) {
48 this.payment = payment;
49 this.fraction = fraction;
50 this.repFaction = repFaction;
51 this.repPerson = repPerson;
57 public static enum Stage {
93 if (person ==
null)
return false;
134 int numPirates = 2 +
genRandom.nextInt(3);
136 FleetSize [] sizes =
new FleetSize [] {
140 FleetSize.VERY_LARGE,
143 for (
int i = 0; i < numPirates; i++) {
144 FleetSize size = sizes[i % sizes.length];
181 info.
addPara(
"Applies to all %s fleets " + locStr +
", which is home to " +
market.
getName() +
", a pirate base.",
185 info.
addPara(
"This bounty is no longer on offer.", opad);
191 addDays(info,
"remaining", d, tc);
194 info.
addPara(
"Payment depends on the number and size of ships destroyed. " +
200 info.
addPara(
"This bounty is no longer on offer.", opad);
207 info.
addPara(
"Most recent bounty payment:", opad);
211 info.
addPara(
"%s share based on damage dealt", 0f, tc, h,
212 "" + (
int) Math.round(
latestResult.fraction * 100f) +
"%");
216 null,
null, info, tc,
false, 0f);
220 null,
null, info, tc,
false, 0f);
234 info.
addPara(
"%s share based on damage dealt", 0f, tc, h,
235 "" + (
int) Math.round(
latestResult.fraction * 100f) +
"%");
239 null,
null, info, tc, isUpdate, 0f);
243 null,
null, info, tc, isUpdate, 0f);
253 addDays(info,
"remaining", d, tc);
263 return super.getPostfixForState();
268 return "Pirate Fleet Bounty";
293 super.notifyEnding();
307 float fpDestroyed = 0;
309 if (
enemy != otherFleet.getFaction())
continue;
315 fpDestroyed += loss.getFleetPointCost();
329 fDelta = RepRewards.TINY;
330 pDelta = RepRewards.TINY;
331 }
else if (repFP < 70) {
332 fDelta = RepRewards.SMALL;
333 pDelta = RepRewards.SMALL;
335 fDelta = RepRewards.SMALL;
336 pDelta = RepRewards.MEDIUM;
339 MissionCompletionRep completionRepPerson =
new MissionCompletionRep(
341 MissionCompletionRep completionRepFaction =
new MissionCompletionRep(
348 new RepActionEnvelope(RepActions.MISSION_SUCCESS, completionRepPerson,
351 latestResult.repPerson = rep;
354 if (completionRepFaction.successDelta != 0) {
356 new RepActionEnvelope(RepActions.MISSION_SUCCESS, completionRepFaction,
359 latestResult.repFaction = rep;
static SectorAPI getSector()
static void addAdjustmentMessage(float delta, FactionAPI faction, PersonAPI person, TextPanelAPI panel, TooltipMakerAPI info, Color tc, boolean withCurrent, float pad)
static final String CUSTOM_MAKES_PIRATE_BASES
static final String PIRATES
static final String PATROL_MEDIUM
static String POST_PORTMASTER
static String POST_TRADER
static String POST_INVESTOR
static String POST_COMMODITIES_AGENT
static String POST_SENIOR_EXECUTIVE
static String POST_MERCHANT
static String POST_EXECUTIVE
void unindent(TooltipMakerAPI info)
void addDays(TooltipMakerAPI info, String after, float days)
void sendUpdateIfPlayerHasIntel(Object listInfoParam, TextPanelAPI textPanel)
Object getListInfoParam()
Color getBulletColorForMode(ListInfoMode mode)
void bullet(TooltipMakerAPI info)
SectorEntityToken getMapLocation(SectorMapAPI map)
String getMissionTypeNoun()
BountyResult latestResult
boolean create(MarketAPI createdAt, boolean barEvent)
void reportFleetDespawnedToListener(CampaignFleetAPI fleet, FleetDespawnReason reason, Object param)
void updateInteractionDataImpl()
boolean addNextStepText(TooltipMakerAPI info, Color tc, float pad)
void acceptImpl(InteractionDialogAPI dialog, Map< String, MemoryAPI > memoryMap)
void reportBattleOccurred(CampaignFleetAPI fleet, CampaignFleetAPI primaryWinner, BattleAPI battle)
void addDescriptionForCurrentStage(TooltipMakerAPI info, float width, float height)
String getPostfixForState()
SectorEntityToken getMapLocationFor(SectorEntityToken entity)
boolean setPersonMissionRef(PersonAPI person, String key)
PersonImportance pickImportance()
RepLevel getRewardLimitFaction()
void setGiverPost(String giverPost)
int getDistanceLY(MarketAPI market)
static int getRoundNumber(float num)
void makeImportant(PersonAPI person, String flag, Enum ... stages)
void setSuccessStage(Object id)
void setGiverRank(String giverRank)
void setGiverImportance(PersonImportance giverImportance)
void setGiverTags(String ... giverTags)
void findOrCreateGiver(MarketAPI market, boolean addToCommDirectory, boolean cleanUpOnMissionOverIfWasNewPerson)
PersonImportance pickHighImportance()
String pickOne(List< String > options)
float getElapsedInCurrentStage()
boolean setMarketMissionRef(MarketAPI market, String key)
void setStartingStage(Object startingStage)
void setGiverIsPotentialContactOnSuccess()
void addPotentialContacts(InteractionDialogAPI dialog)
RepLevel getRewardLimitPerson()
void connectWithDaysElapsed(Object from, Object to, float days)
void requireMarketFactionCustom(ReqMode mode, String ... custom)
void requireMarketMemoryFlag(String key, Object value)
void requireMarketFactionNot(String ... factions)
void preferMarketInDirectionOfOtherMissions()
void requireMarketIsMilitary()
void requireMarketHidden()
void triggerAutoAdjustFleetStrengthMajor()
void triggerOrderFleetPatrol(final StarSystemAPI system)
void beginWithinHyperspaceRangeTrigger(SectorEntityToken entity, float rangeLY, boolean requirePlayerInHyperspace, Object ... stages)
void triggerSpawnFleetNear(final SectorEntityToken entity, final String flag, final String refKey)
void triggerSetPirateFleet()
void triggerCreateFleet(FleetSize size, FleetQuality quality, String factionId, String type, StarSystemAPI roughlyWhere)
static String getDGSCredits(float num)
static String getWithDGS(float num)
static List< FleetMemberAPI > getSnapshotMembersLost(CampaignFleetAPI fleet)
static float getSizeNum(HullSize size)
static boolean isNear(SectorEntityToken entity, Vector2f hyperLoc)
static Color getHighlightColor()
float getPlayerInvolvementFraction()
List< CampaignFleetAPI > getNonPlayerSideSnapshot()
boolean isPlayerInvolved()
MutableValue getCredits()
String getDisplayNameWithArticle()
String getPersonNamePrefix()
String getNameWithLowercaseType()
String getNameWithLowercaseTypeShort()
CampaignFleetAPI getPlayerFleet()
ReputationAdjustmentResult adjustPlayerReputation(Object action, String factionId)
ListenerManagerAPI getListenerManager()
SectorEntityToken getCenter()
Vector2f getLocationInHyperspace()
StarSystemAPI getStarSystem()
SectorEntityToken getPrimaryEntity()
void addListener(Object listener)
void removeListener(Object listener)