public void killMonster(final MapleMonster monster, final MapleCharacter chr, final boolean withDrops, final boolean secondTime, int animation) { int mobid = 0; int randomNumber = (int)(Math.random() * 190); int mobteam = 0; try { mobid = monster.getId(); mobteam = monster.getTeam(); } catch (Exception e) { } if (mobid == 9400202) { Server.getInstance().broadcastMessage(MaplePacketCreator.serverNotice(6, chr.getClient().getChannel(), "[Event] " + chr.getName() + " has killed a Golden Slime in " + chr.getMap().getMapName() + "!")); chr.gainEventPoints(1, "[Event] You have gained 1 Event Point."); } if (chr.getMapId() > 910000000 && chr.getMapId() < 910000030) { if (randomNumber == 40) { chr.announce(MaplePacketCreator.earnTitleMessage("You have gained 1 Free Market Point.")); chr.setMobPoints(chr.getMobPoints() + 1); } if (randomNumber == 20) { chr.announce(MaplePacketCreator.earnTitleMessage("You have gained " + chr.getFmNx() + " NX.")); chr.giftNx(chr.getFmNx()); } } if (monster.getId() == 8810018 && !secondTime) { TimerManager.getInstance().schedule(new Runnable() { @Override public void run() { killMonster(monster, chr, withDrops, true, 1); killAllMonsters(); } }, 3000); return; } if (chr == null) { if (!monster.getStats().isFriendly() && !monster.getStats().isCustom()) { spawnedMonstersOnMap.decrementAndGet(); } monster.setHp(0); broadcastMessage(MaplePacketCreator.killMonster(monster.getObjectId(), animation), monster.getPosition()); removeMapObject(monster); return; } if (monster.getStats().getLevel() >= chr.getLevel() + 30 && !chr.isGM()) { // AutobanFactory.GENERAL.alert(chr, " for killing a " + monster.getName() + " which is over 30 levels higher."); } /* * if * (chr.getQuest(MapleQuest.getInstance(29400)).getStatus().equals(MapleQuestStatus.Status.STARTED)) * { if (chr.getLevel() >= 120 && monster.getStats().getLevel() >= 120) * { //FIX MEDAL SHET } else if (monster.getStats().getLevel() >= * chr.getLevel()) { } } */ int buff = monster.getBuffToGive(); if (buff > -1) { MapleItemInformationProvider mii = MapleItemInformationProvider.getInstance(); for (MapleMapObject mmo : this.getAllPlayer()) { MapleCharacter character = (MapleCharacter) mmo; if (character.isAlive()) { MapleStatEffect statEffect = mii.getItemEffect(buff); //Line 747 character.getClient().announce(MaplePacketCreator.showOwnBuffEffect(buff, 1)); broadcastMessage(character, MaplePacketCreator.showBuffeffect(character.getId(), buff, 1), false); statEffect.applyTo(character); } } } if (monster.getId() == 8810018 && chr.getMapId() == 240060200) { for (Channel cserv : Server.getInstance().getWorld(world).getChannels()) { for (MapleCharacter player : cserv.getPlayerStorage().getAllCharacters()) { player.dropMessage("To the crew that have finally conquered Horned Tail after numerous attempts, I salute thee! You are the true heroes of Leafre!!"); } } } if (!monster.getStats().isFriendly() && !monster.getStats().isCustom()) { spawnedMonstersOnMap.decrementAndGet(); } monster.setHp(0); broadcastMessage(MaplePacketCreator.killMonster(monster.getObjectId(), animation), monster.getPosition()); //if (monster.getStats().selfDestruction() == null) {//FUU BOMBS D: removeMapObject(monster); //} if (monster.getCP() > 0 && chr.getCarnival() != null) { chr.getCarnivalParty().addCP(chr, monster.getCP()); chr.announce(MaplePacketCreator.updateCP(chr.getCP(), chr.getObtainedCP())); broadcastMessage(MaplePacketCreator.updatePartyCP(chr.getCarnivalParty())); //they drop items too ): } if (monster.getId() >= 8800003 && monster.getId() <= 8800010) { boolean makeZakReal = true; Collection<MapleMapObject> objects = getMapObjects(); for (MapleMapObject object : objects) { MapleMonster mons = getMonsterByOid(object.getObjectId()); if (mons != null) { if (mons.getId() >= 8800003 && mons.getId() <= 8800010) { makeZakReal = false; break; } } } if (makeZakReal) { for (MapleMapObject object : objects) { MapleMonster mons = chr.getMap().getMonsterByOid(object.getObjectId()); if (mons != null) { if (mons.getId() == 8800000) { makeMonsterReal(mons); updateMonsterController(mons); break; } } } } } MapleCharacter dropOwner = monster.killBy(chr); if (withDrops && !monster.dropsDisabled()) { if (dropOwner == null) { dropOwner = chr; } dropFromMonster(dropOwner, monster); } }