1package com.fs.starfarer.api.impl.campaign.rulecmd;
6import org.lwjgl.util.vector.Vector2f;
8import com.fs.starfarer.api.Global;
9import com.fs.starfarer.api.campaign.CampaignFleetAPI;
10import com.fs.starfarer.api.campaign.CargoAPI;
11import com.fs.starfarer.api.campaign.InteractionDialogAPI;
12import com.fs.starfarer.api.campaign.OptionPanelAPI;
13import com.fs.starfarer.api.campaign.PlanetAPI;
14import com.fs.starfarer.api.campaign.TextPanelAPI;
15import com.fs.starfarer.api.campaign.econ.MarketAPI;
16import com.fs.starfarer.api.campaign.econ.MarketAPI.SurveyLevel;
17import com.fs.starfarer.api.campaign.econ.MarketConditionAPI;
18import com.fs.starfarer.api.campaign.rules.MemKeys;
19import com.fs.starfarer.api.campaign.rules.MemoryAPI;
20import com.fs.starfarer.api.characters.PersonAPI;
21import com.fs.starfarer.api.combat.ShipVariantAPI;
22import com.fs.starfarer.api.fleet.FleetMemberAPI;
23import com.fs.starfarer.api.fleet.FleetMemberType;
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.HullMods;
27import com.fs.starfarer.api.impl.campaign.ids.Industries;
28import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
29import com.fs.starfarer.api.impl.campaign.ids.People;
30import com.fs.starfarer.api.impl.campaign.ids.Ranks;
31import com.fs.starfarer.api.impl.campaign.ids.Submarkets;
32import com.fs.starfarer.api.impl.campaign.intel.bases.LuddicPathBaseIntel;
33import com.fs.starfarer.api.impl.campaign.missions.RecoverAPlanetkiller;
34import com.fs.starfarer.api.impl.campaign.shared.SharedData;
35import com.fs.starfarer.api.impl.campaign.submarkets.StoragePlugin;
36import com.fs.starfarer.api.util.Misc;
37import com.fs.starfarer.api.util.Misc.Token;
46 public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
47 if (dialog ==
null)
return false;
49 OptionPanelAPI options = dialog.getOptionPanel();
50 TextPanelAPI text = dialog.getTextPanel();
52 CargoAPI cargo = pf.getCargo();
55 String action = params.get(0).getString(memoryMap);
57 MemoryAPI memory = memoryMap.get(MemKeys.LOCAL);
58 if (memory ==
null)
return false;
66 if (
"removePKDefenses".equals(action)) {
68 }
else if (
"convertSentinelToColony".equals(action)) {
70 }
else if (
"rightPostToAcceptPK".equals(action)) {
72 }
else if (
"rightPostToTellAboutSentinel".equals(action)) {
74 }
else if (
"giveExecutor".equals(action)) {
88 PlanetAPI planet = RecoverAPlanetkiller.getTundra();
89 MarketAPI market = planet.getMarket();
93 market.setSurveyLevel(SurveyLevel.FULL);
94 for (MarketConditionAPI mc : market.getConditions()) {
98 market.setName(planet.getName());
99 planet.setFaction(Factions.HEGEMONY);
101 market.setDaysInExistence(0);
102 market.setPlanetConditionMarketOnly(
false);
103 market.setFactionId(Factions.HEGEMONY);
104 market.addCondition(Conditions.POPULATION_3);
105 market.addIndustry(Industries.POPULATION);
106 market.addIndustry(Industries.FARMING);
110 market.addSubmarket(Submarkets.SUBMARKET_OPEN);
111 market.addSubmarket(Submarkets.SUBMARKET_BLACK);
112 market.addSubmarket(Submarkets.SUBMARKET_STORAGE);
115 market.getSubmarket(Submarkets.SUBMARKET_OPEN).getPlugin().updateCargoPrePlayerInteraction();
116 market.getSubmarket(Submarkets.SUBMARKET_OPEN).getPlugin().getCargo().clear();
117 if (market.getSubmarket(Submarkets.SUBMARKET_OPEN).getPlugin().getCargo().getMothballedShips() !=
null) {
118 market.getSubmarket(Submarkets.SUBMARKET_OPEN).getPlugin().getCargo().getMothballedShips().clear();
120 market.getSubmarket(Submarkets.SUBMARKET_BLACK).getPlugin().updateCargoPrePlayerInteraction();
121 market.getSubmarket(Submarkets.SUBMARKET_BLACK).getPlugin().getCargo().clear();
122 if (market.getSubmarket(Submarkets.SUBMARKET_BLACK).getPlugin().getCargo().getMothballedShips() !=
null) {
123 market.getSubmarket(Submarkets.SUBMARKET_BLACK).getPlugin().getCargo().getMothballedShips().clear();
126 market.getTariff().modifyFlat(
"default_tariff", market.getFaction().getTariffFraction());
128 planet.setMarket(market);
129 market.setPrimaryEntity(planet);
130 market.setPlayerOwned(
false);
135 market.getConstructionQueue().addToEnd(Industries.SPACEPORT, 0);
139 SharedData.getData().getMarketsWithoutTradeFleetSpawn().add(market.getId());
141 PersonAPI skiron = People.getPerson(People.SKIRON);
142 market.setAdmin(skiron);
143 market.getCommDirectory().addPerson(skiron, 0);
144 market.addPerson(skiron);
146 market.getPrimaryEntity().setInteractionImage(
"illustrations",
"sentinel2");
153 protected void giveExecutor(InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
154 boolean removeSpecial = params.get(1).getBoolean(memoryMap);
158 v.addSuppressedMod(HullMods.ANDRADA_MODS);
161 Global.
getSector().getPlayerFleet().getFleetData().addFleetMember(member);
167 PersonAPI person = dialog.getInteractionTarget().getActivePerson();
168 if (person.getMemoryWithoutUpdate().getBoolean(LuddicPathBaseIntel.PATHER_BASE_COMMANDER)) {
171 return Ranks.POST_BASE_COMMANDER.equals(person.getPostId()) ||
172 Ranks.POST_STATION_COMMANDER.equals(person.getPostId()) ||
174 Ranks.POST_OUTPOST_COMMANDER.equals(person.getPostId());
178 PersonAPI person = dialog.getInteractionTarget().getActivePerson();
179 return Ranks.POST_BASE_COMMANDER.equals(person.getPostId()) ||
180 Ranks.POST_STATION_COMMANDER.equals(person.getPostId()) ||
181 Ranks.POST_ADMINISTRATOR.equals(person.getPostId()) ||
182 Ranks.POST_OUTPOST_COMMANDER.equals(person.getPostId());
186 CampaignFleetAPI defenders = memory.getFleet(
"$defenderFleet");
187 if (defenders !=
null) {
188 memory.unset(
"$defenderFleet");
189 memory.set(
"$defenderFleetDefeated",
true);
190 memory.set(
"$hasDefenders",
false, 0);
191 dialog.getInteractionTarget().getContainingLocation().addEntity(defenders);
192 defenders.setAI(
null);
193 defenders.setNullAIActionText(
"dormant");
194 Vector2f loc = dialog.getInteractionTarget().getLocation();
195 defenders.setLocation(loc.x, loc.y + 100f);
196 defenders.setCircularOrbit(dialog.getInteractionTarget().getOrbitFocus(), 90f, 100f, 20f);
197 defenders.getMemoryWithoutUpdate().set(
"$pkDefenderFleet",
true);
198 defenders.getMemoryWithoutUpdate().set(MemFlags.FLEET_IGNORED_BY_OTHER_FLEETS,
true);
200 Misc.makeNoRepImpact(defenders,
"pk");
static SettingsAPI getSettings()
static FactoryAPI getFactory()
static SectorAPI getSector()
static void addShipGainText(FleetMemberAPI member, TextPanelAPI text)
void giveExecutor(InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)
boolean rightPostToAcceptPK(InteractionDialogAPI dialog)
boolean removePKDefenses(InteractionDialogAPI dialog, MemoryAPI memory)
boolean convertSentinelToColony(TextPanelAPI text, CargoAPI cargo)
boolean rightPostToTellAboutSentinel(InteractionDialogAPI dialog)
boolean execute(String ruleId, InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)
FleetMemberAPI createFleetMember(FleetMemberType type, String variantOrWingId)
ShipVariantAPI getVariant(String variantId)