1package com.fs.starfarer.api.impl.campaign.events;
3import java.util.ArrayList;
7import org.apache.log4j.Logger;
9import com.fs.starfarer.api.Global;
10import com.fs.starfarer.api.campaign.BaseOnMessageDeliveryScript;
11import com.fs.starfarer.api.campaign.CampaignFleetAPI;
12import com.fs.starfarer.api.campaign.CargoAPI;
13import com.fs.starfarer.api.campaign.FactionAPI;
14import com.fs.starfarer.api.campaign.InteractionDialogAPI;
15import com.fs.starfarer.api.campaign.RepLevel;
16import com.fs.starfarer.api.campaign.comm.CommMessageAPI;
17import com.fs.starfarer.api.campaign.comm.MessagePriority;
18import com.fs.starfarer.api.campaign.econ.MarketAPI;
19import com.fs.starfarer.api.campaign.events.CampaignEventTarget;
20import com.fs.starfarer.api.campaign.rules.MemoryAPI;
21import com.fs.starfarer.api.characters.PersonAPI;
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.ids.Conditions;
25import com.fs.starfarer.api.impl.campaign.ids.Factions;
26import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
27import com.fs.starfarer.api.impl.campaign.ids.Ranks;
28import com.fs.starfarer.api.util.Misc;
29import com.fs.starfarer.api.util.WeightedRandomPicker;
30import com.fs.starfarer.api.util.Misc.Token;
40 public static class InvestigationGoodRepData {
44 this.faction = faction;
47 public InvestigationGoodRepData(String faction, String other) {
60 public int hashCode() {
63 result = prime * result
64 + ((faction ==
null) ? 0 : faction.hashCode());
65 result = prime * result + ((other ==
null) ? 0 : other.hashCode());
69 public boolean equals(Object obj) {
74 if (getClass() != obj.getClass())
76 InvestigationGoodRepData other = (InvestigationGoodRepData) obj;
77 if (faction ==
null) {
78 if (other.faction !=
null)
80 }
else if (faction != other.faction)
82 if (this.other ==
null) {
83 if (other.other !=
null)
85 }
else if (this.other != other.other)
94 private float elapsedDays = 0f;
95 private float duration = 0f;
97 private InvestigationGoodRepData target =
null;
99 private float guiltProb = 0f;
100 private int bribeAmount = 1;
101 private boolean bribed =
false;
104 private boolean ended =
false;
105 private float numPrior;
106 private RepActions punishment =
null;
122 other = target.other;
163 switch ((
int) numPrior) {
166 punishment = RepActions.OTHER_FACTION_GOOD_REP_INVESTIGATION_MINOR;
170 punishment = RepActions.OTHER_FACTION_GOOD_REP_INVESTIGATION_MAJOR;
174 punishment = RepActions.OTHER_FACTION_GOOD_REP_INVESTIGATION_CRITICAL;
177 bribeAmount = (int) (10000 + (
int)(10000 * (numPrior + guiltProb * 2f + (
float) Math.random())) / 1000 * 1000);
180 duration = 60f + 30f * (float) Math.random();
208 if (elapsedDays >= duration) {
211 (
float) Math.random() < guiltProb) {
214 if (punishment !=
null) {
216 new RepActionEnvelope(punishment,
null,
null,
true),
254 List<Token> params, Map<String, MemoryAPI> memoryMap) {
255 String action = params.get(0).getString(memoryMap);
260 if (action.equals(
"paidBribe")) {
262 }
else if (action.equals(
"setBribePaid")) {
271 Map<String, String> map = super.getTokenReplacements();
282 if (investigator.
isMale()) {
283 map.put(
"$invHimOrHer",
"him");
285 map.put(
"$invHimOrHer",
"her");
288 map.put(
"$sender",
"Unknown");
295 List<String> result =
new ArrayList<String>();
297 return result.toArray(
new String[0]);
302 if (investigator !=
null) {
323 private void pickMarket() {
337 if (
market ==
null)
return;
static Logger getLogger(Class c)
static SectorAPI getSector()
void setEntity(SectorEntityToken entity)
void setLocation(LocationAPI location)
void addTokensToList(List< String > list, String ... keys)
CampaignEventTarget eventTarget
Map< String, String > getTokenReplacements()
void advance(float amount)
static final String PERSON_CHECKOUT_REASON
void init(String type, CampaignEventTarget eventTarget)
String[] getHighlights(String stageId)
boolean callEvent(String ruleId, InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)
static final String DECIVILIZED
static final String CUSTOM_WORTH_INVESTIGATING_FOR_GOOD_REP
static final String CUSTOM_INVESTIGATES_PLAYER_FOR_GOOD_REP
static final String PLAYER
static final String MEMORY_KEY_REQUIRES_DISCRETION
static final String MEMORY_KEY_NUM_GR_INVESTIGATIONS
static String POST_INVESTIGATOR
static String getWithDGS(float num)
static String ucFirst(String str)
static String getAtLeastStringForDays(int days)
static boolean setFlagWithReason(MemoryAPI memory, String flagKey, String reason, boolean value, float expire)
float convertToDays(float realSeconds)
void removePerson(PersonAPI person)
String addPerson(PersonAPI person)
MemoryAPI getMemoryWithoutUpdate()
String getDisplayNameWithArticle()
float getRelationship(String id)
boolean isAtWorst(String id, RepLevel level)
String getDisplayNameLongWithArticle()
RepLevel getRelationshipLevel(FactionAPI faction)
boolean isAtBest(String id, RepLevel level)
CampaignFleetAPI getPlayerFleet()
ReputationAdjustmentResult adjustPlayerReputation(Object action, String factionId)
CampaignClockAPI getClock()
void reportEventStage(CampaignEventPlugin event, String stage, MessagePriority priority)
FactionAPI getFaction(String factionId)
ImportantPeopleAPI getImportantPeople()
List< MarketAPI > getMarketsCopy()
LocationAPI getContainingLocation()
CommDirectoryAPI getCommDirectory()
boolean hasCondition(String id)
SectorEntityToken getPrimaryEntity()
float getFloat(String key)
void set(String key, Object value)
boolean isCheckedOutForAnything(PersonAPI person)
void returnPerson(PersonAPI person, String reasonId)
PersonAPI getPerson(String id)
MemoryAPI getMemoryWithoutUpdate()