feat: Add 4 methods (#158)

1:
Player:GetAchievementPoints

2:
Player:GetCompletedQuestsCount
This should have been GetCompletedQuestsCount, not sure how to update that now.

3: You also have an option to include feats of strength or not (not included by default, blizzard like)
Player:GetCompletedAchievementsCount

4: RegisterPlayerEvent
OnCreatureKilledByPet
This commit is contained in:
mfiners
2024-01-28 06:51:30 -06:00
committed by GitHub
parent 502136e5d6
commit fe1b709c18
6 changed files with 76 additions and 0 deletions

View File

@@ -903,6 +903,51 @@ namespace LuaPlayer
Eluna::Push(L, player->GetPhaseMaskForSpawn());
return 1;
}
/**
* Returns the [Player]s current amount of Achievement Points
*
* @return uint32 achievementPoints
*/
int GetAchievementPoints(lua_State* L, Player* player)
{
uint32 count = 0;
const CompletedAchievementMap& completedAchievements = player->GetAchievementMgr()->GetCompletedAchievements();
for (auto& pair : completedAchievements)
{
AchievementEntry const* achievement = sAchievementStore.LookupEntry(pair.first);
if (achievement)
{
count += achievement->points;
}
}
Eluna::Push(L, count);
return 1;
}
/**
* Returns the [Player]s current amount of Achievements Completed
*
* @return uint32 achievementsCount
*/
int GetCompletedAchievementsCount(lua_State* L, Player* player)
{
uint32 count = 0;
bool countFeatsOfStrength = Eluna::CHECKVAL<bool>(L, 2, false);
const CompletedAchievementMap& completedAchievements = player->GetAchievementMgr()->GetCompletedAchievements();
for (auto& pair : completedAchievements)
{
AchievementEntry const* achievement = sAchievementStore.LookupEntry(pair.first);
if (achievement && (achievement->categoryId != 81 || countFeatsOfStrength))
{
count++;
}
}
Eluna::Push(L, count);
return 1;
}
#endif
#if defined(TBC) || defined (WOTLK)
@@ -1731,6 +1776,19 @@ namespace LuaPlayer
return 1;
}
/**
* Returns the [Player]s completed quest count
*
* @return int32 questcount
*/
int GetCompletedQuestsCount(lua_State* L, Player* player)
{
uint32 count = player->GetRewardedQuestCount();
Eluna::Push(L, count);
return 1;
}
/**
* Returns the [Player]s [Corpse] object
*