diff options
author | Shauren <shauren.trinity@gmail.com> | 2021-05-11 12:32:22 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-05-11 12:32:22 +0200 |
commit | 2ffedf30a9f177ba848bb74c1b41375ac6d734a9 (patch) | |
tree | 45855399d45a515b6791fe57a2ce8de4c7e64302 /src | |
parent | 254d5af7c2970620ae3bcecea4b7f1d65597f8b6 (diff) |
Core/Quests: Implemented QUEST_OBJECTIVE_FLAG_KILL_PLAYERS_SAME_FACTION
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Player/KillRewarder.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 9 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.h | 2 |
3 files changed, 9 insertions, 4 deletions
diff --git a/src/server/game/Entities/Player/KillRewarder.cpp b/src/server/game/Entities/Player/KillRewarder.cpp index b0df18e1c5a..35e3b892e01 100644 --- a/src/server/game/Entities/Player/KillRewarder.cpp +++ b/src/server/game/Entities/Player/KillRewarder.cpp @@ -193,7 +193,7 @@ void KillRewarder::_RewardPlayer(Player* player, bool isDungeon) _RewardHonor(player); // 4.1.1 Send player killcredit for quests with PlayerSlain if (_victim->GetTypeId() == TYPEID_PLAYER) - player->KilledPlayerCredit(); + player->KilledPlayerCredit(_victim->GetGUID()); } // Give XP only in PvE or in battlegrounds. // Give reputation and kill credit only in PvE. diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 3ed8b3ef4a6..5c2e0ebfe10 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -16804,9 +16804,9 @@ void Player::KilledMonsterCredit(uint32 entry, ObjectGuid guid /*= ObjectGuid::E UpdateQuestObjectiveProgress(QUEST_OBJECTIVE_MONSTER, entry, 1, guid); } -void Player::KilledPlayerCredit() +void Player::KilledPlayerCredit(ObjectGuid victimGuid) { - UpdateQuestObjectiveProgress(QUEST_OBJECTIVE_PLAYERKILLS, 0, 1); + UpdateQuestObjectiveProgress(QUEST_OBJECTIVE_PLAYERKILLS, 0, 1, victimGuid); } void Player::KillCreditGO(uint32 entry, ObjectGuid guid) @@ -16867,6 +16867,11 @@ void Player::UpdateQuestObjectiveProgress(QuestObjectiveType objectiveType, int3 bool objectiveIsNowComplete = false; if (objective.IsStoringValue()) { + if (objectiveType == QUEST_OBJECTIVE_PLAYERKILLS && objective.Flags & QUEST_OBJECTIVE_FLAG_KILL_PLAYERS_SAME_FACTION) + if (Player const* victim = ObjectAccessor::GetPlayer(GetMap(), victimGuid)) + if (victim->GetTeam() != GetTeam()) + continue; + int32 currentProgress = GetQuestSlotObjectiveData(logSlot, objective); if (addCount > 0 ? (currentProgress < objective.Amount) : (currentProgress > 0)) { diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index f8b18c5e826..2f0e03a0193 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1532,7 +1532,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> void ItemRemovedQuestCheck(uint32 entry, uint32 count); void KilledMonster(CreatureTemplate const* cInfo, ObjectGuid guid); void KilledMonsterCredit(uint32 entry, ObjectGuid guid = ObjectGuid::Empty); - void KilledPlayerCredit(); + void KilledPlayerCredit(ObjectGuid victimGuid); void KillCreditGO(uint32 entry, ObjectGuid guid = ObjectGuid::Empty); void TalkedToCreature(uint32 entry, ObjectGuid guid); void KillCreditCriteriaTreeObjective(QuestObjective const& questObjective); |