Add support for season-dependant gameevents
Patch by Liberate --HG-- branch : trunk
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
DROP TABLE IF EXISTS `season_linked_event`;
|
||||
CREATE TABLE `season_linked_event` (
|
||||
`season` int(3) UNSIGNED NOT NULL default '0',
|
||||
`event` int(8) UNSIGNED NOT NULL default '0',
|
||||
PRIMARY KEY (`season`),
|
||||
UNIQUE (`season`,`event`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
@@ -4641,6 +4641,30 @@ LOCK TABLES `script_waypoint` WRITE;
|
||||
/*!40000 ALTER TABLE `script_waypoint` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
--
|
||||
-- Table structure for table `season_linked_event`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `season_linked_event`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `season_linked_event` (
|
||||
`season` int(3) UNSIGNED NOT NULL default '0',
|
||||
`event` int(8) UNSIGNED NOT NULL default '0',
|
||||
PRIMARY KEY (`season`),
|
||||
UNIQUE (`season`,`event`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Dumping data for table `season_linked_event`
|
||||
--
|
||||
|
||||
LOCK TABLES `season_linked_event` WRITE;
|
||||
/*!40000 ALTER TABLE `season_linked_event` DISABLE KEYS */;
|
||||
/*!40000 ALTER TABLE `season_linked_event` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
--
|
||||
-- Table structure for table `skill_discovery_template`
|
||||
--
|
||||
|
||||
@@ -1068,6 +1068,24 @@ uint32 GameEventMgr::Initialize() // return the next e
|
||||
return delay;
|
||||
}
|
||||
|
||||
void GameEventMgr::StartArenaSeason()
|
||||
{
|
||||
QueryResult_AutoPtr result = WorldDatabase.PQuery("SELECT event FROM season_linked_event WHERE season = '%i'",sWorld.getConfig(CONFIG_ARENA_SEASON_ID));
|
||||
|
||||
if (!result)
|
||||
{
|
||||
sLog.outError("ArenaSeason (%i) must be an existant Arena Season",sWorld.getConfig(CONFIG_ARENA_SEASON_ID));
|
||||
return;
|
||||
}
|
||||
|
||||
Field *fields = result->Fetch();
|
||||
|
||||
uint16 eventId = fields[0].GetUInt16();
|
||||
|
||||
StartEvent(eventId,true);
|
||||
sLog.outString("Arena Season %i started...",sWorld.getConfig(CONFIG_ARENA_SEASON_ID));
|
||||
}
|
||||
|
||||
uint32 GameEventMgr::Update() // return the next event delay in ms
|
||||
{
|
||||
time_t currenttime = time(NULL);
|
||||
|
||||
@@ -105,6 +105,7 @@ class GameEventMgr
|
||||
uint32 Update();
|
||||
bool IsActiveEvent(uint16 event_id) { return (m_ActiveEvents.find(event_id) != m_ActiveEvents.end()); }
|
||||
uint32 Initialize();
|
||||
void StartArenaSeason();
|
||||
void StartInternalEvent(uint16 event_id);
|
||||
bool StartEvent(uint16 event_id, bool overwrite = false);
|
||||
void StopEvent(uint16 event_id, bool overwrite = false);
|
||||
|
||||
@@ -1656,6 +1656,9 @@ void World::SetInitialWorldSettings()
|
||||
uint32 nextGameEvent = gameeventmgr.Initialize();
|
||||
m_timers[WUPDATE_EVENTS].SetInterval(nextGameEvent); //depend on next event
|
||||
|
||||
sLog.outString("Starting Arena Season...");
|
||||
gameeventmgr.StartArenaSeason();
|
||||
|
||||
sLog.outString("Loading World States..."); // must be loaded before battleground and outdoor PvP
|
||||
LoadWorldStates();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user