diff --git a/src/game/DBCStructure.h b/src/game/DBCStructure.h index 0484cebce..10814f755 100644 --- a/src/game/DBCStructure.h +++ b/src/game/DBCStructure.h @@ -810,20 +810,20 @@ struct CreatureTypeEntry struct CurrencyTypesEntry { uint32 ID; // 0 - //uint32 Category; // 1 + //uint32 Category; // 1 DBCString name; // 2 - //char* iconName; // 3 - //uint32 unk4; // 4 - //uint32 unk5; // 5 - //uint32 unk6; // 6 - uint32 TotalCount; // 7 - uint32 WeekCount; // 8 + //char* iconName; // 3 + //char* iconName2; // 4 + //uint32 unk5; // 5 + //uint32 unk6; // 6 + uint32 TotalCap; // 7 + uint32 WeekCap; // 8 uint32 Flags; // 9 - //DBCString description; // 10 + //DBCString description; // 10 - bool HasPrecision() const { return Flags & CURRENCY_FLAG_HAS_PRECISION; } + bool HasPrecision() const { return Flags & CURRENCY_FLAG_HAS_PRECISION; } bool HasSeasonCount() const { return Flags & CURRENCY_FLAG_HAS_SEASON_COUNT; } - float GetPrecision() const { return HasPrecision() ? CURRENCY_PRECISION : 1.0f; } + float GetPrecision() const { return HasPrecision() ? CURRENCY_PRECISION : 1.0f; } }; struct DungeonEncounterEntry diff --git a/src/game/ItemHandler.cpp b/src/game/ItemHandler.cpp index d9c19c3b7..3fc3c3aad 100644 --- a/src/game/ItemHandler.cpp +++ b/src/game/ItemHandler.cpp @@ -530,7 +530,7 @@ void WorldSession::HandleBuyItemOpcode(WorldPacket& recv_data) } case VENDOR_ITEM_TYPE_CURRENCY: { - GetPlayer()->BuyCurrencyFromVendorSlot(vendorGuid, slot, item, count); + GetPlayer()->BuyCurrencyFromVendorSlot(vendorGuid, slot, item, 1); break; } } diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp index 161a91f64..944eee8d3 100755 --- a/src/game/ObjectMgr.cpp +++ b/src/game/ObjectMgr.cpp @@ -4283,11 +4283,11 @@ void ObjectMgr::LoadQuests() qinfo->GetQuestId(), j + 1, qinfo->ReqCurrencyId[j], j + 1, qinfo->ReqCurrencyCount[j]); qinfo->ReqCurrencyId[j] = 0; } - else if (currencyEntry->TotalCount && uint32(qinfo->ReqCurrencyCount[j] * currencyEntry->GetPrecision()) > currencyEntry->TotalCount) + else if (currencyEntry->TotalCap && qinfo->ReqCurrencyCount[j] > currencyEntry->TotalCap) { - sLog.outErrorDb("Quest %u has `ReqCurrencyCount%d` = %u but currency %u has max count %u / %u (precision).", - qinfo->GetQuestId(), j + 1, qinfo->ReqCurrencyCount[j], qinfo->ReqCurrencyId[j], currencyEntry->TotalCount, uint32(currencyEntry->GetPrecision())); - qinfo->ReqCurrencyCount[j] = currencyEntry->TotalCount; + sLog.outErrorDb("Quest %u has `ReqCurrencyCount%d` = %u but currency %u has max count %u.", + qinfo->GetQuestId(), j + 1, qinfo->ReqCurrencyCount[j], qinfo->ReqCurrencyId[j], currencyEntry->TotalCap); + qinfo->ReqCurrencyCount[j] = currencyEntry->TotalCap; } } diff --git a/src/game/Player.cpp b/src/game/Player.cpp index eb83b1de6..ad76ab5df 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -19675,12 +19675,11 @@ bool Player::BuyCurrencyFromVendorSlot(ObjectGuid vendorGuid, uint32 vendorslot, if (crItem->item != currencyId) // store diff item (cheating) return false; - if (crItem->maxcount != count) + if (!crItem->maxcount) { - DEBUG_LOG("WORLD: BuyCurrencyFromVendorSlot - %s: count (%u) != crItem->maxcount (%u) for currency %u and player %s.", - vendorGuid.GetString().c_str(), count, crItem->maxcount, currencyId, GetGuidStr().c_str()); - - count = crItem->maxcount; + DEBUG_LOG("WORLD: BuyCurrencyFromVendorSlot - %s: crItem->maxcount (%u) == 0 for currency %u and player %s.", + vendorGuid.GetString().c_str(), crItem->maxcount, currencyId, GetGuidStr().c_str()); + return false; } if (uint32 extendedCostId = crItem->ExtendedCost) diff --git a/src/game/QuestDef.cpp b/src/game/QuestDef.cpp index ae7bc85ba..83cc772e2 100644 --- a/src/game/QuestDef.cpp +++ b/src/game/QuestDef.cpp @@ -195,9 +195,9 @@ Quest::Quest(Field* questRecord) ++m_rewchoiceitemscount; } - for (int i = 0; i < QUEST_REWARD_CURRENCY_COUNT; ++i) + for (int i = 0; i < QUEST_REQUIRED_CURRENCY_COUNT; ++i) { - if (RewCurrencyId[i]) + if (ReqCurrencyId[i]) ++m_reqCurrencyCount; } } diff --git a/src/game/SharedDefines.h b/src/game/SharedDefines.h index 674797a8e..8fb5e6b7b 100644 --- a/src/game/SharedDefines.h +++ b/src/game/SharedDefines.h @@ -219,7 +219,8 @@ enum ItemQualities ITEM_QUALITY_EPIC = 4, // PURPLE ITEM_QUALITY_LEGENDARY = 5, // ORANGE ITEM_QUALITY_ARTIFACT = 6, // LIGHT YELLOW - ITEM_QUALITY_HEIRLOOM = 7 + ITEM_QUALITY_HEIRLOOM = 7, + ITEM_QUALITY_UNKNOWN = 10, }; #define MAX_ITEM_QUALITY 8 diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index c2d4754d0..d693e1f90 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "12135" + #define REVISION_NR "12136" #endif // __REVISION_NR_H__