From 70bfa214c728e1e379d0f3d077145ccfc093bd3c Mon Sep 17 00:00:00 2001 From: kuroppoi <68156848+kuroppoi@users.noreply.github.com> Date: Wed, 5 Jan 2022 00:19:00 +0100 Subject: [PATCH] Support for spawn buildings in deep biomes --- .../brainwine/gameserver/zone/gen/StructureGenerator.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gameserver/src/main/java/brainwine/gameserver/zone/gen/StructureGenerator.java b/gameserver/src/main/java/brainwine/gameserver/zone/gen/StructureGenerator.java index b6522cc..4e78269 100644 --- a/gameserver/src/main/java/brainwine/gameserver/zone/gen/StructureGenerator.java +++ b/gameserver/src/main/java/brainwine/gameserver/zone/gen/StructureGenerator.java @@ -13,6 +13,7 @@ public class StructureGenerator implements GeneratorTask { private final WeightedMap spawnTowers; private final Vector2i dungeonRegion; private final double dungeonRate; + private final boolean surface; public StructureGenerator(GeneratorConfig config) { uniqueStructures = config.getUniqueStructures(); @@ -20,6 +21,7 @@ public class StructureGenerator implements GeneratorTask { spawnTowers = config.getSpawnTowers(); dungeonRegion = config.getDungeonRegion(); dungeonRate = config.getDungeonRate(); + surface = config.getSurface(); } @Override @@ -59,7 +61,8 @@ public class StructureGenerator implements GeneratorTask { } private void placeRandomSpawnTower(GeneratorContext ctx, int x) { - int surface = ctx.getZone().getSurface()[x]; + int surface = this.surface ? ctx.getZone().getSurface()[x] + : ctx.getHeight() / 8 + ctx.nextInt(Math.max(1, ctx.nextInt(ctx.getHeight() / 8))); if(!spawnTowers.isEmpty()) { Prefab spawnTower = spawnTowers.next(ctx.getRandom());