1package com.fs.starfarer.api.impl.campaign.ghosts.types;
3import java.util.Random;
5import com.fs.starfarer.api.Script;
6import com.fs.starfarer.api.campaign.CampaignFleetAPI;
7import com.fs.starfarer.api.campaign.CustomCampaignEntityAPI;
8import com.fs.starfarer.api.impl.campaign.DerelictShipEntityPlugin;
9import com.fs.starfarer.api.impl.campaign.DerelictShipEntityPlugin.DerelictShipData;
10import com.fs.starfarer.api.impl.campaign.ghosts.BaseSensorGhost;
11import com.fs.starfarer.api.impl.campaign.ghosts.GBCircle;
12import com.fs.starfarer.api.impl.campaign.ghosts.GBIRunScript;
13import com.fs.starfarer.api.impl.campaign.ghosts.GBIntercept;
14import com.fs.starfarer.api.impl.campaign.ghosts.GBStayInPlace;
15import com.fs.starfarer.api.impl.campaign.ghosts.SensorGhostManager;
16import com.fs.starfarer.api.impl.campaign.ids.Entities;
17import com.fs.starfarer.api.impl.campaign.ids.Factions;
18import com.fs.starfarer.api.impl.campaign.ids.Tags;
19import com.fs.starfarer.api.impl.campaign.procgen.themes.BaseThemeGenerator;
20import com.fs.starfarer.api.impl.campaign.procgen.themes.SalvageSpecialAssigner;
21import com.fs.starfarer.api.util.Misc;
22import com.fs.starfarer.api.util.WeightedRandomPicker;
33 int maxBurn = 9 +
random.nextInt(3);;
43 float speed = Misc.getSpeedForBurnLevel(maxBurn);
44 float accelMult = speed / Misc.getSpeedForBurnLevel(20f);
56 WeightedRandomPicker<String> factions = SalvageSpecialAssigner.getNearbyFactions(
57 random,
entity.getLocationInHyperspace(), 15f, 10f, 10f);
58 String faction = factions.pick();
61 params.durationDays = 15f + 15f *
random.nextFloat();
63 CustomCampaignEntityAPI ship = (CustomCampaignEntityAPI) BaseThemeGenerator.addSalvageEntity(
64 random,
entity.getContainingLocation(), Entities.WRECK, Factions.NEUTRAL, params);
65 SalvageSpecialAssigner.assignSpecials(ship,
false,
random);
66 ship.addTag(Tags.EXPIRES);
67 ship.setDiscoverable(
false);
68 ship.setLocation(
entity.getLocation().x,
entity.getLocation().y);
69 ship.getVelocity().set(
entity.getVelocity());
70 ship.getMemoryWithoutUpdate().set(
"$fromGhost",
true);
static float getDefaultSModProb()
static DerelictShipData createRandom(String factionId, DerelictType type, Random random)
void addBehavior(GhostBehavior b)
void setDespawnRange(float despawnRange)
float genMediumSensorProfile()
void setAccelMult(float accelMult)
boolean placeNearPlayer()
void initEntity(float sensorProfile, float radius)
void addInterrupt(GhostBehaviorInterrupt interrupt)
SensorGhostManager manager
CustomCampaignEntityAPI entity
ShipGhost(SensorGhostManager manager, CampaignFleetAPI fleet)