mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-11 16:51:29 +00:00
[Quest API] Add Hatelist Count Methods to Perl/Lua (#4106)
# Perl - Add `$mob->GetHateListCount()`.# Perl - Add `$mob->GetHateListCount()`. - Add `$mob->GetHateListBotCount()`. - Add `$mob->GetHateListClientCount()`. - Add `$mob->GetHateListNPCCount()`. # Lua - Add `mob:GetHateListCount()`. - Add `mob:GetHateListBotCount()`. - Add `mob:GetHateListClientCount()`. - Add `mob:GetHateListNPCCount()`. # Notes - Allows operators to more easily get a total entity count of a Mob's hate list, can do an overall count, or specifically bots, clients, or NPCs.
This commit is contained in:
parent
f505c2cfd2
commit
67d8250b1c
@ -683,7 +683,33 @@ int64 HateList::GetEntHateAmount(Mob *in_entity, bool damage)
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool HateList::IsHateListEmpty() {
|
bool HateList::IsHateListEmpty() {
|
||||||
return(list.size() == 0);
|
return list.empty();
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32 HateList::GetHateListCount(HateListCountType count_type)
|
||||||
|
{
|
||||||
|
if (count_type == HateListCountType::All) {
|
||||||
|
return list.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32 count = 0;
|
||||||
|
|
||||||
|
for (const auto& e : list) {
|
||||||
|
Mob* m = e->entity_on_hatelist;
|
||||||
|
|
||||||
|
if (
|
||||||
|
m &&
|
||||||
|
(
|
||||||
|
(count_type == HateListCountType::Bot && m->IsBot()) ||
|
||||||
|
(count_type == HateListCountType::Client && m->IsClient()) ||
|
||||||
|
(count_type == HateListCountType::NPC && m->IsNPC())
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
void HateList::PrintHateListToClient(Client *c)
|
void HateList::PrintHateListToClient(Client *c)
|
||||||
|
|||||||
@ -36,6 +36,13 @@ struct struct_HateList {
|
|||||||
uint32 last_modified; // we need to remove this if it gets higher than 10 mins
|
uint32 last_modified; // we need to remove this if it gets higher than 10 mins
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum class HateListCountType {
|
||||||
|
Bot = 0,
|
||||||
|
Client = 1,
|
||||||
|
NPC = 2,
|
||||||
|
All = 3,
|
||||||
|
};
|
||||||
|
|
||||||
class HateList {
|
class HateList {
|
||||||
public:
|
public:
|
||||||
HateList();
|
HateList();
|
||||||
@ -51,6 +58,7 @@ public:
|
|||||||
bool IsEntOnHateList(Mob* m);
|
bool IsEntOnHateList(Mob* m);
|
||||||
bool IsHateListEmpty();
|
bool IsHateListEmpty();
|
||||||
bool RemoveEntFromHateList(Mob *ent);
|
bool RemoveEntFromHateList(Mob *ent);
|
||||||
|
uint32 GetHateListCount(HateListCountType count_type = HateListCountType::All);
|
||||||
|
|
||||||
int AreaRampage(Mob *caster, Mob *target, int count, ExtraAttackOptions *opts);
|
int AreaRampage(Mob *caster, Mob *target, int count, ExtraAttackOptions *opts);
|
||||||
int GetSummonedPetCountOnHateList();
|
int GetSummonedPetCountOnHateList();
|
||||||
|
|||||||
@ -3201,6 +3201,30 @@ uint32 Lua_Mob::GetMobTypeIdentifier()
|
|||||||
return self->GetMobTypeIdentifier();
|
return self->GetMobTypeIdentifier();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32 Lua_Mob::GetHateListCount()
|
||||||
|
{
|
||||||
|
Lua_Safe_Call_Int();
|
||||||
|
return self->GetHateListCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32 Lua_Mob::GetHateListBotCount()
|
||||||
|
{
|
||||||
|
Lua_Safe_Call_Int();
|
||||||
|
return self->GetHateListCount(HateListCountType::Bot);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32 Lua_Mob::GetHateListClientCount()
|
||||||
|
{
|
||||||
|
Lua_Safe_Call_Int();
|
||||||
|
return self->GetHateListCount(HateListCountType::Client);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32 Lua_Mob::GetHateListNPCCount()
|
||||||
|
{
|
||||||
|
Lua_Safe_Call_Int();
|
||||||
|
return self->GetHateListCount(HateListCountType::NPC);
|
||||||
|
}
|
||||||
|
|
||||||
luabind::scope lua_register_mob() {
|
luabind::scope lua_register_mob() {
|
||||||
return luabind::class_<Lua_Mob, Lua_Entity>("Mob")
|
return luabind::class_<Lua_Mob, Lua_Entity>("Mob")
|
||||||
.def(luabind::constructor<>())
|
.def(luabind::constructor<>())
|
||||||
@ -3460,12 +3484,16 @@ luabind::scope lua_register_mob() {
|
|||||||
.def("GetHateList", &Lua_Mob::GetHateList)
|
.def("GetHateList", &Lua_Mob::GetHateList)
|
||||||
.def("GetHateListBots", (Lua_HateList(Lua_Mob::*)(void))&Lua_Mob::GetHateListBots)
|
.def("GetHateListBots", (Lua_HateList(Lua_Mob::*)(void))&Lua_Mob::GetHateListBots)
|
||||||
.def("GetHateListBots", (Lua_HateList(Lua_Mob::*)(uint32))&Lua_Mob::GetHateListBots)
|
.def("GetHateListBots", (Lua_HateList(Lua_Mob::*)(uint32))&Lua_Mob::GetHateListBots)
|
||||||
|
.def("GetHateListBotCount", &Lua_Mob::GetHateListBotCount)
|
||||||
.def("GetHateListClients", (Lua_HateList(Lua_Mob::*)(void))&Lua_Mob::GetHateListClients)
|
.def("GetHateListClients", (Lua_HateList(Lua_Mob::*)(void))&Lua_Mob::GetHateListClients)
|
||||||
.def("GetHateListClients", (Lua_HateList(Lua_Mob::*)(uint32))&Lua_Mob::GetHateListClients)
|
.def("GetHateListClients", (Lua_HateList(Lua_Mob::*)(uint32))&Lua_Mob::GetHateListClients)
|
||||||
|
.def("GetHateListClientCount", &Lua_Mob::GetHateListClientCount)
|
||||||
.def("GetHateListNPCs", (Lua_HateList(Lua_Mob::*)(void))&Lua_Mob::GetHateListNPCs)
|
.def("GetHateListNPCs", (Lua_HateList(Lua_Mob::*)(void))&Lua_Mob::GetHateListNPCs)
|
||||||
.def("GetHateListNPCs", (Lua_HateList(Lua_Mob::*)(uint32))&Lua_Mob::GetHateListNPCs)
|
.def("GetHateListNPCs", (Lua_HateList(Lua_Mob::*)(uint32))&Lua_Mob::GetHateListNPCs)
|
||||||
|
.def("GetHateListNPCCount", &Lua_Mob::GetHateListNPCCount)
|
||||||
.def("GetHateListByDistance", (Lua_HateList(Lua_Mob::*)(void))&Lua_Mob::GetHateListByDistance)
|
.def("GetHateListByDistance", (Lua_HateList(Lua_Mob::*)(void))&Lua_Mob::GetHateListByDistance)
|
||||||
.def("GetHateListByDistance", (Lua_HateList(Lua_Mob::*)(uint32))&Lua_Mob::GetHateListByDistance)
|
.def("GetHateListByDistance", (Lua_HateList(Lua_Mob::*)(uint32))&Lua_Mob::GetHateListByDistance)
|
||||||
|
.def("GetHateListCount", &Lua_Mob::GetHateListCount)
|
||||||
.def("GetHateRandom", (Lua_Mob(Lua_Mob::*)(void))&Lua_Mob::GetHateRandom)
|
.def("GetHateRandom", (Lua_Mob(Lua_Mob::*)(void))&Lua_Mob::GetHateRandom)
|
||||||
.def("GetHateRandomBot", (Lua_Bot(Lua_Mob::*)(void))&Lua_Mob::GetHateRandomBot)
|
.def("GetHateRandomBot", (Lua_Bot(Lua_Mob::*)(void))&Lua_Mob::GetHateRandomBot)
|
||||||
.def("GetHateRandomClient", (Lua_Client(Lua_Mob::*)(void))&Lua_Mob::GetHateRandomClient)
|
.def("GetHateRandomClient", (Lua_Client(Lua_Mob::*)(void))&Lua_Mob::GetHateRandomClient)
|
||||||
|
|||||||
@ -566,6 +566,10 @@ public:
|
|||||||
std::string GetRacePlural();
|
std::string GetRacePlural();
|
||||||
bool IsTemporaryPet();
|
bool IsTemporaryPet();
|
||||||
uint32 GetMobTypeIdentifier();
|
uint32 GetMobTypeIdentifier();
|
||||||
|
uint32 GetHateListCount();
|
||||||
|
uint32 GetHateListBotCount();
|
||||||
|
uint32 GetHateListClientCount();
|
||||||
|
uint32 GetHateListNPCCount();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -769,6 +769,7 @@ public:
|
|||||||
Client* GetHateClosestClient(bool skip_mezzed = false) { return hate_list.GetClosestEntOnHateList(this, skip_mezzed, EntityFilterType::Clients)->CastToClient(); }
|
Client* GetHateClosestClient(bool skip_mezzed = false) { return hate_list.GetClosestEntOnHateList(this, skip_mezzed, EntityFilterType::Clients)->CastToClient(); }
|
||||||
NPC* GetHateClosestNPC(bool skip_mezzed = false) { return hate_list.GetClosestEntOnHateList(this, skip_mezzed, EntityFilterType::NPCs)->CastToNPC(); }
|
NPC* GetHateClosestNPC(bool skip_mezzed = false) { return hate_list.GetClosestEntOnHateList(this, skip_mezzed, EntityFilterType::NPCs)->CastToNPC(); }
|
||||||
bool IsEngaged() { return(!hate_list.IsHateListEmpty()); }
|
bool IsEngaged() { return(!hate_list.IsHateListEmpty()); }
|
||||||
|
inline uint32 GetHateListCount(HateListCountType count_type = HateListCountType::All) { return hate_list.GetHateListCount(count_type); }
|
||||||
bool HasPrimaryAggro() { return PrimaryAggro; }
|
bool HasPrimaryAggro() { return PrimaryAggro; }
|
||||||
bool HasAssistAggro() { return AssistAggro; }
|
bool HasAssistAggro() { return AssistAggro; }
|
||||||
void SetPrimaryAggro(bool value) { PrimaryAggro = value; if (value) AssistAggro = false; }
|
void SetPrimaryAggro(bool value) { PrimaryAggro = value; if (value) AssistAggro = false; }
|
||||||
|
|||||||
@ -3340,6 +3340,26 @@ std::string Perl_Mob_GetRacePlural(Mob* self)
|
|||||||
return self->GetRacePlural();
|
return self->GetRacePlural();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32 Perl_Mob_GetHateListCount(Mob* self)
|
||||||
|
{
|
||||||
|
return self->GetHateListCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32 Perl_Mob_GetHateListBotCount(Mob* self)
|
||||||
|
{
|
||||||
|
return self->GetHateListCount(HateListCountType::Bot);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32 Perl_Mob_GetHateListClientCount(Mob* self)
|
||||||
|
{
|
||||||
|
return self->GetHateListCount(HateListCountType::Client);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32 Perl_Mob_GetHateListNPCCount(Mob* self)
|
||||||
|
{
|
||||||
|
return self->GetHateListCount(HateListCountType::NPC);
|
||||||
|
}
|
||||||
|
|
||||||
void perl_register_mob()
|
void perl_register_mob()
|
||||||
{
|
{
|
||||||
perl::interpreter perl(PERL_GET_THX);
|
perl::interpreter perl(PERL_GET_THX);
|
||||||
@ -3585,12 +3605,16 @@ void perl_register_mob()
|
|||||||
package.add("GetHateList", &Perl_Mob_GetHateList);
|
package.add("GetHateList", &Perl_Mob_GetHateList);
|
||||||
package.add("GetHateListBots", (perl::array(*)(Mob*))&Perl_Mob_GetHateListBots);
|
package.add("GetHateListBots", (perl::array(*)(Mob*))&Perl_Mob_GetHateListBots);
|
||||||
package.add("GetHateListBots", (perl::array(*)(Mob*, uint32))&Perl_Mob_GetHateListBots);
|
package.add("GetHateListBots", (perl::array(*)(Mob*, uint32))&Perl_Mob_GetHateListBots);
|
||||||
|
package.add("GetHateListBotCount", &Perl_Mob_GetHateListBotCount);
|
||||||
package.add("GetHateListClients", (perl::array(*)(Mob*))&Perl_Mob_GetHateListClients);
|
package.add("GetHateListClients", (perl::array(*)(Mob*))&Perl_Mob_GetHateListClients);
|
||||||
package.add("GetHateListClients", (perl::array(*)(Mob*, uint32))&Perl_Mob_GetHateListClients);
|
package.add("GetHateListClients", (perl::array(*)(Mob*, uint32))&Perl_Mob_GetHateListClients);
|
||||||
|
package.add("GetHateListClientCount", &Perl_Mob_GetHateListClientCount);
|
||||||
package.add("GetHateListNPCs", (perl::array(*)(Mob*))&Perl_Mob_GetHateListNPCs);
|
package.add("GetHateListNPCs", (perl::array(*)(Mob*))&Perl_Mob_GetHateListNPCs);
|
||||||
package.add("GetHateListNPCs", (perl::array(*)(Mob*, uint32))&Perl_Mob_GetHateListNPCs);
|
package.add("GetHateListNPCs", (perl::array(*)(Mob*, uint32))&Perl_Mob_GetHateListNPCs);
|
||||||
|
package.add("GetHateListNPCCount", &Perl_Mob_GetHateListNPCCount);
|
||||||
package.add("GetHateListByDistance", (perl::array(*)(Mob*))&Perl_Mob_GetHateListByDistance);
|
package.add("GetHateListByDistance", (perl::array(*)(Mob*))&Perl_Mob_GetHateListByDistance);
|
||||||
package.add("GetHateListByDistance", (perl::array(*)(Mob*, uint32))&Perl_Mob_GetHateListByDistance);
|
package.add("GetHateListByDistance", (perl::array(*)(Mob*, uint32))&Perl_Mob_GetHateListByDistance);
|
||||||
|
package.add("GetHateListCount", &Perl_Mob_GetHateListCount);
|
||||||
package.add("GetHateRandom", &Perl_Mob_GetHateRandom);
|
package.add("GetHateRandom", &Perl_Mob_GetHateRandom);
|
||||||
package.add("GetHateRandomBot", &Perl_Mob_GetHateRandomBot);
|
package.add("GetHateRandomBot", &Perl_Mob_GetHateRandomBot);
|
||||||
package.add("GetHateRandomClient", &Perl_Mob_GetHateRandomClient);
|
package.add("GetHateRandomClient", &Perl_Mob_GetHateRandomClient);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user