38 AbyssalEPData data = (AbyssalEPData) point.
custom;
40 WeightedRandomPicker<LightSpawnType> picker =
new WeightedRandomPicker<LightSpawnType>(data.random);
41 picker.add(LightSpawnType.NORMAL, 100f);
42 picker.add(LightSpawnType.PAIR, 7f);
43 picker.add(LightSpawnType.CLUSTER, 3f);
44 picker.add(LightSpawnType.LARGE, 1f);
46 LightSpawnType type = picker.pick();
50 if (type == LightSpawnType.NORMAL) {
51 AbyssalLightParams params =
new AbyssalLightParams();
52 SectorEntityToken e =
Global.
getSector().getHyperspace().addCustomEntity(
53 null,
null, Entities.ABYSSAL_LIGHT, Factions.NEUTRAL, params);
54 e.setLocation(point.
loc.x, point.
loc.y);
55 }
else if (type == LightSpawnType.LARGE) {
56 AbyssalLightParams params =
new AbyssalLightParams(maxSize + 800f, maxSize + 1200f);
57 params.durationDays = 1000f + data.random.nextFloat() * 500f;
58 params.frequencyChangeMult = 0.25f;
60 SectorEntityToken e =
Global.
getSector().getHyperspace().addCustomEntity(
61 null,
null, Entities.ABYSSAL_LIGHT, Factions.NEUTRAL, params);
62 e.setLocation(point.
loc.x, point.
loc.y);
63 }
else if (type == LightSpawnType.PAIR) {
64 AbyssalLightParams larger =
new AbyssalLightParams(maxSize - 300f, maxSize + 300f);
65 larger.durationDays = 90f + data.random.nextFloat() * 30f;
66 larger.frequencyChangeMult = 0.75f;
68 SectorEntityToken e =
Global.
getSector().getHyperspace().addCustomEntity(
69 null,
null, Entities.ABYSSAL_LIGHT, Factions.NEUTRAL, larger);
70 e.setLocation(point.
loc.x, point.
loc.y);
72 AbyssalLightParams smaller =
new AbyssalLightParams(minSize * 0.2f, minSize * 0.5f);
73 smaller.durationDays = larger.durationDays;
74 smaller.frequencyChangeMult = larger.frequencyChangeMult;
76 Vector2f loc = Misc.getPointAtRadius(point.
loc, 100f + data.random.nextFloat() * 300f);
78 null,
null, Entities.ABYSSAL_LIGHT, Factions.NEUTRAL, smaller);
79 e.setLocation(loc.x, loc.y);
80 }
else if (type == LightSpawnType.CLUSTER) {
81 int num = 3 + data.random.nextInt(7);
82 float spread = 50f + num * 10f;
84 for (
int i = 0; i < num; i++) {
85 AbyssalLightParams params =
new AbyssalLightParams(minSize * 0.1f, minSize * 0.2f);
86 params.durationDays += data.random.nextFloat() * 50f;
87 params.frequencyChangeMult = 2f + data.random.nextFloat() * 2f;;
88 params.frequencyMultMin *= params.frequencyChangeMult;
89 params.frequencyMultMax *= params.frequencyChangeMult;
92 Vector2f loc = Misc.getPointWithinRadius(point.
loc, spread);
93 SectorEntityToken e =
Global.
getSector().getHyperspace().addCustomEntity(
94 null,
null, Entities.ABYSSAL_LIGHT, Factions.NEUTRAL, params);
95 e.setLocation(loc.x, loc.y);