From 65657533abf3a75f6014a3ce59b402c157486586 Mon Sep 17 00:00:00 2001 From: VladimirMangos Date: Tue, 2 Jun 2009 10:59:07 +0400 Subject: [PATCH] [7941] Restore autocast pet spell state at load/resummon * Revert partly "[7903] Load and save for pets only talents." * Avoid use enum with bit size limit field (with unexpected work in cases use values negative for related biz size int type) --- src/game/Pet.cpp | 19 +++---------------- src/game/Pet.h | 3 +-- src/shared/revision_nr.h | 2 +- 3 files changed, 5 insertions(+), 19 deletions(-) diff --git a/src/game/Pet.cpp b/src/game/Pet.cpp index a85f2d7ab..7a2dd0551 100644 --- a/src/game/Pet.cpp +++ b/src/game/Pet.cpp @@ -1089,17 +1089,7 @@ void Pet::_LoadSpells() { Field *fields = result->Fetch(); - uint32 spell_id = fields[0].GetUInt32(); - - // load only pet talents, other spell types auto-learned - if(GetTalentSpellCost(spell_id)==0) - { - CharacterDatabase.PExecute("DELETE FROM pet_spell WHERE spell = '%u'",spell_id); - sLog.outError("Table `pet_spell` have non-talent spell %u , spell removed from table for all pets.",spell_id); - continue; - } - - addSpell(spell_id, ActiveStates(fields[1].GetUInt16()), PETSPELL_UNCHANGED,PETSPELL_TALENT); + addSpell(fields[0].GetUInt32(), ActiveStates(fields[1].GetUInt16()), PETSPELL_UNCHANGED); } while( result->NextRow() ); @@ -1113,8 +1103,8 @@ void Pet::_SaveSpells() { ++next; - // save only talent spells for pets, other spells auto-applied - if (itr->second.type != PETSPELL_TALENT) + // prevent saving family passives to DB + if (itr->second.type == PETSPELL_FAMILY) continue; switch(itr->second.state) @@ -1325,9 +1315,6 @@ bool Pet::addSpell(uint32 spell_id,ActiveStates active /*= ACT_DECIDE*/, PetSpel // talent: unlearn all other talent ranks (high and low) if(TalentSpellPos const* talentPos = GetTalentSpellPos(spell_id)) { - // propertly mark spell for allow save - newspell.type = PETSPELL_TALENT; - if(TalentEntry const *talentInfo = sTalentStore.LookupEntry( talentPos->talent_id )) { for(int i=0; i < MAX_TALENT_RANK; ++i) diff --git a/src/game/Pet.h b/src/game/Pet.h index 0ddc8fc56..55f679221 100644 --- a/src/game/Pet.h +++ b/src/game/Pet.h @@ -65,12 +65,11 @@ enum PetSpellType { PETSPELL_NORMAL = 0, PETSPELL_FAMILY = 1, - PETSPELL_TALENT = 2, }; struct PetSpell { - ActiveStates active : 16; + uint16 active; // use instead enum (not good use *uint16* limited enum in case when value in enum not possitive in *int16*) PetSpellState state : 8; PetSpellType type : 8; diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index a075ce0b8..71b7bbf85 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "7940" + #define REVISION_NR "7941" #endif // __REVISION_NR_H__