BFA Update (still lots of testing to do tho)

This commit is contained in:
hondacrx
2018-12-10 12:46:25 -05:00
parent 468b053946
commit 8e20114e10
256 changed files with 35613 additions and 10459 deletions
+24 -6
View File
@@ -622,6 +622,7 @@ namespace Game.Entities
damageInfo.damageSchoolMask = (uint)GetMeleeDamageSchoolMask();
damageInfo.attackType = attType;
damageInfo.damage = 0;
damageInfo.originalDamage = 0;
damageInfo.cleanDamage = 0;
damageInfo.absorb = 0;
damageInfo.resist = 0;
@@ -835,7 +836,7 @@ namespace Game.Entities
DamageInfo damageInfo1 = new DamageInfo(this, victim, damage, spellInfo, spellInfo.GetSchoolMask(), DamageEffectType.SpellDirect, WeaponAttackType.BaseAttack);
victim.CalcAbsorbResist(damageInfo1);
damage = damageInfo1.GetDamage();
// No Unit.CalcAbsorbResist here - opcode doesn't send that data - this damage is probably not affected by that
victim.DealDamageMods(this, ref damage);
SpellDamageShield damageShield = new SpellDamageShield();
@@ -843,6 +844,7 @@ namespace Game.Entities
damageShield.Defender = GetGUID();
damageShield.SpellID = spellInfo.Id;
damageShield.TotalDamage = damage;
damageShield.OriginalDamage = (int)damageInfo.originalDamage;
damageShield.OverKill = (uint)Math.Max(damage - GetHealth(), 0);
damageShield.SchoolMask = (uint)spellInfo.SchoolMask;
damageShield.LogAbsorbed = damageInfo1.GetAbsorb();
@@ -1183,6 +1185,7 @@ namespace Game.Entities
dmgInfo.attacker = this;
dmgInfo.target = target;
dmgInfo.damage = Damage - AbsorbDamage - Resist - BlockedAmount;
dmgInfo.originalDamage = Damage;
dmgInfo.damageSchoolMask = (uint)damageSchoolMask;
dmgInfo.absorb = AbsorbDamage;
dmgInfo.resist = Resist;
@@ -1197,6 +1200,7 @@ namespace Game.Entities
packet.AttackerGUID = damageInfo.attacker.GetGUID();
packet.VictimGUID = damageInfo.target.GetGUID();
packet.Damage = (int)damageInfo.damage;
packet.OriginalDamage = (int)damageInfo.originalDamage;
int overkill = (int)(damageInfo.damage - damageInfo.target.GetHealth());
packet.OverDamage = (overkill < 0 ? -1 : overkill);
@@ -1212,9 +1216,9 @@ namespace Game.Entities
packet.BlockAmount = (int)damageInfo.blocked_amount;
packet.LogData.Initialize(damageInfo.attacker);
SandboxScalingData sandboxScalingData = new SandboxScalingData();
if (sandboxScalingData.GenerateDataForUnits(damageInfo.attacker, damageInfo.target))
packet.SandboxScaling = sandboxScalingData;
ContentTuningParams contentTuningParams = new ContentTuningParams();
if (contentTuningParams.GenerateDataForUnits(damageInfo.attacker, damageInfo.target))
packet.ContentTuning = contentTuningParams;
SendCombatLogMessage(packet);
}
@@ -1321,6 +1325,8 @@ namespace Game.Entities
unit.SetInCombatState(PvP, enemy);
unit.SetFlag(UnitFields.Flags, UnitFlags.PetInCombat);
}
ProcSkillsAndAuras(enemy, ProcFlags.EnterCombat, ProcFlags.None, ProcFlagsSpellType.MaskAll, ProcFlagsSpellPhase.None, ProcFlagsHit.None, null, null, null);
}
internal void SendCombatLogMessage(CombatLogServerPacket combatLog)
@@ -1770,6 +1776,7 @@ namespace Game.Entities
damageInfo.damageSchoolMask = (uint)SpellSchoolMask.Normal;
damageInfo.attackType = attackType;
damageInfo.damage = 0;
damageInfo.originalDamage = 0;
damageInfo.cleanDamage = 0;
damageInfo.absorb = 0;
damageInfo.resist = 0;
@@ -1838,18 +1845,20 @@ namespace Game.Entities
case MeleeHitOutcome.Evade:
damageInfo.HitInfo |= HitInfo.Miss | HitInfo.SwingNoHitSound;
damageInfo.TargetState = VictimState.Evades;
damageInfo.originalDamage = damageInfo.damage;
damageInfo.damage = 0;
damageInfo.cleanDamage = 0;
return;
case MeleeHitOutcome.Miss:
damageInfo.HitInfo |= HitInfo.Miss;
damageInfo.TargetState = VictimState.Intact;
damageInfo.originalDamage = damageInfo.damage;
damageInfo.damage = 0;
damageInfo.cleanDamage = 0;
break;
case MeleeHitOutcome.Normal:
damageInfo.TargetState = VictimState.Hit;
damageInfo.originalDamage = damageInfo.damage;
break;
case MeleeHitOutcome.Crit:
damageInfo.HitInfo |= HitInfo.CriticalHit;
@@ -1862,19 +1871,25 @@ namespace Game.Entities
if (mod != 0)
MathFunctions.AddPct(ref damageInfo.damage, mod);
damageInfo.originalDamage = damageInfo.damage;
break;
case MeleeHitOutcome.Parry:
damageInfo.TargetState = VictimState.Parry;
damageInfo.originalDamage = damageInfo.damage;
damageInfo.cleanDamage += damageInfo.damage;
damageInfo.damage = 0;
break;
case MeleeHitOutcome.Dodge:
damageInfo.TargetState = VictimState.Dodge;
damageInfo.originalDamage = damageInfo.damage;
damageInfo.cleanDamage += damageInfo.damage;
damageInfo.damage = 0;
break;
case MeleeHitOutcome.Block:
damageInfo.TargetState = VictimState.Hit;
damageInfo.HitInfo |= HitInfo.Block;
damageInfo.originalDamage = damageInfo.damage;
// 30% damage blocked, double blocked amount if block is critical
damageInfo.blocked_amount = MathFunctions.CalculatePct(damageInfo.damage, damageInfo.target.isBlockCritical() ? damageInfo.target.GetBlockPercent() * 2 : damageInfo.target.GetBlockPercent());
damageInfo.damage -= damageInfo.blocked_amount;
@@ -1883,6 +1898,7 @@ namespace Game.Entities
case MeleeHitOutcome.Glancing:
damageInfo.HitInfo |= HitInfo.Glancing;
damageInfo.TargetState = VictimState.Hit;
damageInfo.originalDamage = damageInfo.damage;
int leveldif = (int)victim.getLevel() - (int)getLevel();
if (leveldif > 3)
leveldif = 3;
@@ -1896,6 +1912,7 @@ namespace Game.Entities
damageInfo.TargetState = VictimState.Hit;
// 150% normal damage
damageInfo.damage += (damageInfo.damage / 2);
damageInfo.originalDamage = damageInfo.damage;
break;
default:
@@ -2495,6 +2512,7 @@ namespace Game.Entities
CleanDamage cleanDamage = new CleanDamage(splitDamage, 0, WeaponAttackType.BaseAttack, MeleeHitOutcome.Normal);
DealDamage(caster, splitDamage, cleanDamage, DamageEffectType.Direct, damageInfo.GetSchoolMask(), itr.GetSpellInfo(), false);
log.damage = splitDamage;
log.originalDamage = splitDamage;
log.absorb = split_absorb;
SendSpellNonMeleeDamageLog(log);
@@ -2682,7 +2700,7 @@ namespace Game.Entities
for (var i = SpellSchools.Holy; i < SpellSchools.Max; ++i)
{
if (Convert.ToBoolean((int)spellProto.GetSchoolMask() & (1 << (int)i)))
maxModDamagePercentSchool = Math.Max(maxModDamagePercentSchool, GetFloatValue(PlayerFields.ModDamageDonePct + (int)i));
maxModDamagePercentSchool = Math.Max(maxModDamagePercentSchool, GetFloatValue(ActivePlayerFields.ModDamageDonePct + (int)i));
}
DoneTotalMod *= maxModDamagePercentSchool;
+13 -2
View File
@@ -226,6 +226,7 @@ namespace Game.Entities
m_attacker = attacker;
m_victim = victim;
m_damage = damage;
m_originalDamage = damage;
m_spellInfo = spellInfo;
m_schoolMask = schoolMask;
m_damageType = damageType;
@@ -237,6 +238,7 @@ namespace Game.Entities
m_attacker = dmgInfo.attacker;
m_victim = dmgInfo.target;
m_damage = dmgInfo.damage;
m_originalDamage = dmgInfo.damage;
m_spellInfo = null;
m_schoolMask = (SpellSchoolMask)dmgInfo.damageSchoolMask;
m_damageType = DamageEffectType.Direct;
@@ -357,6 +359,7 @@ namespace Game.Entities
DamageEffectType GetDamageType() { return m_damageType; }
public WeaponAttackType GetAttackType() { return m_attackType; }
public uint GetDamage() { return m_damage; }
public uint GetOriginalDamage() { return m_originalDamage; }
public uint GetAbsorb() { return m_absorb; }
public uint GetResist() { return m_resist; }
uint GetBlock() { return m_block; }
@@ -365,6 +368,7 @@ namespace Game.Entities
Unit m_attacker;
Unit m_victim;
uint m_damage;
uint m_originalDamage;
SpellInfo m_spellInfo;
SpellSchoolMask m_schoolMask;
DamageEffectType m_damageType;
@@ -382,6 +386,7 @@ namespace Game.Entities
_healer = healer;
_target = target;
_heal = heal;
_originalHeal = heal;
_spellInfo = spellInfo;
_schoolMask = schoolMask;
}
@@ -400,6 +405,7 @@ namespace Game.Entities
public Unit GetHealer() { return _healer; }
public Unit GetTarget() { return _target; }
public uint GetHeal() { return _heal; }
public uint GetOriginalHeal() { return _originalHeal; }
public uint GetEffectiveHeal() { return _effectiveHeal; }
public uint GetAbsorb() { return _absorb; }
public SpellInfo GetSpellInfo() { return _spellInfo; }
@@ -409,6 +415,7 @@ namespace Game.Entities
Unit _healer;
Unit _target;
uint _heal;
uint _originalHeal;
uint _effectiveHeal;
uint _absorb;
SpellInfo _spellInfo;
@@ -422,6 +429,7 @@ namespace Game.Entities
public Unit target { get; set; } // Target for damage
public uint damageSchoolMask { get; set; }
public uint damage;
public uint originalDamage;
public uint absorb;
public uint resist;
public uint blocked_amount { get; set; }
@@ -454,6 +462,7 @@ namespace Game.Entities
public uint SpellId;
public uint SpellXSpellVisualID;
public uint damage;
public uint originalDamage;
public SpellSchoolMask schoolMask;
public uint absorb;
public uint resist;
@@ -528,10 +537,11 @@ namespace Game.Entities
public class SpellPeriodicAuraLogInfo
{
public SpellPeriodicAuraLogInfo(AuraEffect _auraEff, uint _damage, int _overDamage, uint _absorb, uint _resist, float _multiplier, bool _critical)
public SpellPeriodicAuraLogInfo(AuraEffect _auraEff, uint _damage, uint _originalDamage, uint _overDamage, uint _absorb, uint _resist, float _multiplier, bool _critical)
{
auraEff = _auraEff;
damage = _damage;
originalDamage = _originalDamage;
overDamage = _overDamage;
absorb = _absorb;
resist = _resist;
@@ -541,7 +551,8 @@ namespace Game.Entities
public AuraEffect auraEff;
public uint damage;
public int overDamage; // overkill/overheal
public uint originalDamage;
public uint overDamage; // overkill/overheal
public uint absorb;
public uint resist;
public float multiplier;
+16 -3
View File
@@ -543,7 +543,8 @@ namespace Game.Entities
return false;
}
bool turn = (GetOrientation() != orientation);
// Check if angular distance changed
bool turn = MathFunctions.fuzzyGt(Math.PI - Math.Abs(Math.Abs(GetOrientation() - orientation) - Math.PI), 0.0f);
// G3D::fuzzyEq won't help here, in some cases magnitudes differ by a little more than G3D::eps, but should be considered equal
bool relocated = (teleport ||
Math.Abs(GetPositionX() - x) > 0.001f ||
@@ -1290,6 +1291,12 @@ namespace Game.Entities
player.UnsummonPetTemporaryIfAny();
}
// if we have charmed npc, stun him also (everywhere)
Unit charm = player.GetCharm();
if (charm)
if (charm.GetTypeId() == TypeId.Unit)
charm.SetFlag(UnitFields.Flags, UnitFlags.Stunned);
player.SendMovementSetCollisionHeight(player.GetCollisionHeight(true));
}
@@ -1335,6 +1342,12 @@ namespace Game.Entities
}
else
player.ResummonPetTemporaryUnSummonedIfAny();
// if we have charmed npc, remove stun also
Unit charm = player.GetCharm();
if (charm)
if (charm.GetTypeId() == TypeId.Unit && charm.HasFlag(UnitFields.Flags, UnitFlags.Stunned) && !charm.HasUnitState(UnitState.Stunned))
charm.RemoveFlag(UnitFields.Flags, UnitFlags.Stunned);
}
}
@@ -1345,7 +1358,7 @@ namespace Game.Entities
return false;
m_vehicleKit = new Vehicle(this, vehInfo, creatureEntry);
m_updateFlag |= UpdateFlag.Vehicle;
m_updateFlag.Vehicle = true;
m_unitTypeMask |= UnitTypeMask.Vehicle;
if (!loading)
@@ -1366,7 +1379,7 @@ namespace Game.Entities
m_vehicleKit = null;
m_updateFlag &= ~UpdateFlag.Vehicle;
m_updateFlag.Vehicle = false;
m_unitTypeMask &= ~UnitTypeMask.Vehicle;
RemoveFlag64(UnitFields.NpcFlags, NPCFlags.SpellClick | NPCFlags.PlayerVehicle);
}
+1 -1
View File
@@ -202,7 +202,7 @@ namespace Game.Entities
{
SetCritterGUID(minion.GetGUID());
if (GetTypeId() == TypeId.Player)
minion.SetGuidValue(UnitFields.BattlePetCompanionGuid, GetGuidValue(PlayerFields.SummonedBattlePetId));
minion.SetGuidValue(UnitFields.BattlePetCompanionGuid, GetGuidValue(ActivePlayerFields.SummonedBattlePetId));
}
// PvP, FFAPvP
+21 -33
View File
@@ -47,7 +47,7 @@ namespace Game.Entities
{
if (IsTypeId(TypeId.Player))
{
float overrideSP = GetFloatValue(PlayerFields.OverrideSpellPowerByApPct);
float overrideSP = GetFloatValue(ActivePlayerFields.OverrideSpellPowerByApPct);
if (overrideSP > 0.0f)
return (int)(MathFunctions.CalculatePct(GetTotalAttackPowerValue(WeaponAttackType.BaseAttack), overrideSP) + 0.5f);
}
@@ -190,7 +190,7 @@ namespace Game.Entities
for (int i = 0; i < (int)SpellSchools.Max; ++i)
{
if (Convert.ToBoolean((int)spellProto.GetSchoolMask() & (1 << i)))
maxModDamagePercentSchool = Math.Max(maxModDamagePercentSchool, GetFloatValue(PlayerFields.ModDamageDonePct + i));
maxModDamagePercentSchool = Math.Max(maxModDamagePercentSchool, GetFloatValue(ActivePlayerFields.ModDamageDonePct + i));
}
}
else
@@ -338,7 +338,7 @@ namespace Game.Entities
{
if (IsTypeId(TypeId.Player))
{
float overrideSP = GetFloatValue(PlayerFields.OverrideSpellPowerByApPct);
float overrideSP = GetFloatValue(ActivePlayerFields.OverrideSpellPowerByApPct);
if (overrideSP > 0.0f)
return (uint)(MathFunctions.CalculatePct(GetTotalAttackPowerValue(WeaponAttackType.BaseAttack), overrideSP) + 0.5f);
}
@@ -503,7 +503,7 @@ namespace Game.Entities
return 1.0f;
if (IsPlayer())
return GetFloatValue(PlayerFields.ModHealingDonePct);
return GetFloatValue(ActivePlayerFields.ModHealingDonePct);
float DoneTotalMod = 1.0f;
@@ -640,7 +640,7 @@ namespace Game.Entities
crit_chance = 0.0f;
// For other schools
else if (IsTypeId(TypeId.Player))
crit_chance = GetFloatValue(PlayerFields.CritPercentage);
crit_chance = GetFloatValue(ActivePlayerFields.CritPercentage);
else
crit_chance = m_baseSpellCritChance;
@@ -1588,11 +1588,13 @@ namespace Game.Entities
var schoolList = m_spellImmune[(int)SpellImmunity.School];
foreach (var pair in schoolList)
{
if ((pair.Key & (uint)spellInfo.GetSchoolMask()) == 0)
continue;
SpellInfo immuneSpellInfo = Global.SpellMgr.GetSpellInfo(pair.Value);
if (Convert.ToBoolean(pair.Key & (uint)spellInfo.GetSchoolMask())
&& !(immuneSpellInfo != null && immuneSpellInfo.IsPositive() && spellInfo.IsPositive() && IsFriendlyTo(caster))
&& !spellInfo.CanPierceImmuneAura(immuneSpellInfo))
return true;
if (!(immuneSpellInfo != null && immuneSpellInfo.IsPositive() && spellInfo.IsPositive() && caster && IsFriendlyTo(caster)))
if (!spellInfo.CanPierceImmuneAura(immuneSpellInfo))
return true;
}
return false;
@@ -2234,29 +2236,13 @@ namespace Game.Entities
spellHealLog.TargetGUID = healInfo.GetTarget().GetGUID();
spellHealLog.CasterGUID = healInfo.GetHealer().GetGUID();
spellHealLog.SpellID = healInfo.GetSpellInfo().Id;
spellHealLog.Health = healInfo.GetHeal();
spellHealLog.OriginalHeal = (int)healInfo.GetOriginalHeal();
spellHealLog.OverHeal = healInfo.GetHeal() - healInfo.GetEffectiveHeal();
spellHealLog.Absorbed = healInfo.GetAbsorb();
spellHealLog.Crit = critical;
// @todo: 6.x Has to be implemented
/*
var hasCritRollMade = spellHealLog.WriteBit("HasCritRollMade");
var hasCritRollNeeded = spellHealLog.WriteBit("HasCritRollNeeded");
var hasLogData = spellHealLog.WriteBit("HasLogData");
if (hasCritRollMade)
packet.ReadSingle("CritRollMade");
if (hasCritRollNeeded)
packet.ReadSingle("CritRollNeeded");
if (hasLogData)
SpellParsers.ReadSpellCastLogData(packet);
*/
spellHealLog.LogData.Initialize(healInfo.GetTarget());
SendCombatLogMessage(spellHealLog);
}
@@ -2411,6 +2397,7 @@ namespace Game.Entities
damage = 0;
damageInfo.damage = (uint)damage;
damageInfo.originalDamage = (uint)damage;
DamageInfo dmgInfo = new DamageInfo(damageInfo, DamageEffectType.SpellDirect, WeaponAttackType.BaseAttack, ProcFlagsHit.None);
CalcAbsorbResist(dmgInfo);
damageInfo.absorb = dmgInfo.GetAbsorb();
@@ -2456,6 +2443,7 @@ namespace Game.Entities
packet.CastID = log.castId;
packet.SpellID = (int)log.SpellId;
packet.Damage = (int)log.damage;
packet.OriginalDamage = (int)log.originalDamage;
if (log.damage > log.preHitHealth)
packet.Overkill = (int)(log.damage - log.preHitHealth);
else
@@ -2468,9 +2456,9 @@ namespace Game.Entities
packet.Periodic = log.periodicLog;
packet.Flags = (int)log.HitInfo;
SandboxScalingData sandboxScalingData = new SandboxScalingData();
if (sandboxScalingData.GenerateDataForUnits(log.attacker, log.target))
packet.SandboxScaling.Set(sandboxScalingData);
ContentTuningParams contentTuningParams = new ContentTuningParams();
if (contentTuningParams.GenerateDataForUnits(log.attacker, log.target))
packet.ContentTuning.Set(contentTuningParams);
SendCombatLogMessage(packet);
}
@@ -2488,6 +2476,7 @@ namespace Game.Entities
SpellPeriodicAuraLog.SpellLogEffect spellLogEffect = new SpellPeriodicAuraLog.SpellLogEffect();
spellLogEffect.Effect = (uint)aura.GetAuraType();
spellLogEffect.Amount = info.damage;
spellLogEffect.OriginalDamage = (int)info.originalDamage;
spellLogEffect.OverHealOrKill = (uint)info.overDamage;
spellLogEffect.SchoolMaskOrPower = (uint)aura.GetSpellInfo().GetSchoolMask();
spellLogEffect.AbsorbedOrAmplitude = info.absorb;
@@ -2495,11 +2484,10 @@ namespace Game.Entities
spellLogEffect.Crit = info.critical;
// @todo: implement debug info
SandboxScalingData sandboxScalingData = new SandboxScalingData();
ContentTuningParams contentTuningParams = new ContentTuningParams();
Unit caster = Global.ObjAccessor.GetUnit(this, aura.GetCasterGUID());
if (caster)
if (sandboxScalingData.GenerateDataForUnits(caster, this))
spellLogEffect.SandboxScaling.Set(sandboxScalingData);
if (caster && contentTuningParams.GenerateDataForUnits(caster, this))
spellLogEffect.ContentTuning.Set(contentTuningParams);
data.Effects.Add(spellLogEffect);
+15 -12
View File
@@ -48,7 +48,7 @@ namespace Game.Entities
objectTypeId = TypeId.Unit;
objectTypeMask |= TypeMask.Unit;
m_updateFlag = UpdateFlag.Living;
m_updateFlag.MovementUpdate = true;
m_modAttackSpeedPct = new float[] { 1.0f, 1.0f, 1.0f };
m_deathState = DeathState.Alive;
@@ -2076,9 +2076,9 @@ namespace Game.Entities
{
return (Race)GetByteValue(UnitFields.Bytes0, 0);
}
public long getRaceMask()
public ulong getRaceMask()
{
return (1 << ((int)GetRace() - 1));
return (1ul << ((int)GetRace() - 1));
}
public Class GetClass()
{
@@ -2093,13 +2093,15 @@ namespace Game.Entities
return (Gender)GetByteValue(UnitFields.Bytes0, 3);
}
public void SetNativeDisplayId(uint modelId)
public void SetNativeDisplayId(uint displayId, float displayScale = 1f)
{
SetUInt32Value(UnitFields.NativeDisplayId, modelId);
SetUInt32Value(UnitFields.NativeDisplayId, displayId);
SetFloatValue(UnitFields.NativeXDisplayScale, displayScale);
}
public virtual void SetDisplayId(uint modelId)
public virtual void SetDisplayId(uint modelId, float displayScale = 1f)
{
SetUInt32Value(UnitFields.DisplayId, modelId);
SetFloatValue(UnitFields.DisplayScale, displayScale);
// Set Gender by modelId
CreatureModelInfo minfo = Global.ObjectMgr.GetCreatureModelInfo(modelId);
if (minfo != null)
@@ -2109,7 +2111,10 @@ namespace Game.Entities
{
return GetUInt32Value(UnitFields.NativeDisplayId);
}
public float GetNativeDisplayScale()
{
return GetFloatValue(UnitFields.NativeXDisplayScale);
}
public virtual Unit GetOwner()
{
ObjectGuid ownerid = GetOwnerGUID();
@@ -2570,7 +2575,7 @@ namespace Game.Entities
{
CreatureTemplate ci = Global.ObjectMgr.GetCreatureTemplate((uint)eff.GetMiscValue());
if (ci != null)
if (!IsDisallowedMountForm(eff.GetId(), ShapeShiftForm.None, ObjectManager.ChooseDisplayId(ci)))
if (!IsDisallowedMountForm(eff.GetId(), ShapeShiftForm.None, ObjectManager.ChooseDisplayId(ci).CreatureDisplayID))
handledAura = eff;
}
}
@@ -2642,7 +2647,7 @@ namespace Game.Entities
if (target == this)
visibleFlag |= UpdateFieldFlags.Private;
else if (IsTypeId(TypeId.Player))
valCount = (int)PlayerFields.EndNotSelf;
valCount = (int)PlayerFields.End;
UpdateMask updateMask = new UpdateMask(valCount);
@@ -2684,8 +2689,6 @@ namespace Game.Entities
}
// FIXME: Some values at server stored in float format but must be sent to client in public uint format
else if ((index >= (int)UnitFields.NegStat && index < (int)UnitFields.NegStat + (int)Stats.Max) ||
(index >= (int)UnitFields.ResistanceBuffModsPositive && index < ((int)UnitFields.ResistanceBuffModsPositive + (int)SpellSchools.Max)) ||
(index >= (int)UnitFields.ResistanceBuffModsNegative && index < ((int)UnitFields.ResistanceBuffModsNegative + (int)SpellSchools.Max)) ||
(index >= (int)UnitFields.PosStat && index < (int)UnitFields.PosStat + (int)Stats.Max))
{
fieldBuffer.WriteUInt32((uint)GetFloatValue(index));
@@ -2727,7 +2730,7 @@ namespace Game.Entities
if (cinfo.FlagsExtra.HasAnyFlag(CreatureFlagsExtra.Trigger))
if (target.IsGameMaster())
displayId = cinfo.GetFirstVisibleModel();
displayId = cinfo.GetFirstVisibleModel().CreatureDisplayID;
}
fieldBuffer.WriteUInt32(displayId);