diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp index fd8988999d7..a0ec9084c88 100644 --- a/src/game/SpellMgr.cpp +++ b/src/game/SpellMgr.cpp @@ -2621,7 +2621,24 @@ bool SpellMgr::IsSpellValid(SpellEntry const* spellInfo, Player* pl, bool msg) case SPELL_EFFECT_CREATE_ITEM: case SPELL_EFFECT_CREATE_ITEM_2: { - if(!ObjectMgr::GetItemPrototype( spellInfo->EffectItemType[i] )) + if (spellInfo->EffectItemType[i] == 0) + { + // skip auto-loot crafting spells, its not need explicit item info (but have special fake items sometime) + if (!IsLootCraftingSpell(spellInfo)) + { + if(msg) + { + if(pl) + ChatHandler(pl).PSendSysMessage("Craft spell %u not have create item entry.",spellInfo->Id); + else + sLog.outErrorDb("Craft spell %u not have create item entry.",spellInfo->Id); + } + return false; + } + + } + // also possible IsLootCraftingSpell case but fake item must exist anyway + else if (!ObjectMgr::GetItemPrototype( spellInfo->EffectItemType[i] )) { if(msg) { diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index b7bedcb8363..f85f6411f1b 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 "9300" + #define REVISION_NR "9301" #endif // __REVISION_NR_H__