#![allow(unused_must_use)] use std::io::{SeekFrom}; use psopacket::{pso_message, PSOPacketData}; use crate::{PSOPacketData, PacketParseError}; pub trait PSOMessage { const CMD: u8; fn from_bytes(cur: &mut R) -> Result where Self: Sized; fn as_bytes(&self) -> Vec; } #[pso_message(0x05)] pub struct PlayerActivatedSwitch { data: [u8; 8], } #[pso_message(0x06)] pub struct GuildcardSend { } #[pso_message(0x06)] pub struct GuildcardRecv { guildcard: u32, name: [u16; 0x18], team: [u16; 0x10], desc: [u16; 0x58], one: u8, language: u8, section_id: u8, class: u8, } #[pso_message(0x07)] pub struct SymbolChat { unknown1: u32, sc_data: [u8; 60], } #[pso_message(0x0A)] pub struct MobAttack { enemy_id: u16, damage: u16, flags: u16, } #[pso_message(0x0B)] pub struct BoxAttack { data: [u8; 8], } #[pso_message(0x0C)] pub struct Unknown0C { data: [u8; 8], } #[pso_message(0x0D)] pub struct Unknown0D { data: [u8; 8], } #[pso_message(0x12)] pub struct BossInteractionDragon { data: [u8; 6], } //#[pso_message(0x13)] //pub struct BossInteractionDeRolLe { //} //#[pso_message(0x14)] //pub struct BossInteractionDeRolLe2 { //} //#[pso_message(0x15)] //pub struct BossInteractionVolOpt { //} //#[pso_message(0x16)] //pub struct BossInteractionVolOpt2 { //} //#[pso_message(0x17)] //pub struct VolOptSecondPhase { // x: f32, // y: f32, // z: f32, //} //#[pso_message(0x18)] //pub struct VolOptSecondPhase2 { //} //#[pso_message(0x19)] //pub struct BossInteractionDarkFalz { //} //#[pso_message(0x1B)] //pub struct PlayerKillActivated { //} //#[pso_message(0x1C)] //pub struct PlayerKillActivated2 { //} #[pso_message(0x1F)] pub struct PlayerChangedMap { unknown1: u32, unknown2: u32, x: f32, y: f32, z: f32, } #[pso_message(0x1F)] pub struct PlayerChangedMap2 { map_area: u16, _unknown1: u16, } #[pso_message(0x20)] pub struct TellOtherPlayerMyLocation { map_area: u16, _unknown1: u16, x: f32, y: f32, z: f32, unknown2: u32, } #[pso_message(0x21)] pub struct PlayerWarpingToFloor { area: u8, data: u16, } #[pso_message(0x22)] pub struct PlayerWarping { } #[pso_message(0x23)] pub struct PlayerDoneChangingMap { } #[pso_message(0x24)] pub struct PlayerTeleported { x: f32, y: f32, z: f32, } #[pso_message(0x25)] pub struct PlayerEquipItem { item_id: u32, sub_menu: u8, unknown1: u16, } #[pso_message(0x26)] pub struct PlayerUnequipItem { item_id: u32, unknown1: u32, } #[pso_message(0x27)] pub struct PlayerUseItem { item_id: u32, } #[pso_message(0x28)] pub struct PlayerFeedMag { mag_id: u32, item_id: u32, } #[pso_message(0x29)] pub struct PlayerNoLongerHasItem { item_id: u32, amount: u32, } #[pso_message(0x2A)] pub struct PlayerDropItem { unknown1: u16, map_area: u16, item_id: u32, x: f32, y: f32, z: f32, } #[pso_message(0x2B)] pub struct AddItemToInventory { item_data: [u8; 12], slot: u32, item_data2: [u8; 4], unknown1: u32, } #[pso_message(0x2C)] pub struct InitializeSpeechNpc { unknown1: u16, unknown2: u16, x: f32, z: f32, unknown3: f32, } #[pso_message(0x2D)] pub struct FinishSpeechNpc { } #[pso_message(0x2F)] pub struct FinishSpeechNpcBPD { } #[pso_message(0x30)] pub struct PlayerLevelUp { atp: u16, mst: u16, evp: u16, hp: u16, dfp: u16, ata: u16, lvl: u32, } #[pso_message(0x31)] pub struct PlayerResurrected { } #[pso_message(0x32)] pub struct PlayerResurrectedMedicalCenter { } #[pso_message(0x33)] pub struct PlayerUsedMoonAtomizer { } #[pso_message(0x36)] pub struct PlayerPBDonation { } #[pso_message(0x37)] pub struct PlayerInitiatedPB { pb_amount: u8, unknown1: u32, } #[pso_message(0x3A)] pub struct PlayerLeftArea { } #[pso_message(0x3B)] pub struct PlayerSpawnedIntoArea { } #[pso_message(0x3E)] pub struct PlayerStopped { unknown1: u32, area: u16, room: u16, x: f32, y: f32, z: f32, } #[pso_message(0x3F)] pub struct PlayerLoadedIn { unknown1: u32, unknown2: u32, x: f32, y: f32, z: f32, } #[pso_message(0x40)] pub struct PlayerWalking { x: f32, z: f32, unknown: f32, } #[pso_message(0x42)] pub struct PlayerRunning { x: f32, z: f32, } #[pso_message(0x43)] pub struct ComboStep1 { data: [u8; 4], } #[pso_message(0x44)] pub struct ComboStep2 { data: [u8; 4], } #[pso_message(0x45)] pub struct ComboStep3 { data: [u8; 4], } #[pso_message(0x46)] pub struct ComboStepDone { data: [u8; 4], } #[pso_message(0x47)] pub struct PlayerTechCast { technique: u8, unknown1: u8, unknown2: u8, num_of_targets: u8, } #[pso_message(0x48)] pub struct PlayerTechDone { technique: u8, unknown1: u8, level: u8, unknown2: u8, } #[pso_message(0x49)] pub struct PlayerPBUsed { pb: u8, unknown1: u32, amount: u8, unknown2: u32, } #[pso_message(0x4A)] pub struct PlayerBlockedDamage { } #[pso_message(0x4B)] pub struct PlayerReceivedDamage { unknown1: u16, hp: u16, unknown2: u32, } #[pso_message(0x4C)] pub struct PlayerReceivedDamage2 { unknown1: u16, hp: u16, unknown2: u32, } #[pso_message(0x4D)] pub struct PlayerDeath { data: [u8; 4], } #[pso_message(0x4E)] pub struct PlayerPostDeathAnimation { } #[pso_message(0x4F)] pub struct PlayerScapedollResurrection { } #[pso_message(0x50)] pub struct PlayerActivatedSwitch2 { data: [u16; 2], } #[pso_message(0x52)] pub struct TalkToNpc { unknown1: u32, unknown2: u32, } //#[pso_message(0x53)] //pub struct Unknown53 { //} #[pso_message(0x55)] pub struct PlayerWarped { unknown1: u32, x: f32, y: f32, } #[pso_message(0x58)] pub struct LobbyEmote { emote: u32, } #[pso_message(0x59)] pub struct RemoveItemFromFloor { client_id: u8, unknown: u8, map_area: u8, unknown2: u8, item_id: u32, } #[pso_message(0x5A)] pub struct PickupItem { item_id: u32, map_area: u8, unknown: [u8; 3], } #[pso_message(0x5D)] pub struct DropSplitStack { pub map_area: u8, pub variety: u8, pub unknown1: u16, pub x: f32, pub z: f32, pub item_bytes: [u8; 12], pub item_id: u32, pub item_bytes2: [u8; 4], pub unknown2: u32, } //#[pso_message(0x5E)] //pub struct BuyFromShop { // item_data: u32, // item_data2: u32, // item_data3: u32, // item_id: u32, // amount: u32, //} #[pso_message(0x5F)] pub struct ItemDrop { pub map_area: u8, pub variety: u8, pub unknown: u16, pub x: f32, pub z: f32, pub y: f32, pub item_bytes: [u8; 12], pub item_id: u32, pub item_bytes2: [u8; 4], pub unknown2: u32, } #[pso_message(0x60)] pub struct RequestItem { map_area: u8, pt_index: u8, enemy_id: u16, x: f32, z: f32, y: f32, } #[pso_message(0x61)] pub struct MagAnimation { mag_id: u32, effect: u8, unknown1: u16, } //#[pso_message(0x63)] //pub struct FloorItemLimitItemDeletion { // client_id: u16, // item_id: u8, // amount: u8, //} #[pso_message(0x66)] pub struct PlayerUsedStarAtomizer { } #[pso_message(0x67)] pub struct SpawningMonsters { data: [u8; 12], } #[pso_message(0x68)] pub struct PlayerTelepipe { } #[pso_message(0x69)] pub struct NpcSpawn { data: [u8; 8], } #[pso_message(0x6F)] pub struct PlayerJoiningGame { data: [u32; 0x81], } #[pso_message(0x71)] pub struct PlayerJoiningGame2 { } #[pso_message(0x72)] pub struct BurstDone { } #[pso_message(0x74)] pub struct WordSelect { data: [u8; 28], } #[pso_message(0x75)] pub struct PlayerChangedFloor { data: [u8; 4], } #[pso_message(0x76)] pub struct KillMonster { map_area: u16, data: [u8; 2], } //#[pso_message(0x77)] //pub struct SyncQuestRegister { //} //#[pso_message(0x79)] //pub struct GoGoBall { //} //#[pso_message(0x7C)] //pub struct CmodeData { //} //#[pso_message(0x7D)] //pub struct BmodeData { //} #[pso_message(0x83)] pub struct PlayerTrapSet { trap_type: u16, trap_count: u16, } //#[pso_message(0x84)] //pub struct Unknown84 { //} //#[pso_message(0x80)] //pub struct PlayerTrapActivate { //} //#[pso_message(0x87)] //pub struct PlayerShrink { //} //#[pso_message(0x88)] //pub struct PlayerUnshrink { //} #[pso_message(0x89)] pub struct PlayerKilledByMonster { data: [u8; 4], } //#[pso_message(0x8A)] //pub struct CmodeStatistics { //} //#[pso_message(0x8D)] //pub struct PlayerTechStart { //} #[pso_message(0x94)] pub struct PlayerWarped2 { } //#[pso_message(0x97)] //pub struct CmodeTryAgain { //} #[pso_message(0x9A)] pub struct ModifyPlayerStats { unknown1: u8, unknown2: u8, stat: u8, amount: u8, } //#[pso_message(0x9D)] //pub struct CmodePartyWipe { //} //#[pso_message(0xA0)] //pub struct BossInteractionGalGryphon { //} //#[pso_message(0xA1)] //pub struct PlayerMoonAtomizerResurrection { //} #[pso_message(0xA2)] pub struct BoxDropRequest { pub area: u8, pub unknown1: u8, pub object_id: u16, pub x: f32, pub z: f32, pub section: u8, pub unknown2: [u8; 23], } //#[pso_message(0xA3)] //pub struct BossInteractionOlgaFlow { //} //#[pso_message(0xA4)] //pub struct BossInteractionOlgaFlow2 { //} //#[pso_message(0xA5)] //pub struct BossInteractionOlgaFlow3 { //} //#[pso_message(0xA6)] //pub struct TradeRequest { //} //#[pso_message(0xA8)] //pub struct BossInteractionGolDragon { //} //#[pso_message(0xA9)] //pub struct BossInteractionBarbaRay { //} //#[pso_message(0xAA)] //pub struct BossInteractionBarbaRay2 { //} #[pso_message(0xAB)] pub struct PhotonChairSit { unknown1: u32, } //#[pso_message(0xAD)] //pub struct BossInteractionOlgaFlow4 { //} #[pso_message(0xAE)] pub struct UnknownAE { unknown1: u32, unknown2: u32, unknown3: u32, } #[pso_message(0xAF)] pub struct PhotonChairTurn { unknown1: u32, } #[pso_message(0xB0)] pub struct PhotonChairMove { unknown1: u32, } //#[pso_message(0xB5)] //pub struct ShopRequest { // unknown1: u16, // shop_type: u8, //} //#[pso_message(0xB7)] //pub struct BuyItem { // unknown1: u16, // item_id: u8, // unknown2: u8, // shop_item_index: u8, // amount: u8, // unknown3: u8, //} #[pso_message(0xB8)] pub struct TekRequest { item_index: u8, _unknown1: u8, _unknown2: u8, _unknown3: u8, } #[pso_message(0xB9)] pub struct TekPreview { pub item_bytes: [u8; 12], pub item_id: u32, pub item_bytes2: [u8; 4], } //#[pso_message(0xBA)] //pub struct TekAccept { //} #[pso_message(0xBB)] pub struct BankRequest { unknown: u32, } #[pso_message(0xBD)] pub struct BankInteraction { item_id: u32, meseta_amount: u32, action: u8, item_amount: u8, unknown: u16, } #[pso_message(0xBE)] pub struct CreateItem { item_data: [u8; 12], item_id: u32, item_data2: [u8; 4], unknown: u32, } #[pso_message(0xBF)] pub struct GiveCharacterExp { exp: u32, } //#[pso_message(0xC0)] //pub struct PlayerSoldItem { // client_id: u16, // item_id: u8, // amount: u8, //} //#[pso_message(0xC1)] //pub struct TeamInvite { //} //#[pso_message(0xC2)] //pub struct AcceptTeamInvite { //} #[pso_message(0xC3)] pub struct DropCoordinates { map_area: u16, room: u16, x: f32, z: f32, item_id: u32, } #[pso_message(0xC4)] pub struct SortItems { item_id: [u8; 30], } #[pso_message(0xC5)] pub struct PlayerUsedMedicalCenter { } //#[pso_message(0xC6)] //pub struct ExperienceSteal { //} #[pso_message(0xC7)] pub struct ChargeAttack { meseta: u32, } #[pso_message(0xC8)] pub struct RequestExp { enemy_id: u16, client_id: u8, unused: u8, last_hitter: u32, } //#[pso_message(0xC9)] //pub struct QuestRewardMeseta { //} //#[pso_message(0xCA)] //pub struct QuestRewardItem { //} //#[pso_message(0xCB)] //pub struct TransferItemRequest { //} //#[pso_message(0xCC)] //pub struct ExchangeItemForTeampoints { //} //#[pso_message(0xCD)] //pub struct MasterTransfer { //} //#[pso_message(0xCE)] //pub struct AcceptMasterTransfer { //} //#[pso_message(0xCF)] //pub struct RestartBattle { //} //#[pso_message(0xD0)] //pub struct BmodeLevelUp { //} //#[pso_message(0xD1)] //pub struct CmodeGrave { //} //#[pso_message(0xD2)] //pub struct WriteQuestFlag { //} //#[pso_message(0xD5)] //pub struct QuestItemExchange { //} //#[pso_message(0xD6)] //pub struct WrapItem { //} //#[pso_message(0xD7)] //pub struct PaganiniPDExchange { //} //#[pso_message(0xD8)] //pub struct SrankSpecialModification { //} //#[pso_message(0xD9)] //pub struct MomokaItemShop { //} //#[pso_message(0xDA)] //pub struct WeaponAttributeEnhancement { //} //#[pso_message(0xDC)] //pub struct BossInteractionSaintMillion { //} //#[pso_message(0xDE)] //pub struct GoodLuckQuest { //} //#[pso_message(0xDF)] //pub struct BPDPhotonCrystalExchange { //} //#[pso_message(0xE0)] //pub struct BPDRewards { //} //#[pso_message(0xE1)] //pub struct GallonsPlanQuest { //} //#[pso_message(0xE2)] //pub struct Coren { //} #[derive(Debug, Clone, PartialEq)] pub enum GameMessage { PlayerActivatedSwitch(PlayerActivatedSwitch), GuildcardSend(GuildcardSend), GuildcardRecv(GuildcardRecv), SymbolChat(SymbolChat), MobAttack(MobAttack), BoxAttack(BoxAttack), Unknown0C(Unknown0C), Unknown0D(Unknown0D), BossInteractionDragon(BossInteractionDragon), //BossInteractionDeRolLe(BossInteractionDeRolLe), //BossInteractionDeRolLe2(BossInteractionDeRolLe2), //BossInteractionVolOpt(BossInteractionVolOpt), //BossInteractionVolOpt2(BossInteractionVolOpt2), //VolOptSecondPhase(VolOptSecondPhase), //VolOptSecondPhase2(VolOptSecondPhase2), //BossInteractionDarkFalz(BossInteractionDarkFalz), //PlayerKillActivated(PlayerKillActivated), //PlayerKillActivated2(PlayerKillActivated2), PlayerChangedMap(PlayerChangedMap), PlayerChangedMap2(PlayerChangedMap2), TellOtherPlayerMyLocation(TellOtherPlayerMyLocation), PlayerWarpingToFloor(PlayerWarpingToFloor), PlayerWarping(PlayerWarping), PlayerDoneChangingMap(PlayerDoneChangingMap), PlayerTeleported(PlayerTeleported), PlayerEquipItem(PlayerEquipItem), PlayerUnequipItem(PlayerUnequipItem), PlayerUseItem(PlayerUseItem), PlayerFeedMag(PlayerFeedMag), PlayerDropItem(PlayerDropItem), PlayerNoLongerHasItem(PlayerNoLongerHasItem), AddItemToInventory(AddItemToInventory), InitializeSpeechNpc(InitializeSpeechNpc), FinishSpeechNpc(FinishSpeechNpc), FinishSpeechNpcBPD(FinishSpeechNpcBPD), PlayerLevelUp(PlayerLevelUp), PlayerResurrected(PlayerResurrected), PlayerResurrectedMedicalCenter(PlayerResurrectedMedicalCenter), PlayerUsedMoonAtomizer(PlayerUsedMoonAtomizer), PlayerPBDonation(PlayerPBDonation), PlayerInitiatedPB(PlayerInitiatedPB), PlayerLeftArea(PlayerLeftArea), PlayerSpawnedIntoArea(PlayerSpawnedIntoArea), PlayerStopped(PlayerStopped), PlayerLoadedIn(PlayerLoadedIn), PlayerWalking(PlayerWalking), PlayerRunning(PlayerRunning), ComboStep1(ComboStep1), ComboStep2(ComboStep2), ComboStep3(ComboStep3), ComboStepDone(ComboStepDone), PlayerTechCast(PlayerTechCast), PlayerTechDone(PlayerTechDone), PlayerPBUsed(PlayerPBUsed), PlayerBlockedDamage(PlayerBlockedDamage), PlayerReceivedDamage(PlayerReceivedDamage), PlayerReceivedDamage2(PlayerReceivedDamage2), PlayerDeath(PlayerDeath), PlayerPostDeathAnimation(PlayerPostDeathAnimation), PlayerScapedollResurrection(PlayerScapedollResurrection), PlayerActivatedSwitch2(PlayerActivatedSwitch2), TalkToNpc(TalkToNpc), //Unknown53(Unknown53), PlayerWarped(PlayerWarped), LobbyEmote(LobbyEmote), RemoveItemFromFloor(RemoveItemFromFloor), PickupItem(PickupItem), DropSplitStack(DropSplitStack), //BuyFromShop(BuyFromShop), ItemDrop(ItemDrop), RequestItem(RequestItem), MagAnimation(MagAnimation), //FloorItemLimitItemDeletion(FloorItemLimitItemDeletion), PlayerUsedStarAtomizer(PlayerUsedStarAtomizer), SpawningMonsters(SpawningMonsters), PlayerTelepipe(PlayerTelepipe), NpcSpawn(NpcSpawn), PlayerJoiningGame(PlayerJoiningGame), PlayerJoiningGame2(PlayerJoiningGame2), BurstDone(BurstDone), WordSelect(WordSelect), PlayerChangedFloor(PlayerChangedFloor), KillMonster(KillMonster), //SyncQuestRegister(SyncQuestRegister), //GoGoBall(GoGoBall), //CmodeData(CmodeData), //BmodeData(BmodeData), PlayerTrapSet(PlayerTrapSet), //Unknown84(Unknown84), //PlayerTrapActivate(PlayerTrapActivate), //PlayerShrink(PlayerShrink), //PlayerUnshrink(PlayerUnshrink), PlayerKilledByMonster(PlayerKilledByMonster), //CmodeStatistics(CmodeStatistics), //PlayerTechStart(PlayerTechStart), PlayerWarped2(PlayerWarped2), //CmodeTryAgain(CmodeTryAgain), ModifyPlayerStats(ModifyPlayerStats), //CmodePartyWipe(CmodePartyWipe), //BossInteractionGalGryphon(BossInteractionGalGryphon), //PlayerMoonAtomizerResurrection(PlayerMoonAtomizerResurrection), BoxDropRequest(BoxDropRequest), //BossInteractionOlgaFlow(BossInteractionOlgaFlow), //BossInteractionOlgaFlow2(BossInteractionOlgaFlow2), //BossInteractionOlgaFlow3(BossInteractionOlgaFlow3), //TradeRequest(TradeRequest), //BossInteractionGolDragon(BossInteractionGolDragon), //BossInteractionBarbaRay(BossInteractionBarbaRay), //BossInteractionBarbaRay2(BossInteractionBarbaRay2), PhotonChairSit(PhotonChairSit), //BossInteractionOlgaFlow4(BossInteractionOlgaFlow4), UnknownAE(UnknownAE), PhotonChairTurn(PhotonChairTurn), PhotonChairMove(PhotonChairMove), //ShopRequest(ShopRequest), //BuyItem(BuyItem), TekRequest(TekRequest), TekPreview(TekPreview), //TekAccept(TekAccept), BankRequest(BankRequest), BankInteraction(BankInteraction), //PlayerSoldItem(PlayerSoldItem), //TeamInvite(TeamInvite), //AcceptTeamInvite(AcceptTeamInvite), CreateItem(CreateItem), GiveCharacterExp(GiveCharacterExp), DropCoordinates(DropCoordinates), SortItems(SortItems), PlayerUsedMedicalCenter(PlayerUsedMedicalCenter), //ExperienceSteal(ExperienceSteal), ChargeAttack(ChargeAttack), RequestExp(RequestExp), //QuestRewardMeseta(QuestRewardMeseta), //QuestRewardItem(QuestRewardItem), //TransferItemRequest(TransferItemRequest), //ExchangeItemForTeampoints(ExchangeItemForTeampoints), //MasterTransfer(MasterTransfer), //AcceptMasterTransfer(AcceptMasterTransfer), //RestartBattle(RestartBattle), //BmodeLevelUp(BmodeLevelUp), //CmodeGrave(CmodeGrave), //WriteQuestFlag(WriteQuestFlag), //QuestItemExchange(QuestItemExchange), //WrapItem(WrapItem), //PaganiniPDExchange(PaganiniPDExchange), //SrankSpecialModification(SrankSpecialModification), //MomokaItemShop(MomokaItemShop), //WeaponAttributeEnhancement(WeaponAttributeEnhancement), //BossInteractionSaintMillion(BossInteractionSaintMillion), //GoodLuckQuest(GoodLuckQuest), //BPDPhotonCrystalExchange(BPDPhotonCrystalExchange), //BPDRewards(BPDRewards), //GallonsPlanQuest(GallonsPlanQuest), //Coren(Coren), } impl PSOPacketData for GameMessage { fn from_bytes(mut cur: &mut R) -> Result { let mut byte = [0u8; 1]; let mut len = [0u8; 1]; cur.read(&mut byte); cur.read(&mut len); cur.seek(SeekFrom::Current(-2)); // Cursor doesn't implement Peek? match byte[0] { PlayerActivatedSwitch::CMD => Ok(GameMessage::PlayerActivatedSwitch(PlayerActivatedSwitch::from_bytes(&mut cur)?)), GuildcardSend::CMD if len[0] == 1 => Ok(GameMessage::GuildcardSend(GuildcardSend::from_bytes(&mut cur)?)), GuildcardRecv::CMD => Ok(GameMessage::GuildcardRecv(GuildcardRecv::from_bytes(&mut cur)?)), SymbolChat::CMD => Ok(GameMessage::SymbolChat(SymbolChat::from_bytes(&mut cur)?)), MobAttack::CMD => Ok(GameMessage::MobAttack(MobAttack::from_bytes(&mut cur)?)), BoxAttack::CMD => Ok(GameMessage::BoxAttack(BoxAttack::from_bytes(&mut cur)?)), Unknown0C::CMD => Ok(GameMessage::Unknown0C(Unknown0C::from_bytes(&mut cur)?)), Unknown0D::CMD => Ok(GameMessage::Unknown0D(Unknown0D::from_bytes(&mut cur)?)), BossInteractionDragon::CMD => Ok(GameMessage::BossInteractionDragon(BossInteractionDragon::from_bytes(&mut cur)?)), //BossInteractionDeRolLe::CMD => Ok(GameMessage::BossInteractionDeRolLe(BossInteractionDeRolLe::from_bytes(&mut cur)?)), //BossInteractionDeRolLe2::CMD => Ok(GameMessage::BossInteractionDeRolLe2(BossInteractionDeRolLe2::from_bytes(&mut cur)?)), //BossInteractionVolOpt::CMD => Ok(GameMessage::BossInteractionVolOpt(BossInteractionVolOpt::from_bytes(&mut cur)?)), //BossInteractionVolOpt2::CMD => Ok(GameMessage::BossInteractionVolOpt2(BossInteractionVolOpt2::from_bytes(&mut cur)?)), //VolOptSecondPhase::CMD => Ok(GameMessage::VolOptSecondPhase(VolOptSecondPhase::from_bytes(&mut cur)?)), //VolOptSecondPhase2::CMD => Ok(GameMessage::VolOptSecondPhase2(VolOptSecondPhase2::from_bytes(&mut cur)?)), //BossInteractionDarkFalz::CMD => Ok(GameMessage::BossInteractionDarkFalz(BossInteractionDarkFalz::from_bytes(&mut cur)?)), //PlayerKillActivated::CMD => Ok(GameMessage::PlayerKillActivated(PlayerKillActivated::from_bytes(&mut cur)?)), //PlayerKillActivated2::CMD => Ok(GameMessage::PlayerKillActivated2(PlayerKillActivated2::from_bytes(&mut cur)?)), PlayerChangedMap::CMD if len[0] == 6 => Ok(GameMessage::PlayerChangedMap(PlayerChangedMap::from_bytes(&mut cur)?)), PlayerChangedMap2::CMD if len[0] == 2 => Ok(GameMessage::PlayerChangedMap2(PlayerChangedMap2::from_bytes(&mut cur)?)), TellOtherPlayerMyLocation::CMD => Ok(GameMessage::TellOtherPlayerMyLocation(TellOtherPlayerMyLocation::from_bytes(&mut cur)?)), PlayerWarpingToFloor::CMD => Ok(GameMessage::PlayerWarpingToFloor(PlayerWarpingToFloor::from_bytes(&mut cur)?)), PlayerWarping::CMD => Ok(GameMessage::PlayerWarping(PlayerWarping::from_bytes(&mut cur)?)), PlayerDoneChangingMap::CMD => Ok(GameMessage::PlayerDoneChangingMap(PlayerDoneChangingMap::from_bytes(&mut cur)?)), PlayerTeleported::CMD => Ok(GameMessage::PlayerTeleported(PlayerTeleported::from_bytes(&mut cur)?)), PlayerEquipItem::CMD => Ok(GameMessage::PlayerEquipItem(PlayerEquipItem::from_bytes(&mut cur)?)), PlayerUnequipItem::CMD => Ok(GameMessage::PlayerUnequipItem(PlayerUnequipItem::from_bytes(&mut cur)?)), PlayerUseItem::CMD => Ok(GameMessage::PlayerUseItem(PlayerUseItem::from_bytes(&mut cur)?)), PlayerFeedMag::CMD => Ok(GameMessage::PlayerFeedMag(PlayerFeedMag::from_bytes(&mut cur)?)), PlayerDropItem::CMD => Ok(GameMessage::PlayerDropItem(PlayerDropItem::from_bytes(&mut cur)?)), PlayerNoLongerHasItem::CMD => Ok(GameMessage::PlayerNoLongerHasItem(PlayerNoLongerHasItem::from_bytes(&mut cur)?)), AddItemToInventory::CMD => Ok(GameMessage::AddItemToInventory(AddItemToInventory::from_bytes(&mut cur)?)), InitializeSpeechNpc::CMD => Ok(GameMessage::InitializeSpeechNpc(InitializeSpeechNpc::from_bytes(&mut cur)?)), FinishSpeechNpc::CMD => Ok(GameMessage::FinishSpeechNpc(FinishSpeechNpc::from_bytes(&mut cur)?)), FinishSpeechNpcBPD::CMD => Ok(GameMessage::FinishSpeechNpcBPD(FinishSpeechNpcBPD::from_bytes(&mut cur)?)), PlayerLevelUp::CMD => Ok(GameMessage::PlayerLevelUp(PlayerLevelUp::from_bytes(&mut cur)?)), PlayerResurrected::CMD => Ok(GameMessage::PlayerResurrected(PlayerResurrected::from_bytes(&mut cur)?)), PlayerResurrectedMedicalCenter::CMD => Ok(GameMessage::PlayerResurrectedMedicalCenter(PlayerResurrectedMedicalCenter::from_bytes(&mut cur)?)), PlayerUsedMoonAtomizer::CMD => Ok(GameMessage::PlayerUsedMoonAtomizer(PlayerUsedMoonAtomizer::from_bytes(&mut cur)?)), PlayerPBDonation::CMD => Ok(GameMessage::PlayerPBDonation(PlayerPBDonation::from_bytes(&mut cur)?)), PlayerInitiatedPB::CMD => Ok(GameMessage::PlayerInitiatedPB(PlayerInitiatedPB::from_bytes(&mut cur)?)), PlayerLeftArea::CMD => Ok(GameMessage::PlayerLeftArea(PlayerLeftArea::from_bytes(&mut cur)?)), PlayerSpawnedIntoArea::CMD => Ok(GameMessage::PlayerSpawnedIntoArea(PlayerSpawnedIntoArea::from_bytes(&mut cur)?)), PlayerStopped::CMD => Ok(GameMessage::PlayerStopped(PlayerStopped::from_bytes(&mut cur)?)), PlayerLoadedIn::CMD => Ok(GameMessage::PlayerLoadedIn(PlayerLoadedIn::from_bytes(&mut cur)?)), PlayerWalking::CMD => Ok(GameMessage::PlayerWalking(PlayerWalking::from_bytes(&mut cur)?)), PlayerRunning::CMD => Ok(GameMessage::PlayerRunning(PlayerRunning::from_bytes(&mut cur)?)), ComboStep1::CMD => Ok(GameMessage::ComboStep1(ComboStep1::from_bytes(&mut cur)?)), ComboStep2::CMD => Ok(GameMessage::ComboStep2(ComboStep2::from_bytes(&mut cur)?)), ComboStep3::CMD => Ok(GameMessage::ComboStep3(ComboStep3::from_bytes(&mut cur)?)), ComboStepDone::CMD => Ok(GameMessage::ComboStepDone(ComboStepDone::from_bytes(&mut cur)?)), PlayerTechCast::CMD => Ok(GameMessage::PlayerTechCast(PlayerTechCast::from_bytes(&mut cur)?)), PlayerTechDone::CMD => Ok(GameMessage::PlayerTechDone(PlayerTechDone::from_bytes(&mut cur)?)), PlayerPBUsed::CMD => Ok(GameMessage::PlayerPBUsed(PlayerPBUsed::from_bytes(&mut cur)?)), PlayerBlockedDamage::CMD => Ok(GameMessage::PlayerBlockedDamage(PlayerBlockedDamage::from_bytes(&mut cur)?)), PlayerReceivedDamage::CMD => Ok(GameMessage::PlayerReceivedDamage(PlayerReceivedDamage::from_bytes(&mut cur)?)), PlayerReceivedDamage2::CMD => Ok(GameMessage::PlayerReceivedDamage2(PlayerReceivedDamage2::from_bytes(&mut cur)?)), PlayerDeath::CMD => Ok(GameMessage::PlayerDeath(PlayerDeath::from_bytes(&mut cur)?)), PlayerPostDeathAnimation::CMD => Ok(GameMessage::PlayerPostDeathAnimation(PlayerPostDeathAnimation::from_bytes(&mut cur)?)), PlayerScapedollResurrection::CMD => Ok(GameMessage::PlayerScapedollResurrection(PlayerScapedollResurrection::from_bytes(&mut cur)?)), PlayerActivatedSwitch2::CMD => Ok(GameMessage::PlayerActivatedSwitch2(PlayerActivatedSwitch2::from_bytes(&mut cur)?)), TalkToNpc::CMD => Ok(GameMessage::TalkToNpc(TalkToNpc::from_bytes(&mut cur)?)), //Unknown53::CMD => Ok(GameMessage::Unknown53(Unknown53::from_bytes(&mut cur)?)), PlayerWarped::CMD => Ok(GameMessage::PlayerWarped(PlayerWarped::from_bytes(&mut cur)?)), LobbyEmote::CMD => Ok(GameMessage::LobbyEmote(LobbyEmote::from_bytes(&mut cur)?)), RemoveItemFromFloor::CMD => Ok(GameMessage::RemoveItemFromFloor(RemoveItemFromFloor::from_bytes(&mut cur)?)), PickupItem::CMD => Ok(GameMessage::PickupItem(PickupItem::from_bytes(&mut cur)?)), DropSplitStack::CMD => Ok(GameMessage::DropSplitStack(DropSplitStack::from_bytes(&mut cur)?)), //BuyFromShop::CMD => Ok(GameMessage::BuyFromShop(BuyFromShop::from_bytes(&mut cur)?)), ItemDrop::CMD => Ok(GameMessage::ItemDrop(ItemDrop::from_bytes(&mut cur)?)), RequestItem::CMD => Ok(GameMessage::RequestItem(RequestItem::from_bytes(&mut cur)?)), MagAnimation::CMD => Ok(GameMessage::MagAnimation(MagAnimation::from_bytes(&mut cur)?)), //FloorItemLimitItemDeletion::CMD => Ok(GameMessage::FloorItemLimitItemDeletion(FloorItemLimitItemDeletion::from_bytes(&mut cur)?)), PlayerUsedStarAtomizer::CMD => Ok(GameMessage::PlayerUsedStarAtomizer(PlayerUsedStarAtomizer::from_bytes(&mut cur)?)), SpawningMonsters::CMD => Ok(GameMessage::SpawningMonsters(SpawningMonsters::from_bytes(&mut cur)?)), PlayerTelepipe::CMD => Ok(GameMessage::PlayerTelepipe(PlayerTelepipe::from_bytes(&mut cur)?)), NpcSpawn::CMD => Ok(GameMessage::NpcSpawn(NpcSpawn::from_bytes(&mut cur)?)), PlayerJoiningGame::CMD => Ok(GameMessage::PlayerJoiningGame(PlayerJoiningGame::from_bytes(&mut cur)?)), PlayerJoiningGame2::CMD => Ok(GameMessage::PlayerJoiningGame2(PlayerJoiningGame2::from_bytes(&mut cur)?)), BurstDone::CMD => Ok(GameMessage::BurstDone(BurstDone::from_bytes(&mut cur)?)), WordSelect::CMD => Ok(GameMessage::WordSelect(WordSelect::from_bytes(&mut cur)?)), PlayerChangedFloor::CMD => Ok(GameMessage::PlayerChangedFloor(PlayerChangedFloor::from_bytes(&mut cur)?)), KillMonster::CMD => Ok(GameMessage::KillMonster(KillMonster::from_bytes(&mut cur)?)), //SyncQuestRegister::CMD => Ok(GameMessage::SyncQuestRegister(SyncQuestRegister::from_bytes(&mut cur)?)), //GoGoBall::CMD => Ok(GameMessage::GoGoBall(GoGoBall::from_bytes(&mut cur)?)), //CmodeData::CMD => Ok(GameMessage::CmodeData(CmodeData::from_bytes(&mut cur)?)), //BmodeData::CMD => Ok(GameMessage::BmodeData(BmodeData::from_bytes(&mut cur)?)), PlayerTrapSet::CMD => Ok(GameMessage::PlayerTrapSet(PlayerTrapSet::from_bytes(&mut cur)?)), //Unknown84::CMD => Ok(GameMessage::Unknown84(Unknown84::from_bytes(&mut cur)?)), //PlayerTrapActivate::CMD => Ok(GameMessage::PlayerTrapActivate(PlayerTrapActivate::from_bytes(&mut cur)?)), //PlayerShrink::CMD => Ok(GameMessage::PlayerShrink(PlayerShrink::from_bytes(&mut cur)?)), //PlayerUnshrink::CMD => Ok(GameMessage::PlayerUnshrink(PlayerUnshrink::from_bytes(&mut cur)?)), PlayerKilledByMonster::CMD => Ok(GameMessage::PlayerKilledByMonster(PlayerKilledByMonster::from_bytes(&mut cur)?)), //CmodeStatistics::CMD => Ok(GameMessage::CmodeStatistics(CmodeStatistics::from_bytes(&mut cur)?)), //PlayerTechStart::CMD => Ok(GameMessage::PlayerTechStart(PlayerTechStart::from_bytes(&mut cur)?)), PlayerWarped2::CMD => Ok(GameMessage::PlayerWarped2(PlayerWarped2::from_bytes(&mut cur)?)), //CmodeTryAgain::CMD => Ok(GameMessage::CmodeTryAgain(CmodeTryAgain::from_bytes(&mut cur)?)), ModifyPlayerStats::CMD => Ok(GameMessage::ModifyPlayerStats(ModifyPlayerStats::from_bytes(&mut cur)?)), //CmodePartyWipe::CMD => Ok(GameMessage::CmodePartyWipe(CmodePartyWipe::from_bytes(&mut cur)?)), //BossInteractionGalGryphon::CMD => Ok(GameMessage::BossInteractionGalGryphon(BossInteractionGalGryphon::from_bytes(&mut cur)?)), //PlayerMoonAtomizerResurrection::CMD => Ok(GameMessage::PlayerMoonAtomizerResurrection(PlayerMoonAtomizerResurrection::from_bytes(&mut cur)?)), BoxDropRequest::CMD => Ok(GameMessage::BoxDropRequest(BoxDropRequest::from_bytes(&mut cur)?)), //BossInteractionOlgaFlow::CMD => Ok(GameMessage::BossInteractionOlgaFlow(BossInteractionOlgaFlow::from_bytes(&mut cur)?)), //BossInteractionOlgaFlow2::CMD => Ok(GameMessage::BossInteractionOlgaFlow2(BossInteractionOlgaFlow2::from_bytes(&mut cur)?)), //BossInteractionOlgaFlow3::CMD => Ok(GameMessage::BossInteractionOlgaFlow3(BossInteractionOlgaFlow3::from_bytes(&mut cur)?)), //TradeRequest::CMD => Ok(GameMessage::TradeRequest(TradeRequest::from_bytes(&mut cur)?)), //BossInteractionGolDragon::CMD => Ok(GameMessage::BossInteractionGolDragon(BossInteractionGolDragon::from_bytes(&mut cur)?)), //BossInteractionBarbaRay::CMD => Ok(GameMessage::BossInteractionBarbaRay(BossInteractionBarbaRay::from_bytes(&mut cur)?)), //BossInteractionBarbaRay2::CMD => Ok(GameMessage::BossInteractionBarbaRay2(BossInteractionBarbaRay2::from_bytes(&mut cur)?)), PhotonChairSit::CMD => Ok(GameMessage::PhotonChairSit(PhotonChairSit::from_bytes(&mut cur)?)), //BossInteractionOlgaFlow4::CMD => Ok(GameMessage::BossInteractionOlgaFlow4(BossInteractionOlgaFlow4::from_bytes(&mut cur)?)), UnknownAE::CMD => Ok(GameMessage::UnknownAE(UnknownAE::from_bytes(&mut cur)?)), PhotonChairTurn::CMD => Ok(GameMessage::PhotonChairTurn(PhotonChairTurn::from_bytes(&mut cur)?)), PhotonChairMove::CMD => Ok(GameMessage::PhotonChairMove(PhotonChairMove::from_bytes(&mut cur)?)), //ShopRequest::CMD => Ok(GameMessage::ShopRequest(ShopRequest::from_bytes(&mut cur)?)), //BuyItem::CMD => Ok(GameMessage::BuyItem(BuyItem::from_bytes(&mut cur)?)), TekRequest::CMD => Ok(GameMessage::TekRequest(TekRequest::from_bytes(&mut cur)?)), TekPreview::CMD => Ok(GameMessage::TekPreview(TekPreview::from_bytes(&mut cur)?)), //TekAccept::CMD => Ok(GameMessage::TekAccept(TekAccept::from_bytes(&mut cur)?)), BankRequest::CMD => Ok(GameMessage::BankRequest(BankRequest::from_bytes(&mut cur)?)), BankInteraction::CMD => Ok(GameMessage::BankInteraction(BankInteraction::from_bytes(&mut cur)?)), //PlayerSoldItem::CMD => Ok(GameMessage::PlayerSoldItem(PlayerSoldItem::from_bytes(&mut cur)?)), //TeamInvite::CMD => Ok(GameMessage::TeamInvite(TeamInvite::from_bytes(&mut cur)?)), //AcceptTeamInvite::CMD => Ok(GameMessage::AcceptTeamInvite(AcceptTeamInvite::from_bytes(&mut cur)?)), CreateItem::CMD => Ok(GameMessage::CreateItem(CreateItem::from_bytes(&mut cur)?)), GiveCharacterExp::CMD => Ok(GameMessage::GiveCharacterExp(GiveCharacterExp::from_bytes(&mut cur)?)), DropCoordinates::CMD => Ok(GameMessage::DropCoordinates(DropCoordinates::from_bytes(&mut cur)?)), SortItems::CMD => Ok(GameMessage::SortItems(SortItems::from_bytes(&mut cur)?)), PlayerUsedMedicalCenter::CMD => Ok(GameMessage::PlayerUsedMedicalCenter(PlayerUsedMedicalCenter::from_bytes(&mut cur)?)), //ExperienceSteal::CMD => Ok(GameMessage::ExperienceSteal(ExperienceSteal::from_bytes(&mut cur)?)), ChargeAttack::CMD => Ok(GameMessage::ChargeAttack(ChargeAttack::from_bytes(&mut cur)?)), RequestExp::CMD => Ok(GameMessage::RequestExp(RequestExp::from_bytes(&mut cur)?)), //QuestRewardMeseta::CMD => Ok(GameMessage::QuestRewardMeseta(QuestRewardMeseta::from_bytes(&mut cur)?)), //QuestRewardItem::CMD => Ok(GameMessage::QuestRewardItem(QuestRewardItem::from_bytes(&mut cur)?)), //TransferItemRequest::CMD => Ok(GameMessage::TransferItemRequest(TransferItemRequest::from_bytes(&mut cur)?)), //ExchangeItemForTeampoints::CMD => Ok(GameMessage::ExchangeItemForTeampoints(ExchangeItemForTeampoints::from_bytes(&mut cur)?)), //MasterTransfer::CMD => Ok(GameMessage::MasterTransfer(MasterTransfer::from_bytes(&mut cur)?)), //AcceptMasterTransfer::CMD => Ok(GameMessage::AcceptMasterTransfer(AcceptMasterTransfer::from_bytes(&mut cur)?)), //RestartBattle::CMD => Ok(GameMessage::RestartBattle(RestartBattle::from_bytes(&mut cur)?)), //BmodeLevelUp::CMD => Ok(GameMessage::BmodeLevelUp(BmodeLevelUp::from_bytes(&mut cur)?)), //CmodeGrave::CMD => Ok(GameMessage::CmodeGrave(CmodeGrave::from_bytes(&mut cur)?)), //WriteQuestFlag::CMD => Ok(GameMessage::WriteQuestFlag(WriteQuestFlag::from_bytes(&mut cur)?)), //QuestItemExchange::CMD => Ok(GameMessage::QuestItemExchange(QuestItemExchange::from_bytes(&mut cur)?)), //WrapItem::CMD => Ok(GameMessage::WrapItem(WrapItem::from_bytes(&mut cur)?)), //PaganiniPDExchange::CMD => Ok(GameMessage::PaganiniPDExchange(PaganiniPDExchange::from_bytes(&mut cur)?)), //SrankSpecialModification::CMD => Ok(GameMessage::SrankSpecialModification(SrankSpecialModification::from_bytes(&mut cur)?)), //MomokaItemShop::CMD => Ok(GameMessage::MomokaItemShop(MomokaItemShop::from_bytes(&mut cur)?)), //WeaponAttributeEnhancement::CMD => Ok(GameMessage::WeaponAttributeEnhancement(WeaponAttributeEnhancement::from_bytes(&mut cur)?)), //BossInteractionSaintMillion::CMD => Ok(GameMessage::BossInteractionSaintMillion(BossInteractionSaintMillion::from_bytes(&mut cur)?)), //GoodLuckQuest::CMD => Ok(GameMessage::GoodLuckQuest(GoodLuckQuest::from_bytes(&mut cur)?)), //BPDPhotonCrystalExchange::CMD => Ok(GameMessage::BPDPhotonCrystalExchange(BPDPhotonCrystalExchange::from_bytes(&mut cur)?)), //BPDRewards::CMD => Ok(GameMessage::BPDRewards(BPDRewards::from_bytes(&mut cur)?)), //GallonsPlanQuest::CMD => Ok(GameMessage::GallonsPlanQuest(GallonsPlanQuest::from_bytes(&mut cur)?)), //Coren::CMD => Ok(GameMessage::Coren(Coren::from_bytes(&mut cur)?)), _ => Err(PacketParseError::UnknownMessage(byte[0], { let mut b = vec![0; len[0] as usize * 4]; cur.read(&mut b).unwrap(); b.to_vec() } )), } } fn as_bytes(&self) -> Vec { match self { GameMessage::PlayerActivatedSwitch(data) => data.as_bytes(), GameMessage::GuildcardSend(data) => data.as_bytes(), GameMessage::GuildcardRecv(data) => data.as_bytes(), GameMessage::SymbolChat(data) => data.as_bytes(), GameMessage::MobAttack(data) => data.as_bytes(), GameMessage::BoxAttack(data) => data.as_bytes(), GameMessage::Unknown0C(data) => data.as_bytes(), GameMessage::Unknown0D(data) => data.as_bytes(), GameMessage::BossInteractionDragon(data) => data.as_bytes(), //GameMessage::BossInteractionDeRolLe(data) => data.as_bytes(), //GameMessage::BossInteractionDeRolLe2(data) => data.as_bytes(), //GameMessage::BossInteractionVolOpt(data) => data.as_bytes(), //GameMessage::BossInteractionVolOpt2(data) => data.as_bytes(), //GameMessage::VolOptSecondPhase(data) => data.as_bytes(), //GameMessage::VolOptSecondPhase2(data) => data.as_bytes(), //GameMessage::BossInteractionDarkFalz(data) => data.as_bytes(), //GameMessage::PlayerKillActivated(data) => data.as_bytes(), //GameMessage::PlayerKillActivated2(data) => data.as_bytes(), GameMessage::PlayerChangedMap(data) => data.as_bytes(), GameMessage::PlayerChangedMap2(data) => data.as_bytes(), GameMessage::TellOtherPlayerMyLocation(data) => data.as_bytes(), GameMessage::PlayerWarpingToFloor(data) => data.as_bytes(), GameMessage::PlayerWarping(data) => data.as_bytes(), GameMessage::PlayerDoneChangingMap(data) => data.as_bytes(), GameMessage::PlayerTeleported(data) => data.as_bytes(), GameMessage::PlayerEquipItem(data) => data.as_bytes(), GameMessage::PlayerUnequipItem(data) => data.as_bytes(), GameMessage::PlayerUseItem(data) => data.as_bytes(), GameMessage::PlayerFeedMag(data) => data.as_bytes(), GameMessage::PlayerDropItem(data) => data.as_bytes(), GameMessage::PlayerNoLongerHasItem(data) => data.as_bytes(), GameMessage::AddItemToInventory(data) => data.as_bytes(), GameMessage::InitializeSpeechNpc(data) => data.as_bytes(), GameMessage::FinishSpeechNpc(data) => data.as_bytes(), GameMessage::FinishSpeechNpcBPD(data) => data.as_bytes(), GameMessage::PlayerLevelUp(data) => data.as_bytes(), GameMessage::PlayerResurrected(data) => data.as_bytes(), GameMessage::PlayerResurrectedMedicalCenter(data) => data.as_bytes(), GameMessage::PlayerUsedMoonAtomizer(data) => data.as_bytes(), GameMessage::PlayerPBDonation(data) => data.as_bytes(), GameMessage::PlayerInitiatedPB(data) => data.as_bytes(), GameMessage::PlayerLeftArea(data) => data.as_bytes(), GameMessage::PlayerSpawnedIntoArea(data) => data.as_bytes(), GameMessage::PlayerStopped(data) => data.as_bytes(), GameMessage::PlayerLoadedIn(data) => data.as_bytes(), GameMessage::PlayerWalking(data) => data.as_bytes(), GameMessage::PlayerRunning(data) => data.as_bytes(), GameMessage::ComboStep1(data) => data.as_bytes(), GameMessage::ComboStep2(data) => data.as_bytes(), GameMessage::ComboStep3(data) => data.as_bytes(), GameMessage::ComboStepDone(data) => data.as_bytes(), GameMessage::PlayerTechCast(data) => data.as_bytes(), GameMessage::PlayerTechDone(data) => data.as_bytes(), GameMessage::PlayerPBUsed(data) => data.as_bytes(), GameMessage::PlayerBlockedDamage(data) => data.as_bytes(), GameMessage::PlayerReceivedDamage(data) => data.as_bytes(), GameMessage::PlayerReceivedDamage2(data) => data.as_bytes(), GameMessage::PlayerDeath(data) => data.as_bytes(), GameMessage::PlayerPostDeathAnimation(data) => data.as_bytes(), GameMessage::PlayerScapedollResurrection(data) => data.as_bytes(), GameMessage::PlayerActivatedSwitch2(data) => data.as_bytes(), GameMessage::TalkToNpc(data) => data.as_bytes(), //GameMessage::Unknown53(data) => data.as_bytes(), GameMessage::PlayerWarped(data) => data.as_bytes(), GameMessage::LobbyEmote(data) => data.as_bytes(), GameMessage::RemoveItemFromFloor(data) => data.as_bytes(), GameMessage::PickupItem(data) => data.as_bytes(), GameMessage::DropSplitStack(data) => data.as_bytes(), //GameMessage::BuyFromShop(data) => data.as_bytes(), GameMessage::ItemDrop(data) => data.as_bytes(), GameMessage::RequestItem(data) => data.as_bytes(), GameMessage::MagAnimation(data) => data.as_bytes(), //GameMessage::FloorItemLimitItemDeletion(data) => data.as_bytes(), GameMessage::PlayerUsedStarAtomizer(data) => data.as_bytes(), GameMessage::SpawningMonsters(data) => data.as_bytes(), GameMessage::PlayerTelepipe(data) => data.as_bytes(), GameMessage::NpcSpawn(data) => data.as_bytes(), GameMessage::PlayerJoiningGame(data) => data.as_bytes(), GameMessage::PlayerJoiningGame2(data) => data.as_bytes(), GameMessage::BurstDone(data) => data.as_bytes(), GameMessage::WordSelect(data) => data.as_bytes(), GameMessage::PlayerChangedFloor(data) => data.as_bytes(), GameMessage::KillMonster(data) => data.as_bytes(), //GameMessage::SyncQuestRegister(data) => data.as_bytes(), //GameMessage::GoGoBall(data) => data.as_bytes(), //GameMessage::CmodeData(data) => data.as_bytes(), //GameMessage::BmodeData(data) => data.as_bytes(), GameMessage::PlayerTrapSet(data) => data.as_bytes(), //GameMessage::Unknown84(data) => data.as_bytes(), //GameMessage::PlayerTrapActivate(data) => data.as_bytes(), //GameMessage::PlayerShrink(data) => data.as_bytes(), //GameMessage::PlayerUnshrink(data) => data.as_bytes(), GameMessage::PlayerKilledByMonster(data) => data.as_bytes(), //GameMessage::CmodeStatistics(data) => data.as_bytes(), //GameMessage::PlayerTechStart(data) => data.as_bytes(), GameMessage::PlayerWarped2(data) => data.as_bytes(), //GameMessage::CmodeTryAgain(data) => data.as_bytes(), GameMessage::ModifyPlayerStats(data) => data.as_bytes(), //GameMessage::CmodePartyWipe(data) => data.as_bytes(), //GameMessage::BossInteractionGalGryphon(data) => data.as_bytes(), //GameMessage::PlayerMoonAtomizerResurrection(data) => data.as_bytes(), GameMessage::BoxDropRequest(data) => data.as_bytes(), //GameMessage::BossInteractionOlgaFlow(data) => data.as_bytes(), //GameMessage::BossInteractionOlgaFlow2(data) => data.as_bytes(), //GameMessage::BossInteractionOlgaFlow3(data) => data.as_bytes(), //GameMessage::TradeRequest(data) => data.as_bytes(), //GameMessage::BossInteractionGolDragon(data) => data.as_bytes(), //GameMessage::BossInteractionBarbaRay(data) => data.as_bytes(), //GameMessage::BossInteractionBarbaRay2(data) => data.as_bytes(), GameMessage::PhotonChairSit(data) => data.as_bytes(), //GameMessage::BossInteractionOlgaFlow4(data) => data.as_bytes(), GameMessage::UnknownAE(data) => data.as_bytes(), GameMessage::PhotonChairTurn(data) => data.as_bytes(), GameMessage::PhotonChairMove(data) => data.as_bytes(), //GameMessage::ShopRequest(data) => data.as_bytes(), //GameMessage::BuyItem(data) => data.as_bytes(), GameMessage::TekRequest(data) => data.as_bytes(), GameMessage::TekPreview(data) => data.as_bytes(), // GameMessage::TekAccept(data) => data.as_bytes(), GameMessage::BankRequest(data) => data.as_bytes(), GameMessage::BankInteraction(data) => data.as_bytes(), //GameMessage::PlayerSoldItem(data) => data.as_bytes(), //GameMessage::TeamInvite(data) => data.as_bytes(), //GameMessage::AcceptTeamInvite(data) => data.as_bytes(), GameMessage::CreateItem(data) => data.as_bytes(), GameMessage::GiveCharacterExp(data) => data.as_bytes(), GameMessage::DropCoordinates(data) => data.as_bytes(), GameMessage::SortItems(data) => data.as_bytes(), GameMessage::PlayerUsedMedicalCenter(data) => data.as_bytes(), //GameMessage::ExperienceSteal(data) => data.as_bytes(), GameMessage::ChargeAttack(data) => data.as_bytes(), GameMessage::RequestExp(data) => data.as_bytes(), //GameMessage::QuestRewardMeseta(data) => data.as_bytes(), //GameMessage::QuestRewardItem(data) => data.as_bytes(), //GameMessage::TransferItemRequest(data) => data.as_bytes(), //GameMessage::ExchangeItemForTeampoints(data) => data.as_bytes(), //GameMessage::MasterTransfer(data) => data.as_bytes(), //GameMessage::AcceptMasterTransfer(data) => data.as_bytes(), //GameMessage::RestartBattle(data) => data.as_bytes(), //GameMessage::BmodeLevelUp(data) => data.as_bytes(), //GameMessage::CmodeGrave(data) => data.as_bytes(), //GameMessage::WriteQuestFlag(data) => data.as_bytes(), //GameMessage::QuestItemExchange(data) => data.as_bytes(), //GameMessage::WrapItem(data) => data.as_bytes(), //GameMessage::PaganiniPDExchange(data) => data.as_bytes(), //GameMessage::SrankSpecialModification(data) => data.as_bytes(), //GameMessage::MomokaItemShop(data) => data.as_bytes(), //GameMessage::WeaponAttributeEnhancement(data) => data.as_bytes(), //GameMessage::BossInteractionSaintMillion(data) => data.as_bytes(), //GameMessage::GoodLuckQuest(data) => data.as_bytes(), //GameMessage::BPDPhotonCrystalExchange(data) => data.as_bytes(), //GameMessage::BPDRewards(data) => data.as_bytes(), //GameMessage::GallonsPlanQuest(data) => data.as_bytes(), //GameMessage::Coren(data) => data.as_bytes(), } } }