public final void switchController(final MapleCharacter newController, final boolean immediateAggro) {
        final MapleCharacter controllers = getController();
        if (controllers == newController) {
            return;
        } else if (controllers != null) {
            controllers.stopControllingMonster(this);
            if (GameConstants.isAzwanMap(newController.getMapId())) {
                controllers.getClient().getSession().write(MobPacket.stopControllingMonster(this, true));
            } else {
                controllers.getClient().getSession().write(MobPacket.stopControllingMonster(this, false));
            }
            sendStatus(controllers.getClient());
        }
        newController.controlMonster(this, immediateAggro);
        setController(newController);
        if (immediateAggro) {
            setControllerHasAggro(true);
        }
    }