diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/authserver/Main.cpp | 15 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 5 | ||||
-rw-r--r-- | src/server/game/Grids/GridDefines.h | 6 | ||||
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuraEffects.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 10 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/zone_western_plaguelands.cpp | 3 | ||||
-rw-r--r-- | src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h | 4 | ||||
-rw-r--r-- | src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp | 11 | ||||
-rw-r--r-- | src/server/shared/Common.h | 3 | ||||
-rw-r--r-- | src/server/shared/Threading/ProcessPriority.h | 5 | ||||
-rw-r--r-- | src/server/worldserver/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/server/worldserver/Main.cpp | 18 |
12 files changed, 53 insertions, 31 deletions
diff --git a/src/server/authserver/Main.cpp b/src/server/authserver/Main.cpp index a5781171f92..f5cc3bf2508 100644 --- a/src/server/authserver/Main.cpp +++ b/src/server/authserver/Main.cpp @@ -123,6 +123,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 @@ -191,18 +194,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/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 14149d7ca84..73d87ef4774 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -23641,6 +23641,8 @@ void Player::LearnDefaultSkill(uint32 skillId, uint16 rank) skillValue = maxValue; else if (getClass() == CLASS_DEATH_KNIGHT) skillValue = std::min(std::max<uint16>({ 1, uint16((getLevel() - 1) * 5) }), maxValue); + else if (skillId == SKILL_FIST_WEAPONS) + skillValue = std::max<uint16>(1, GetSkillValue(SKILL_UNARMED)); SetSkill(skillId, 0, skillValue, maxValue); break; @@ -25610,6 +25612,9 @@ void Player::_LoadSkills(PreparedQueryResult result) uint16 field = count / 2; uint8 offset = count & 1; + if (HasSkill(SKILL_FIST_WEAPONS)) + SetSkill(SKILL_FIST_WEAPONS, 0, GetSkillValue(SKILL_UNARMED), GetMaxSkillValueForLevel()); + SetUInt16Value(PLAYER_SKILL_LINEID_0 + field, offset, 0); SetUInt16Value(PLAYER_SKILL_STEP_0 + field, offset, 0); SetUInt16Value(PLAYER_SKILL_RANK_0 + field, offset, 0); diff --git a/src/server/game/Grids/GridDefines.h b/src/server/game/Grids/GridDefines.h index e463bb84633..9ed8549e9a1 100644 --- a/src/server/game/Grids/GridDefines.h +++ b/src/server/game/Grids/GridDefines.h @@ -216,7 +216,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) @@ -226,12 +226,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/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index c5a318f764b..b7ea713bcae 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -5469,7 +5469,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 diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index a287b94c2f8..7623550d736 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -838,12 +838,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) 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()); 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 3dd39d85eb2..febcf22ba6d 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: @@ -932,6 +938,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; } diff --git a/src/server/shared/Common.h b/src/server/shared/Common.h index 1e3b0e46221..e74e707a942 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 @@ -111,7 +110,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 e48cbc9c7c7..6df8c52aa06 100644 --- a/src/server/worldserver/CMakeLists.txt +++ b/src/server/worldserver/CMakeLists.txt @@ -155,7 +155,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 0c051eae37a..206103608a4 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) @@ -540,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") |