From 576e7b0f91aa2baf4b6ecfe3dbbcefa9ff0a0276 Mon Sep 17 00:00:00 2001 From: Kinglykrab <89047260+Kinglykrab@users.noreply.github.com> Date: Sat, 30 Jul 2022 19:40:51 -0400 Subject: [PATCH] [Quest API] Add IsRareSpawn() to Perl/Lua. (#2338) - Add $npc->IsRareSpawn() to Perl. - Add npc:IsRareSpawn() to Lua. --- zone/lua_npc.cpp | 7 +++++++ zone/lua_npc.h | 1 + zone/npc.h | 1 + zone/perl_npc.cpp | 6 ++++++ 4 files changed, 15 insertions(+) diff --git a/zone/lua_npc.cpp b/zone/lua_npc.cpp index 2581864d5..d048a10ac 100644 --- a/zone/lua_npc.cpp +++ b/zone/lua_npc.cpp @@ -669,6 +669,12 @@ float Lua_NPC::GetNPCStat(const char* identifier) return self->GetNPCStat(identifier); } +bool Lua_NPC::IsRareSpawn() +{ + Lua_Safe_Call_Bool(); + return self->IsRareSpawn(); +} + luabind::scope lua_register_npc() { return luabind::class_("NPC") .def(luabind::constructor<>()) @@ -753,6 +759,7 @@ luabind::scope lua_register_npc() { .def("IsGuarding", (bool(Lua_NPC::*)(void))&Lua_NPC::IsGuarding) .def("IsOnHatelist", (bool(Lua_NPC::*)(Lua_Mob))&Lua_NPC::IsOnHatelist) .def("IsRaidTarget", (bool(Lua_NPC::*)(void))&Lua_NPC::IsRaidTarget) + .def("IsRareSpawn", (bool(Lua_NPC::*)(void))&Lua_NPC::IsRareSpawn) .def("IsTaunting", (bool(Lua_NPC::*)(void))&Lua_NPC::IsTaunting) .def("MerchantCloseShop", (void(Lua_NPC::*)(void))&Lua_NPC::MerchantCloseShop) .def("MerchantOpenShop", (void(Lua_NPC::*)(void))&Lua_NPC::MerchantOpenShop) diff --git a/zone/lua_npc.h b/zone/lua_npc.h index a5b0ddc3c..528a17894 100644 --- a/zone/lua_npc.h +++ b/zone/lua_npc.h @@ -142,6 +142,7 @@ public: void RecalculateSkills(); void ScaleNPC(uint8 npc_level); bool IsRaidTarget(); + bool IsRareSpawn(); void ChangeLastName(std::string last_name); void ClearLastName(); bool HasItem(uint32 item_id); diff --git a/zone/npc.h b/zone/npc.h index ccc6d8af8..6888cec1d 100644 --- a/zone/npc.h +++ b/zone/npc.h @@ -488,6 +488,7 @@ public: void SetHeroForgeModel(uint32 model) { herosforgemodel = model; } bool IsRaidTarget() const { return raid_target; }; + bool IsRareSpawn() const { return rare_spawn; } void ResetHPUpdateTimer() { send_hp_update_timer.Start(); } bool IgnoreDespawn() { return ignore_despawn; } diff --git a/zone/perl_npc.cpp b/zone/perl_npc.cpp index cbc0ec968..9c83a782b 100644 --- a/zone/perl_npc.cpp +++ b/zone/perl_npc.cpp @@ -660,6 +660,11 @@ bool Perl_NPC_HasAISpellEffect(NPC* self, int spell_effect_id) // @categories Sp return self->HasAISpellEffect(spell_effect_id); } +bool Perl_NPC_IsRareSpawn(NPC* self) +{ + return self->IsRareSpawn(); +} + void perl_register_npc() { perl::interpreter perl(PERL_GET_THX); @@ -748,6 +753,7 @@ void perl_register_npc() package.add("IsGuarding", &Perl_NPC_IsGuarding); package.add("IsOnHatelist", &Perl_NPC_IsOnHatelist); package.add("IsRaidTarget", &Perl_NPC_IsRaidTarget); + package.add("IsRareSpawn", &Perl_NPC_IsRareSpawn); package.add("IsTaunting", &Perl_NPC_IsTaunting); package.add("MerchantCloseShop", &Perl_NPC_MerchantCloseShop); package.add("MerchantOpenShop", &Perl_NPC_MerchantOpenShop);