public final void start(final MapleClient c, final int npc) {
	try {
	    if (!(cms.containsKey(c) && scripts.containsKey(c))) {
		final Invocable iv = getInvocable("npc/" + npc + ".js", c);
		final ScriptEngine scriptengine = (ScriptEngine) iv;
		if (iv == null) {
		    return;
		}
		final NPCConversationManager cm = new NPCConversationManager(c, npc, -1, (byte) -1);
		cms.put(c, cm);
		scriptengine.put("cm", cm);

		c.getPlayer().setConversation(1);

		scripts.put(c, iv);

		try {
		    iv.invokeFunction("start"); // Temporary until I've removed all of start
		} catch (NoSuchMethodException nsme) {
		    iv.invokeFunction("action", (byte) 1, (byte) 0, 0);
		}
	    }
	} catch (final Exception e) {
	    e.printStackTrace();
	    System.err.println("Error executing NPC script, NPC ID : " + npc + "." + e);
	    dispose(c);
	}
    }