aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Commands
diff options
context:
space:
mode:
authorRoc13x <roc13x@gmail.com>2017-10-09 20:03:25 +0100
committerShauren <shauren.trinity@gmail.com>2017-10-09 21:03:25 +0200
commita6d1b3447209ba2203edd5d934f061228f1d1ae0 (patch)
tree4c25122fe52d45e19e473250791777439921571e /src/server/scripts/Commands
parent6d07f55c0077c1a41956bbfb10e0fcbc9a3c913c (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.cpp19
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);