[8101] Prevent use talents as quest rewards or spell_learn_spell learned spells.

This commit is contained in:
VladimirMangos 2009-07-01 06:40:43 +04:00 committed by tomrus88
parent a7cbc7d8ec
commit 91f26272ec
3 changed files with 26 additions and 6 deletions

View file

@ -3595,13 +3595,20 @@ void ObjectMgr::LoadQuests()
qinfo->RewSpell = 0; // no spell reward will display for this quest qinfo->RewSpell = 0; // no spell reward will display for this quest
} }
else if(!SpellMgr::IsSpellValid(spellInfo)) if(!SpellMgr::IsSpellValid(spellInfo))
{ {
sLog.outErrorDb("Quest %u has `RewSpell` = %u but spell %u is broken, quest can't be done.", sLog.outErrorDb("Quest %u has `RewSpell` = %u but spell %u is broken, quest will not have a spell reward.",
qinfo->GetQuestId(),qinfo->RewSpell,qinfo->RewSpell); qinfo->GetQuestId(),qinfo->RewSpell,qinfo->RewSpell);
qinfo->RewSpell = 0; // no spell reward will display for this quest qinfo->RewSpell = 0; // no spell reward will display for this quest
} }
if(GetTalentSpellCost(qinfo->RewSpell))
{
sLog.outErrorDb("Quest %u has `RewSpell` = %u but spell %u is talent, quest will not have a spell reward.",
qinfo->GetQuestId(),qinfo->RewSpell,qinfo->RewSpell);
qinfo->RewSpell = 0; // no spell reward will display for this quest
continue;
}
} }
if(qinfo->RewSpellCast) if(qinfo->RewSpellCast)
@ -3615,13 +3622,20 @@ void ObjectMgr::LoadQuests()
qinfo->RewSpellCast = 0; // no spell will be casted on player qinfo->RewSpellCast = 0; // no spell will be casted on player
} }
else if(!SpellMgr::IsSpellValid(spellInfo)) if(!SpellMgr::IsSpellValid(spellInfo))
{ {
sLog.outErrorDb("Quest %u has `RewSpellCast` = %u but spell %u is broken, quest can't be done.", sLog.outErrorDb("Quest %u has `RewSpellCast` = %u but spell %u is broken, quest will not have a spell reward.",
qinfo->GetQuestId(),qinfo->RewSpellCast,qinfo->RewSpellCast); qinfo->GetQuestId(),qinfo->RewSpellCast,qinfo->RewSpellCast);
qinfo->RewSpellCast = 0; // no spell will be casted on player qinfo->RewSpellCast = 0; // no spell will be casted on player
} }
if(GetTalentSpellCost(qinfo->RewSpellCast))
{
sLog.outErrorDb("Quest %u has `RewSpell` = %u but spell %u is talent, quest will not have a spell reward.",
qinfo->GetQuestId(),qinfo->RewSpellCast,qinfo->RewSpellCast);
qinfo->RewSpellCast = 0; // no spell will be casted on player
continue;
}
} }
if(qinfo->RewMailTemplateId) if(qinfo->RewMailTemplateId)

View file

@ -1859,7 +1859,13 @@ void SpellMgr::LoadSpellLearnSpells()
if(!sSpellStore.LookupEntry(node.spell)) if(!sSpellStore.LookupEntry(node.spell))
{ {
sLog.outErrorDb("Spell %u listed in `spell_learn_spell` does not exist",node.spell); sLog.outErrorDb("Spell %u listed in `spell_learn_spell` learning not existed spell %u",spell_id,node.spell);
continue;
}
if(GetTalentSpellCost(node.spell))
{
sLog.outErrorDb("Spell %u listed in `spell_learn_spell` attempt learning talent spell %u, skipped",spell_id,node.spell);
continue; continue;
} }

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__ #ifndef __REVISION_NR_H__
#define __REVISION_NR_H__ #define __REVISION_NR_H__
#define REVISION_NR "8100" #define REVISION_NR "8101"
#endif // __REVISION_NR_H__ #endif // __REVISION_NR_H__