Core/Objects: use the actual collision height of players and creatures to get more accurate liquid status results
Port From (https://github.com/TrinityCore/TrinityCore/commit/d5daa2ad49a5a5d23ec4fae7508998ff9b1b6ad1)
This commit is contained in:
@@ -823,7 +823,13 @@ namespace Game.Entities
|
||||
Log.outError(LogFilter.Unit, $"Creature.Create: given coordinates for creature (guidlow {guidlow}, entry {entry}) are not valid ({pos})");
|
||||
return false;
|
||||
}
|
||||
UpdatePositionData();
|
||||
|
||||
{
|
||||
// area/zone id is needed immediately for ZoneScript::GetCreatureEntry hook before it is known which creature template to load (no model/scale available yet)
|
||||
PositionFullTerrainStatus positionData = new();
|
||||
GetMap().GetFullTerrainStatusForPosition(GetPhaseShift(), GetPositionX(), GetPositionY(), GetPositionZ(), positionData, LiquidHeaderTypeFlags.AllLiquids, MapConst.DefaultCollesionHeight);
|
||||
ProcessPositionDataChanged(positionData);
|
||||
}
|
||||
|
||||
// Allow players to see those units while dead, do it here (mayby altered by addon auras)
|
||||
if (cinfo.TypeFlags.HasAnyFlag(CreatureTypeFlags.GhostVisible))
|
||||
|
||||
@@ -115,7 +115,7 @@ namespace Game.Entities
|
||||
public void UpdatePositionData()
|
||||
{
|
||||
PositionFullTerrainStatus data = new();
|
||||
GetMap().GetFullTerrainStatusForPosition(_phaseShift, GetPositionX(), GetPositionY(), GetPositionZ(), data, LiquidHeaderTypeFlags.AllLiquids);
|
||||
GetMap().GetFullTerrainStatusForPosition(_phaseShift, GetPositionX(), GetPositionY(), GetPositionZ(), data, LiquidHeaderTypeFlags.AllLiquids, GetCollisionHeight());
|
||||
ProcessPositionDataChanged(data);
|
||||
}
|
||||
|
||||
|
||||
@@ -213,8 +213,6 @@ namespace Game.Entities
|
||||
}
|
||||
}
|
||||
|
||||
UpdatePositionData();
|
||||
|
||||
// set initial homebind position
|
||||
SetHomebind(this, GetAreaId());
|
||||
|
||||
@@ -236,6 +234,7 @@ namespace Game.Entities
|
||||
SetGender(createInfo.Sex);
|
||||
SetPowerType(powertype);
|
||||
InitDisplayIds();
|
||||
UpdatePositionData();
|
||||
if ((RealmType)WorldConfig.GetIntValue(WorldCfg.GameType) == RealmType.PVP || (RealmType)WorldConfig.GetIntValue(WorldCfg.GameType) == RealmType.RPPVP)
|
||||
{
|
||||
AddPvpFlag(UnitPVPStateFlags.PvP);
|
||||
|
||||
Reference in New Issue
Block a user