1package com.fs.starfarer.api.impl.campaign.intel.events;
4import java.util.Random;
8import org.lwjgl.util.vector.Vector2f;
10import com.fs.starfarer.api.Global;
11import com.fs.starfarer.api.campaign.CampaignFleetAPI;
12import com.fs.starfarer.api.campaign.StarSystemAPI;
13import com.fs.starfarer.api.campaign.comm.IntelInfoPlugin.ListInfoMode;
14import com.fs.starfarer.api.campaign.econ.Industry;
15import com.fs.starfarer.api.campaign.econ.MarketAPI;
16import com.fs.starfarer.api.impl.campaign.ids.Conditions;
17import com.fs.starfarer.api.impl.campaign.ids.Factions;
18import com.fs.starfarer.api.impl.campaign.ids.FleetTypes;
19import com.fs.starfarer.api.impl.campaign.ids.Industries;
20import com.fs.starfarer.api.impl.campaign.ids.Stats;
21import com.fs.starfarer.api.impl.campaign.intel.events.BaseEventIntel.EventStageData;
22import com.fs.starfarer.api.impl.campaign.intel.events.HostileActivityEventIntel.HAERandomEventData;
23import com.fs.starfarer.api.impl.campaign.intel.events.HostileActivityEventIntel.Stage;
24import com.fs.starfarer.api.impl.campaign.intel.events.TriTachyonStandardActivityCause.CompetitorData;
25import com.fs.starfarer.api.impl.campaign.intel.group.FGRaidAction.FGRaidType;
26import com.fs.starfarer.api.impl.campaign.intel.group.FleetGroupIntel;
27import com.fs.starfarer.api.impl.campaign.intel.group.FleetGroupIntel.FGIEventListener;
28import com.fs.starfarer.api.impl.campaign.intel.group.GenericRaidFGI.GenericRaidParams;
29import com.fs.starfarer.api.impl.campaign.intel.group.SindrianDiktatPunitiveExpedition;
30import com.fs.starfarer.api.impl.campaign.missions.FleetCreatorMission;
31import com.fs.starfarer.api.impl.campaign.missions.FleetCreatorMission.FleetStyle;
32import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.MarketCMD.BombardType;
33import com.fs.starfarer.api.ui.LabelAPI;
34import com.fs.starfarer.api.ui.TooltipMakerAPI;
35import com.fs.starfarer.api.ui.TooltipMakerAPI.TooltipCreator;
36import com.fs.starfarer.api.util.CountingMap;
37import com.fs.starfarer.api.util.Misc;
40 implements FGIEventListener {
80 return "Sindrian Diktat";
84 return "Sindrian Diktat";
97 public void createTooltip(
TooltipMakerAPI tooltip,
boolean expanded, Object tooltipParam) {
99 tooltip.
addPara(
"You've attracted the attention of the Sindrian Diktat.", 0f);
101 tooltip.
addPara(
"Sindrian raider fleets have been sighted in your space, "
102 +
"attacking trade fleets regardless of their factional allegiance.", opad);
116 return super.getProgress(
intel);
136 int difficulty = 4 + (int) Math.round(f * 4f);
173 ListInfoMode mode,
boolean isUpdate, Color tc,
float initPad) {
175 info.
addPara(
"Impending Sindrian Diktat attack", initPad, tc, c,
"Sindrian Diktat");
179 ListInfoMode mode,
boolean isUpdate, Color tc,
float initPad) {
180 info.
addPara(
"Sindrian Diktat attack averted", tc, initPad);
192 info.
addPara(
"You've received intel that the Sindrian Diktat is planning an attack to "
193 +
"saturation-bombard your fuel production facilities.",
208 LabelAPI label = info.
addPara(
"If the attack is defeated the Diktat will likely abandon "
209 +
"further efforts against you, and your ability to export fuel will be improved.",
212 "export fuel",
"improved");
219 stage.beginResetReqList(info,
true,
"crisis", opad);
220 info.
addPara(
"You go to %s and make an agreement with the Diktat", 0f, c,
"Sindria");
221 info.
addPara(
"%s is tactically bombarded", 0f, c,
"Sindria");
222 info.
addPara(
"Fuel production on %s is significantly disrupted", 0f, c,
"Sindria");
223 stage.endResetReqList(info,
false,
"crisis", -1, -1);
234 if (stage.id == Stage.HA_EVENT) {
242 if (sindria ==
null)
return null;
254 if (requireMilitaryBase) {
266 if (stage.id == Stage.HA_EVENT) {
280 if (target !=
null && source !=
null) {
289 HAERandomEventData data =
new HAERandomEventData(
this, stage);
290 stage.rollData = data;
298 if (source ==
null || target ==
null) {
302 stage.rollData =
null;
311 for (CompetitorData curr : data) {
312 for (
MarketAPI market : curr.competitorProducers) {
314 if (system ==
null)
continue;
316 counts.
add(market, weight);
343 super.advance(amount);
360 if (stage !=
null && stage.rollData instanceof HAERandomEventData &&
361 ((HAERandomEventData)stage.rollData).factor ==
this) {
375 GenericRaidParams params =
new GenericRaidParams(
new Random(random.nextLong()),
true);
377 params.makeFleetsHostile =
false;
380 params.source = source;
382 params.prepDays = 14f + random.nextFloat() * 14f;
383 params.payloadDays = 27f + 7f * random.nextFloat();
385 params.raidParams.where = system;
386 params.raidParams.type = FGRaidType.SEQUENTIAL;
387 params.raidParams.tryToCaptureObjectives =
false;
388 params.raidParams.allowedTargets.add(target);
389 params.raidParams.allowNonHostileTargets =
true;
390 params.raidParams.setBombardment(BombardType.SATURATION);
392 params.style = FleetStyle.STANDARD;
400 float totalDifficulty = fleetSizeMult * 15f * (0.6f + 0.4f * f);
402 if (totalDifficulty < 15) {
405 if (totalDifficulty > 100) {
406 totalDifficulty = 100;
409 totalDifficulty -= 10;
411 params.fleetSizes.add(10);
413 while (totalDifficulty > 0) {
418 int diff = min + random.nextInt(max - min + 1);
420 params.fleetSizes.add(diff);
421 totalDifficulty -= diff;
static SettingsAPI getSettings()
static SectorAPI getSector()
float computeEffective(float baseValue)
static final String DECIVILIZED
static final String DIKTAT
static final String PIRATES
static final String RAIDER
static final String HIGHCOMMAND
static final String MILITARYBASE
static final String FUELPROD
static final String COMBAT_FLEET_SIZE_MULT
void sendUpdateIfPlayerHasIntel(Object listInfoParam, TextPanelAPI textPanel)
void addBorder(TooltipMakerAPI info, Color c)
EventStageData getDataFor(Object stageId)
static boolean checkFactionExists(String factionId, boolean requireMilitary)
Random getRandomizedStageRandom()
TooltipCreator getDefaultEventTooltip(final String title, final HostileActivityEventIntel intel, final EventStageData stage)
HostileActivityEventIntel intel
float getMarketPresenceFactor(StarSystemAPI system)
void addBulletPointForEventReset(HostileActivityEventIntel intel, EventStageData stage, TooltipMakerAPI info, ListInfoMode mode, boolean isUpdate, Color tc, float initPad)
Color getDescColor(BaseEventIntel intel)
String getEventStageIcon(HostileActivityEventIntel intel, EventStageData stage)
CampaignFleetAPI createFleet(StarSystemAPI system, Random random)
static void setMadeDeal(boolean value)
static String RAIDER_FLEET
static boolean isMadeDeal()
String getDesc(BaseEventIntel intel)
static boolean brokeDeal()
void advance(float amount)
static String MADE_DIKTAT_DEAL
void notifyFactorRemoved()
static MarketAPI findExpeditionTarget(HostileActivityEventIntel intel, EventStageData stage)
String getNameForThreatList(boolean first)
void addBulletPointForEvent(HostileActivityEventIntel intel, EventStageData stage, TooltipMakerAPI info, ListInfoMode mode, boolean isUpdate, Color tc, float initPad)
void reportFGIAborted(FleetGroupIntel intel)
boolean shouldShow(BaseEventIntel intel)
static boolean isPlayerDefeatedDiktatAttack()
static void setBrokeDeal(boolean broke)
int getMaxNumFleets(StarSystemAPI system)
static MarketAPI getSindria(boolean requireMilitaryBase)
float getEventFrequency(HostileActivityEventIntel intel, EventStageData stage)
boolean fireEvent(HostileActivityEventIntel intel, EventStageData stage)
static void setPlayerDefeatedDiktatAttack()
int getProgress(BaseEventIntel intel)
boolean startAttack(MarketAPI source, MarketAPI target, StarSystemAPI system, EventStageData stage, Random random)
String getProgressStr(BaseEventIntel intel)
SindrianDiktatHostileActivityFactor(HostileActivityEventIntel intel)
TooltipCreator getMainRowTooltip(BaseEventIntel intel)
void rollEvent(HostileActivityEventIntel intel, EventStageData stage)
static String DEFEATED_DIKTAT_ATTACK
TooltipCreator getStageTooltipImpl(final HostileActivityEventIntel intel, final EventStageData stage)
static Industry getSindrianFuelProd()
Color getNameColor(float mag)
void addStageDescriptionForEvent(HostileActivityEventIntel intel, EventStageData stage, TooltipMakerAPI info)
static String BROKE_DIKTAT_DEAL
static List< CompetitorData > computePlayerCompetitionData()
void setListener(FGIEventListener listener)
static SindrianDiktatPunitiveExpedition get()
CampaignFleetAPI createFleet()
void createQualityFleet(int difficulty, String factionId, Vector2f locInHyper)
void triggerFleetMakeFaster(boolean navigationSkill, int numTugs, boolean allowLongPursuit)
void triggerMakeHostile()
void triggerFleetAllowLongPursuit()
void triggerMakeEveryoneJoinBattleAgainst()
void triggerMakeLowRepImpact()
void triggerSetFleetType(String fleetType)
void triggerMakeHostileToAllTradeFleets()
void triggerMakeNonHostileToFaction(String factionId)
void triggerSetFleetFlag(String flag)
void triggerSetPirateFleet()
void add(K key, int quantity)
static Color getNegativeHighlightColor()
static Color getGrayColor()
static Color getHighlightColor()
static Color getPositiveHighlightColor()
MemoryAPI getPlayerMemoryWithoutUpdate()
IntelManagerAPI getIntelManager()
FactionAPI getFaction(String factionId)
void addIntel(IntelInfoPlugin plugin)
MarketAPI getMarket(String id)
SpecialItemData getSpecialItem()
CommodityOnMarketAPI getCommodityData(String commodityId)
MutableMarketStatsAPI getStats()
StarSystemAPI getStarSystem()
Industry getIndustry(String id)
boolean hasCondition(String id)
void set(String key, Object value)
boolean getBoolean(String key)
DynamicStatsAPI getDynamic()
void setHighlight(int start, int end)
void setHighlightColors(Color ... colors)
StatBonus getMod(String id)