diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/AI/SmartScripts/SmartScript.cpp | 12 | ||||
-rw-r--r-- | src/server/game/AI/SmartScripts/SmartScriptMgr.h | 4 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 554a64844d2..df7ea2f1108 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -2544,6 +2544,9 @@ void SmartScript::GetTargets(ObjectVector& targets, SmartScriptHolder const& e, if ((!e.target.unitRange.creature || unit->ToCreature()->GetEntry() == e.target.unitRange.creature) && baseObject->IsInRange(unit, float(e.target.unitRange.minDist), float(e.target.unitRange.maxDist))) targets.push_back(unit); } + + if (e.target.unitRange.maxSize) + Trinity::Containers::RandomResize(targets, e.target.unitRange.maxSize); break; } case SMART_TARGET_CREATURE_DISTANCE: @@ -2562,6 +2565,9 @@ void SmartScript::GetTargets(ObjectVector& targets, SmartScriptHolder const& e, if (!e.target.unitDistance.creature || unit->ToCreature()->GetEntry() == e.target.unitDistance.creature) targets.push_back(unit); } + + if (e.target.unitDistance.maxSize) + Trinity::Containers::RandomResize(targets, e.target.unitDistance.maxSize); break; } case SMART_TARGET_GAMEOBJECT_DISTANCE: @@ -2580,6 +2586,9 @@ void SmartScript::GetTargets(ObjectVector& targets, SmartScriptHolder const& e, if (!e.target.goDistance.entry || unit->ToGameObject()->GetEntry() == e.target.goDistance.entry) targets.push_back(unit); } + + if (e.target.goDistance.maxSize) + Trinity::Containers::RandomResize(targets, e.target.goDistance.maxSize); break; } case SMART_TARGET_GAMEOBJECT_RANGE: @@ -2598,6 +2607,9 @@ void SmartScript::GetTargets(ObjectVector& targets, SmartScriptHolder const& e, if ((!e.target.goRange.entry && unit->ToGameObject()->GetEntry() == e.target.goRange.entry) && baseObject->IsInRange(unit, float(e.target.goRange.minDist), float(e.target.goRange.maxDist))) targets.push_back(unit); } + + if (e.target.goRange.maxSize) + Trinity::Containers::RandomResize(targets, e.target.goRange.maxSize); break; } case SMART_TARGET_CREATURE_GUID: diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index 577413889c4..1d591956019 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -1240,6 +1240,7 @@ struct SmartTarget uint32 creature; uint32 minDist; uint32 maxDist; + uint32 maxSize; } unitRange; struct @@ -1252,6 +1253,7 @@ struct SmartTarget { uint32 creature; uint32 dist; + uint32 maxSize; } unitDistance; struct @@ -1275,6 +1277,7 @@ struct SmartTarget uint32 entry; uint32 minDist; uint32 maxDist; + uint32 maxSize; } goRange; struct @@ -1287,6 +1290,7 @@ struct SmartTarget { uint32 entry; uint32 dist; + uint32 maxSize; } goDistance; struct |