public final int spawnMonsterWithEffect(final MapleMonster monster, final int effect, Point pos) {
        try {
            monster.setMap(this);
            monster.setPosition(pos);

            spawnAndAddRangedMapObject(monster, new DelayedPacketCreation() {
                @Override
                public final void sendPackets(MapleClient c) {
                    if (GameConstants.isAzwanMap(c.getPlayer().getMapId())) {
                        c.getSession().write(MobPacket.spawnMonster(monster, effect, 0, true));
                    } else {
                        c.getSession().write(MobPacket.spawnMonster(monster, effect, 0, false));
                    }
                }
            });
            updateMonsterController(monster);

            spawnedMonstersOnMap.incrementAndGet();
            return monster.getObjectId();
        } catch (Exception e) {
            return -1;
        }
    }