Core/Graveyards: Drop Faction column and replace it with conditions
Port From (https://github.com/TrinityCore/TrinityCore/commit/c1df555e1691d788918845f95252358f25e54bb5)
This commit is contained in:
@@ -5,6 +5,7 @@ using Framework.Collections;
|
||||
using Framework.Constants;
|
||||
using Framework.Database;
|
||||
using Game.Cache;
|
||||
using Game.Conditions;
|
||||
using Game.DataStorage;
|
||||
using Game.Entities;
|
||||
using Game.Groups;
|
||||
@@ -2403,13 +2404,16 @@ namespace Game
|
||||
uint team = (uint)GetPlayer().GetTeam();
|
||||
|
||||
List<uint> graveyardIds = new();
|
||||
var range = Global.ObjectMgr.GraveYardStorage.LookupByKey(zoneId);
|
||||
var range = Global.ObjectMgr.GraveyardStorage.LookupByKey(zoneId);
|
||||
|
||||
for (uint i = 0; i < range.Count && graveyardIds.Count < 16; ++i) // client max
|
||||
{
|
||||
var gYard = range[(int)i];
|
||||
if (gYard.team == 0 || gYard.team == team)
|
||||
graveyardIds.Add(i);
|
||||
ConditionSourceInfo conditionSource = new(_player);
|
||||
if (!Global.ConditionMgr.IsObjectMeetToConditions(conditionSource, gYard.Conditions))
|
||||
continue;
|
||||
|
||||
graveyardIds.Add(i);
|
||||
}
|
||||
|
||||
if (graveyardIds.Empty())
|
||||
|
||||
@@ -260,7 +260,7 @@ namespace Game
|
||||
WorldLocation corpseLocation = GetPlayer().GetCorpseLocation();
|
||||
if (GetPlayer().HasCorpse())
|
||||
{
|
||||
corpseGrave = Global.ObjectMgr.GetClosestGraveYard(corpseLocation, GetPlayer().GetTeam(), GetPlayer());
|
||||
corpseGrave = Global.ObjectMgr.GetClosestGraveyard(corpseLocation, GetPlayer().GetTeam(), GetPlayer());
|
||||
}
|
||||
|
||||
// now can spawn bones
|
||||
@@ -269,7 +269,7 @@ namespace Game
|
||||
// teleport to nearest from corpse graveyard, if different from nearest to player ghost
|
||||
if (corpseGrave != null)
|
||||
{
|
||||
WorldSafeLocsEntry ghostGrave = Global.ObjectMgr.GetClosestGraveYard(GetPlayer(), GetPlayer().GetTeam(), GetPlayer());
|
||||
WorldSafeLocsEntry ghostGrave = Global.ObjectMgr.GetClosestGraveyard(GetPlayer(), GetPlayer().GetTeam(), GetPlayer());
|
||||
|
||||
if (corpseGrave != ghostGrave)
|
||||
GetPlayer().TeleportTo(corpseGrave.Loc);
|
||||
|
||||
Reference in New Issue
Block a user