1package com.fs.starfarer.api.impl.campaign.events;
4import java.util.ArrayList;
5import java.util.Arrays;
6import java.util.HashMap;
10import com.fs.starfarer.api.Global;
11import com.fs.starfarer.api.campaign.BattleAPI;
12import com.fs.starfarer.api.campaign.CampaignEventListener;
13import com.fs.starfarer.api.campaign.CampaignFleetAPI;
14import com.fs.starfarer.api.campaign.CargoAPI;
15import com.fs.starfarer.api.campaign.FactionAPI;
16import com.fs.starfarer.api.campaign.FleetEncounterContextPlugin;
17import com.fs.starfarer.api.campaign.InteractionDialogAPI;
18import com.fs.starfarer.api.campaign.PlayerMarketTransaction;
19import com.fs.starfarer.api.campaign.RepLevel;
20import com.fs.starfarer.api.campaign.SectorEntityToken;
21import com.fs.starfarer.api.campaign.StarSystemAPI;
22import com.fs.starfarer.api.campaign.JumpPointAPI.JumpDestination;
23import com.fs.starfarer.api.campaign.comm.MessagePriority;
24import com.fs.starfarer.api.campaign.econ.MarketAPI;
25import com.fs.starfarer.api.campaign.events.CampaignEventManagerAPI;
26import com.fs.starfarer.api.campaign.events.CampaignEventPlugin;
27import com.fs.starfarer.api.campaign.events.CampaignEventTarget;
28import com.fs.starfarer.api.campaign.rules.MemoryAPI;
29import com.fs.starfarer.api.characters.AbilityPlugin;
30import com.fs.starfarer.api.characters.PersonAPI;
31import com.fs.starfarer.api.combat.EngagementResultAPI;
32import com.fs.starfarer.api.impl.campaign.ids.Events;
33import com.fs.starfarer.api.impl.campaign.ids.Tags;
34import com.fs.starfarer.api.util.Misc;
35import com.fs.starfarer.api.util.Misc.Token;
131 HashMap<String, String> tokens =
new HashMap<String, String>();
137 if (playerPerson !=
null) {
138 if (playerPerson.
isMale()) {
139 tokens.put(
"$playerHisOrHer",
"his");
140 tokens.put(
"$PlayerHisOrHer",
"His");
141 tokens.put(
"$playerHimOrHer",
"him");
142 tokens.put(
"$PlayerHimOrHer",
"Him");
143 tokens.put(
"$playerHeOrShe",
"he");
144 tokens.put(
"$PlayerHeOrShe",
"He");
146 tokens.put(
"$playerHisOrHer",
"her");
147 tokens.put(
"$PlayerHisOrHer",
"Her");
148 tokens.put(
"$playerHimOrHer",
"her");
149 tokens.put(
"$PlayerHimOrHer",
"Her");
150 tokens.put(
"$playerHeOrShe",
"she");
151 tokens.put(
"$PlayerHeOrShe",
"She");
170 tokens.put(
"$onOrAt",
"at");
172 tokens.put(
"$onOrAt",
"on");
185 tokens.put(
"$marketSystem",
"hyperspace");
189 tokens.put(
"$factionStanding", level.
getDisplayName().toLowerCase());
195 tokens.put(
"$factionStanding", level.
getDisplayName().toLowerCase());
199 if (playerFleet !=
null) {
200 String fleetOrShip =
"fleet";
202 fleetOrShip =
"ship";
204 fleetOrShip =
"fighter wing";
207 tokens.put(
"$playerShipOrFleet", fleetOrShip);
217 if (factionName ==
null || factionName.isEmpty()) {
223 tokens.put(
"$faction", factionName);
224 tokens.put(
"$ownerFaction", factionName);
225 tokens.put(
"$marketFaction", factionName);
227 tokens.put(
"$OwnerFaction",
Misc.
ucFirst(factionName));
228 tokens.put(
"$MarketFaction",
Misc.
ucFirst(factionName));
249 if (factionName ==
null || factionName.isEmpty()) {
253 tokens.put(
"$" + prefix +
"Faction", factionName);
254 tokens.put(
"$" + prefixUC +
"Faction",
Misc.
ucFirst(factionName));
268 if (person !=
null) {
270 tokens.put(
"$" + prefix +
"LastName", person.
getName().
getLast());
274 tokens.put(
"$" + prefix +
"Rank", person.
getRank().toLowerCase());
277 tokens.put(
"$" + prefix +
"Post", person.
getPost().toLowerCase());
282 tokens.put(
"$" + prefix +
"HisOrHer",
"his");
283 tokens.put(
"$" +
Misc.
ucFirst(prefix) +
"HisOrHer",
"His");
284 tokens.put(
"$" + prefix +
"HimOrHer",
"him");
285 tokens.put(
"$" +
Misc.
ucFirst(prefix) +
"HimOrHer",
"Him");
286 tokens.put(
"$" + prefix +
"HeOrShe",
"he");
287 tokens.put(
"$" +
Misc.
ucFirst(prefix) +
"HeOrShe",
"He");
289 tokens.put(
"$" + prefix +
"HisOrHer",
"her");
290 tokens.put(
"$" +
Misc.
ucFirst(prefix) +
"HisOrHer",
"Her");
291 tokens.put(
"$" + prefix +
"HimOrHer",
"her");
292 tokens.put(
"$" +
Misc.
ucFirst(prefix) +
"HimOrHer",
"Her");
293 tokens.put(
"$" + prefix +
"HeOrShe",
"she");
294 tokens.put(
"$" +
Misc.
ucFirst(prefix) +
"HeOrShe",
"She");
322 public static interface MarketFilter {
327 float minDist = Float.MAX_VALUE;
330 if (
market == from)
continue;
332 if (dist < minDist && (filter ==
null || filter.acceptMarket(
market))) {
341 List<MarketAPI> result =
new ArrayList<MarketAPI>();
343 if (filter ==
null || filter.acceptMarket(
market)) {
351 if (stabilityChange <= 0)
return;
357 event.increaseStabilityPenalty((
int) stabilityChange);
383 if (highlights !=
null) {
385 Color [] colors =
new Color[highlights.length];
386 Arrays.fill(colors, c);
395 for (String key : keys) {
396 if (tokens.containsKey(key)) {
397 list.add(tokens.get(key));
403 return "BaseEventPlugin.getEventName()";
407 return CampaignEventCategory.EVENT;
527 this.startProbability = p;
static SettingsAPI getSettings()
static SectorAPI getSector()
SectorEntityToken getEntity()
LocationAPI getLocation()
String[] getHighlights(String stageId)
boolean allowMultipleOngoingForSameTarget()
void startEvent(boolean addListener)
void reportPlayerReputationChange(String faction, float delta)
void reportPlayerEngagement(EngagementResultAPI result)
void setParam(Object param)
static void addFactionNameTokens(Map< String, String > tokens, String prefix, FactionAPI faction)
boolean useEventNameAsId()
static void addPersonTokens(Map< String, String > tokens, String prefix, PersonAPI person)
Color[] getHighlightColors(String stageId)
void reportPlayerClosedMarket(MarketAPI market)
void reportBattleFinished(CampaignFleetAPI primaryWinner, BattleAPI battle)
String getStageIdForLikely()
void reportPlayerDidNotTakeCargo(CargoAPI cargo)
void reportPlayerMarketTransaction(PlayerMarketTransaction transaction)
MessagePriority getWarningWhenLikelyPriority()
void increaseRecentUnrest(float stabilityChange)
static List< MarketAPI > findMatchingMarkets(MarketFilter filter)
CampaignEventCategory getEventCategory()
void reportPlayerActivatedAbility(AbilityPlugin ability, Object param)
void reportEncounterLootGenerated(FleetEncounterContextPlugin plugin, CargoAPI loot)
void reportEconomyTick(int iterIndex)
void init(String eventType, CampaignEventTarget eventTarget, boolean addListener)
void reportPlayerReputationChange(PersonAPI person, float delta)
void reportFleetSpawned(CampaignFleetAPI fleet)
MessagePriority getDefaultPriority()
void init(String eventType, CampaignEventTarget eventTarget)
void advance(float amount)
boolean callEvent(String ruleId, InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)
void addTokensToList(List< String > list, String ... keys)
void setProbability(float p)
void reportEconomyMonthEnd()
Map< String, String > getTokenReplacements()
void reportFleetDespawned(CampaignFleetAPI fleet, FleetDespawnReason reason, Object param)
void reportPlayerOpenedMarketAndCargoUpdated(MarketAPI market)
static MarketAPI findNearestMarket(MarketAPI from, MarketFilter filter)
void setTarget(CampaignEventTarget eventTarget)
List< String > getRelatedCommodities()
CampaignEventTarget eventTarget
void reportPlayerDeactivatedAbility(AbilityPlugin ability, Object param)
void reportFleetJumped(CampaignFleetAPI fleet, SectorEntityToken from, JumpDestination to)
List< PriceUpdatePlugin > getPriceUpdates()
void reportPlayerOpenedMarket(MarketAPI market)
String getStageIdForPossible()
String getCurrentMessageIcon()
void reportFleetReachedEntity(CampaignFleetAPI fleet, SectorEntityToken entity)
void reportShownInteractionDialog(InteractionDialogAPI dialog)
CampaignEventTarget getEventTarget()
boolean showAllMessagesIfOngoing()
void reportPlayerDumpedCargo(CargoAPI cargo)
boolean showLatestMessageIfOngoing()
void reportBattleOccurred(CampaignFleetAPI primaryWinner, BattleAPI battle)
MessagePriority getWarningWhenPossiblePriority()
static final String RECENT_UNREST
static String ucFirst(String str)
static float getDistance(SectorEntityToken from, SectorEntityToken to)
Color getColor(String id)
FleetDataAPI getFleetData()
String getDisplayNameWithArticle()
String getDisplayNameLongWithArticle()
RepLevel getRelationshipLevel(FactionAPI faction)
String getEntityNamePrefix()
String getDisplayNameIsOrAre()
String getDisplayNameLong()
List< FleetMemberAPI > getMembersListCopy()
CampaignFleetAPI getPlayerFleet()
void addListener(CampaignEventListener listener)
CampaignEventManagerAPI getEventManager()
PersonAPI getPlayerPerson()
void removeListener(CampaignEventListener listener)
CharacterDataAPI getCharacterData()
boolean hasTag(String tag)
List< MarketAPI > getMarketsCopy()
Vector2f getLocationInHyperspace()
SectorEntityToken getPrimaryEntity()
CampaignEventPlugin startEvent(CampaignEventTarget eventTarget, String eventType, Object param)
CampaignEventPlugin getOngoingEvent(CampaignEventTarget eventTarget, String eventType)