1package com.fs.starfarer.api.impl.campaign.intel;
4import java.util.Random;
7import org.lwjgl.util.vector.Vector2f;
9import com.fs.starfarer.api.Global;
10import com.fs.starfarer.api.campaign.FactionAPI;
11import com.fs.starfarer.api.campaign.InteractionDialogAPI;
12import com.fs.starfarer.api.campaign.RepLevel;
13import com.fs.starfarer.api.campaign.ReputationActionResponsePlugin.ReputationAdjustmentResult;
14import com.fs.starfarer.api.campaign.SectorEntityToken;
15import com.fs.starfarer.api.campaign.TextPanelAPI;
16import com.fs.starfarer.api.campaign.econ.MarketAPI;
17import com.fs.starfarer.api.characters.PersonAPI;
18import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin;
19import com.fs.starfarer.api.impl.campaign.ids.Factions;
20import com.fs.starfarer.api.impl.campaign.ids.FleetTypes;
21import com.fs.starfarer.api.impl.campaign.ids.People;
22import com.fs.starfarer.api.impl.campaign.intel.events.PerseanLeagueHostileActivityFactor;
23import com.fs.starfarer.api.impl.campaign.missions.DelayedFleetEncounter;
24import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.FleetQuality;
25import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.FleetSize;
26import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.OfficerNum;
27import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers.OfficerQuality;
28import com.fs.starfarer.api.ui.Alignment;
29import com.fs.starfarer.api.ui.SectorMapAPI;
30import com.fs.starfarer.api.ui.TooltipMakerAPI;
31import com.fs.starfarer.api.util.IntervalUtil;
32import com.fs.starfarer.api.util.Misc;
63 public static String
KEY =
"$plGHMachinations_ref";
77 protected Random
random =
new Random();
80 protected ReputationAdjustmentResult
recent =
null;
85 if (
get() !=
null)
return;
107 super.advanceImpl(amount);
116 if (!
interval.intervalElapsed())
return;
132 int repLoss = 5 +
random.nextInt(11);
141 (
float)repLoss * -0.01f, limit,
null,
false,
false);
143 repLoss = Math.min(repLoss, (
int)Math.abs(Math.round(result.delta * 100f)));
161 recent =
new ReputationAdjustmentResult(0);
185 super.notifyEnding();
203 return "Gens Hannan Machinations";
227 if (mode == ListInfoMode.IN_DESC) initPad = opad;
242 info.
addPara(
"A bounty hunter was recently hired to eliminate you", tc, initPad);
245 null,
null, info, tc, isUpdate, initPad);
247 String daysStr = days == 1 ?
"day" :
"days";
248 info.
addPara(
"%s " + daysStr +
" ago", 0f, tc, h,
"" + days);
267 info.
addPara(
"You've gone back on a deal with Gens Hannan, and they work behind the scenes"
268 +
"to damage your standing with the Persean League, and worse.", opad,
269 getFaction().getBaseUIColor(),
"Persean League");
272 info.
addPara(
"You sources indicate that the further action by Gens Hannan "
273 +
"is unlikely at this time.", opad);
275 info.
addPara(
"It's likely that at some point this work will become less of a priority, but "
276 +
"for now, their agents go about ruining your reputation with commendable "
277 +
"vigor and discretion.", opad);
280 info.
addPara(
"There is no hope of reconciliation, and the gloves are off. There is a possibility "
281 +
"of your being brought into active hostility with the League, and of bounty hunters "
283 "active hostility with the League",
"bounty hunters");
286 info.
addPara(
"You are not considered trustworthy enough for Gens Hannan to deal with again, and "
287 +
"these actions are in the way of setting an example for others.", opad);
291 if (person !=
null) {
293 sub.
addPara(
"You may be able to negotiate an end to this by going to Kazeron and speaking with "
294 +
"Reynard Hannan.", 0f, h,
295 "speaking with Reynard Hannan");
317 Set<String> tags = super.getIntelTags(map);
326 if (kazeron !=
null) {
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 PERSEAN
static final String INDEPENDENT
static final String MERC_BOUNTY_HUNTER
static String REYNARD_HANNAN
static PersonAPI getPerson(String id)
void unindent(TooltipMakerAPI info)
void sendUpdateIfPlayerHasIntel(Object listInfoParam, TextPanelAPI textPanel)
Object getListInfoParam()
Color getBulletColorForMode(ListInfoMode mode)
void setImportant(Boolean important)
void bullet(TooltipMakerAPI info)
static boolean isAgreedToPayHouseHannanAgain()
void createSmallDescription(TooltipMakerAPI info, float width, float height)
void addBulletPoints(TooltipMakerAPI info, ListInfoMode mode)
String getSmallDescriptionTitle()
static float PROB_ACTION_TAKEN
FactionAPI getFactionForUIColors()
ReputationAdjustmentResult recent
SectorEntityToken getMapLocation(SectorMapAPI map)
void endMachinations(TextPanelAPI text)
static String UPDATE_PARAM_START
static boolean canRemakeDealWithHouseHannan()
static String UPDATE_PARAM_MACHINATION
Set< String > getIntelTags(SectorMapAPI map)
GensHannanMachinations(InteractionDialogAPI dialog)
static float PROB_BOUNTY_HUNTER
static String MACHINATIONS_IN_EFFECT
void advanceImpl(float amount)
static void setAgreedToPayHouseHannanAgain(boolean value)
static String AGREED_TO_PAY_HOUSE_HANNAN_AGAIN
static boolean isMachinationsInEffect()
boolean recentIsBountyHunter
static boolean isLeagueMember()
static boolean isPayingHouseHannan()
static MarketAPI getKazeron(boolean requireMilitaryBase)
void triggerCreateFleet(FleetSize size, FleetQuality quality, String factionId, String type, SectorEntityToken roughlyWhere)
void triggerSetStandardAggroInterceptFlags()
void setLocationInnerSector(boolean allowInsidePopulatedSystems, String requireLargestMarketNotHostileToFaction)
void triggerMakeFleetIgnoreOtherFleets()
void triggerMakeNoRepImpact()
void triggerSetFleetOfficers(OfficerNum num, OfficerQuality quality)
void triggerSetFleetGenericHailPermanent(String commsTrigger)
void triggerSetFleetFaction(final String factionId)
void advance(float amount)
static Color getTextColor()
static Color getNegativeHighlightColor()
static Color getGrayColor()
static void adjustRep(float repChangeFaction, RepLevel limit, String factionId, float repChangePerson, RepLevel personLimit, PersonAPI person, TextPanelAPI text)
static float getDays(float amount)
static Color getHighlightColor()
float getElapsedDaysSince(long timestamp)
TextPanelAPI getTextPanel()
void addScript(EveryFrameScript script)
MemoryAPI getPlayerMemoryWithoutUpdate()
CampaignClockAPI getClock()
void removeScript(EveryFrameScript script)
IntelManagerAPI getIntelManager()
FactionAPI getFaction(String factionId)
MemoryAPI getMemoryWithoutUpdate()
void addIntel(IntelInfoPlugin plugin)
SectorEntityToken getPrimaryEntity()
void set(String key, Object value)
boolean getBoolean(String key)
String getPortraitSprite()