aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/AI/SmartScripts/SmartScript.cpp11
-rwxr-xr-xsrc/server/game/Conditions/ConditionMgr.cpp4
2 files changed, 6 insertions, 9 deletions
diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp
index 4b15805c2c9..0794179d158 100644
--- a/src/server/game/AI/SmartScripts/SmartScript.cpp
+++ b/src/server/game/AI/SmartScripts/SmartScript.cpp
@@ -85,14 +85,9 @@ void SmartScript::ProcessEventsFor(SMART_EVENT e, Unit* unit, uint32 var0, uint3
if (eventType == e/* && (!(*i).event.event_phase_mask || IsInPhase((*i).event.event_phase_mask)) && !((*i).event.event_flags & SMART_EVENT_FLAG_NOT_REPEATABLE && (*i).runOnce)*/)
{
bool meets = true;
- if (unit)
- {
- if (Player* player = unit->ToPlayer())
- {
- ConditionList conds = sConditionMgr->GetConditionsForSmartEvent((*i).entryOrGuid, (*i).event_id, (*i).source_type);
- meets = sConditionMgr->IsObjectMeetToConditions(player, conds);
- }
- }
+ ConditionList conds = sConditionMgr->GetConditionsForSmartEvent((*i).entryOrGuid, (*i).event_id, (*i).source_type);
+ ConditionSourceInfo info = ConditionSourceInfo(unit, GetBaseObject());
+ meets = sConditionMgr->IsObjectMeetToConditionList(info, conds);
if (meets)
ProcessEvent(*i, unit, var0, var1, bvar, spell, gob);
diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp
index 0e8e999bcac..14f782683b3 100755
--- a/src/server/game/Conditions/ConditionMgr.cpp
+++ b/src/server/game/Conditions/ConditionMgr.cpp
@@ -36,7 +36,7 @@ bool Condition::Meets(ConditionSourceInfo& sourceInfo)
// object not present, return false
if (!object)
{
- sLog->outDebug(LOG_FILTER_CONDITIONSYS, "Condition object not found");
+ sLog->outDebug(LOG_FILTER_CONDITIONSYS, "Condition object not found for condition (Entry: %u Type: %u Group: %u)", mSourceEntry, mSourceType, mSourceGroup);
return false;
}
bool condMeets = false;
@@ -334,6 +334,8 @@ uint32 Condition::GetMaxAvailableConditionTargets()
{
case CONDITION_SOURCE_TYPE_SPELL:
return 2;
+ case CONDITION_SOURCE_TYPE_SMART_EVENT:
+ return 2;
default:
return 1;
}