Updated to 8.2.0.31429 (scripts disabled atm, they still need updated)

Code Port from TrinityCore https://github.com/TrinityCore/TrinityCore
Casc from WoW-Tools https://github.com/WoW-Tools/CASCExplorer
This commit is contained in:
hondacrx
2019-08-14 11:20:42 -04:00
parent e4d500f4b5
commit 125e3b3ac7
232 changed files with 12268 additions and 14670 deletions
+37 -33
View File
@@ -174,8 +174,8 @@ namespace Game.Entities
PhasingHandler.InheritPhaseShift(this, owner);
setPetType(petType);
SetFaction(owner.getFaction());
SetUInt32Value(UnitFields.CreatedBySpell, summonSpellId);
SetFaction(owner.GetFaction());
SetCreatedBySpell(summonSpellId);
float px, py, pz;
if (IsCritter())
@@ -199,7 +199,8 @@ namespace Game.Entities
SetDisplayId(result.Read<uint>(3));
SetNativeDisplayId(result.Read<uint>(3));
uint petlevel = result.Read<ushort>(4);
SetUInt64Value(UnitFields.NpcFlags, (ulong)NPCFlags.None);
SetNpcFlags(NPCFlags.None);
SetNpcFlags2(NPCFlags2.None);
SetName(result.Read<string>(8));
switch (getPetType())
@@ -207,16 +208,15 @@ namespace Game.Entities
case PetType.Summon:
petlevel = owner.getLevel();
SetByteValue(UnitFields.Bytes0, 1, (byte)Class.Mage);
SetUInt32Value(UnitFields.Flags, (uint)UnitFlags.PvpAttackable); // this enables popup window (pet dismiss, cancel)
SetClass(Class.Mage);
SetUnitFlags(UnitFlags.PvpAttackable); // this enables popup window (pet dismiss, cancel)
break;
case PetType.Hunter:
SetByteValue(UnitFields.Bytes0, 1, (byte)Class.Warrior);
SetByteValue(UnitFields.Bytes0, 3, (byte)Gender.None);
SetClass(Class.Warrior);
SetGender(Gender.None);
SetSheath(SheathState.Melee);
SetByteFlag(UnitFields.Bytes2, UnitBytes2Offsets.PetFlags, (result.Read<bool>(9) ? UnitPetFlags.CanBeAbandoned : UnitPetFlags.CanBeRenamed | UnitPetFlags.CanBeAbandoned));
SetUInt32Value(UnitFields.Flags, (uint)UnitFlags.PvpAttackable); // this enables popup window (pet abandon, cancel)
SetPetFlags(result.Read<bool>(9) ? UnitPetFlags.CanBeAbandoned : UnitPetFlags.CanBeRenamed | UnitPetFlags.CanBeAbandoned);
SetUnitFlags(UnitFlags.PvpAttackable); // this enables popup window (pet abandon, cancel)
break;
default:
if (!IsPetGhoul())
@@ -224,11 +224,11 @@ namespace Game.Entities
break;
}
SetUInt32Value(UnitFields.PetNameTimestamp, (uint)Time.UnixTime); // cast can't be helped here
SetPetNameTimestamp((uint)Time.UnixTime); // cast can't be helped here
SetCreatorGUID(owner.GetGUID());
InitStatsForLevel(petlevel);
SetUInt32Value(UnitFields.PetExperience, result.Read<uint>(5));
SetPetExperience(result.Read<uint>(5));
SynchronizeLevelWithOwner();
@@ -443,16 +443,16 @@ namespace Game.Entities
stmt.AddValue(2, ownerLowGUID);
stmt.AddValue(3, GetNativeDisplayId());
stmt.AddValue(4, getLevel());
stmt.AddValue(5, GetUInt32Value(UnitFields.PetExperience));
stmt.AddValue(5, (uint)m_unitData.PetExperience);
stmt.AddValue(6, GetReactState());
stmt.AddValue(7, mode);
stmt.AddValue(8, GetName());
stmt.AddValue(9, HasByteFlag(UnitFields.Bytes2, UnitBytes2Offsets.PetFlags, UnitPetFlags.CanBeRenamed) ? 0 : 1);
stmt.AddValue(9, HasPetFlag(UnitPetFlags.CanBeRenamed) ? 0 : 1);
stmt.AddValue(10, curhealth);
stmt.AddValue(11, curmana);
stmt.AddValue(12, GenerateActionBarData());
stmt.AddValue(13, Time.UnixTime);
stmt.AddValue(14, GetUInt32Value(UnitFields.CreatedBySpell));
stmt.AddValue(14, (uint)m_unitData.CreatedBySpell);
stmt.AddValue(15, getPetType());
stmt.AddValue(16, m_petSpecialization);
trans.Append(stmt);
@@ -510,8 +510,8 @@ namespace Game.Entities
if (getPetType() == PetType.Hunter)
{
// pet corpse non lootable and non skinnable
SetUInt32Value(ObjectFields.DynamicFlags, (uint)UnitDynFlags.None);
RemoveFlag(UnitFields.Flags, UnitFlags.Skinnable);
SetDynamicFlags(UnitDynFlags.None);
RemoveUnitFlag(UnitFlags.Skinnable);
}
}
else if (getDeathState() == DeathState.Alive)
@@ -626,8 +626,8 @@ namespace Game.Entities
if (petlevel >= maxlevel)
return;
uint nextLvlXP = GetUInt32Value(UnitFields.PetNextLevelExp);
uint curXP = GetUInt32Value(UnitFields.PetExperience);
uint nextLvlXP = m_unitData.PetNextLevelExperience;
uint curXP = m_unitData.PetExperience;
uint newXP = curXP + xp;
// Check how much XP the pet should receive, and hand off have any left from previous levelups
@@ -639,10 +639,10 @@ namespace Game.Entities
GivePetLevel((int)petlevel);
nextLvlXP = GetUInt32Value(UnitFields.PetNextLevelExp);
nextLvlXP = m_unitData.PetNextLevelExperience;
}
// Not affected by special conditions - give it new XP
SetUInt32Value(UnitFields.PetExperience, petlevel < maxlevel ? newXP : 0);
SetPetExperience(petlevel < maxlevel ? newXP : 0);
}
public void GivePetLevel(int level)
@@ -652,8 +652,8 @@ namespace Game.Entities
if (getPetType() == PetType.Hunter)
{
SetUInt32Value(UnitFields.PetExperience, 0);
SetUInt32Value(UnitFields.PetNextLevelExp, (uint)(Global.ObjectMgr.GetXPForLevel((uint)level) * PetXPFactor));
SetPetExperience(0);
SetPetNextLevelExperience((uint)(Global.ObjectMgr.GetXPForLevel((uint)level) * PetXPFactor));
}
InitStatsForLevel((uint)level);
@@ -712,18 +712,19 @@ namespace Game.Entities
if (!Create(map.GenerateLowGuid(HighGuid.Pet), map, cinfo.Entry))
return false;
SetUInt32Value(UnitFields.PetNameTimestamp, 0);
SetUInt32Value(UnitFields.PetExperience, 0);
SetUInt32Value(UnitFields.PetNextLevelExp, (uint)(Global.ObjectMgr.GetXPForLevel(getLevel() + 1) * PetXPFactor));
SetUInt64Value(UnitFields.NpcFlags, (ulong)NPCFlags.None);
SetPetNameTimestamp(0);
SetPetExperience(0);
SetPetNextLevelExperience((uint)(Global.ObjectMgr.GetXPForLevel(getLevel() + 1) * PetXPFactor));
SetNpcFlags(NPCFlags.None);
SetNpcFlags2(NPCFlags2.None);
if (cinfo.CreatureType == CreatureType.Beast)
{
SetByteValue(UnitFields.Bytes0, 1, (byte)Class.Warrior);
SetByteValue(UnitFields.Bytes0, 3, (byte)Gender.None);
SetUInt32Value(UnitFields.DisplayPower, (uint)PowerType.Focus);
SetClass(Class.Warrior);
SetGender(Gender.None);
SetPowerType(PowerType.Focus);
SetSheath(SheathState.Melee);
SetByteFlag(UnitFields.Bytes2, UnitBytes2Offsets.PetFlags, (UnitPetFlags.CanBeRenamed | UnitPetFlags.CanBeAbandoned));
SetPetFlags(UnitPetFlags.CanBeRenamed | UnitPetFlags.CanBeAbandoned);
}
return true;
@@ -1347,7 +1348,7 @@ namespace Game.Entities
return false;
// Force regen flag for player pets, just like we do for players themselves
SetFlag(UnitFields.Flags2, UnitFlags2.RegeneratePower);
AddUnitFlag2(UnitFlags2.RegeneratePower);
SetSheath(SheathState.Melee);
return true;
@@ -1472,7 +1473,7 @@ namespace Game.Entities
}
public PetType getPetType() { return m_petType; }
void setPetType(PetType type) { m_petType = type; }
public void setPetType(PetType type) { m_petType = type; }
public bool isControlled() { return getPetType() == PetType.Summon || getPetType() == PetType.Hunter; }
public bool isTemporarySummoned() { return m_duration > 0; }
@@ -1490,6 +1491,9 @@ namespace Game.Entities
public void SetDuration(uint dur) { m_duration = (int)dur; }
public int GetDuration() { return m_duration; }
public void SetPetExperience(uint xp) { SetUpdateFieldValue(m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.PetExperience), xp); }
public void SetPetNextLevelExperience(uint xp) { SetUpdateFieldValue(m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.PetNextLevelExperience), xp); }
public ushort GetSpecialization() { return m_petSpecialization; }
public GroupUpdatePetFlags GetGroupUpdateFlag() { return m_groupUpdateMask; }