[Quest API] Add Pet Methods to Perl/Lua (#4116)

* [Quest API] Add Pet Methods to Perl/Lua

# Perl
- Add `$mob->IsAnimation()`.
- Add `$mob->IsCharmed()`.
- Add `$mob->IsFamiliar()`.
- Add `$mob->IsTargetLockPet()`.

# Lua
- Add `mob:IsAnimation()`.
- Add `mob:IsCharmed()`.
- Add `mob:IsFamiliar()`.
- Add `mob:IsTargetLockPet()`.

# Notes
- These methods were not exported and could be useful for operators.

* Update perl_mob.cpp
This commit is contained in:
Alex King 2024-02-24 23:51:21 -05:00 committed by GitHub
parent b9fb4babba
commit f57c37e9c5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 56 additions and 0 deletions

View File

@ -3225,6 +3225,30 @@ uint32 Lua_Mob::GetHateListNPCCount()
return self->GetHateListCount(HateListCountType::NPC); return self->GetHateListCount(HateListCountType::NPC);
} }
bool Lua_Mob::IsAnimation()
{
Lua_Safe_Call_Bool();
return self->IsAnimation();
}
bool Lua_Mob::IsCharmed()
{
Lua_Safe_Call_Bool();
return self->IsCharmed();
}
bool Lua_Mob::IsFamiliar()
{
Lua_Safe_Call_Bool();
return self->IsFamiliar();
}
bool Lua_Mob::IsTargetLockPet()
{
Lua_Safe_Call_Bool();
return self->IsTargetLockPet();
}
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<>())
@ -3601,15 +3625,18 @@ luabind::scope lua_register_mob() {
.def("InterruptSpell", (void(Lua_Mob::*)(void))&Lua_Mob::InterruptSpell) .def("InterruptSpell", (void(Lua_Mob::*)(void))&Lua_Mob::InterruptSpell)
.def("IsAIControlled", (bool(Lua_Mob::*)(void))&Lua_Mob::IsAIControlled) .def("IsAIControlled", (bool(Lua_Mob::*)(void))&Lua_Mob::IsAIControlled)
.def("IsAmnesiad", (bool(Lua_Mob::*)(void))&Lua_Mob::IsAmnesiad) .def("IsAmnesiad", (bool(Lua_Mob::*)(void))&Lua_Mob::IsAmnesiad)
.def("IsAnimation", &Lua_Mob::IsAnimation)
.def("IsAttackAllowed", (bool(Lua_Mob::*)(Lua_Mob))&Lua_Mob::IsAttackAllowed) .def("IsAttackAllowed", (bool(Lua_Mob::*)(Lua_Mob))&Lua_Mob::IsAttackAllowed)
.def("IsAttackAllowed", (bool(Lua_Mob::*)(Lua_Mob,bool))&Lua_Mob::IsAttackAllowed) .def("IsAttackAllowed", (bool(Lua_Mob::*)(Lua_Mob,bool))&Lua_Mob::IsAttackAllowed)
.def("IsBeneficialAllowed", (bool(Lua_Mob::*)(Lua_Mob))&Lua_Mob::IsBeneficialAllowed) .def("IsBeneficialAllowed", (bool(Lua_Mob::*)(Lua_Mob))&Lua_Mob::IsBeneficialAllowed)
.def("IsBerserk", &Lua_Mob::IsBerserk) .def("IsBerserk", &Lua_Mob::IsBerserk)
.def("IsBlind", (bool(Lua_Mob::*)(void))&Lua_Mob::IsBlind) .def("IsBlind", (bool(Lua_Mob::*)(void))&Lua_Mob::IsBlind)
.def("IsCasting", &Lua_Mob::IsCasting) .def("IsCasting", &Lua_Mob::IsCasting)
.def("IsCharmed", &Lua_Mob::IsCharmed)
.def("IsEliteMaterialItem", (uint32(Lua_Mob::*)(uint8))&Lua_Mob::IsEliteMaterialItem) .def("IsEliteMaterialItem", (uint32(Lua_Mob::*)(uint8))&Lua_Mob::IsEliteMaterialItem)
.def("IsEngaged", (bool(Lua_Mob::*)(void))&Lua_Mob::IsEngaged) .def("IsEngaged", (bool(Lua_Mob::*)(void))&Lua_Mob::IsEngaged)
.def("IsEnraged", (bool(Lua_Mob::*)(void))&Lua_Mob::IsEnraged) .def("IsEnraged", (bool(Lua_Mob::*)(void))&Lua_Mob::IsEnraged)
.def("IsFamiliar", &Lua_Mob::IsFamiliar)
.def("IsFeared", (bool(Lua_Mob::*)(void))&Lua_Mob::IsFeared) .def("IsFeared", (bool(Lua_Mob::*)(void))&Lua_Mob::IsFeared)
.def("IsFindable", (bool(Lua_Mob::*)(void))&Lua_Mob::IsFindable) .def("IsFindable", (bool(Lua_Mob::*)(void))&Lua_Mob::IsFindable)
.def("IsHorse", &Lua_Mob::IsHorse) .def("IsHorse", &Lua_Mob::IsHorse)
@ -3628,6 +3655,7 @@ luabind::scope lua_register_mob() {
.def("IsStunned", (bool(Lua_Mob::*)(void))&Lua_Mob::IsStunned) .def("IsStunned", (bool(Lua_Mob::*)(void))&Lua_Mob::IsStunned)
.def("IsTargetable", (bool(Lua_Mob::*)(void))&Lua_Mob::IsTargetable) .def("IsTargetable", (bool(Lua_Mob::*)(void))&Lua_Mob::IsTargetable)
.def("IsTargeted", &Lua_Mob::IsTargeted) .def("IsTargeted", &Lua_Mob::IsTargeted)
.def("IsTargetLockPet", &Lua_Mob::IsTargetLockPet)
.def("IsTemporaryPet", &Lua_Mob::IsTemporaryPet) .def("IsTemporaryPet", &Lua_Mob::IsTemporaryPet)
.def("IsTrackable", (bool(Lua_Mob::*)(void))&Lua_Mob::IsTrackable) .def("IsTrackable", (bool(Lua_Mob::*)(void))&Lua_Mob::IsTrackable)
.def("IsWarriorClass", &Lua_Mob::IsWarriorClass) .def("IsWarriorClass", &Lua_Mob::IsWarriorClass)

View File

@ -570,6 +570,10 @@ public:
uint32 GetHateListBotCount(); uint32 GetHateListBotCount();
uint32 GetHateListClientCount(); uint32 GetHateListClientCount();
uint32 GetHateListNPCCount(); uint32 GetHateListNPCCount();
bool IsAnimation();
bool IsCharmed();
bool IsFamiliar();
bool IsTargetLockPet();
}; };
#endif #endif

