From db8d07118db53d3bda99063c847b4b074aa34449 Mon Sep 17 00:00:00 2001 From: Adry85 <adrya85@hotmail.it> Date: Thu, 5 Oct 2017 17:28:04 +0200 Subject: [PATCH] Fixed NPE on Minigame AI. Patch by: Zephyr Reported by: CostyKiller Tested by: CostyKiller --- .../scripts/ai/npc/Minigame/Minigame.java | 37 ++++++++++++++++--- 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/dist/game/data/scripts/ai/npc/Minigame/Minigame.java b/dist/game/data/scripts/ai/npc/Minigame/Minigame.java index 326ced2fc5..a87a3461d1 100644 --- a/dist/game/data/scripts/ai/npc/Minigame/Minigame.java +++ b/dist/game/data/scripts/ai/npc/Minigame/Minigame.java @@ -159,7 +159,7 @@ public final class Minigame extends AbstractNpcAI room.burnThemAll(); startQuestTimer("off", 2000, npc, null); final ConsumerEventListener listener = new ConsumerEventListener(room.getParticipant(), EventType.ON_CREATURE_SKILL_USE, (OnCreatureSkillUse listenerEvent) -> onSkillUse(listenerEvent), room); - room.getParticipant().addListener(listener); + room.setListener(listener); room.setCurrentPot(0); } break; @@ -185,11 +185,7 @@ public final class Minigame extends AbstractNpcAI cancelQuestTimer("expire", npc, null); cancelQuestTimer("hurry_up", npc, null); cancelQuestTimer("hurry_up2", npc, null); - room.getManager().setTarget(null); - room.setParticipant(null); - room.setStarted(false); - room.setAttemptNumber(1); - room.setCurrentPot(0); + room.clean(); break; } case "afterthat": @@ -391,6 +387,7 @@ public final class Minigame extends AbstractNpcAI private int _attemptNumber; private int _currentPot; private final int _order[]; + private ConsumerEventListener _listener; public MinigameRoom(L2Npc[] burners, L2Npc manager) { @@ -530,6 +527,34 @@ public final class Minigame extends AbstractNpcAI { return _order; } + + /** + * Set a listener for player inside room + * @param listener + */ + public void setListener(ConsumerEventListener listener) + { + _listener = listener; + _participant.addListener(listener); + } + + /** + * Clean the room values + */ + public void clean() + { + if (_listener != null) + { + _participant.removeListener(_listener); + _listener = null; + } + + getManager().setTarget(null); + setParticipant(null); + setStarted(false); + setAttemptNumber(1); + setCurrentPot(0); + } } public static void main(String[] args) -- GitLab