Starsector API
Loading...
Searching...
No Matches
LeviathanCalfGhost.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.ghosts.types;
2
3import com.fs.starfarer.api.Global;
4import com.fs.starfarer.api.campaign.CampaignFleetAPI;
5import com.fs.starfarer.api.campaign.SectorEntityToken;
6import com.fs.starfarer.api.impl.campaign.ghosts.BaseSensorGhost;
7import com.fs.starfarer.api.impl.campaign.ghosts.GBDartAround;
8import com.fs.starfarer.api.impl.campaign.ghosts.GBFollowClosely;
9import com.fs.starfarer.api.impl.campaign.ghosts.GBGoAwayFrom;
10import com.fs.starfarer.api.impl.campaign.ghosts.GBIDespawn;
11import com.fs.starfarer.api.impl.campaign.ghosts.GBIGenerateSlipstream;
12import com.fs.starfarer.api.impl.campaign.ghosts.GBITooClose;
13import com.fs.starfarer.api.impl.campaign.ghosts.GBLeviathanCalfRun;
14import com.fs.starfarer.api.impl.campaign.ghosts.SensorGhostManager;
15import com.fs.starfarer.api.impl.campaign.ids.Tags;
16
17public class LeviathanCalfGhost extends BaseSensorGhost {
18
19 public LeviathanCalfGhost(SensorGhostManager manager, SectorEntityToken parent) {
20 super(manager, 0);
21
22 float size = genFloat(200f, 250f);
24 setDespawnRange(-100f);
25 entity.addTag(Tags.UNAFFECTED_BY_SLIPSTREAM);
26
27 int burnLevel = 30;
28 setAccelMult(0.3f);
29
30 setVel(parent.getVelocity());
31
32 placeNearEntity(parent, 100f, 200f);
33
34 addBehavior(new GBFollowClosely(parent, 1000f, burnLevel, 0f, 100f));
35 }
36
38 super(manager, 0);
39
40 CampaignFleetAPI pf = Global.getSector().getPlayerFleet();
41
42 float size = genFloat(200f, 250f);
44 setDespawnRange(-100f);
45 entity.addTag(Tags.UNAFFECTED_BY_SLIPSTREAM);
46
47 int burnLevel = 25;
48
49 setAccelMult(0.1f);
50
51 if (!placeNearPlayer()) {
53 return;
54 }
55
56 float travelDur = genFloat(5f, 8f);
57
58 //addBehavior(new GBStayInPlace(10f));
59 SectorEntityToken loc = Global.getSector().getHyperspace().createToken(entity.getLocation());
60 addBehavior(new GBDartAround(loc, 20f, 2, 0f, 100f));
61 addInterrupt(new GBITooClose(0f, pf, 100f));
62 addInterrupt(new GBIDespawn(genFloat(10f, 15f)));
63 addBehavior(new GBLeviathanCalfRun(travelDur, pf,
64 0.01f + 0.02f * manager.getRandom().nextFloat(),
65 0f + 15f * manager.getRandom().nextFloat(),
66 burnLevel, true));
67 addInterrupt(new GBIGenerateSlipstream(size, size * 1.2f, burnLevel - 5, 30f, 20, travelDur));
68 addBehavior(new GBGoAwayFrom(10f, pf, 30));
69 }
70}
71
72
73
74
75
76
77
static SectorAPI getSector()
Definition Global.java:59
void placeNearEntity(SectorEntityToken entity, float minDist, float maxDist)
void addInterrupt(GhostBehaviorInterrupt interrupt)
LeviathanCalfGhost(SensorGhostManager manager, SectorEntityToken parent)