diff --git a/Server/src/main/content/minigame/vinesweeper/Vinesweeper.kt b/Server/src/main/content/minigame/vinesweeper/Vinesweeper.kt index 7d3fec4a0..151a265da 100644 --- a/Server/src/main/content/minigame/vinesweeper/Vinesweeper.kt +++ b/Server/src/main/content/minigame/vinesweeper/Vinesweeper.kt @@ -388,7 +388,7 @@ class Vinesweeper : InteractionListener, InterfaceListener, MapArea { } } for (scenery in wipedHoles) { - SceneryBuilder.replace(scenery, scenery.transform(HOLES[0])) + restoreOriginalHole(scenery) } } @@ -652,6 +652,7 @@ class VinesweeperNPC : AbstractNPC { scheduleNPCs(dest.player, dest.loc, alive = true, rabbit = false) } } + fun handleFarmerSeed(scenery: Scenery, dest: Vinesweeper.SeedDestination) { lock() var i = 0 @@ -665,14 +666,7 @@ class VinesweeperNPC : AbstractNPC { 1 -> { animate(Animation(Animations.GNOME_FARMER_SPADE_SMACK_8732)) sendChat(FARMER_FLAG_LINES.DEAD_PLANT.line) - var originalHoleId = HOLES[0] - for (obj in scenery.location.chunk.getStatObjects(scenery.location.chunkOffsetX, scenery.location.chunkOffsetY)) { - if (obj?.id != null) { - originalHoleId = obj.id - break - } - } - SceneryBuilder.replace(scenery, scenery.transform(originalHoleId)) + restoreOriginalHole(scenery) } 2 -> { animate(Animation(Animations.GNOME_FARMER_CLEAR_HOLES_8724)) @@ -699,7 +693,7 @@ class VinesweeperNPC : AbstractNPC { sendChat(FARMER_FLAG_LINES.FIND_FLAG.line) } 1 -> { - SceneryBuilder.replace(scenery, scenery.transform(HOLES[0])) + restoreOriginalHole(scenery) if (SEED_LOCS.contains(dest.loc)) { sendChat(FARMER_FLAG_LINES.FIND_SEED.line) animate(Animation(Animations.GNOME_FARMER_HOORAY_8731)) @@ -733,7 +727,7 @@ class VinesweeperNPC : AbstractNPC { for (dy in -FARMER_CLEAR_RADIUS..FARMER_CLEAR_RADIUS) { val toClear = getScenery(dest.loc.transform(dx, dy, 0)) if (toClear != null && intArrayOf(Sceneries.DEAD_PLANT_29456, *NUMBERS).contains(toClear.id)) { - SceneryBuilder.replace(toClear, toClear.transform(HOLES[0])) + restoreOriginalHole(toClear) } } } @@ -742,6 +736,16 @@ class VinesweeperNPC : AbstractNPC { } } +fun restoreOriginalHole(scenery: Scenery) { + var originalHoleId = HOLES[0] + for (obj in scenery.location.chunk.getStatObjects(scenery.location.chunkOffsetX, scenery.location.chunkOffsetY)) { + if (obj?.id != null) { + originalHoleId = obj.id + break + } + } + SceneryBuilder.replace(scenery, scenery.transform(originalHoleId)) +} /*