libpso/src/packet/messages.rs

1446 lines
48 KiB
Rust
Raw Normal View History

#![allow(unused_must_use)]
use std::io::{SeekFrom};
2019-11-10 21:43:02 -08:00
2020-09-24 19:37:45 -06:00
use psopacket::{pso_message, PSOPacketData};
2019-11-10 21:43:02 -08:00
use crate::{PSOPacketData, PacketParseError};
pub trait PSOMessage {
const CMD: u8;
fn from_bytes<R: std::io::Read + std::io::Seek>(cur: &mut R) -> Result<Self, PacketParseError> where Self: Sized;
fn as_bytes(&self) -> Vec<u8>;
}
2020-03-28 00:00:07 -04:00
#[pso_message(0x05)]
pub struct PlayerActivatedSwitch {
2020-07-27 19:11:50 -03:00
data: [u8; 8],
2020-03-28 00:00:07 -04:00
}
2020-03-27 14:09:24 -04:00
#[pso_message(0x06)]
pub struct GuildcardSend {
2019-11-10 21:43:02 -08:00
}
2020-03-27 14:09:24 -04:00
#[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,
2019-12-11 23:32:11 -08:00
}
2020-04-02 00:09:26 -04:00
#[pso_message(0x07)]
pub struct SymbolChat {
unknown1: u32,
sc_data: [u8; 60],
}
2020-03-27 14:09:24 -04:00
#[pso_message(0x0A)]
pub struct MobAttack {
2020-04-02 00:09:26 -04:00
enemy_id: u16,
damage: u16,
flags: u16,
2020-03-27 14:09:24 -04:00
}
#[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],
}
2020-04-02 00:09:26 -04:00
#[pso_message(0x12)]
pub struct BossInteractionDragon {
data: [u8; 6],
}
2020-03-27 14:09:24 -04:00
//#[pso_message(0x13)]
//pub struct BossInteractionDeRolLe {
//}
//#[pso_message(0x14)]
//pub struct BossInteractionDeRolLe2 {
//}
//#[pso_message(0x15)]
//pub struct BossInteractionVolOpt {
//}
//#[pso_message(0x16)]
//pub struct BossInteractionVolOpt2 {
//}
2020-04-02 00:09:26 -04:00
//#[pso_message(0x17)]
//pub struct VolOptSecondPhase {
// x: f32,
// y: f32,
// z: f32,
//}
2019-12-11 23:32:11 -08:00
2020-03-27 14:09:24 -04:00
//#[pso_message(0x18)]
//pub struct VolOptSecondPhase2 {
//}
//#[pso_message(0x19)]
//pub struct BossInteractionDarkFalz {
//}
//#[pso_message(0x1B)]
//pub struct PlayerKillActivated {
//}
//#[pso_message(0x1C)]
//pub struct PlayerKillActivated2 {
//}
2019-12-11 23:32:11 -08:00
#[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,
2019-12-11 23:32:11 -08:00
}
2019-12-15 23:14:17 -08:00
#[pso_message(0x20)]
pub struct TellOtherPlayerMyLocation {
map_area: u16,
_unknown1: u16,
2019-12-15 23:14:17 -08:00
x: f32,
y: f32,
z: f32,
2020-04-21 07:23:22 -06:00
unknown2: u32,
2019-12-15 23:14:17 -08:00
}
2019-12-11 23:32:11 -08:00
2020-03-28 00:00:07 -04:00
#[pso_message(0x21)]
pub struct PlayerWarpingToFloor {
area: u8,
data: u16,
}
2020-03-27 14:09:24 -04:00
2020-03-28 00:00:07 -04:00
#[pso_message(0x22)]
pub struct PlayerWarping {
2020-03-27 14:09:24 -04:00
2020-03-28 00:00:07 -04:00
}
#[pso_message(0x23)]
pub struct PlayerDoneChangingMap {
}
2020-03-27 14:09:24 -04:00
#[pso_message(0x24)]
pub struct PlayerTeleported {
2019-12-11 23:32:11 -08:00
x: f32,
y: f32,
z: f32,
}
2020-03-27 14:09:24 -04:00
#[pso_message(0x25)]
pub struct PlayerEquipItem {
item_id: u32,
2020-07-25 22:28:34 -03:00
sub_menu: u8,
2020-03-28 00:00:07 -04:00
unknown1: u16,
2020-03-27 14:09:24 -04:00
}
2019-12-11 23:32:11 -08:00
2020-03-27 14:09:24 -04:00
#[pso_message(0x26)]
pub struct PlayerUnequipItem {
item_id: u32,
unknown1: u32,
}
2020-02-14 23:31:43 -04:00
2020-03-27 14:09:24 -04:00
#[pso_message(0x27)]
pub struct PlayerUseItem {
item_id: u32,
2020-02-14 23:31:43 -04:00
}
2020-03-27 14:09:24 -04:00
#[pso_message(0x28)]
pub struct PlayerFeedMag {
mag_id: u32,
item_id: u32,
2019-12-11 23:32:11 -08:00
}
2020-03-27 14:09:24 -04:00
#[pso_message(0x29)]
pub struct PlayerNoLongerHasItem {
2020-05-13 22:45:38 -06:00
item_id: u32,
2020-05-28 19:41:20 -06:00
amount: u32,
2020-03-27 14:09:24 -04:00
}
2020-02-14 23:31:43 -04:00
2020-03-27 14:09:24 -04:00
#[pso_message(0x2A)]
2020-05-13 23:15:04 -06:00
pub struct PlayerDropItem {
2020-03-28 00:00:07 -04:00
unknown1: u16,
map_area: u16,
2020-03-28 00:00:07 -04:00
item_id: u32,
x: f32,
y: f32,
z: f32,
2020-03-27 14:09:24 -04:00
}
#[pso_message(0x2B)]
pub struct AddItemToInventory {
2020-05-05 22:04:17 -06:00
item_data: [u8; 12],
2020-03-27 14:09:24 -04:00
slot: u32,
2020-05-05 22:04:17 -06:00
item_data2: [u8; 4],
2019-12-18 21:52:21 -08:00
unknown1: u32,
}
2020-03-28 00:00:07 -04:00
#[pso_message(0x2C)]
pub struct InitializeSpeechNpc {
unknown1: u16,
unknown2: u16,
2020-06-07 18:32:18 -03:00
x: f32,
z: f32,
unknown3: f32,
2020-03-28 00:00:07 -04:00
}
2020-03-27 14:09:24 -04:00
2020-03-28 00:00:07 -04:00
#[pso_message(0x2D)]
pub struct FinishSpeechNpc {
2020-03-27 14:09:24 -04:00
2020-03-28 00:00:07 -04:00
}
2020-03-27 14:09:24 -04:00
2020-03-28 00:00:07 -04:00
#[pso_message(0x2F)]
pub struct FinishSpeechNpcBPD {
2020-03-27 14:09:24 -04:00
2020-03-28 00:00:07 -04:00
}
2020-03-27 14:09:24 -04:00
2020-03-28 00:00:07 -04:00
#[pso_message(0x30)]
pub struct PlayerLevelUp {
atp: u16,
mst: u16,
evp: u16,
hp: u16,
dfp: u16,
ata: u16,
lvl: u32,
}
2020-03-27 14:09:24 -04:00
#[pso_message(0x31)]
pub struct PlayerResurrected {
2020-03-28 00:00:07 -04:00
2019-12-18 21:52:21 -08:00
}
2019-11-10 21:43:02 -08:00
2020-03-27 14:09:24 -04:00
#[pso_message(0x32)]
pub struct PlayerResurrectedMedicalCenter {
2020-03-28 00:00:07 -04:00
2019-12-15 23:14:17 -08:00
}
2020-03-27 14:09:24 -04:00
#[pso_message(0x33)]
pub struct PlayerUsedMoonAtomizer {
2020-03-28 00:00:07 -04:00
}
2020-03-27 14:09:24 -04:00
#[pso_message(0x36)]
pub struct PlayerPBDonation {
2020-03-28 00:00:07 -04:00
}
2020-03-27 14:09:24 -04:00
#[pso_message(0x37)]
pub struct PlayerInitiatedPB {
pb_amount: u8,
unknown1: u32,
}
2020-03-28 00:00:07 -04:00
#[pso_message(0x3A)]
pub struct PlayerLeftArea {
2020-03-27 14:09:24 -04:00
2020-03-28 00:00:07 -04:00
}
2020-03-28 00:00:07 -04:00
#[pso_message(0x3B)]
pub struct PlayerSpawnedIntoArea {
2020-03-27 14:09:24 -04:00
2020-03-28 00:00:07 -04:00
}
2019-12-15 23:14:17 -08:00
2020-03-27 14:09:24 -04:00
#[pso_message(0x3E)]
pub struct PlayerStopped {
unknown1: u32,
area: u16,
room: u16,
2020-03-27 14:09:24 -04:00
x: f32,
y: f32,
z: f32,
2020-01-29 20:13:27 -08:00
}
2020-03-27 14:09:24 -04:00
#[pso_message(0x3F)]
pub struct PlayerLoadedIn {
unknown1: u32,
unknown2: u32,
2020-01-29 20:13:27 -08:00
x: f32,
2020-03-27 14:09:24 -04:00
y: f32,
2020-01-29 20:13:27 -08:00
z: f32,
2020-03-27 14:09:24 -04:00
}
#[pso_message(0x40)]
pub struct PlayerWalking {
x: f32,
z: f32,
2020-06-07 18:32:18 -03:00
unknown: f32,
2020-01-29 20:13:27 -08:00
}
2020-03-27 14:09:24 -04:00
#[pso_message(0x42)]
pub struct PlayerRunning {
x: f32,
z: f32,
2020-01-29 20:13:27 -08:00
}
2020-02-14 23:31:43 -04:00
#[pso_message(0x43)]
pub struct ComboStep1 {
2020-03-27 14:09:24 -04:00
data: [u8; 4],
2020-02-14 23:31:43 -04:00
}
#[pso_message(0x44)]
pub struct ComboStep2 {
2020-03-27 14:09:24 -04:00
data: [u8; 4],
2020-02-14 23:31:43 -04:00
}
#[pso_message(0x45)]
pub struct ComboStep3 {
2020-03-27 14:09:24 -04:00
data: [u8; 4],
2020-02-14 23:31:43 -04:00
}
#[pso_message(0x46)]
pub struct ComboStepDone {
2020-03-28 00:00:07 -04:00
data: [u8; 4],
2020-02-14 23:31:43 -04:00
}
#[pso_message(0x47)]
pub struct PlayerTechCast { // this packet and packet 0x8D (PlayerTechStart) are both sent at the same time as soon as the player presses a tech button, regardless if the tech is ACTUALLY casted (it not cancelled due to player blocking) or not.
2020-02-14 23:31:43 -04:00
technique: u8,
unknown1: u8,
tech_level: u8,
2020-02-14 23:31:43 -04:00
num_of_targets: u8,
}
#[pso_message(0x48)]
pub struct PlayerTechDone { // this packet gets sent once the tech is actually casted (ie: barta actually shoots out from your feet)
2020-03-27 14:09:24 -04:00
technique: u8,
unknown1: u8,
tech_level: u8, // tech level in packets is 0-based
2020-03-27 14:09:24 -04:00
unknown2: u8,
2020-02-14 23:31:43 -04:00
}
2020-03-27 14:09:24 -04:00
#[pso_message(0x49)]
pub struct PlayerPBUsed {
pb: u8,
unknown1: u32,
amount: u8,
unknown2: u32,
2020-02-14 23:31:43 -04:00
}
2020-01-29 20:13:27 -08:00
2020-02-14 23:31:43 -04:00
#[pso_message(0x4A)]
pub struct PlayerBlockedDamage {
2020-03-28 00:00:07 -04:00
2020-03-27 14:09:24 -04:00
}
#[pso_message(0x4B)]
pub struct PlayerReceivedDamage {
2020-03-28 00:00:07 -04:00
unknown1: u16,
hp: u16,
unknown2: u32,
2020-03-27 14:09:24 -04:00
}
#[pso_message(0x4C)]
pub struct PlayerReceivedDamage2 {
2020-03-28 00:00:07 -04:00
unknown1: u16,
hp: u16,
unknown2: u32,
2020-03-27 14:09:24 -04:00
}
#[pso_message(0x4D)]
pub struct PlayerDeath {
data: [u8; 4],
2020-03-28 00:00:07 -04:00
2020-03-27 14:09:24 -04:00
}
#[pso_message(0x4E)]
pub struct PlayerPostDeathAnimation {
2020-03-28 00:00:07 -04:00
2020-03-27 14:09:24 -04:00
}
#[pso_message(0x4F)]
pub struct PlayerScapedollResurrection {
2020-03-28 00:00:07 -04:00
2020-03-27 14:09:24 -04:00
}
2020-03-28 00:00:07 -04:00
#[pso_message(0x50)]
pub struct PlayerActivatedSwitch2 {
2020-07-27 19:11:50 -03:00
data: [u16; 2],
2020-03-28 00:00:07 -04:00
}
2020-03-27 14:09:24 -04:00
#[pso_message(0x52)]
pub struct TalkToNpc {
unknown1: u32,
unknown2: u32,
}
//#[pso_message(0x53)]
//pub struct Unknown53 {
//}
#[pso_message(0x55)]
pub struct PlayerWarped {
2020-06-07 18:32:18 -03:00
unknown1: u32,
2020-03-27 14:09:24 -04:00
x: f32,
y: f32,
}
#[pso_message(0x58)]
pub struct LobbyEmote {
emote: u32,
}
2020-05-05 22:04:17 -06:00
#[pso_message(0x59)]
pub struct RemoveItemFromFloor {
client_id: u8,
unknown: u8,
2020-07-25 22:28:34 -03:00
map_area: u8,
2020-05-05 22:04:17 -06:00
unknown2: u8,
item_id: u32,
}
2020-03-27 14:09:24 -04:00
2020-03-28 00:00:07 -04:00
#[pso_message(0x5A)]
2020-05-05 22:04:17 -06:00
pub struct PickupItem {
item_id: u32,
2020-07-25 22:28:34 -03:00
map_area: u8,
2020-05-05 22:04:17 -06:00
unknown: [u8; 3],
2020-03-28 00:00:07 -04:00
}
2020-05-14 23:39:55 -06:00
#[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,
}
2020-03-27 14:09:24 -04:00
2020-04-02 00:09:26 -04:00
//#[pso_message(0x5E)]
//pub struct BuyFromShop {
// item_data: u32,
// item_data2: u32,
// item_data3: u32,
// item_id: u32,
// amount: u32,
2020-03-27 14:09:24 -04:00
//}
2020-03-28 00:00:07 -04:00
#[pso_message(0x5F)]
2020-04-02 00:09:26 -04:00
pub struct ItemDrop {
pub map_area: u8,
2020-04-02 00:09:26 -04:00
pub variety: u8,
pub unknown: u16,
pub x: f32,
pub z: f32,
2020-04-26 20:38:14 -06:00
pub y: f32,
2020-04-02 00:09:26 -04:00
pub item_bytes: [u8; 12],
pub item_id: u32,
pub item_bytes2: [u8; 4],
2020-04-26 20:38:14 -06:00
pub unknown2: u32,
2020-03-28 00:00:07 -04:00
}
2020-02-14 23:31:43 -04:00
2020-03-27 14:09:24 -04:00
#[pso_message(0x60)]
pub struct RequestItem {
map_area: u8,
2020-03-27 14:09:24 -04:00
pt_index: u8,
enemy_id: u16,
x: f32,
z: f32,
y: f32,
2020-02-14 23:31:43 -04:00
}
2020-03-27 14:09:24 -04:00
#[pso_message(0x61)]
2020-04-02 00:09:26 -04:00
pub struct MagAnimation {
2020-03-27 14:09:24 -04:00
mag_id: u32,
effect: u8,
2020-04-02 00:09:26 -04:00
unknown1: u16,
2020-03-27 14:09:24 -04:00
}
2020-04-02 00:09:26 -04:00
//#[pso_message(0x63)]
//pub struct FloorItemLimitItemDeletion {
// client_id: u16,
// item_id: u8,
// amount: u8,
//}
2020-03-27 14:09:24 -04:00
2020-03-28 00:00:07 -04:00
#[pso_message(0x66)]
pub struct PlayerUsedStarAtomizer {
2020-03-27 14:09:24 -04:00
2020-03-28 00:00:07 -04:00
}
2020-03-27 14:09:24 -04:00
#[pso_message(0x67)]
pub struct SpawningMonsters {
data: [u8; 12],
}
2020-03-28 00:00:07 -04:00
#[pso_message(0x68)]
pub struct PlayerTelepipe {
2020-03-27 14:09:24 -04:00
2020-03-28 00:00:07 -04:00
}
2020-03-27 14:09:24 -04:00
#[pso_message(0x69)]
pub struct NpcSpawn {
data: [u8; 8],
}
2020-04-21 07:23:22 -06:00
#[pso_message(0x6F)]
pub struct PlayerJoiningGame {
data: [u32; 0x81],
}
2020-03-28 00:00:07 -04:00
2020-04-21 07:23:22 -06:00
#[pso_message(0x71)]
pub struct PlayerJoiningGame2 {
}
#[pso_message(0x72)]
pub struct BurstDone {
}
2020-03-28 00:00:07 -04:00
2020-03-27 14:09:24 -04:00
#[pso_message(0x74)]
pub struct WordSelect {
data: [u8; 28],
}
#[pso_message(0x75)]
pub struct PlayerChangedFloor {
2020-07-25 22:24:03 -03:00
data: [u8; 4],
2020-03-27 14:09:24 -04:00
}
#[pso_message(0x76)]
pub struct KillMonster {
map_area: u16,
data: [u8; 2],
2020-03-27 14:09:24 -04:00
}
//#[pso_message(0x77)]
//pub struct SyncQuestRegister {
//}
//#[pso_message(0x79)]
//pub struct GoGoBall {
//}
//#[pso_message(0x7C)]
//pub struct CmodeData {
//}
//#[pso_message(0x7D)]
//pub struct BmodeData {
//}
2020-02-14 23:31:43 -04:00
//#[pso_message(0x80)]
//pub struct PlayerTrapActivate {
//}
2020-02-14 23:31:43 -04:00
#[pso_message(0x83)]
pub struct PlayerTrapSet {
trap_type: u16,
trap_count: u16,
}
2020-03-27 14:09:24 -04:00
//#[pso_message(0x84)]
//pub struct Unknown84 {
//}
//#[pso_message(0x87)]
//pub struct PlayerShrink {
//}
//#[pso_message(0x88)]
//pub struct PlayerUnshrink {
2020-02-14 23:31:43 -04:00
2020-03-27 14:09:24 -04:00
//}
#[pso_message(0x89)]
pub struct PlayerKilledByMonster {
data: [u8; 4],
2020-02-14 23:31:43 -04:00
}
2020-01-29 20:13:27 -08:00
2020-03-27 14:09:24 -04:00
//#[pso_message(0x8A)]
//pub struct CmodeStatistics {
//}
#[pso_message(0x8D)]
pub struct PlayerTechStart { // this packet and packet 0x47 (PlayerTechCast) are both sent at the same time (PlayerTechStart then PlayerTechCast) as soon as the player presses a tech button, regardless if the tech is ACTUALLY casted (it not cancelled due to player blocking) or not.
data: [u8; 4], // always 0'd?
}
2020-03-27 14:09:24 -04:00
2020-03-28 00:00:07 -04:00
#[pso_message(0x94)]
pub struct PlayerWarped2 {
2020-03-22 22:17:52 -03:00
2020-03-28 00:00:07 -04:00
}
2020-03-27 14:09:24 -04:00
2020-03-28 00:00:07 -04:00
//#[pso_message(0x97)]
2020-03-27 14:09:24 -04:00
//pub struct CmodeTryAgain {
//}
#[pso_message(0x9A)]
pub struct ModifyPlayerStats {
unknown1: u8,
unknown2: u8,
stat: u8,
amount: u8,
2020-03-22 22:17:52 -03:00
}
2020-03-27 14:09:24 -04:00
//#[pso_message(0x9D)]
//pub struct CmodePartyWipe {
//}
//#[pso_message(0xA0)]
//pub struct BossInteractionGalGryphon {
//}
//#[pso_message(0xA1)]
//pub struct PlayerMoonAtomizerResurrection {
//}
2020-05-15 13:38:12 -03:00
#[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],
}
2020-03-28 00:00:07 -04:00
2020-03-27 14:09:24 -04:00
//#[pso_message(0xA3)]
//pub struct BossInteractionOlgaFlow {
//}
//#[pso_message(0xA4)]
//pub struct BossInteractionOlgaFlow2 {
//}
//#[pso_message(0xA5)]
//pub struct BossInteractionOlgaFlow3 {
//}
2020-03-28 00:00:07 -04:00
//#[pso_message(0xA6)]
//pub struct TradeRequest {
//}
2020-03-27 14:09:24 -04:00
//#[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,
2020-03-22 22:17:52 -03:00
}
2020-09-27 18:12:41 -06:00
#[pso_message(0xB5)]
pub struct ShopRequest {
shop_type: u8,
}
2020-03-28 00:00:07 -04:00
2020-09-27 18:12:41 -06:00
#[derive(PSOPacketData, Clone)]
pub struct ShopListItem {
pub item_bytes: [u8; 12],
pub unknown: u32, // 0xFFFFFFFF
pub price: u32,
}
#[pso_message(0xB6)]
pub struct ShopList {
pub shop_type: u8,
#[length_of(items)]
pub num_items: u8,
pub unused: u16,
#[length_is(num_items)]
pub items: Vec<ShopListItem>,
}
#[pso_message(0xB7)]
pub struct BuyItem {
item_id: u32,
shop_type: u8,
shop_index: u8,
amount: u8,
unknown1: u8,
}
2020-03-28 00:00:07 -04:00
#[pso_message(0xB8)]
pub struct TekRequest {
2020-11-14 14:57:05 -04:00
pub item_id: u32,
}
2020-03-28 00:00:07 -04:00
2020-05-09 13:46:02 -03:00
#[pso_message(0xB9)]
pub struct TekPreview {
pub item_bytes: [u8; 12],
pub item_id: u32,
pub item_bytes2: [u8; 4],
}
2020-11-11 15:52:16 -04:00
#[pso_message(0xBA)]
pub struct TekAccept {
pub item_id: u32,
}
2020-03-28 00:00:07 -04:00
2020-07-19 14:22:29 -06:00
#[pso_message(0xBB)]
pub struct BankRequest {
unknown: u32,
}
2020-03-28 00:00:07 -04:00
2020-07-19 14:22:29 -06:00
#[pso_message(0xBD)]
pub struct BankInteraction {
item_id: u32,
meseta_amount: u32,
action: u8,
item_amount: u8,
unknown: u16,
}
2020-03-28 00:00:07 -04:00
2020-05-05 22:04:17 -06:00
#[pso_message(0xBE)]
pub struct CreateItem {
item_data: [u8; 12],
item_id: u32,
item_data2: [u8; 4],
unknown: u32,
}
2020-06-05 22:20:04 -06:00
#[pso_message(0xBF)]
pub struct GiveCharacterExp {
exp: u32,
}
2020-03-27 14:09:24 -04:00
//#[pso_message(0xC0)]
//pub struct PlayerSoldItem {
2020-04-02 00:09:26 -04:00
// client_id: u16,
// item_id: u8,
// amount: u8,
2020-03-27 14:09:24 -04:00
//}
2020-03-28 00:00:07 -04:00
//#[pso_message(0xC1)]
//pub struct TeamInvite {
//}
//#[pso_message(0xC2)]
//pub struct AcceptTeamInvite {
//}
2020-03-27 14:09:24 -04:00
#[pso_message(0xC3)]
pub struct DropCoordinates {
map_area: u16,
room: u16,
2020-03-27 14:09:24 -04:00
x: f32,
z: f32,
2020-05-13 23:22:30 -06:00
item_id: u32,
2020-03-27 14:09:24 -04:00
}
2020-04-02 00:09:26 -04:00
#[pso_message(0xC4)]
pub struct SortItems {
2020-10-31 01:26:41 -03:00
item_ids: [u32; 30],
2020-04-02 00:09:26 -04:00
}
2020-03-27 14:09:24 -04:00
2020-03-28 00:00:07 -04:00
#[pso_message(0xC5)]
pub struct PlayerUsedMedicalCenter {
2020-03-27 14:09:24 -04:00
2020-03-28 00:00:07 -04:00
}
2020-03-27 14:09:24 -04:00
//#[pso_message(0xC6)]
//pub struct ExperienceSteal {
//}
2020-06-07 21:53:20 -03:00
#[pso_message(0xC7)]
pub struct ChargeAttack {
meseta: u32,
}
2020-03-27 14:09:24 -04:00
#[pso_message(0xC8)]
pub struct RequestExp {
enemy_id: u16,
client_id: u8,
unused: u8,
last_hitter: u32,
}
2020-03-28 00:00:07 -04:00
//#[pso_message(0xC9)]
//pub struct QuestRewardMeseta {
//}
//#[pso_message(0xCA)]
//pub struct QuestRewardItem {
//}
2020-03-27 14:09:24 -04:00
//#[pso_message(0xCB)]
//pub struct TransferItemRequest {
//}
//#[pso_message(0xCC)]
//pub struct ExchangeItemForTeampoints {
//}
2020-03-28 00:00:07 -04:00
//#[pso_message(0xCD)]
//pub struct MasterTransfer {
//}
//#[pso_message(0xCE)]
//pub struct AcceptMasterTransfer {
//}
2020-03-27 14:09:24 -04:00
//#[pso_message(0xCF)]
//pub struct RestartBattle {
//}
2020-03-28 00:00:07 -04:00
//#[pso_message(0xD0)]
//pub struct BmodeLevelUp {
//}
//#[pso_message(0xD1)]
//pub struct CmodeGrave {
//}
2020-03-27 14:09:24 -04:00
//#[pso_message(0xD2)]
//pub struct WriteQuestFlag {
//}
//#[pso_message(0xD5)]
//pub struct QuestItemExchange {
//}
2020-03-28 00:00:07 -04:00
//#[pso_message(0xD6)]
//pub struct WrapItem {
//}
2020-03-27 14:09:24 -04:00
//#[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 {
//}
2020-03-28 00:00:07 -04:00
//#[pso_message(0xDF)]
//pub struct BPDPhotonCrystalExchange {
//}
//#[pso_message(0xE0)]
//pub struct BPDRewards {
//}
2020-03-27 14:09:24 -04:00
//#[pso_message(0xE1)]
//pub struct GallonsPlanQuest {
//}
2019-12-15 23:14:17 -08:00
2020-03-28 00:00:07 -04:00
//#[pso_message(0xE2)]
//pub struct Coren {
//}
2019-11-16 23:13:36 -08:00
#[derive(Debug, Clone, PartialEq)]
pub enum GameMessage {
2020-03-28 00:00:07 -04:00
PlayerActivatedSwitch(PlayerActivatedSwitch),
2020-03-27 14:09:24 -04:00
GuildcardSend(GuildcardSend),
GuildcardRecv(GuildcardRecv),
2020-04-02 00:09:26 -04:00
SymbolChat(SymbolChat),
2020-03-27 14:09:24 -04:00
MobAttack(MobAttack),
BoxAttack(BoxAttack),
Unknown0C(Unknown0C),
Unknown0D(Unknown0D),
2020-04-02 00:09:26 -04:00
BossInteractionDragon(BossInteractionDragon),
2020-03-27 14:09:24 -04:00
//BossInteractionDeRolLe(BossInteractionDeRolLe),
//BossInteractionDeRolLe2(BossInteractionDeRolLe2),
//BossInteractionVolOpt(BossInteractionVolOpt),
//BossInteractionVolOpt2(BossInteractionVolOpt2),
2020-04-02 00:09:26 -04:00
//VolOptSecondPhase(VolOptSecondPhase),
2020-03-27 14:09:24 -04:00
//VolOptSecondPhase2(VolOptSecondPhase2),
//BossInteractionDarkFalz(BossInteractionDarkFalz),
//PlayerKillActivated(PlayerKillActivated),
//PlayerKillActivated2(PlayerKillActivated2),
2019-12-11 23:32:11 -08:00
PlayerChangedMap(PlayerChangedMap),
PlayerChangedMap2(PlayerChangedMap2),
2019-12-15 23:14:17 -08:00
TellOtherPlayerMyLocation(TellOtherPlayerMyLocation),
2020-03-28 00:00:07 -04:00
PlayerWarpingToFloor(PlayerWarpingToFloor),
PlayerWarping(PlayerWarping),
PlayerDoneChangingMap(PlayerDoneChangingMap),
2020-03-27 14:09:24 -04:00
PlayerTeleported(PlayerTeleported),
PlayerEquipItem(PlayerEquipItem),
PlayerUnequipItem(PlayerUnequipItem),
PlayerUseItem(PlayerUseItem),
PlayerFeedMag(PlayerFeedMag),
PlayerDropItem(PlayerDropItem),
PlayerNoLongerHasItem(PlayerNoLongerHasItem),
2020-03-27 14:09:24 -04:00
AddItemToInventory(AddItemToInventory),
2020-03-28 00:00:07 -04:00
InitializeSpeechNpc(InitializeSpeechNpc),
FinishSpeechNpc(FinishSpeechNpc),
FinishSpeechNpcBPD(FinishSpeechNpcBPD),
PlayerLevelUp(PlayerLevelUp),
2020-03-27 14:09:24 -04:00
PlayerResurrected(PlayerResurrected),
PlayerResurrectedMedicalCenter(PlayerResurrectedMedicalCenter),
PlayerUsedMoonAtomizer(PlayerUsedMoonAtomizer),
PlayerPBDonation(PlayerPBDonation),
PlayerInitiatedPB(PlayerInitiatedPB),
2020-03-28 00:00:07 -04:00
PlayerLeftArea(PlayerLeftArea),
PlayerSpawnedIntoArea(PlayerSpawnedIntoArea),
2020-03-27 14:09:24 -04:00
PlayerStopped(PlayerStopped),
PlayerLoadedIn(PlayerLoadedIn),
PlayerWalking(PlayerWalking),
PlayerRunning(PlayerRunning),
2020-02-14 23:31:43 -04:00
ComboStep1(ComboStep1),
ComboStep2(ComboStep2),
ComboStep3(ComboStep3),
ComboStepDone(ComboStepDone),
PlayerTechCast(PlayerTechCast),
PlayerTechDone(PlayerTechDone),
2020-03-27 14:09:24 -04:00
PlayerPBUsed(PlayerPBUsed),
2020-02-14 23:31:43 -04:00
PlayerBlockedDamage(PlayerBlockedDamage),
2020-03-27 14:09:24 -04:00
PlayerReceivedDamage(PlayerReceivedDamage),
PlayerReceivedDamage2(PlayerReceivedDamage2),
PlayerDeath(PlayerDeath),
PlayerPostDeathAnimation(PlayerPostDeathAnimation),
PlayerScapedollResurrection(PlayerScapedollResurrection),
2020-03-28 00:00:07 -04:00
PlayerActivatedSwitch2(PlayerActivatedSwitch2),
2020-03-27 14:09:24 -04:00
TalkToNpc(TalkToNpc),
//Unknown53(Unknown53),
PlayerWarped(PlayerWarped),
LobbyEmote(LobbyEmote),
2020-05-05 22:04:17 -06:00
RemoveItemFromFloor(RemoveItemFromFloor),
PickupItem(PickupItem),
2020-05-14 23:39:55 -06:00
DropSplitStack(DropSplitStack),
2020-04-02 00:09:26 -04:00
//BuyFromShop(BuyFromShop),
ItemDrop(ItemDrop),
2020-03-27 14:09:24 -04:00
RequestItem(RequestItem),
2020-04-02 00:09:26 -04:00
MagAnimation(MagAnimation),
//FloorItemLimitItemDeletion(FloorItemLimitItemDeletion),
2020-03-28 00:00:07 -04:00
PlayerUsedStarAtomizer(PlayerUsedStarAtomizer),
2020-03-27 14:09:24 -04:00
SpawningMonsters(SpawningMonsters),
2020-03-28 00:00:07 -04:00
PlayerTelepipe(PlayerTelepipe),
2020-03-27 14:09:24 -04:00
NpcSpawn(NpcSpawn),
2020-04-21 07:23:22 -06:00
PlayerJoiningGame(PlayerJoiningGame),
PlayerJoiningGame2(PlayerJoiningGame2),
BurstDone(BurstDone),
2020-03-27 14:09:24 -04:00
WordSelect(WordSelect),
PlayerChangedFloor(PlayerChangedFloor),
KillMonster(KillMonster),
//SyncQuestRegister(SyncQuestRegister),
//GoGoBall(GoGoBall),
//CmodeData(CmodeData),
//BmodeData(BmodeData),
2020-02-14 23:31:43 -04:00
PlayerTrapSet(PlayerTrapSet),
2020-03-27 14:09:24 -04:00
//Unknown84(Unknown84),
//PlayerTrapActivate(PlayerTrapActivate),
//PlayerShrink(PlayerShrink),
//PlayerUnshrink(PlayerUnshrink),
PlayerKilledByMonster(PlayerKilledByMonster),
//CmodeStatistics(CmodeStatistics),
PlayerTechStart(PlayerTechStart),
2020-03-28 00:00:07 -04:00
PlayerWarped2(PlayerWarped2),
2020-03-27 14:09:24 -04:00
//CmodeTryAgain(CmodeTryAgain),
ModifyPlayerStats(ModifyPlayerStats),
//CmodePartyWipe(CmodePartyWipe),
//BossInteractionGalGryphon(BossInteractionGalGryphon),
//PlayerMoonAtomizerResurrection(PlayerMoonAtomizerResurrection),
2020-05-15 13:38:12 -03:00
BoxDropRequest(BoxDropRequest),
2020-03-27 14:09:24 -04:00
//BossInteractionOlgaFlow(BossInteractionOlgaFlow),
//BossInteractionOlgaFlow2(BossInteractionOlgaFlow2),
//BossInteractionOlgaFlow3(BossInteractionOlgaFlow3),
2020-03-28 00:00:07 -04:00
//TradeRequest(TradeRequest),
2020-03-27 14:09:24 -04:00
//BossInteractionGolDragon(BossInteractionGolDragon),
//BossInteractionBarbaRay(BossInteractionBarbaRay),
//BossInteractionBarbaRay2(BossInteractionBarbaRay2),
PhotonChairSit(PhotonChairSit),
//BossInteractionOlgaFlow4(BossInteractionOlgaFlow4),
UnknownAE(UnknownAE),
PhotonChairTurn(PhotonChairTurn),
PhotonChairMove(PhotonChairMove),
2020-09-27 18:12:41 -06:00
ShopRequest(ShopRequest),
ShopList(ShopList),
BuyItem(BuyItem),
TekRequest(TekRequest),
2020-05-09 13:46:02 -03:00
TekPreview(TekPreview),
2020-11-11 15:52:16 -04:00
TekAccept(TekAccept),
2020-07-19 14:22:29 -06:00
BankRequest(BankRequest),
BankInteraction(BankInteraction),
2020-03-27 14:09:24 -04:00
//PlayerSoldItem(PlayerSoldItem),
2020-03-28 00:00:07 -04:00
//TeamInvite(TeamInvite),
//AcceptTeamInvite(AcceptTeamInvite),
2020-05-05 22:04:17 -06:00
CreateItem(CreateItem),
2020-06-05 22:20:04 -06:00
GiveCharacterExp(GiveCharacterExp),
2020-03-27 14:09:24 -04:00
DropCoordinates(DropCoordinates),
2020-04-02 00:09:26 -04:00
SortItems(SortItems),
2020-03-28 00:00:07 -04:00
PlayerUsedMedicalCenter(PlayerUsedMedicalCenter),
2020-03-27 14:09:24 -04:00
//ExperienceSteal(ExperienceSteal),
2020-06-07 21:53:20 -03:00
ChargeAttack(ChargeAttack),
2020-03-27 14:09:24 -04:00
RequestExp(RequestExp),
2020-03-28 00:00:07 -04:00
//QuestRewardMeseta(QuestRewardMeseta),
//QuestRewardItem(QuestRewardItem),
2020-03-27 14:09:24 -04:00
//TransferItemRequest(TransferItemRequest),
//ExchangeItemForTeampoints(ExchangeItemForTeampoints),
2020-03-28 00:00:07 -04:00
//MasterTransfer(MasterTransfer),
//AcceptMasterTransfer(AcceptMasterTransfer),
2020-03-27 14:09:24 -04:00
//RestartBattle(RestartBattle),
2020-03-28 00:00:07 -04:00
//BmodeLevelUp(BmodeLevelUp),
//CmodeGrave(CmodeGrave),
2020-03-27 14:09:24 -04:00
//WriteQuestFlag(WriteQuestFlag),
//QuestItemExchange(QuestItemExchange),
2020-03-28 00:00:07 -04:00
//WrapItem(WrapItem),
2020-03-27 14:09:24 -04:00
//PaganiniPDExchange(PaganiniPDExchange),
//SrankSpecialModification(SrankSpecialModification),
//MomokaItemShop(MomokaItemShop),
//WeaponAttributeEnhancement(WeaponAttributeEnhancement),
//BossInteractionSaintMillion(BossInteractionSaintMillion),
//GoodLuckQuest(GoodLuckQuest),
2020-03-28 00:00:07 -04:00
//BPDPhotonCrystalExchange(BPDPhotonCrystalExchange),
//BPDRewards(BPDRewards),
2020-03-27 14:09:24 -04:00
//GallonsPlanQuest(GallonsPlanQuest),
2020-03-28 00:00:07 -04:00
//Coren(Coren),
2019-11-10 21:43:02 -08:00
}
2019-11-16 23:13:36 -08:00
impl PSOPacketData for GameMessage {
2019-11-10 21:43:02 -08:00
fn from_bytes<R: std::io::Read + std::io::Seek>(mut cur: &mut R) -> Result<Self, PacketParseError> {
let mut byte = [0u8; 1];
2019-12-11 23:32:11 -08:00
let mut len = [0u8; 1];
2019-11-10 21:43:02 -08:00
cur.read(&mut byte);
2019-12-11 23:32:11 -08:00
cur.read(&mut len);
cur.seek(SeekFrom::Current(-2)); // Cursor doesn't implement Peek?
2019-11-10 21:43:02 -08:00
match byte[0] {
2020-03-28 00:00:07 -04:00
PlayerActivatedSwitch::CMD => Ok(GameMessage::PlayerActivatedSwitch(PlayerActivatedSwitch::from_bytes(&mut cur)?)),
GuildcardSend::CMD if len[0] == 1 => Ok(GameMessage::GuildcardSend(GuildcardSend::from_bytes(&mut cur)?)),
2020-03-27 14:09:24 -04:00
GuildcardRecv::CMD => Ok(GameMessage::GuildcardRecv(GuildcardRecv::from_bytes(&mut cur)?)),
2020-04-02 00:09:26 -04:00
SymbolChat::CMD => Ok(GameMessage::SymbolChat(SymbolChat::from_bytes(&mut cur)?)),
2020-03-27 14:09:24 -04:00
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)?)),
2020-04-02 00:09:26 -04:00
BossInteractionDragon::CMD => Ok(GameMessage::BossInteractionDragon(BossInteractionDragon::from_bytes(&mut cur)?)),
2020-03-27 14:09:24 -04:00
//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)?)),
2020-04-02 00:09:26 -04:00
//VolOptSecondPhase::CMD => Ok(GameMessage::VolOptSecondPhase(VolOptSecondPhase::from_bytes(&mut cur)?)),
2020-03-27 14:09:24 -04:00
//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)?)),
2019-12-11 23:32:11 -08:00
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)?)),
2019-12-15 23:14:17 -08:00
TellOtherPlayerMyLocation::CMD => Ok(GameMessage::TellOtherPlayerMyLocation(TellOtherPlayerMyLocation::from_bytes(&mut cur)?)),
2020-03-28 00:00:07 -04:00
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)?)),
2020-03-27 14:09:24 -04:00
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)?)),
2020-03-27 14:09:24 -04:00
AddItemToInventory::CMD => Ok(GameMessage::AddItemToInventory(AddItemToInventory::from_bytes(&mut cur)?)),
2020-03-28 00:00:07 -04:00
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)?)),
2020-03-27 14:09:24 -04:00
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)?)),
2020-03-28 00:00:07 -04:00
PlayerLeftArea::CMD => Ok(GameMessage::PlayerLeftArea(PlayerLeftArea::from_bytes(&mut cur)?)),
PlayerSpawnedIntoArea::CMD => Ok(GameMessage::PlayerSpawnedIntoArea(PlayerSpawnedIntoArea::from_bytes(&mut cur)?)),
2020-03-27 14:09:24 -04:00
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)?)),
2020-02-14 23:31:43 -04:00
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)?)),
2020-03-27 14:09:24 -04:00
PlayerPBUsed::CMD => Ok(GameMessage::PlayerPBUsed(PlayerPBUsed::from_bytes(&mut cur)?)),
2020-02-14 23:31:43 -04:00
PlayerBlockedDamage::CMD => Ok(GameMessage::PlayerBlockedDamage(PlayerBlockedDamage::from_bytes(&mut cur)?)),
2020-03-27 14:09:24 -04:00
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)?)),
2020-03-28 00:00:07 -04:00
PlayerActivatedSwitch2::CMD => Ok(GameMessage::PlayerActivatedSwitch2(PlayerActivatedSwitch2::from_bytes(&mut cur)?)),
2020-03-27 14:09:24 -04:00
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)?)),
2020-05-05 22:04:17 -06:00
RemoveItemFromFloor::CMD => Ok(GameMessage::RemoveItemFromFloor(RemoveItemFromFloor::from_bytes(&mut cur)?)),
PickupItem::CMD => Ok(GameMessage::PickupItem(PickupItem::from_bytes(&mut cur)?)),
2020-05-14 23:39:55 -06:00
DropSplitStack::CMD => Ok(GameMessage::DropSplitStack(DropSplitStack::from_bytes(&mut cur)?)),
2020-04-02 00:09:26 -04:00
//BuyFromShop::CMD => Ok(GameMessage::BuyFromShop(BuyFromShop::from_bytes(&mut cur)?)),
ItemDrop::CMD => Ok(GameMessage::ItemDrop(ItemDrop::from_bytes(&mut cur)?)),
2020-03-27 14:09:24 -04:00
RequestItem::CMD => Ok(GameMessage::RequestItem(RequestItem::from_bytes(&mut cur)?)),
2020-04-02 00:09:26 -04:00
MagAnimation::CMD => Ok(GameMessage::MagAnimation(MagAnimation::from_bytes(&mut cur)?)),
//FloorItemLimitItemDeletion::CMD => Ok(GameMessage::FloorItemLimitItemDeletion(FloorItemLimitItemDeletion::from_bytes(&mut cur)?)),
2020-03-28 00:00:07 -04:00
PlayerUsedStarAtomizer::CMD => Ok(GameMessage::PlayerUsedStarAtomizer(PlayerUsedStarAtomizer::from_bytes(&mut cur)?)),
2020-03-27 14:09:24 -04:00
SpawningMonsters::CMD => Ok(GameMessage::SpawningMonsters(SpawningMonsters::from_bytes(&mut cur)?)),
2020-03-28 00:00:07 -04:00
PlayerTelepipe::CMD => Ok(GameMessage::PlayerTelepipe(PlayerTelepipe::from_bytes(&mut cur)?)),
2020-03-27 14:09:24 -04:00
NpcSpawn::CMD => Ok(GameMessage::NpcSpawn(NpcSpawn::from_bytes(&mut cur)?)),
2020-04-21 07:23:22 -06:00
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)?)),
2020-03-27 14:09:24 -04:00
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)?)),
2020-02-14 23:31:43 -04:00
PlayerTrapSet::CMD => Ok(GameMessage::PlayerTrapSet(PlayerTrapSet::from_bytes(&mut cur)?)),
2020-03-27 14:09:24 -04:00
//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)?)),
2020-03-28 00:00:07 -04:00
PlayerWarped2::CMD => Ok(GameMessage::PlayerWarped2(PlayerWarped2::from_bytes(&mut cur)?)),
2020-03-27 14:09:24 -04:00
//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)?)),
2020-05-15 13:38:12 -03:00
BoxDropRequest::CMD => Ok(GameMessage::BoxDropRequest(BoxDropRequest::from_bytes(&mut cur)?)),
2020-03-27 14:09:24 -04:00
//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)?)),
2020-03-28 00:00:07 -04:00
//TradeRequest::CMD => Ok(GameMessage::TradeRequest(TradeRequest::from_bytes(&mut cur)?)),
2020-03-27 14:09:24 -04:00
//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)?)),
2020-09-27 18:12:41 -06:00
ShopRequest::CMD => Ok(GameMessage::ShopRequest(ShopRequest::from_bytes(&mut cur)?)),
ShopList::CMD => Ok(GameMessage::ShopList(ShopList::from_bytes(&mut cur)?)),
BuyItem::CMD => Ok(GameMessage::BuyItem(BuyItem::from_bytes(&mut cur)?)),
TekRequest::CMD => Ok(GameMessage::TekRequest(TekRequest::from_bytes(&mut cur)?)),
2020-05-09 13:46:02 -03:00
TekPreview::CMD => Ok(GameMessage::TekPreview(TekPreview::from_bytes(&mut cur)?)),
2020-11-11 15:52:16 -04:00
TekAccept::CMD => Ok(GameMessage::TekAccept(TekAccept::from_bytes(&mut cur)?)),
2020-07-19 14:22:29 -06:00
BankRequest::CMD => Ok(GameMessage::BankRequest(BankRequest::from_bytes(&mut cur)?)),
BankInteraction::CMD => Ok(GameMessage::BankInteraction(BankInteraction::from_bytes(&mut cur)?)),
2020-03-27 14:09:24 -04:00
//PlayerSoldItem::CMD => Ok(GameMessage::PlayerSoldItem(PlayerSoldItem::from_bytes(&mut cur)?)),
2020-03-28 00:00:07 -04:00
//TeamInvite::CMD => Ok(GameMessage::TeamInvite(TeamInvite::from_bytes(&mut cur)?)),
//AcceptTeamInvite::CMD => Ok(GameMessage::AcceptTeamInvite(AcceptTeamInvite::from_bytes(&mut cur)?)),
2020-05-05 22:04:17 -06:00
CreateItem::CMD => Ok(GameMessage::CreateItem(CreateItem::from_bytes(&mut cur)?)),
2020-06-05 22:20:04 -06:00
GiveCharacterExp::CMD => Ok(GameMessage::GiveCharacterExp(GiveCharacterExp::from_bytes(&mut cur)?)),
2020-03-27 14:09:24 -04:00
DropCoordinates::CMD => Ok(GameMessage::DropCoordinates(DropCoordinates::from_bytes(&mut cur)?)),
2020-04-02 00:09:26 -04:00
SortItems::CMD => Ok(GameMessage::SortItems(SortItems::from_bytes(&mut cur)?)),
2020-03-28 00:00:07 -04:00
PlayerUsedMedicalCenter::CMD => Ok(GameMessage::PlayerUsedMedicalCenter(PlayerUsedMedicalCenter::from_bytes(&mut cur)?)),
2020-03-27 14:09:24 -04:00
//ExperienceSteal::CMD => Ok(GameMessage::ExperienceSteal(ExperienceSteal::from_bytes(&mut cur)?)),
2020-06-07 21:53:20 -03:00
ChargeAttack::CMD => Ok(GameMessage::ChargeAttack(ChargeAttack::from_bytes(&mut cur)?)),
2020-03-27 14:09:24 -04:00
RequestExp::CMD => Ok(GameMessage::RequestExp(RequestExp::from_bytes(&mut cur)?)),
2020-03-28 00:00:07 -04:00
//QuestRewardMeseta::CMD => Ok(GameMessage::QuestRewardMeseta(QuestRewardMeseta::from_bytes(&mut cur)?)),
//QuestRewardItem::CMD => Ok(GameMessage::QuestRewardItem(QuestRewardItem::from_bytes(&mut cur)?)),
2020-03-27 14:09:24 -04:00
//TransferItemRequest::CMD => Ok(GameMessage::TransferItemRequest(TransferItemRequest::from_bytes(&mut cur)?)),
//ExchangeItemForTeampoints::CMD => Ok(GameMessage::ExchangeItemForTeampoints(ExchangeItemForTeampoints::from_bytes(&mut cur)?)),
2020-03-28 00:00:07 -04:00
//MasterTransfer::CMD => Ok(GameMessage::MasterTransfer(MasterTransfer::from_bytes(&mut cur)?)),
//AcceptMasterTransfer::CMD => Ok(GameMessage::AcceptMasterTransfer(AcceptMasterTransfer::from_bytes(&mut cur)?)),
2020-03-27 14:09:24 -04:00
//RestartBattle::CMD => Ok(GameMessage::RestartBattle(RestartBattle::from_bytes(&mut cur)?)),
2020-03-28 00:00:07 -04:00
//BmodeLevelUp::CMD => Ok(GameMessage::BmodeLevelUp(BmodeLevelUp::from_bytes(&mut cur)?)),
//CmodeGrave::CMD => Ok(GameMessage::CmodeGrave(CmodeGrave::from_bytes(&mut cur)?)),
2020-03-27 14:09:24 -04:00
//WriteQuestFlag::CMD => Ok(GameMessage::WriteQuestFlag(WriteQuestFlag::from_bytes(&mut cur)?)),
//QuestItemExchange::CMD => Ok(GameMessage::QuestItemExchange(QuestItemExchange::from_bytes(&mut cur)?)),
2020-03-28 00:00:07 -04:00
//WrapItem::CMD => Ok(GameMessage::WrapItem(WrapItem::from_bytes(&mut cur)?)),
2020-03-27 14:09:24 -04:00
//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)?)),
2020-03-28 00:00:07 -04:00
//BPDPhotonCrystalExchange::CMD => Ok(GameMessage::BPDPhotonCrystalExchange(BPDPhotonCrystalExchange::from_bytes(&mut cur)?)),
//BPDRewards::CMD => Ok(GameMessage::BPDRewards(BPDRewards::from_bytes(&mut cur)?)),
2020-03-27 14:09:24 -04:00
//GallonsPlanQuest::CMD => Ok(GameMessage::GallonsPlanQuest(GallonsPlanQuest::from_bytes(&mut cur)?)),
2020-03-28 00:00:07 -04:00
//Coren::CMD => Ok(GameMessage::Coren(Coren::from_bytes(&mut cur)?)),
2019-12-18 21:05:58 -08:00
_ => Err(PacketParseError::UnknownMessage(byte[0],
{
let mut b = vec![0; len[0] as usize * 4];
cur.read(&mut b).unwrap();
b.to_vec()
}
)),
2019-11-10 21:43:02 -08:00
}
}
2020-03-27 14:09:24 -04:00
2019-11-10 21:43:02 -08:00
fn as_bytes(&self) -> Vec<u8> {
2019-11-16 23:13:36 -08:00
match self {
2020-03-28 00:00:07 -04:00
GameMessage::PlayerActivatedSwitch(data) => data.as_bytes(),
2020-03-27 14:09:24 -04:00
GameMessage::GuildcardSend(data) => data.as_bytes(),
GameMessage::GuildcardRecv(data) => data.as_bytes(),
2020-04-02 00:09:26 -04:00
GameMessage::SymbolChat(data) => data.as_bytes(),
2020-03-27 14:09:24 -04:00
GameMessage::MobAttack(data) => data.as_bytes(),
GameMessage::BoxAttack(data) => data.as_bytes(),
GameMessage::Unknown0C(data) => data.as_bytes(),
GameMessage::Unknown0D(data) => data.as_bytes(),
2020-04-02 00:09:26 -04:00
GameMessage::BossInteractionDragon(data) => data.as_bytes(),
2020-03-27 14:09:24 -04:00
//GameMessage::BossInteractionDeRolLe(data) => data.as_bytes(),
//GameMessage::BossInteractionDeRolLe2(data) => data.as_bytes(),
//GameMessage::BossInteractionVolOpt(data) => data.as_bytes(),
//GameMessage::BossInteractionVolOpt2(data) => data.as_bytes(),
2020-04-02 00:09:26 -04:00
//GameMessage::VolOptSecondPhase(data) => data.as_bytes(),
2020-03-27 14:09:24 -04:00
//GameMessage::VolOptSecondPhase2(data) => data.as_bytes(),
//GameMessage::BossInteractionDarkFalz(data) => data.as_bytes(),
//GameMessage::PlayerKillActivated(data) => data.as_bytes(),
//GameMessage::PlayerKillActivated2(data) => data.as_bytes(),
2019-12-11 23:32:11 -08:00
GameMessage::PlayerChangedMap(data) => data.as_bytes(),
GameMessage::PlayerChangedMap2(data) => data.as_bytes(),
2019-12-15 23:14:17 -08:00
GameMessage::TellOtherPlayerMyLocation(data) => data.as_bytes(),
2020-03-28 00:00:07 -04:00
GameMessage::PlayerWarpingToFloor(data) => data.as_bytes(),
GameMessage::PlayerWarping(data) => data.as_bytes(),
GameMessage::PlayerDoneChangingMap(data) => data.as_bytes(),
2020-03-27 14:09:24 -04:00
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(),
2020-03-27 14:09:24 -04:00
GameMessage::AddItemToInventory(data) => data.as_bytes(),
2020-03-28 00:00:07 -04:00
GameMessage::InitializeSpeechNpc(data) => data.as_bytes(),
GameMessage::FinishSpeechNpc(data) => data.as_bytes(),
GameMessage::FinishSpeechNpcBPD(data) => data.as_bytes(),
GameMessage::PlayerLevelUp(data) => data.as_bytes(),
2020-03-27 14:09:24 -04:00
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(),
2020-03-28 00:00:07 -04:00
GameMessage::PlayerLeftArea(data) => data.as_bytes(),
GameMessage::PlayerSpawnedIntoArea(data) => data.as_bytes(),
2020-03-27 14:09:24 -04:00
GameMessage::PlayerStopped(data) => data.as_bytes(),
GameMessage::PlayerLoadedIn(data) => data.as_bytes(),
GameMessage::PlayerWalking(data) => data.as_bytes(),
GameMessage::PlayerRunning(data) => data.as_bytes(),
2020-02-14 23:31:43 -04:00
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(),
2020-03-27 14:09:24 -04:00
GameMessage::PlayerPBUsed(data) => data.as_bytes(),
2020-02-14 23:31:43 -04:00
GameMessage::PlayerBlockedDamage(data) => data.as_bytes(),
2020-03-27 14:09:24 -04:00
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(),
2020-03-28 00:00:07 -04:00
GameMessage::PlayerActivatedSwitch2(data) => data.as_bytes(),
2020-03-27 14:09:24 -04:00
GameMessage::TalkToNpc(data) => data.as_bytes(),
//GameMessage::Unknown53(data) => data.as_bytes(),
GameMessage::PlayerWarped(data) => data.as_bytes(),
GameMessage::LobbyEmote(data) => data.as_bytes(),
2020-05-05 22:04:17 -06:00
GameMessage::RemoveItemFromFloor(data) => data.as_bytes(),
GameMessage::PickupItem(data) => data.as_bytes(),
2020-05-14 23:39:55 -06:00
GameMessage::DropSplitStack(data) => data.as_bytes(),
2020-04-02 00:09:26 -04:00
//GameMessage::BuyFromShop(data) => data.as_bytes(),
GameMessage::ItemDrop(data) => data.as_bytes(),
2020-03-27 14:09:24 -04:00
GameMessage::RequestItem(data) => data.as_bytes(),
2020-04-02 00:09:26 -04:00
GameMessage::MagAnimation(data) => data.as_bytes(),
//GameMessage::FloorItemLimitItemDeletion(data) => data.as_bytes(),
2020-03-28 00:00:07 -04:00
GameMessage::PlayerUsedStarAtomizer(data) => data.as_bytes(),
2020-03-27 14:09:24 -04:00
GameMessage::SpawningMonsters(data) => data.as_bytes(),
2020-03-28 00:00:07 -04:00
GameMessage::PlayerTelepipe(data) => data.as_bytes(),
2020-03-27 14:09:24 -04:00
GameMessage::NpcSpawn(data) => data.as_bytes(),
2020-04-21 07:23:22 -06:00
GameMessage::PlayerJoiningGame(data) => data.as_bytes(),
GameMessage::PlayerJoiningGame2(data) => data.as_bytes(),
GameMessage::BurstDone(data) => data.as_bytes(),
2020-03-27 14:09:24 -04:00
GameMessage::WordSelect(data) => data.as_bytes(),
2020-02-14 23:31:43 -04:00
GameMessage::PlayerChangedFloor(data) => data.as_bytes(),
2020-03-27 14:09:24 -04:00
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(),
2020-03-28 00:00:07 -04:00
GameMessage::PlayerWarped2(data) => data.as_bytes(),
2020-03-27 14:09:24 -04:00
//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(),
2020-05-15 13:38:12 -03:00
GameMessage::BoxDropRequest(data) => data.as_bytes(),
2020-03-27 14:09:24 -04:00
//GameMessage::BossInteractionOlgaFlow(data) => data.as_bytes(),
//GameMessage::BossInteractionOlgaFlow2(data) => data.as_bytes(),
//GameMessage::BossInteractionOlgaFlow3(data) => data.as_bytes(),
2020-03-28 00:00:07 -04:00
//GameMessage::TradeRequest(data) => data.as_bytes(),
2020-03-27 14:09:24 -04:00
//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(),
2020-09-27 18:12:41 -06:00
GameMessage::ShopRequest(data) => data.as_bytes(),
GameMessage::ShopList(data) => data.as_bytes(),
GameMessage::BuyItem(data) => data.as_bytes(),
GameMessage::TekRequest(data) => data.as_bytes(),
2020-05-09 13:46:02 -03:00
GameMessage::TekPreview(data) => data.as_bytes(),
2020-11-11 15:52:16 -04:00
GameMessage::TekAccept(data) => data.as_bytes(),
2020-07-19 14:22:29 -06:00
GameMessage::BankRequest(data) => data.as_bytes(),
GameMessage::BankInteraction(data) => data.as_bytes(),
2020-03-27 14:09:24 -04:00
//GameMessage::PlayerSoldItem(data) => data.as_bytes(),
2020-03-28 00:00:07 -04:00
//GameMessage::TeamInvite(data) => data.as_bytes(),
//GameMessage::AcceptTeamInvite(data) => data.as_bytes(),
2020-05-05 22:04:17 -06:00
GameMessage::CreateItem(data) => data.as_bytes(),
2020-06-05 22:20:04 -06:00
GameMessage::GiveCharacterExp(data) => data.as_bytes(),
2020-03-27 14:09:24 -04:00
GameMessage::DropCoordinates(data) => data.as_bytes(),
2020-04-02 00:09:26 -04:00
GameMessage::SortItems(data) => data.as_bytes(),
2020-03-28 00:00:07 -04:00
GameMessage::PlayerUsedMedicalCenter(data) => data.as_bytes(),
2020-03-27 14:09:24 -04:00
//GameMessage::ExperienceSteal(data) => data.as_bytes(),
2020-06-07 21:53:20 -03:00
GameMessage::ChargeAttack(data) => data.as_bytes(),
2020-03-27 14:09:24 -04:00
GameMessage::RequestExp(data) => data.as_bytes(),
2020-03-28 00:00:07 -04:00
//GameMessage::QuestRewardMeseta(data) => data.as_bytes(),
//GameMessage::QuestRewardItem(data) => data.as_bytes(),
2020-03-27 14:09:24 -04:00
//GameMessage::TransferItemRequest(data) => data.as_bytes(),
//GameMessage::ExchangeItemForTeampoints(data) => data.as_bytes(),
2020-03-28 00:00:07 -04:00
//GameMessage::MasterTransfer(data) => data.as_bytes(),
//GameMessage::AcceptMasterTransfer(data) => data.as_bytes(),
2020-03-27 14:09:24 -04:00
//GameMessage::RestartBattle(data) => data.as_bytes(),
2020-03-28 00:00:07 -04:00
//GameMessage::BmodeLevelUp(data) => data.as_bytes(),
//GameMessage::CmodeGrave(data) => data.as_bytes(),
2020-03-27 14:09:24 -04:00
//GameMessage::WriteQuestFlag(data) => data.as_bytes(),
//GameMessage::QuestItemExchange(data) => data.as_bytes(),
2020-03-28 00:00:07 -04:00
//GameMessage::WrapItem(data) => data.as_bytes(),
2020-03-27 14:09:24 -04:00
//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(),
2020-03-28 00:00:07 -04:00
//GameMessage::BPDPhotonCrystalExchange(data) => data.as_bytes(),
//GameMessage::BPDRewards(data) => data.as_bytes(),
2020-03-27 14:09:24 -04:00
//GameMessage::GallonsPlanQuest(data) => data.as_bytes(),
2020-03-28 00:00:07 -04:00
//GameMessage::Coren(data) => data.as_bytes(),
2019-11-16 23:13:36 -08:00
}
2019-11-10 21:43:02 -08:00
}
2020-04-21 07:23:22 -06:00
}