diff --git a/README.md b/README.md index da84ed8..4c89f64 100644 --- a/README.md +++ b/README.md @@ -99,6 +99,8 @@ Eluna API for AC: - Added vendor entry as argument to `Player:SendListInventory(object, vendorentry)`: https://github.com/azerothcore/mod-eluna/pull/48 - Added `Player:GetPlayerSettingValue()` and `Player:UpdatePlayerSetting()`: https://github.com/azerothcore/mod-eluna/pull/125 - Added `Player:GetTrader()`: https://github.com/azerothcore/mod-eluna/pull/126 +- Added `Player:CanCompleteRepeatableQuest(questId)`: https://github.com/azerothcore/mod-eluna/pull/141 +- Added `Player:CanRewardQuest(questId)`: https://github.com/azerothcore/mod-eluna/pull/141 ### Group - Added `Group:GetGroupType()`: https://github.com/azerothcore/mod-eluna/pull/82 diff --git a/src/LuaEngine/LuaFunctions.cpp b/src/LuaEngine/LuaFunctions.cpp index 7e3b6b9..c4dfa33 100644 --- a/src/LuaEngine/LuaFunctions.cpp +++ b/src/LuaEngine/LuaFunctions.cpp @@ -606,6 +606,8 @@ ElunaRegister PlayerMethods[] = #ifndef CLASSIC { "IsInArenaTeam", &LuaPlayer::IsInArenaTeam }, #endif + { "CanRewardQuest", &LuaPlayer::CanRewardQuest }, + { "CanCompleteRepeatableQuest", &LuaPlayer::CanCompleteRepeatableQuest }, { "CanCompleteQuest", &LuaPlayer::CanCompleteQuest }, { "CanEquipItem", &LuaPlayer::CanEquipItem }, { "IsFalling", &LuaPlayer::IsFalling }, diff --git a/src/LuaEngine/PlayerMethods.h b/src/LuaEngine/PlayerMethods.h index 04143b1..108216e 100644 --- a/src/LuaEngine/PlayerMethods.h +++ b/src/LuaEngine/PlayerMethods.h @@ -472,6 +472,46 @@ namespace LuaPlayer Eluna::Push(L, player->isTotalImmune()); return 1; } + + /** + * Returns 'true' if the [Player] satisfies all requirements to complete the quest entry. + * + * @param uint32 questId + * @return bool CanCompleteRepeatableQuest + */ + int CanCompleteRepeatableQuest(lua_State* L, Player* player) + { + uint32 questId = Eluna::CHECKVAL(L, 2); + const Quest* quest = sObjectMgr->GetQuestTemplate(questId); // Retrieve the Quest object + if (!quest) + { + Eluna::Push(L, false); + return 0; + } + + Eluna::Push(L, player->CanCompleteRepeatableQuest(quest)); + return 1; + } + + /** + * Returns 'true' if the [Player] satisfies all requirements to reward the quest entry. + * + * @param uint32 questId + * @return bool CanRewardQuest + */ + int CanRewardQuest(lua_State* L, Player* player) + { + uint32 questId = Eluna::CHECKVAL(L, 2); + const Quest* quest = sObjectMgr->GetQuestTemplate(questId); // Retrieve the Quest object + if (!quest) + { + Eluna::Push(L, false); + return 0; + } + + Eluna::Push(L, player->CanRewardQuest(quest, true)); // Modify the second argument as needed + return 1; + } /** * Returns 'true' if the [Player] satisfies all requirements to complete the quest entry.