diff --git a/common/patches/laurion.cpp b/common/patches/laurion.cpp index f8a73c5b1..b519b8f13 100644 --- a/common/patches/laurion.cpp +++ b/common/patches/laurion.cpp @@ -3228,6 +3228,47 @@ namespace Laurion FINISH_ENCODE(); } + ENCODE(OP_Illusion) + { + ENCODE_LENGTH_EXACT(Illusion_Struct); + SETUP_DIRECT_ENCODE(Illusion_Struct, structs::Illusion_Struct); + + OUT(spawnid); + OUT_str(charname); + OUT(race); + eq->unknown006[0] = 0; + eq->unknown006[1] = 0; + OUT(gender); + OUT(texture); + OUT(helmtexture); + OUT(face); + OUT(hairstyle); + OUT(haircolor); + OUT(beard); + OUT(beardcolor); + OUT(size); + OUT(drakkin_heritage); + OUT(drakkin_tattoo); + OUT(drakkin_details); + + FINISH_ENCODE(); + } + + ENCODE(OP_MoneyOnCorpse) + { + ENCODE_LENGTH_EXACT(moneyOnCorpseStruct); + SETUP_DIRECT_ENCODE(moneyOnCorpseStruct, structs::moneyOnCorpseStruct); + + eq->type = emu->response; + OUT(platinum); + OUT(gold); + OUT(silver); + OUT(copper); + eq->flags = 0; + + FINISH_ENCODE(); + } + // DECODE methods DECODE(OP_EnterWorld) diff --git a/common/patches/laurion_ops.h b/common/patches/laurion_ops.h index 32061a224..4bd23d500 100644 --- a/common/patches/laurion_ops.h +++ b/common/patches/laurion_ops.h @@ -47,7 +47,8 @@ E(OP_RespondAA) E(OP_BlockedBuffs) E(OP_RemoveBlockedBuffs) E(OP_ZonePlayerToBind) - +E(OP_Illusion) +E(OP_MoneyOnCorpse) //list of packets we need to decode on the way in: D(OP_EnterWorld) D(OP_ZoneEntry) diff --git a/common/patches/laurion_structs.h b/common/patches/laurion_structs.h index fdbed24b1..051b16a96 100644 --- a/common/patches/laurion_structs.h +++ b/common/patches/laurion_structs.h @@ -810,6 +810,58 @@ namespace Laurion { /*025*/ uint32 unknown2; /*029*/ uint32 unknown3; }; + + struct ArmorPropertyStruct + { + /*000*/ uint32 type; + /*004*/ uint32 variation; + /*008*/ uint32 material; + /*012*/ uint32 newArmorID; + /*016*/ uint32 newArmorType; + /*020*/ + }; + + struct Illusion_Struct { + /*000*/ uint32 spawnid; + /*004*/ char charname[64]; + /*068*/ uint16 race; //according to eqlib this is s32 + /*070*/ char unknown006[2]; + /*072*/ uint8 gender; + /*073*/ uint8 texture; + /*074*/ uint8 armorVariation; + /*075*/ uint8 armorMaterial; + /*076*/ uint8 helmtexture; + /*077*/ uint8 unknown077; //padding from this being a pack(4) struct actually + /*078*/ uint8 unknown078; + /*079*/ uint8 unknown079; + /*080*/ uint32 face; + /*084*/ uint8 hairstyle; + /*085*/ uint8 haircolor; + /*086*/ uint8 beard; + /*087*/ uint8 beardcolor; + /*088*/ float size; + /*092*/ uint32_t npc_tint; + /*096*/ bool keep_armor_properties; + /*097*/ uint8 unknown097[3]; //padding from this being a pack(4) struct actually + /*100*/ ArmorPropertyStruct armorProperties[9]; + /*280*/ uint32_t armorTints[9]; + /*316*/ int32 class_; + /*320*/ uint32 drakkin_heritage; + /*324*/ uint32 drakkin_tattoo; + /*328*/ uint32 drakkin_details; + /*332*/ + }; + + struct moneyOnCorpseStruct { + /*000*/ uint8 type; + /*001*/ uint8 padding1[3]; + /*004*/ uint32 flags; + /*008*/ uint32 platinum; + /*012*/ uint32 gold; + /*016*/ uint32 silver; + /*020*/ uint32 copper; + /*024*/ + } #pragma pack() }; //end namespace structs diff --git a/utils/patches/patch_Laurion.conf b/utils/patches/patch_Laurion.conf index 08ac9c370..6c9d8c577 100644 --- a/utils/patches/patch_Laurion.conf +++ b/utils/patches/patch_Laurion.conf @@ -184,8 +184,8 @@ OP_Consider=0x53e3 OP_FormattedMessage=0x7f7f OP_SimpleMessage=0x1943 OP_Buff=0x6ce5 -OP_Illusion=0x0000 -OP_MoneyOnCorpse=0x0000 +OP_Illusion=0x5a3f +OP_MoneyOnCorpse=0x39d3 OP_RandomReply=0x0000 OP_DenyResponse=0x0000 OP_SkillUpdate=0x6735