From 7850199016665ce550f4bf227f87b3eba9d3aaa2 Mon Sep 17 00:00:00 2001 From: downthecrop Date: Wed, 23 Feb 2022 13:21:50 +0000 Subject: [PATCH] Fixed doors getting stuck "in use" --- .../global/action/DoorActionHandler.java | 22 +++++++++++-------- .../interaction/city/EdgevilleNodePlugin.java | 5 +---- .../wildyditch/WildernessInterfacePlugin.java | 6 +---- 3 files changed, 15 insertions(+), 18 deletions(-) diff --git a/Server/src/main/java/core/game/content/global/action/DoorActionHandler.java b/Server/src/main/java/core/game/content/global/action/DoorActionHandler.java index 47202eb02..1de0cc0c3 100644 --- a/Server/src/main/java/core/game/content/global/action/DoorActionHandler.java +++ b/Server/src/main/java/core/game/content/global/action/DoorActionHandler.java @@ -1,5 +1,6 @@ package core.game.content.global.action; +import api.ContentAPIKt; import core.game.node.entity.Entity; import core.game.node.entity.player.Player; import core.game.node.entity.player.link.audio.Audio; @@ -98,16 +99,11 @@ public final class DoorActionHandler { entity.lock(4); final Location loc = entity.getLocation(); entity.addExtension(LogoutTask.class, new LocationLogoutTask(4, loc)); - object.setCharge(IN_USE_CHARGE); - if (second != null) { - second.setCharge(IN_USE_CHARGE); - } if (entity instanceof Player) { ((Player) entity).getAudioManager().send(new Audio(3419)); } GameWorld.getPulser().submit(new Pulse(1) { boolean opened = false; - @Override public boolean pulse() { if (!opened) { @@ -115,12 +111,14 @@ public final class DoorActionHandler { entity.getWalkingQueue().reset(); entity.getWalkingQueue().addPath(endLocation.getX(), endLocation.getY()); opened = true; + + // Set the door in_use + object.setCharge(IN_USE_CHARGE); + if (second != null) { + second.setCharge(IN_USE_CHARGE); + } return false; } - object.setCharge(1000); - if (second != null) { - second.setCharge(1000); - } if (entity instanceof Player) { Player player = entity.asPlayer(); if (object.getId() == 2112 && player.getLocation().withinDistance(new Location(3046, 9756, 0), 10)) { @@ -137,6 +135,12 @@ public final class DoorActionHandler { player.getAchievementDiaryManager().finishTask(player, DiaryType.LUMBRIDGE, 1, 6); } } + + // Reset door to inactive + object.setCharge(1000); + if (second != null) { + second.setCharge(1000); + } return true; } }); diff --git a/Server/src/main/java/core/game/interaction/city/EdgevilleNodePlugin.java b/Server/src/main/java/core/game/interaction/city/EdgevilleNodePlugin.java index dc2829977..9539a3176 100644 --- a/Server/src/main/java/core/game/interaction/city/EdgevilleNodePlugin.java +++ b/Server/src/main/java/core/game/interaction/city/EdgevilleNodePlugin.java @@ -83,12 +83,9 @@ public final class EdgevilleNodePlugin extends OptionHandler { if (option.equalsIgnoreCase("open") && player.getLocation().getY() < 9918) { player.getInterfaceManager().openComponent(382); player.setAttribute("wildy_gate", node); - player.setAttribute("wildy_gate_loc", - Location.create(player.getLocation().getX(),player.getLocation().getY()+1)); } else{ // Leaving the wilderness - DoorActionHandler.handleAutowalkDoor(player, (Scenery) node, - Location.create(player.getLocation().getX(),player.getLocation().getY()-1)); + DoorActionHandler.handleAutowalkDoor(player, (Scenery) node); } } return true; diff --git a/Server/src/main/java/core/game/interaction/object/wildyditch/WildernessInterfacePlugin.java b/Server/src/main/java/core/game/interaction/object/wildyditch/WildernessInterfacePlugin.java index 6fea66824..b2a2cece0 100644 --- a/Server/src/main/java/core/game/interaction/object/wildyditch/WildernessInterfacePlugin.java +++ b/Server/src/main/java/core/game/interaction/object/wildyditch/WildernessInterfacePlugin.java @@ -74,13 +74,9 @@ public final class WildernessInterfacePlugin extends ComponentPlugin { } public static void handleGate(final Player player){ Scenery gate = player.getAttribute("wildy_gate"); - Location endLocation = player.getAttribute("wildy_gate_loc"); - // Cleanup player.removeAttribute("wildy_gate"); - player.removeAttribute("wildy_gate_loc"); - // Move player through gate/door - DoorActionHandler.handleAutowalkDoor(player,gate,endLocation); + DoorActionHandler.handleAutowalkDoor(player,gate); } }