Feature: Added player:CanRewardQuest(questId)/player:CanCompleteRepeatableQuest(questId) (#141)

This commit is contained in:
Stefano Borzì
2023-05-29 00:59:05 +02:00
committed by GitHub
3 changed files with 44 additions and 0 deletions

View File

@@ -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

View File

@@ -606,6 +606,8 @@ ElunaRegister<Player> PlayerMethods[] =
#ifndef CLASSIC
{ "IsInArenaTeam", &LuaPlayer::IsInArenaTeam },
#endif
{ "CanRewardQuest", &LuaPlayer::CanRewardQuest },
{ "CanCompleteRepeatableQuest", &LuaPlayer::CanCompleteRepeatableQuest },
{ "CanCompleteQuest", &LuaPlayer::CanCompleteQuest },
{ "CanEquipItem", &LuaPlayer::CanEquipItem },
{ "IsFalling", &LuaPlayer::IsFalling },

View File

@@ -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<uint32>(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<uint32>(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.