/* OrpheusMS: MapleStory Private Server based on OdinMS Copyright (C) 2012 Aaron Weiss <aaron@deviant-core.net> Patrick Huy <patrick.huy@frz.cc> Matthias Butz <matze@odinms.de> Jan Christian Meyer <vimes@odinms.de> This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ package net.server.handlers.channel; import client.MapleCharacter; import client.MapleClient; import java.awt.Point; import net.AbstractMaplePacketHandler; import server.partyquest.MonsterCarnival; import server.life.MapleLifeFactory; import server.maps.MapleReactor; import server.maps.MapleReactorFactory; import tools.MaplePacketCreator; import tools.data.input.SeekableLittleEndianAccessor; /** * * @author kevintjuh93 */ public final class MonsterCarnivalHandler extends AbstractMaplePacketHandler { public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { MapleCharacter chr = c.getPlayer(); MonsterCarnival carnival = chr.getCarnival(); int tab = slea.readByte(); int number = slea.readShort(); if (carnival != null) { if (chr.getCarnivalParty() != carnival.getPartyRed() || chr.getCarnivalParty() != carnival.getPartyBlue()) { chr.getMap().broadcastMessage(MaplePacketCreator.leaveCPQ(chr)); chr.changeMap(980000010); } if (chr.getCP() > getPrice(tab, number)) { if (tab == 0) { // SPAWNING if (chr.getCarnivalParty().canSummon()) { chr.getMap().spawnCPQMonster(MapleLifeFactory.getMonster(getMonster(number)), new Point(1, 1), carnival.oppositeTeam(chr.getCarnivalParty()).getTeam()); chr.getCarnivalParty().summon(); } else chr.announce(MaplePacketCreator.CPQMessage((byte) 2)); } else if (tab == 1) { } else if (tab == 2) { int rid = 9980000 + chr.getTeam(); MapleReactor reactor = new MapleReactor(MapleReactorFactory.getReactor(rid), rid); /* * switch (number) { case 0: reactor.setMonsterStatus(tab, * MonsterStatus.WEAPON_ATTACK_UP, * MobSkillFactory.getMobSkill(150, 1)); break; case 1: * reactor.setMonsterStatus(tab, * MonsterStatus.WEAPON_DEFENSE_UP, * MobSkillFactory.getMobSkill(151, 1)); break; case 2: * reactor.setMonsterStatus(tab, * MonsterStatus.MAGIC_ATTACK_UP, * MobSkillFactory.getMobSkill(152, 1)); break; case 3: * reactor.setMonsterStatus(tab, * MonsterStatus.MAGIC_DEFENSE_UP, * MobSkillFactory.getMobSkill(153, 1)); break; case 4: * reactor.setMonsterStatus(tab, MonsterStatus.ACC, * MobSkillFactory.getMobSkill(154, 1)); break; case 5: * reactor.setMonsterStatus(tab, MonsterStatus.AVOID, * MobSkillFactory.getMobSkill(155, 1)); break; case 6: * reactor.setMonsterStatus(tab, MonsterStatus.SPEED, * MobSkillFactory.getMobSkill(156, 1)); break; case 7: * reactor.setMonsterStatus(tab, * MonsterStatus.WEAPON_IMMUNITY, * MobSkillFactory.getMobSkill(140, 1)); break; case 8: * reactor.setMonsterStatus(tab, * MonsterStatus.MAGIC_IMMUNITY, * MobSkillFactory.getMobSkill(141, 1)); break; } */ chr.getMap().spawnReactor(reactor); } } else { chr.getMap().broadcastMessage(MaplePacketCreator.CPQMessage((byte) 1)); } } else { chr.announce(MaplePacketCreator.CPQMessage((byte) 5)); } chr.announce(MaplePacketCreator.enableActions()); } public int getMonster(int num) { int mid = 0; num++; switch (num) { case 1: mid = 9300127; break; case 2: mid = 9300128; break; case 3: mid = 9300129; break; case 4: mid = 9300130; break; case 5: mid = 9300131; break; case 6: mid = 9300132; break; case 7: mid = 9300133; break; case 8: mid = 9300134; break; case 9: mid = 9300135; break; case 10: mid = 9300136; break; } return mid; } public int getPrice(int num, int tab) { int price = 0; num++; if (tab == 0) { switch (num) { case 1: case 2: price = 7; break; case 3: case 4: price = 8; break; case 5: case 6: price = 9; break; case 7: price = 10; break; case 8: price = 11; break; case 9: price = 12; break; case 10: price = 30; break; } } else if (tab == 1) { switch (num) { case 1: price = 17; break; case 2: case 4: price = 19; break; case 3: price = 12; break; case 5: price = 16; break; case 6: price = 14; break; case 7: price = 22; break; case 8: price = 18; break; } } else { switch (num) { case 1: case 3: price = 17; break; case 2: case 4: case 6: price = 16; break; case 5: price = 13; break; case 7: price = 12; break; case 8: case 9: price = 35; break; } } return price; } }