diff --git a/FFXIVClassic World Server/DataObjects/Group/Relation.cs b/FFXIVClassic World Server/DataObjects/Group/Relation.cs index c257cf2c..efccd8cd 100644 --- a/FFXIVClassic World Server/DataObjects/Group/Relation.cs +++ b/FFXIVClassic World Server/DataObjects/Group/Relation.cs @@ -1,4 +1,5 @@ using FFXIVClassic.Common; +using FFXIVClassic_World_Server.Actor.Group.Work; using FFXIVClassic_World_Server.Packets.Send.Subpackets.Groups; using System; using System.Collections.Generic; @@ -10,14 +11,14 @@ namespace FFXIVClassic_World_Server.DataObjects.Group { class Relation : Group { - public uint charaHost, charaOther; - public uint command; + public RelationWork work = new RelationWork(); + public uint charaOther; public Relation(ulong groupIndex, uint host, uint other, uint command) : base (groupIndex) { - this.charaHost = host; this.charaOther = other; - this.command = command; + work._globalTemp.host = ((ulong)host << 32) | (0xc17909); + work._globalTemp.variableCommand = command; } public override int GetMemberCount() @@ -33,7 +34,10 @@ namespace FFXIVClassic_World_Server.DataObjects.Group public override List BuildMemberList() { List groupMembers = new List(); - groupMembers.Add(new GroupMember(charaHost, -1, 0, false, Server.GetServer().GetSession(charaHost) != null, Server.GetServer().GetNameForId(charaHost))); + + uint hostId = (uint)((work._globalTemp.host >> 32) & 0xFFFFFFFF); + + groupMembers.Add(new GroupMember(hostId, -1, 0, false, Server.GetServer().GetSession(hostId) != null, Server.GetServer().GetNameForId(hostId))); groupMembers.Add(new GroupMember(charaOther, -1, 0, false, Server.GetServer().GetSession(charaOther) != null, Server.GetServer().GetNameForId(charaOther))); return groupMembers; } diff --git a/FFXIVClassic World Server/RelationGroupManager.cs b/FFXIVClassic World Server/RelationGroupManager.cs index 974a950f..7c211bce 100644 --- a/FFXIVClassic World Server/RelationGroupManager.cs +++ b/FFXIVClassic World Server/RelationGroupManager.cs @@ -18,7 +18,7 @@ namespace FFXIVClassic_World_Server mCurrentWorldGroupsReference = worldGroupList; } - public void CreateRelationGroup(uint hostCharaId, uint otherCharaId, uint command) + public Relation CreateRelationGroup(uint hostCharaId, uint otherCharaId, uint command) { lock (mGroupLockReference) { @@ -27,6 +27,7 @@ namespace FFXIVClassic_World_Server mRelationList.Add(groupIndex, relation); mCurrentWorldGroupsReference.Add(groupIndex, relation); mWorldManager.IncrementGroupIndex(); + return relation; } } diff --git a/FFXIVClassic World Server/WorldMaster.cs b/FFXIVClassic World Server/WorldMaster.cs index ae0d7c83..d1875e04 100644 --- a/FFXIVClassic World Server/WorldMaster.cs +++ b/FFXIVClassic World Server/WorldMaster.cs @@ -215,6 +215,8 @@ namespace FFXIVClassic_World_Server List linkshells = mLinkshellManager.GetPlayerLinkshellMembership(session.sessionId); foreach (Linkshell ls in linkshells) ls.SendGroupPackets(session); + + mRelationGroupManager.CreateRelationGroup(157, session.sessionId, 0x2711).SendGroupPackets(session); } private void SendMotD(Session session)