diff --git a/doc/EventAI.txt b/doc/EventAI.txt index cf385643b..12bda31a6 100644 --- a/doc/EventAI.txt +++ b/doc/EventAI.txt @@ -787,13 +787,13 @@ Below is the list of current Event Flags that EventAI can handle. Event flags ar (bit# Decimal Internal Name Discription) 0 1 EFLAG_REPEATABLE Event repeats (Does not repeat if this flag is not set) -1 2 EFLAG_NORMAL Event occurs in Normal instance difficulty (will not occur in Normal if not set) -2 4 EFLAG_HEROIC Event occurs in Heroic instance difficulty (will not occur in Heroic if not set) -3 8 -4 16 +1 2 EFLAG_DIFFICULTY_0 Event occurs in instance difficulty 0 (will not occur if not set) +2 4 EFLAG_DIFFICULTY_1 Event occurs in instance difficulty 1 (will not occur if not set) +3 8 EFLAG_DIFFICULTY_2 Event occurs in instance difficulty 2 (will not occur if not set) +4 16 EFLAG_DIFFICULTY_3 Event occurs in instance difficulty 3 (will not occur if not set) 5 32 6 64 -7 128 EFLAG_DEBUG_ONLY Prevents events from occuring on Release builds. Useful for testing new features. +7 128 EFLAG_DEBUG_ONLY Prevents events from occuring on Release builds. Useful for testing new features. NOTE: You can add the numbers in the decimal column to combine flags. diff --git a/sql/mangos.sql b/sql/mangos.sql index c686c4bfd..37ba033a7 100644 --- a/sql/mangos.sql +++ b/sql/mangos.sql @@ -24,7 +24,7 @@ CREATE TABLE `db_version` ( `version` varchar(120) default NULL, `creature_ai_version` varchar(120) default NULL, `cache_id` int(10) default '0', - `required_8726_01_mangos_spell_proc_event` bit(1) default NULL + `required_8731_01_mangos_creature_template` bit(1) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes'; -- @@ -1061,7 +1061,7 @@ UNLOCK TABLES; DROP TABLE IF EXISTS `creature_template`; CREATE TABLE `creature_template` ( `entry` mediumint(8) unsigned NOT NULL default '0', - `heroic_entry` mediumint(8) unsigned NOT NULL default '0', + `difficulty_entry_1` mediumint(8) unsigned NOT NULL default '0', `KillCredit1` int(11) unsigned NOT NULL default '0', `KillCredit2` int(11) unsigned NOT NULL default '0', `modelid_A` mediumint(8) unsigned NOT NULL default '0', diff --git a/sql/updates/8731_01_mangos_creature_template.sql b/sql/updates/8731_01_mangos_creature_template.sql new file mode 100644 index 000000000..ee1849f07 --- /dev/null +++ b/sql/updates/8731_01_mangos_creature_template.sql @@ -0,0 +1,4 @@ +ALTER TABLE db_version CHANGE COLUMN required_8726_01_mangos_spell_proc_event required_8731_01_mangos_creature_template bit; + +ALTER TABLE creature_template + CHANGE COLUMN heroic_entry difficulty_entry_1 mediumint(8) unsigned NOT NULL default '0'; diff --git a/sql/updates/Makefile.am b/sql/updates/Makefile.am index e6f7a27b5..86d301969 100644 --- a/sql/updates/Makefile.am +++ b/sql/updates/Makefile.am @@ -144,6 +144,7 @@ pkgdata_DATA = \ 8723_01_mangos_achievement_criteria_requirement.sql \ 8726_01_mangos_spell_proc_event.sql \ 8728_01_realmd_account.sql \ + 8731_01_mangos_creature_template.sql \ README ## Additional files to include when running 'make dist' @@ -268,4 +269,5 @@ EXTRA_DIST = \ 8723_01_mangos_achievement_criteria_requirement.sql \ 8726_01_mangos_spell_proc_event.sql \ 8728_01_realmd_account.sql \ + 8731_01_mangos_creature_template.sql \ README diff --git a/src/game/Creature.cpp b/src/game/Creature.cpp index f82474f83..a3c62b099 100644 --- a/src/game/Creature.cpp +++ b/src/game/Creature.cpp @@ -188,18 +188,19 @@ bool Creature::InitEntry(uint32 Entry, uint32 team, const CreatureData *data ) return false; } - // get heroic mode entry + // get difficulty 1 mode entry uint32 actualEntry = Entry; CreatureInfo const *cinfo = normalInfo; - if(normalInfo->HeroicEntry) + if(normalInfo->DifficultyEntry1) { //we already have valid Map pointer for current creature! - if(GetMap()->IsHeroic()) + //FIXME: spawn modes 2-3 must have own case DifficultyEntryN + if(GetMap()->GetSpawnMode() > 0) { - cinfo = objmgr.GetCreatureTemplate(normalInfo->HeroicEntry); + cinfo = objmgr.GetCreatureTemplate(normalInfo->DifficultyEntry1); if(!cinfo) { - sLog.outErrorDb("Creature::UpdateEntry creature heroic entry %u does not exist.", actualEntry); + sLog.outErrorDb("Creature::UpdateEntry creature difficulty 1 entry %u does not exist.", actualEntry); return false; } } @@ -1928,7 +1929,7 @@ CreatureDataAddon const* Creature::GetCreatureAddon() const return addon; } - // dependent from heroic mode entry + // dependent from difficulty mode entry return ObjectMgr::GetCreatureTemplateAddon(GetCreatureInfo()->Entry); } diff --git a/src/game/Creature.h b/src/game/Creature.h index f0025a9c6..122af4d9f 100644 --- a/src/game/Creature.h +++ b/src/game/Creature.h @@ -158,7 +158,7 @@ enum CreatureFlagsExtra struct CreatureInfo { uint32 Entry; - uint32 HeroicEntry; + uint32 DifficultyEntry1; uint32 KillCredit[MAX_KILL_CREDIT]; uint32 DisplayID_A[2]; uint32 DisplayID_H[2]; @@ -742,7 +742,7 @@ class MANGOS_DLL_SPEC Creature : public Unit float CombatStartZ; private: GridReference m_gridRef; - CreatureInfo const* m_creatureInfo; // in heroic mode can different from ObjMgr::GetCreatureTemplate(GetEntry()) + CreatureInfo const* m_creatureInfo; // in difficulty mode > 0 can different from ObjMgr::GetCreatureTemplate(GetEntry()) bool m_isActiveObject; MonsterMovementFlags m_monsterMoveFlags; }; diff --git a/src/game/CreatureEventAI.cpp b/src/game/CreatureEventAI.cpp index 3e9c59e28..87edbf125 100644 --- a/src/game/CreatureEventAI.cpp +++ b/src/game/CreatureEventAI.cpp @@ -69,8 +69,7 @@ CreatureEventAI::CreatureEventAI(Creature *c ) : CreatureAI(c) #endif if (m_creature->GetMap()->IsDungeon()) { - if( (m_creature->GetMap()->IsHeroic() && (*i).event_flags & EFLAG_HEROIC) || - (!m_creature->GetMap()->IsHeroic() && (*i).event_flags & EFLAG_NORMAL)) + if ((1 << (m_creature->GetMap()->GetSpawnMode()+1)) & (*i).event_flags) { //event flagged for instance mode CreatureEventAIList.push_back(CreatureEventAIHolder(*i)); diff --git a/src/game/CreatureEventAI.h b/src/game/CreatureEventAI.h index 092ea1a67..5d942b6e7 100644 --- a/src/game/CreatureEventAI.h +++ b/src/game/CreatureEventAI.h @@ -150,13 +150,15 @@ enum CastFlags enum EventFlags { EFLAG_REPEATABLE = 0x01, //Event repeats - EFLAG_NORMAL = 0x02, //Event only occurs in Normal instance difficulty - EFLAG_HEROIC = 0x04, //Event only occurs in Heroic instance difficulty - EFLAG_RESERVED_3 = 0x08, - EFLAG_RESERVED_4 = 0x10, + EFLAG_DIFFICULTY_0 = 0x02, //Event only occurs in instance difficulty 0 + EFLAG_DIFFICULTY_1 = 0x04, //Event only occurs in instance difficulty 1 + EFLAG_DIFFICULTY_2 = 0x08, //Event only occurs in instance difficulty 2 + EFLAG_DIFFICULTY_3 = 0x10, //Event only occurs in instance difficulty 3 EFLAG_RESERVED_5 = 0x20, EFLAG_RESERVED_6 = 0x40, EFLAG_DEBUG_ONLY = 0x80, //Event only occurs in debug build + + EFLAG_DIFFICULTY_ALL = (EFLAG_DIFFICULTY_0|EFLAG_DIFFICULTY_1|EFLAG_DIFFICULTY_2|EFLAG_DIFFICULTY_3) }; enum SpawnedEventMode diff --git a/src/game/CreatureEventAIMgr.cpp b/src/game/CreatureEventAIMgr.cpp index aa3e219ea..5361073eb 100644 --- a/src/game/CreatureEventAIMgr.cpp +++ b/src/game/CreatureEventAIMgr.cpp @@ -716,14 +716,14 @@ void CreatureEventAIMgr::LoadCreatureEventAI_Scripts() sLog.outErrorDb("CreatureEventAI: Event %u Action %u uses incorrect Target type", i, j+1); break; case ACTION_T_SET_INST_DATA: - if (!(temp.event_flags & EFLAG_NORMAL) && !(temp.event_flags & EFLAG_HEROIC)) - sLog.outErrorDb("CreatureEventAI: Event %u Action %u. Cannot set instance data without event flags (normal/heroic).", i, j+1); + if (!(temp.event_flags & EFLAG_DIFFICULTY_ALL)) + sLog.outErrorDb("CreatureEventAI: Event %u Action %u. Cannot set instance data without difficulty event flags.", i, j+1); if (action.set_inst_data.value > 4/*SPECIAL*/) sLog.outErrorDb("CreatureEventAI: Event %u Action %u attempts to set instance data above encounter state 4. Custom case?", i, j+1); break; case ACTION_T_SET_INST_DATA64: - if (!(temp.event_flags & EFLAG_NORMAL) && !(temp.event_flags & EFLAG_HEROIC)) - sLog.outErrorDb("CreatureEventAI: Event %u Action %u. Cannot set instance data without event flags (normal/heroic).", i, j+1); + if (!(temp.event_flags & EFLAG_DIFFICULTY_ALL)) + sLog.outErrorDb("CreatureEventAI: Event %u Action %u. Cannot set instance data without difficulty event flags.", i, j+1); if (action.set_inst_data64.target >= TARGET_T_END) sLog.outErrorDb("CreatureEventAI: Event %u Action %u uses incorrect Target type", i, j+1); break; diff --git a/src/game/Level3.cpp b/src/game/Level3.cpp index 7f55102bb..c37723c22 100644 --- a/src/game/Level3.cpp +++ b/src/game/Level3.cpp @@ -5910,9 +5910,9 @@ bool ChatHandler::HandleInstanceListBindsCommand(const char* /*args*/) std::string timeleft = GetTimeString(save->GetResetTime() - time(NULL)); if (const MapEntry* entry = sMapStore.LookupEntry(itr->first)) { - PSendSysMessage("map: %d (%s) inst: %d perm: %s diff: %s canReset: %s TTR: %s", + PSendSysMessage("map: %d (%s) inst: %d perm: %s diff: %d canReset: %s TTR: %s", itr->first, entry->name[m_session->GetSessionDbcLocale()], save->GetInstanceId(), itr->second.perm ? "yes" : "no", - save->GetDifficulty() == DUNGEON_DIFFICULTY_NORMAL ? "normal" : "heroic", save->CanReset() ? "yes" : "no", timeleft.c_str()); + save->GetDifficulty(), save->CanReset() ? "yes" : "no", timeleft.c_str()); } else PSendSysMessage("bound for a nonexistant map %u", itr->first); @@ -5933,9 +5933,9 @@ bool ChatHandler::HandleInstanceListBindsCommand(const char* /*args*/) std::string timeleft = GetTimeString(save->GetResetTime() - time(NULL)); if (const MapEntry* entry = sMapStore.LookupEntry(itr->first)) { - PSendSysMessage("map: %d (%s) inst: %d perm: %s diff: %s canReset: %s TTR: %s", + PSendSysMessage("map: %d (%s) inst: %d perm: %s diff: %d canReset: %s TTR: %s", itr->first, entry->name[m_session->GetSessionDbcLocale()], save->GetInstanceId(), itr->second.perm ? "yes" : "no", - save->GetDifficulty() == DUNGEON_DIFFICULTY_NORMAL ? "normal" : "heroic", save->CanReset() ? "yes" : "no", timeleft.c_str()); + save->GetDifficulty(), save->CanReset() ? "yes" : "no", timeleft.c_str()); } else PSendSysMessage("bound for a nonexistant map %u", itr->first); @@ -5986,9 +5986,9 @@ bool ChatHandler::HandleInstanceUnbindCommand(const char* args) if (const MapEntry* entry = sMapStore.LookupEntry(itr->first)) { - PSendSysMessage("unbinding map: %d (%s) inst: %d perm: %s diff: %s canReset: %s TTR: %s", + PSendSysMessage("unbinding map: %d (%s) inst: %d perm: %s diff: %d canReset: %s TTR: %s", itr->first, entry->name[m_session->GetSessionDbcLocale()], save->GetInstanceId(), itr->second.perm ? "yes" : "no", - save->GetDifficulty() == DUNGEON_DIFFICULTY_NORMAL ? "normal" : "heroic", save->CanReset() ? "yes" : "no", timeleft.c_str()); + save->GetDifficulty(), save->CanReset() ? "yes" : "no", timeleft.c_str()); } else PSendSysMessage("bound for a nonexistant map %u", itr->first); diff --git a/src/game/MapManager.cpp b/src/game/MapManager.cpp index 65157aedd..7e83ee061 100644 --- a/src/game/MapManager.cpp +++ b/src/game/MapManager.cpp @@ -184,13 +184,13 @@ bool MapManager::CanPlayerEnter(uint32 mapid, Player* player) MapDifficulty const* mapDiff = GetMapDifficultyData(entry->MapID,player->GetDifficulty(entry->map_type == MAP_RAID)); if (!mapDiff) { - bool isHeroicTargetMap = entry->map_type == MAP_RAID - ? (player->GetRaidDifficulty() >= RAID_DIFFICULTY_10MAN_HEROIC) - : (player->GetDungeonDifficulty() >= DUNGEON_DIFFICULTY_HEROIC); + bool isNormalTargetMap = entry->map_type == MAP_RAID + ? (player->GetRaidDifficulty() == RAID_DIFFICULTY_10MAN_NORMAL) + : (player->GetDungeonDifficulty() == DUNGEON_DIFFICULTY_NORMAL); //Send aborted message // FIX ME: what about absent normal/heroic mode with specific players limit... - player->SendTransferAborted(mapid, TRANSFER_ABORT_DIFFICULTY, isHeroicTargetMap ? DUNGEON_DIFFICULTY_HEROIC : DUNGEON_DIFFICULTY_NORMAL); + player->SendTransferAborted(mapid, TRANSFER_ABORT_DIFFICULTY, isNormalTargetMap ? DUNGEON_DIFFICULTY_NORMAL : DUNGEON_DIFFICULTY_HEROIC); return false; } diff --git a/src/game/MiscHandler.cpp b/src/game/MiscHandler.cpp index 857bddcfe..4ecd7ee59 100644 --- a/src/game/MiscHandler.cpp +++ b/src/game/MiscHandler.cpp @@ -812,12 +812,12 @@ void WorldSession::HandleAreaTriggerOpcode(WorldPacket & recv_data) if(!mapEntry) return; - bool isHeroicTargetMap = mapEntry->IsRaid() - ? (GetPlayer()->GetRaidDifficulty() >= RAID_DIFFICULTY_10MAN_HEROIC) - : (GetPlayer()->GetDungeonDifficulty() >= DUNGEON_DIFFICULTY_HEROIC); + bool isNormalTargetMap = mapEntry->IsRaid() + ? (GetPlayer()->GetRaidDifficulty() == RAID_DIFFICULTY_10MAN_NORMAL) + : (GetPlayer()->GetDungeonDifficulty() == DUNGEON_DIFFICULTY_NORMAL); uint32 missingKey = 0; - if(isHeroicTargetMap) + if (!isNormalTargetMap) { if(at->heroicKey) { @@ -830,7 +830,7 @@ void WorldSession::HandleAreaTriggerOpcode(WorldPacket & recv_data) } uint32 missingQuest = 0; - if(isHeroicTargetMap) + if (!isNormalTargetMap) { if (at->requiredQuestHeroic && !GetPlayer()->GetQuestRewardStatus(at->requiredQuestHeroic)) missingQuest = at->requiredQuestHeroic; @@ -847,7 +847,7 @@ void WorldSession::HandleAreaTriggerOpcode(WorldPacket & recv_data) if(missingItem) SendAreaTriggerMessage(GetMangosString(LANG_LEVEL_MINREQUIRED_AND_ITEM), at->requiredLevel, objmgr.GetItemPrototype(missingItem)->Name1); else if(missingKey) - GetPlayer()->SendTransferAborted(at->target_mapId, TRANSFER_ABORT_DIFFICULTY, isHeroicTargetMap ? DUNGEON_DIFFICULTY_HEROIC : DUNGEON_DIFFICULTY_NORMAL); + GetPlayer()->SendTransferAborted(at->target_mapId, TRANSFER_ABORT_DIFFICULTY, isNormalTargetMap ? DUNGEON_DIFFICULTY_NORMAL : DUNGEON_DIFFICULTY_HEROIC); else if(missingQuest) SendAreaTriggerMessage(at->requiredFailedText.c_str()); else if(missingLevel) diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp index edfca2b95..358f12ab4 100644 --- a/src/game/ObjectMgr.cpp +++ b/src/game/ObjectMgr.cpp @@ -473,8 +473,8 @@ void ObjectMgr::LoadCreatureTemplates() sLog.outString( ">> Loaded %u creature definitions", sCreatureStorage.RecordCount ); sLog.outString(); - std::set heroicEntries; // already loaded heroic value in creatures - std::set hasHeroicEntries; // already loaded creatures with heroic entry values + std::set difficultyEntries1; // already loaded difficulty 1 value in creatures + std::set hasDifficultyEntries1; // already loaded creatures with difficulty 1 values // check data correctness for(uint32 i = 1; i < sCreatureStorage.MaxEntry; ++i) @@ -483,83 +483,83 @@ void ObjectMgr::LoadCreatureTemplates() if (!cInfo) continue; - if (cInfo->HeroicEntry) + if (cInfo->DifficultyEntry1) { - CreatureInfo const* heroicInfo = GetCreatureTemplate(cInfo->HeroicEntry); - if (!heroicInfo) + CreatureInfo const* difficultyInfo = GetCreatureTemplate(cInfo->DifficultyEntry1); + if (!difficultyInfo) { - sLog.outErrorDb("Creature (Entry: %u) have `heroic_entry`=%u but creature entry %u not exist.", i, cInfo->HeroicEntry, cInfo->HeroicEntry); + sLog.outErrorDb("Creature (Entry: %u) have `difficulty_entry_1`=%u but creature entry %u not exist.", i, cInfo->DifficultyEntry1, cInfo->DifficultyEntry1); continue; } - if (heroicEntries.find(i)!=heroicEntries.end()) + if (difficultyEntries1.find(i)!=difficultyEntries1.end()) { - sLog.outErrorDb("Creature (Entry: %u) listed as heroic but have value in `heroic_entry`.",i); + sLog.outErrorDb("Creature (Entry: %u) listed as difficulty 1 but have value in `difficulty_entry_1`.",i); continue; } - if (heroicEntries.find(cInfo->HeroicEntry)!=heroicEntries.end()) + if (difficultyEntries1.find(cInfo->DifficultyEntry1)!=difficultyEntries1.end()) { - sLog.outErrorDb("Creature (Entry: %u) already listed as heroic for another entry.",cInfo->HeroicEntry); + sLog.outErrorDb("Creature (Entry: %u) already listed as difficulty 1 for another entry.",cInfo->DifficultyEntry1); continue; } - if (hasHeroicEntries.find(cInfo->HeroicEntry)!=hasHeroicEntries.end()) + if (hasDifficultyEntries1.find(cInfo->DifficultyEntry1)!=hasDifficultyEntries1.end()) { - sLog.outErrorDb("Creature (Entry: %u) have `heroic_entry`=%u but creature entry %u have heroic entry also.",i,cInfo->HeroicEntry,cInfo->HeroicEntry); + sLog.outErrorDb("Creature (Entry: %u) have `difficulty_entry_1`=%u but creature entry %u have difficulty 1 entry also.",i,cInfo->DifficultyEntry1,cInfo->DifficultyEntry1); continue; } - if (cInfo->unit_class != heroicInfo->unit_class) + if (cInfo->unit_class != difficultyInfo->unit_class) { - sLog.outErrorDb("Creature (Entry: %u, class %u) has different `unit_class` in heroic mode (Entry: %u, class %u).",i, cInfo->unit_class, cInfo->HeroicEntry, heroicInfo->unit_class); + sLog.outErrorDb("Creature (Entry: %u, class %u) has different `unit_class` in difficulty 1 mode (Entry: %u, class %u).",i, cInfo->unit_class, cInfo->DifficultyEntry1, difficultyInfo->unit_class); continue; } - if (cInfo->npcflag != heroicInfo->npcflag) + if (cInfo->npcflag != difficultyInfo->npcflag) { - sLog.outErrorDb("Creature (Entry: %u) has different `npcflag` in heroic mode (Entry: %u).",i,cInfo->HeroicEntry); + sLog.outErrorDb("Creature (Entry: %u) has different `npcflag` in difficulty 1 mode (Entry: %u).",i,cInfo->DifficultyEntry1); continue; } - if (cInfo->trainer_class != heroicInfo->trainer_class) + if (cInfo->trainer_class != difficultyInfo->trainer_class) { - sLog.outErrorDb("Creature (Entry: %u) has different `trainer_class` in heroic mode (Entry: %u).",i,cInfo->HeroicEntry); + sLog.outErrorDb("Creature (Entry: %u) has different `trainer_class` in difficulty 1 mode (Entry: %u).",i,cInfo->DifficultyEntry1); continue; } - if (cInfo->trainer_race != heroicInfo->trainer_race) + if (cInfo->trainer_race != difficultyInfo->trainer_race) { - sLog.outErrorDb("Creature (Entry: %u) has different `trainer_race` in heroic mode (Entry: %u).",i,cInfo->HeroicEntry); + sLog.outErrorDb("Creature (Entry: %u) has different `trainer_race` in difficulty 1 mode (Entry: %u).",i,cInfo->DifficultyEntry1); continue; } - if (cInfo->trainer_type != heroicInfo->trainer_type) + if (cInfo->trainer_type != difficultyInfo->trainer_type) { - sLog.outErrorDb("Creature (Entry: %u) has different `trainer_type` in heroic mode (Entry: %u).",i,cInfo->HeroicEntry); + sLog.outErrorDb("Creature (Entry: %u) has different `trainer_type` in difficulty 1 mode (Entry: %u).",i,cInfo->DifficultyEntry1); continue; } - if (cInfo->trainer_spell != heroicInfo->trainer_spell) + if (cInfo->trainer_spell != difficultyInfo->trainer_spell) { - sLog.outErrorDb("Creature (Entry: %u) has different `trainer_spell` in heroic mode (Entry: %u).",i,cInfo->HeroicEntry); + sLog.outErrorDb("Creature (Entry: %u) has different `trainer_spell` in difficulty 1 mode (Entry: %u).",i,cInfo->DifficultyEntry1); continue; } - if (heroicInfo->AIName && *heroicInfo->AIName) + if (difficultyInfo->AIName && *difficultyInfo->AIName) { - sLog.outErrorDb("Heroic mode creature (Entry: %u) has `AIName`, but in any case will used normal mode creature (Entry: %u) AIName.",cInfo->HeroicEntry,i); + sLog.outErrorDb("Difficulty 1 mode creature (Entry: %u) has `AIName`, but in any case will used difficulty 0 mode creature (Entry: %u) AIName.",cInfo->DifficultyEntry1,i); continue; } - if (heroicInfo->ScriptID) + if (difficultyInfo->ScriptID) { - sLog.outErrorDb("Heroic mode creature (Entry: %u) has `ScriptName`, but in any case will used normal mode creature (Entry: %u) ScriptName.",cInfo->HeroicEntry,i); + sLog.outErrorDb("Difficulty 1 mode creature (Entry: %u) has `ScriptName`, but in any case will used difficulty 0 mode creature (Entry: %u) ScriptName.",cInfo->DifficultyEntry1,i); continue; } - hasHeroicEntries.insert(i); - heroicEntries.insert(cInfo->HeroicEntry); + hasDifficultyEntries1.insert(i); + difficultyEntries1.insert(cInfo->DifficultyEntry1); } FactionTemplateEntry const* factionTemplate = sFactionTemplateStore.LookupEntry(cInfo->faction_A); @@ -1032,11 +1032,11 @@ void ObjectMgr::LoadCreatures() } // build single time for check creature data - std::set heroicCreatures; + std::set difficultyCreatures1; for(uint32 i = 0; i < sCreatureStorage.MaxEntry; ++i) if(CreatureInfo const* cInfo = sCreatureStorage.LookupEntry(i)) - if(cInfo->HeroicEntry) - heroicCreatures.insert(cInfo->HeroicEntry); + if(cInfo->DifficultyEntry1) + difficultyCreatures1.insert(cInfo->DifficultyEntry1); // build single time for check spawnmask std::map spawnMasks; @@ -1095,9 +1095,9 @@ void ObjectMgr::LoadCreatures() if (data.spawnMask & ~spawnMasks[data.mapid]) sLog.outErrorDb("Table `creature` have creature (GUID: %u) that have wrong spawn mask %u including not supported difficulty modes for map (Id: %u).",guid, data.spawnMask, data.mapid ); - if(heroicCreatures.find(data.id)!=heroicCreatures.end()) + if(difficultyCreatures1.find(data.id)!=difficultyCreatures1.end()) { - sLog.outErrorDb("Table `creature` have creature (GUID: %u) that listed as heroic template (entry: %u) in `creature_template`, skipped.",guid, data.id ); + sLog.outErrorDb("Table `creature` have creature (GUID: %u) that listed as difficulty 1 template (entry: %u) in `creature_template`, skipped.",guid, data.id ); continue; } diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index a1abba072..e461bb79f 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 "8730" + #define REVISION_NR "8731" #endif // __REVISION_NR_H__ diff --git a/src/shared/revision_sql.h b/src/shared/revision_sql.h index e6a314697..ed97f2ba0 100644 --- a/src/shared/revision_sql.h +++ b/src/shared/revision_sql.h @@ -1,6 +1,6 @@ #ifndef __REVISION_SQL_H__ #define __REVISION_SQL_H__ #define REVISION_DB_CHARACTERS "required_8721_01_characters_guild" - #define REVISION_DB_MANGOS "required_8726_01_mangos_spell_proc_event" + #define REVISION_DB_MANGOS "required_8731_01_mangos_creature_template" #define REVISION_DB_REALMD "required_8728_01_realmd_account" #endif // __REVISION_SQL_H__