diff --git a/FFXIVClassic Map Server/actors/chara/player/Player.cs b/FFXIVClassic Map Server/actors/chara/player/Player.cs index 9407a42a..e4c14a17 100644 --- a/FFXIVClassic Map Server/actors/chara/player/Player.cs +++ b/FFXIVClassic Map Server/actors/chara/player/Player.cs @@ -485,8 +485,8 @@ namespace FFXIVClassic_Map_Server.Actors //GetSpawnPackets(actorId, spawnType).DebugPrintPacket(); #region Groups - Group retainerGroup = new Group(0x800000000004e639, Group.RetainerGroup, null); - Group partyGroup = new Group(0x8000000000696df2, Group.PlayerPartyGroup, null); + RetainerGroup retainerGroup = new RetainerGroup(0x800000000004e639); + PartyGroup partyGroup = new PartyGroup(0x8000000000696df2); retainerGroup.add(this); partyGroup.add(this); retainerGroup.sendMemberPackets(this); diff --git a/FFXIVClassic Map Server/actors/group/Group.cs b/FFXIVClassic Map Server/actors/group/Group.cs index 767bcf76..9641d7d7 100644 --- a/FFXIVClassic Map Server/actors/group/Group.cs +++ b/FFXIVClassic Map Server/actors/group/Group.cs @@ -1,4 +1,5 @@ using FFXIVClassic.Common; +using FFXIVClassic_Map_Server.actors.group.work; using FFXIVClassic_Map_Server.Actors; using FFXIVClassic_Map_Server.packets.send.actor; using FFXIVClassic_Map_Server.packets.send.group; diff --git a/FFXIVClassic Map Server/actors/group/LinkshellGroup.cs b/FFXIVClassic Map Server/actors/group/LinkshellGroup.cs new file mode 100644 index 00000000..600aff58 --- /dev/null +++ b/FFXIVClassic Map Server/actors/group/LinkshellGroup.cs @@ -0,0 +1,42 @@ +using FFXIVClassic_Map_Server.actors.group.work; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FFXIVClassic_Map_Server.actors.group +{ + class LinkshellGroup : Group + { + private LinkshellWork linkshellWork; + + public LinkshellGroup(ulong id) : base(id, Group.CompanyGroup, null) + { + linkshellWork = new LinkshellWork(); + } + + public void setMaster(uint actorId) + { + linkshellWork._globalSave.master = (ulong)((0xB36F92 << 8) | actorId); + } + + public void setCrest(ushort crestId) + { + linkshellWork._globalSave.crestIcon[0] = crestId; + } + + public void setRank(byte rank = 1) + { + linkshellWork._globalSave.rank = rank; + } + + public void setMemberRank(int index, byte rank) + { + if (members.Count >= index) + return; + linkshellWork._memberSave[index].rank = rank; + } + + } +} diff --git a/FFXIVClassic Map Server/actors/group/PartyGroup.cs b/FFXIVClassic Map Server/actors/group/PartyGroup.cs new file mode 100644 index 00000000..2bdb9bac --- /dev/null +++ b/FFXIVClassic Map Server/actors/group/PartyGroup.cs @@ -0,0 +1,24 @@ +using FFXIVClassic_Map_Server.actors.group.work; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FFXIVClassic_Map_Server.actors.group +{ + class PartyGroup : Group + { + private PartyWork partyWork; + + public PartyGroup(ulong id) : base(id, Group.PlayerPartyGroup, null) + { + partyWork = new PartyWork(); + } + + public void setPartyOwner(uint actorId) + { + partyWork._globalTemp.owner = (ulong)((0xB36F92 << 8) | actorId); + } + } +} diff --git a/FFXIVClassic Map Server/actors/group/RetainerGroup.cs b/FFXIVClassic Map Server/actors/group/RetainerGroup.cs new file mode 100644 index 00000000..f4ffb9d8 --- /dev/null +++ b/FFXIVClassic Map Server/actors/group/RetainerGroup.cs @@ -0,0 +1,29 @@ +using FFXIVClassic_Map_Server.actors.group.work; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FFXIVClassic_Map_Server.actors.group +{ + class RetainerGroup : Group + { + private RetainerWork retainerWork; + + public RetainerGroup(ulong id) : base(id, Group.RetainerGroup, null) + { + retainerWork = new RetainerWork(); + } + + public void setRetainerProperties(int index, byte cdIDOffset, ushort placeName, byte condition, byte level) + { + if (members.Count >= index) + return; + retainerWork._memberSave[index].cdIDOffset = cdIDOffset; + retainerWork._memberSave[index].placeName = placeName; + retainerWork._memberSave[index].conditions = condition; + retainerWork._memberSave[index].level = level; + } + } +} diff --git a/FFXIVClassic Map Server/actors/group/ContentWork.cs b/FFXIVClassic Map Server/actors/group/work/ContentWork.cs similarity index 81% rename from FFXIVClassic Map Server/actors/group/ContentWork.cs rename to FFXIVClassic Map Server/actors/group/work/ContentWork.cs index a8a3ccd7..ab94d150 100644 --- a/FFXIVClassic Map Server/actors/group/ContentWork.cs +++ b/FFXIVClassic Map Server/actors/group/work/ContentWork.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace FFXIVClassic_Map_Server.actors.group +namespace FFXIVClassic_Map_Server.actors.group.work { class ContentWork { diff --git a/FFXIVClassic Map Server/actors/group/GroupGlobalSave.cs b/FFXIVClassic Map Server/actors/group/work/GroupGlobalSave.cs similarity index 58% rename from FFXIVClassic Map Server/actors/group/GroupGlobalSave.cs rename to FFXIVClassic Map Server/actors/group/work/GroupGlobalSave.cs index 1231f117..96c8b9fc 100644 --- a/FFXIVClassic Map Server/actors/group/GroupGlobalSave.cs +++ b/FFXIVClassic Map Server/actors/group/work/GroupGlobalSave.cs @@ -4,11 +4,12 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace FFXIVClassic_Map_Server.actors.group +namespace FFXIVClassic_Map_Server.actors.group.work { class GroupGlobalSave { public ulong master; - public byte[] crestIcon = new byte[4]; + public ushort[] crestIcon = new ushort[4]; + public byte rank = 1; } } diff --git a/FFXIVClassic Map Server/actors/group/GroupGlobalTemp.cs b/FFXIVClassic Map Server/actors/group/work/GroupGlobalTemp.cs similarity index 86% rename from FFXIVClassic Map Server/actors/group/GroupGlobalTemp.cs rename to FFXIVClassic Map Server/actors/group/work/GroupGlobalTemp.cs index 2a831dce..1e28479f 100644 --- a/FFXIVClassic Map Server/actors/group/GroupGlobalTemp.cs +++ b/FFXIVClassic Map Server/actors/group/work/GroupGlobalTemp.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace FFXIVClassic_Map_Server.actors.group +namespace FFXIVClassic_Map_Server.actors.group.work { class GroupGlobalTemp { diff --git a/FFXIVClassic Map Server/actors/group/GroupMemberSave.cs b/FFXIVClassic Map Server/actors/group/work/GroupMemberSave.cs similarity index 87% rename from FFXIVClassic Map Server/actors/group/GroupMemberSave.cs rename to FFXIVClassic Map Server/actors/group/work/GroupMemberSave.cs index 4b6160a0..21dc697e 100644 --- a/FFXIVClassic Map Server/actors/group/GroupMemberSave.cs +++ b/FFXIVClassic Map Server/actors/group/work/GroupMemberSave.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace FFXIVClassic_Map_Server.actors.group +namespace FFXIVClassic_Map_Server.actors.group.work { class GroupMemberSave { diff --git a/FFXIVClassic Map Server/actors/group/LinkshellWork.cs b/FFXIVClassic Map Server/actors/group/work/LinkshellWork.cs similarity index 85% rename from FFXIVClassic Map Server/actors/group/LinkshellWork.cs rename to FFXIVClassic Map Server/actors/group/work/LinkshellWork.cs index d2e5d6ce..dcd3ec25 100644 --- a/FFXIVClassic Map Server/actors/group/LinkshellWork.cs +++ b/FFXIVClassic Map Server/actors/group/work/LinkshellWork.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace FFXIVClassic_Map_Server.actors.group +namespace FFXIVClassic_Map_Server.actors.group.work { class LinkshellWork { diff --git a/FFXIVClassic Map Server/actors/group/PartyWork.cs b/FFXIVClassic Map Server/actors/group/work/PartyWork.cs similarity index 81% rename from FFXIVClassic Map Server/actors/group/PartyWork.cs rename to FFXIVClassic Map Server/actors/group/work/PartyWork.cs index c45a89a4..2dbf90cf 100644 --- a/FFXIVClassic Map Server/actors/group/PartyWork.cs +++ b/FFXIVClassic Map Server/actors/group/work/PartyWork.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace FFXIVClassic_Map_Server.actors.group +namespace FFXIVClassic_Map_Server.actors.group.work { class PartyWork { diff --git a/FFXIVClassic Map Server/actors/group/RelationWork.cs b/FFXIVClassic Map Server/actors/group/work/RelationWork.cs similarity index 81% rename from FFXIVClassic Map Server/actors/group/RelationWork.cs rename to FFXIVClassic Map Server/actors/group/work/RelationWork.cs index e0094492..d28a9c34 100644 --- a/FFXIVClassic Map Server/actors/group/RelationWork.cs +++ b/FFXIVClassic Map Server/actors/group/work/RelationWork.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace FFXIVClassic_Map_Server.actors.group +namespace FFXIVClassic_Map_Server.actors.group.work { class RelationWork { diff --git a/FFXIVClassic Map Server/actors/group/RetainerWork.cs b/FFXIVClassic Map Server/actors/group/work/RetainerWork.cs similarity index 81% rename from FFXIVClassic Map Server/actors/group/RetainerWork.cs rename to FFXIVClassic Map Server/actors/group/work/RetainerWork.cs index 49e1c7df..6a123661 100644 --- a/FFXIVClassic Map Server/actors/group/RetainerWork.cs +++ b/FFXIVClassic Map Server/actors/group/work/RetainerWork.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace FFXIVClassic_Map_Server.actors.group +namespace FFXIVClassic_Map_Server.actors.group.work { class RetainerWork {