Core/RDF: fix counting issue with the achievement Looking for More (and similar)

Port From (https://github.com/TrinityCore/TrinityCore/commit/01be9f44af0687f03c34f0221dc285ec22803969)
This commit is contained in:
hondacrx
2021-12-17 19:46:25 -05:00
parent 3bae896803
commit 47ddf51999
2 changed files with 32 additions and 2 deletions
+19 -2
View File
@@ -22,11 +22,11 @@ using Game.DataStorage;
using Game.Entities;
using Game.Groups;
using Game.Maps;
using Game.Networking.Packets;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Game.Networking.Packets;
namespace Game.DungeonFinding
{
@@ -1052,6 +1052,15 @@ namespace Game.DungeonFinding
break;
}
// Store the number of players that were present in group when joining RFD, used for achievement purposes
Player _player = Global.ObjAccessor.FindConnectedPlayer(pguid);
if (_player != null)
{
Group group = _player.GetGroup();
if (group != null)
PlayersStore[pguid].SetNumberOfPartyMembersAtJoin((byte)group.GetMembersCount());
}
SetState(pguid, LfgState.Dungeon);
}
@@ -1374,7 +1383,15 @@ namespace Game.DungeonFinding
// Update achievements
if (dungeon.difficulty == Difficulty.Heroic)
player.UpdateCriteria(CriteriaType.CompletedLFGDungeonWithStrangers, 1);
{
byte lfdRandomPlayers = 0;
byte numParty = PlayersStore[guid].GetNumberOfPartyMembersAtJoin();
if (numParty != 0)
lfdRandomPlayers = (byte)(5 - numParty);
else
lfdRandomPlayers = 4;
player.UpdateCriteria(CriteriaType.CompletedLFGDungeonWithStrangers, lfdRandomPlayers);
}
LfgReward reward = GetRandomDungeonReward(rDungeonId, player.GetLevel());
if (reward == null)
@@ -116,6 +116,16 @@ namespace Game.DungeonFinding
return m_SelectedDungeons;
}
public void SetNumberOfPartyMembersAtJoin(byte count)
{
m_NumberOfPartyMembersAtJoin = count;
}
public byte GetNumberOfPartyMembersAtJoin()
{
return m_NumberOfPartyMembersAtJoin;
}
// General
RideTicket m_Ticket;
LfgState m_State;
@@ -127,5 +137,8 @@ namespace Game.DungeonFinding
// Queue
LfgRoles m_Roles;
List<uint> m_SelectedDungeons = new();
// Achievement-related
byte m_NumberOfPartyMembersAtJoin;
}
}