Core/UpdateFields: Fixed so update fields not being sent to client. Also removed not needed reflection use for UpdateFields
This commit is contained in:
@@ -505,7 +505,7 @@ namespace Game.Entities
|
||||
{
|
||||
for (int i = 0; i < (int)EnchantmentSlot.Max; ++i)
|
||||
{
|
||||
ItemEnchantment enchantmentField = m_itemData.ModifyValue(m_itemData.Enchantment, i);
|
||||
ItemEnchantment enchantmentField = m_values.ModifyValue(m_itemData).ModifyValue(m_itemData.Enchantment, i);
|
||||
SetUpdateFieldValue(enchantmentField.ModifyValue(enchantmentField.ID), uint.Parse(enchantmentTokens[i * 3 + 0]));
|
||||
SetUpdateFieldValue(enchantmentField.ModifyValue(enchantmentField.Duration), uint.Parse(enchantmentTokens[i * 3 + 1]));
|
||||
SetUpdateFieldValue(enchantmentField.ModifyValue(enchantmentField.Charges), short.Parse(enchantmentTokens[i * 3 + 2]));
|
||||
@@ -945,7 +945,7 @@ namespace Game.Entities
|
||||
ApplyArtifactPowerEnchantmentBonuses(slot, GetEnchantmentId(slot), false, owner);
|
||||
ApplyArtifactPowerEnchantmentBonuses(slot, id, true, owner);
|
||||
|
||||
ItemEnchantment enchantmentField = m_itemData.ModifyValue(m_itemData.Enchantment, (int)slot);
|
||||
ItemEnchantment enchantmentField = m_values.ModifyValue(m_itemData).ModifyValue(m_itemData.Enchantment, (int)slot);
|
||||
SetUpdateFieldValue(enchantmentField.ModifyValue(enchantmentField.ID), id);
|
||||
SetUpdateFieldValue(enchantmentField.ModifyValue(enchantmentField.Duration), duration);
|
||||
SetUpdateFieldValue(enchantmentField.ModifyValue(enchantmentField.Charges), (short)charges);
|
||||
@@ -957,7 +957,8 @@ namespace Game.Entities
|
||||
if (GetEnchantmentDuration(slot) == duration)
|
||||
return;
|
||||
|
||||
SetUpdateFieldValue(m_itemData.ModifyValue(m_itemData.Enchantment, (int)slot).ModifyValue((ItemEnchantment itemEnchantment) => itemEnchantment.Duration), duration);
|
||||
ItemEnchantment enchantmentField = m_values.ModifyValue(m_itemData).ModifyValue(m_itemData.Enchantment, (int)slot);
|
||||
SetUpdateFieldValue(enchantmentField.ModifyValue(enchantmentField.Duration), duration);
|
||||
SetState(ItemUpdateState.Changed, owner);
|
||||
// Cannot use GetOwner() here, has to be passed as an argument to avoid freeze due to hashtable locking
|
||||
}
|
||||
@@ -967,7 +968,8 @@ namespace Game.Entities
|
||||
if (GetEnchantmentCharges(slot) == charges)
|
||||
return;
|
||||
|
||||
SetUpdateFieldValue(m_itemData.ModifyValue(m_itemData.Enchantment, (int)slot).ModifyValue((ItemEnchantment itemEnchantment) => itemEnchantment.Charges), (short)charges);
|
||||
ItemEnchantment enchantmentField = m_values.ModifyValue(m_itemData).ModifyValue(m_itemData.Enchantment, (int)slot);
|
||||
SetUpdateFieldValue(enchantmentField.ModifyValue(enchantmentField.Charges), (short)charges);
|
||||
SetState(ItemUpdateState.Changed, GetOwner());
|
||||
}
|
||||
|
||||
@@ -976,7 +978,7 @@ namespace Game.Entities
|
||||
if (GetEnchantmentId(slot) == 0)
|
||||
return;
|
||||
|
||||
ItemEnchantment enchantmentField = m_itemData.ModifyValue(m_itemData.Enchantment, (int)slot);
|
||||
ItemEnchantment enchantmentField = m_values.ModifyValue(m_itemData).ModifyValue(m_itemData.Enchantment, (int)slot);
|
||||
SetUpdateFieldValue(enchantmentField.ModifyValue(enchantmentField.ID), 0u);
|
||||
SetUpdateFieldValue(enchantmentField.ModifyValue(enchantmentField.Duration), 0u);
|
||||
SetUpdateFieldValue(enchantmentField.ModifyValue(enchantmentField.Charges), (short)0);
|
||||
@@ -1055,7 +1057,7 @@ namespace Game.Entities
|
||||
}
|
||||
}
|
||||
|
||||
SocketedGem gemField = m_itemData.ModifyValue(m_itemData.Gems, slot);
|
||||
SocketedGem gemField = m_values.ModifyValue(m_itemData).ModifyValue(m_itemData.Gems, slot);
|
||||
SetUpdateFieldValue(gemField.ModifyValue(gemField.ItemId), gem.ItemId);
|
||||
SetUpdateFieldValue(gemField.ModifyValue(gemField.Context), gem.Context);
|
||||
for (int i = 0; i < 16; ++i)
|
||||
@@ -2063,7 +2065,7 @@ namespace Game.Entities
|
||||
var foundIndex = m_artifactPowerIdToIndex.LookupByKey(artifactPowerId);
|
||||
if (foundIndex != 0)
|
||||
{
|
||||
ArtifactPower artifactPower = m_itemData.ModifyValue(m_itemData.ArtifactPowers, foundIndex);
|
||||
ArtifactPower artifactPower = m_values.ModifyValue(m_itemData).ModifyValue(m_itemData.ArtifactPowers, foundIndex);
|
||||
SetUpdateFieldValue(ref artifactPower.PurchasedRank, purchasedRank);
|
||||
SetUpdateFieldValue(ref artifactPower.CurrentRankWithBonus, currentRankWithBonus);
|
||||
}
|
||||
@@ -2118,7 +2120,7 @@ namespace Game.Entities
|
||||
else
|
||||
newRank -= (byte)enchant.EffectPointsMin[i];
|
||||
|
||||
artifactPower = m_itemData.ModifyValue(m_itemData.ArtifactPowers, artifactPowerIndex);
|
||||
artifactPower = m_values.ModifyValue(m_itemData).ModifyValue(m_itemData.ArtifactPowers, artifactPowerIndex);
|
||||
SetUpdateFieldValue(ref artifactPower.CurrentRankWithBonus, newRank);
|
||||
|
||||
if (IsEquipped())
|
||||
@@ -2142,7 +2144,7 @@ namespace Game.Entities
|
||||
else
|
||||
newRank -= (byte)enchant.EffectPointsMin[i];
|
||||
|
||||
ArtifactPower artifactPower = m_itemData.ModifyValue(m_itemData.ArtifactPowers, artifactPowerIndex);
|
||||
ArtifactPower artifactPower = m_values.ModifyValue(m_itemData).ModifyValue(m_itemData.ArtifactPowers, artifactPowerIndex);
|
||||
SetUpdateFieldValue(ref artifactPower.CurrentRankWithBonus, newRank);
|
||||
|
||||
if (IsEquipped())
|
||||
@@ -2174,7 +2176,7 @@ namespace Game.Entities
|
||||
else
|
||||
newRank -= (byte)enchant.EffectPointsMin[i];
|
||||
|
||||
artifactPower = m_itemData.ModifyValue(m_itemData.ArtifactPowers, artifactPowerIndex);
|
||||
artifactPower = m_values.ModifyValue(m_itemData).ModifyValue(m_itemData.ArtifactPowers, artifactPowerIndex);
|
||||
SetUpdateFieldValue(ref artifactPower.CurrentRankWithBonus, newRank);
|
||||
|
||||
if (IsEquipped())
|
||||
@@ -2243,11 +2245,13 @@ namespace Game.Entities
|
||||
|
||||
public void SetPetitionId(uint petitionId)
|
||||
{
|
||||
SetUpdateFieldValue(m_itemData.ModifyValue(m_itemData.Enchantment, 0).ModifyValue((ItemEnchantment itemEnchantment) => itemEnchantment.ID), petitionId);
|
||||
ItemEnchantment enchantmentField = m_values.ModifyValue(m_itemData).ModifyValue(m_itemData.Enchantment, 0);
|
||||
SetUpdateFieldValue(enchantmentField.ModifyValue(enchantmentField.ID), petitionId);
|
||||
}
|
||||
public void SetPetitionNumSignatures(uint signatures)
|
||||
{
|
||||
SetUpdateFieldValue(m_itemData.ModifyValue(m_itemData.Enchantment, 0).ModifyValue((ItemEnchantment itemEnchantment) => itemEnchantment.Duration), signatures);
|
||||
ItemEnchantment enchantmentField = m_values.ModifyValue(m_itemData).ModifyValue(m_itemData.Enchantment, 0);
|
||||
SetUpdateFieldValue(enchantmentField.ModifyValue(enchantmentField.Duration), signatures);
|
||||
}
|
||||
|
||||
public void SetFixedLevel(uint level)
|
||||
|
||||
@@ -20,8 +20,6 @@ using Game.Networking;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Game.Entities
|
||||
{
|
||||
@@ -355,13 +353,13 @@ namespace Game.Entities
|
||||
|
||||
public void ClearChangesMask<U>(UpdateField<U> updateField) where U : new()
|
||||
{
|
||||
if (typeof(U).GetInterfaces().Any(x => typeof(IHasChangesMask) == x))
|
||||
if (typeof(IHasChangesMask).IsAssignableFrom(typeof(U)))
|
||||
((IHasChangesMask)updateField._value).ClearChangesMask();
|
||||
}
|
||||
|
||||
public void ClearChangesMask<U>(UpdateFieldArray<U> updateField) where U : new()
|
||||
{
|
||||
if (typeof(U).GetInterfaces().Any(x => typeof(IHasChangesMask) == x))
|
||||
if (typeof(IHasChangesMask).IsAssignableFrom(typeof(U)))
|
||||
{
|
||||
for (int i = 0; i < updateField.GetSize(); ++i)
|
||||
((IHasChangesMask)updateField[i]).ClearChangesMask();
|
||||
@@ -370,7 +368,7 @@ namespace Game.Entities
|
||||
|
||||
public void ClearChangesMask<U>(DynamicUpdateField<U> updateField) where U : new()
|
||||
{
|
||||
if (typeof(U).GetInterfaces().Any(x => typeof(IHasChangesMask) == x))
|
||||
if (typeof(IHasChangesMask).IsAssignableFrom(typeof(U)))
|
||||
{
|
||||
for (int i = 0; i < updateField.Size(); ++i)
|
||||
((IHasChangesMask)updateField[i]).ClearChangesMask();
|
||||
@@ -379,30 +377,6 @@ namespace Game.Entities
|
||||
}
|
||||
}
|
||||
|
||||
public UpdateField<UU> ModifyValue<U, UU>(Expression<Func<U, UpdateField<UU>>> expression) where UU : new()
|
||||
{
|
||||
var fieldInfo = ((MemberExpression)expression.Body).Member as FieldInfo;
|
||||
if (fieldInfo == null)
|
||||
throw new ArgumentException("The lambda expression 'property' should point to a valid Property");
|
||||
|
||||
var updateField = (UpdateField<UU>)fieldInfo.GetValue(this);
|
||||
_changesMask.Set(updateField.BlockBit);
|
||||
_changesMask.Set(updateField.Bit);
|
||||
return updateField;
|
||||
}
|
||||
|
||||
public ref UU ModifyValue<U, UU>(Expression<Func<U, UpdateFieldArray<UU>>> expression, int index) where UU : new()
|
||||
{
|
||||
var fieldInfo = ((MemberExpression)expression.Body).Member as FieldInfo;
|
||||
if (fieldInfo == null)
|
||||
throw new ArgumentException("The lambda expression should point to a valid Field");
|
||||
|
||||
var updateFieldArray = (UpdateFieldArray<UU>)fieldInfo.GetValue(this);
|
||||
_changesMask.Set(updateFieldArray.Bit);
|
||||
_changesMask.Set(updateFieldArray.FirstElementBit + index);
|
||||
return ref updateFieldArray._values[index];
|
||||
}
|
||||
|
||||
public UpdateField<U> ModifyValue<U>(UpdateField<U> updateField) where U : new()
|
||||
{
|
||||
MarkChanged(updateField);
|
||||
|
||||
@@ -2599,7 +2599,7 @@ namespace Game.Entities
|
||||
|
||||
public void WriteUpdate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Player owner, Player receiver)
|
||||
{
|
||||
UpdateMask allowedMaskForTarget = new UpdateMask(192, new[] { 0xFFFFFFEDu, 0x00000003u, 0x00000000u, 0x00000000u, 0x00000000u, 0x01FFFFFFu });
|
||||
UpdateMask allowedMaskForTarget = new UpdateMask(185, new[] { 0xFFFFFFEDu, 0x00000003u, 0x00000000u, 0x00000000u, 0x00000000u, 0x01FFFFFFu });
|
||||
AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
|
||||
WriteUpdate(data, _changesMask & allowedMaskForTarget, false, owner, receiver);
|
||||
}
|
||||
@@ -2607,13 +2607,13 @@ namespace Game.Entities
|
||||
public void AppendAllowedFieldsMaskForFlag(UpdateMask allowedMaskForTarget, UpdateFieldFlag fieldVisibilityFlags)
|
||||
{
|
||||
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag.PartyMember))
|
||||
allowedMaskForTarget |= new UpdateMask(192, new[] { 0x00000012u, 0xFFFFFFFCu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0x00000000u });
|
||||
allowedMaskForTarget |= new UpdateMask(185, new[] { 0x00000012u, 0xFFFFFFFCu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0x00000000u });
|
||||
}
|
||||
|
||||
void FilterDisallowedFieldsMaskForFlag(UpdateMask changesMask, UpdateFieldFlag fieldVisibilityFlags)
|
||||
{
|
||||
if (!fieldVisibilityFlags.HasFlag(UpdateFieldFlag.PartyMember))
|
||||
changesMask &= new UpdateMask(192, new uint[] { 0xFFFFFFEDu, 0x00000003u, 0x00000000u, 0x00000000u, 0x00000000u, 0xFFFFFFFFu });
|
||||
changesMask &= new UpdateMask(185, new uint[] { 0xFFFFFFEDu, 0x00000003u, 0x00000000u, 0x00000000u, 0x00000000u, 0xFFFFFFFFu });
|
||||
}
|
||||
|
||||
public void WriteUpdate(WorldPacket data, UpdateMask changesMask, bool ignoreNestedChangesMask, Player owner, Player receiver)
|
||||
|
||||
@@ -2037,24 +2037,26 @@ namespace Game.Entities
|
||||
if (counter >= SharedConst.MaxQuestCounts)
|
||||
return;
|
||||
|
||||
SetUpdateFieldValue(ref m_playerData.ModifyValue(m_playerData.QuestLog, slot).ModifyValue((QuestLog questLogField) => questLogField.ObjectiveProgress, counter), count);
|
||||
QuestLog questLog = m_values.ModifyValue(m_playerData).ModifyValue(m_playerData.QuestLog, slot);
|
||||
SetUpdateFieldValue(ref questLog.ModifyValue(questLog.ObjectiveProgress, counter), count);
|
||||
}
|
||||
|
||||
public void SetQuestSlotState(ushort slot, QuestSlotStateMask state)
|
||||
{
|
||||
QuestLog questLogField = m_playerData.ModifyValue(m_playerData.QuestLog, slot);
|
||||
QuestLog questLogField = m_values.ModifyValue(m_playerData).ModifyValue(m_playerData.QuestLog, slot);
|
||||
SetUpdateFieldFlagValue(questLogField.ModifyValue(questLogField.StateFlags), (uint)state);
|
||||
}
|
||||
|
||||
public void RemoveQuestSlotState(ushort slot, QuestSlotStateMask state)
|
||||
{
|
||||
QuestLog questLogField = m_playerData.ModifyValue(m_playerData.QuestLog, slot);
|
||||
QuestLog questLogField = m_values.ModifyValue(m_playerData).ModifyValue(m_playerData.QuestLog, slot);
|
||||
RemoveUpdateFieldFlagValue(questLogField.ModifyValue(questLogField.StateFlags), (uint)state);
|
||||
}
|
||||
|
||||
public void SetQuestSlotTimer(ushort slot, uint timer)
|
||||
{
|
||||
SetUpdateFieldValue(m_values.ModifyValue(m_playerData).ModifyValue(m_playerData.QuestLog, slot).ModifyValue((QuestLog questLog) => questLog.EndTime), timer);
|
||||
QuestLog questLog = m_values.ModifyValue(m_playerData).ModifyValue(m_playerData.QuestLog, slot);
|
||||
SetUpdateFieldValue(questLog.ModifyValue(questLog.EndTime), timer);
|
||||
}
|
||||
|
||||
void SetQuestCompletedBit(uint questBit, bool completed)
|
||||
|
||||
@@ -820,7 +820,8 @@ namespace Game.Entities
|
||||
// visualize enchantment at player and equipped items
|
||||
if (slot == EnchantmentSlot.Perm)
|
||||
{
|
||||
SetUpdateFieldValue(m_playerData.ModifyValue(m_playerData.VisibleItems, item.GetSlot()).ModifyValue((VisibleItem visibleItemField) => visibleItemField.ItemVisual), item.GetVisibleItemVisual(this));
|
||||
VisibleItem visibleItem = m_values.ModifyValue(m_playerData).ModifyValue(m_playerData.VisibleItems, item.GetSlot());
|
||||
SetUpdateFieldValue(visibleItem.ModifyValue(visibleItem.ItemVisual), item.GetVisibleItemVisual(this));
|
||||
}
|
||||
|
||||
if (apply_dur)
|
||||
@@ -3474,13 +3475,41 @@ namespace Game.Entities
|
||||
|
||||
public void SetPetSpellPower(uint spellPower) { SetUpdateFieldValue(m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.PetSpellPower), spellPower); }
|
||||
|
||||
public void SetSkillLineId(uint pos, ushort skillLineId) { SetUpdateFieldValue(ref m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.Skill)._value.ModifyValue((SkillInfo skillInfo) => skillInfo.SkillLineID, (int)pos), skillLineId); }
|
||||
public void SetSkillStep(uint pos, ushort step) { SetUpdateFieldValue(ref m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.Skill)._value.ModifyValue((SkillInfo skillInfo) => skillInfo.SkillStep, (int)pos), step); }
|
||||
public void SetSkillRank(uint pos, ushort rank) { SetUpdateFieldValue(ref m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.Skill)._value.ModifyValue((SkillInfo skillInfo) => skillInfo.SkillRank, (int)pos), rank); }
|
||||
public void SetSkillStartingRank(uint pos, ushort starting) { SetUpdateFieldValue(ref m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.Skill)._value.ModifyValue((SkillInfo skillInfo) => skillInfo.SkillStartingRank, (int)pos), starting); }
|
||||
public void SetSkillMaxRank(uint pos, ushort max) { SetUpdateFieldValue(ref m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.Skill)._value.ModifyValue((SkillInfo skillInfo) => skillInfo.SkillMaxRank, (int)pos), max); }
|
||||
public void SetSkillTempBonus(uint pos, ushort bonus) { SetUpdateFieldValue(ref m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.Skill)._value.ModifyValue((SkillInfo skillInfo) => skillInfo.SkillTempBonus, (int)pos), bonus); }
|
||||
public void SetSkillPermBonus(uint pos, ushort bonus) { SetUpdateFieldValue(ref m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.Skill)._value.ModifyValue((SkillInfo skillInfo) => skillInfo.SkillPermBonus, (int)pos), bonus); }
|
||||
public void SetSkillLineId(uint pos, ushort skillLineId)
|
||||
{
|
||||
SkillInfo skillInfo = m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.Skill);
|
||||
SetUpdateFieldValue(ref skillInfo.ModifyValue(skillInfo.SkillLineID, (int)pos), skillLineId);
|
||||
}
|
||||
public void SetSkillStep(uint pos, ushort step)
|
||||
{
|
||||
SkillInfo skillInfo = m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.Skill);
|
||||
SetUpdateFieldValue(ref skillInfo.ModifyValue(skillInfo.SkillStep, (int)pos), step);
|
||||
}
|
||||
public void SetSkillRank(uint pos, ushort rank)
|
||||
{
|
||||
SkillInfo skillInfo = m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.Skill);
|
||||
SetUpdateFieldValue(ref skillInfo.ModifyValue(skillInfo.SkillRank, (int)pos), rank);
|
||||
}
|
||||
public void SetSkillStartingRank(uint pos, ushort starting)
|
||||
{
|
||||
SkillInfo skillInfo = m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.Skill);
|
||||
SetUpdateFieldValue(ref skillInfo.ModifyValue(skillInfo.SkillStartingRank, (int)pos), starting);
|
||||
}
|
||||
public void SetSkillMaxRank(uint pos, ushort max)
|
||||
{
|
||||
SkillInfo skillInfo = m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.Skill);
|
||||
SetUpdateFieldValue(ref skillInfo.ModifyValue(skillInfo.SkillMaxRank, (int)pos), max);
|
||||
}
|
||||
public void SetSkillTempBonus(uint pos, ushort bonus)
|
||||
{
|
||||
SkillInfo skillInfo = m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.Skill);
|
||||
SetUpdateFieldValue(ref skillInfo.ModifyValue(skillInfo.SkillTempBonus, (int)pos), bonus);
|
||||
}
|
||||
public void SetSkillPermBonus(uint pos, ushort bonus)
|
||||
{
|
||||
SkillInfo skillInfo = m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.Skill);
|
||||
SetUpdateFieldValue(ref skillInfo.ModifyValue(skillInfo.SkillPermBonus, (int)pos), bonus);
|
||||
}
|
||||
}
|
||||
|
||||
public class PlayerSpell
|
||||
|
||||
@@ -3548,8 +3548,8 @@ namespace Game.Entities
|
||||
if (creature == null || (!creature.IsTrigger() && !creature.HasAuraType(AuraType.Transform) && !creature.HasUnitFlag(UnitFlags.NotSelectable)))
|
||||
continue;
|
||||
|
||||
creature.m_unitData.ModifyValue(m_unitData.DisplayID);
|
||||
creature.m_unitData.ModifyValue(m_unitData.Flags);
|
||||
creature.m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.DisplayID);
|
||||
creature.m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.Flags);
|
||||
creature.ForceUpdateFieldChange();
|
||||
creature.BuildValuesUpdateBlockForPlayer(udata, this);
|
||||
}
|
||||
@@ -7271,11 +7271,13 @@ namespace Game.Entities
|
||||
|
||||
public void SetRestState(RestTypes type, PlayerRestState state)
|
||||
{
|
||||
SetUpdateFieldValue(m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.RestInfo, (int)type).ModifyValue((RestInfo restInfo) => restInfo.StateID), (byte)state);
|
||||
RestInfo restInfo = m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.RestInfo, (int)type);
|
||||
SetUpdateFieldValue(restInfo.ModifyValue(restInfo.StateID), (byte)state);
|
||||
}
|
||||
public void SetRestThreshold(RestTypes type, uint threshold)
|
||||
{
|
||||
SetUpdateFieldValue(m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.RestInfo, (int)type).ModifyValue((RestInfo restInfo) => restInfo.Threshold), threshold);
|
||||
RestInfo restInfo = m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.RestInfo, (int)type);
|
||||
SetUpdateFieldValue(restInfo.ModifyValue(restInfo.Threshold), threshold);
|
||||
}
|
||||
|
||||
public bool HasPlayerFlag(PlayerFlags flags) { return (m_playerData.PlayerFlags & (uint)flags) != 0; }
|
||||
|
||||
@@ -1777,9 +1777,9 @@ namespace Game.Entities
|
||||
return;
|
||||
|
||||
var virtualItemField = m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.VirtualItems, (int)slot);
|
||||
SetUpdateFieldValue(virtualItemField.ModifyValue((VisibleItem visibleItem) => visibleItem.ItemID), itemId);
|
||||
SetUpdateFieldValue(virtualItemField.ModifyValue((VisibleItem visibleItem) => visibleItem.ItemAppearanceModID), appearanceModId);
|
||||
SetUpdateFieldValue(virtualItemField.ModifyValue((VisibleItem visibleItem) => visibleItem.ItemVisual), itemVisual);
|
||||
SetUpdateFieldValue(virtualItemField.ModifyValue(virtualItemField.ItemID), itemId);
|
||||
SetUpdateFieldValue(virtualItemField.ModifyValue(virtualItemField.ItemAppearanceModID), appearanceModId);
|
||||
SetUpdateFieldValue(virtualItemField.ModifyValue(virtualItemField.ItemVisual), itemVisual);
|
||||
}
|
||||
|
||||
//Unit
|
||||
@@ -2363,7 +2363,7 @@ namespace Game.Entities
|
||||
public uint GetChannelScriptVisualId() { return m_unitData.ChannelData.GetValue().SpellVisual.ScriptVisualID; }
|
||||
public void SetChannelVisual(SpellCastVisualField channelVisual)
|
||||
{
|
||||
UnitChannel unitChannel = m_unitData.ModifyValue(m_unitData.ChannelData);
|
||||
UnitChannel unitChannel = m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.ChannelData);
|
||||
SetUpdateFieldValue(ref unitChannel.SpellVisual, channelVisual);
|
||||
}
|
||||
public void AddChannelObject(ObjectGuid guid) { AddDynamicUpdateFieldValue(m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.ChannelObjects), guid); }
|
||||
|
||||
Reference in New Issue
Block a user