/// <summary> /// Tries to make the stabled pet the ActivePet /// </summary> /// <param name="stabledPermanentPet">The stabled pet to make Active.</param> /// <returns>True if the stabled was made Active.</returns> public void DeStablePet(PermanentPetRecord stabledPermanentPet) { m_StabledPetRecords.Remove(stabledPermanentPet); var pet = SpawnPet(stabledPermanentPet); pet.PermanentPetRecord.StabledSince = null; }
/// <summary> /// Tries to swap the ActivePet for a Stabled one. /// </summary> /// <param name="stabledPermanentPet">The stabled pet to swap out.</param> /// <returns>True if the Stabled Pet was swapped.</returns> public bool TrySwapStabledPet(PermanentPetRecord stabledPermanentPet) { if (StabledPetRecords.Count >= (StableSlotCount + 1)) { return(false); } var pet = m_activePet; if (pet == null) { return(false); } var record = pet.PetRecord as PermanentPetRecord; if (record == null) { return(false); } // Always set the stabled flag before changing the ActivePet // or the pet will be deleted! record.IsStabled = true; DeStablePet(stabledPermanentPet); return(true); }
static bool DeleteCharAccessories(uint charId) { try { SpellRecord.DeleteAll("OwnerId = " + charId); AuraRecord.DeleteAll("OwnerId = " + charId); ItemRecord.DeleteAll("OwnerId = " + charId); SkillRecord.DeleteAll("OwnerId = " + charId); SpecProfile.DeleteAll("CharacterId = " + charId); ReputationRecord.DeleteAll("OwnerId = " + charId); QuestRecord.DeleteAll("OwnerId = " + charId); SummonedPetRecord.DeleteAll("OwnerLowId = " + charId); PermanentPetRecord.DeleteAll("OwnerLowId = " + charId); MailMgr.ReturnValueMailFor(charId); MailMessage.DeleteAll("ReceiverId = " + charId); RelationMgr.Instance.RemoveRelations(charId); InstanceMgr.RemoveLog(charId); GroupMgr.Instance.RemoveOfflineCharacter(charId); AchievementRecord.DeleteAll("CharacterId = " + charId); AchievementProgressRecord.DeleteAll("CharacterId = " + charId); return(true); } catch (Exception ex) { LogUtil.ErrorException(ex, "Failed to delete character with Id: " + charId); return(false); } }
private void LoadPets() { IPetRecord activePetRecord = null; // load info for summoned pets if (m_record.PetSummonedCount > 0) { var pets = SummonedPetRecord.LoadSummonedPetRecords(m_record.EntityLowId); foreach (var pet in pets) { if (pet.IsActivePet) { activePetRecord = pet; } SummonedPetRecords.Add(pet); } } // load info for permanent pets if (m_record.PetCount > 0) { var pets = PermanentPetRecord.LoadPermanentPetRecords(m_record.EntityLowId); foreach (var pet in pets) { if (pet.IsActivePet) { activePetRecord = pet; } StabledPetRecords.Add(pet); } } // load active pet if (m_record.PetEntryId != 0 && IsPetActive) { if (activePetRecord != null) { var entry = activePetRecord.Entry; if (entry == null) { log.Warn("{0} has invalid PetEntryId: {1} ({2})", this, m_record.PetEntryId, (uint)m_record.PetEntryId); // put back for later (maybe NPCs were not loaded or loaded incorrectly): AddPetRecord(activePetRecord); } else { SpawnActivePet(activePetRecord); } } else { // active Pet does not exist in DB m_record.PetEntryId = 0; m_record.IsPetActive = false; } } }
private static void ReadButton(NPC pet, RealmPacketIn packet) { uint num = packet.ReadUInt32(); PetActionEntry petActionEntry = packet.ReadUInt32(); PermanentPetRecord permanentPetRecord = pet.PermanentPetRecord; if (num > permanentPetRecord.ActionButtons.Length) { return; } permanentPetRecord.ActionButtons[num] = petActionEntry; }