From d03da1320a3dd7bc1ea21198054d8fbb5a634c41 Mon Sep 17 00:00:00 2001 From: Spp Date: Mon, 25 Mar 2013 14:36:04 +0100 Subject: typo fix after 1a6a23e --- src/server/game/Entities/Player/Player.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index bed7d9642ac..65b0fc8b005 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -16168,7 +16168,7 @@ void Player::KilledMonsterCredit(uint32 entry, uint64 guid) Creature* killed = NULL; if (guid) { - Creature* killed = GetMap()->GetCreature(guid); + killed = GetMap()->GetCreature(guid); if (killed && killed->GetEntry()) real_entry = killed->GetEntry(); } -- cgit v1.2.3 From 3c6c8c11178108482ae5f9848ce402292e7367ce Mon Sep 17 00:00:00 2001 From: Spp Date: Tue, 26 Mar 2013 09:44:01 +0100 Subject: Core/Misc: Remove the use of logging system from WPFatal (Fixes tools compile) Closes #9501 --- src/server/collision/CMakeLists.txt | 4 ++++ src/server/shared/Debugging/Errors.cpp | 25 +++++++++++++++++++++---- src/server/shared/Packets/ByteBuffer.cpp | 18 ++++++++++++++++++ 3 files changed, 43 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/server/collision/CMakeLists.txt b/src/server/collision/CMakeLists.txt index b4012b63812..f254ffda94c 100644 --- a/src/server/collision/CMakeLists.txt +++ b/src/server/collision/CMakeLists.txt @@ -83,6 +83,10 @@ add_library(collision STATIC ${collision_STAT_PCH_SRC} ) +target_link_libraries(collision + shared +) + # Generate precompiled header if (USE_COREPCH) add_cxx_pch(collision ${collision_STAT_PCH_HDR} ${collision_STAT_PCH_SRC}) diff --git a/src/server/shared/Debugging/Errors.cpp b/src/server/shared/Debugging/Errors.cpp index bd299906de0..10ede3ae402 100644 --- a/src/server/shared/Debugging/Errors.cpp +++ b/src/server/shared/Debugging/Errors.cpp @@ -1,5 +1,22 @@ +/* + * Copyright (C) 2008-2013 TrinityCore + * Copyright (C) 2005-2009 MaNGOS + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + #include "Errors.h" -#include "Log.h" #include #include @@ -16,7 +33,7 @@ void Assert(char const *file, int line, char const *function, char const *messag void Fatal(char const *file, int line, char const *function, char const *message) { - sLog->outError(LOG_FILTER_GENERAL, "\n%s:%i in %s FATAL ERROR:\n %s\n", + fprintf(stderr, "\n%s:%i in %s FATAL ERROR:\n %s\n", file, line, function, message); ACE_OS::sleep(10); *((volatile int*)NULL) = 0; @@ -24,14 +41,14 @@ void Fatal(char const *file, int line, char const *function, char const *message void Error(char const *file, int line, char const *function, char const *message) { - sLog->outError(LOG_FILTER_GENERAL, "\n%s:%i in %s ERROR:\n %s\n", + fprintf(stderr, "\n%s:%i in %s ERROR:\n %s\n", file, line, function, message); *((volatile int*)NULL) = 0; } void Warning(char const *file, int line, char const *function, char const *message) { - sLog->outError(LOG_FILTER_GENERAL, "\n%s:%i in %s WARNING:\n %s\n", + fprintf(stderr, "\n%s:%i in %s WARNING:\n %s\n", file, line, function, message); } diff --git a/src/server/shared/Packets/ByteBuffer.cpp b/src/server/shared/Packets/ByteBuffer.cpp index a14cf3477af..a4828df9046 100644 --- a/src/server/shared/Packets/ByteBuffer.cpp +++ b/src/server/shared/Packets/ByteBuffer.cpp @@ -1,3 +1,21 @@ +/* + * Copyright (C) 2008-2013 TrinityCore + * Copyright (C) 2005-2009 MaNGOS + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + #include "ByteBuffer.h" #include "Log.h" -- cgit v1.2.3 From d7d62e4248d70866bce56b72b42302fdc6d6b7b5 Mon Sep 17 00:00:00 2001 From: Spp Date: Tue, 26 Mar 2013 19:34:49 +0100 Subject: Core: Fix compile with WITH_COREDEBUG option enabled --- src/server/game/Grids/GridStates.cpp | 45 ++++++++++++++++++-------------- src/server/game/Grids/GridStates.h | 27 +++++++------------ src/server/game/Maps/MapManager.h | 9 ++++--- src/server/shared/Packets/ByteBuffer.cpp | 1 + src/server/shared/Packets/ByteBuffer.h | 6 ++--- 5 files changed, 44 insertions(+), 44 deletions(-) (limited to 'src') diff --git a/src/server/game/Grids/GridStates.cpp b/src/server/game/Grids/GridStates.cpp index e4f995cd8d2..c4db919c51b 100644 --- a/src/server/game/Grids/GridStates.cpp +++ b/src/server/game/Grids/GridStates.cpp @@ -18,53 +18,58 @@ #include "GridStates.h" #include "GridNotifiers.h" -#include "Grid.h" #include "Log.h" -void InvalidState::Update(Map &, NGridType &, GridInfo &, const uint32) const +#ifdef TRINITY_DEBUG +bool GridState::checkMagic() { + if (i_Magic != MAGIC_TESTVAL) + { + sLog->outError(LOG_FILTER_GENERAL, "!!! GridState: Magic value gone !!!"); + return false; + } + return true; } +#endif + +void InvalidState::Update(Map&, NGridType&, GridInfo&, uint32) const +{ } -void ActiveState::Update(Map &m, NGridType &grid, GridInfo & info, const uint32 t_diff) const +void ActiveState::Update(Map& map, NGridType& grid, GridInfo& info, uint32 diff) const { // Only check grid activity every (grid_expiry/10) ms, because it's really useless to do it every cycle - info.UpdateTimeTracker(t_diff); + info.UpdateTimeTracker(diff); if (info.getTimeTracker().Passed()) { - if (!grid.GetWorldObjectCountInNGrid() && !m.ActiveObjectsNearGrid(grid)) + if (!grid.GetWorldObjectCountInNGrid() && !map.ActiveObjectsNearGrid(grid)) { ObjectGridStoper worker; TypeContainerVisitor visitor(worker); grid.VisitAllGrids(visitor); grid.SetGridState(GRID_STATE_IDLE); - sLog->outDebug(LOG_FILTER_MAPS, "Grid[%u, %u] on map %u moved to IDLE state", grid.getX(), grid.getY(), m.GetId()); + sLog->outDebug(LOG_FILTER_MAPS, "Grid[%u, %u] on map %u moved to IDLE state", grid.getX(), grid.getY(), map.GetId()); } else - { - m.ResetGridExpiry(grid, 0.1f); - } + map.ResetGridExpiry(grid, 0.1f); } } -void IdleState::Update(Map &m, NGridType &grid, GridInfo &, const uint32) const +void IdleState::Update(Map& map, NGridType& grid, GridInfo&, uint32) const { - m.ResetGridExpiry(grid); + map.ResetGridExpiry(grid); grid.SetGridState(GRID_STATE_REMOVAL); - sLog->outDebug(LOG_FILTER_MAPS, "Grid[%u, %u] on map %u moved to REMOVAL state", grid.getX(), grid.getY(), m.GetId()); + sLog->outDebug(LOG_FILTER_MAPS, "Grid[%u, %u] on map %u moved to REMOVAL state", grid.getX(), grid.getY(), map.GetId()); } -void RemovalState::Update(Map &m, NGridType &grid, GridInfo &info, const uint32 t_diff) const +void RemovalState::Update(Map& map, NGridType& grid, GridInfo& info, uint32 diff) const { if (!info.getUnloadLock()) { - info.UpdateTimeTracker(t_diff); - if (info.getTimeTracker().Passed()) + info.UpdateTimeTracker(diff); + if (info.getTimeTracker().Passed() && !map.UnloadGrid(grid, false)) { - if (!m.UnloadGrid(grid, false)) - { - sLog->outDebug(LOG_FILTER_MAPS, "Grid[%u, %u] for map %u differed unloading due to players or active objects nearby", grid.getX(), grid.getY(), m.GetId()); - m.ResetGridExpiry(grid); - } + sLog->outDebug(LOG_FILTER_MAPS, "Grid[%u, %u] for map %u differed unloading due to players or active objects nearby", grid.getX(), grid.getY(), map.GetId()); + map.ResetGridExpiry(grid); } } } diff --git a/src/server/game/Grids/GridStates.h b/src/server/game/Grids/GridStates.h index 54fe0d62378..09682c716a9 100644 --- a/src/server/game/Grids/GridStates.h +++ b/src/server/game/Grids/GridStates.h @@ -19,8 +19,10 @@ #ifndef TRINITY_GRIDSTATES_H #define TRINITY_GRIDSTATES_H -#include "Map.h" -#include "Object.h" +#include "GridDefines.h" +#include "NGrid.h" + +class Map; class GridState { @@ -28,44 +30,35 @@ class GridState #ifdef TRINITY_DEBUG #define MAGIC_TESTVAL 0xFBE823BA GridState() { i_Magic = MAGIC_TESTVAL; } - bool checkMagic() - { - if (i_Magic != MAGIC_TESTVAL) - { - sLog->outError(LOG_FILTER_GENERAL, "!!! GridState: Magic value gone !!!"); - return false; - } - return true; - } + bool checkMagic(); void setMagic() { i_Magic = MAGIC_TESTVAL; } unsigned int i_Magic; #endif virtual ~GridState() {}; - virtual void Update(Map &, NGridType&, GridInfo &, const uint32 t_diff) const = 0; + virtual void Update(Map &, NGridType&, GridInfo &, uint32 t_diff) const = 0; }; class InvalidState : public GridState { public: - void Update(Map &, NGridType &, GridInfo &, const uint32 t_diff) const; + void Update(Map &, NGridType &, GridInfo &, uint32 t_diff) const; }; class ActiveState : public GridState { public: - void Update(Map &, NGridType &, GridInfo &, const uint32 t_diff) const; + void Update(Map &, NGridType &, GridInfo &, uint32 t_diff) const; }; class IdleState : public GridState { public: - void Update(Map &, NGridType &, GridInfo &, const uint32 t_diff) const; + void Update(Map &, NGridType &, GridInfo &, uint32 t_diff) const; }; class RemovalState : public GridState { public: - void Update(Map &, NGridType &, GridInfo &, const uint32 t_diff) const; + void Update(Map &, NGridType &, GridInfo &, uint32 t_diff) const; }; #endif - diff --git a/src/server/game/Maps/MapManager.h b/src/server/game/Maps/MapManager.h index 09e09a80148..8af609c61e2 100644 --- a/src/server/game/Maps/MapManager.h +++ b/src/server/game/Maps/MapManager.h @@ -19,14 +19,15 @@ #ifndef TRINITY_MAPMANAGER_H #define TRINITY_MAPMANAGER_H -#include "Define.h" -#include -#include -#include "Common.h" +#include "Object.h" #include "Map.h" #include "GridStates.h" #include "MapUpdater.h" +#include +#include + + class Transport; struct TransportCreatureProto; diff --git a/src/server/shared/Packets/ByteBuffer.cpp b/src/server/shared/Packets/ByteBuffer.cpp index a4828df9046..3b4be003858 100644 --- a/src/server/shared/Packets/ByteBuffer.cpp +++ b/src/server/shared/Packets/ByteBuffer.cpp @@ -17,6 +17,7 @@ */ #include "ByteBuffer.h" +#include "Common.h" #include "Log.h" #include diff --git a/src/server/shared/Packets/ByteBuffer.h b/src/server/shared/Packets/ByteBuffer.h index 9b16c2e9c0b..302a03dee47 100644 --- a/src/server/shared/Packets/ByteBuffer.h +++ b/src/server/shared/Packets/ByteBuffer.h @@ -20,16 +20,16 @@ #define _BYTEBUFFER_H #include "Define.h" -#include "Debugging/Errors.h" -#include "Utilities/ByteConverter.h" +#include "Errors.h" +#include "ByteConverter.h" #include #include #include #include #include - #include +#include // Root of ByteBuffer exception hierarchy class ByteBufferException : public std::exception -- cgit v1.2.3 From e635ba5b813464797ea834f845b723c54cfc469b Mon Sep 17 00:00:00 2001 From: Gacko Date: Tue, 26 Mar 2013 21:49:22 +0100 Subject: Core/SmartAI: SMART_ACTION_FORCE_DESPAWN for dead creatures --- src/server/game/AI/SmartScripts/SmartScript.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 9c476ea55fc..f5a75de73f8 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -1023,8 +1023,16 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u if (!IsSmart()) break; - CAST_AI(SmartAI, me->AI())->SetDespawnTime(e.action.forceDespawn.delay + 1);//next tick - CAST_AI(SmartAI, me->AI())->StartDespawn(); + // The AI is only updated if the creature is alive + if (me->isAlive()) + { + CAST_AI(SmartAI, me->AI())->SetDespawnTime(e.action.forceDespawn.delay + 1); // Next tick + CAST_AI(SmartAI, me->AI())->StartDespawn(); + } + // Otherwise we call the despawn directly + else + me->DespawnOrUnsummon(e.action.forceDespawn.delay); + break; } case SMART_ACTION_SET_INGAME_PHASE_MASK: -- cgit v1.2.3