/* * This file is part of the OdinMS Maple Story Server Copyright (C) 2008 ~ 2010 * 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 version 3 as published by * the Free Software Foundation. You may not use, modify or distribute this * program under any other version of the GNU Affero General Public License. * * 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 javastory.channel.packet; import javastory.channel.ChannelCharacter; import javastory.channel.server.CarnivalParty; import javastory.io.GamePacket; import javastory.io.PacketBuilder; import javastory.server.handling.ServerPacketOpcode; public class MonsterCarnivalPacket { /* * MONSTER_CARNIVAL_START = 0xE2 * MONSTER_CARNIVAL_OBTAINED_CP = 0xE3 * MONSTER_CARNIVAL_PARTY_CP = 0xE4 * MONSTER_CARNIVAL_SUMMON = 0xE5 * MONSTER_CARNIVAL_DIED = 0xE7 */ public static GamePacket startMonsterCarnival(final ChannelCharacter chr, final int enemyavailable, final int enemytotal) { final PacketBuilder builder = new PacketBuilder(); builder.writeAsShort(ServerPacketOpcode.MONSTER_CARNIVAL_START.getValue()); final CarnivalParty friendly = chr.getCarnivalParty(); builder.writeAsByte(friendly.getTeam()); builder.writeAsShort(chr.getAvailableCP()); builder.writeAsShort(chr.getTotalCP()); builder.writeAsShort(friendly.getAvailableCP()); builder.writeAsShort(friendly.getTotalCP()); builder.writeAsShort(enemyavailable); builder.writeAsShort(enemytotal); builder.writeLong(0); builder.writeAsShort(0); return builder.getPacket(); } public static GamePacket playerDiedMessage(final String name, final int lostCP, final int team) { // CPQ final PacketBuilder builder = new PacketBuilder(); builder.writeAsShort(ServerPacketOpcode.MONSTER_CARNIVAL_DIED.getValue()); builder.writeAsByte(team); // team builder.writeLengthPrefixedString(name); builder.writeAsByte(lostCP); return builder.getPacket(); } public static GamePacket CPUpdate(final boolean party, final int curCP, final int totalCP, final int team) { final PacketBuilder builder = new PacketBuilder(); if (!party) { builder.writeAsShort(ServerPacketOpcode.MONSTER_CARNIVAL_OBTAINED_CP.getValue()); } else { builder.writeAsShort(ServerPacketOpcode.MONSTER_CARNIVAL_PARTY_CP.getValue()); builder.writeAsByte(team); } builder.writeAsShort(curCP); builder.writeAsShort(totalCP); return builder.getPacket(); } public static GamePacket playerSummoned(final String name, final int tab, final int number) { final PacketBuilder builder = new PacketBuilder(); builder.writeAsShort(ServerPacketOpcode.MONSTER_CARNIVAL_SUMMON.getValue()); builder.writeAsByte(tab); builder.writeAsByte(number); builder.writeLengthPrefixedString(name); return builder.getPacket(); } }