Core/BattlePets: Misc fixes

Port From (https://github.com/TrinityCore/TrinityCore/commit/0cfd14d2a0a52ceb0d8203c31c7c6c487775bcee)
This commit is contained in:
hondacrx
2021-10-03 20:27:14 -04:00
parent 1de76c0662
commit a5066c8b68
8 changed files with 71 additions and 20 deletions
+17
View File
@@ -1416,6 +1416,21 @@ namespace Game.Entities
SetStatFlatModifier(UnitMods.Armor, UnitModifierFlatType.Base, armor);
}
void SelectWildBattlePetLevel()
{
if (IsWildBattlePet())
{
byte wildBattlePetLevel = 1;
var areaTable = CliDB.AreaTableStorage.LookupByKey(GetZoneId());
if (areaTable != null)
if (areaTable.WildBattlePetLevelMin > 0)
wildBattlePetLevel = (byte)RandomHelper.URand(areaTable.WildBattlePetLevelMin, areaTable.WildBattlePetLevelMax);
SetWildBattlePetLevel(wildBattlePetLevel);
}
}
float _GetHealthMod(CreatureEliteType Rank)
{
switch (Rank) // define rates for each elite rank
@@ -3166,6 +3181,8 @@ namespace Game.Entities
SetSpawnHealth();
SelectWildBattlePetLevel();
// checked at creature_template loading
DefaultMovementType = (MovementGeneratorType)data.movementType;
@@ -1209,7 +1209,7 @@ namespace Game.Entities
public UpdateField<uint> MinItemLevel = new(96, 105);
public UpdateField<uint> MaxItemLevel = new(96, 106);
public UpdateField<int> AzeriteItemLevel = new(96, 107);
public UpdateField<int> WildBattlePetLevel = new(96, 108);
public UpdateField<uint> WildBattlePetLevel = new(96, 108);
public UpdateField<uint> BattlePetCompanionNameTimestamp = new(96, 109);
public UpdateField<int> InteractSpellID = new(96, 110);
public UpdateField<int> ScaleDuration = new(96, 111);
@@ -1401,7 +1401,7 @@ namespace Game.Entities
data.WriteUInt32(MinItemLevel);
data.WriteUInt32(MaxItemLevel);
data.WriteInt32(AzeriteItemLevel);
data.WriteInt32(WildBattlePetLevel);
data.WriteUInt32(WildBattlePetLevel);
data.WriteUInt32(BattlePetCompanionNameTimestamp);
data.WriteInt32(InteractSpellID);
data.WriteInt32(ScaleDuration);
@@ -1938,7 +1938,7 @@ namespace Game.Entities
}
if (changesMask[108])
{
data.WriteInt32(WildBattlePetLevel);
data.WriteUInt32(WildBattlePetLevel);
}
if (changesMask[109])
{
+1
View File
@@ -7399,6 +7399,7 @@ namespace Game.Entities
public void SetArenaFaction(byte arenaFaction) { SetUpdateFieldValue(m_values.ModifyValue(m_playerData).ModifyValue(m_playerData.ArenaFaction), arenaFaction); }
public void ApplyModFakeInebriation(int mod, bool apply) { ApplyModUpdateFieldValue(m_values.ModifyValue(m_playerData).ModifyValue(m_playerData.FakeInebriation), mod, apply); }
public void SetVirtualPlayerRealm(uint virtualRealmAddress) { SetUpdateFieldValue(m_values.ModifyValue(m_playerData).ModifyValue(m_playerData.VirtualPlayerRealm), virtualRealmAddress); }
public void SetCurrentBattlePetBreedQuality(byte battlePetBreedQuality) { SetUpdateFieldValue(m_values.ModifyValue(m_playerData).ModifyValue(m_playerData.CurrentBattlePetBreedQuality), battlePetBreedQuality); }
public void AddHeirloom(uint itemId, uint flags)
{
+8 -1
View File
@@ -183,7 +183,14 @@ namespace Game.Entities
SetCritterGUID(minion.GetGUID());
Player thisPlayer = ToPlayer();
if (thisPlayer != null)
minion.SetBattlePetCompanionGUID(thisPlayer.m_activePlayerData.SummonedBattlePetGUID);
{
var pet = thisPlayer.GetSession().GetBattlePetMgr().GetPet(thisPlayer.m_activePlayerData.SummonedBattlePetGUID);
if (pet != null)
{
minion.SetBattlePetCompanionGUID(thisPlayer.m_activePlayerData.SummonedBattlePetGUID);
minion.SetWildBattlePetLevel(pet.PacketInfo.Level);
}
}
}
// PvP, FFAPvP
+5
View File
@@ -767,6 +767,7 @@ namespace Game.Entities
public bool IsTabardDesigner() { return HasNpcFlag(NPCFlags.TabardDesigner); }
public bool IsAuctioner() { return HasNpcFlag(NPCFlags.Auctioneer); }
public bool IsArmorer() { return HasNpcFlag(NPCFlags.Repair); }
public bool IsWildBattlePet() { return HasNpcFlag(NPCFlags.WildBattlePet); }
public bool IsServiceProvider()
{
return HasNpcFlag(NPCFlags.Vendor | NPCFlags.Trainer | NPCFlags.FlightMaster |
@@ -1831,6 +1832,10 @@ namespace Game.Entities
public void SetCritterGUID(ObjectGuid guid) { SetUpdateFieldValue(m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.Critter), guid); }
public ObjectGuid GetBattlePetCompanionGUID() { return m_unitData.BattlePetCompanionGUID; }
public void SetBattlePetCompanionGUID(ObjectGuid guid) { SetUpdateFieldValue(m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.BattlePetCompanionGUID), guid); }
public void SetWildBattlePetLevel(uint wildBattlePetLevel) { SetUpdateFieldValue(m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.WildBattlePetLevel), wildBattlePetLevel); }
public uint GetWildBattlePetLevel() { return m_unitData.WildBattlePetLevel; }
public override ObjectGuid GetCharmerOrOwnerGUID()
{
return !GetCharmerGUID().IsEmpty() ? GetCharmerGUID() : GetOwnerGUID();