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();