public final void killMonster(final MapleMonster monster, final MapleCharacter chr, final boolean withDrops, final boolean second, byte animation, final int lastSkill) {
        if (monster.getId() == 9300471) {
            spawnNpcForPlayer(chr.getClient(), 9073000, new Point(-595, 215));
        }
        if (monster.getId() == 9001045) {
            chr.setQuestAdd(MapleQuest.getInstance(25103), (byte) 1, "1");
        }
        if (monster.getId() == 9001050) {
            if (chr.getMap().getMobsSize() < 2) { //should be 1 left
                MapleQuest.getInstance(20035).forceComplete(chr, 1106000);
            }
        }
        if (monster.getId() == 9400902) {
            chr.getMap().startMapEffect("So what do you think? Just as though as the original, right?! Move by going to Resercher H.", 5120039);
        }
        if ((monster.getId() == 8810122 || monster.getId() == 8810018) && !second) {
            MapTimer.getInstance().schedule(new Runnable() {
                @Override
                public void run() {
                    killMonster(monster, chr, true, true, (byte) 1);
                    killAllMonsters(true);
                }
            }, 3000);
            return;
        }
        if (monster.getId() == 8820014) { //pb sponge, kills pb(w) first before dying
            killMonster(8820000);
        } else if (monster.getId() == 9300166) { //ariant pq bomb
            animation = 2;
        }
        spawnedMonstersOnMap.decrementAndGet();
        removeMapObject(monster);
        monster.killed();
        final MapleSquad sqd = getSquadByMap();
        final boolean instanced = sqd != null || monster.getEventInstance() != null || getEMByMap() != null;
        int dropOwner = monster.killBy(chr, lastSkill);
        if (animation >= 0) {
            if (GameConstants.isAzwanMap(getId())) {
                broadcastMessage(MobPacket.killMonster(monster.getObjectId(), animation, true));
            } else {
                broadcastMessage(MobPacket.killMonster(monster.getObjectId(), animation, false));
            }
        }

        if (monster.getBuffToGive() > -1) {
            final int buffid = monster.getBuffToGive();
            final MapleStatEffect buff = MapleItemInformationProvider.getInstance().getItemEffect(buffid);

            charactersLock.readLock().lock();
            try {
                for (final MapleCharacter mc : characters) {
                    if (mc.isAlive()) {
                        buff.applyTo(mc);

                        switch (monster.getId()) {
                            case 8810018:
                            case 8810122:
                            case 8820001:
                                mc.getClient().getSession().write(EffectPacket.showOwnBuffEffect(buffid, 13, mc.getLevel(), 1)); // HT nine spirit
                                broadcastMessage(mc, EffectPacket.showBuffeffect(mc.getId(), buffid, 13, mc.getLevel(), 1), false); // HT nine spirit
                                break;
                        }
                    }
                }
            } finally {
                charactersLock.readLock().unlock();
            }
        }
        final int mobid = monster.getId();
        ExpeditionType type = null;
        if (mobid == 8810018 && mapid == 240060200) { // Horntail
            World.Broadcast.broadcastMessage(CWvsContext.broadcastMsg(6, "To the crew that have finally conquered Horned Tail after numerous attempts, I salute thee! You are the true heroes of Leafre!!"));
            charactersLock.readLock().lock();
            try {
                for (MapleCharacter c : characters) {
                    //c.finishAchievement(16);
                }
            } finally {
                charactersLock.readLock().unlock();
            }
            //FileoutputUtil.log(FileoutputUtil.Horntail_Log, MapDebug_Log());
            if (speedRunStart > 0) {
                type = ExpeditionType.Horntail;
            }
            doShrine(true);
        } else if (mobid == 8810122 && mapid == 240060201) { // Horntail
            World.Broadcast.broadcastMessage(CWvsContext.broadcastMsg(6, "To the crew that have finally conquered Chaos Horned Tail after numerous attempts, I salute thee! You are the true heroes of Leafre!!"));
            charactersLock.readLock().lock();
            try {
                for (MapleCharacter c : characters) {
                    /// c.finishAchievement(24);
                }
            } finally {
                charactersLock.readLock().unlock();
            }
//            FileoutputUtil.log(FileoutputUtil.Horntail_Log, MapDebug_Log());
            if (speedRunStart > 0) {
                type = ExpeditionType.ChaosHT;
            }
            doShrine(true);
        } else if (mobid == 9400266 && mapid == 802000111) {
            doShrine(true);
        } else if (mobid == 9400265 && mapid == 802000211) {
            doShrine(true);
        } else if (mobid == 9400270 && mapid == 802000411) {
            doShrine(true);
        } else if (mobid == 9400273 && mapid == 802000611) {
            doShrine(true);
        } else if (mobid == 9400294 && mapid == 802000711) {
            doShrine(true);
        } else if (mobid == 9400296 && mapid == 802000803) {
            doShrine(true);
        } else if (mobid == 9400289 && mapid == 802000821) {
            doShrine(true);
            //INSERT HERE: 2095_tokyo
        } else if (mobid == 8830000 && mapid == 105100300) {
            if (speedRunStart > 0) {
                type = ExpeditionType.Balrog;
            }
        } else if ((mobid == 9420544 || mobid == 9420549) && mapid == 551030200 && monster.getEventInstance() != null && monster.getEventInstance().getName().contains(getEMByMap().getName())) {
            doShrine(getAllReactor().isEmpty());
        } else if (mobid == 8820001 && mapid == 270050100) {
            World.Broadcast.broadcastMessage(CWvsContext.broadcastMsg(6, "Oh, the exploration team who has defeated Pink Bean with undying fervor! You are the true victors of time!"));
            charactersLock.readLock().lock();
            try {
                for (MapleCharacter c : characters) {
                    // c.finishAchievement(17);
                }
            } finally {
                charactersLock.readLock().unlock();
            }
            if (speedRunStart > 0) {
                type = ExpeditionType.Pink_Bean;
            }
            doShrine(true);
        } else if (mobid == 8850011 && mapid == 274040200) {
            World.Broadcast.broadcastMessage(CWvsContext.broadcastMsg(6, "To you whom have defeated Empress Cygnus in the future, you are the heroes of time!"));
            charactersLock.readLock().lock();
            try {
                for (MapleCharacter c : characters) {
                    // c.finishAchievement(39);
                }
            } finally {
                charactersLock.readLock().unlock();
            }
            if (speedRunStart > 0) {
                type = ExpeditionType.Cygnus;
            }
            doShrine(true);
        } else if (mobid == 8870000 && mapid == 262030300) { //hilla
            World.Broadcast.broadcastMessage(CWvsContext.broadcastMsg(6, "Hilla is dead."));
            charactersLock.readLock().lock();
            try {
                for (MapleCharacter c : characters) {
                }
            } finally {
                charactersLock.readLock().unlock();
            }
            if (speedRunStart > 0) {
                type = ExpeditionType.Hilla;
            }
            doShrine(true);
        } else if (mobid == 8870100 && mapid == 262031300) { //hilla
            World.Broadcast.broadcastMessage(CWvsContext.broadcastMsg(6, "Dark Hilla is dead."));
            charactersLock.readLock().lock();
            try {
                for (MapleCharacter c : characters) {
                }
            } finally {
                charactersLock.readLock().unlock();
            }
            if (speedRunStart > 0) {
                type = ExpeditionType.Hilla;
            }
            doShrine(true);
        } else if (mobid == 8840000 && mapid == 211070100) {
            charactersLock.readLock().lock();
            try {
                for (MapleCharacter c : characters) {
                    // c.finishAchievement(38);
                }
            } finally {
                charactersLock.readLock().unlock();
            }
            if (speedRunStart > 0) {
                type = ExpeditionType.Von_Leon;
            }
            doShrine(true);
        } else if (mobid == 8800002 && mapid == 280030000) {
            charactersLock.readLock().lock();
            try {
                for (MapleCharacter c : characters) {
                    // c.finishAchievement(15);
                }
            } finally {
                charactersLock.readLock().unlock();
            }
//            FileoutputUtil.log(FileoutputUtil.Zakum_Log, MapDebug_Log());
            if (speedRunStart > 0) {
                type = ExpeditionType.Zakum;
            }
            doShrine(true);
        } else if (mobid == 8800102 && mapid == 280030001) {
            charactersLock.readLock().lock();
            try {
                for (MapleCharacter c : characters) {
                    //c/.finishAchievement(23);
                }
            } finally {
                charactersLock.readLock().unlock();
            }
            //FileoutputUtil.log(FileoutputUtil.Zakum_Log, MapDebug_Log());
            if (speedRunStart > 0) {
                type = ExpeditionType.Chaos_Zakum;
            }

            doShrine(true);
            /*} else if (mobid >= 9400903 && mobid <= 9400910) {
             boolean makeZakReal = true;
             final Collection<MapleMonster> monsters = getAllMonstersThreadsafe();

             for (final MapleMonster mons : monsters) {
             if (mons.getId() >= 9400903 && mons.getId() <= 9400910) {
             makeZakReal = false;
             break;
             }
             }
             if (makeZakReal) {
             for (final MapleMapObject object : monsters) {
             final MapleMonster mons = ((MapleMonster) object);
             if (mons.getId() == 9400900) {
             final Point pos = mons.getTruePosition();
             this.killAllMonsters(true);
             spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(9400900), pos);
             break;
             }
             }
             }*/
        } else if (mobid >= 8800003 && mobid <= 8800010) {
            boolean makeZakReal = true;
            final Collection<MapleMonster> monsters = getAllMonstersThreadsafe();

            for (final MapleMonster mons : monsters) {
                if (mons.getId() >= 8800003 && mons.getId() <= 8800010) {
                    makeZakReal = false;
                    break;
                }
            }
            if (makeZakReal) {
                for (final MapleMapObject object : monsters) {
                    final MapleMonster mons = ((MapleMonster) object);
                    if (mons.getId() == 8800000) {
                        final Point pos = mons.getTruePosition();
                        this.killAllMonsters(true);
                        spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(8800000), pos);
                        break;
                    }
                }
            }
        } else if (mobid >= 8800103 && mobid <= 8800110) {
            boolean makeZakReal = true;
            final Collection<MapleMonster> monsters = getAllMonstersThreadsafe();

            for (final MapleMonster mons : monsters) {
                if (mons.getId() >= 8800103 && mons.getId() <= 8800110) {
                    makeZakReal = false;
                    break;
                }
            }
            if (makeZakReal) {
                for (final MapleMonster mons : monsters) {
                    if (mons.getId() == 8800100) {
                        final Point pos = mons.getTruePosition();
                        this.killAllMonsters(true);
                        spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(8800100), pos);
                        break;
                    }
                }
            }
        } else if (mobid == 8820008) { //wipe out statues and respawn
            for (final MapleMapObject mmo : getAllMonstersThreadsafe()) {
                MapleMonster mons = (MapleMonster) mmo;
                if (mons.getLinkOid() != monster.getObjectId()) {
                    killMonster(mons, chr, false, false, animation);
                }
            }
        } else if (mobid >= 8820010 && mobid <= 8820014) {
            for (final MapleMapObject mmo : getAllMonstersThreadsafe()) {
                MapleMonster mons = (MapleMonster) mmo;
                if (mons.getId() != 8820000 && mons.getId() != 8820001 && mons.getObjectId() != monster.getObjectId() && mons.isAlive() && mons.getLinkOid() == monster.getObjectId()) {
                    killMonster(mons, chr, false, false, animation);
                }
            }
        } else if (mobid / 100000 == 98 && chr.getMapId() / 10000000 == 95 && getAllMonstersThreadsafe().isEmpty()) {
            switch ((chr.getMapId() % 1000) / 100) {
                case 0:
                case 1:
                case 2:
                case 3:
                case 4:
                    chr.getClient().getSession().write(CField.MapEff("monsterPark/clear"));
                    break;
                case 5:
                    if (chr.getMapId() / 1000000 == 952) {
                        chr.getClient().getSession().write(CField.MapEff("monsterPark/clearF"));
                    } else {
                        chr.getClient().getSession().write(CField.MapEff("monsterPark/clear"));
                    }
                    break;
                case 6:
                    chr.getClient().getSession().write(CField.MapEff("monsterPark/clearF"));
                    break;
            }
        }
        if (type != null) {
            if (speedRunStart > 0 && speedRunLeader.length() > 0) {
                long endTime = System.currentTimeMillis();
                String time = StringUtil.getReadableMillis(speedRunStart, endTime);
                broadcastMessage(CWvsContext.broadcastMsg(5, speedRunLeader + "'s squad has taken " + time + " to defeat " + type.name() + "!"));
                getRankAndAdd(speedRunLeader, time, type, (endTime - speedRunStart), (sqd == null ? null : sqd.getMembers()));
                endSpeedRun();
            }

        }

        if (withDrops && dropOwner != 1) {
            MapleCharacter drop;
            if (dropOwner <= 0) {
                drop = chr;
            } else {
                drop = getCharacterById(dropOwner);
                if (drop == null) {
                    drop = chr;
                }
            }
            dropFromMonster(drop, monster, instanced);
        }
        final int caServerrate = ChannelServer.getInstance(channel).getCashRate();
        final int cashz = (monster.getStats().isBoss() && monster.getStats().getHPDisplayType() == 0 ? 20 : 1) * caServerrate;
        final int cashModifier = (int) ((monster.getStats().isBoss() ? (monster.getStats().isPartyBonus() ? (monster.getMobExp() / 1000) : 0) : (monster.getMobExp() / 100 + monster.getMobMaxHp() / 2000))); //no rate
        if (Randomizer.nextInt(100) < 25) { //kill nx
            chr.modifyCSPoints(1, (int) ((Randomizer.nextInt(cashz) + cashz + cashModifier) * (chr.getStat().cashBuff / 100.0) * chr.getCashMod()), true);
        }
    }