From 85ec98ff9f431347de41bf8c18aa9ec609abebf4 Mon Sep 17 00:00:00 2001 From: click Date: Fri, 14 May 2010 23:43:42 +0200 Subject: Allow multiple classes for quest requirements - patch by Shauren (This should make Malcrom happy) Fixes issue 1476. Fixes issues 1972. Fixes issue 430. --HG-- branch : trunk --- src/game/Player.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'src/game/Player.cpp') diff --git a/src/game/Player.cpp b/src/game/Player.cpp index b0b49b4f3a4..4370953a7be 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -14338,11 +14338,11 @@ void Player::FailQuest(uint32 questId) bool Player::SatisfyQuestSkillOrClass(Quest const* qInfo, bool msg) { - int32 zoneOrSort = qInfo->GetZoneOrSort(); - int32 skillOrClass = qInfo->GetSkillOrClass(); + int32 zoneOrSort = qInfo->GetZoneOrSort(); + int32 skillOrClassMask = qInfo->GetSkillOrClassMask(); // skip zone zoneOrSort and 0 case skillOrClass - if (zoneOrSort >= 0 && skillOrClass == 0) + if (zoneOrSort >= 0 && skillOrClassMask == 0) return true; int32 questSort = -zoneOrSort; @@ -14357,10 +14357,10 @@ bool Player::SatisfyQuestSkillOrClass(Quest const* qInfo, bool msg) } // check class - if (skillOrClass < 0) + if (skillOrClassMask < 0) { - uint8 reqClass = -int32(skillOrClass); - if (getClass() != reqClass) + uint8 reqClassMask = -int32(skillOrClassMask); + if (!(reqClassMask & getClassMask())) { if (msg) SendCanTakeQuestResponse(INVALIDREASON_DONT_HAVE_REQ); @@ -14368,9 +14368,9 @@ bool Player::SatisfyQuestSkillOrClass(Quest const* qInfo, bool msg) } } // check skill - else if (skillOrClass > 0) + else if (skillOrClassMask > 0) { - uint32 reqSkill = skillOrClass; + uint32 reqSkill = skillOrClassMask; if (GetSkillValue(reqSkill) < qInfo->GetRequiredSkillValue()) { if (msg) -- cgit v1.2.3