[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()
This commit is contained in:
Michael Cook (mackal) 2021-06-11 14:28:35 -04:00 committed by GitHub
parent 854a09fc84
commit 02526072f3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 0 deletions

View File

@ -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)

View File

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