mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/Pets: Adjust pet slot saving logic after constant changes in 22e823b5f9
This commit is contained in:
@@ -732,7 +732,7 @@ void CharacterDatabaseConnection::DoPrepareStatements()
|
||||
PrepareStatement(CHAR_UPD_CHAR_PET_NAME, "UPDATE character_pet SET name = ?, renamed = 1 WHERE owner = ? AND id = ?", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_UPD_CHAR_PET_SLOT_BY_ID, "UPDATE character_pet SET slot = ? WHERE owner = ? AND id = ?", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_DEL_CHAR_PET_BY_ID, "DELETE FROM character_pet WHERE id = ?", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_DEL_CHAR_PET_BY_SLOT, "DELETE FROM character_pet WHERE owner = ? AND (slot = ? OR slot > ?)", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_DEL_CHAR_PET_BY_SLOT, "DELETE FROM character_pet WHERE owner = ? AND slot IN (?, ?)", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_DEL_ALL_PET_SPELLS_BY_OWNER, "DELETE FROM pet_spell WHERE guid in (SELECT id FROM character_pet WHERE owner=?)", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_UPD_PET_SPECS_BY_OWNER, "UPDATE character_pet SET specialization = 0 WHERE owner=?", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_INS_PET, "INSERT INTO character_pet (id, entry, owner, modelid, level, exp, Reactstate, slot, name, renamed, curhealth, curmana, abdata, savetime, CreatedBySpell, PetType, specialization) "
|
||||
|
||||
@@ -511,12 +511,12 @@ void Pet::SavePetToDB(PetSaveMode mode)
|
||||
trans->Append(stmt);
|
||||
|
||||
// prevent existence another hunter pet in PET_SAVE_AS_CURRENT and PET_SAVE_NOT_IN_SLOT
|
||||
if (getPetType() == HUNTER_PET && (mode == PET_SAVE_AS_CURRENT || mode > PET_SAVE_LAST_STABLE_SLOT))
|
||||
if (getPetType() == HUNTER_PET && (mode == PET_SAVE_AS_CURRENT || mode == PET_SAVE_NOT_IN_SLOT))
|
||||
{
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_PET_BY_SLOT);
|
||||
stmt->setUInt64(0, ownerLowGUID);
|
||||
stmt->setUInt8(1, uint8(PET_SAVE_AS_CURRENT));
|
||||
stmt->setUInt8(2, uint8(PET_SAVE_LAST_STABLE_SLOT));
|
||||
stmt->setInt16(1, mode);
|
||||
stmt->setInt16(2, PET_SAVE_NOT_IN_SLOT);
|
||||
trans->Append(stmt);
|
||||
}
|
||||
|
||||
|
||||
@@ -21959,7 +21959,7 @@ void Player::RemovePet(Pet* pet, PetSaveMode mode, bool returnreagent)
|
||||
{
|
||||
// Handle removing pet while it is in "temporarily unsummoned" state, for example on mount
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_PET_SLOT_BY_ID);
|
||||
stmt->setUInt8(0, PET_SAVE_NOT_IN_SLOT);
|
||||
stmt->setInt16(0, PET_SAVE_NOT_IN_SLOT);
|
||||
stmt->setUInt64(1, GetGUID().GetCounter());
|
||||
stmt->setUInt32(2, m_petStable->CurrentPet->PetNumber);
|
||||
CharacterDatabase.Execute(stmt);
|
||||
@@ -28309,7 +28309,7 @@ void Player::_LoadPetStable(PreparedQueryResult result)
|
||||
petInfo.Level = fields[3].GetUInt16();
|
||||
petInfo.Experience = fields[4].GetUInt32();
|
||||
petInfo.ReactState = ReactStates(fields[5].GetUInt8());
|
||||
PetSaveMode slot = PetSaveMode(fields[6].GetUInt8());
|
||||
PetSaveMode slot = PetSaveMode(fields[6].GetInt16());
|
||||
petInfo.Name = fields[7].GetString();
|
||||
petInfo.WasRenamed = fields[8].GetBool();
|
||||
petInfo.Health = fields[9].GetUInt32();
|
||||
|
||||
Reference in New Issue
Block a user