Misc fixes
This commit is contained in:
@@ -509,6 +509,23 @@ namespace Game.Entities
|
|||||||
return new DynamicUpdateFieldSetter<U>(updateField, index);
|
return new DynamicUpdateFieldSetter<U>(updateField, index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public DynamicUpdateFieldSetter<U> ModifyValue<U>(UpdateFieldArray<DynamicUpdateField<U>> updateField, int index, int dynamicIndex) where U : new()
|
||||||
|
{
|
||||||
|
if (dynamicIndex >= updateField[index].Size())
|
||||||
|
{
|
||||||
|
// fill with zeros until reaching desired slot
|
||||||
|
updateField[index]._values.Resize((uint)dynamicIndex + 1);
|
||||||
|
updateField[index]._updateMask.Resize((uint)(updateField[index]._values.Count + 31) / 32);
|
||||||
|
}
|
||||||
|
|
||||||
|
//MarkChanged(updateField, index);
|
||||||
|
_changesMask.Set(updateField.Bit);
|
||||||
|
_changesMask.Set(updateField.FirstElementBit);
|
||||||
|
updateField[index].MarkChanged(dynamicIndex);
|
||||||
|
|
||||||
|
return new DynamicUpdateFieldSetter<U>(updateField[index], dynamicIndex);
|
||||||
|
}
|
||||||
|
|
||||||
public void MarkChanged<U>(UpdateField<U> updateField) where U : new()
|
public void MarkChanged<U>(UpdateField<U> updateField) where U : new()
|
||||||
{
|
{
|
||||||
_changesMask.Set(updateField.BlockBit);
|
_changesMask.Set(updateField.BlockBit);
|
||||||
|
|||||||
@@ -858,10 +858,10 @@ namespace Game.Entities
|
|||||||
SetUpdateFieldValue(updateField, (T)(updateField.GetValue() | (dynamic)flag));
|
SetUpdateFieldValue(updateField, (T)(updateField.GetValue() | (dynamic)flag));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetUpdateFieldFlagValue<T>(DynamicUpdateField<T> updateField, int index, T flag) where T : new()
|
public void SetUpdateFieldFlagValue<T>(DynamicUpdateFieldSetter<T> updateField, T flag) where T : new()
|
||||||
{
|
{
|
||||||
//static_assert(std::is_integral < T >::value, "SetUpdateFieldFlagValue must be used with integral types");
|
//static_assert(std::is_integral < T >::value, "SetUpdateFieldFlagValue must be used with integral types");
|
||||||
InsertDynamicUpdateFieldValue(updateField, index, (T)(updateField[index] | (dynamic)flag));
|
SetUpdateFieldValue(updateField, (T)(updateField.GetValue() | (dynamic)flag));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetUpdateFieldFlagValue<T>(ref T value, T flag) where T : new()
|
public void SetUpdateFieldFlagValue<T>(ref T value, T flag) where T : new()
|
||||||
@@ -876,10 +876,10 @@ namespace Game.Entities
|
|||||||
SetUpdateFieldValue(updateField, (T)(updateField.GetValue() & ~(dynamic)flag));
|
SetUpdateFieldValue(updateField, (T)(updateField.GetValue() & ~(dynamic)flag));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RemoveUpdateFieldFlagValue<T>(DynamicUpdateField<T> updateField, int index, T flag) where T : new()
|
public void RemoveUpdateFieldFlagValue<T>(DynamicUpdateFieldSetter<T> updateField, T flag) where T : new()
|
||||||
{
|
{
|
||||||
//static_assert(std::is_integral < T >::value, "SetUpdateFieldFlagValue must be used with integral types");
|
//static_assert(std::is_integral < T >::value, "SetUpdateFieldFlagValue must be used with integral types");
|
||||||
InsertDynamicUpdateFieldValue(updateField, index, (T)(updateField[index] & ~(dynamic)flag));
|
SetUpdateFieldValue(updateField, (T)(updateField.GetValue() & ~(dynamic)flag));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RemoveUpdateFieldFlagValue<T>(ref T value, T flag) where T : new()
|
public void RemoveUpdateFieldFlagValue<T>(ref T value, T flag) where T : new()
|
||||||
|
|||||||
@@ -6125,7 +6125,7 @@ namespace Game.Entities
|
|||||||
|
|
||||||
--loot.unlootedCount;
|
--loot.unlootedCount;
|
||||||
|
|
||||||
if (newitem != null && newitem.GetQuality() > ItemQuality.Epic || (newitem.GetQuality() == ItemQuality.Epic && newitem.GetItemLevel(this) >= GuildConst.MinNewsItemLevel))
|
if (newitem != null && (newitem.GetQuality() > ItemQuality.Epic || (newitem.GetQuality() == ItemQuality.Epic && newitem.GetItemLevel(this) >= GuildConst.MinNewsItemLevel)))
|
||||||
{
|
{
|
||||||
Guild guild = GetGuild();
|
Guild guild = GetGuild();
|
||||||
if (guild != null)
|
if (guild != null)
|
||||||
|
|||||||
@@ -5449,7 +5449,7 @@ namespace Game.Entities
|
|||||||
return null;
|
return null;
|
||||||
|
|
||||||
// alive or spirit healer
|
// alive or spirit healer
|
||||||
if (creature.IsAlive() && !creature.GetCreatureDifficulty().TypeFlags.HasFlag(CreatureTypeFlags.InteractWhileDead))
|
if (!creature.IsAlive() && !creature.GetCreatureDifficulty().TypeFlags.HasFlag(CreatureTypeFlags.InteractWhileDead))
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
// appropriate npc type
|
// appropriate npc type
|
||||||
@@ -5468,7 +5468,7 @@ namespace Game.Entities
|
|||||||
return null;
|
return null;
|
||||||
|
|
||||||
// not allow interaction under control, but allow with own pets
|
// not allow interaction under control, but allow with own pets
|
||||||
if (creature.GetCharmerGUID().IsEmpty())
|
if (!creature.GetCharmerGUID().IsEmpty())
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
// not unfriendly/hostile
|
// not unfriendly/hostile
|
||||||
@@ -5479,7 +5479,7 @@ namespace Game.Entities
|
|||||||
return null;
|
return null;
|
||||||
|
|
||||||
// not too far, taken from CGGameUI::SetInteractTarget
|
// not too far, taken from CGGameUI::SetInteractTarget
|
||||||
if (creature.IsWithinDistInMap(this, creature.GetCombatReach() + 4.0f))
|
if (!creature.IsWithinDistInMap(this, creature.GetCombatReach() + 4.0f))
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
return creature;
|
return creature;
|
||||||
@@ -6450,16 +6450,12 @@ namespace Game.Entities
|
|||||||
|
|
||||||
public void AddExploredZones(int pos, ulong mask)
|
public void AddExploredZones(int pos, ulong mask)
|
||||||
{
|
{
|
||||||
SetUpdateFieldFlagValue(m_values
|
SetUpdateFieldFlagValue(m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.DataFlags, (int)PlayerDataFlag.ExploredZonesIndex, pos), mask);
|
||||||
.ModifyValue(m_activePlayerData)
|
|
||||||
.ModifyValue(m_activePlayerData.DataFlags, (int)PlayerDataFlag.ExploredZonesIndex), pos, mask);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RemoveExploredZones(int pos, ulong mask)
|
public void RemoveExploredZones(int pos, ulong mask)
|
||||||
{
|
{
|
||||||
RemoveUpdateFieldFlagValue(m_values
|
RemoveUpdateFieldFlagValue(m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.DataFlags, (int)PlayerDataFlag.ExploredZonesIndex, pos), mask);
|
||||||
.ModifyValue(m_activePlayerData)
|
|
||||||
.ModifyValue(m_activePlayerData.DataFlags, (int)PlayerDataFlag.ExploredZonesIndex), pos, mask);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool HasExploredZone(uint areaId)
|
public bool HasExploredZone(uint areaId)
|
||||||
|
|||||||
@@ -826,7 +826,7 @@ namespace Game.Entities
|
|||||||
tappers.Add(tapper);
|
tappers.Add(tapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (creature.CanHaveLoot())
|
if (!creature.CanHaveLoot())
|
||||||
isRewardAllowed = false;
|
isRewardAllowed = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ namespace Game.Networking.Packets
|
|||||||
public ushort TodayHK;
|
public ushort TodayHK;
|
||||||
public ushort YesterdayHK;
|
public ushort YesterdayHK;
|
||||||
public byte LifetimeMaxRank;
|
public byte LifetimeMaxRank;
|
||||||
public TraitInspectInfo TalentTraits;
|
public TraitInspectInfo TalentTraits = new();
|
||||||
}
|
}
|
||||||
|
|
||||||
public class QueryInspectAchievements : ClientPacket
|
public class QueryInspectAchievements : ClientPacket
|
||||||
|
|||||||
@@ -444,7 +444,7 @@ namespace Game.Networking.Packets
|
|||||||
public ObjectGuid PlayerGUID;
|
public ObjectGuid PlayerGUID;
|
||||||
public byte Slot;
|
public byte Slot;
|
||||||
public int SlotInBag;
|
public int SlotInBag;
|
||||||
public ItemInstance Item;
|
public ItemInstance Item = new();
|
||||||
public int QuestLogItemID;// Item ID used for updating quest progress
|
public int QuestLogItemID;// Item ID used for updating quest progress
|
||||||
// only set if different than real ID (similar to CreatureTemplate.KillCredit)
|
// only set if different than real ID (similar to CreatureTemplate.KillCredit)
|
||||||
public uint Quantity;
|
public uint Quantity;
|
||||||
|
|||||||
@@ -619,7 +619,7 @@ namespace Game.Scripting
|
|||||||
public virtual void OnMoneyChanged(Player player, long amount) { }
|
public virtual void OnMoneyChanged(Player player, long amount) { }
|
||||||
|
|
||||||
// Called when a player gains XP (before anything is given)
|
// Called when a player gains XP (before anything is given)
|
||||||
public virtual uint OnGiveXP(Player player, uint amount, Unit victim) { return 0; }
|
public virtual uint OnGiveXP(Player player, uint amount, Unit victim) { return amount; }
|
||||||
|
|
||||||
// Called when a player's reputation changes (before it is actually changed)
|
// Called when a player's reputation changes (before it is actually changed)
|
||||||
public virtual void OnReputationChange(Player player, uint factionId, int standing, bool incremental) { }
|
public virtual void OnReputationChange(Player player, uint factionId, int standing, bool incremental) { }
|
||||||
|
|||||||
Reference in New Issue
Block a user