diff options
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); |
