Core/Conditions: Allow using guid (negative value) in SAI conditions
This commit is contained in:
@@ -344,17 +344,17 @@ ConditionList ConditionMgr::GetConditionsForVehicleSpell(uint32 creatureID, uint
|
|||||||
return cond;
|
return cond;
|
||||||
}
|
}
|
||||||
|
|
||||||
ConditionList ConditionMgr::GetConditionsForSmartEvent(uint32 entry, uint32 eventId, uint32 sourceType)
|
ConditionList ConditionMgr::GetConditionsForSmartEvent(int32 entryOrGuid, uint32 eventId, uint32 sourceType)
|
||||||
{
|
{
|
||||||
ConditionList cond;
|
ConditionList cond;
|
||||||
SmartEventConditionContainer::const_iterator itr = SmartEventConditionStore.find(std::make_pair(entry, sourceType));
|
SmartEventConditionContainer::const_iterator itr = SmartEventConditionStore.find(std::make_pair(entryOrGuid, sourceType));
|
||||||
if (itr != SmartEventConditionStore.end())
|
if (itr != SmartEventConditionStore.end())
|
||||||
{
|
{
|
||||||
ConditionTypeContainer::const_iterator i = (*itr).second.find(eventId + 1);
|
ConditionTypeContainer::const_iterator i = (*itr).second.find(eventId + 1);
|
||||||
if (i != (*itr).second.end())
|
if (i != (*itr).second.end())
|
||||||
{
|
{
|
||||||
cond = (*i).second;
|
cond = (*i).second;
|
||||||
sLog->outDebug(LOG_FILTER_CONDITIONSYS, "GetConditionsForSmartEvent: found conditions for Smart Event entry %u event_id %u", entry, eventId);
|
sLog->outDebug(LOG_FILTER_CONDITIONSYS, "GetConditionsForSmartEvent: found conditions for Smart Event entry or guid %d event_id %u", entryOrGuid, eventId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return cond;
|
return cond;
|
||||||
@@ -410,7 +410,7 @@ void ConditionMgr::LoadConditions(bool isReload)
|
|||||||
Condition* cond = new Condition();
|
Condition* cond = new Condition();
|
||||||
int32 iSourceTypeOrReferenceId = fields[0].GetInt32();
|
int32 iSourceTypeOrReferenceId = fields[0].GetInt32();
|
||||||
cond->mSourceGroup = fields[1].GetUInt32();
|
cond->mSourceGroup = fields[1].GetUInt32();
|
||||||
cond->mSourceEntry = fields[2].GetUInt32();
|
cond->mSourceEntry = fields[2].GetInt32();
|
||||||
cond->mSourceId = fields[3].GetUInt32();
|
cond->mSourceId = fields[3].GetUInt32();
|
||||||
cond->mElseGroup = fields[4].GetUInt32();
|
cond->mElseGroup = fields[4].GetUInt32();
|
||||||
int32 iConditionTypeOrReference = fields[5].GetInt32();
|
int32 iConditionTypeOrReference = fields[5].GetInt32();
|
||||||
@@ -553,7 +553,7 @@ void ConditionMgr::LoadConditions(bool isReload)
|
|||||||
case CONDITION_SOURCE_TYPE_SMART_EVENT:
|
case CONDITION_SOURCE_TYPE_SMART_EVENT:
|
||||||
{
|
{
|
||||||
// If the entry does not exist, create a new list
|
// If the entry does not exist, create a new list
|
||||||
std::pair<uint32, uint32> key = std::make_pair(cond->mSourceEntry, cond->mSourceId);
|
std::pair<int32, uint32> key = std::make_pair(cond->mSourceEntry, cond->mSourceId);
|
||||||
if (SmartEventConditionStore.find(key) == SmartEventConditionStore.end())
|
if (SmartEventConditionStore.find(key) == SmartEventConditionStore.end())
|
||||||
{
|
{
|
||||||
ConditionTypeContainer cmap;
|
ConditionTypeContainer cmap;
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ struct Condition
|
|||||||
{
|
{
|
||||||
ConditionSourceType mSourceType; //SourceTypeOrReferenceId
|
ConditionSourceType mSourceType; //SourceTypeOrReferenceId
|
||||||
uint32 mSourceGroup;
|
uint32 mSourceGroup;
|
||||||
uint32 mSourceEntry;
|
int32 mSourceEntry;
|
||||||
uint32 mSourceId; // So far, only used in CONDITION_SOURCE_TYPE_SMART_EVENT
|
uint32 mSourceId; // So far, only used in CONDITION_SOURCE_TYPE_SMART_EVENT
|
||||||
uint32 mElseGroup;
|
uint32 mElseGroup;
|
||||||
ConditionType mConditionType; //ConditionTypeOrReference
|
ConditionType mConditionType; //ConditionTypeOrReference
|
||||||
@@ -138,7 +138,7 @@ typedef std::list<Condition*> ConditionList;
|
|||||||
typedef std::map<uint32, ConditionList> ConditionTypeContainer;
|
typedef std::map<uint32, ConditionList> ConditionTypeContainer;
|
||||||
typedef std::map<ConditionSourceType, ConditionTypeContainer> ConditionContainer;
|
typedef std::map<ConditionSourceType, ConditionTypeContainer> ConditionContainer;
|
||||||
typedef std::map<uint32, ConditionTypeContainer> VehicleSpellConditionContainer;
|
typedef std::map<uint32, ConditionTypeContainer> VehicleSpellConditionContainer;
|
||||||
typedef std::map<std::pair<uint32, uint32 /*SAI source_type*/>, ConditionTypeContainer> SmartEventConditionContainer;
|
typedef std::map<std::pair<int32, uint32 /*SAI source_type*/>, ConditionTypeContainer> SmartEventConditionContainer;
|
||||||
|
|
||||||
typedef std::map<uint32, ConditionList> ConditionReferenceContainer;//only used for references
|
typedef std::map<uint32, ConditionList> ConditionReferenceContainer;//only used for references
|
||||||
|
|
||||||
@@ -157,7 +157,7 @@ class ConditionMgr
|
|||||||
|
|
||||||
bool IsPlayerMeetToConditions(Player* player, ConditionList const& conditions, Unit* invoker = NULL);
|
bool IsPlayerMeetToConditions(Player* player, ConditionList const& conditions, Unit* invoker = NULL);
|
||||||
ConditionList GetConditionsForNotGroupedEntry(ConditionSourceType sourceType, uint32 entry);
|
ConditionList GetConditionsForNotGroupedEntry(ConditionSourceType sourceType, uint32 entry);
|
||||||
ConditionList GetConditionsForSmartEvent(uint32 entry, uint32 eventId, uint32 sourceType);
|
ConditionList GetConditionsForSmartEvent(int32 entryOrGuid, uint32 eventId, uint32 sourceType);
|
||||||
ConditionList GetConditionsForVehicleSpell(uint32 creatureID, uint32 spellID);
|
ConditionList GetConditionsForVehicleSpell(uint32 creatureID, uint32 spellID);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
Reference in New Issue
Block a user