public void start(MapleClient c, int npc, String filename, MapleCharacter chr) {
try {
NPCConversationManager cm = new NPCConversationManager(c, npc);
if (cms.containsKey(c)) {
dispose(c);
return;
}
cms.put(c, cm);
Invocable iv = null;
if (filename != null) {
iv = getInvocable("npc/world" + c.getWorld() + "/" + filename + ".js", c);
}
if (iv == null) {
iv = getInvocable("npc/world" + c.getWorld() + "/" + npc + ".js", c);
}
if (iv == null || NPCScriptManager.getInstance() == null) {
dispose(c);
return;
}
engine.put("cm", cm);
scripts.put(c, iv);
try {
iv.invokeFunction("start");
} catch (final NoSuchMethodException nsme) {
try {
iv.invokeFunction("start", chr);
} catch (final NoSuchMethodException nsma) {
iv.invokeFunction("action", (byte) 1, (byte) 0, 0);
}
}
} catch (final UndeclaredThrowableException | ScriptException ute) {
FilePrinter.printError(FilePrinter.NPC + npc + ".txt", ute);
notice(c, npc);
dispose(c);
} catch (final Exception e) {
FilePrinter.printError(FilePrinter.NPC + npc + ".txt", e);
notice(c, npc);
dispose(c);
}
}