2020-05-02 22:05:43 -03:00
#![ 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 {
2020-07-25 15:16:37 -03:00
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 {
2020-07-25 15:16:37 -03:00
map_area : u16 ,
_unknown1 : u16 ,
2019-12-15 23:14:17 -08:00
x : f32 ,
y : f32 ,
z : f32 ,
2021-05-20 01:38:26 +00:00
rotation : u16 ,
unknown2 : u16 ,
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) ]
2020-07-29 08:08:46 -06:00
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 ,
2020-07-25 15:16:37 -03:00
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-01-09 23:21:15 -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-01-09 23:21:15 -04:00
}
2020-03-27 14:09:24 -04:00
#[ pso_message(0x37) ]
pub struct PlayerInitiatedPB {
pb_amount : u8 ,
2021-05-20 01:38:26 +00:00
unknown1 : [ u8 ; 4 ] ,
2020-01-09 23:21:15 -04:00
}
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-01-15 01:05:03 -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 {
2021-05-20 01:38:26 +00:00
unknown1 : [ u8 ; 2 ] ,
rotation : u16 ,
2020-07-25 15:16:37 -03:00
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 {
2021-05-20 01:38:26 +00:00
unknown1 : [ u8 ; 2 ] ,
rotation : u16 ,
area : u16 ,
room : u16 ,
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 ,
2021-05-20 01:38:26 +00:00
stance : u32 ,
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 {
2021-05-20 01:38:26 +00:00
rotation : u16 ,
attack : u16 ,
2020-02-14 23:31:43 -04:00
}
#[ pso_message(0x44) ]
pub struct ComboStep2 {
2021-05-20 01:38:26 +00:00
rotation : u16 ,
attack : u16 ,
2020-02-14 23:31:43 -04:00
}
#[ pso_message(0x45) ]
pub struct ComboStep3 {
2021-05-20 01:38:26 +00:00
rotation : u16 ,
attack : u16 ,
2020-02-14 23:31:43 -04:00
}
#[ pso_message(0x46) ]
2021-05-20 01:38:26 +00:00
pub struct TargetsHit {
2021-05-23 20:54:35 +00:00
num_of_targets : [ u8 ; 4 ] , // thats a lot of targets?
2021-05-23 20:55:22 +00:00
client2 : u8 , // TODO: what even is this?
target2 : u8 , // TODO: what even is this?
2021-05-23 20:54:35 +00:00
unknown2 : [ u8 ; 2 ] ,
2020-02-14 23:31:43 -04:00
}
#[ pso_message(0x47) ]
2021-05-15 23:29:06 +00:00
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 ,
2021-05-15 23:29:06 +00:00
tech_level : u8 ,
2021-05-23 20:54:35 +00:00
#[ length_of(targets) ]
2020-02-14 23:31:43 -04:00
num_of_targets : u8 ,
2021-05-23 20:54:35 +00:00
#[ length_is(num_of_targets) ]
targets : Vec < u32 > ,
2020-02-14 23:31:43 -04:00
}
#[ pso_message(0x48) ]
2021-05-15 23:29:06 +00:00
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 ,
2021-05-23 20:54:35 +00:00
tech_level : u8 , // level - 1
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 {
2020-07-25 15:16:37 -03:00
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 {
2020-07-25 15:16:37 -03:00
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 {
2021-05-23 19:16:43 +00:00
caster : u16 , // room client #
2021-05-23 19:10:31 +00:00
area : u16 ,
room : u16 ,
2021-05-23 19:16:43 +00:00
unknown1 : u16 ,
2021-05-23 19:10:31 +00:00
x : f32 ,
y : f32 ,
z : f32 ,
rotation : u16 ,
2021-05-23 19:16:43 +00:00
unknown2 : [ u8 ; 2 ] ,
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 {
2020-07-25 15:16:37 -03:00
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
2021-05-15 23:29:06 +00: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 {
//}
2021-05-15 23:29:06 +00:00
#[ 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-12-12 19:55:53 -07:00
#[ pso_message(0xA6) ]
pub struct TradeRequest {
unknown1 : u32 ,
unknown2 : u32 ,
unknown3 : u32 ,
}
2020-03-28 00:00:07 -04:00
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
2020-05-02 18:28:29 -03:00
#[ pso_message(0xB8) ]
pub struct TekRequest {
2020-11-14 14:57:05 -04:00
pub item_id : u32 ,
2020-05-02 18:28:29 -03:00
}
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 {
2020-07-25 15:16:37 -03:00
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 ) ,
2020-07-29 08:08:46 -06:00
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 ) ,
2021-05-20 01:38:26 +00:00
TargetsHit ( TargetsHit ) ,
2020-02-14 23:31:43 -04:00
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),
2021-05-15 23:29:06 +00:00
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-12-12 19:55:53 -07: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 ) ,
2020-05-02 18:28:29 -03:00
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 = [ 0 u8 ; 1 ] ;
2019-12-11 23:32:11 -08:00
let mut len = [ 0 u8 ; 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 ) ? ) ) ,
2020-05-02 22:05:43 -03:00
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 ) ? ) ) ,
2020-07-29 08:08:46 -06:00
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 ) ? ) ) ,
2021-05-20 01:38:26 +00:00
TargetsHit ::CMD = > Ok ( GameMessage ::TargetsHit ( TargetsHit ::from_bytes ( & mut cur ) ? ) ) ,
2020-02-14 23:31:43 -04:00
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)?)),
2021-05-15 23:29:06 +00:00
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-12-12 19:55:53 -07: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 ) ? ) ) ,
2020-05-02 18:28:29 -03:00
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 ( ) ,
2020-07-29 08:08:46 -06:00
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 ( ) ,
2021-05-20 01:38:26 +00:00
GameMessage ::TargetsHit ( data ) = > data . as_bytes ( ) ,
2020-02-14 23:31:43 -04:00
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(),
2021-05-15 23:29:06 +00:00
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-12-12 19:55:53 -07: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 ( ) ,
2020-05-02 18:28:29 -03:00
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
}