Core/PacketIO: Updated packet structures to 9.0.2
Port From (https://github.com/TrinityCore/TrinityCore/commit/96d340f70ccef57fad177a24ca099055d7dce04d)
This commit is contained in:
@@ -1225,9 +1225,8 @@ namespace Game.Entities
|
||||
public UpdateFieldArray<int> Resistances = new UpdateFieldArray<int>(7, 167, 168);
|
||||
public UpdateFieldArray<int> BonusResistanceMods = new UpdateFieldArray<int>(7, 167, 175);
|
||||
public UpdateFieldArray<int> PowerCostModifier = new UpdateFieldArray<int>(7, 167, 182);
|
||||
public UpdateFieldArray<float> PowerCostMultiplier = new UpdateFieldArray<float>(7, 167, 189);
|
||||
|
||||
public UnitData() : base(0, TypeId.Unit, 196) { }
|
||||
public UnitData() : base(0, TypeId.Unit, 189) { }
|
||||
|
||||
public void WriteCreate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Unit owner, Player receiver)
|
||||
{
|
||||
@@ -1358,7 +1357,6 @@ namespace Game.Entities
|
||||
{
|
||||
data.WriteInt32(BonusResistanceMods[i]);
|
||||
data.WriteInt32(PowerCostModifier[i]);
|
||||
data.WriteFloat(PowerCostMultiplier[i]);
|
||||
}
|
||||
}
|
||||
data.WriteUInt32(BaseMana);
|
||||
@@ -1421,7 +1419,7 @@ namespace Game.Entities
|
||||
|
||||
public void WriteUpdate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Unit owner, Player receiver)
|
||||
{
|
||||
UpdateMask allowedMaskForTarget = new UpdateMask(192, new uint[] { 0xFFFFDFFFu, 0xE1FF7FFFu, 0x001EFFFFu, 0xFBFFFF81u, 0x03F8007Fu, 0x00000000u, 0x00000000u });
|
||||
UpdateMask allowedMaskForTarget = new UpdateMask(192, new uint[] { 0xFFFFDFFFu, 0xE1FF7FFFu, 0x001EFFFFu, 0xFBFFFF81u, 0x03F8007Fu, 0x00000000u });
|
||||
AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
|
||||
WriteUpdate(data, _changesMask & allowedMaskForTarget, false, owner, receiver);
|
||||
}
|
||||
@@ -1429,27 +1427,27 @@ namespace Game.Entities
|
||||
public void AppendAllowedFieldsMaskForFlag(UpdateMask allowedMaskForTarget, UpdateFieldFlag fieldVisibilityFlags)
|
||||
{
|
||||
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag.Owner))
|
||||
allowedMaskForTarget |= new UpdateMask(192, new uint[] { 0x00002000u, 0x1E008000u, 0xFFE10000u, 0x0400007Eu, 0xFC07FF80u, 0xFFFFFFFFu, 0x0000000Fu });
|
||||
allowedMaskForTarget |= new UpdateMask(192, new uint[] { 0x00002000u, 0x1E008000u, 0xFFE10000u, 0x0400007Eu, 0xFC07FF80u, 0x1FFFFFFFu });
|
||||
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag.UnitAll))
|
||||
allowedMaskForTarget |= new UpdateMask(192, new uint[] { 0x00000000u, 0x00000000u, 0x00000000u, 0x04000000u, 0x0007FF80u, 0x00000000u, 0x00000000 });
|
||||
allowedMaskForTarget |= new UpdateMask(192, new uint[] { 0x00000000u, 0x00000000u, 0x00000000u, 0x04000000u, 0x0007FF80u, 0x00000000u });
|
||||
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag.Empath))
|
||||
allowedMaskForTarget |= new UpdateMask(192, new uint[] { 0x00000000u, 0x1E000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x00007F80u, 0x00000000u });
|
||||
allowedMaskForTarget |= new UpdateMask(192, new uint[] { 0x00000000u, 0x1E000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x00007F80u });
|
||||
}
|
||||
|
||||
public void FilterDisallowedFieldsMaskForFlag(UpdateMask changesMask, UpdateFieldFlag fieldVisibilityFlags)
|
||||
{
|
||||
if (!fieldVisibilityFlags.HasFlag(UpdateFieldFlag.Owner))
|
||||
changesMask &= new UpdateMask(192, new uint[] { 0xFFFFDFFFu, 0xE1FF7FFFu, 0x001EFFFFu, 0xFBFFFF81u, 0x03F8007Fu, 0x00000000u, 0xFFFFFFF0u });
|
||||
changesMask &= new UpdateMask(192, new uint[] { 0xFFFFDFFFu, 0xE1FF7FFFu, 0x001EFFFFu, 0xFBFFFF81u, 0x03F8007Fu, 0xE0000000u });
|
||||
if (!fieldVisibilityFlags.HasFlag(UpdateFieldFlag.UnitAll))
|
||||
changesMask &= new UpdateMask(192, new uint[] { 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFBFFFFFFu, 0xFFF8007Fu, 0xFFFFFFFFu, 0xFFFFFFFFu });
|
||||
changesMask &= new UpdateMask(192, new uint[] { 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFBFFFFFFu, 0xFFF8007Fu, 0xFFFFFFFFu });
|
||||
if (!fieldVisibilityFlags.HasFlag(UpdateFieldFlag.Empath))
|
||||
changesMask &= new UpdateMask(192, new uint[] { 0xFFFFFFFFu, 0xE1FFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFF807Fu, 0xFFFFFFFFu });
|
||||
changesMask &= new UpdateMask(192, new uint[] { 0xFFFFFFFFu, 0xE1FFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFF807Fu });
|
||||
}
|
||||
|
||||
public void WriteUpdate(WorldPacket data, UpdateMask changesMask, bool ignoreNestedChangesMask, Unit owner, Player receiver)
|
||||
{
|
||||
data.WriteBits(changesMask.GetBlocksMask(0), 7);
|
||||
for (uint i = 0; i < 7; ++i)
|
||||
data.WriteBits(changesMask.GetBlocksMask(0), 6);
|
||||
for (uint i = 0; i < 6; ++i)
|
||||
if (changesMask.GetBlock(i) != 0)
|
||||
data.WriteBits(changesMask.GetBlock(i), 32);
|
||||
|
||||
@@ -2196,7 +2194,6 @@ namespace Game.Entities
|
||||
ClearChangesMask(Resistances);
|
||||
ClearChangesMask(BonusResistanceMods);
|
||||
ClearChangesMask(PowerCostModifier);
|
||||
ClearChangesMask(PowerCostMultiplier);
|
||||
_changesMask.ResetAll();
|
||||
}
|
||||
|
||||
|
||||
@@ -5652,6 +5652,8 @@ namespace Game.Entities
|
||||
|
||||
SetUpdateFieldValue(m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.MaxLevel), WorldConfig.GetIntValue(WorldCfg.MaxPlayerLevel));
|
||||
SetUpdateFieldValue(m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.NextLevelXP), Global.ObjectMgr.GetXPForLevel(GetLevel()));
|
||||
if (m_activePlayerData.XP >= m_activePlayerData.NextLevelXP)
|
||||
SetUpdateFieldValue(m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.XP), m_activePlayerData.NextLevelXP - 1);
|
||||
|
||||
// reset before any aura state sources (health set/aura apply)
|
||||
SetUpdateFieldValue(m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.AuraState), 0u);
|
||||
@@ -5753,10 +5755,8 @@ namespace Game.Entities
|
||||
SetUpdateFieldValue(m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.ModTargetResistance), 0);
|
||||
SetUpdateFieldValue(m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.ModTargetPhysicalResistance), 0);
|
||||
for (int i = 0; i < (int)SpellSchools.Max; ++i)
|
||||
{
|
||||
SetUpdateFieldValue(ref m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.PowerCostModifier, i), 0);
|
||||
SetUpdateFieldValue(ref m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.PowerCostMultiplier, i), 0.0f);
|
||||
}
|
||||
|
||||
// Reset no reagent cost field
|
||||
SetNoRegentCostMask(new Framework.Dynamic.FlagArray128());
|
||||
|
||||
|
||||
@@ -933,7 +933,6 @@ namespace Game.Entities
|
||||
}
|
||||
|
||||
public void ApplyModPowerCostModifier(SpellSchools school, int mod, bool apply) { ApplyModUpdateFieldValue(ref m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.PowerCostModifier, (int)school), mod, apply); }
|
||||
public void ApplyModPowerCostMultiplier(SpellSchools school, float pct, bool apply) { ApplyModUpdateFieldValue(ref m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.PowerCostMultiplier, (int)school), pct, apply); }
|
||||
}
|
||||
|
||||
public partial class Player
|
||||
@@ -1013,18 +1012,6 @@ namespace Game.Entities
|
||||
UpdateSpellDamageAndHealingBonus();
|
||||
UpdateManaRegen();
|
||||
|
||||
// Update ratings in exist SPELL_AURA_MOD_RATING_FROM_STAT and only depends from stat
|
||||
uint mask = 0;
|
||||
var modRatingFromStat = GetAuraEffectsByType(AuraType.ModRatingFromStat);
|
||||
foreach (var eff in modRatingFromStat)
|
||||
if ((Stats)eff.GetMiscValueB() == stat)
|
||||
mask |= (uint)eff.GetMiscValue();
|
||||
if (mask != 0)
|
||||
{
|
||||
for (int rating = 0; rating < (int)CombatRating.Max; ++rating)
|
||||
if (Convert.ToBoolean(mask & (1 << rating)))
|
||||
ApplyRatingMod((CombatRating)rating, 0, true);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1322,12 +1309,6 @@ namespace Game.Entities
|
||||
public void UpdateRating(CombatRating cr)
|
||||
{
|
||||
int amount = baseRatingValue[(int)cr];
|
||||
// Apply bonus from SPELL_AURA_MOD_RATING_FROM_STAT
|
||||
// stat used stored in miscValueB for this aura
|
||||
var modRatingFromStat = GetAuraEffectsByType(AuraType.ModRatingFromStat);
|
||||
foreach (var aurEff in modRatingFromStat)
|
||||
if (Convert.ToBoolean(aurEff.GetMiscValue() & (1 << (int)cr)))
|
||||
amount += (int)MathFunctions.CalculatePct(GetStat((Stats)aurEff.GetMiscValueB()), aurEff.GetAmount());
|
||||
|
||||
var modRatingPct = GetAuraEffectsByType(AuraType.ModRatingPct);
|
||||
foreach (var aurEff in modRatingPct)
|
||||
|
||||
Reference in New Issue
Block a user