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:
@@ -22,11 +22,11 @@ using Game.DataStorage;
|
|||||||
using Game.Entities;
|
using Game.Entities;
|
||||||
using Game.Groups;
|
using Game.Groups;
|
||||||
using Game.Maps;
|
using Game.Maps;
|
||||||
|
using Game.Networking.Packets;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using Game.Networking.Packets;
|
|
||||||
|
|
||||||
namespace Game.DungeonFinding
|
namespace Game.DungeonFinding
|
||||||
{
|
{
|
||||||
@@ -1052,6 +1052,15 @@ namespace Game.DungeonFinding
|
|||||||
break;
|
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);
|
SetState(pguid, LfgState.Dungeon);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1374,7 +1383,15 @@ namespace Game.DungeonFinding
|
|||||||
|
|
||||||
// Update achievements
|
// Update achievements
|
||||||
if (dungeon.difficulty == Difficulty.Heroic)
|
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());
|
LfgReward reward = GetRandomDungeonReward(rDungeonId, player.GetLevel());
|
||||||
if (reward == null)
|
if (reward == null)
|
||||||
|
|||||||
@@ -116,6 +116,16 @@ namespace Game.DungeonFinding
|
|||||||
return m_SelectedDungeons;
|
return m_SelectedDungeons;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetNumberOfPartyMembersAtJoin(byte count)
|
||||||
|
{
|
||||||
|
m_NumberOfPartyMembersAtJoin = count;
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte GetNumberOfPartyMembersAtJoin()
|
||||||
|
{
|
||||||
|
return m_NumberOfPartyMembersAtJoin;
|
||||||
|
}
|
||||||
|
|
||||||
// General
|
// General
|
||||||
RideTicket m_Ticket;
|
RideTicket m_Ticket;
|
||||||
LfgState m_State;
|
LfgState m_State;
|
||||||
@@ -127,5 +137,8 @@ namespace Game.DungeonFinding
|
|||||||
// Queue
|
// Queue
|
||||||
LfgRoles m_Roles;
|
LfgRoles m_Roles;
|
||||||
List<uint> m_SelectedDungeons = new();
|
List<uint> m_SelectedDungeons = new();
|
||||||
|
|
||||||
|
// Achievement-related
|
||||||
|
byte m_NumberOfPartyMembersAtJoin;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user