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.PlanetAPI;
17import com.fs.starfarer.api.campaign.RepLevel;
18import com.fs.starfarer.api.campaign.ReputationActionResponsePlugin.ReputationAdjustmentResult;
19import com.fs.starfarer.api.campaign.SectorEntityToken;
20import com.fs.starfarer.api.campaign.econ.MarketAPI;
21import com.fs.starfarer.api.campaign.econ.MarketAPI.SurveyLevel;
22import com.fs.starfarer.api.campaign.listeners.SurveyPlanetListener;
23import com.fs.starfarer.api.campaign.rules.MemoryAPI;
24import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin;
25import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.MissionCompletionRep;
26import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.RepActionEnvelope;
27import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.RepActions;
28import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.RepRewards;
29import com.fs.starfarer.api.impl.campaign.ids.Factions;
30import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
31import com.fs.starfarer.api.impl.campaign.ids.Tags;
32import com.fs.starfarer.api.ui.SectorMapAPI;
33import com.fs.starfarer.api.ui.TooltipMakerAPI;
34import com.fs.starfarer.api.util.Misc;
35import com.fs.starfarer.api.util.Misc.Token;
36import com.fs.starfarer.api.util.WeightedRandomPicker;
52 WeightedRandomPicker<MarketAPI> marketPicker =
new WeightedRandomPicker<MarketAPI>();
54 if (
market.isHidden())
continue;
55 if (
market.getFaction().isPlayerFaction())
continue;
60 market = marketPicker.pick();
67 if (!
market.getFaction().isHostileTo(Factions.INDEPENDENT) && (
float) Math.random() > 0.67f) {
73 reward = (int) Misc.getDistance(
new Vector2f(),
planet.getLocationInHyperspace());
79 log.info(
"Created SurveyPlanetMissionIntel: " +
planet.getName() +
", faction: " +
faction.getDisplayName());
98 MissionCompletionRep rep =
new MissionCompletionRep(RepRewards.HIGH, RepLevel.WELCOMING,
99 -RepRewards.TINY, RepLevel.INHOSPITABLE);
100 ReputationAdjustmentResult result =
Global.
getSector().adjustPlayerReputation(
101 new RepActionEnvelope(RepActions.MISSION_FAILURE, rep,
102 null,
null,
true,
false),
104 return new MissionResult(0, result);
106 return new MissionResult();
120 Misc.setFlagWithReason(
planet.getMemoryWithoutUpdate(), MemFlags.ENTITY_MISSION_IMPORTANT,
129 planet.getMemoryWithoutUpdate().unset(
"$spm_target");
130 planet.getMemoryWithoutUpdate().unset(
"$spm_eventRef");
131 Misc.setFlagWithReason(
planet.getMemoryWithoutUpdate(), MemFlags.ENTITY_MISSION_IMPORTANT,
140 if (
planet.getMarket() !=
null &&
planet.getMarket().getSurveyLevel() == SurveyLevel.FULL) {
146 public boolean callEvent(String ruleId,
final InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
147 String action = params.get(0).getString(memoryMap);
150 CargoAPI cargo = playerFleet.getCargo();
172 if (
planet != this.planet)
return;
175 CargoAPI cargo = playerFleet.getCargo();
177 cargo.getCredits().add(
reward);
179 MissionCompletionRep rep =
new MissionCompletionRep(RepRewards.HIGH, RepLevel.WELCOMING,
180 -RepRewards.TINY, RepLevel.INHOSPITABLE);
182 ReputationAdjustmentResult result =
Global.
getSector().adjustPlayerReputation(
183 new RepActionEnvelope(RepActions.MISSION_SUCCESS, rep,
184 null,
null,
true,
false),
198 Color h = Misc.getHighlightColor();
199 Color g = Misc.getGrayColor();
204 if (mode == ListInfoMode.IN_DESC) initPad = opad;
217 info.addPara(
"%s received", initPad, tc, h, Misc.getDGSCredits(
missionResult.payment));
220 null,
null, info, tc, isUpdate, 0f);
226 info.addPara(
"%s received", initPad, tc, h, Misc.getDGSCredits(
missionResult.payment));
232 null,
null, info, tc, isUpdate, initPad);
236 float betweenPad = 0f;
237 if (mode != ListInfoMode.IN_DESC) {
238 info.addPara(
"Faction: " +
faction.getDisplayName(), initPad, tc,
241 initPad = betweenPad;
246 info.addPara(
"%s reward", initPad, tc, h, Misc.getDGSCredits(
reward));
257 info.addPara(
getName(), c, 0f);
268 String name =
planet.getTypeNameWithWorld();
285 Color h = Misc.getHighlightColor();
286 Color g = Misc.getGrayColor();
287 Color tc = Misc.getTextColor();
291 info.addImage(
faction.getLogo(), width, 128, opad);
293 String name =
planet.getName();
295 String authorities =
"authorities";
297 authorities =
"concerns";
300 info.addPara(
"%s " + authorities +
" " +
market.getOnOrAt() +
" " +
market.getName() +
301 " have posted a reward for completing a full survey of " + name +
", " +
302 planet.getSpec().getAOrAn() +
" " +
planet.getTypeNameWithWorld().toLowerCase() +
".",
303 opad,
faction.getBaseUIColor(), Misc.ucFirst(
faction.getPersonNamePrefix()));
309 info.showFullSurveyReqs(
planet,
true, opad);
360 Set<String> tags = super.getIntelTags(map);
361 tags.add(Tags.INTEL_EXPLORATION);
362 tags.add(Tags.INTEL_MISSIONS);
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)
void setPostingLocation(SectorEntityToken postingLocation)
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)
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 getSmallDescriptionTitle()
MissionResult createAbandonedResult(boolean withPenalty)
void advanceMission(float amount)
void createSmallDescription(TooltipMakerAPI info, float width, float height)
void createIntelInfo(TooltipMakerAPI info, ListInfoMode mode)
void addBulletPoints(TooltipMakerAPI info, ListInfoMode mode)
boolean callEvent(String ruleId, final InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)
SurveyPlanetMissionIntel(PlanetAPI planet)
SectorEntityToken getMapLocation(SectorMapAPI map)
MissionResult createTimeRanOutFailedResult()
void reportPlayerSurveyedPlanet(PlanetAPI planet)
FactionAPI getFactionForUIColors()
Set< String > getIntelTags(SectorMapAPI map)
String getSpriteName(String category, String id)