Fixes crashes when character dies, and when teleporting.
This commit is contained in:
@@ -1267,7 +1267,6 @@ namespace Game.Entities
|
||||
public UpdateFieldArray<int> BonusResistanceMods = new(7, 195, 203);
|
||||
public UpdateFieldArray<int> ManaCostModifier = new(7, 195, 210);
|
||||
|
||||
|
||||
public UnitData() : base(0, TypeId.Unit, ChangeMaskLength) { }
|
||||
|
||||
public void WriteCreate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Unit owner, Player receiver)
|
||||
@@ -1408,7 +1407,7 @@ namespace Game.Entities
|
||||
data.WriteUInt32(BaseHealth);
|
||||
|
||||
data.WriteUInt8(SheatheState);
|
||||
data.WriteUInt8((byte)GetViewerDependentPvpFlags(this, owner, receiver));
|
||||
data.WriteUInt8(GetViewerDependentPvpFlags(this, owner, receiver));
|
||||
data.WriteUInt8(PetFlags);
|
||||
data.WriteUInt8(ShapeshiftForm);
|
||||
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag.Owner))
|
||||
@@ -2890,7 +2889,7 @@ namespace Game.Entities
|
||||
|
||||
public void WriteUpdate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Player owner, Player receiver)
|
||||
{
|
||||
UpdateMask allowedMaskForTarget = new(261, [0xFFFFFFDDu, 0x00003FFFu, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xC0000000u, 0xFFFFFFFFu, 0x00001FFFu]);
|
||||
UpdateMask allowedMaskForTarget = new(269, [0xFFFFFFDDu, 0x00003FFFu, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xC0000000u, 0xFFFFFFFFu, 0x00001FFFu]);
|
||||
AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
|
||||
WriteUpdate(data, _changesMask & allowedMaskForTarget, false, owner, receiver);
|
||||
}
|
||||
@@ -2898,12 +2897,12 @@ namespace Game.Entities
|
||||
public void AppendAllowedFieldsMaskForFlag(UpdateMask allowedMaskForTarget, UpdateFieldFlag fieldVisibilityFlags)
|
||||
{
|
||||
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag.PartyMember))
|
||||
allowedMaskForTarget.OR(new UpdateMask(261, new[] { 0x00000022u, 0xFFFFC000u, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0x3FFFFFFFu, 0x00000000u, 0x00000000u }));
|
||||
allowedMaskForTarget.OR(new UpdateMask(269, new[] { 0x00000022u, 0xFFFFC000u, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0x3FFFFFFFu, 0x00000000u, 0x00000000u }));
|
||||
}
|
||||
|
||||
public void FilterDisallowedFieldsMaskForFlag(UpdateMask changesMask, UpdateFieldFlag fieldVisibilityFlags)
|
||||
{
|
||||
UpdateMask allowedMaskForTarget = new(261, new[] { 0xFFFFFFDDu, 0x00003FFFu, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xC0000000u, 0xFFFFFFFFu, 0x00001FFFu });
|
||||
UpdateMask allowedMaskForTarget = new(269, new[] { 0xFFFFFFDDu, 0x00003FFFu, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xC0000000u, 0xFFFFFFFFu, 0x00001FFFu });
|
||||
AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
|
||||
changesMask.AND(allowedMaskForTarget);
|
||||
}
|
||||
@@ -3064,15 +3063,15 @@ namespace Game.Entities
|
||||
}
|
||||
if (changesMask[19])
|
||||
{
|
||||
data.WriteUInt32(Inebriation);
|
||||
data.WriteUInt8(Inebriation);
|
||||
}
|
||||
if (changesMask[20])
|
||||
{
|
||||
data.WriteInt32(PvpTitle);
|
||||
data.WriteUInt8(PvpTitle);
|
||||
}
|
||||
if (changesMask[21])
|
||||
{
|
||||
data.WriteUInt32(ArenaFaction);
|
||||
data.WriteUInt8(ArenaFaction);
|
||||
}
|
||||
if (changesMask[22])
|
||||
{
|
||||
@@ -3104,7 +3103,7 @@ namespace Game.Entities
|
||||
}
|
||||
if (changesMask[29])
|
||||
{
|
||||
data.WriteInt32(CurrentBattlePetBreedQuality);
|
||||
data.WriteUInt8(CurrentBattlePetBreedQuality);
|
||||
}
|
||||
if (changesMask[30])
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user