aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Grids
diff options
context:
space:
mode:
authorGiacomo Pozzoni <giacomopoz@gmail.com>2020-08-25 14:14:06 +0200
committerShauren <shauren.trinity@gmail.com>2022-02-04 00:27:13 +0100
commit902ed74c2adaf2dadcd38f1fb96963f7ec46df07 (patch)
treefd0cd09378c62d25c43d09aba97e37471b7cc583 /src/server/game/Grids
parent71cbe9f3185432dd60814452f2eaf98df0ed985c (diff)
Core/SAI: Implement SMART_TARGET_ACTION_INVOKER in SMART_EVENT_FRIENDLY_HEALTH_PCT (#25318)
* Core/SAI: Implement SMART_TARGET_ACTION_INVOKER in SMART_EVENT_FRIENDLY_HEALTH_PCT * Require radius (5th parameter) to be set (cherry picked from commit cbed1039c47f0e3487cea555bb8552a4e6445f5a)
Diffstat (limited to 'src/server/game/Grids')
-rw-r--r--src/server/game/Grids/Notifiers/GridNotifiers.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/server/game/Grids/Notifiers/GridNotifiers.h b/src/server/game/Grids/Notifiers/GridNotifiers.h
index 08165b08934..2f75b5d7447 100644
--- a/src/server/game/Grids/Notifiers/GridNotifiers.h
+++ b/src/server/game/Grids/Notifiers/GridNotifiers.h
@@ -887,6 +887,27 @@ namespace Trinity
uint64 i_hp;
};
+ class MostHPPercentMissingInRange
+ {
+ public:
+ MostHPPercentMissingInRange(Unit const* obj, float range, uint32 minHpPct, uint32 maxHpPct) : i_obj(obj), i_range(range), i_minHpPct(minHpPct), i_maxHpPct(maxHpPct), i_hpPct(101.f) { }
+
+ bool operator()(Unit* u)
+ {
+ if (u->IsAlive() && u->IsInCombat() && !i_obj->IsHostileTo(u) && i_obj->IsWithinDistInMap(u, i_range) && i_minHpPct <= u->GetHealthPct() && u->GetHealthPct() <= i_maxHpPct && u->GetHealthPct() < i_hpPct)
+ {
+ i_hpPct = u->GetHealthPct();
+ return true;
+ }
+ return false;
+ }
+
+ private:
+ Unit const* i_obj;
+ float i_range;
+ float i_minHpPct, i_maxHpPct, i_hpPct;
+ };
+
class FriendlyBelowHpPctEntryInRange
{
public: