Starsector API
Loading...
Searching...
No Matches
PK_CMD.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.rulecmd;
2
3import java.util.List;
4import java.util.Map;
5
6import org.lwjgl.util.vector.Vector2f;
7
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.util.Misc;
36import com.fs.starfarer.api.util.Misc.Token;
37
43public class PK_CMD extends BaseCommandPlugin {
44
45 public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
46 if (dialog == null) return false;
47
48 OptionPanelAPI options = dialog.getOptionPanel();
49 TextPanelAPI text = dialog.getTextPanel();
51 CargoAPI cargo = pf.getCargo();
52
53
54 String action = params.get(0).getString(memoryMap);
55
56 MemoryAPI memory = memoryMap.get(MemKeys.LOCAL);
57 if (memory == null) return false; // should not be possible unless there are other big problems already
58
59// MarketAPI market = dialog.getInteractionTarget().getMarket();
60// StarSystemAPI system = null;
61// if (dialog.getInteractionTarget().getContainingLocation() instanceof StarSystemAPI) {
62// system = (StarSystemAPI) dialog.getInteractionTarget().getContainingLocation();
63// }
64
65 if ("removePKDefenses".equals(action)) {
66 return removePKDefenses(dialog, memory);
67 } else if ("convertSentinelToColony".equals(action)) {
68 return convertSentinelToColony(text, cargo);
69 } else if ("rightPostToAcceptPK".equals(action)) {
70 return rightPostToAcceptPK(dialog);
71 } else if ("rightPostToTellAboutSentinel".equals(action)) {
72 return rightPostToTellAboutSentinel(dialog);
73 } else if ("giveExecutor".equals(action)) {
74 giveExecutor(dialog, params, memoryMap);
75 }
76
77 return false;
78 }
79
80
81 protected boolean convertSentinelToColony(TextPanelAPI text, CargoAPI cargo) {
82 //int crew = 100;
83 //cargo.removeCrew(crew);
84 //AddRemoveCommodity.addCommodityLossText(Commodities.CREW, crew, text);
85 // Crew removal handled in rules.
86
88 MarketAPI market = planet.getMarket();
89
90 //market.addTag(Tags.MARKET_NO_OFFICER_SPAWN);
91
92 market.setSurveyLevel(SurveyLevel.FULL);
93 for (MarketConditionAPI mc : market.getConditions()) {
94 mc.setSurveyed(true);
95 }
96
97 market.setName(planet.getName());
99
100 market.setDaysInExistence(0);
101 market.setPlanetConditionMarketOnly(false);
106
107 market.setSize(3);
108
112 //((StoragePlugin)market.getSubmarket(Submarkets.SUBMARKET_STORAGE).getPlugin()).setPlayerPaidToUnlock(true);
113
118 }
123 }
124
125 market.getTariff().modifyFlat("default_tariff", market.getFaction().getTariffFraction());
126
127 planet.setMarket(market);
128 market.setPrimaryEntity(planet);
129 market.setPlayerOwned(false);
130
131 Global.getSector().getEconomy().addMarket(market, false);
133 market.advance(0f);
135
136 //market.getConditions();
137
139
141 market.setAdmin(skiron);
142 market.getCommDirectory().addPerson(skiron, 0);
143 market.addPerson(skiron);
144
145 market.getPrimaryEntity().setInteractionImage("illustrations", "sentinel2");
146
147 return true;
148 }
149
150
151
152 protected void giveExecutor(InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
153 boolean removeSpecial = params.get(1).getBoolean(memoryMap);
154
155 ShipVariantAPI v = Global.getSettings().getVariant("executor_Hull").clone();
156 if (removeSpecial) {
158 }
161 AddShip.addShipGainText(member, dialog.getTextPanel());
162 }
163
164
165 protected boolean rightPostToAcceptPK(InteractionDialogAPI dialog) {
168 return true;
169 }
170 return Ranks.POST_BASE_COMMANDER.equals(person.getPostId()) ||
171 Ranks.POST_STATION_COMMANDER.equals(person.getPostId()) ||
172 //Ranks.POST_ADMINISTRATOR.equals(person.getPostId()) || // just military, no regular admins
173 Ranks.POST_OUTPOST_COMMANDER.equals(person.getPostId());
174 }
175
178 return Ranks.POST_BASE_COMMANDER.equals(person.getPostId()) ||
179 Ranks.POST_STATION_COMMANDER.equals(person.getPostId()) ||
180 Ranks.POST_ADMINISTRATOR.equals(person.getPostId()) ||
181 Ranks.POST_OUTPOST_COMMANDER.equals(person.getPostId());
182 }
183
184 protected boolean removePKDefenses(InteractionDialogAPI dialog, MemoryAPI memory) {
185 CampaignFleetAPI defenders = memory.getFleet("$defenderFleet");
186 if (defenders != null) {
187 memory.unset("$defenderFleet");
188 memory.set("$defenderFleetDefeated", true);
189 memory.set("$hasDefenders", false, 0);
191 defenders.setAI(null);
192 defenders.setNullAIActionText("dormant");
193 Vector2f loc = dialog.getInteractionTarget().getLocation();
194 defenders.setLocation(loc.x, loc.y + 100f);
195 defenders.setCircularOrbit(dialog.getInteractionTarget().getOrbitFocus(), 90f, 100f, 20f);
196 defenders.getMemoryWithoutUpdate().set("$pkDefenderFleet", true);
198 //Misc.addDefeatTrigger(defenders, "PK14thDefeated"); // handled elsewhere so the trigger is set in all cases
199 Misc.makeNoRepImpact(defenders, "pk");
200 }
201 return true;
202 }
203
204
205
206}
static SettingsAPI getSettings()
Definition Global.java:57
static FactoryAPI getFactory()
Definition Global.java:41
static SectorAPI getSector()
Definition Global.java:65
void modifyFlat(String source, float value)
static PersonAPI getPerson(String id)
Definition People.java:107
static void addShipGainText(FleetMemberAPI member, TextPanelAPI text)
Definition AddShip.java:33
void giveExecutor(InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)
Definition PK_CMD.java:152
boolean rightPostToAcceptPK(InteractionDialogAPI dialog)
Definition PK_CMD.java:165
boolean removePKDefenses(InteractionDialogAPI dialog, MemoryAPI memory)
Definition PK_CMD.java:184
boolean convertSentinelToColony(TextPanelAPI text, CargoAPI cargo)
Definition PK_CMD.java:81
boolean rightPostToTellAboutSentinel(InteractionDialogAPI dialog)
Definition PK_CMD.java:176
boolean execute(String ruleId, InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)
Definition PK_CMD.java:45
static void makeNoRepImpact(CampaignFleetAPI fleet, String reason)
Definition Misc.java:1468
FleetMemberAPI createFleetMember(FleetMemberType type, String variantOrWingId)
ShipVariantAPI getVariant(String variantId)
void setNullAIActionText(String nullAIActionText)
void setAI(CampaignFleetAIAPI campaignFleetAI)
void addFleetMember(FleetMemberAPI member)
void addEntity(SectorEntityToken entity)
void setInteractionImage(String category, String key)
void setCircularOrbit(SectorEntityToken focus, float angle, float orbitRadius, float orbitDays)
void addMarket(MarketAPI market, boolean withJunkAndChatter)
void setSurveyLevel(SurveyLevel surveyLevel)
void setPlayerOwned(boolean playerOwned)
void setDaysInExistence(float daysInExistence)
void setPlanetConditionMarketOnly(boolean isPlanetConditionMarketOnly)
void setPrimaryEntity(SectorEntityToken primaryEntity)
SubmarketAPI getSubmarket(String specId)
List< MarketConditionAPI > getConditions()
void set(String key, Object value)
CampaignFleetAPI getFleet(String key)