Потому что 0 используется в коде как пустой guid/entry.
Код:
// хотим получить nullptr при m_castItem = 0
if(ItemPrototype const* itemInfo = sItemStorage.LookupEntry(m_castItem))
...
На счет скриптов, я все же считаю, что они должны привязываться сразу к зонам, а не к целым картам.