Core/BattlePets: Misc fixes
Port From (https://github.com/TrinityCore/TrinityCore/commit/0cfd14d2a0a52ceb0d8203c31c7c6c487775bcee)
This commit is contained in:
@@ -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])
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user