diff --git a/common/patches/tob.cpp b/common/patches/tob.cpp index f1130e5b4..c742e6674 100644 --- a/common/patches/tob.cpp +++ b/common/patches/tob.cpp @@ -2587,16 +2587,16 @@ namespace TOB eq_cse->Face = emu_cse->Face; for (int equip_index = 0; equip_index < EQ::textures::materialCount; equip_index++) { - eq_cse->Equip[equip_index].Material = emu_cse->Equip[equip_index].Material; - eq_cse->Equip[equip_index].Unknown1 = emu_cse->Equip[equip_index].Unknown1; - eq_cse->Equip[equip_index].EliteMaterial = emu_cse->Equip[equip_index].EliteModel; - eq_cse->Equip[equip_index].HeroForgeModel = emu_cse->Equip[equip_index].HerosForgeModel; - eq_cse->Equip[equip_index].Material2 = emu_cse->Equip[equip_index].Unknown2; - eq_cse->Equip[equip_index].Color = emu_cse->Equip[equip_index].Color; + eq_cse->Equip[equip_index].Material = emu_cse->Equip[equip_index].Material; // type + eq_cse->Equip[equip_index].Unknown1 = emu_cse->Equip[equip_index].Unknown1; // variation + eq_cse->Equip[equip_index].EliteMaterial = emu_cse->Equip[equip_index].EliteModel; // material + eq_cse->Equip[equip_index].HeroForgeModel = emu_cse->Equip[equip_index].HerosForgeModel; // new armor id + eq_cse->Equip[equip_index].Material2 = emu_cse->Equip[equip_index].Unknown2; // new armor type + eq_cse->Equip[equip_index].Color = emu_cse->Equip[equip_index].Color; // tint } - eq_cse->Unknown1 = 255; - eq_cse->Unknown2 = 0; + eq_cse->TextureType = 255; + eq_cse->HeadType = 0; eq_cse->DrakkinTattoo = emu_cse->DrakkinTattoo; eq_cse->DrakkinDetails = emu_cse->DrakkinDetails; eq_cse->Deity = emu_cse->Deity; @@ -2608,18 +2608,16 @@ namespace TOB eq_cse->EyeColor2 = emu_cse->EyeColor2; eq_cse->HairStyle = emu_cse->HairStyle; eq_cse->Beard = emu_cse->Beard; - eq_cse->GoHome = emu_cse->GoHome; + eq_cse->PreFTP = 1; eq_cse->Tutorial = emu_cse->Tutorial; eq_cse->DrakkinHeritage = emu_cse->DrakkinHeritage; - eq_cse->Enabled = emu_cse->Enabled; + eq_cse->GoHome = emu_cse->GoHome; eq_cse->LastLogin = emu_cse->LastLogin; - eq_cse->Unknown3 = 0; - eq_cse->Unknown4 = 0; - eq_cse->Unknown5 = 0; - eq_cse->Unknown6 = 0; - eq_cse->Unknown7 = 0; + eq_cse->TooHighLevel = 0; + eq_cse->Usable = emu_cse->Enabled; // this doesn't seem to do anything + eq_cse->Shrouded = 0; + eq_cse->Unknown = 0; eq_cse->CharacterId = 0; - eq_cse->Unknown8 = 1; emu_ptr += sizeof(CharacterSelectEntry_Struct); eq_ptr += sizeof(structs::CharacterSelectEntry_Struct); diff --git a/common/patches/tob_structs.h b/common/patches/tob_structs.h index e70e0a1db..05465cc12 100644 --- a/common/patches/tob_structs.h +++ b/common/patches/tob_structs.h @@ -98,16 +98,16 @@ namespace TOB { }; /* - * Visible equiptment. + * Visible equipment. * Size: 20 Octets */ struct Texture_Struct { - uint32 Material; - uint32 Unknown1; - uint32 EliteMaterial; - uint32 HeroForgeModel; - uint32 Material2; // Same as material? + uint32 Material; // type + uint32 Unknown1; // material + uint32 EliteMaterial; // variation + uint32 HeroForgeModel; // new armor ID + uint32 Material2; // new armor type }; /* @@ -145,10 +145,10 @@ namespace TOB { uint8 Gender; uint8 Face; CharSelectEquip Equip[9]; - uint8 Unknown1; //Seen 256 - uint8 Unknown2; //Seen 0 - uint32 DrakkinTattoo; - uint32 DrakkinDetails; + uint8 TextureType; //Seen 256 + uint8 HeadType; //Seen 0 + uint32 DrakkinTattoo; // tattoo index + uint32 DrakkinDetails; // face attachment index uint32 Deity; uint32 PrimaryIDFile; uint32 SecondaryIDFile; @@ -158,18 +158,16 @@ namespace TOB { uint8 EyeColor2; uint8 HairStyle; uint8 Beard; - uint8 Enabled; - uint8 Tutorial; - uint32 DrakkinHeritage; - uint8 Unknown3; uint8 GoHome; + uint8 Tutorial; + uint32 DrakkinHeritage; // parent ID + uint8 TooHighLevel; + uint8 PreFTP; uint32 LastLogin; - uint8 Unknown4; // Seen 0 - uint8 Unknown5; // Seen 0 - uint8 Unknown6; // Seen 0 - uint8 Unknown7; // Seen 0 - uint32 CharacterId; //A Guess, Character I made a little bit after has a number a few hundred after the first - uint32 Unknown8; // Seen 1 + uint8 Usable; + uint16 Shrouded; + uint8 Unknown; + uint64 CharacterId; // A Guess, Character I made a little bit after has a number a few hundred after the first }; /* diff --git a/tob/opcodes.md b/tob/opcodes.md index 109f4431b..50d39dcef 100644 --- a/tob/opcodes.md +++ b/tob/opcodes.md @@ -479,7 +479,7 @@ Below is a status list for the 450 opcodes we currently use on the server for th | `OP_SelectTribute` | 🔴 Not-Set | | | | `OP_SendAAStats` | 🟡 Unverified | | | | `OP_SendAATable` | 🟡 Unverified | | | -| `OP_SendCharInfo` | 🟢 Verified | Seems to largely work correctly | | +| `OP_SendCharInfo` | 🟢 Verified | | | | `OP_SendExpZonein` | 🟡 Unverified | | | | `OP_SendFindableNPCs` | 🔴 Not-Set | | | | `OP_SendGuildTributes` | 🔴 Not-Set | | |