From 02526072f3c851188dac07b22eafec73a89881e9 Mon Sep 17 00:00:00 2001 From: "Michael Cook (mackal)" Date: Fri, 11 Jun 2021 14:28:35 -0400 Subject: [PATCH] [Quest API] Add Lua_Mob::GetShuffledHateList (#1381) This returns the hate list but in a random order. This is useful to prevent repeated (potentially infinite ...) calls to GetHateRandom() --- zone/lua_mob.cpp | 18 ++++++++++++++++++ zone/lua_mob.h | 1 + 2 files changed, 19 insertions(+) diff --git a/zone/lua_mob.cpp b/zone/lua_mob.cpp index 2948c8c71..869d6b27c 100644 --- a/zone/lua_mob.cpp +++ b/zone/lua_mob.cpp @@ -967,6 +967,23 @@ Lua_HateList Lua_Mob::GetHateList() { return ret; } +Lua_HateList Lua_Mob::GetShuffledHateList() { + Lua_Safe_Call_Class(Lua_HateList); + Lua_HateList ret; + + auto h_list = self->GetHateList(); + auto iter = h_list.begin(); + while(iter != h_list.end()) { + Lua_HateEntry e(*iter); + ret.entries.push_back(e); + ++iter; + } + + zone->random.Shuffle(ret.entries.begin(), ret.entries.end()); + + return ret; +} + Lua_Mob Lua_Mob::GetHateTop() { Lua_Safe_Call_Class(Lua_Mob); return Lua_Mob(self->GetHateTop()); @@ -2513,6 +2530,7 @@ luabind::scope lua_register_mob() { .def("GetPet", &Lua_Mob::GetPet) .def("GetOwner", &Lua_Mob::GetOwner) .def("GetHateList", &Lua_Mob::GetHateList) + .def("GetShuffledHateList", &Lua_Mob::GetShuffledHateList) .def("GetHateListByDistance", (Lua_HateList(Lua_Mob::*)(void))&Lua_Mob::GetHateListByDistance) .def("GetHateListByDistance", (Lua_HateList(Lua_Mob::*)(int))&Lua_Mob::GetHateListByDistance) .def("GetHateTop", (Lua_Mob(Lua_Mob::*)(void))&Lua_Mob::GetHateTop) diff --git a/zone/lua_mob.h b/zone/lua_mob.h index dbb3c8110..45bf78af6 100644 --- a/zone/lua_mob.h +++ b/zone/lua_mob.h @@ -199,6 +199,7 @@ public: Lua_Mob GetPet(); Lua_Mob GetOwner(); Lua_HateList GetHateList(); + Lua_HateList GetShuffledHateList(); Lua_HateList GetHateListByDistance(); Lua_HateList GetHateListByDistance(int distance); Lua_Mob GetHateTop();