aboutsummaryrefslogtreecommitdiff
path: root/src/game/Pet.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/Pet.cpp')
-rw-r--r--src/game/Pet.cpp42
1 files changed, 6 insertions, 36 deletions
diff --git a/src/game/Pet.cpp b/src/game/Pet.cpp
index b1a058690e1..b5a42b2101f 100644
--- a/src/game/Pet.cpp
+++ b/src/game/Pet.cpp
@@ -108,7 +108,7 @@ bool Pet::LoadPetFromDB( Player* owner, uint32 petentry, uint32 petnumber, bool
uint32 ownerid = owner->GetGUIDLow();
- QueryResult *result;
+ QueryResult_AutoPtr result;
if (petnumber)
// known petnumber entry 0 1 2(?) 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
@@ -141,10 +141,7 @@ bool Pet::LoadPetFromDB( Player* owner, uint32 petentry, uint32 petnumber, bool
// update for case of current pet "slot = 0"
petentry = fields[1].GetUInt32();
if (!petentry)
- {
- delete result;
return false;
- }
uint32 summon_spell_id = fields[17].GetUInt32();
SpellEntry const* spellInfo = sSpellStore.LookupEntry(summon_spell_id);
@@ -153,20 +150,14 @@ bool Pet::LoadPetFromDB( Player* owner, uint32 petentry, uint32 petnumber, bool
// check temporary summoned pets like mage water elemental
if (current && is_temporary_summoned)
- {
- delete result;
return false;
- }
PetType pet_type = PetType(fields[18].GetUInt8());
if(pet_type==HUNTER_PET)
{
CreatureInfo const* creatureInfo = objmgr.GetCreatureTemplate(petentry);
if(!creatureInfo || !creatureInfo->isTameable(owner->CanTameExoticPets()))
- {
- delete result;
return false;
- }
}
uint32 pet_number = fields[0].GetUInt32();
@@ -174,17 +165,13 @@ bool Pet::LoadPetFromDB( Player* owner, uint32 petentry, uint32 petnumber, bool
if (current && owner->IsPetNeedBeTemporaryUnsummoned())
{
owner->SetTemporaryUnsummonedPetNumber(pet_number);
- delete result;
return false;
}
Map *map = owner->GetMap();
uint32 guid = objmgr.GenerateLowGuid(HIGHGUID_PET);
if (!Create(guid, map, owner->GetPhaseMask(), petentry, pet_number))
- {
- delete result;
return false;
- }
float px, py, pz;
owner->GetClosePoint(px, py, pz, GetObjectSize(), PET_FOLLOW_DIST, GetFollowAngle());
@@ -194,7 +181,6 @@ bool Pet::LoadPetFromDB( Player* owner, uint32 petentry, uint32 petnumber, bool
{
sLog.outError("Pet (guidlow %d, entry %d) not loaded. Suggested coordinates isn't valid (X: %f Y: %f)",
GetGUIDLow(), GetEntry(), GetPositionX(), GetPositionY());
- delete result;
return false;
}
@@ -206,7 +192,6 @@ bool Pet::LoadPetFromDB( Player* owner, uint32 petentry, uint32 petnumber, bool
if (cinfo->type == CREATURE_TYPE_CRITTER)
{
map->Add((Creature*)this);
- delete result;
return true;
}
@@ -324,7 +309,6 @@ bool Pet::LoadPetFromDB( Player* owner, uint32 petentry, uint32 petnumber, bool
CleanupActionBar(); // remove unknown spells from action bar after load
- delete result;
sLog.outDebug("New Pet has guid %u", GetGUIDLow());
owner->PetSpellInitialize();
@@ -349,7 +333,6 @@ bool Pet::LoadPetFromDB( Player* owner, uint32 petentry, uint32 petnumber, bool
{
m_declinedname->name[i] = fields2[i].GetCppString();
}
- delete result;
}
}
@@ -1067,7 +1050,7 @@ void Pet::_LoadSpellCooldowns()
m_CreatureSpellCooldowns.clear();
m_CreatureCategoryCooldowns.clear();
- QueryResult *result = CharacterDatabase.PQuery("SELECT spell,time FROM pet_spell_cooldown WHERE guid = '%u'",m_charmInfo->GetPetNumber());
+ QueryResult_AutoPtr result = CharacterDatabase.PQuery("SELECT spell,time FROM pet_spell_cooldown WHERE guid = '%u'",m_charmInfo->GetPetNumber());
if(result)
{
@@ -1103,8 +1086,6 @@ void Pet::_LoadSpellCooldowns()
}
while (result->NextRow());
- delete result;
-
if(!m_CreatureSpellCooldowns.empty() && GetOwner())
((Player*)GetOwner())->GetSession()->SendPacket(&data);
}
@@ -1131,7 +1112,7 @@ void Pet::_SaveSpellCooldowns()
void Pet::_LoadSpells()
{
- QueryResult *result = CharacterDatabase.PQuery("SELECT spell,active FROM pet_spell WHERE guid = '%u'",m_charmInfo->GetPetNumber());
+ QueryResult_AutoPtr result = CharacterDatabase.PQuery("SELECT spell,active FROM pet_spell WHERE guid = '%u'",m_charmInfo->GetPetNumber());
if (result)
{
@@ -1142,8 +1123,6 @@ void Pet::_LoadSpells()
addSpell(fields[0].GetUInt32(), ActiveStates(fields[1].GetUInt8()), PETSPELL_UNCHANGED);
}
while (result->NextRow());
-
- delete result;
}
}
@@ -1182,7 +1161,7 @@ void Pet::_LoadAuras(uint32 timediff)
{
sLog.outDebug("Loading auras for pet %u",GetGUIDLow());
- QueryResult *result = CharacterDatabase.PQuery("SELECT caster_guid,spell,effect_mask,recalculate_mask,stackcount,amount0,amount1,amount2,base_amount0,base_amount1,base_amount2,maxduration,remaintime,remaincharges FROM pet_aura WHERE guid = '%u'",m_charmInfo->GetPetNumber());
+ QueryResult_AutoPtr result = CharacterDatabase.PQuery("SELECT caster_guid,spell,effect_mask,recalculate_mask,stackcount,amount0,amount1,amount2,base_amount0,base_amount1,base_amount2,maxduration,remaintime,remaincharges FROM pet_aura WHERE guid = '%u'",m_charmInfo->GetPetNumber());
if (result)
{
@@ -1244,8 +1223,6 @@ void Pet::_LoadAuras(uint32 timediff)
}
}
while (result->NextRow());
-
- delete result;
}
}
@@ -1669,7 +1646,7 @@ void Pet::resetTalentsForAllPetsOf(Player* owner, Pet* online_pet /*= NULL*/)
// now need only reset for offline pets (all pets except online case)
uint32 except_petnumber = online_pet ? online_pet->GetCharmInfo()->GetPetNumber() : 0;
- QueryResult *resultPets = CharacterDatabase.PQuery(
+ QueryResult_AutoPtr resultPets = CharacterDatabase.PQuery(
"SELECT id FROM character_pet WHERE owner = '%u' AND id <> '%u'",
owner->GetGUIDLow(),except_petnumber);
@@ -1677,16 +1654,13 @@ void Pet::resetTalentsForAllPetsOf(Player* owner, Pet* online_pet /*= NULL*/)
if (!resultPets)
return;
- QueryResult *result = CharacterDatabase.PQuery(
+ QueryResult_AutoPtr result = CharacterDatabase.PQuery(
"SELECT DISTINCT pet_spell.spell FROM pet_spell, character_pet "
"WHERE character_pet.owner = '%u' AND character_pet.id = pet_spell.guid AND character_pet.id <> %u",
owner->GetGUIDLow(),except_petnumber);
if (!result)
- {
- delete resultPets;
return;
- }
bool need_comma = false;
std::ostringstream ss;
@@ -1707,8 +1681,6 @@ void Pet::resetTalentsForAllPetsOf(Player* owner, Pet* online_pet /*= NULL*/)
}
while (resultPets->NextRow());
- delete resultPets;
-
ss << ") AND spell IN (";
bool need_execute = false;
@@ -1730,8 +1702,6 @@ void Pet::resetTalentsForAllPetsOf(Player* owner, Pet* online_pet /*= NULL*/)
}
while (result->NextRow());
- delete result;
-
if (!need_execute)
return;