From 0c996678876ea6d5bc214e2aaafc3f233bbedfbe Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sun, 20 Jul 2014 14:06:55 +0200 Subject: [PATCH 1/6] DB/Quest: Master of the Storm part 3 of 5 By dr-j, closes #10705 --- sql/updates/world/2014_07_20_02_world_misc.sql | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 sql/updates/world/2014_07_20_02_world_misc.sql diff --git a/sql/updates/world/2014_07_20_02_world_misc.sql b/sql/updates/world/2014_07_20_02_world_misc.sql new file mode 100644 index 0000000000..6c201a3ad0 --- /dev/null +++ b/sql/updates/world/2014_07_20_02_world_misc.sql @@ -0,0 +1,18 @@ +-- +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=26048; +DELETE FROM `smart_scripts` WHERE `source_type`=9 AND `entryorguid`=2604800; + +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(26048, 0, 0, 1, 64, 0, 100, 0, 0, 0, 0, 0, 12, 26045, 2, 300000, 0, 0, 0, 8, 0, 0, 0, 3403.83, 4133.07, 18.1375, 5.75959, 'Storm Totem - On Gossip Hello - Spawn Storm Tempest'), +(26048, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Storm Totem - Linked with Previous Event - Set NPC Flags'), +(26048, 0, 2, 3, 61, 0, 100, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Storm Totem - Linked with Previous Event - Close Gossip'), +(26048, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 80, 2604800, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Storm Totem - Linked with Previous Event - Run Script'), +(26048, 0, 4, 0, 11, 0, 100, 0, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Storm Totem - On Spawn - Set NPC Flags'), +(26048, 0, 6, 0, 64, 0, 100, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Storm Totem - On Gossip Hello - Close Gossip'), +(2604800, 9, 0, 0, 0, 0, 100, 0, 300000, 300000, 0, 0, 81, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Storm Totem - Script - Set NPC Flags'); + +UPDATE `smart_scripts` SET `action_param1`=1 WHERE `entryorguid`=26045 AND `source_type`=0 AND `id`=8 AND `link`=9; + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry` =26048; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES +(22,1,26048,0,0,9,0,11895,0,0,0,0,'','Storm Totem - Only Summon Storm Tempest if player is on Master the Storms'); From 87db1ae44ff931d2a491b19443842b25a75d532e Mon Sep 17 00:00:00 2001 From: leak Date: Sun, 20 Jul 2014 14:37:57 +0200 Subject: [PATCH 2/6] Replaced try/catch by non-throwing socket.close() --- src/server/game/Server/WorldSocket.cpp | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp index e449f86ffe..8b4dd9b7f5 100644 --- a/src/server/game/Server/WorldSocket.cpp +++ b/src/server/game/Server/WorldSocket.cpp @@ -78,11 +78,8 @@ void WorldSocket::AsyncReadHeader() else { // _socket.is_open() till returns true even after calling close() - try - { - _socket.close(); - } - catch (std::exception const& /*ex*/) { } + boost::system::error_code socketError; + _socket.close(socketError); } }); } @@ -158,11 +155,8 @@ void WorldSocket::AsyncReadData(size_t dataSize) else { // _socket.is_open() till returns true even after calling close() - try - { - _socket.close(); - } - catch (std::exception const& /*ex*/) {} + boost::system::error_code socketError; + _socket.close(socketError); } }); } From fd47c3e06c7988de48166c5626e07dcca72bd930 Mon Sep 17 00:00:00 2001 From: leak Date: Sun, 20 Jul 2014 14:39:04 +0200 Subject: [PATCH 3/6] Prevent duplicate call to MapUpdater::deactivate causing a crash on shutdown --- src/server/game/Maps/MapUpdater.cpp | 7 ------- src/server/game/Maps/MapUpdater.h | 4 ++-- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/src/server/game/Maps/MapUpdater.cpp b/src/server/game/Maps/MapUpdater.cpp index c456f57bd2..69f0bdff88 100644 --- a/src/server/game/Maps/MapUpdater.cpp +++ b/src/server/game/Maps/MapUpdater.cpp @@ -45,13 +45,6 @@ class MapUpdateRequest } }; -MapUpdater::MapUpdater() : _cancelationToken(false), pending_requests(0) {} - -MapUpdater::~MapUpdater() -{ - deactivate(); -} - void MapUpdater::activate(size_t num_threads) { for (size_t i = 0; i < num_threads; ++i) diff --git a/src/server/game/Maps/MapUpdater.h b/src/server/game/Maps/MapUpdater.h index c499110173..dca20bcf35 100644 --- a/src/server/game/Maps/MapUpdater.h +++ b/src/server/game/Maps/MapUpdater.h @@ -32,8 +32,8 @@ class MapUpdater { public: - MapUpdater(); - virtual ~MapUpdater(); + MapUpdater::MapUpdater() : _cancelationToken(false), pending_requests(0) {} + ~MapUpdater() { }; friend class MapUpdateRequest; From 27c561cb9e03c9fea20232fa4a00ee97b5cd081e Mon Sep 17 00:00:00 2001 From: leak Date: Sun, 20 Jul 2014 14:45:23 +0200 Subject: [PATCH 4/6] Remove extra qualifier to make GCC happy again --- src/server/game/Maps/MapUpdater.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/Maps/MapUpdater.h b/src/server/game/Maps/MapUpdater.h index dca20bcf35..0d4058a38a 100644 --- a/src/server/game/Maps/MapUpdater.h +++ b/src/server/game/Maps/MapUpdater.h @@ -32,7 +32,7 @@ class MapUpdater { public: - MapUpdater::MapUpdater() : _cancelationToken(false), pending_requests(0) {} + MapUpdater() : _cancelationToken(false), pending_requests(0) {} ~MapUpdater() { }; friend class MapUpdateRequest; From c0eba6a127a950e05af7ad116c95288a4fa66a17 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 20 Jul 2014 16:06:35 +0200 Subject: [PATCH 5/6] Fixed gcc build without pch --- src/server/game/Entities/GameObject/GameObject.cpp | 2 +- src/server/game/Miscellaneous/SharedDefines.h | 2 +- src/server/shared/Debugging/Errors.cpp | 1 + src/server/shared/Define.h | 11 +++++++---- src/server/shared/Utilities/Util.h | 12 ------------ 5 files changed, 10 insertions(+), 18 deletions(-) diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 23e40382fa..0f3e68bb1a 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -16,7 +16,6 @@ * with this program. If not, see . */ -#include #include "GameObjectAI.h" #include "Battleground.h" #include "CellImpl.h" @@ -34,6 +33,7 @@ #include "UpdateFieldFlags.h" #include "World.h" #include "Transport.h" +#include GameObject::GameObject() : WorldObject(false), MapObject(), m_model(NULL), m_goValue(), m_AI(NULL) diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index a2ffed608e..7a48e016af 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -19,8 +19,8 @@ #ifndef TRINITY_SHAREDDEFINES_H #define TRINITY_SHAREDDEFINES_H -#include "DetourNavMesh.h" #include "Define.h" +#include "DetourNavMesh.h" #include enum SpellEffIndex diff --git a/src/server/shared/Debugging/Errors.cpp b/src/server/shared/Debugging/Errors.cpp index 62e97d56d4..0621cfa5b6 100644 --- a/src/server/shared/Debugging/Errors.cpp +++ b/src/server/shared/Debugging/Errors.cpp @@ -18,6 +18,7 @@ #include "Errors.h" +#include #include #include diff --git a/src/server/shared/Define.h b/src/server/shared/Define.h index c04a2a8162..570964b867 100644 --- a/src/server/shared/Define.h +++ b/src/server/shared/Define.h @@ -21,16 +21,19 @@ #include "CompilerDefs.h" -#include -#include -#include - #if COMPILER == COMPILER_GNU # if !defined(__STDC_FORMAT_MACROS) # define __STDC_FORMAT_MACROS # endif +# if !defined(__STDC_CONSTANT_MACROS) +# define __STDC_CONSTANT_MACROS +# endif #endif +#include +#include +#include + #define TRINITY_LITTLEENDIAN 0 #define TRINITY_BIGENDIAN 1 diff --git a/src/server/shared/Utilities/Util.h b/src/server/shared/Utilities/Util.h index c384a6eeae..c95e0e3cfa 100644 --- a/src/server/shared/Utilities/Util.h +++ b/src/server/shared/Utilities/Util.h @@ -351,11 +351,6 @@ bool IsIPAddress(char const* ipaddress); uint32 CreatePIDFile(const std::string& filename); std::string ByteArrayToHexStr(uint8 const* bytes, uint32 length, bool reverse = false); -#endif - -//handler for operations on large flags -#ifndef _FLAG96 -#define _FLAG96 // simple class for not-modifyable list template @@ -402,13 +397,6 @@ public: part[2] = p3; } - flag96(uint64 p1, uint32 p2) - { - part[0] = (uint32)(p1 & UI64LIT(0x00000000FFFFFFFF)); - part[1] = (uint32)((p1 >> 32) & UI64LIT(0x00000000FFFFFFFF)); - part[2] = p2; - } - inline bool IsEqual(uint32 p1 = 0, uint32 p2 = 0, uint32 p3 = 0) const { return (part[0] == p1 && part[1] == p2 && part[2] == p3); From b43a46e449ac019670f1d97d4d62433e90371f5a Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 20 Jul 2014 16:12:23 +0200 Subject: [PATCH 6/6] Core/Maps: Fixed crash caused by using invalid coordinates Closes #12532 --- src/server/game/Entities/Object/Object.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 61b268b162..23af4a70d3 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -2635,7 +2635,6 @@ void WorldObject::MovePositionToFirstCollision(Position &pos, float dist, float float destx, desty, destz; destx = pos.m_positionX + dist * std::cos(angle); desty = pos.m_positionY + dist * std::sin(angle); - destz = NormalizeZforCollision(this, destx, desty, pos.GetPositionZ()); // Prevent invalid coordinates here, position is unchanged if (!Trinity::IsValidMapCoord(destx, desty)) @@ -2644,6 +2643,7 @@ void WorldObject::MovePositionToFirstCollision(Position &pos, float dist, float return; } + destz = NormalizeZforCollision(this, destx, desty, pos.GetPositionZ()); bool col = VMAP::VMapFactory::createOrGetVMapManager()->getObjectHitPos(GetMapId(), pos.m_positionX, pos.m_positionY, pos.m_positionZ + 0.5f, destx, desty, destz + 0.5f, destx, desty, destz, -0.5f); // collision occured