diff options
| author | Roc13x <roc13x@gmail.com> | 2017-10-09 20:03:25 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2017-10-09 21:03:25 +0200 |
| commit | a6d1b3447209ba2203edd5d934f061228f1d1ae0 (patch) | |
| tree | 4c25122fe52d45e19e473250791777439921571e /src/server/scripts/Commands | |
| parent | 6d07f55c0077c1a41956bbfb10e0fcbc9a3c913c (diff) | |
Core/Creature: Refactor and improve vendor items (#20328)
* Implement item bonuses in vendors.
* Implement the PlayerConditionID and IgnoreFiltering DB columns.
* Fix loading referenced vendor items
* Allow adding bonuses in .npc add item command
Diffstat (limited to 'src/server/scripts/Commands')
| -rw-r--r-- | src/server/scripts/Commands/cs_npc.cpp | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp index 09b04004108..ad49f616877 100644 --- a/src/server/scripts/Commands/cs_npc.cpp +++ b/src/server/scripts/Commands/cs_npc.cpp @@ -368,6 +368,7 @@ public: char* fextendedcost = strtok(nullptr, " "); //add ExtendedCost, default: 0 uint32 extendedcost = fextendedcost ? atoul(fextendedcost) : 0; + char const* fbonuslist = strtok(nullptr, " "); Creature* vendor = handler->getSelectedCreature(); if (!vendor) { @@ -378,13 +379,27 @@ public: uint32 vendor_entry = vendor->GetEntry(); - if (!sObjectMgr->IsVendorItemValid(vendor_entry, itemId, maxcount, incrtime, extendedcost, type, handler->GetSession()->GetPlayer())) + VendorItem vItem; + vItem.item = itemId; + vItem.maxcount = maxcount; + vItem.incrtime = incrtime; + vItem.ExtendedCost = extendedcost; + vItem.Type = type; + + if (fbonuslist) + { + Tokenizer bonusListIDsTok(fbonuslist, ';'); + for (char const* token : bonusListIDsTok) + vItem.BonusListIDs.push_back(int32(atol(token))); + } + + if (!sObjectMgr->IsVendorItemValid(vendor_entry, vItem, handler->GetSession()->GetPlayer())) { handler->SetSentErrorMessage(true); return false; } - sObjectMgr->AddVendorItem(vendor_entry, itemId, maxcount, incrtime, extendedcost, type); + sObjectMgr->AddVendorItem(vendor_entry, vItem); ItemTemplate const* itemTemplate = sObjectMgr->GetItemTemplate(itemId); |
