From 22e16b2460c4ddde02861ee08a4bbfd81d7c534f Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 23 Jul 2014 11:20:50 +0200 Subject: Core/Players: Set fist weapon skill value equal to current unarmed skill when learning fist weapons for the first time --- src/server/game/Entities/Player/Player.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src') diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index a694b45d118..ee93fc09f5e 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -23127,6 +23127,8 @@ void Player::LearnDefaultSkill(uint32 skillId, uint16 rank) skillValue = maxValue; else if (getClass() == CLASS_DEATH_KNIGHT) skillValue = std::min(std::max({ 1, uint16((getLevel() - 1) * 5) }), maxValue); + else if (skillId == SKILL_FIST_WEAPONS) + skillValue = std::max(1, GetSkillValue(SKILL_UNARMED)); SetSkill(skillId, 0, skillValue, maxValue); break; @@ -25048,6 +25050,9 @@ void Player::_LoadSkills(PreparedQueryResult result) SetUInt32Value(PLAYER_SKILL_VALUE_INDEX(count), 0); SetUInt32Value(PLAYER_SKILL_BONUS_INDEX(count), 0); } + + if (HasSkill(SKILL_FIST_WEAPONS)) + SetSkill(SKILL_FIST_WEAPONS, 0, GetSkillValue(SKILL_UNARMED), GetMaxSkillValueForLevel()); } uint32 Player::GetPhaseMaskForSpawn() const -- cgit v1.2.3 From b5975c281706f31a634778785ae76a9d017fa5a4 Mon Sep 17 00:00:00 2001 From: joschiwald Date: Wed, 23 Jul 2014 17:24:50 +0200 Subject: Scripts/ICC: fixed Festergut Malleable Goo (thx @ManuFe) Closes #12023 --- src/server/game/Spells/SpellEffects.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 923e9d9548b..0ab4e7c9e6e 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -974,12 +974,16 @@ void Spell::EffectForceCast(SpellEffIndex effIndex) case 52349: // Overtake unitTarget->CastCustomSpell(unitTarget, spellInfo->Id, &damage, NULL, NULL, true, NULL, NULL, m_originalCasterGUID); return; - case 72299: // Malleable Goo Summon Trigger - unitTarget->CastSpell(unitTarget, spellInfo->Id, true, NULL, NULL, m_originalCasterGUID); - return; } } + switch (spellInfo->Id) + { + case 72298: // Malleable Goo Summon + unitTarget->CastSpell(unitTarget, spellInfo->Id, true, NULL, NULL, m_originalCasterGUID); + return; + } + CustomSpellValues values; // set basepoints for trigger with value effect if (m_spellInfo->Effects[effIndex].Effect == SPELL_EFFECT_FORCE_CAST_WITH_VALUE) -- cgit v1.2.3 From 42eeec12bfdf548b15a2f85d586ef037eab88a00 Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 23 Jul 2014 19:04:07 +0200 Subject: Core/Mains: Handle SIGBREAK to achieve clean shutdown when users click X button on windows --- src/server/authserver/Main.cpp | 15 +++++---------- src/server/worldserver/Main.cpp | 15 +++++---------- 2 files changed, 10 insertions(+), 20 deletions(-) (limited to 'src') diff --git a/src/server/authserver/Main.cpp b/src/server/authserver/Main.cpp index 8b9779d2b07..7c2ed4951c5 100644 --- a/src/server/authserver/Main.cpp +++ b/src/server/authserver/Main.cpp @@ -120,6 +120,9 @@ int main(int argc, char** argv) // Set signal handlers boost::asio::signal_set signals(_ioService, SIGINT, SIGTERM); +#if PLATFORM == PLATFORM_WINDOWS + signals.add(SIGBREAK); +#endif signals.async_wait(SignalHandler); // Set process priority according to configuration settings @@ -186,18 +189,10 @@ void StopDB() MySQL::Library_End(); } -void SignalHandler(const boost::system::error_code& error, int signalNumber) +void SignalHandler(const boost::system::error_code& error, int /*signalNumber*/) { if (!error) - { - switch (signalNumber) - { - case SIGINT: - case SIGTERM: - _ioService.stop(); - break; - } - } + _ioService.stop(); } void KeepDatabaseAliveHandler(const boost::system::error_code& error) diff --git a/src/server/worldserver/Main.cpp b/src/server/worldserver/Main.cpp index 0c051eae37a..87eb3bae074 100644 --- a/src/server/worldserver/Main.cpp +++ b/src/server/worldserver/Main.cpp @@ -158,6 +158,9 @@ extern int main(int argc, char** argv) // Set signal handlers (this must be done before starting io_service threads, because otherwise they would unblock and exit) boost::asio::signal_set signals(_ioService, SIGINT, SIGTERM); +#if PLATFORM == PLATFORM_WINDOWS + signals.add(SIGBREAK); +#endif signals.async_wait(SignalHandler); // Start the Boost based thread pool @@ -367,18 +370,10 @@ void WorldUpdateLoop() } } -void SignalHandler(const boost::system::error_code& error, int signalNumber) +void SignalHandler(const boost::system::error_code& error, int /*signalNumber*/) { if (!error) - { - switch (signalNumber) - { - case SIGINT: - case SIGTERM: - World::StopNow(SHUTDOWN_EXIT_CODE); - break; - } - } + World::StopNow(SHUTDOWN_EXIT_CODE); } void FreezeDetectorHandler(const boost::system::error_code& error) -- cgit v1.2.3 From 11ecd851a1432082516bde082063065ec615d5ba Mon Sep 17 00:00:00 2001 From: "Jared P. Jones" Date: Wed, 23 Jul 2014 16:13:30 -0500 Subject: Core/Misc: Silenced 500 OS X Warnings and removed deprecated finite() method. *Mac OS X fires off over 200 warnings related to gsoap about the deprecated register method. CMake has been patched to remove this warning. *Updated all occurences of finite() to std::isfinite. The method finite() is not standardized by anyone aside from BSD. std::isfinite() however is standarized by C++ *Removed -ncurses and -pthread from OS X compilation. Now that we use Boost and C++11 there is no longer a need for pthread in OS X. All it does is throw a warning. However, ncurses isn't needed either as it's built into the OS X SDK and linked by default. Note: There are only 5 remaining warnings left when compiling on OS X. I did not attempt to fix these as they were related to 3rd party libraries statically linked into the code. The 5 warnings left are all related to unused variables. --- cmake/compiler/clang/settings.cmake | 3 ++- src/server/game/Grids/GridDefines.h | 6 +++--- src/server/shared/Common.h | 2 +- src/server/shared/Threading/ProcessPriority.h | 5 +++++ src/server/worldserver/CMakeLists.txt | 2 +- src/server/worldserver/Main.cpp | 3 +++ 6 files changed, 15 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/cmake/compiler/clang/settings.cmake b/cmake/compiler/clang/settings.cmake index 2de9e79ad88..87f8a2f82c8 100644 --- a/cmake/compiler/clang/settings.cmake +++ b/cmake/compiler/clang/settings.cmake @@ -15,4 +15,5 @@ if(WITH_COREDEBUG) endif() # -Wno-narrowing needed to suppress a warning in g3d -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wno-narrowing") +# -Wno-deprecated-register is needed to suppress 185 gsoap warnings on Unix systems. +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wno-narrowing -Wno-deprecated-register") diff --git a/src/server/game/Grids/GridDefines.h b/src/server/game/Grids/GridDefines.h index 5279f437f89..013d0ef5794 100644 --- a/src/server/game/Grids/GridDefines.h +++ b/src/server/game/Grids/GridDefines.h @@ -213,7 +213,7 @@ namespace Trinity inline bool IsValidMapCoord(float c) { - return finite(c) && (std::fabs(c) <= MAP_HALFSIZE - 0.5f); + return std::isfinite(c) && (std::fabs(c) <= MAP_HALFSIZE - 0.5f); } inline bool IsValidMapCoord(float x, float y) @@ -223,12 +223,12 @@ namespace Trinity inline bool IsValidMapCoord(float x, float y, float z) { - return IsValidMapCoord(x, y) && finite(z); + return IsValidMapCoord(x, y) && std::isfinite(z); } inline bool IsValidMapCoord(float x, float y, float z, float o) { - return IsValidMapCoord(x, y, z) && finite(o); + return IsValidMapCoord(x, y, z) && std::isfinite(o); } } #endif diff --git a/src/server/shared/Common.h b/src/server/shared/Common.h index 8cab769ec8a..7c0990ddb76 100644 --- a/src/server/shared/Common.h +++ b/src/server/shared/Common.h @@ -111,7 +111,7 @@ #endif -inline float finiteAlways(float f) { return finite(f) ? f : 0.0f; } +inline float finiteAlways(float f) { return std::isfinite(f) ? f : 0.0f; } #define STRINGIZE(a) #a diff --git a/src/server/shared/Threading/ProcessPriority.h b/src/server/shared/Threading/ProcessPriority.h index cd116ccbbc8..06a5622fb9d 100644 --- a/src/server/shared/Threading/ProcessPriority.h +++ b/src/server/shared/Threading/ProcessPriority.h @@ -28,6 +28,11 @@ void SetProcessPriority(const std::string logChannel) { +// Suppresses Mac OS X Warning since logChannel isn't used. +#if PLATFORM_APPLE + (void)logChannel; +#endif + #if defined(_WIN32) || defined(__linux__) ///- Handle affinity for multiple processors and process priority diff --git a/src/server/worldserver/CMakeLists.txt b/src/server/worldserver/CMakeLists.txt index 80c76352b36..a7c2b9ebedc 100644 --- a/src/server/worldserver/CMakeLists.txt +++ b/src/server/worldserver/CMakeLists.txt @@ -153,7 +153,7 @@ endif() add_dependencies(worldserver revision.h) -if( UNIX AND NOT NOJEM ) +if( UNIX AND NOT NOJEM AND NOT APPLE ) set(worldserver_LINK_FLAGS "-pthread -lncurses ${worldserver_LINK_FLAGS}") endif() diff --git a/src/server/worldserver/Main.cpp b/src/server/worldserver/Main.cpp index 87eb3bae074..206103608a4 100644 --- a/src/server/worldserver/Main.cpp +++ b/src/server/worldserver/Main.cpp @@ -535,6 +535,9 @@ void ClearOnlineAccounts() variables_map GetConsoleArguments(int argc, char** argv, std::string& configFile, std::string& configService) { + // Silences warning about configService not be used if the OS is not Windows + (void)configService; + options_description all("Allowed options"); all.add_options() ("help,h", "print usage message") -- cgit v1.2.3 From 737c3aa9f611c435651da861085beba30440d6e8 Mon Sep 17 00:00:00 2001 From: DDuarte Date: Thu, 24 Jul 2014 01:01:03 +0100 Subject: Core/Common: Remove the no longer finite(x) macro for MSVC Use std::isinfinite(f) instead. --- src/server/shared/Common.h | 1 - 1 file changed, 1 deletion(-) (limited to 'src') diff --git a/src/server/shared/Common.h b/src/server/shared/Common.h index 7c0990ddb76..224ef7fb925 100644 --- a/src/server/shared/Common.h +++ b/src/server/shared/Common.h @@ -101,7 +101,6 @@ #define snprintf _snprintf #define atoll _atoi64 #define vsnprintf _vsnprintf -#define finite(X) _finite(X) #define llabs _abs64 #else -- cgit v1.2.3 From 9e81b23a57771cdebe616177a629d649dfade80f Mon Sep 17 00:00:00 2001 From: Foldy Date: Thu, 24 Jul 2014 01:23:45 +0100 Subject: Scripts/ICC: Summon Sealed Chest quest npc's upon the Lich King's Death TODO: template updates for these npcs and gossips Closes #10554 Closes #12591 (PR) Signed-off-by: DDuarte --- .../scripts/Northrend/IcecrownCitadel/icecrown_citadel.h | 4 ++++ .../Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp | 11 +++++++++++ 2 files changed, 15 insertions(+) (limited to 'src') diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h index 7b00f2f19d7..da4a8f089cc 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h +++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h @@ -142,6 +142,10 @@ enum CreaturesIds NPC_GARROSH_HELLSCREAM = 39372, NPC_KING_VARIAN_WRYNN = 39371, NPC_DEATHBOUND_WARD = 37007, + NPC_LADY_JAINA_PROUDMOORE_QUEST = 38606, + NPC_MURADIN_BRONZEBEARD_QUEST = 38607, + NPC_UTHER_THE_LIGHTBRINGER_QUEST = 38608, + NPC_LADY_SYLVANAS_WINDRUNNER_QUEST = 38609, // Weekly quests NPC_INFILTRATOR_MINCHAR = 38471, diff --git a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp index 514a2b52475..df5e3b795d5 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp @@ -100,6 +100,12 @@ WeeklyQuest const WeeklyQuestData[WeeklyNPCs] = {NPC_VALITHRIA_DREAMWALKER_QUEST, {QUEST_RESPITE_FOR_A_TORNMENTED_SOUL_10, QUEST_RESPITE_FOR_A_TORNMENTED_SOUL_25}} // Respite for a Tormented Soul }; +// NPCs spawned at Light's Hammer on Lich King dead +Position const JainaSpawnPos = { -48.65278f, 2211.026f, 27.98586f, 3.124139f }; +Position const MuradinSpawnPos = { -47.34549f, 2208.087f, 27.98586f, 3.106686f }; +Position const UtherSpawnPos = { -26.58507f, 2211.524f, 30.19898f, 3.124139f }; +Position const SylvanasSpawnPos = { -41.45833f, 2222.891f, 27.98586f, 3.647738f }; + class instance_icecrown_citadel : public InstanceMapScript { public: @@ -936,6 +942,11 @@ class instance_icecrown_citadel : public InstanceMapScript pillars->SetRespawnTime(7 * DAY); if (GameObject* pillars = instance->GetGameObject(PillarsUnchainedGUID)) pillars->SetRespawnTime(7 * DAY); + + instance->SummonCreature(NPC_LADY_JAINA_PROUDMOORE_QUEST, JainaSpawnPos); + instance->SummonCreature(NPC_MURADIN_BRONZEBEARD_QUEST, MuradinSpawnPos); + instance->SummonCreature(NPC_UTHER_THE_LIGHTBRINGER_QUEST, UtherSpawnPos); + instance->SummonCreature(NPC_LADY_SYLVANAS_WINDRUNNER_QUEST, SylvanasSpawnPos); } break; } -- cgit v1.2.3 From 02d56e00bc256f224b7d05f90af2c0af7cb287bf Mon Sep 17 00:00:00 2001 From: Exodius Date: Thu, 24 Jul 2014 03:08:49 +0200 Subject: Core/Spells: Death and Decay Solves problems with Death and Decay doing LoS check using the caster instead of the center of AOE. Fix by @PKX Closes #6345 --- src/server/game/Spells/Auras/SpellAuraEffects.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 152dc903825..2205f0d4607 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -5461,7 +5461,7 @@ void AuraEffect::HandlePeriodicDummyAuraTick(Unit* target, Unit* caster) const if (GetSpellInfo()->SpellFamilyFlags[0] & 0x20) { if (caster) - caster->CastCustomSpell(target, 52212, &m_amount, NULL, NULL, true, 0, this); + target->CastCustomSpell(target, 52212, &m_amount, NULL, NULL, true, 0, this, caster->GetGUID()); break; } // Blood of the North -- cgit v1.2.3 From 79c83dc4db653744ad9a324d35f37e4fe839a839 Mon Sep 17 00:00:00 2001 From: Rushor Date: Thu, 24 Jul 2014 03:20:36 +0100 Subject: Scripts/Feralas: Make Screecher Spirit disappear after clicking on them This is a temporary solution, the script should be rewritten in SAI Closes #12298 Signed-off-by: DDuarte --- src/server/scripts/Kalimdor/zone_feralas.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/scripts/Kalimdor/zone_feralas.cpp b/src/server/scripts/Kalimdor/zone_feralas.cpp index fa5336df1f3..ef4ebed0387 100644 --- a/src/server/scripts/Kalimdor/zone_feralas.cpp +++ b/src/server/scripts/Kalimdor/zone_feralas.cpp @@ -197,7 +197,7 @@ public: player->SEND_GOSSIP_MENU(2039, creature->GetGUID()); player->TalkedToCreature(creature->GetEntry(), creature->GetGUID()); creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - + creature->DespawnOrUnsummon(3*IN_MILLISECONDS); return true; } -- cgit v1.2.3 From 7524e2dfda499177ffe633bd8284aad2cf1f547f Mon Sep 17 00:00:00 2001 From: nelegalno Date: Thu, 24 Jul 2014 03:24:46 +0100 Subject: Scripts/WesternPlaguelands: Fix conditions to show gossip of Myranda the Hag (In Dreams quest) Ref #7519 Signed-off-by: DDuarte --- src/server/scripts/EasternKingdoms/zone_western_plaguelands.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/scripts/EasternKingdoms/zone_western_plaguelands.cpp b/src/server/scripts/EasternKingdoms/zone_western_plaguelands.cpp index 43a66c813a3..0839a476941 100644 --- a/src/server/scripts/EasternKingdoms/zone_western_plaguelands.cpp +++ b/src/server/scripts/EasternKingdoms/zone_western_plaguelands.cpp @@ -143,7 +143,8 @@ public: player->PrepareQuestMenu(creature->GetGUID()); if (player->GetQuestStatus(QUEST_SUBTERFUGE) == QUEST_STATUS_COMPLETE && - !player->GetQuestRewardStatus(QUEST_IN_DREAMS) && !player->HasAura(SPELL_SCARLET_ILLUSION)) + player->GetQuestStatus(QUEST_IN_DREAMS) != QUEST_STATUS_COMPLETE && + !player->HasAura(SPELL_SCARLET_ILLUSION)) { player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_ILLUSION, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); player->SEND_GOSSIP_MENU(4773, creature->GetGUID()); -- cgit v1.2.3