diff --git a/common/eq_packet_structs.h b/common/eq_packet_structs.h index 8c091ebea..93170c0a7 100644 --- a/common/eq_packet_structs.h +++ b/common/eq_packet_structs.h @@ -47,6 +47,13 @@ static const uint32 ADVANCED_LORE_LENGTH = 8192; */ #pragma pack(1) +struct EqGuid +{ + uint32_t Id; + uint16_t WorldId; + uint16_t Reserved; +}; + struct LoginInfo_Struct { /*000*/ char login_info[64]; /*064*/ uint8 unknown064[124]; @@ -324,6 +331,7 @@ union bool guild_show; bool trader; bool buyer; + EqGuid CharacterGuid; }; struct PlayerState_Struct { @@ -6436,13 +6444,6 @@ struct BuylineItemDetails_Struct { uint32 item_quantity; }; -struct EqGuid -{ - uint32_t Id; - uint16_t WorldId; - uint16_t Reserved; -}; - // Restore structure packing to default #pragma pack() diff --git a/zone/mob.cpp b/zone/mob.cpp index a06dbc743..ef544c671 100644 --- a/zone/mob.cpp +++ b/zone/mob.cpp @@ -1275,6 +1275,14 @@ void Mob::FillSpawnStruct(NewSpawn_Struct* ns, Mob* ForWho) strcpy(ns->spawn.name, name); if(IsClient()) { strn0cpy(ns->spawn.lastName, lastname, sizeof(ns->spawn.lastName)); + ns->spawn.CharacterGuid.Id = CastToClient()->CharacterID(); + ns->spawn.CharacterGuid.WorldId = RuleI(World, Id); + ns->spawn.CharacterGuid.Reserved = 0; + } + else { + ns->spawn.CharacterGuid.Id = 0; + ns->spawn.CharacterGuid.WorldId = 0; + ns->spawn.CharacterGuid.Reserved = 0; } ns->spawn.heading = FloatToEQ12(m_Position.w);