From 699da37f06edba8d35b8cf2b3fcbf25421b8de01 Mon Sep 17 00:00:00 2001 From: P0nk Date: Fri, 31 Mar 2023 07:33:49 +0200 Subject: [PATCH] Simplify NPC script start --- .../channel/handlers/ClickGuideHandler.java | 4 +- .../channel/handlers/NPCTalkHandler.java | 10 ++--- .../handlers/RemoteGachaponHandler.java | 2 +- .../listener/MatchCheckerCPQChallenge.java | 4 +- .../scripting/AbstractPlayerInteraction.java | 2 +- .../scripting/item/ItemScriptManager.java | 4 +- .../java/scripting/npc/NPCScriptManager.java | 42 ++++++++++--------- 7 files changed, 35 insertions(+), 33 deletions(-) diff --git a/src/main/java/net/server/channel/handlers/ClickGuideHandler.java b/src/main/java/net/server/channel/handlers/ClickGuideHandler.java index dee0634f88..6b44db6e27 100644 --- a/src/main/java/net/server/channel/handlers/ClickGuideHandler.java +++ b/src/main/java/net/server/channel/handlers/ClickGuideHandler.java @@ -36,9 +36,9 @@ public class ClickGuideHandler extends AbstractPacketHandler { @Override public void handlePacket(InPacket p, Client c) { if (c.getPlayer().getJob().equals(Job.NOBLESSE)) { - NPCScriptManager.getInstance().start(c, NpcId.MIMO, null); + NPCScriptManager.getInstance().start(c, NpcId.MIMO); } else { - NPCScriptManager.getInstance().start(c, NpcId.LILIN, null); + NPCScriptManager.getInstance().start(c, NpcId.LILIN); } } diff --git a/src/main/java/net/server/channel/handlers/NPCTalkHandler.java b/src/main/java/net/server/channel/handlers/NPCTalkHandler.java index 701d0864da..99e8b3ce7d 100644 --- a/src/main/java/net/server/channel/handlers/NPCTalkHandler.java +++ b/src/main/java/net/server/channel/handlers/NPCTalkHandler.java @@ -73,11 +73,11 @@ public final class NPCTalkHandler extends AbstractPacketHandler { // Custom handling to reduce the amount of scripts needed. if (npc.getId() >= NpcId.GACHAPON_MIN && npc.getId() <= NpcId.GACHAPON_MAX) { - NPCScriptManager.getInstance().start(c, npc.getId(), "gachapon", null); + NPCScriptManager.getInstance().start(c, npc.getId(), "gachapon"); } else if (npc.getName().endsWith("Maple TV")) { - NPCScriptManager.getInstance().start(c, npc.getId(), "mapleTV", null); + NPCScriptManager.getInstance().start(c, npc.getId(), "mapleTV"); } else if (YamlConfig.config.server.USE_REBIRTH_SYSTEM && npc.getId() == YamlConfig.config.server.REBIRTH_NPC_ID) { - NPCScriptManager.getInstance().start(c, npc.getId(), "rebirth", null); + NPCScriptManager.getInstance().start(c, npc.getId(), "rebirth"); } else { boolean hasNpcScript = NPCScriptManager.getInstance().start(c, npc.getId(), oid, null); if (!hasNpcScript) { @@ -97,9 +97,9 @@ public final class NPCTalkHandler extends AbstractPacketHandler { NPCScriptManager nsm = NPCScriptManager.getInstance(); if (pnpc.getScriptId() < NpcId.CUSTOM_DEV && !nsm.isNpcScriptAvailable(c, "" + pnpc.getScriptId())) { - nsm.start(c, pnpc.getScriptId(), "rank_user", null); + nsm.start(c, pnpc.getScriptId(), "rank_user"); } else { - nsm.start(c, pnpc.getScriptId(), null); + nsm.start(c, pnpc.getScriptId()); } } } diff --git a/src/main/java/net/server/channel/handlers/RemoteGachaponHandler.java b/src/main/java/net/server/channel/handlers/RemoteGachaponHandler.java index 74487fb4f3..dcdfe4e2ae 100644 --- a/src/main/java/net/server/channel/handlers/RemoteGachaponHandler.java +++ b/src/main/java/net/server/channel/handlers/RemoteGachaponHandler.java @@ -57,6 +57,6 @@ public final class RemoteGachaponHandler extends AbstractPacketHandler { } else { npcId = gacha == 8 ? NpcId.GACHAPON_NLC : NpcId.GACHAPON_NAUTILUS; } - NPCScriptManager.getInstance().start(c, npcId, "gachaponRemote", null); + NPCScriptManager.getInstance().start(c, npcId, "gachaponRemote"); } } diff --git a/src/main/java/net/server/coordinator/matchchecker/listener/MatchCheckerCPQChallenge.java b/src/main/java/net/server/coordinator/matchchecker/listener/MatchCheckerCPQChallenge.java index 0e113eaa1e..92a79eb414 100644 --- a/src/main/java/net/server/coordinator/matchchecker/listener/MatchCheckerCPQChallenge.java +++ b/src/main/java/net/server/coordinator/matchchecker/listener/MatchCheckerCPQChallenge.java @@ -77,9 +77,9 @@ public class MatchCheckerCPQChallenge implements MatchCheckerListenerRecipe { } if (message.contentEquals("cpq1")) { - NPCScriptManager.getInstance().start("cpqchallenge", ldr.getClient(), npcid, chrMembers); + NPCScriptManager.getInstance().startCpqScript("cpqchallenge", ldr.getClient(), npcid, chrMembers); } else { - NPCScriptManager.getInstance().start("cpqchallenge2", ldr.getClient(), npcid, chrMembers); + NPCScriptManager.getInstance().startCpqScript("cpqchallenge2", ldr.getClient(), npcid, chrMembers); } cm.sendOk(LanguageConstants.getMessage(chr, LanguageConstants.CPQChallengeRoomSent)); diff --git a/src/main/java/scripting/AbstractPlayerInteraction.java b/src/main/java/scripting/AbstractPlayerInteraction.java index 15dc90ce70..a726fcb154 100644 --- a/src/main/java/scripting/AbstractPlayerInteraction.java +++ b/src/main/java/scripting/AbstractPlayerInteraction.java @@ -352,7 +352,7 @@ public class AbstractPlayerInteraction { c.removeClickedNPC(); NPCScriptManager.getInstance().dispose(c); - NPCScriptManager.getInstance().start(c, npcid, script, null); + NPCScriptManager.getInstance().start(c, npcid, script); } public int getQuestStatus(int id) { diff --git a/src/main/java/scripting/item/ItemScriptManager.java b/src/main/java/scripting/item/ItemScriptManager.java index 4085eeed06..27c86555d0 100644 --- a/src/main/java/scripting/item/ItemScriptManager.java +++ b/src/main/java/scripting/item/ItemScriptManager.java @@ -34,6 +34,6 @@ public class ItemScriptManager { } public void runItemScript(Client c, ScriptedItem scriptItem) { - NPCScriptManager.getInstance().start(c, scriptItem, null); + NPCScriptManager.getInstance().startItemScript(c, scriptItem); } -} \ No newline at end of file +} diff --git a/src/main/java/scripting/npc/NPCScriptManager.java b/src/main/java/scripting/npc/NPCScriptManager.java index 0974c54fe2..9cf9fdec61 100644 --- a/src/main/java/scripting/npc/NPCScriptManager.java +++ b/src/main/java/scripting/npc/NPCScriptManager.java @@ -60,27 +60,27 @@ public class NPCScriptManager extends AbstractScriptManager { return engine != null; } - public boolean start(Client c, int npc, Character chr) { - return start(c, npc, -1, chr); + public void start(Client c, int npc) { + start(c, npc, -1, null); } public boolean start(Client c, int npc, int oid, Character chr) { - return start(c, npc, oid, null, chr); + return startNpcScript(c, npc, oid, null, chr); } - public boolean start(Client c, int npc, String fileName, Character chr) { - return start(c, npc, -1, fileName, chr); + public boolean start(Client c, int npc, String fileName) { + return startNpcScript(c, npc, -1, fileName, null); } - public boolean start(Client c, int npc, int oid, String fileName, Character chr) { - return start(c, npc, oid, fileName, chr, false, "cm"); + public boolean startNpcScript(Client c, int npc, int oid, String fileName, Character chr) { + return startWithBindings(c, npc, oid, fileName, chr, false, "cm"); } - public boolean start(Client c, ScriptedItem scriptItem, Character chr) { - return start(c, scriptItem.getNpc(), -1, scriptItem.getScript(), chr, true, "im"); + public boolean startItemScript(Client c, ScriptedItem scriptItem) { + return startWithBindings(c, scriptItem.getNpc(), -1, scriptItem.getScript(), null, true, "im"); } - public void start(String filename, Client c, int npc, List chrs) { + public void startCpqScript(String filename, Client c, int npc, List chrs) { try { final NPCConversationManager cm = new NPCConversationManager(c, npc); cm.dispose(); @@ -111,7 +111,7 @@ public class NPCScriptManager extends AbstractScriptManager { } } - private boolean start(Client c, int npc, int oid, String fileName, Character chr, boolean itemScript, String engineName) { + private boolean startWithBindings(Client c, int npc, int oid, String fileName, Character chr, boolean itemScript, String engineName) { try { final NPCConversationManager cm = new NPCConversationManager(c, npc, oid, fileName, itemScript); if (cms.containsKey(c)) { @@ -165,16 +165,18 @@ public class NPCScriptManager extends AbstractScriptManager { public void action(Client c, byte mode, byte type, int selection) { Invocable iv = scripts.get(c); - if (iv != null) { - try { - c.setClickedNPC(); - iv.invokeFunction("action", mode, type, selection); - } catch (ScriptException | NoSuchMethodException t) { - if (getCM(c) != null) { - log.error("Error performing NPC script action for npc: {}", getCM(c).getNpc(), t); - } - dispose(c); + if (iv == null) { + return; + } + + try { + c.setClickedNPC(); + iv.invokeFunction("action", mode, type, selection); + } catch (ScriptException | NoSuchMethodException t) { + if (getCM(c) != null) { + log.error("Error performing NPC script action for npc: {}", getCM(c).getNpc(), t); } + dispose(c); } }