31 bool condMeets =
false;
68 condMeets = (
ConditionValue2 & (1 << player->GetReputationMgr().GetRank(faction)));
146 Map* map =
object->GetMap();
223 condMeets = unit == toUnit;
265 condMeets = unit->IsAlive();
298 condMeets = ((1 <<
object->GetMap()->GetSpawnMode()) &
ConditionValue1);
324 condMeets = !condMeets;
329 bool script =
sScriptMgr->OnConditionCheck(
this, sourceInfo);
330 return condMeets && script;
491 ASSERT(
false &&
"Condition::GetSearcherTypeMaskForCondition - missing condition handling!");
530 conditions = (*ref).second;
536 if (conditions.empty())
539 std::map<uint32, uint32> ElseGroupStore;
540 for (ConditionList::const_iterator i = conditions.begin(); i != conditions.end(); ++i)
543 ASSERT((*i)->isLoaded() &&
"ConditionMgr::GetSearcherTypeMaskForConditionList - not yet loaded condition found in list");
544 std::map<uint32, uint32>::const_iterator itr = ElseGroupStore.find((*i)->ElseGroup);
546 if (itr == ElseGroupStore.end())
549 else if (!(*itr).second)
552 if ((*i)->ReferenceId)
562 ElseGroupStore[(*i)->ElseGroup] &= (*i)->GetSearcherTypeMaskForCondition();
568 for (std::map<uint32, uint32>::const_iterator i = ElseGroupStore.begin(); i != ElseGroupStore.end(); ++i)
577 std::map<uint32, bool> ElseGroupStore;
578 for (ConditionList::const_iterator i = conditions.begin(); i != conditions.end(); ++i)
580 SF_LOG_DEBUG(
"condition",
"ConditionMgr::IsPlayerMeetToConditionList condType: %u val1: %u", (*i)->ConditionType, (*i)->ConditionValue1);
581 if ((*i)->isLoaded())
584 std::map<uint32, bool>::const_iterator itr = ElseGroupStore.find((*i)->ElseGroup);
586 if (itr == ElseGroupStore.end())
587 ElseGroupStore[(*i)->ElseGroup] =
true;
588 else if (!(*itr).second)
591 if ((*i)->ReferenceId)
597 ElseGroupStore[(*i)->ElseGroup] =
false;
601 SF_LOG_DEBUG(
"condition",
"IsPlayerMeetToConditionList: Reference template -%u not found",
607 if (!(*i)->Meets(sourceInfo))
608 ElseGroupStore[(*i)->ElseGroup] =
false;
612 for (std::map<uint32, bool>::const_iterator i = ElseGroupStore.begin(); i != ElseGroupStore.end(); ++i)
633 if (conditions.empty())
636 SF_LOG_DEBUG(
"condition",
"ConditionMgr::IsObjectMeetToConditions");
674 ConditionContainer::const_iterator itr =
ConditionStore.find(sourceType);
677 ConditionTypeContainer::const_iterator i = (*itr).second.find(entry);
678 if (i != (*itr).second.end())
680 spellCond = (*i).second;
681 SF_LOG_DEBUG(
"condition",
"GetConditionsForNotGroupedEntry: found conditions for type %u and entry %u",
uint32(sourceType), entry);
694 ConditionTypeContainer::const_iterator i = (*itr).second.find(spellId);
695 if (i != (*itr).second.end())
698 SF_LOG_DEBUG(
"condition",
"GetConditionsForSpellClickEvent: found conditions for Vehicle entry %u spell %u", creatureId, spellId);
710 ConditionTypeContainer::const_iterator i = (*itr).second.find(spellId);
711 if (i != (*itr).second.end())
714 SF_LOG_DEBUG(
"condition",
"GetConditionsForVehicleSpell: found conditions for Vehicle entry %u spell %u", creatureId, spellId);
723 SmartEventConditionContainer::const_iterator itr =
SmartEventConditionStore.find(std::make_pair(entryOrGuid, sourceType));
726 ConditionTypeContainer::const_iterator i = (*itr).second.find(eventId + 1);
727 if (i != (*itr).second.end())
730 SF_LOG_DEBUG(
"condition",
"GetConditionsForSmartEvent: found conditions for Smart Event entry or guid %d event_id %u", entryOrGuid, eventId);
742 ConditionTypeContainer::const_iterator i = (*itr).second.find(itemId);
743 if (i != (*itr).second.end())
746 SF_LOG_DEBUG(
"condition",
"GetConditionsForNpcVendorEvent: found conditions for creature entry %u item %u", creatureId, itemId);
761 SF_LOG_INFO(
"misc",
"Reseting Loot Conditions...");
775 SF_LOG_INFO(
"misc",
"Re-Loading `gossip_menu` Table for Conditions!");
778 SF_LOG_INFO(
"misc",
"Re-Loading `gossip_menu_option` Table for Conditions!");
780 sSpellMgr->UnloadSpellInfoImplicitTargetConditionLists();
782 SF_LOG_INFO(
"misc",
"Re-Loading `terrain_phase_info` Table for Conditions!");
785 SF_LOG_INFO(
"misc",
"Re-Loading `terrain_swap_defaults` Table for Conditions!");
788 SF_LOG_INFO(
"misc",
"Re-Loading `terrain_worldmap` Table for Conditions!");
791 SF_LOG_INFO(
"misc",
"Re-Loading `phase_area` Table for Conditions!");
795 QueryResult result =
WorldDatabase.Query(
"SELECT SourceTypeOrReferenceId, SourceGroup, SourceEntry, SourceId, ElseGroup, ConditionTypeOrReference, ConditionTarget, "
796 " ConditionValue1, ConditionValue2, ConditionValue3, NegativeCondition, ErrorType, ErrorTextId, ScriptName FROM conditions");
800 SF_LOG_ERROR(
"server.loading",
">> Loaded 0 conditions. DB table `conditions` is empty!");
808 Field* fields = result->Fetch();
826 if (iConditionTypeOrReference >= 0)
829 if (iSourceTypeOrReferenceId >= 0)
832 if (iConditionTypeOrReference < 0)
834 if (iConditionTypeOrReference == iSourceTypeOrReferenceId)
836 SF_LOG_ERROR(
"sql.sql",
"Condition reference %i is referencing self, skipped", iSourceTypeOrReferenceId);
842 const char* rowType =
"reference template";
843 if (iSourceTypeOrReferenceId >= 0)
844 rowType =
"reference";
847 SF_LOG_ERROR(
"sql.sql",
"Condition %s %i has useless data in ConditionTarget (%u)!", rowType, iSourceTypeOrReferenceId, cond->
ConditionTarget);
849 SF_LOG_ERROR(
"sql.sql",
"Condition %s %i has useless data in value1 (%u)!", rowType, iSourceTypeOrReferenceId, cond->
ConditionValue1);
851 SF_LOG_ERROR(
"sql.sql",
"Condition %s %i has useless data in value2 (%u)!", rowType, iSourceTypeOrReferenceId, cond->
ConditionValue2);
853 SF_LOG_ERROR(
"sql.sql",
"Condition %s %i has useless data in value3 (%u)!", rowType, iSourceTypeOrReferenceId, cond->
ConditionValue3);
855 SF_LOG_ERROR(
"sql.sql",
"Condition %s %i has useless data in NegativeCondition (%u)!", rowType, iSourceTypeOrReferenceId, cond->
NegativeCondition);
856 if (cond->
SourceGroup && iSourceTypeOrReferenceId < 0)
857 SF_LOG_ERROR(
"sql.sql",
"Condition %s %i has useless data in SourceGroup (%u)!", rowType, iSourceTypeOrReferenceId, cond->
SourceGroup);
858 if (cond->
SourceEntry && iSourceTypeOrReferenceId < 0)
859 SF_LOG_ERROR(
"sql.sql",
"Condition %s %i has useless data in SourceEntry (%u)!", rowType, iSourceTypeOrReferenceId, cond->
SourceEntry);
867 if (iSourceTypeOrReferenceId < 0)
869 uint32 uRefId = abs(iSourceTypeOrReferenceId);
1045 }
while (result->NextRow());
1069 if (pMenuBounds.first != pMenuBounds.second)
1071 for (GossipMenusContainer::iterator itr = pMenuBounds.first; itr != pMenuBounds.second; ++itr)
1075 (*itr).second.conditions.push_back(cond);
1088 if (pMenuItemBounds.first != pMenuItemBounds.second)
1090 for (GossipMenuItemsContainer::iterator itr = pMenuItemBounds.first; itr != pMenuItemBounds.second; ++itr)
1094 (*itr).second.Conditions.push_back(cond);
1109 std::list<uint32> sharedMasks;
1114 for (std::list<uint32>::iterator itr = sharedMasks.begin(); itr != sharedMasks.end(); ++itr)
1116 if ((1 << i) & *itr)
1126 uint32 sharedMask = (1 << i);
1131 sharedMask |= 1 << effIndex;
1133 sharedMasks.push_back(sharedMask);
1136 for (std::list<uint32>::iterator itr = sharedMasks.begin(); itr != sharedMasks.end(); ++itr)
1139 if (
uint32 commonMask = *itr & conditionEffMask)
1141 uint8 firstEffIndex = 0;
1143 if ((1 << firstEffIndex) & *itr)
1156 if (conditionEffMask != *itr)
1158 SF_LOG_ERROR(
"sql.sql",
"SourceEntry %u in `condition` table, has incorrect SourceGroup %u (spell effectMask) set - "
1159 "effect masks are overlapping (all SourceGroup values having given bit set must be equal) - ignoring.", cond->
SourceEntry, cond->
SourceGroup);
1168 bool assigned =
false;
1171 if ((1 << i) & commonMask)
1181 sharedList->push_back(cond);
1191 for (
auto itr = swaps.begin(); itr != swaps.end(); ++itr)
1192 for (
auto it2 = itr->second.begin(); it2 != itr->second.end(); ++it2)
1194 it2->Conditions.push_back(cond), added =
true;
1216 for (
auto phaseItr = p.begin(); phaseItr != p.end(); ++phaseItr)
1228 else if (std::vector<PhaseInfoStruct>* phases =
sObjectMgr->GetPhasesForAreaForLoading(cond->
SourceEntry))
1234 phase.Conditions.push_back(cond);
1258 SF_LOG_ERROR(
"sql.sql",
"SourceGroup %u in `condition` table, does not exist in `creature_loot_template`, ignoring.", cond->
SourceGroup);
1266 SF_LOG_ERROR(
"sql.sql",
"SourceType %u, SourceEntry %u in `condition` table, does not exist in `item_template`, ignoring.", cond->
SourceType, cond->
SourceEntry);
1275 SF_LOG_ERROR(
"sql.sql",
"SourceGroup %u in `condition` table, does not exist in `disenchant_loot_template`, ignoring.", cond->
SourceGroup);
1283 SF_LOG_ERROR(
"sql.sql",
"SourceType %u, SourceEntry %u in `condition` table, does not exist in `item_template`, ignoring.", cond->
SourceType, cond->
SourceEntry);
1292 SF_LOG_ERROR(
"sql.sql",
"SourceGroup %u in `condition` table, does not exist in `fishing_loot_template`, ignoring.", cond->
SourceGroup);
1300 SF_LOG_ERROR(
"sql.sql",
"SourceType %u, SourceEntry %u in `condition` table, does not exist in `item_template`, ignoring.", cond->
SourceType, cond->
SourceEntry);
1309 SF_LOG_ERROR(
"sql.sql",
"SourceGroup %u in `condition` table, does not exist in `gameobject_loot_template`, ignoring.", cond->
SourceGroup);
1317 SF_LOG_ERROR(
"sql.sql",
"SourceType %u, SourceEntry %u in `condition` table, does not exist in `item_template`, ignoring.", cond->
SourceType, cond->
SourceEntry);
1326 SF_LOG_ERROR(
"sql.sql",
"SourceGroup %u in `condition` table, does not exist in `item_loot_template`, ignoring.", cond->
SourceGroup);
1334 SF_LOG_ERROR(
"sql.sql",
"SourceType %u, SourceEntry %u in `condition` table, does not exist in `item_template`, ignoring.", cond->
SourceType, cond->
SourceEntry);
1343 SF_LOG_ERROR(
"sql.sql",
"SourceGroup %u in `condition` table, does not exist in `mail_loot_template`, ignoring.", cond->
SourceGroup);
1351 SF_LOG_ERROR(
"sql.sql",
"SourceType %u, SourceEntry %u in `condition` table, does not exist in `item_template`, ignoring.", cond->
SourceType, cond->
SourceEntry);
1360 SF_LOG_ERROR(
"sql.sql",
"SourceGroup %u in `condition` table, does not exist in `milling_loot_template`, ignoring.", cond->
SourceGroup);
1368 SF_LOG_ERROR(
"sql.sql",
"SourceType %u, SourceEntry %u in `condition` table, does not exist in `item_template`, ignoring.", cond->
SourceType, cond->
SourceEntry);
1377 SF_LOG_ERROR(
"sql.sql",
"SourceGroup %u in `condition` table, does not exist in `pickpocketing_loot_template`, ignoring.", cond->
SourceGroup);
1385 SF_LOG_ERROR(
"sql.sql",
"SourceType %u, SourceEntry %u in `condition` table, does not exist in `item_template`, ignoring.", cond->
SourceType, cond->
SourceEntry);
1394 SF_LOG_ERROR(
"sql.sql",
"SourceGroup %u in `condition` table, does not exist in `prospecting_loot_template`, ignoring.", cond->
SourceGroup);
1402 SF_LOG_ERROR(
"sql.sql",
"SourceType %u, SourceEntry %u in `condition` table, does not exist in `item_template`, ignoring.", cond->
SourceType, cond->
SourceEntry);
1411 SF_LOG_ERROR(
"sql.sql",
"SourceGroup %u in `condition` table, does not exist in `reference_loot_template`, ignoring.", cond->
SourceGroup);
1419 SF_LOG_ERROR(
"sql.sql",
"SourceType %u, SourceEntry %u in `condition` table, does not exist in `item_template`, ignoring.", cond->
SourceType, cond->
SourceEntry);
1428 SF_LOG_ERROR(
"sql.sql",
"SourceGroup %u in `condition` table, does not exist in `skinning_loot_template`, ignoring.", cond->
SourceGroup);
1436 SF_LOG_ERROR(
"sql.sql",
"SourceType %u, SourceEntry %u in `condition` table, does not exist in `item_template`, ignoring.", cond->
SourceType, cond->
SourceEntry);
1445 SF_LOG_ERROR(
"sql.sql",
"SourceGroup %u in `condition` table, does not exist in `spell_loot_template`, ignoring.", cond->
SourceGroup);
1453 SF_LOG_ERROR(
"sql.sql",
"SourceType %u, SourceEntry %u in `condition` table, does not exist in `item_template`, ignoring.", cond->
SourceType, cond->
SourceEntry);
1463 SF_LOG_ERROR(
"sql.sql",
"SourceEntry %u in `condition` table, does not exist in `spell.dbc`, ignoring.", cond->
SourceEntry);
1469 SF_LOG_ERROR(
"sql.sql",
"SourceEntry %u in `condition` table, has incorrect SourceGroup %u (spell effectMask) set, ignoring.", cond->
SourceEntry, cond->
SourceGroup);
1500 SF_LOG_ERROR(
"sql.sql",
"SourceEntry %u SourceGroup %u in `condition` table - spell %u does not have implicit targets of types: _AREA_, _CONE_, _NEARBY_ for effect %u, SourceGroup needs correction, ignoring.", cond->
SourceEntry, origGroup, cond->
SourceEntry,
uint32(i));
1512 SF_LOG_ERROR(
"sql.sql",
"SourceEntry %u in `condition` table, does not exist in `creature_template`, ignoring.", cond->
SourceEntry);
1523 SF_LOG_ERROR(
"sql.sql",
"SourceEntry %u in `condition` table, does not exist in `spell.dbc`, ignoring.", cond->
SourceEntry);
1531 SF_LOG_ERROR(
"sql.sql",
"CONDITION_SOURCE_TYPE_QUEST_ACCEPT specifies non-existing quest (%u), skipped", cond->
SourceEntry);
1538 SF_LOG_ERROR(
"sql.sql",
"CONDITION_SOURCE_TYPE_QUEST_SHOW_MARK specifies non-existing quest (%u), skipped", cond->
SourceEntry);
1545 SF_LOG_ERROR(
"sql.sql",
"SourceEntry %u in `condition` table, does not exist in `creature_template`, ignoring.", cond->
SourceGroup);
1551 SF_LOG_ERROR(
"sql.sql",
"SourceEntry %u in `condition` table, does not exist in `spell.dbc`, ignoring.", cond->
SourceEntry);
1558 SF_LOG_ERROR(
"sql.sql",
"SourceEntry %u in `condition` table, does not exist in `creature_template`, ignoring.", cond->
SourceGroup);
1564 SF_LOG_ERROR(
"sql.sql",
"SourceEntry %u in `condition` table, does not exist in `spell.dbc`, ignoring.", cond->
SourceEntry);
1572 SF_LOG_ERROR(
"sql.sql",
"SourceEntry %u in `condition` table, does not exist in `creature_template`, ignoring.", cond->
SourceGroup);
1578 SF_LOG_ERROR(
"sql.sql",
"SourceEntry %u in `condition` table, does not exist in `item_template`, ignoring.", cond->
SourceEntry);
1587 SF_LOG_ERROR(
"sql.sql",
"%u SourceEntry in `condition` table, does not exist in Map.dbc, ignoring.", cond->
SourceEntry);
1596 SF_LOG_ERROR(
"sql.sql",
"%u SourceEntry in `condition` table, does not exist in AreaTable.dbc, ignoring.", cond->
SourceEntry);
1687 SF_LOG_ERROR(
"sql.sql",
"ZoneID condition requires to be in area (%u) which is a subzone but zone expected, skipped", cond->
ConditionValue1);
1748 SF_LOG_ERROR(
"sql.sql",
"Quest condition (Type: %u) points to non-existing quest (%u) for Source Entry %u. SourceGroup: %u, SourceTypeOrReferenceId: %u",
1902 SF_LOG_ERROR(
"sql.sql",
"NearGameObject condition has non existing gameobject template entry (%u), skipped", cond->
ConditionValue1);
1923 SF_LOG_ERROR(
"sql.sql",
"ObjectEntry condition has non existing game object template entry (%u), skipped", cond->
ConditionValue2);
1957 SF_LOG_ERROR(
"sql.sql",
"RelationTo condition has invalid ConditionValue1(ConditionTarget selection) (%u), skipped", cond->
ConditionValue1);
1962 SF_LOG_ERROR(
"sql.sql",
"RelationTo condition has ConditionValue1(ConditionTarget selection) set to self (%u), skipped", cond->
ConditionValue1);
1978 SF_LOG_ERROR(
"sql.sql",
"ReactionTo condition has invalid ConditionValue1(ConditionTarget selection) (%u), skipped", cond->
ConditionValue1);
1983 SF_LOG_ERROR(
"sql.sql",
"ReactionTo condition has ConditionValue1(ConditionTarget selection) set to self (%u), skipped", cond->
ConditionValue1);
1997 SF_LOG_ERROR(
"sql.sql",
"DistanceTo condition has invalid ConditionValue1(ConditionTarget selection) (%u), skipped", cond->
ConditionValue1);
2002 SF_LOG_ERROR(
"sql.sql",
"DistanceTo condition has ConditionValue1(ConditionTarget selection) set to self (%u), skipped", cond->
ConditionValue1);
2131 for (ConditionList::const_iterator it = itr->second.begin(); it != itr->second.end(); ++it)
2133 itr->second.clear();
2140 for (ConditionTypeContainer::iterator it = itr->second.begin(); it != itr->second.end(); ++it)
2142 for (ConditionList::const_iterator i = it->second.begin(); i != it->second.end(); ++i)
2146 itr->second.clear();
2153 for (ConditionTypeContainer::iterator it = itr->second.begin(); it != itr->second.end(); ++it)
2155 for (ConditionList::const_iterator i = it->second.begin(); i != it->second.end(); ++i)
2159 itr->second.clear();
2166 for (ConditionTypeContainer::iterator it = itr->second.begin(); it != itr->second.end(); ++it)
2168 for (ConditionList::const_iterator i = it->second.begin(); i != it->second.end(); ++i)
2172 itr->second.clear();
2179 for (ConditionTypeContainer::iterator it = itr->second.begin(); it != itr->second.end(); ++it)
2181 for (ConditionList::const_iterator i = it->second.begin(); i != it->second.end(); ++i)
2185 itr->second.clear();
2192 for (ConditionTypeContainer::iterator it = itr->second.begin(); it != itr->second.end(); ++it)
2194 for (ConditionList::const_iterator i = it->second.begin(); i != it->second.end(); ++i)
2198 itr->second.clear();
static bool addToTerrainSwapStore(TerrainPhaseInfo &swaps, Condition *cond)
@ CONDITION_SOURCE_TYPE_MAX
@ CONDITION_SOURCE_TYPE_VEHICLE_SPELL
@ CONDITION_SOURCE_TYPE_DISENCHANT_LOOT_TEMPLATE
@ CONDITION_SOURCE_TYPE_QUEST_ACCEPT
@ CONDITION_SOURCE_TYPE_REFERENCE_LOOT_TEMPLATE
@ CONDITION_SOURCE_TYPE_TERRAIN_SWAP
@ CONDITION_SOURCE_TYPE_NPC_VENDOR
@ CONDITION_SOURCE_TYPE_GOSSIP_MENU_OPTION
@ CONDITION_SOURCE_TYPE_SPELL_CLICK_EVENT
@ CONDITION_SOURCE_TYPE_MAIL_LOOT_TEMPLATE
@ CONDITION_SOURCE_TYPE_QUEST_SHOW_MARK
@ CONDITION_SOURCE_TYPE_PHASE
@ CONDITION_SOURCE_TYPE_SPELL_LOOT_TEMPLATE
@ CONDITION_SOURCE_TYPE_SMART_EVENT
@ CONDITION_SOURCE_TYPE_PICKPOCKETING_LOOT_TEMPLATE
@ CONDITION_SOURCE_TYPE_PROSPECTING_LOOT_TEMPLATE
@ CONDITION_SOURCE_TYPE_SPELL
@ CONDITION_SOURCE_TYPE_FISHING_LOOT_TEMPLATE
@ CONDITION_SOURCE_TYPE_GOSSIP_MENU
@ CONDITION_SOURCE_TYPE_CREATURE_TEMPLATE_VEHICLE
@ CONDITION_SOURCE_TYPE_ITEM_LOOT_TEMPLATE
@ CONDITION_SOURCE_TYPE_SPELL_IMPLICIT_TARGET
@ CONDITION_SOURCE_TYPE_SKINNING_LOOT_TEMPLATE
@ CONDITION_SOURCE_TYPE_CREATURE_LOOT_TEMPLATE
@ CONDITION_SOURCE_TYPE_GAMEOBJECT_LOOT_TEMPLATE
@ CONDITION_SOURCE_TYPE_MILLING_LOOT_TEMPLATE
@ CONDITION_SOURCE_TYPE_SPELL_PROC
@ CONDITION_SOURCE_TYPE_NONE
@ INSTANCE_INFO_BOSS_STATE
@ CONDITION_NEAR_GAMEOBJECT
@ CONDITION_QUESTREWARDED
@ CONDITION_INSTANCE_INFO
@ CONDITION_REPUTATION_RANK
@ CONDITION_QUEST_COMPLETE
@ CONDITION_ITEM_EQUIPPED
@ CONDITION_NEAR_CREATURE
@ CONDITION_CREATURE_TYPE
std::list< Condition * > ConditionList
std::map< uint32, ConditionList > ConditionTypeContainer
@ RELATION_IN_RAID_OR_PARTY
DBCStorage< CharTitlesEntry > sCharTitlesStore(CharTitlesEntryfmt)
DBCStorage< FactionEntry > sFactionStore(FactionEntryfmt)
DBCStorage< SkillLineEntry > sSkillLineStore(SkillLinefmt)
DBCStorage< PhaseEntry > sPhaseStore(PhaseEntryfmt)
DBCStorage< MapEntry > sMapStore(MapEntryfmt)
AreaTableEntry const * GetAreaEntryByAreaID(uint32 area_id)
#define MAX_SPELL_EFFECTS
@ GRID_MAP_TYPE_MASK_PLAYER
@ GRID_MAP_TYPE_MASK_CREATURE
@ GRID_MAP_TYPE_MASK_GAMEOBJECT
@ GRID_MAP_TYPE_MASK_CORPSE
@ GRID_MAP_TYPE_MASK_AREATRIGGER
#define SF_LOG_DEBUG(filterType__,...)
#define SF_LOG_ERROR(filterType__,...)
#define SF_LOG_INFO(filterType__,...)
LootStore LootTemplates_Spell("spell_loot_template", "spell id (random item creating)", false)
LootStore LootTemplates_Skinning("skinning_loot_template", "creature skinning id", true)
LootStore LootTemplates_Gameobject("gameobject_loot_template", "gameobject entry", true)
LootStore LootTemplates_Item("item_loot_template", "item entry", true)
LootStore LootTemplates_Milling("milling_loot_template", "item entry (herb)", true)
LootStore LootTemplates_Reference("reference_loot_template", "reference id", false)
LootStore LootTemplates_Disenchant("disenchant_loot_template", "item disenchant id", true)
LootStore LootTemplates_Prospecting("prospecting_loot_template", "item entry (ore)", true)
LootStore LootTemplates_Creature("creature_loot_template", "creature entry", true)
LootStore LootTemplates_Pickpocketing("pickpocketing_loot_template", "creature pickpocket lootid", true)
LootStore LootTemplates_Mail("mail_loot_template", "mail template id", false)
LootStore LootTemplates_Fishing("fishing_loot_template", "area id", true)
UNORDERED_MAP< uint32, std::vector< PhaseInfoStruct > > PhaseInfo
UNORDERED_MAP< uint32, std::vector< PhaseInfoStruct > > TerrainPhaseInfo
std::pair< GossipMenuItemsContainer::iterator, GossipMenuItemsContainer::iterator > GossipMenuItemsMapBoundsNonConst
std::pair< GossipMenusContainer::iterator, GossipMenusContainer::iterator > GossipMenusMapBoundsNonConst
Skyfire::AutoPtr< ResultSet, Skyfire::Mutex > QueryResult
@ QUEST_STATUS_INCOMPLETE
Creature * GetClosestCreatureWithEntry(WorldObject *source, uint32 entry, float maxSearchRange, bool alive)
GameObject * GetClosestGameObjectWithEntry(WorldObject *source, uint32 entry, float maxSearchRange)
@ CREATURE_TYPE_GAS_CLOUD
#define CLASSMASK_ALL_PLAYABLE
#define RACEMASK_ALL_PLAYABLE
@ TARGET_SELECT_CATEGORY_CONE
@ TARGET_SELECT_CATEGORY_AREA
@ TARGET_SELECT_CATEGORY_NEARBY
uint32 GetMSTimeDiffToNow(uint32 oldMSTime)
bool CompareValues(ComparisionType type, T val1, T val2)
uint32 GetSearcherTypeMaskForConditionList(ConditionList const &conditions)
bool IsObjectMeetToConditionList(ConditionSourceInfo &sourceInfo, ConditionList const &conditions)
bool isConditionTypeValid(Condition *cond)
bool CanHaveSourceGroupSet(ConditionSourceType sourceType) const
bool addToSpellImplicitTargetConditions(Condition *cond)
bool addToGossipMenus(Condition *cond)
SmartEventConditionContainer SmartEventConditionStore
bool addToGossipMenuItems(Condition *cond)
ConditionList GetConditionsForNotGroupedEntry(ConditionSourceType sourceType, uint32 entry)
bool addToLootTemplate(Condition *cond, LootTemplate *loot)
CreatureSpellConditionContainer SpellClickEventConditionStore
ConditionList GetConditionsForNpcVendorEvent(uint32 creatureId, uint32 itemId)
CreatureSpellConditionContainer VehicleSpellConditionStore
ConditionList GetConditionsForSpellClickEvent(uint32 creatureId, uint32 spellId)
bool isSourceTypeValid(Condition *cond)
bool addToPhases(Condition *cond)
bool addToTerrainSwaps(Condition *cond)
NpcVendorConditionContainer NpcVendorConditionContainerStore
bool CanHaveSourceIdSet(ConditionSourceType sourceType) const
ConditionContainer ConditionStore
ConditionList GetConditionsForSmartEvent(int32 entryOrGuid, uint32 eventId, uint32 sourceType)
ConditionReferenceContainer ConditionReferenceStore
std::list< Condition * > AllocatedMemoryStore
ConditionList GetConditionReferences(uint32 refId)
bool IsObjectMeetToConditions(WorldObject *object, ConditionList const &conditions)
ConditionList GetConditionsForVehicleSpell(uint32 creatureId, uint32 spellId)
void LoadConditions(bool isReload=false)
std::vector< GameEventData > GameEventDataMap
bool isReference(uint32 id)
bool addConditionItem(Condition *cond)
static bool IsValidGender(uint8 Gender)
static DrunkenState GetDrunkenstateByValue(uint8 value)
std::list< Condition * > * ImplicitTargetConditions
SpellImplicitTargetInfo TargetA
SpellImplicitTargetInfo TargetB
SpellTargetSelectionCategories GetSelectionCategory() const
SpellEffectInfo Effects[MAX_SPELL_EFFECTS]
ReputationRank GetReactionTo(Unit const *target) const
uint64 GetCreatorGUID() const
bool IsOnVehicle(const Unit *vehicle) const
bool IsInRaidWith(Unit const *unit) const
uint64 GetOwnerGUID() const
bool IsInPartyWith(Unit const *unit) const
float GetDistance(WorldObject const *obj) const
WorldDatabaseWorkerPool WorldDatabase
Accessor to the world database.
uint32 GetSearcherTypeMaskForCondition()
ConditionTypes ConditionType
bool Meets(ConditionSourceInfo &sourceInfo)
ConditionSourceType SourceType
SpellCastResult ErrorType
uint32 GetMaxAvailableConditionTargets()
Condition * mLastFailedCondition
WorldObject * mConditionTargets[MAX_CONDITION_TARGETS]