View File

@ -3360,6 +3360,26 @@ uint32 Perl_Mob_GetHateListNPCCount(Mob* self)
return self->GetHateListCount(HateListCountType::NPC); return self->GetHateListCount(HateListCountType::NPC);
} }
bool Perl_Mob_IsAnimation(Mob* self)
{
return self->IsAnimation();
}
bool Perl_Mob_IsCharmed(Mob* self)
{
return self->IsCharmed();
}
bool Perl_Mob_IsFamiliar(Mob* self)
{
return self->IsFamiliar();
}
bool Perl_Mob_IsTargetLockPet(Mob* self)
{
return self->IsTargetLockPet();
}
void perl_register_mob() void perl_register_mob()
{ {
perl::interpreter perl(PERL_GET_THX); perl::interpreter perl(PERL_GET_THX);
@ -3725,6 +3745,7 @@ void perl_register_mob()
package.add("InterruptSpell", (void(*)(Mob*, uint16))&Perl_Mob_InterruptSpell); package.add("InterruptSpell", (void(*)(Mob*, uint16))&Perl_Mob_InterruptSpell);
package.add("IsAIControlled", &Perl_Mob_IsAIControlled); package.add("IsAIControlled", &Perl_Mob_IsAIControlled);
package.add("IsAmnesiad", &Perl_Mob_IsAmnesiad); package.add("IsAmnesiad", &Perl_Mob_IsAmnesiad);
package.add("IsAnimation", &Perl_Mob_IsAnimation);
package.add("IsAttackAllowed", (bool(*)(Mob*, Mob*))&Perl_Mob_IsAttackAllowed); package.add("IsAttackAllowed", (bool(*)(Mob*, Mob*))&Perl_Mob_IsAttackAllowed);
package.add("IsAttackAllowed", (bool(*)(Mob*, Mob*, bool))&Perl_Mob_IsAttackAllowed); package.add("IsAttackAllowed", (bool(*)(Mob*, Mob*, bool))&Perl_Mob_IsAttackAllowed);
package.add("IsAura", &Perl_Mob_IsAura); package.add("IsAura", &Perl_Mob_IsAura);
@ -3734,6 +3755,7 @@ void perl_register_mob()
package.add("IsBlind", &Perl_Mob_IsBlind); package.add("IsBlind", &Perl_Mob_IsBlind);
package.add("IsBot", &Perl_Mob_IsBot); package.add("IsBot", &Perl_Mob_IsBot);
package.add("IsCasting", &Perl_Mob_IsCasting); package.add("IsCasting", &Perl_Mob_IsCasting);
package.add("IsCharmed", &Perl_Mob_IsCharmed);
package.add("IsClient", &Perl_Mob_IsClient); package.add("IsClient", &Perl_Mob_IsClient);
package.add("IsCorpse", &Perl_Mob_IsCorpse); package.add("IsCorpse", &Perl_Mob_IsCorpse);
package.add("IsDoor", &Perl_Mob_IsDoor); package.add("IsDoor", &Perl_Mob_IsDoor);
@ -3741,6 +3763,7 @@ void perl_register_mob()
package.add("IsEncounter", &Perl_Mob_IsEncounter); package.add("IsEncounter", &Perl_Mob_IsEncounter);
package.add("IsEngaged", &Perl_Mob_IsEngaged); package.add("IsEngaged", &Perl_Mob_IsEngaged);
package.add("IsEnraged", &Perl_Mob_IsEnraged); package.add("IsEnraged", &Perl_Mob_IsEnraged);
package.add("IsFamiliar", &Perl_Mob_IsFamiliar);
package.add("IsFeared", &Perl_Mob_IsFeared); package.add("IsFeared", &Perl_Mob_IsFeared);
package.add("IsFindable", &Perl_Mob_IsFindable); package.add("IsFindable", &Perl_Mob_IsFindable);
package.add("IsHorse", &Perl_Mob_IsHorse); package.add("IsHorse", &Perl_Mob_IsHorse);
@ -3767,6 +3790,7 @@ void perl_register_mob()
package.add("IsStunned", &Perl_Mob_IsStunned); package.add("IsStunned", &Perl_Mob_IsStunned);
package.add("IsTargetable", &Perl_Mob_IsTargetable); package.add("IsTargetable", &Perl_Mob_IsTargetable);
package.add("IsTargeted", &Perl_Mob_IsTargeted); package.add("IsTargeted", &Perl_Mob_IsTargeted);
package.add("IsTargetLockPet", &Perl_Mob_IsTargetLockPet);
package.add("IsTemporaryPet", &Perl_Mob_IsTemporaryPet); package.add("IsTemporaryPet", &Perl_Mob_IsTemporaryPet);
package.add("IsTrackable", &Perl_Mob_IsTrackable); package.add("IsTrackable", &Perl_Mob_IsTrackable);
package.add("IsTrap", &Perl_Mob_IsTrap); package.add("IsTrap", &Perl_Mob_IsTrap);