Starsector API
Loading...
Searching...
No Matches
Limbo.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.world;
2
3import java.awt.Color;
4import java.util.Random;
5
6import com.fs.starfarer.api.Global;
7import com.fs.starfarer.api.campaign.CargoAPI;
8import com.fs.starfarer.api.campaign.CargoAPI.CargoItemType;
9import com.fs.starfarer.api.campaign.LocationAPI;
10import com.fs.starfarer.api.campaign.PlanetAPI;
11import com.fs.starfarer.api.campaign.SectorAPI;
12import com.fs.starfarer.api.campaign.SectorEntityToken;
13import com.fs.starfarer.api.campaign.SpecialItemData;
14import com.fs.starfarer.api.campaign.StarSystemAPI;
15import com.fs.starfarer.api.impl.campaign.ids.Commodities;
16import com.fs.starfarer.api.impl.campaign.ids.Conditions;
17import com.fs.starfarer.api.impl.campaign.ids.Entities;
18import com.fs.starfarer.api.impl.campaign.ids.Factions;
19import com.fs.starfarer.api.impl.campaign.ids.Items;
20import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
21import com.fs.starfarer.api.impl.campaign.ids.Planets;
22import com.fs.starfarer.api.impl.campaign.ids.StarTypes;
23import com.fs.starfarer.api.impl.campaign.ids.Tags;
24import com.fs.starfarer.api.impl.campaign.procgen.StarSystemGenerator;
25import com.fs.starfarer.api.impl.campaign.procgen.themes.BaseThemeGenerator;
26import com.fs.starfarer.api.impl.campaign.procgen.themes.BaseThemeGenerator.AddedEntity;
27import com.fs.starfarer.api.impl.campaign.procgen.themes.BaseThemeGenerator.EntityLocation;
28import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special.BaseSalvageSpecial;
29import com.fs.starfarer.api.impl.campaign.shared.WormholeManager;
30import com.fs.starfarer.api.impl.campaign.shared.WormholeManager.WormholeItemData;
31
32public class Limbo {
33
34 public void generate(SectorAPI sector) {
35
36 StarSystemAPI system = sector.createStarSystem("Limbo");
37 system.addTag(Tags.THEME_HIDDEN);
39 float w = Global.getSettings().getFloat("sectorWidth");
40 float h = Global.getSettings().getFloat("sectorHeight");
41 system.getLocation().set(-w/2f + 2300f, -h/2f + 2100f);
42
43
45
46 system.setBackgroundTextureFilename("graphics/backgrounds/background4.jpg");
47
48
49 // create the star and generate the hyperspace anchor for this system
50 PlanetAPI star = system.initStar("limbo", // unique id for this star
51 StarTypes.BROWN_DWARF, // id in planets.json
52 400f, // radius (in pixels at default zoom)
53 250); // corona radius, from star edge
54
55
56 system.setLightColor(new Color(180, 205, 140)); // light color in entire system, affects all entities
57
58 Random random = StarSystemGenerator.random;
59
60 PlanetAPI planet = system.addPlanet("limbo_hades", star, "Hades", Planets.ROCKY_METALLIC, 215, 60, 1700, 75);
61 planet.getMemoryWithoutUpdate().set("$hades", true);
62 planet.setCustomDescriptionId("limbo_hades");
67
68 float orbitRadius = planet.getRadius() + 300f;
69 float orbitDays = orbitRadius / (20f + random.nextFloat() * 5f);
70 EntityLocation loc = new EntityLocation();
71 loc.orbit = Global.getFactory().createCircularOrbitPointingDown(planet, random.nextFloat() * 360f,
72 orbitRadius, orbitDays);
73 AddedEntity added = BaseThemeGenerator.addEntity(null, system, loc, Entities.STATION_MINING, Factions.NEUTRAL);
74 added.entity.getMemoryWithoutUpdate().set(MemFlags.SALVAGE_SPEC_ID_OVERRIDE, "limbo_mining_station");
75 added.entity.setName("Automated Mining Station");
76 added.entity.getMemoryWithoutUpdate().set("$limboMiningStation", true);
77 added.entity.setCustomDescriptionId("station_mining_automated");
78
79 CargoAPI cargo = Global.getFactory().createCargo(true);
80 cargo.addCommodity(Commodities.RARE_METALS, 200f + random.nextInt(101));
81 BaseSalvageSpecial.addExtraSalvage(added.entity, cargo);
82
83
85
86
88 curr.getMemoryWithoutUpdate().set(WormholeManager.LIMBO_STABLE_LOCATION, true);
89
90 orbitRadius = curr.getRadius() + 200f;
91 orbitDays = orbitRadius / (20f + random.nextFloat() * 5f);
92 loc = new EntityLocation();
93 loc.orbit = Global.getFactory().createCircularOrbitPointingDown(curr, random.nextFloat() * 360f,
94 orbitRadius, orbitDays);
97 added.entity.setName("Mothballed Equipment Cache");
99 added.entity.getMemoryWithoutUpdate().set("$limboWormholeCache", true);
100
101 cargo = Global.getFactory().createCargo(true);
102 SpecialItemData item = WormholeManager.createWormholeAnchor("foxtrot", "Foxtrot");
103 cargo.addItems(CargoItemType.SPECIAL, item, 1);
104
105 item = new SpecialItemData(Items.WORMHOLE_SCANNER, null);
106 cargo.addItems(CargoItemType.SPECIAL, item, 1);
107
108 cargo.addFuel(110 + random.nextInt(21));
109 BaseSalvageSpecial.addExtraSalvage(added.entity, cargo);
110
111 break;
112 }
113
114
115
116 if (Global.getSettings().isDevMode()) {
117 orbitRadius = planet.getRadius() + 600f;
118 orbitDays = orbitRadius / (20f + random.nextFloat() * 5f);
119 loc = new EntityLocation();
120 loc.orbit = Global.getFactory().createCircularOrbitPointingDown(planet, random.nextFloat() * 360f,
121 orbitRadius, orbitDays);
123 added.entity.setName("Test Wormhole Cache");
124
125 CargoAPI testCargo = Global.getFactory().createCargo(true);
126
127 WormholeItemData itemData = new WormholeItemData("standard", "bravo", "Bravo");
128 SpecialItemData item = new SpecialItemData(Items.WORMHOLE_ANCHOR, itemData.toJsonStr());
129 testCargo.addItems(CargoItemType.SPECIAL, item, 1);
130
131 itemData = new WormholeItemData("standard", "sierra", "Sierra");
132 item = new SpecialItemData(Items.WORMHOLE_ANCHOR, itemData.toJsonStr());
133 testCargo.addItems(CargoItemType.SPECIAL, item, 1);
134
135 item = new SpecialItemData(Items.WORMHOLE_SCANNER, null);
136 testCargo.addItems(CargoItemType.SPECIAL, item, 1);
137
138 BaseSalvageSpecial.addExtraSalvage(added.entity, testCargo);
139 }
140
141 system.autogenerateHyperspaceJumpPoints(true, true);
142 }
143}
144
145
146
147
148
149
150
151
152
153
static SettingsAPI getSettings()
Definition Global.java:57
static FactoryAPI getFactory()
Definition Global.java:41
static SectorAPI getSector()
Definition Global.java:65
static AddedEntity addEntity(Random random, StarSystemAPI system, WeightedRandomPicker< EntityLocation > locs, String type, String faction)
static void addExtraSalvage(SectorEntityToken entity, CargoAPI cargo)
static SpecialItemData createWormholeAnchor(String id, String name)
CargoAPI createCargo(boolean unlimitedStacks)
OrbitAPI createCircularOrbitPointingDown(SectorEntityToken focus, float angle, float orbitRadius, float orbitDays)
void addItems(CargoAPI.CargoItemType itemType, Object data, float quantity)
void addCommodity(String commodityId, float quantity)
PlanetAPI addPlanet(String id, SectorEntityToken focus, String name, String type, float angle, float radius, float orbitRadius, float orbitDays)
List< SectorEntityToken > getEntitiesWithTag(String tag)
void setBackgroundTextureFilename(String backgroundTextureFilename)
StarSystemAPI createStarSystem(String name)
void setCustomDescriptionId(String customDescriptionId)
PlanetAPI initStar(String id, String type, float radius, float coronaSize, float windBurnLevel, float flareProbability, float crLossMult)
void set(String key, Object value)