1package com.fs.starfarer.api.impl.campaign.rulecmd;
5import java.util.Random;
7import com.fs.starfarer.api.Global;
8import com.fs.starfarer.api.Script;
9import com.fs.starfarer.api.campaign.CampaignFleetAPI;
10import com.fs.starfarer.api.campaign.CargoAPI;
11import com.fs.starfarer.api.campaign.FactionAPI.ShipPickMode;
12import com.fs.starfarer.api.campaign.FleetInflater;
13import com.fs.starfarer.api.campaign.InteractionDialogAPI;
14import com.fs.starfarer.api.campaign.PersistentUIDataAPI.AbilitySlotAPI;
15import com.fs.starfarer.api.campaign.PersistentUIDataAPI.AbilitySlotsAPI;
16import com.fs.starfarer.api.campaign.PlanetAPI;
17import com.fs.starfarer.api.campaign.StarSystemAPI;
18import com.fs.starfarer.api.campaign.rules.MemKeys;
19import com.fs.starfarer.api.campaign.rules.MemoryAPI;
20import com.fs.starfarer.api.characters.CharacterCreationData;
21import com.fs.starfarer.api.characters.PersonAPI;
22import com.fs.starfarer.api.combat.ShipVariantAPI;
23import com.fs.starfarer.api.fleet.FleetMemberAPI;
24import com.fs.starfarer.api.impl.campaign.fleets.DefaultFleetInflaterParams;
25import com.fs.starfarer.api.impl.campaign.ids.Commodities;
26import com.fs.starfarer.api.impl.campaign.ids.Factions;
27import com.fs.starfarer.api.impl.campaign.ids.HullMods;
28import com.fs.starfarer.api.impl.campaign.ids.Personalities;
29import com.fs.starfarer.api.impl.campaign.ids.Ranks;
30import com.fs.starfarer.api.impl.campaign.ids.Skills;
31import com.fs.starfarer.api.impl.campaign.tutorial.CampaignTutorialScript;
32import com.fs.starfarer.api.impl.campaign.tutorial.SpacerObligation;
33import com.fs.starfarer.api.impl.campaign.tutorial.TutorialMissionIntel;
34import com.fs.starfarer.api.loading.VariantSource;
35import com.fs.starfarer.api.util.Misc;
36import com.fs.starfarer.api.util.Misc.Token;
37import com.fs.starfarer.api.util.WeightedRandomPicker;
47 if (dialog ==
null)
return false;
53 boolean explorer = memory.
getBoolean(
"$ngcExplorerSelected");
54 boolean merc = memory.
getBoolean(
"$ngcMercSelected");
55 boolean random = memory.
getBoolean(
"$ngcRandomSelected");
56 boolean spacer = memory.
getBoolean(
"$ngcSpacerSelected");
57 if (explorer || merc || random) {
74 boolean skipTutorial = memory.
getBoolean(
"$ngcSkipTutorial");
88 crew += Math.ceil(member.getMinCrew() + (member.getMaxCrew() - member.getMinCrew()) * 0.5f);
89 supplies += member.getDeploymentCostSupplies() * 4f;
101 boolean addOfficer = memory.
getBoolean(
"$ngcAddOfficer");
102 boolean skipTutorial = memory.
getBoolean(
"$ngcSkipTutorial");
103 boolean explorer = memory.
getBoolean(
"$ngcExplorerSelected");
104 boolean merc = memory.
getBoolean(
"$ngcMercSelected");
105 boolean random = memory.
getBoolean(
"$ngcRandomSelected");
106 boolean spacer = memory.
getBoolean(
"$ngcSpacerSelected");
127 if (!member.isFlagship()) {
138 member.setCaptain(officer);
146 float max = member.getRepairTracker().getMaxCR();
147 member.getRepairTracker().setCR(max);
174 float addMachinery = Math.min(freeCargo, 15);
176 float r = (float) Math.random();
177 addMachinery = Math.min(freeCargo, 5 + 20 * r);
179 if (addMachinery > 0) {
181 freeCargo -= addMachinery;
183 float addSupplies = Math.min(freeCargo, 70);
187 crew += Math.ceil(member.getMinCrew() + (member.getMaxCrew() - member.getMinCrew()) * 0.5f);
188 supplies += member.getDeploymentCostSupplies() * 4f;
190 float r = (float) Math.random();
194 addSupplies = Math.min(freeCargo, supplies + 20f + 20f * r);
196 if (addSupplies > 0) {
198 freeCargo -= addSupplies;
203 float r = (float) Math.random();
235 for (
int i = 0; i < 5; i++) {
236 slots.setCurrBarIndex(i);
237 for (
int j = 0; j < 10; j++) {
238 AbilitySlotAPI slot = slots.getCurrSlotsCopy().get(j);
239 slot.setAbilityId(
null);
258 Random random =
new Random();
263 picker.
add(
"shrike_Attack");
264 picker.
add(
"mule_Standard");
265 picker.
add(
"hammerhead_Balanced");
266 picker.
add(
"enforcer_Balanced", 0.5f);
267 picker.
add(
"enforcer_Assault", 0.5f);
268 picker.
add(
"drover_Starting", 1f);
272 float r = random.nextFloat();
274 boolean addedLarge =
false;
280 for (
int i = 0; i < num; i++) {
285 picker.
add(
"lasher_Standard");
286 picker.
add(
"centurion_Assault");
287 picker.
add(
"wolf_Assault", 0.5f);
288 picker.
add(
"wolf_CS", 0.5f);
289 picker.
add(
"wayfarer_Standard");
290 picker.
add(
"hound_hegemony_Standard", 0.5f);
291 picker.
add(
"hound_Standard", 0.5f);
292 picker.
add(
"cerberus_Standard");
293 picker.
add(
"kite_hegemony_Interceptor", 0.5f);
294 picker.
add(
"kite_pirates_Raider", 0.5f);
295 picker.
add(
"gremlin_Strike");
296 picker.
add(
"condor_Attack");
299 r = random.nextFloat();
300 int extra = (int) (r / 0.34f);
301 if (addedLarge) extra = Math.min(extra, 1);
303 qMod -= 0.07f * extra;
304 for (
int i = 0; i < num; i++) {
309 picker.
add(
"tarsus_Standard");
310 picker.
add(
"buffalo_Standard");
311 picker.
add(
"crig_Standard");
312 picker.
add(
"mudskipper_Standard");
315 r = random.nextFloat();
318 }
else if (r > 0.33f) {
324 p.quality = 0.8f + qMod;
325 p.mode = ShipPickMode.PRIORITY_THEN_ALL;
326 p.persistent =
false;
327 p.seed = random.nextLong();
346 return random.nextFloat() > 0.5f;
351 boolean addDmods =
true;
359 member.setVariant(v,
false,
false);
361 String h = member.getHullId();
364 if (h.equals(
"hammerhead")) {
366 }
else if (h.equals(
"drover")) {
368 }
else if (h.equals(
"centurion")) {
370 }
else if (h.equals(
"lasher")) {
374 else if (h.equals(
"dram")) {
378 else if (h.equals(
"apogee")) {
380 }
else if (h.equals(
"condor")) {
382 }
else if (h.equals(
"wayfarer")) {
384 }
else if (h.equals(
"shepherd")) {
388 else if (h.equals(
"kite_original")) {
static SectorAPI getSector()
static final String LOCAL
static final String HEAVY_MACHINERY
static final String HEGEMONY
static final String PLAYER
static final String INDEPENDENT
static final String COMP_HULL
static final String FRAGILE_SUBSYSTEMS
static final String COMP_ARMOR
static final String FAULTY_GRID
static final String STEADY
static String POST_OFFICER
static String SPACE_LIEUTENANT
static final String HELMSMANSHIP
static boolean genRandomStart(CampaignFleetAPI fleet)
static void adjustStartingHulls(CampaignFleetAPI fleet)
boolean execute(String ruleId, InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)
static final String USE_TUTORIAL_RESPAWN
static void endGalatiaPortionOfMission(boolean withStipend, boolean didTutorial)
static PersonAPI getJangalaContact()
static PersonAPI createMainContact(PlanetAPI ancyra)
static FleetInflater getInflater(CampaignFleetAPI fleet, Object params)
void setFaction(String factionId, boolean includeCaptains)
FleetMemberAPI getFlagship()
FleetDataAPI getFleetData()
void setInflater(FleetInflater inflater)
void removeFuel(float quantity)
void removeSupplies(float quantity)
void addCrew(int quantity)
void initPartialsIfNeeded()
MutableValue getCredits()
void addSupplies(float quantity)
void addFuel(float quantity)
void addCommodity(String commodityId, float quantity)
RelationshipAPI getRelToPlayer()
PersonAPI createRandomPerson()
void addOfficer(PersonAPI person)
void addFleetMember(FleetMemberAPI member)
List< FleetMemberAPI > getMembersListCopy()
void inflate(CampaignFleetAPI fleet)
SectorEntityToken getEntityById(String id)
void addScript(EveryFrameScript script)
AbilitySlotsAPI getAbilitySlotsAPI()
CampaignFleetAPI getPlayerFleet()
FactionAPI getPlayerFaction()
PersistentUIDataAPI getUIData()
FactionAPI getFaction(String factionId)
StarSystemAPI getStarSystem(String name)
MemoryAPI getMemoryWithoutUpdate()
CharacterDataAPI getCharacterData()
void setTransponderOn(boolean transponderOn)
void set(String key, Object value)
boolean getBoolean(String key)
void addScript(Script script)
void addScriptBeforeTimePass(Script script)
void setSkillLevel(String id, float level)
void refreshCharacterStatsEffects()
RelationshipAPI getRelToPlayer()
void setRankId(String rank)
MutableCharacterStatsAPI getStats()
void setPersonality(String personality)
void setPostId(String postId)
void setHullVariantId(String hullVariantId)
void setSource(VariantSource source)
void addPermaMod(String modId)
void setCaptain(PersonAPI commander)