[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)
This commit is contained in:
VladimirMangos 2009-06-02 10:59:07 +04:00
parent 9166cd9ef3
commit 65657533ab
3 changed files with 5 additions and 19 deletions

View file

@ -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)