Messed up the commit history, so here is all the files rip, Credit to TrinityCore

This commit is contained in:
hondacrx
2023-09-16 08:42:35 -04:00
parent 87284bbded
commit f636ea225f
373 changed files with 158910 additions and 2170 deletions
+131 -46
View File
@@ -82,17 +82,11 @@ namespace Game
return;
}
Group group = invitingPlayer.GetGroup();
if (group != null && group.IsBGGroup())
group = invitingPlayer.GetOriginalGroup();
Group group = invitingPlayer.GetGroup(packet.PartyIndex);
if (group == null)
group = invitingPlayer.GetGroupInvite();
Group group2 = invitedPlayer.GetGroup();
if (group2 != null && group2.IsBGGroup())
group2 = invitedPlayer.GetOriginalGroup();
Group group2 = invitedPlayer.GetGroup(packet.PartyIndex);
PartyInvite partyInvite;
// player already in another group or invited
if (group2 || invitedPlayer.GetGroupInvite())
@@ -161,7 +155,10 @@ namespace Game
void HandlePartyInviteResponse(PartyInviteResponse packet)
{
Group group = GetPlayer().GetGroupInvite();
if (!group)
if (group == null)
return;
if (packet.PartyIndex != 0 && group.GetGroupCategory() != (GroupCategory)packet.PartyIndex)
return;
if (packet.Accept)
@@ -235,14 +232,14 @@ namespace Game
return;
}
PartyResult res = GetPlayer().CanUninviteFromGroup(packet.TargetGUID);
PartyResult res = GetPlayer().CanUninviteFromGroup(packet.TargetGUID, packet.PartyIndex);
if (res != PartyResult.Ok)
{
SendPartyResult(PartyOperation.UnInvite, "", res);
return;
}
Group grp = GetPlayer().GetGroup();
Group grp = GetPlayer().GetGroup(packet.PartyIndex);
// grp is checked already above in CanUninviteFromGroup()
Cypher.Assert(grp);
@@ -265,7 +262,7 @@ namespace Game
void HandleSetPartyLeader(SetPartyLeader packet)
{
Player player = Global.ObjAccessor.FindConnectedPlayer(packet.TargetGUID);
Group group = GetPlayer().GetGroup();
Group group = GetPlayer().GetGroup(packet.PartyIndex);
if (!group || !player)
return;
@@ -274,7 +271,7 @@ namespace Game
return;
// Everything's fine, accepted.
group.ChangeLeader(packet.TargetGUID, packet.PartyIndex);
group.ChangeLeader(packet.TargetGUID);
group.SendUpdate();
}
@@ -283,12 +280,12 @@ namespace Game
{
RoleChangedInform roleChangedInform = new();
Group group = GetPlayer().GetGroup();
Group group = GetPlayer().GetGroup(packet.PartyIndex);
byte oldRole = (byte)(group ? group.GetLfgRoles(packet.TargetGUID) : 0);
if (oldRole == packet.Role)
return;
roleChangedInform.PartyIndex = packet.PartyIndex;
roleChangedInform.PartyIndex = (byte)group.GetGroupCategory();
roleChangedInform.From = GetPlayer().GetGUID();
roleChangedInform.ChangedUnit = packet.TargetGUID;
roleChangedInform.OldRole = oldRole;
@@ -306,7 +303,7 @@ namespace Game
[WorldPacketHandler(ClientOpcodes.LeaveGroup)]
void HandleLeaveGroup(LeaveGroup packet)
{
Group grp = GetPlayer().GetGroup();
Group grp = GetPlayer().GetGroup(packet.PartyIndex);
Group grpInvite = GetPlayer().GetGroupInvite();
if (grp == null && grpInvite == null)
return;
@@ -338,7 +335,7 @@ namespace Game
{
// not allowed to change
/*
Group group = GetPlayer().GetGroup();
Group group = GetPlayer().GetGroup(packet.PartyIndex);
if (!group)
return;
@@ -376,14 +373,15 @@ namespace Game
[WorldPacketHandler(ClientOpcodes.MinimapPing)]
void HandleMinimapPing(MinimapPingClient packet)
{
if (!GetPlayer().GetGroup())
Group group = GetPlayer().GetGroup(packet.PartyIndex);
if (group == null)
return;
MinimapPing minimapPing = new();
minimapPing.Sender = GetPlayer().GetGUID();
minimapPing.PositionX = packet.PositionX;
minimapPing.PositionY = packet.PositionY;
GetPlayer().GetGroup().BroadcastPacket(minimapPing, true, -1, GetPlayer().GetGUID());
group.BroadcastPacket(minimapPing, true, -1, GetPlayer().GetGUID());
}
[WorldPacketHandler(ClientOpcodes.RandomRoll)]
@@ -398,12 +396,12 @@ namespace Game
[WorldPacketHandler(ClientOpcodes.UpdateRaidTarget)]
void HandleUpdateRaidTarget(UpdateRaidTarget packet)
{
Group group = GetPlayer().GetGroup();
if (!group)
Group group = GetPlayer().GetGroup(packet.PartyIndex);
if (group == null)
return;
if (packet.Symbol == -1) // target icon request
group.SendTargetIconList(this, packet.PartyIndex);
group.SendTargetIconList(this);
else // target icon update
{
if (group.IsRaidGroup() && !group.IsLeader(GetPlayer().GetGUID()) && !group.IsAssistant(GetPlayer().GetGUID()))
@@ -416,7 +414,7 @@ namespace Game
return;
}
group.SetTargetIcon((byte)packet.Symbol, packet.Target, GetPlayer().GetGUID(), packet.PartyIndex);
group.SetTargetIcon((byte)packet.Symbol, packet.Target, GetPlayer().GetGUID());
}
}
@@ -447,20 +445,20 @@ namespace Game
[WorldPacketHandler(ClientOpcodes.RequestPartyJoinUpdates)]
void HandleRequestPartyJoinUpdates(RequestPartyJoinUpdates packet)
{
Group group = GetPlayer().GetGroup();
if (!group)
Group group = GetPlayer().GetGroup(packet.PartyIndex);
if (group == null)
return;
group.SendTargetIconList(this, packet.PartyIndex);
group.SendRaidMarkersChanged(this, packet.PartyIndex);
group.SendTargetIconList(this);
group.SendRaidMarkersChanged(this);
}
[WorldPacketHandler(ClientOpcodes.ChangeSubGroup, Processing = PacketProcessing.ThreadUnsafe)]
void HandleChangeSubGroup(ChangeSubGroup packet)
{
// we will get correct for group here, so we don't have to check if group is BG raid
Group group = GetPlayer().GetGroup();
if (!group)
Group group = GetPlayer().GetGroup(packet.PartyIndex);
if (group == null)
return;
if (packet.NewSubGroup >= MapConst.MaxRaidSubGroups)
@@ -479,8 +477,8 @@ namespace Game
[WorldPacketHandler(ClientOpcodes.SwapSubGroups, Processing = PacketProcessing.ThreadUnsafe)]
void HandleSwapSubGroups(SwapSubGroups packet)
{
Group group = GetPlayer().GetGroup();
if (!group)
Group group = GetPlayer().GetGroup(packet.PartyIndex);
if (group == null)
return;
ObjectGuid senderGuid = GetPlayer().GetGUID();
@@ -493,8 +491,8 @@ namespace Game
[WorldPacketHandler(ClientOpcodes.SetAssistantLeader)]
void HandleSetAssistantLeader(SetAssistantLeader packet)
{
Group group = GetPlayer().GetGroup();
if (!group)
Group group = GetPlayer().GetGroup(packet.PartyIndex);
if (group == null)
return;
if (!group.IsLeader(GetPlayer().GetGUID()))
@@ -506,8 +504,8 @@ namespace Game
[WorldPacketHandler(ClientOpcodes.SetPartyAssignment)]
void HandleSetPartyAssignment(SetPartyAssignment packet)
{
Group group = GetPlayer().GetGroup();
if (!group)
Group group = GetPlayer().GetGroup(packet.PartyIndex);
if (group == null)
return;
ObjectGuid senderGuid = GetPlayer().GetGUID();
@@ -532,8 +530,8 @@ namespace Game
[WorldPacketHandler(ClientOpcodes.DoReadyCheck)]
void HandleDoReadyCheckOpcode(DoReadyCheck packet)
{
Group group = GetPlayer().GetGroup();
if (!group)
Group group = GetPlayer().GetGroup(packet.PartyIndex);
if (group == null)
return;
/** error handling **/
@@ -541,14 +539,14 @@ namespace Game
return;
// everything's fine, do it
group.StartReadyCheck(GetPlayer().GetGUID(), packet.PartyIndex, TimeSpan.FromMilliseconds(MapConst.ReadycheckDuration));
group.StartReadyCheck(GetPlayer().GetGUID(), TimeSpan.FromMilliseconds(MapConst.ReadycheckDuration));
}
[WorldPacketHandler(ClientOpcodes.ReadyCheckResponse, Processing = PacketProcessing.Inplace)]
void HandleReadyCheckResponseOpcode(ReadyCheckResponseClient packet)
{
Group group = GetPlayer().GetGroup();
if (!group)
Group group = GetPlayer().GetGroup(packet.PartyIndex);
if (group == null)
return;
// everything's fine, do it
@@ -596,8 +594,8 @@ namespace Game
[WorldPacketHandler(ClientOpcodes.InitiateRolePoll)]
void HandleInitiateRolePoll(InitiateRolePoll packet)
{
Group group = GetPlayer().GetGroup();
if (!group)
Group group = GetPlayer().GetGroup(packet.PartyIndex);
if (group == null)
return;
ObjectGuid guid = GetPlayer().GetGUID();
@@ -606,15 +604,15 @@ namespace Game
RolePollInform rolePollInform = new();
rolePollInform.From = guid;
rolePollInform.PartyIndex = packet.PartyIndex;
rolePollInform.PartyIndex = (sbyte)group.GetGroupCategory();
group.BroadcastPacket(rolePollInform, true);
}
[WorldPacketHandler(ClientOpcodes.SetEveryoneIsAssistant)]
void HandleSetEveryoneIsAssistant(SetEveryoneIsAssistant packet)
{
Group group = GetPlayer().GetGroup();
if (!group)
Group group = GetPlayer().GetGroup(packet.PartyIndex);
if (group == null)
return;
if (!group.IsLeader(GetPlayer().GetGUID()))
@@ -627,7 +625,7 @@ namespace Game
void HandleClearRaidMarker(ClearRaidMarker packet)
{
Group group = GetPlayer().GetGroup();
if (!group)
if (group == null)
return;
if (group.IsRaidGroup() && !group.IsLeader(GetPlayer().GetGUID()) && !group.IsAssistant(GetPlayer().GetGUID()))
@@ -635,5 +633,92 @@ namespace Game
group.DeleteRaidMarker(packet.MarkerId);
}
bool CanSendPing(Player player, PingSubjectType type, ref Group group)
{
if (type >= PingSubjectType.Max)
return false;
if (!player.GetSession().CanSpeak())
return false;
group = player.GetGroup();
if (!group)
return false;
if (group.IsRestrictPingsToAssistants() && !group.IsLeader(player.GetGUID()) && !group.IsAssistant(player.GetGUID()))
return false;
return true;
}
[WorldPacketHandler(ClientOpcodes.SetRestrictPingsToAssistants)]
void HandleSetRestrictPingsToAssistants(SetRestrictPingsToAssistants setRestrictPingsToAssistants)
{
Group group = GetPlayer().GetGroup(setRestrictPingsToAssistants.PartyIndex);
if (!group)
return;
if (!group.IsLeader(GetPlayer().GetGUID()))
return;
group.SetRestrictPingsToAssistants(setRestrictPingsToAssistants.RestrictPingsToAssistants);
}
[WorldPacketHandler(ClientOpcodes.SendPingUnit)]
void HandleSendPingUnit(SendPingUnit pingUnit)
{
Group group = null;
if (!CanSendPing(_player, pingUnit.Type, ref group))
return;
Unit target = Global.ObjAccessor.GetUnit(_player, pingUnit.TargetGUID);
if (!target || !_player.HaveAtClient(target))
return;
ReceivePingUnit broadcastPingUnit = new();
broadcastPingUnit.SenderGUID = _player.GetGUID();
broadcastPingUnit.TargetGUID = pingUnit.TargetGUID;
broadcastPingUnit.Type = pingUnit.Type;
broadcastPingUnit.PinFrameID = pingUnit.PinFrameID;
broadcastPingUnit.Write();
for (GroupReference itr = group.GetFirstMember(); itr != null; itr = itr.Next())
{
Player member = itr.GetSource();
if (_player == member || !_player.IsInMap(member))
continue;
member.SendPacket(broadcastPingUnit);
}
}
[WorldPacketHandler(ClientOpcodes.SendPingWorldPoint)]
void HandleSendPingWorldPoint(SendPingWorldPoint pingWorldPoint)
{
Group group = null;
if (!CanSendPing(_player, pingWorldPoint.Type, ref group))
return;
if (_player.GetMapId() != pingWorldPoint.MapID)
return;
ReceivePingWorldPoint broadcastPingWorldPoint = new();
broadcastPingWorldPoint.SenderGUID = _player.GetGUID();
broadcastPingWorldPoint.MapID = pingWorldPoint.MapID;
broadcastPingWorldPoint.Point = pingWorldPoint.Point;
broadcastPingWorldPoint.Type = pingWorldPoint.Type;
broadcastPingWorldPoint.PinFrameID = pingWorldPoint.PinFrameID;
broadcastPingWorldPoint.Write();
for (GroupReference itr = group.GetFirstMember(); itr != null; itr = itr.Next())
{
Player member = itr.GetSource();
if (_player == member || !_player.IsInMap(member))
continue;
member.SendPacket(broadcastPingWorldPoint);
}
}
}
}
+10
View File
@@ -38,6 +38,16 @@ namespace Game
if (v.Value != PlayerSpellState.Removed)
inspectResult.Talents.Add((ushort)v.Key);
}
var pvpTalents = player.GetPvpTalentMap(player.GetActiveTalentGroup());
for (int i = 0; i < pvpTalents.Length; ++i)
inspectResult.PvpTalents[i] = (ushort)pvpTalents[i];
inspectResult.TalentTraits.Level = (int)player.GetLevel();
inspectResult.TalentTraits.ChrSpecializationID = (int)player.GetPrimarySpecialization();
TraitConfig traitConfig = player.GetTraitConfig((int)(uint)player.m_activePlayerData.ActiveCombatTraitConfigID);
if (traitConfig != null)
inspectResult.TalentTraits.Config = new TraitConfigPacket(traitConfig);
}
Guild guild = Global.GuildMgr.GetGuildById(player.GetGuildId());
+2 -2
View File
@@ -265,7 +265,7 @@ namespace Game
foreach (var dungeonId in updateData.dungeons)
lfgUpdateStatus.Slots.Add(Global.LFGMgr.GetLFGDungeonEntry(dungeonId));
lfgUpdateStatus.RequestedRoles = (uint)Global.LFGMgr.GetRoles(_player.GetGUID());
lfgUpdateStatus.RequestedRoles = (byte)Global.LFGMgr.GetRoles(_player.GetGUID());
//lfgUpdateStatus.SuspendedPlayers;
lfgUpdateStatus.IsParty = party;
lfgUpdateStatus.NotifyUI = true;
@@ -480,7 +480,7 @@ namespace Game
foreach (var pair in proposal.players)
{
var proposalPlayer = new LFGProposalUpdatePlayer();
proposalPlayer.Roles = (uint)pair.Value.role;
proposalPlayer.Roles = (byte)pair.Value.role;
proposalPlayer.Me = (pair.Key == playerGuid);
proposalPlayer.MyParty = !pair.Value.group.IsEmpty() && pair.Value.group == proposal.group;
proposalPlayer.SameParty = !pair.Value.group.IsEmpty() && pair.Value.group == guildGuid;
+3
View File
@@ -138,6 +138,9 @@ namespace Game
if (opcode == ClientOpcodes.MoveFallLand || opcode == ClientOpcodes.MoveStartSwim || opcode == ClientOpcodes.MoveSetFly)
mover.RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags.LandingOrFlight); // Parachutes
if (opcode == ClientOpcodes.MoveSetFly || opcode == ClientOpcodes.MoveSetAdvFly)
_player.UnsummonPetTemporaryIfAny(); // always do the pet removal on current client activeplayer only
movementInfo.Guid = mover.GetGUID();
movementInfo.Time = AdjustClientMovementTime(movementInfo.Time);
mover.m_movementInfo = movementInfo;
+3
View File
@@ -40,6 +40,9 @@ namespace Game
[WorldPacketHandler(ClientOpcodes.PetAction)]
void HandlePetAction(PetAction packet)
{
if (_player.IsMounted())
return;
ObjectGuid guid1 = packet.PetGUID; //pet guid
ObjectGuid guid2 = packet.TargetGUID; //tag guid