[Quest API] Add Mob Hate Methods to Perl/Lua. (#2548)

* [Quest API] Add Mob Hate Methods to Perl/Lua.

# Perl
- Add `$mob->DamageHateList(damage)` to Perl.
- Add `$mob->DamageHateList(damage, distance)` to Perl.
- Add `$mob->DamageHateListPercentage(damage)` to Perl.
- Add `$mob->DamageHateListPercentage(damage, distance)` to Perl.
- Add `$mob->DamageHateListBots(damage)` to Perl.
- Add `$mob->DamageHateListBots(damage, distance)` to Perl.
- Add `$mob->DamageHateListBotsPercentage(damage)` to Perl.
- Add `$mob->DamageHateListBotsPercentage(damage, distance)` to Perl.
- Add `$mob->DamageHateListClients(damage)` to Perl.
- Add `$mob->DamageHateListClients(damage, distance)` to Perl.
- Add `$mob->DamageHateListClientsPercentage(damage)` to Perl.
- Add `$mob->DamageHateListClientsPercentage(damage, distance)` to Perl.
- Add `$mob->DamageHateListNPCs(damage)` to Perl.
- Add `$mob->DamageHateListNPCs(damage, distance)` to Perl.
- Add `$mob->DamageHateListNPCsPercentage(damage)` to Perl.
- Add `$mob->DamageHateListNPCsPercentage(damage, distance)` to Perl.
- Add `$mob->GetHateListBots()` to Perl.
- Add `$mob->GetHateListBots(distance)` to Perl.
- Add `$mob->GetHateListClients()` to Perl.
- Add `$mob->GetHateListClients(distance)` to Perl.
- Add `$mob->GetHateListNPCs()` to Perl.
- Add `$mob->GetHateListNPCs(distance)` to Perl.

# Lua
- Add `mob:DamageHateList(damage)` to Lua.
- Add `mob:DamageHateList(damage, distance)` to Lua.
- Add `mob:DamageHateListPercentage(damage)` to Lua.
- Add `mob:DamageHateListPercentage(damage, distance)` to Lua.
- Add `mob:DamageHateListBots(damage)` to Lua.
- Add `mob:DamageHateListBots(damage, distance)` to Lua.
- Add `mob:DamageHateListBotsPercentage(damage)` to Lua.
- Add `mob:DamageHateListBotsPercentage(damage, distance)` to Lua.
- Add `mob:DamageHateListClients(damage)` to Lua.
- Add `mob:DamageHateListClients(damage, distance)` to Lua.
- Add `mob:DamageHateListClientsPercentage(damage)` to Lua.
- Add `mob:DamageHateListClientsPercentage(damage, distance)` to Lua.
- Add `mob:DamageHateListNPCs(damage)` to Lua.
- Add `mob:DamageHateListNPCs(damage, distance)` to Lua.
- Add `mob:DamageHateListNPCsPercentage(damage)` to Lua.
- Add `mob:DamageHateListNPCsPercentage(damage, distance)` to Lua.
- Add `mob:GetHateListBots()` to Lua.
- Add `mob:GetHateListBots(distance)` to Lua.
- Add `mob:GetHateListClients()` to Lua.
- Add `mob:GetHateListClients(distance)` to Lua.
- Add `mob:GetHateListNPCs()` to Lua.
- Add `mob:GetHateListNPCs(distance)` to Lua.

# Notes
- Offers an extreme amount of short hands when grabbing hate list entities by a specific type or damaging a specific type of entity on an NPC's hatelist.
- Should save operators having to use `GetHateList()` then loop it to get the entries they want to do something.

* Cleanup.
This commit is contained in:
Kinglykrab
2022-11-16 08:16:47 -05:00
committed by GitHub
parent 6ff52f94c4
commit 8c994fef97
6 changed files with 485 additions and 36 deletions
+200 -10
View File
@@ -2357,22 +2357,26 @@ Lua_Mob Lua_Mob::GetHateClosest() {
Lua_HateList Lua_Mob::GetHateListByDistance() {
Lua_Safe_Call_Class(Lua_HateList);
Lua_HateList ret;
auto list = self->GetHateListByDistance();
for (auto hate_entry : list) {
Lua_HateEntry entry(hate_entry);
ret.entries.push_back(entry);
auto h_list = self->GetFilteredHateList();
for (auto h : h_list) {
Lua_HateEntry e(h);
ret.entries.push_back(e);
}
return ret;
}
Lua_HateList Lua_Mob::GetHateListByDistance(int distance) {
Lua_HateList Lua_Mob::GetHateListByDistance(uint32 distance) {
Lua_Safe_Call_Class(Lua_HateList);
Lua_HateList ret;
auto list = self->GetHateListByDistance(distance);
for (auto hate_entry : list) {
Lua_HateEntry entry(hate_entry);
ret.entries.push_back(entry);
auto h_list = self->GetFilteredHateList(distance);
for (auto h : h_list) {
Lua_HateEntry e(h);
ret.entries.push_back(e);
}
return ret;
}
@@ -2503,6 +2507,166 @@ uint16 Lua_Mob::GetOwnerID() {
return self->GetOwnerID();
}
void Lua_Mob::DamageHateList(int64 damage) {
Lua_Safe_Call_Void();
self->DamageHateList(damage);
}
void Lua_Mob::DamageHateList(int64 damage, uint32 distance) {
Lua_Safe_Call_Void();
self->DamageHateList(damage, distance);
}
void Lua_Mob::DamageHateListClients(int64 damage) {
Lua_Safe_Call_Void();
self->DamageHateList(damage, 0, HateListFilterTypes::Clients);
}
void Lua_Mob::DamageHateListClients(int64 damage, uint32 distance) {
Lua_Safe_Call_Void();
self->DamageHateList(damage, distance, HateListFilterTypes::Clients);
}
void Lua_Mob::DamageHateListNPCs(int64 damage) {
Lua_Safe_Call_Void();
self->DamageHateList(damage, 0, HateListFilterTypes::NPCs);
}
void Lua_Mob::DamageHateListNPCs(int64 damage, uint32 distance) {
Lua_Safe_Call_Void();
self->DamageHateList(damage, distance, HateListFilterTypes::NPCs);
}
void Lua_Mob::DamageHateListPercentage(int64 damage) {
Lua_Safe_Call_Void();
self->DamageHateList(damage, 0, HateListFilterTypes::All, true);
}
void Lua_Mob::DamageHateListPercentage(int64 damage, uint32 distance) {
Lua_Safe_Call_Void();
self->DamageHateList(damage, distance, HateListFilterTypes::All, true);
}
void Lua_Mob::DamageHateListClientsPercentage(int64 damage) {
Lua_Safe_Call_Void();
self->DamageHateList(damage, 0, HateListFilterTypes::Clients, true);
}
void Lua_Mob::DamageHateListClientsPercentage(int64 damage, uint32 distance) {
Lua_Safe_Call_Void();
self->DamageHateList(damage, distance, HateListFilterTypes::Clients, true);
}
void Lua_Mob::DamageHateListNPCsPercentage(int64 damage) {
Lua_Safe_Call_Void();
self->DamageHateList(damage, 0, HateListFilterTypes::NPCs, true);
}
void Lua_Mob::DamageHateListNPCsPercentage(int64 damage, uint32 distance) {
Lua_Safe_Call_Void();
self->DamageHateList(damage, distance, HateListFilterTypes::NPCs, true);
}
Lua_HateList Lua_Mob::GetHateListClients() {
Lua_Safe_Call_Class(Lua_HateList);
Lua_HateList ret;
auto h_list = self->GetFilteredHateList(0, HateListFilterTypes::Clients);
for (auto h : h_list) {
Lua_HateEntry e(h);
ret.entries.push_back(e);
}
return ret;
}
Lua_HateList Lua_Mob::GetHateListClients(uint32 distance) {
Lua_Safe_Call_Class(Lua_HateList);
Lua_HateList ret;
auto h_list = self->GetFilteredHateList(distance, HateListFilterTypes::Clients);
for (auto h : h_list) {
Lua_HateEntry e(h);
ret.entries.push_back(e);
}
return ret;
}
Lua_HateList Lua_Mob::GetHateListNPCs() {
Lua_Safe_Call_Class(Lua_HateList);
Lua_HateList ret;
auto h_list = self->GetFilteredHateList(0, HateListFilterTypes::NPCs);
for (auto h : h_list) {
Lua_HateEntry e(h);
ret.entries.push_back(e);
}
return ret;
}
Lua_HateList Lua_Mob::GetHateListNPCs(uint32 distance) {
Lua_Safe_Call_Class(Lua_HateList);
Lua_HateList ret;
auto h_list = self->GetFilteredHateList(distance, HateListFilterTypes::NPCs);
for (auto h : h_list) {
Lua_HateEntry e(h);
ret.entries.push_back(e);
}
return ret;
}
#ifdef BOTS
void Lua_Mob::DamageHateListBots(int64 damage) {
Lua_Safe_Call_Void();
self->DamageHateList(damage, 0, HateListFilterTypes::Bots);
}
void Lua_Mob::DamageHateListBots(int64 damage, uint32 distance) {
Lua_Safe_Call_Void();
self->DamageHateList(damage, distance, HateListFilterTypes::Bots);
}
void Lua_Mob::DamageHateListBotsPercentage(int64 damage) {
Lua_Safe_Call_Void();
self->DamageHateList(damage, 0, HateListFilterTypes::Bots, true);
}
void Lua_Mob::DamageHateListBotsPercentage(int64 damage, uint32 distance) {
Lua_Safe_Call_Void();
self->DamageHateList(damage, distance, HateListFilterTypes::Bots, true);
}
Lua_HateList Lua_Mob::GetHateListBots() {
Lua_Safe_Call_Class(Lua_HateList);
Lua_HateList ret;
auto h_list = self->GetFilteredHateList(0, HateListFilterTypes::Bots);
for (auto h : h_list) {
Lua_HateEntry e(h);
ret.entries.push_back(e);
}
return ret;
}
Lua_HateList Lua_Mob::GetHateListBots(uint32 distance) {
Lua_Safe_Call_Class(Lua_HateList);
Lua_HateList ret;
auto h_list = self->GetFilteredHateList(distance, HateListFilterTypes::Bots);
for (auto h : h_list) {
Lua_HateEntry e(h);
ret.entries.push_back(e);
}
return ret;
}
#endif
luabind::scope lua_register_mob() {
return luabind::class_<Lua_Mob, Lua_Entity>("Mob")
.def(luabind::constructor<>())
@@ -2589,6 +2753,24 @@ luabind::scope lua_register_mob() {
.def("Damage", (void(Lua_Mob::*)(Lua_Mob,int64,int,int,bool))&Lua_Mob::Damage)
.def("Damage", (void(Lua_Mob::*)(Lua_Mob,int64,int,int,bool,int))&Lua_Mob::Damage)
.def("Damage", (void(Lua_Mob::*)(Lua_Mob,int64,int,int,bool,int,bool))&Lua_Mob::Damage)
.def("DamageHateList", (void(Lua_Mob::*)(int64))&Lua_Mob::DamageHateList)
.def("DamageHateList", (void(Lua_Mob::*)(int64,uint32))&Lua_Mob::DamageHateList)
#ifdef BOTS
.def("DamageHateListBots", (void(Lua_Mob::*)(int64))&Lua_Mob::DamageHateListBots)
.def("DamageHateListBots", (void(Lua_Mob::*)(int64,uint32))&Lua_Mob::DamageHateListBots)
.def("DamageHateListBotsPercentage", (void(Lua_Mob::*)(int64))&Lua_Mob::DamageHateListBots)
.def("DamageHateListBotsPercentage", (void(Lua_Mob::*)(int64,uint32))&Lua_Mob::DamageHateListBots)
#endif
.def("DamageHateListClients", (void(Lua_Mob::*)(int64))&Lua_Mob::DamageHateListClients)
.def("DamageHateListClients", (void(Lua_Mob::*)(int64,uint32))&Lua_Mob::DamageHateListClients)
.def("DamageHateListClientsPercentage", (void(Lua_Mob::*)(int64))&Lua_Mob::DamageHateListClientsPercentage)
.def("DamageHateListClientsPercentage", (void(Lua_Mob::*)(int64,uint32))&Lua_Mob::DamageHateListClientsPercentage)
.def("DamageHateListNPCs", (void(Lua_Mob::*)(int64))&Lua_Mob::DamageHateListNPCs)
.def("DamageHateListNPCs", (void(Lua_Mob::*)(int64,uint32))&Lua_Mob::DamageHateListNPCs)
.def("DamageHateListNPCsPercentage", (void(Lua_Mob::*)(int64))&Lua_Mob::DamageHateListNPCsPercentage)
.def("DamageHateListNPCsPercentage", (void(Lua_Mob::*)(int64,uint32))&Lua_Mob::DamageHateListNPCsPercentage)
.def("DamageHateListPercentage", (void(Lua_Mob::*)(int64))&Lua_Mob::DamageHateListPercentage)
.def("DamageHateListPercentage", (void(Lua_Mob::*)(int64,uint32))&Lua_Mob::DamageHateListPercentage)
.def("DelGlobal", (void(Lua_Mob::*)(const char*))&Lua_Mob::DelGlobal)
.def("DeleteBucket", (void(Lua_Mob::*)(std::string))&Lua_Mob::DeleteBucket)
.def("Depop", (void(Lua_Mob::*)(bool))&Lua_Mob::Depop)
@@ -2690,8 +2872,16 @@ luabind::scope lua_register_mob() {
.def("GetHateClosest", &Lua_Mob::GetHateClosest)
.def("GetHateDamageTop", (Lua_Mob(Lua_Mob::*)(Lua_Mob))&Lua_Mob::GetHateDamageTop)
.def("GetHateList", &Lua_Mob::GetHateList)
.def("GetHateListByDistance", (Lua_HateList(Lua_Mob::*)(int))&Lua_Mob::GetHateListByDistance)
#ifdef BOTS
.def("GetHateListBots", (Lua_HateList(Lua_Mob::*)(void))&Lua_Mob::GetHateListBots)
.def("GetHateListBots", (Lua_HateList(Lua_Mob::*)(uint32))&Lua_Mob::GetHateListBots)
#endif
.def("GetHateListClients", (Lua_HateList(Lua_Mob::*)(void))&Lua_Mob::GetHateListClients)
.def("GetHateListClients", (Lua_HateList(Lua_Mob::*)(uint32))&Lua_Mob::GetHateListClients)
.def("GetHateListNPCs", (Lua_HateList(Lua_Mob::*)(void))&Lua_Mob::GetHateListNPCs)
.def("GetHateListNPCs", (Lua_HateList(Lua_Mob::*)(uint32))&Lua_Mob::GetHateListNPCs)
.def("GetHateListByDistance", (Lua_HateList(Lua_Mob::*)(void))&Lua_Mob::GetHateListByDistance)
.def("GetHateListByDistance", (Lua_HateList(Lua_Mob::*)(uint32))&Lua_Mob::GetHateListByDistance)
.def("GetHateRandom", (Lua_Mob(Lua_Mob::*)(void))&Lua_Mob::GetHateRandom)
#ifdef BOTS
.def("GetHateRandomBot", (Lua_Bot(Lua_Mob::*)(void))&Lua_Mob::GetHateRandomBot)