aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Events
diff options
context:
space:
mode:
authorNay <dnpd.dd@gmail.com>2012-08-14 18:11:06 +0100
committerNay <dnpd.dd@gmail.com>2012-08-14 18:11:06 +0100
commitc0adf370e5ac3166bb74abb6d824556fbae54f6f (patch)
tree2b2b5aacb2e539acbbf58e92964fd6edc6529a88 /src/server/game/Events
parente761458b249b8f2a128867ea0bd7adf5eaec4769 (diff)
Core/Vendors: Add currencies to vendors
npc_vendor table gets a new field, type (1 is item, 2 is currency) for type 1 fields still mean the same, for type 2 maxcount is buycount (without any "precision") changed structure of SMSG_UPDATE_CURRENCY(_WEEK_LIMIT) but not enabled, wrong values are being wrongly calculated
Diffstat (limited to 'src/server/game/Events')
-rwxr-xr-xsrc/server/game/Events/GameEventMgr.cpp14
-rwxr-xr-xsrc/server/game/Events/GameEventMgr.h1
2 files changed, 7 insertions, 8 deletions
diff --git a/src/server/game/Events/GameEventMgr.cpp b/src/server/game/Events/GameEventMgr.cpp
index 0936275e90c..6af90dd85eb 100755
--- a/src/server/game/Events/GameEventMgr.cpp
+++ b/src/server/game/Events/GameEventMgr.cpp
@@ -808,14 +808,11 @@ void GameEventMgr::LoadFromDB()
{
uint32 oldMSTime = getMSTime();
- // 0 1 2 3 4 5
- QueryResult result = WorldDatabase.Query("SELECT eventEntry, guid, item, maxcount, incrtime, ExtendedCost FROM game_event_npc_vendor ORDER BY guid, slot ASC");
+ // 0 1 2 3 4 5 6
+ QueryResult result = WorldDatabase.Query("SELECT eventEntry, guid, item, maxcount, incrtime, ExtendedCost, type FROM game_event_npc_vendor ORDER BY guid, slot ASC");
if (!result)
- {
sLog->outInfo(LOG_FILTER_GAMEEVENTS, ">> Loaded 0 vendor additions in game events. DB table `game_event_npc_vendor` is empty.");
-
- }
else
{
uint32 count = 0;
@@ -838,6 +835,7 @@ void GameEventMgr::LoadFromDB()
newEntry.maxcount = fields[3].GetUInt32();
newEntry.incrtime = fields[4].GetUInt32();
newEntry.ExtendedCost = fields[5].GetUInt32();
+ newEntry.Type = fields[6].GetUInt8();
// get the event npc flag for checking if the npc will be vendor during the event or not
uint32 event_npc_flag = 0;
NPCFlagList& flist = mGameEventNPCFlags[event_id];
@@ -856,7 +854,7 @@ void GameEventMgr::LoadFromDB()
newEntry.entry = data->id;
// check validity with event's npcflag
- if (!sObjectMgr->IsVendorItemValid(newEntry.entry, newEntry.item, newEntry.maxcount, newEntry.incrtime, newEntry.ExtendedCost, NULL, NULL, event_npc_flag))
+ if (!sObjectMgr->IsVendorItemValid(newEntry.entry, newEntry.item, newEntry.maxcount, newEntry.incrtime, newEntry.ExtendedCost, newEntry.Type, NULL, NULL, event_npc_flag))
continue;
vendors.push_back(newEntry);
@@ -1199,9 +1197,9 @@ void GameEventMgr::UpdateEventNPCVendor(uint16 event_id, bool activate)
for (NPCVendorList::iterator itr = mGameEventVendors[event_id].begin(); itr != mGameEventVendors[event_id].end(); ++itr)
{
if (activate)
- sObjectMgr->AddVendorItem(itr->entry, itr->item, itr->maxcount, itr->incrtime, itr->ExtendedCost, false);
+ sObjectMgr->AddVendorItem(itr->entry, itr->item, itr->maxcount, itr->incrtime, itr->ExtendedCost, itr->Type, false);
else
- sObjectMgr->RemoveVendorItem(itr->entry, itr->item, false);
+ sObjectMgr->RemoveVendorItem(itr->entry, itr->item, itr->Type, false);
}
}
diff --git a/src/server/game/Events/GameEventMgr.h b/src/server/game/Events/GameEventMgr.h
index d9b5890bfe5..ce1d10e327a 100755
--- a/src/server/game/Events/GameEventMgr.h
+++ b/src/server/game/Events/GameEventMgr.h
@@ -85,6 +85,7 @@ struct NPCVendorEntry
int32 maxcount; // 0 for infinite
uint32 incrtime; // time for restore items amount if maxcount != 0
uint32 ExtendedCost;
+ uint8 Type; // 1 item, 2 currency
};
class Player;