Starsector API
Loading...
Searching...
No Matches
BlueprintSpecial.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special;
2
3import java.util.ArrayList;
4import java.util.List;
5import java.util.Random;
6
7import com.fs.starfarer.api.campaign.CargoAPI;
8import com.fs.starfarer.api.campaign.CargoStackAPI;
9import com.fs.starfarer.api.campaign.InteractionDialogAPI;
10import com.fs.starfarer.api.impl.campaign.procgen.SalvageEntityGenDataSpec.DropData;
11import com.fs.starfarer.api.impl.campaign.rulecmd.AddRemoveCommodity;
12import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.SalvageEntity;
13import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.SalvageSpecialInteraction.SalvageSpecialData;
14import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.SalvageSpecialInteraction.SalvageSpecialPlugin;
15
17
18 public static float MAX_RANGE = 16000f;
19
20 public static enum SurveyDataSpecialType {
21 SCRAMBLED, // used when the planet is already surveyed or doesn't exist anymore or nothing is found etc
22 PLANET_INTERESTING_PROPERTY,
23 PLANET_SURVEY_DATA,
24 SYSTEM_PRELIMINARY_SURVEY,
25 AUTO_PICK, // generate one of the above automatically, for a nearby planet or system
26 AUTO_PICK_NOT_SYSTEM, // pick either property or data, but not full system
27 }
28
29
30 public static class BlueprintSpecialData implements SalvageSpecialData {
31 public BlueprintSpecialData() {
32 }
33
34 public SalvageSpecialPlugin createSpecialPlugin() {
35 return new BlueprintSpecial();
36 }
37 }
38
39 protected BlueprintSpecialData data;
40
42 }
43
44 @Override
45 public void init(InteractionDialogAPI dialog, Object specialData) {
46 super.init(dialog, specialData);
47
48 data = (BlueprintSpecialData) specialData;
49
50 //random = new Random();
51
52 CargoAPI bp = generateBP(random);
53 bp.sort();
54
55 if (bp.getStacksCopy().size() <= 0) {
57 } else {
58 initBP(bp.getStacksCopy().get(0));
59 }
60
61 }
62
63 public void initNothing() {
64 addText("Your salvage crews find a likely-looking safe, but it's unfortunately empty.");
65 setDone(true);
66 }
67
68
69 protected void initBP(CargoStackAPI stack) {
70 if (!stack.isSpecialStack()) {
72 return;
73 }
74
75 addText("Your salvage crews find a well-hidden safe. After an EMP pulse and some delicate work " +
76 "with a plasma cutter, the safe yields its contents.");
77
78 playerFleet.getCargo().addFromStack(stack);
80
81 setDone(true);
82 }
83
84
85 @Override
86 public void optionSelected(String optionText, Object optionData) {
87 super.optionSelected(optionText, optionData);
88 }
89
90
91 public CargoAPI generateBP(Random random) {
92
93 List<DropData> dropRandom = new ArrayList<DropData>();
94
95 DropData d = new DropData();
96 d.chances = 1;
97 d.group = "blueprints_guaranteed";
98 dropRandom.add(d);
99
100 CargoAPI result = SalvageEntity.generateSalvage(random, 1f, 1f, 1f, 1f, null, dropRandom);
101
102 return result;
103 }
104
105}
static void addStackGainText(CargoStackAPI stack, TextPanelAPI text)
static CargoAPI generateSalvage(Random random, float valueMult, float overallMult, float fuelMult, List< DropData > dropValue, List< DropData > dropRandom)