1package com.fs.starfarer.api.impl.campaign.intel;
8import org.apache.log4j.Logger;
9import org.lwjgl.util.vector.Vector2f;
11import com.fs.starfarer.api.Global;
12import com.fs.starfarer.api.campaign.CampaignFleetAPI;
13import com.fs.starfarer.api.campaign.CargoAPI;
14import com.fs.starfarer.api.campaign.FactionAPI;
15import com.fs.starfarer.api.campaign.InteractionDialogAPI;
16import com.fs.starfarer.api.campaign.RepLevel;
17import com.fs.starfarer.api.campaign.ReputationActionResponsePlugin.ReputationAdjustmentResult;
18import com.fs.starfarer.api.campaign.SectorEntityToken;
19import com.fs.starfarer.api.campaign.econ.MarketAPI;
20import com.fs.starfarer.api.campaign.rules.MemoryAPI;
21import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin;
22import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.MissionCompletionRep;
23import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.RepActionEnvelope;
24import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.RepActions;
25import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.RepRewards;
26import com.fs.starfarer.api.impl.campaign.ids.Factions;
27import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
28import com.fs.starfarer.api.impl.campaign.ids.Tags;
29import com.fs.starfarer.api.impl.campaign.rulecmd.AddRemoveCommodity;
30import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special.BreadcrumbSpecial;
31import com.fs.starfarer.api.ui.SectorMapAPI;
32import com.fs.starfarer.api.ui.TooltipMakerAPI;
33import com.fs.starfarer.api.util.Misc;
34import com.fs.starfarer.api.util.Misc.Token;
35import com.fs.starfarer.api.util.WeightedRandomPicker;
50 WeightedRandomPicker<MarketAPI> marketPicker =
new WeightedRandomPicker<MarketAPI>();
52 if (
market.isHidden())
continue;
53 if (
market.getFaction().isPlayerFaction())
continue;
57 market = marketPicker.pick();
64 if (!
market.getFaction().isHostileTo(Factions.INDEPENDENT) && (
float) Math.random() > 0.67f) {
70 reward = (int) Misc.getDistance(
new Vector2f(),
entity.getLocationInHyperspace());
76 log.info(
"Created AnalyzeEntityMissionIntel: " +
entity.getName() +
", faction: " +
faction.getDisplayName());
102 MissionCompletionRep rep =
new MissionCompletionRep(RepRewards.HIGH, RepLevel.WELCOMING,
103 -RepRewards.TINY, RepLevel.INHOSPITABLE);
104 ReputationAdjustmentResult result =
Global.
getSector().adjustPlayerReputation(
105 new RepActionEnvelope(RepActions.MISSION_FAILURE, rep,
106 null,
null,
true,
false),
108 return new MissionResult(0, result);
110 return new MissionResult();
122 Misc.setFlagWithReason(
entity.getMemoryWithoutUpdate(), MemFlags.ENTITY_MISSION_IMPORTANT,
129 entity.getMemoryWithoutUpdate().unset(
"$aem_target");
130 entity.getMemoryWithoutUpdate().unset(
"$aem_eventRef");
131 Misc.setFlagWithReason(
entity.getMemoryWithoutUpdate(), MemFlags.ENTITY_MISSION_IMPORTANT,
141 public boolean callEvent(String ruleId,
final InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
142 String action = params.get(0).getString(memoryMap);
145 CargoAPI cargo = playerFleet.getCargo();
147 if (action.equals(
"runPackage")) {
148 AddRemoveCommodity.addCreditsGainText(
reward, dialog.getTextPanel());
149 cargo.getCredits().add(
reward);
151 MissionCompletionRep rep =
new MissionCompletionRep(RepRewards.HIGH, RepLevel.WELCOMING,
152 -RepRewards.TINY, RepLevel.INHOSPITABLE);
154 ReputationAdjustmentResult result =
Global.
getSector().adjustPlayerReputation(
155 new RepActionEnvelope(RepActions.MISSION_SUCCESS, rep,
156 null, dialog.getTextPanel(),
true,
false),
169 Color h = Misc.getHighlightColor();
170 Color g = Misc.getGrayColor();
175 if (mode == ListInfoMode.IN_DESC) initPad = opad;
188 info.addPara(
"%s received", initPad, tc, h, Misc.getDGSCredits(
missionResult.payment));
191 null,
null, info, tc, isUpdate, 0f);
197 info.addPara(
"%s received", initPad, tc, h, Misc.getDGSCredits(
missionResult.payment));
203 null,
null, info, tc, isUpdate, initPad);
207 if (mode != ListInfoMode.IN_DESC) {
208 info.addPara(
"Faction: " +
faction.getDisplayName(), initPad, tc,
214 info.addPara(
"%s reward", initPad, tc, h, Misc.getDGSCredits(
reward));
225 info.addPara(
getName(), c, 0f);
258 Color h = Misc.getHighlightColor();
259 Color g = Misc.getGrayColor();
261 Color tc = Misc.getTextColor();
265 info.addImage(
faction.getLogo(), width, 128, opad);
268 String shortName =
"";
269 String isOrAre =
"is";
271 if (
entity.getCustomEntitySpec() !=
null) {
272 name =
entity.getCustomEntitySpec().getNameInText();
273 shortName =
entity.getCustomEntitySpec().getShortName();
274 isOrAre =
entity.getCustomEntitySpec().getIsOrAre();
275 aOrAn =
entity.getCustomEntitySpec().getAOrAn();
278 shortName =
entity.getName();
281 String authorities =
"authorities";
283 authorities =
"concerns";
285 info.addPara(
"%s " + authorities +
" " +
market.getOnOrAt() +
" " +
market.getName() +
286 " have posted a reward for running a custom sensor package on " + aOrAn +
" " + name +
".",
287 opad,
faction.getBaseUIColor(), Misc.ucFirst(
faction.getPersonNamePrefix()));
289 String loc = BreadcrumbSpecial.getLocatedString(
entity,
true);
290 info.addPara(
"The " + shortName +
" " + isOrAre +
" " + loc +
".", opad);
311 Set<String> tags = super.getIntelTags(map);
312 tags.add(Tags.INTEL_EXPLORATION);
313 tags.add(Tags.INTEL_MISSIONS);
321 return entity.getStarSystem().getCenter();
static SettingsAPI getSettings()
static Logger getLogger(Class c)
static SectorAPI getSector()
static void addAdjustmentMessage(float delta, FactionAPI faction, PersonAPI person, TextPanelAPI panel, TooltipMakerAPI info, Color tc, boolean withCurrent, float pad)
AnalyzeEntityMissionIntel(SectorEntityToken entity)
void advanceMission(float amount)
Set< String > getIntelTags(SectorMapAPI map)
void addBulletPoints(TooltipMakerAPI info, ListInfoMode mode)
void createIntelInfo(TooltipMakerAPI info, ListInfoMode mode)
void notifyPlayerAboutToOpenIntelScreen()
MissionResult createAbandonedResult(boolean withPenalty)
String getSmallDescriptionTitle()
MissionResult createTimeRanOutFailedResult()
SectorEntityToken getEntity()
boolean callEvent(String ruleId, final InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)
FactionAPI getFactionForUIColors()
SectorEntityToken getMapLocation(SectorMapAPI map)
void createSmallDescription(TooltipMakerAPI info, float width, float height)
void setPostingLocation(SectorEntityToken postingLocation)
void unindent(TooltipMakerAPI info)
void addDays(TooltipMakerAPI info, String after, float days)
Object getListInfoParam()
Color getBulletColorForMode(ListInfoMode mode)
void bullet(TooltipMakerAPI info)
Color getTitleColor(ListInfoMode mode)
void addAcceptOrAbandonButton(TooltipMakerAPI info, float width)
String getPostfixForState()
void setMissionState(MissionState missionState)
MissionResult missionResult
void setDuration(Float duration)
void addGenericMissionState(TooltipMakerAPI info)
void setMissionResult(MissionResult missionResult)
String getSpriteName(String category, String id)