aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dep/g3dlite/G3D-v8.0_extra.diff12
-rw-r--r--dep/g3dlite/include/G3D/GMutex.h1
-rw-r--r--sql/updates/world/2012_08_25_00_world_creature_template.sql3
-rw-r--r--sql/updates/world/2012_08_25_01_world_creature_template.sql1
-rw-r--r--sql/updates/world/2012_08_26_00_world_conditions.sql5
-rw-r--r--sql/updates/world/2012_08_26_01_world_creature.sql1
-rw-r--r--sql/updates/world/2012_08_26_02_world_spell_area.sql3
-rw-r--r--sql/updates/world/2012_08_26_03_world_spell_area.sql3
-rw-r--r--src/server/game/Battlefield/Battlefield.cpp2
-rw-r--r--src/server/game/Battlefield/Zones/BattlefieldWG.cpp8
-rw-r--r--src/server/game/Battlefield/Zones/BattlefieldWG.h31
-rwxr-xr-xsrc/server/game/Battlegrounds/Zones/BattlegroundWS.cpp2
-rwxr-xr-xsrc/server/game/Handlers/GroupHandler.cpp2
-rwxr-xr-xsrc/server/game/Spells/SpellMgr.cpp20
-rwxr-xr-xsrc/server/game/World/World.cpp2
-rw-r--r--src/server/scripts/Northrend/wintergrasp.cpp10
-rwxr-xr-xsrc/server/shared/Database/AdhocStatement.cpp1
-rwxr-xr-xsrc/server/shared/Database/DatabaseWorkerPool.h6
-rwxr-xr-xsrc/server/shared/Database/PreparedStatement.cpp1
-rwxr-xr-xsrc/server/shared/Database/QueryHolder.cpp12
-rwxr-xr-xsrc/server/shared/Logging/Log.cpp14
21 files changed, 102 insertions, 38 deletions
diff --git a/dep/g3dlite/G3D-v8.0_extra.diff b/dep/g3dlite/G3D-v8.0_extra.diff
new file mode 100644
index 00000000000..d556103c96d
--- /dev/null
+++ b/dep/g3dlite/G3D-v8.0_extra.diff
@@ -0,0 +1,12 @@
+diff --git a/dep/g3dlite/include/G3D/GMutex.h b/dep/g3dlite/include/G3D/GMutex.h
+index 3469b81..9fe098d 100644
+--- a/dep/g3dlite/include/G3D/GMutex.h
++++ b/dep/g3dlite/include/G3D/GMutex.h
+@@ -16,6 +16,7 @@
+ #ifndef G3D_WIN32
+ # include <pthread.h>
+ # include <signal.h>
++# include <unistd.h>
+ #endif
+
+
diff --git a/dep/g3dlite/include/G3D/GMutex.h b/dep/g3dlite/include/G3D/GMutex.h
index 3469b812736..9fe098d10e3 100644
--- a/dep/g3dlite/include/G3D/GMutex.h
+++ b/dep/g3dlite/include/G3D/GMutex.h
@@ -16,6 +16,7 @@
#ifndef G3D_WIN32
# include <pthread.h>
# include <signal.h>
+# include <unistd.h>
#endif
diff --git a/sql/updates/world/2012_08_25_00_world_creature_template.sql b/sql/updates/world/2012_08_25_00_world_creature_template.sql
new file mode 100644
index 00000000000..f7ec4c87fb9
--- /dev/null
+++ b/sql/updates/world/2012_08_25_00_world_creature_template.sql
@@ -0,0 +1,3 @@
+-- Wintergrasp Siege Turret
+UPDATE `creature_template` SET `faction_A`=1732,`faction_H`=1732 WHERE `entry`=28319; -- Alliance
+UPDATE `creature_template` SET `faction_A`=1735,`faction_H`=1735 WHERE `entry`=32629; -- Horde
diff --git a/sql/updates/world/2012_08_25_01_world_creature_template.sql b/sql/updates/world/2012_08_25_01_world_creature_template.sql
new file mode 100644
index 00000000000..ef8e5bdd8fc
--- /dev/null
+++ b/sql/updates/world/2012_08_25_01_world_creature_template.sql
@@ -0,0 +1 @@
+UPDATE `creature_template` SET `faction_A`=103,`faction_H`=103 WHERE `entry` IN (30890,31540); -- Twilight Whelp
diff --git a/sql/updates/world/2012_08_26_00_world_conditions.sql b/sql/updates/world/2012_08_26_00_world_conditions.sql
new file mode 100644
index 00000000000..c33d9bfc878
--- /dev/null
+++ b/sql/updates/world/2012_08_26_00_world_conditions.sql
@@ -0,0 +1,5 @@
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=61632;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(13,7,61632,0,0,31,0,3,30449,0,0,0,'','Sartharion Berserk - Only hit Tenebron, Shadron & Vesperon'),
+(13,7,61632,0,1,31,0,3,30451,0,0,0,'','Sartharion Berserk - Only hit Tenebron, Shadron & Vesperon'),
+(13,7,61632,0,2,31,0,3,30452,0,0,0,'','Sartharion Berserk - Only hit Tenebron, Shadron & Vesperon');
diff --git a/sql/updates/world/2012_08_26_01_world_creature.sql b/sql/updates/world/2012_08_26_01_world_creature.sql
new file mode 100644
index 00000000000..af14886850d
--- /dev/null
+++ b/sql/updates/world/2012_08_26_01_world_creature.sql
@@ -0,0 +1 @@
+UPDATE `creature` SET `phaseMask`=256 WHERE `id`=34300;
diff --git a/sql/updates/world/2012_08_26_02_world_spell_area.sql b/sql/updates/world/2012_08_26_02_world_spell_area.sql
new file mode 100644
index 00000000000..c4eae68e3c4
--- /dev/null
+++ b/sql/updates/world/2012_08_26_02_world_spell_area.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spell_area` WHERE spell=58045;
+INSERT INTO `spell_area` (`spell`,`area`,`quest_start`,`quest_start_active`,`quest_end`,`aura_spell`,`racemask`,`gender`,`autocast`) VALUES
+(58045,4197,0,0,0,0,0,2,1);
diff --git a/sql/updates/world/2012_08_26_03_world_spell_area.sql b/sql/updates/world/2012_08_26_03_world_spell_area.sql
new file mode 100644
index 00000000000..65072d2b4a7
--- /dev/null
+++ b/sql/updates/world/2012_08_26_03_world_spell_area.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spell_area` WHERE spell=74411 AND `area`=4197;
+INSERT INTO `spell_area` (`spell`,`area`,`quest_start`,`quest_start_active`,`quest_end`,`aura_spell`,`racemask`,`gender`,`autocast`) VALUES
+(74411,4197,0,0,0,0,0,2,1);
diff --git a/src/server/game/Battlefield/Battlefield.cpp b/src/server/game/Battlefield/Battlefield.cpp
index d159580d189..f074975c6a5 100644
--- a/src/server/game/Battlefield/Battlefield.cpp
+++ b/src/server/game/Battlefield/Battlefield.cpp
@@ -133,7 +133,7 @@ bool Battlefield::Update(uint32 diff)
m_Timer -= diff;
// Invite players a few minutes before the battle's beginning
- if (!m_StartGrouping && m_Timer <= m_StartGroupingTimer)
+ if (!IsWarTime() && !m_StartGrouping && m_Timer <= m_StartGroupingTimer)
{
m_StartGrouping = true;
InvitePlayersInZoneToQueue();
diff --git a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp
index b764058cd82..39beb0265c7 100644
--- a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp
+++ b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp
@@ -39,6 +39,12 @@ enum WGVehicles
NPC_WG_CATAPULT = 27881,
};
+BattlefieldWG::~BattlefieldWG()
+{
+ for (Workshop::const_iterator itr = WorkshopsList.begin(); itr != WorkshopsList.end(); ++itr)
+ delete *itr;
+}
+
bool BattlefieldWG::SetupBattlefield()
{
InitStalker(BATTLEFIELD_WG_NPC_STALKER, WintergraspStalkerPos[0], WintergraspStalkerPos[1], WintergraspStalkerPos[2], WintergraspStalkerPos[3]);
@@ -538,7 +544,6 @@ void BattlefieldWG::OnCreatureCreate(Creature* creature)
{
UpdateData(BATTLEFIELD_WG_DATA_VEHICLE_H, 1);
creature->AddAura(SPELL_HORDE_FLAG, creature);
- creature->setFaction(WintergraspFaction[team]);
m_vehicles[team].insert(creature->GetGUID());
UpdateVehicleCountWG();
}
@@ -555,7 +560,6 @@ void BattlefieldWG::OnCreatureCreate(Creature* creature)
{
UpdateData(BATTLEFIELD_WG_DATA_VEHICLE_A, 1);
creature->AddAura(SPELL_ALLIANCE_FLAG, creature);
- creature->setFaction(WintergraspFaction[team]);
m_vehicles[team].insert(creature->GetGUID());
UpdateVehicleCountWG();
}
diff --git a/src/server/game/Battlefield/Zones/BattlefieldWG.h b/src/server/game/Battlefield/Zones/BattlefieldWG.h
index be062704b52..5e868b29619 100644
--- a/src/server/game/Battlefield/Zones/BattlefieldWG.h
+++ b/src/server/game/Battlefield/Zones/BattlefieldWG.h
@@ -29,7 +29,7 @@
uint32 const VehNumWorldState[2] = { 3680, 3490 };
uint32 const MaxVehNumWorldState[2] = { 3681, 3491 };
uint32 const ClockWorldState[2] = { 3781, 4354 };
-uint32 const WintergraspFaction[3] = { 1, 2, 35 };
+uint32 const WintergraspFaction[3] = { 1732, 1735, 35 };
float const WintergraspStalkerPos[4] = { 0, 0, 0, 0 };
class BattlefieldWG;
@@ -273,6 +273,7 @@ class WintergraspCapturePoint : public BfCapturePoint
class BattlefieldWG : public Battlefield
{
public:
+ ~BattlefieldWG();
/**
* \brief Called when the battle start
* - Spawn relic and turret
@@ -1473,17 +1474,17 @@ struct BfWGGameObjectBuilding
switch (m_Build->GetEntry())
{
- case 190221:
- case 190373:
- case 190377:
- case 190378:
+ case GO_WINTERGRASP_FORTRESS_TOWER_1:
+ case GO_WINTERGRASP_FORTRESS_TOWER_2:
+ case GO_WINTERGRASP_FORTRESS_TOWER_3:
+ case GO_WINTERGRASP_FORTRESS_TOWER_4:
{
creature->setFaction(WintergraspFaction[m_WG->GetDefenderTeam()]);
break;
}
- case 190356:
- case 190357:
- case 190358:
+ case GO_WINTERGRASP_SHADOWSIGHT_TOWER:
+ case GO_WINTERGRASP_WINTER_S_EDGE_TOWER:
+ case GO_WINTERGRASP_FLAMEWATCH_TOWER:
{
creature->setFaction(WintergraspFaction[m_WG->GetAttackerTeam()]);
break;
@@ -1509,17 +1510,17 @@ struct BfWGGameObjectBuilding
switch (m_Build->GetEntry())
{
- case 190221:
- case 190373:
- case 190377:
- case 190378:
+ case GO_WINTERGRASP_FORTRESS_TOWER_1:
+ case GO_WINTERGRASP_FORTRESS_TOWER_2:
+ case GO_WINTERGRASP_FORTRESS_TOWER_3:
+ case GO_WINTERGRASP_FORTRESS_TOWER_4:
{
creature->setFaction(WintergraspFaction[m_WG->GetDefenderTeam()]);
break;
}
- case 190356:
- case 190357:
- case 190358:
+ case GO_WINTERGRASP_SHADOWSIGHT_TOWER:
+ case GO_WINTERGRASP_WINTER_S_EDGE_TOWER:
+ case GO_WINTERGRASP_FLAMEWATCH_TOWER:
{
creature->setFaction(WintergraspFaction[m_WG->GetAttackerTeam()]);
break;
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp
index ededaf15bb5..8df6f93a082 100755
--- a/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp
@@ -52,6 +52,8 @@ BattlegroundWS::BattlegroundWS()
StartMessageIds[BG_STARTING_EVENT_SECOND] = LANG_BG_WS_START_ONE_MINUTE;
StartMessageIds[BG_STARTING_EVENT_THIRD] = LANG_BG_WS_START_HALF_MINUTE;
StartMessageIds[BG_STARTING_EVENT_FOURTH] = LANG_BG_WS_HAS_BEGUN;
+ _flagSpellForceTimer = 0;
+ _bothFlagsKept = false;
_flagDebuffState = 0;
}
diff --git a/src/server/game/Handlers/GroupHandler.cpp b/src/server/game/Handlers/GroupHandler.cpp
index e0ff3933c3a..c11a1cfc2aa 100755
--- a/src/server/game/Handlers/GroupHandler.cpp
+++ b/src/server/game/Handlers/GroupHandler.cpp
@@ -859,7 +859,7 @@ void WorldSession::BuildPartyMemberStatsChangedPacket(Player* player, WorldPacke
{
if (auramask & (uint64(1) << i))
{
- AuraApplication const* aurApp = player->GetVisibleAura(i);
+ AuraApplication const* aurApp = pet->GetVisibleAura(i);
*data << uint32(aurApp ? aurApp->GetBase()->GetId() : 0);
*data << uint8(1);
}
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index 5493f1a2649..b580c5e2282 100755
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -1167,6 +1167,26 @@ bool SpellArea::IsFitToRequirements(Player const* player, uint32 newZone, uint32
return spellId == 56617;
}
break;
+ case 57940: // Essence of Wintergrasp - Northrend
+ case 58045: // Essence of Wintergrasp - Wintergrasp
+ {
+ if (!player)
+ return false;
+
+ if (Battlefield* battlefieldWG = sBattlefieldMgr->GetBattlefieldByBattleId(BATTLEFIELD_BATTLEID_WG))
+ return battlefieldWG->IsEnabled() && (player->GetTeamId() == battlefieldWG->GetDefenderTeam()) && !battlefieldWG->IsWarTime();
+ break;
+ }
+ case 74411: // Battleground - Dampening
+ {
+ if (!player)
+ return false;
+
+ if (Battlefield* bf = sBattlefieldMgr->GetBattlefieldToZoneId(player->GetZoneId()))
+ return bf->IsWarTime();
+ break;
+ }
+
}
return true;
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index f3ff4d79d4a..9814ddf57ad 100755
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -2928,7 +2928,7 @@ void World::LoadCharacterNameData()
QueryResult result = CharacterDatabase.Query("SELECT guid, name, race, gender, class FROM characters WHERE deleteDate IS NULL");
if (!result)
{
- sLog->outError(LOG_FILTER_SQL, "No character name data loaded, empty query");
+ sLog->outInfo(LOG_FILTER_SERVER_LOADING, "No character name data loaded, empty query");
return;
}
diff --git a/src/server/scripts/Northrend/wintergrasp.cpp b/src/server/scripts/Northrend/wintergrasp.cpp
index 2a5dd797c47..5923cfadec7 100644
--- a/src/server/scripts/Northrend/wintergrasp.cpp
+++ b/src/server/scripts/Northrend/wintergrasp.cpp
@@ -119,8 +119,6 @@ class npc_wg_demolisher_engineer : public CreatureScript
if (creature->isQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
- Battlefield* wintergrasp = sBattlefieldMgr->GetBattlefieldByBattleId(BATTLEFIELD_BATTLEID_WG);
-
if (canBuild(creature))
{
if (player->HasAura(SPELL_CORPORAL))
@@ -143,8 +141,6 @@ class npc_wg_demolisher_engineer : public CreatureScript
{
player->CLOSE_GOSSIP_MENU();
- Battlefield* wintergrasp= sBattlefieldMgr->GetBattlefieldByBattleId(BATTLEFIELD_BATTLEID_WG);
-
if (canBuild(creature))
{
switch (action - GOSSIP_ACTION_INFO_DEF)
@@ -169,9 +165,9 @@ class npc_wg_demolisher_engineer : public CreatureScript
bool canBuild(Creature* creature)
{
Battlefield* wintergrasp = sBattlefieldMgr->GetBattlefieldByBattleId(BATTLEFIELD_BATTLEID_WG);
-
if (!wintergrasp)
return false;
+
switch (creature->GetEntry())
{
case NPC_GOBLIN_MECHANIC:
@@ -207,7 +203,7 @@ class npc_wg_spirit_guide : public CreatureScript
return true;
}
- bool OnGossipSelect(Player* player, Creature* /*creature*/ , uint32 /*sender */ , uint32 action)
+ bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 action)
{
player->CLOSE_GOSSIP_MENU();
@@ -324,7 +320,7 @@ class go_wg_vehicle_teleporter : public GameObjectScript
uint32 _checkTimer;
};
- GameObjectAI* GetGameObjectAI(GameObject* go) const
+ GameObjectAI* GetAI(GameObject* go) const
{
return new go_wg_vehicle_teleporterAI(go);
}
diff --git a/src/server/shared/Database/AdhocStatement.cpp b/src/server/shared/Database/AdhocStatement.cpp
index 9e795ae853a..95dce77e53c 100755
--- a/src/server/shared/Database/AdhocStatement.cpp
+++ b/src/server/shared/Database/AdhocStatement.cpp
@@ -44,6 +44,7 @@ bool BasicStatementTask::Execute()
ResultSet* result = m_conn->Query(m_sql);
if (!result || !result->GetRowCount())
{
+ delete result;
m_result.set(QueryResult(NULL));
return false;
}
diff --git a/src/server/shared/Database/DatabaseWorkerPool.h b/src/server/shared/Database/DatabaseWorkerPool.h
index 9d6fabb9dfa..001e74fc6c6 100755
--- a/src/server/shared/Database/DatabaseWorkerPool.h
+++ b/src/server/shared/Database/DatabaseWorkerPool.h
@@ -224,7 +224,10 @@ class DatabaseWorkerPool
ResultSet* result = conn->Query(sql);
conn->Unlock();
if (!result || !result->GetRowCount())
+ {
+ delete result;
return QueryResult(NULL);
+ }
result->NextRow();
return QueryResult(result);
@@ -275,7 +278,10 @@ class DatabaseWorkerPool
delete stmt;
if (!ret || !ret->GetRowCount())
+ {
+ delete ret;
return PreparedQueryResult(NULL);
+ }
return PreparedQueryResult(ret);
}
diff --git a/src/server/shared/Database/PreparedStatement.cpp b/src/server/shared/Database/PreparedStatement.cpp
index a72532e928b..21aef0f1834 100755
--- a/src/server/shared/Database/PreparedStatement.cpp
+++ b/src/server/shared/Database/PreparedStatement.cpp
@@ -440,6 +440,7 @@ bool PreparedStatementTask::Execute()
PreparedResultSet* result = m_conn->Query(m_stmt);
if (!result || !result->GetRowCount())
{
+ delete result;
m_result.set(PreparedQueryResult(NULL));
return false;
}
diff --git a/src/server/shared/Database/QueryHolder.cpp b/src/server/shared/Database/QueryHolder.cpp
index 99772c7e323..0908ad410cd 100755
--- a/src/server/shared/Database/QueryHolder.cpp
+++ b/src/server/shared/Database/QueryHolder.cpp
@@ -116,6 +116,12 @@ PreparedQueryResult SQLQueryHolder::GetPreparedResult(size_t index)
void SQLQueryHolder::SetResult(size_t index, ResultSet* result)
{
+ if (result && !result->GetRowCount())
+ {
+ delete result;
+ result = NULL;
+ }
+
/// store the result in the holder
if (index < m_queries.size())
m_queries[index].second.qresult = result;
@@ -123,6 +129,12 @@ void SQLQueryHolder::SetResult(size_t index, ResultSet* result)
void SQLQueryHolder::SetPreparedResult(size_t index, PreparedResultSet* result)
{
+ if (result && !result->GetRowCount())
+ {
+ delete result;
+ result = NULL;
+ }
+
/// store the result in the holder
if (index < m_queries.size())
m_queries[index].second.presult = result;
diff --git a/src/server/shared/Logging/Log.cpp b/src/server/shared/Logging/Log.cpp
index 3a24190d8fa..6e17a32c78b 100755
--- a/src/server/shared/Logging/Log.cpp
+++ b/src/server/shared/Logging/Log.cpp
@@ -260,14 +260,9 @@ void Log::ReadLoggersFromConfig()
}
while (ss);
- LoggerMap::const_iterator it = loggers.begin();
-
- while (it != loggers.end() && it->first)
- ++it;
-
// root logger must exist. Marking as disabled as its not configured
- if (it == loggers.end())
- loggers[0].Create("root", LOG_FILTER_GENERAL, LOG_LEVEL_DISABLED);
+ if (loggers.find(LOG_FILTER_GENERAL) == loggers.end())
+ loggers[LOG_FILTER_GENERAL].Create("root", LOG_FILTER_GENERAL, LOG_LEVEL_DISABLED);
}
void Log::EnableDBAppenders()
@@ -349,10 +344,7 @@ bool Log::SetLogLevel(std::string const& name, const char* newLevelc, bool isLog
bool Log::ShouldLog(LogFilterType type, LogLevel level) const
{
- LoggerMap::const_iterator it = loggers.begin();
- while (it != loggers.end() && it->second.getType() != type)
- ++it;
-
+ LoggerMap::const_iterator it = loggers.find(type);
if (it != loggers.end())
{
LogLevel loggerLevel = it->second.getLogLevel();