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.cpp6
-rw-r--r--src/server/game/Battlefield/Zones/BattlefieldWG.h29
-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
-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
19 files changed, 95 insertions, 17 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 7410cf8eeea..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]);
diff --git a/src/server/game/Battlefield/Zones/BattlefieldWG.h b/src/server/game/Battlefield/Zones/BattlefieldWG.h
index 7ef7e61b63c..5e868b29619 100644
--- a/src/server/game/Battlefield/Zones/BattlefieldWG.h
+++ b/src/server/game/Battlefield/Zones/BattlefieldWG.h
@@ -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 dee1b6dcdb8..55efebeb03f 100755
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -2938,7 +2938,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/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;