diff options
| author | kaelima <kaelima@live.se> | 2012-11-05 12:02:08 +0100 |
|---|---|---|
| committer | kaelima <kaelima@live.se> | 2012-11-05 12:02:08 +0100 |
| commit | 3c13454ad71b259c50d394a8a467a2570f683827 (patch) | |
| tree | 13b8744efdb5fc8930630f5e5c513f2727c7bb18 /src/server/scripts | |
| parent | 19d7f68592d653067c3b84c3d409e59b2724a85d (diff) | |
| parent | c5fdb02305c78d8193f8c3161449e3955d4f7e8a (diff) | |
Merge git://github.com/TrinityCore/TrinityCore into mmaps
Conflicts:
src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp
src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp
src/server/game/Movement/Spline/MoveSplineInit.cpp
Diffstat (limited to 'src/server/scripts')
84 files changed, 1871 insertions, 653 deletions
diff --git a/src/server/scripts/CMakeLists.txt b/src/server/scripts/CMakeLists.txt index 619e2730f79..2d15dfb3081 100644 --- a/src/server/scripts/CMakeLists.txt +++ b/src/server/scripts/CMakeLists.txt @@ -44,6 +44,7 @@ if(SCRIPTS) include(Kalimdor/CMakeLists.txt) include(Outland/CMakeLists.txt) include(Northrend/CMakeLists.txt) + include(Events/CMakeLists.txt) endif() message(STATUS "SCRIPT PREPARATION COMPLETE") diff --git a/src/server/scripts/Commands/CMakeLists.txt b/src/server/scripts/Commands/CMakeLists.txt index e799cf20633..e7e2e430f81 100644 --- a/src/server/scripts/Commands/CMakeLists.txt +++ b/src/server/scripts/Commands/CMakeLists.txt @@ -27,6 +27,7 @@ set(scripts_STAT_SRCS Commands/cs_honor.cpp Commands/cs_instance.cpp Commands/cs_learn.cpp + Commands/cs_lfg.cpp Commands/cs_list.cpp Commands/cs_lookup.cpp Commands/cs_message.cpp diff --git a/src/server/scripts/Commands/cs_account.cpp b/src/server/scripts/Commands/cs_account.cpp index 1024a3acf15..15a724e69d1 100644 --- a/src/server/scripts/Commands/cs_account.cpp +++ b/src/server/scripts/Commands/cs_account.cpp @@ -111,9 +111,9 @@ public: handler->PSendSysMessage(LANG_ACCOUNT_CREATED, accountName); if (handler->GetSession()) { - sLog->outInfo(LOG_FILTER_CHARACTER, "Account: %d (IP: %s) Character:[%s] (GUID: %u) Change Password." - , handler->GetSession()->GetAccountId(),handler->GetSession()->GetRemoteAddress().c_str() - , handler->GetSession()->GetPlayer()->GetName(), handler->GetSession()->GetPlayer()->GetGUIDLow()); + sLog->outInfo(LOG_FILTER_CHARACTER, "Account: %d (IP: %s) Character:[%s] (GUID: %u) Change Password.", + handler->GetSession()->GetAccountId(), handler->GetSession()->GetRemoteAddress().c_str(), + handler->GetSession()->GetPlayer()->GetName().c_str(), handler->GetSession()->GetPlayer()->GetGUIDLow()); } break; case AOR_NAME_TOO_LONG: diff --git a/src/server/scripts/Commands/cs_character.cpp b/src/server/scripts/Commands/cs_character.cpp index 1f32368adfd..2202edbe4aa 100644 --- a/src/server/scripts/Commands/cs_character.cpp +++ b/src/server/scripts/Commands/cs_character.cpp @@ -265,7 +265,7 @@ public: return false; LocaleConstant loc = handler->GetSessionDbcLocale(); - char const* targetName = target->GetName(); + char const* targetName = target->GetName().c_str(); char const* knownStr = handler->GetTrinityString(LANG_KNOWN); // Search in CharTitles.dbc @@ -681,7 +681,7 @@ public: uint64 characterGuid; uint32 accountId; - Player* player = sObjectAccessor->FindPlayerByName(characterName.c_str()); + Player* player = sObjectAccessor->FindPlayerByName(characterName); if (player) { characterGuid = player->GetGUID(); diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp index 7f25a11bcdd..99ed8cc4301 100644 --- a/src/server/scripts/Commands/cs_debug.cpp +++ b/src/server/scripts/Commands/cs_debug.cpp @@ -417,7 +417,7 @@ public: sLog->outDebug(LOG_FILTER_NETWORKIO, "Sending opcode %u", data.GetOpcode()); data.hexlike(); player->GetSession()->SendPacket(&data); - handler->PSendSysMessage(LANG_COMMAND_OPCODESENT, data.GetOpcode(), unit->GetName()); + handler->PSendSysMessage(LANG_COMMAND_OPCODESENT, data.GetOpcode(), unit->GetName().c_str()); return true; } @@ -496,7 +496,9 @@ public: if (!target) return false; - handler->PSendSysMessage("Loot recipient for creature %s (GUID %u, DB GUID %u) is %s", target->GetName(), target->GetGUIDLow(), target->GetDBTableGUIDLow(), target->hasLootRecipient() ? (target->GetLootRecipient() ? target->GetLootRecipient()->GetName() : "offline") : "no loot recipient"); + handler->PSendSysMessage("Loot recipient for creature %s (GUID %u, DB GUID %u) is %s", + target->GetName().c_str(), target->GetGUIDLow(), target->GetDBTableGUIDLow(), + target->hasLootRecipient() ? (target->GetLootRecipient() ? target->GetLootRecipient()->GetName().c_str() : "offline") : "no loot recipient"); return true; } @@ -796,17 +798,17 @@ public: if (!target || target->isTotem() || target->isPet()) return false; - std::list<HostileReference*>& threatList = target->getThreatManager().getThreatList(); - std::list<HostileReference*>::iterator itr; + ThreatContainer::StorageType const &threatList = target->getThreatManager().getThreatList(); + ThreatContainer::StorageType::const_iterator itr; uint32 count = 0; - handler->PSendSysMessage("Threat list of %s (guid %u)", target->GetName(), target->GetGUIDLow()); + handler->PSendSysMessage("Threat list of %s (guid %u)", target->GetName().c_str(), target->GetGUIDLow()); for (itr = threatList.begin(); itr != threatList.end(); ++itr) { Unit* unit = (*itr)->getTarget(); if (!unit) continue; ++count; - handler->PSendSysMessage(" %u. %s (guid %u) - threat %f", count, unit->GetName(), unit->GetGUIDLow(), (*itr)->getThreat()); + handler->PSendSysMessage(" %u. %s (guid %u) - threat %f", count, unit->GetName().c_str(), unit->GetGUIDLow(), (*itr)->getThreat()); } handler->SendSysMessage("End of threat list."); return true; @@ -819,13 +821,13 @@ public: target = handler->GetSession()->GetPlayer(); HostileReference* ref = target->getHostileRefManager().getFirst(); uint32 count = 0; - handler->PSendSysMessage("Hostil reference list of %s (guid %u)", target->GetName(), target->GetGUIDLow()); + handler->PSendSysMessage("Hostil reference list of %s (guid %u)", target->GetName().c_str(), target->GetGUIDLow()); while (ref) { if (Unit* unit = ref->getSource()->getOwner()) { ++count; - handler->PSendSysMessage(" %u. %s (guid %u) - threat %f", count, unit->GetName(), unit->GetGUIDLow(), ref->getThreat()); + handler->PSendSysMessage(" %u. %s (guid %u) - threat %f", count, unit->GetName().c_str(), unit->GetGUIDLow(), ref->getThreat()); } ref = ref->next(); } @@ -1047,7 +1049,7 @@ public: static bool HandleDebugLoSCommand(ChatHandler* handler, char const* /*args*/) { if (Unit* unit = handler->getSelectedUnit()) - handler->PSendSysMessage("Unit %s (GuidLow: %u) is %sin LoS", unit->GetName(), unit->GetGUIDLow(), handler->GetSession()->GetPlayer()->IsWithinLOSInMap(unit) ? "" : "not "); + handler->PSendSysMessage("Unit %s (GuidLow: %u) is %sin LoS", unit->GetName().c_str(), unit->GetGUIDLow(), handler->GetSession()->GetPlayer()->IsWithinLOSInMap(unit) ? "" : "not "); return true; } diff --git a/src/server/scripts/Commands/cs_gm.cpp b/src/server/scripts/Commands/cs_gm.cpp index 3dfc6f9c7e8..4c6e36d3f71 100644 --- a/src/server/scripts/Commands/cs_gm.cpp +++ b/src/server/scripts/Commands/cs_gm.cpp @@ -133,16 +133,17 @@ public: handler->SendSysMessage(LANG_GMS_ON_SRV); handler->SendSysMessage("========================"); } - char const* name = itr->second->GetName(); + std::string const& name = itr->second->GetName(); + uint8 size = name.size(); uint8 security = itrSec; - uint8 max = ((16 - strlen(name)) / 2); + uint8 max = ((16 - size) / 2); uint8 max2 = max; - if ((max + max2 + strlen(name)) == 16) + if ((max + max2 + size) == 16) max2 = max - 1; if (handler->GetSession()) - handler->PSendSysMessage("| %s GMLevel %u", name, security); + handler->PSendSysMessage("| %s GMLevel %u", name.c_str(), security); else - handler->PSendSysMessage("|%*s%s%*s| %u |", max, " ", name, max2, " ", security); + handler->PSendSysMessage("|%*s%s%*s| %u |", max, " ", name.c_str(), max2, " ", security); } } if (footer) diff --git a/src/server/scripts/Commands/cs_lfg.cpp b/src/server/scripts/Commands/cs_lfg.cpp new file mode 100644 index 00000000000..5f1ed59176f --- /dev/null +++ b/src/server/scripts/Commands/cs_lfg.cpp @@ -0,0 +1,134 @@ +/* + * Copyright (C) 2008-2012 TrinityCore <http://www.trinitycore.org/> + * + * 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 <http://www.gnu.org/licenses/>. + */ + +#include "ScriptMgr.h" +#include "Chat.h" +#include "LFGMgr.h" +#include "Group.h" + +void GetPlayerInfo(ChatHandler* handler, Player* player) +{ + if (!player) + return; + + uint64 guid = player->GetGUID(); + LfgDungeonSet dungeons = sLFGMgr->GetSelectedDungeons(guid); + + std::string const& state = sLFGMgr->GetStateString(sLFGMgr->GetState(guid)); + handler->PSendSysMessage(LANG_LFG_PLAYER_INFO, player->GetName().c_str(), + state.c_str(), uint8(dungeons.size()), sLFGMgr->ConcatenateDungeons(dungeons).c_str(), + sLFGMgr->GetRolesString(sLFGMgr->GetRoles(guid)).c_str(), sLFGMgr->GetComment(guid).c_str()); +} + +class lfg_commandscript : public CommandScript +{ +public: + lfg_commandscript() : CommandScript("lfg_commandscript") { } + + ChatCommand* GetCommands() const + { + static ChatCommand lfgCommandTable[] = + { + { "player", SEC_GAMEMASTER, false, &HandleLfgPlayerInfoCommand, "", NULL }, + { "group", SEC_GAMEMASTER, false, &HandleLfgGroupInfoCommand, "", NULL }, + { "queue", SEC_GAMEMASTER, false, &HandleLfgQueueInfoCommand, "", NULL }, + { "clean", SEC_ADMINISTRATOR, false, &HandleLfgCleanCommand, "", NULL }, + { "options", SEC_ADMINISTRATOR, false, &HandleLfgOptionsCommand, "", NULL }, + { NULL, SEC_PLAYER, false, NULL, "", NULL } + }; + + static ChatCommand commandTable[] = + { + { "lfg", SEC_GAMEMASTER, false, NULL, "", lfgCommandTable }, + { NULL, SEC_PLAYER, false, NULL, "", NULL } + }; + return commandTable; + } + + static bool HandleLfgPlayerInfoCommand(ChatHandler* handler, char const* args) + { + Player* target = NULL; + std::string playerName; + if (!handler->extractPlayerTarget((char*)args, &target, NULL, &playerName)) + return false; + + GetPlayerInfo(handler, target); + return true; + } + + static bool HandleLfgGroupInfoCommand(ChatHandler* handler, char const* args) + { + Player* target = NULL; + std::string playerName; + if (!handler->extractPlayerTarget((char*)args, &target, NULL, &playerName)) + return false; + + Group* grp = target->GetGroup(); + if (!grp) + { + handler->PSendSysMessage(LANG_LFG_NOT_IN_GROUP, playerName.c_str()); + return true; + } + + uint64 guid = grp->GetGUID(); + std::string const& state = sLFGMgr->GetStateString(sLFGMgr->GetState(guid)); + handler->PSendSysMessage(LANG_LFG_GROUP_INFO, grp->isLFGGroup(), + state.c_str(), sLFGMgr->GetDungeon(guid)); + + for (GroupReference* itr = grp->GetFirstMember(); itr != NULL; itr = itr->next()) + GetPlayerInfo(handler, itr->getSource()); + + return true; + } + + static bool HandleLfgOptionsCommand(ChatHandler* handler, char const* args) + { + int32 options = -1; + if (char* str = strtok((char*)args, " ")) + { + int32 tmp = atoi(str); + if (tmp > -1) + options = tmp; + } + + if (options != -1) + { + sLFGMgr->SetOptions(options); + handler->PSendSysMessage(LANG_LFG_OPTIONS_CHANGED); + } + handler->PSendSysMessage(LANG_LFG_OPTIONS, sLFGMgr->GetOptions()); + return true; + } + + static bool HandleLfgQueueInfoCommand(ChatHandler* handler, char const* args) + { + handler->SendSysMessage(sLFGMgr->DumpQueueInfo(*args).c_str()); + return true; + } + + static bool HandleLfgCleanCommand(ChatHandler* handler, char const* /*args*/) + { + handler->PSendSysMessage(LANG_LFG_CLEAN); + sLFGMgr->Clean(); + return true; + } +}; + +void AddSC_lfg_commandscript() +{ + new lfg_commandscript(); +} diff --git a/src/server/scripts/Commands/cs_lookup.cpp b/src/server/scripts/Commands/cs_lookup.cpp index 951ebc7714b..8f7e3ed3247 100644 --- a/src/server/scripts/Commands/cs_lookup.cpp +++ b/src/server/scripts/Commands/cs_lookup.cpp @@ -1081,7 +1081,7 @@ public: Player* target = handler->getSelectedPlayer(); // title name have single string arg for player name - char const* targetName = target ? target->GetName() : "NAME"; + char const* targetName = target ? target->GetName().c_str() : "NAME"; std::string namePart = args; std::wstring wNamePart; diff --git a/src/server/scripts/Commands/cs_message.cpp b/src/server/scripts/Commands/cs_message.cpp index d61abf34e2f..de2fcf26943 100644 --- a/src/server/scripts/Commands/cs_message.cpp +++ b/src/server/scripts/Commands/cs_message.cpp @@ -71,7 +71,7 @@ public: Player* player = handler->GetSession()->GetPlayer(); Channel* channcel = NULL; - if (ChannelMgr* cMgr = channelMgr(player->GetTeam())) + if (ChannelMgr* cMgr = ChannelMgr::forTeam(player->GetTeam())) channcel = cMgr->GetChannel(channelStr, player); if (strcmp(argStr, "on") == 0) diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp index f7280cf906e..7e460c7482f 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -1923,9 +1923,9 @@ public: if (!target) handler->SendSysMessage(LANG_MOVEGENS_CHASE_NULL); else if (target->GetTypeId() == TYPEID_PLAYER) - handler->PSendSysMessage(LANG_MOVEGENS_CHASE_PLAYER, target->GetName(), target->GetGUIDLow()); + handler->PSendSysMessage(LANG_MOVEGENS_CHASE_PLAYER, target->GetName().c_str(), target->GetGUIDLow()); else - handler->PSendSysMessage(LANG_MOVEGENS_CHASE_CREATURE, target->GetName(), target->GetGUIDLow()); + handler->PSendSysMessage(LANG_MOVEGENS_CHASE_CREATURE, target->GetName().c_str(), target->GetGUIDLow()); break; } case FOLLOW_MOTION_TYPE: @@ -1939,9 +1939,9 @@ public: if (!target) handler->SendSysMessage(LANG_MOVEGENS_FOLLOW_NULL); else if (target->GetTypeId() == TYPEID_PLAYER) - handler->PSendSysMessage(LANG_MOVEGENS_FOLLOW_PLAYER, target->GetName(), target->GetGUIDLow()); + handler->PSendSysMessage(LANG_MOVEGENS_FOLLOW_PLAYER, target->GetName().c_str(), target->GetGUIDLow()); else - handler->PSendSysMessage(LANG_MOVEGENS_FOLLOW_CREATURE, target->GetName(), target->GetGUIDLow()); + handler->PSendSysMessage(LANG_MOVEGENS_FOLLOW_CREATURE, target->GetName().c_str(), target->GetGUIDLow()); break; } case HOME_MOTION_TYPE: @@ -2534,7 +2534,7 @@ public: { name = TargetName; normalizePlayerName(name); - player = sObjectAccessor->FindPlayerByName(name.c_str()); + player = sObjectAccessor->FindPlayerByName(name); } if (!player) @@ -2593,7 +2593,7 @@ public: { name = targetName; normalizePlayerName(name); - player = sObjectAccessor->FindPlayerByName(name.c_str()); + player = sObjectAccessor->FindPlayerByName(name); } else // If no name was entered - use target { diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp index 77fc2918e0b..ba7342caa80 100644 --- a/src/server/scripts/Commands/cs_npc.cpp +++ b/src/server/scripts/Commands/cs_npc.cpp @@ -47,19 +47,19 @@ public: { "weapon", SEC_ADMINISTRATOR, false, &HandleNpcAddWeaponCommand, "", NULL }, //} { "", SEC_GAMEMASTER, false, &HandleNpcAddCommand, "", NULL }, - { NULL, 0, false, NULL, "", NULL } + { NULL, SEC_PLAYER, false, NULL, "", NULL } }; static ChatCommand npcDeleteCommandTable[] = { { "item", SEC_GAMEMASTER, false, &HandleNpcDeleteVendorItemCommand, "", NULL }, { "", SEC_GAMEMASTER, false, &HandleNpcDeleteCommand, "", NULL }, - { NULL, 0, false, NULL, "", NULL } + { NULL, SEC_PLAYER, false, NULL, "", NULL } }; static ChatCommand npcFollowCommandTable[] = { { "stop", SEC_GAMEMASTER, false, &HandleNpcUnFollowCommand, "", NULL }, { "", SEC_GAMEMASTER, false, &HandleNpcFollowCommand, "", NULL }, - { NULL, 0, false, NULL, "", NULL } + { NULL, SEC_PLAYER, false, NULL, "", NULL } }; static ChatCommand npcSetCommandTable[] = { @@ -79,7 +79,7 @@ public: { "name", SEC_GAMEMASTER, false, &HandleNpcSetNameCommand, "", NULL }, { "subname", SEC_GAMEMASTER, false, &HandleNpcSetSubNameCommand, "", NULL }, //} - { NULL, 0, false, NULL, "", NULL } + { NULL, SEC_PLAYER, false, NULL, "", NULL } }; static ChatCommand npcCommandTable[] = { @@ -95,18 +95,18 @@ public: { "delete", SEC_GAMEMASTER, false, NULL, "", npcDeleteCommandTable }, { "follow", SEC_GAMEMASTER, false, NULL, "", npcFollowCommandTable }, { "set", SEC_GAMEMASTER, false, NULL, "", npcSetCommandTable }, - { NULL, 0, false, NULL, "", NULL } + { NULL, SEC_PLAYER, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { { "npc", SEC_MODERATOR, false, NULL, "", npcCommandTable }, - { NULL, 0, false, NULL, "", NULL } + { NULL, SEC_PLAYER, false, NULL, "", NULL } }; return commandTable; } //add spawn of creature - static bool HandleNpcAddCommand(ChatHandler* handler, const char* args) + static bool HandleNpcAddCommand(ChatHandler* handler, char const* args) { if (!*args) return false; @@ -229,7 +229,7 @@ public: } //add move for creature - static bool HandleNpcAddMoveCommand(ChatHandler* handler, const char* args) + static bool HandleNpcAddMoveCommand(ChatHandler* handler, char const* args) { if (!*args) return false; @@ -293,7 +293,7 @@ public: return true; } - static bool HandleNpcSetAllowMovementCommand(ChatHandler* handler, const char* /*args*/) + static bool HandleNpcSetAllowMovementCommand(ChatHandler* handler, char const* /*args*/) { if (sWorld->getAllowMovement()) { @@ -308,7 +308,7 @@ public: return true; } - static bool HandleNpcSetEntryCommand(ChatHandler* handler, const char* args) + static bool HandleNpcSetEntryCommand(ChatHandler* handler, char const* args) { if (!*args) return false; @@ -333,7 +333,7 @@ public: } //change level of creature or pet - static bool HandleNpcSetLevelCommand(ChatHandler* handler, const char* args) + static bool HandleNpcSetLevelCommand(ChatHandler* handler, char const* args) { if (!*args) return false; @@ -374,7 +374,7 @@ public: return true; } - static bool HandleNpcDeleteCommand(ChatHandler* handler, const char* args) + static bool HandleNpcDeleteCommand(ChatHandler* handler, char const* args) { Creature* unit = NULL; @@ -413,7 +413,7 @@ public: } //del item from vendor list - static bool HandleNpcDeleteVendorItemCommand(ChatHandler* handler, const char* args) + static bool HandleNpcDeleteVendorItemCommand(ChatHandler* handler, char const* args) { if (!*args) return false; @@ -449,7 +449,7 @@ public: } //set faction of creature - static bool HandleNpcSetFactionIdCommand(ChatHandler* handler, const char* args) + static bool HandleNpcSetFactionIdCommand(ChatHandler* handler, char const* args) { if (!*args) return false; @@ -496,7 +496,7 @@ public: } //set npcflag of creature - static bool HandleNpcSetFlagCommand(ChatHandler* handler, const char* args) + static bool HandleNpcSetFlagCommand(ChatHandler* handler, char const* args) { if (!*args) return false; @@ -527,7 +527,7 @@ public: } //set data of creature for testing scripting - static bool HandleNpcSetDataCommand(ChatHandler* handler, const char* args) + static bool HandleNpcSetDataCommand(ChatHandler* handler, char const* args) { if (!*args) return false; @@ -555,12 +555,12 @@ public: creature->AI()->SetData(data_1, data_2); std::string AIorScript = creature->GetAIName() != "" ? "AI type: " + creature->GetAIName() : (creature->GetScriptName() != "" ? "Script Name: " + creature->GetScriptName() : "No AI or Script Name Set"); - handler->PSendSysMessage(LANG_NPC_SETDATA, creature->GetGUID(), creature->GetEntry(), creature->GetName(), data_1, data_2, AIorScript.c_str()); + handler->PSendSysMessage(LANG_NPC_SETDATA, creature->GetGUID(), creature->GetEntry(), creature->GetName().c_str(), data_1, data_2, AIorScript.c_str()); return true; } //npc follow handling - static bool HandleNpcFollowCommand(ChatHandler* handler, const char* /*args*/) + static bool HandleNpcFollowCommand(ChatHandler* handler, char const* /*args*/) { Player* player = handler->GetSession()->GetPlayer(); Creature* creature = handler->getSelectedCreature(); @@ -575,11 +575,11 @@ public: // Follow player - Using pet's default dist and angle creature->GetMotionMaster()->MoveFollow(player, PET_FOLLOW_DIST, creature->GetFollowAngle()); - handler->PSendSysMessage(LANG_CREATURE_FOLLOW_YOU_NOW, creature->GetName()); + handler->PSendSysMessage(LANG_CREATURE_FOLLOW_YOU_NOW, creature->GetName().c_str()); return true; } - static bool HandleNpcInfoCommand(ChatHandler* handler, const char* /*args*/) + static bool HandleNpcInfoCommand(ChatHandler* handler, char const* /*args*/) { Creature* target = handler->getSelectedCreature(); @@ -625,7 +625,7 @@ public: } //move selected creature - static bool HandleNpcMoveCommand(ChatHandler* handler, const char* args) + static bool HandleNpcMoveCommand(ChatHandler* handler, char const* args) { uint32 lowguid = 0; @@ -713,7 +713,7 @@ public: } //play npc emote - static bool HandleNpcPlayEmoteCommand(ChatHandler* handler, const char* args) + static bool HandleNpcPlayEmoteCommand(ChatHandler* handler, char const* args) { uint32 emote = atoi((char*)args); @@ -742,7 +742,7 @@ public: } //set model of creature - static bool HandleNpcSetModelCommand(ChatHandler* handler, const char* args) + static bool HandleNpcSetModelCommand(ChatHandler* handler, char const* args) { if (!*args) return false; @@ -778,7 +778,7 @@ public: * additional parameter: NODEL - so no waypoints are deleted, if you * change the movement type */ - static bool HandleNpcSetMoveTypeCommand(ChatHandler* handler, const char* args) + static bool HandleNpcSetMoveTypeCommand(ChatHandler* handler, char const* args) { if (!*args) return false; @@ -914,7 +914,7 @@ public: //npc phasemask handling //change phasemask of creature or pet - static bool HandleNpcSetPhaseCommand(ChatHandler* handler, const char* args) + static bool HandleNpcSetPhaseCommand(ChatHandler* handler, char const* args) { if (!*args) return false; @@ -944,7 +944,7 @@ public: } //set spawn dist of creature - static bool HandleNpcSetSpawnDistCommand(ChatHandler* handler, const char* args) + static bool HandleNpcSetSpawnDistCommand(ChatHandler* handler, char const* args) { if (!*args) return false; @@ -990,7 +990,7 @@ public: } //spawn time handling - static bool HandleNpcSetSpawnTimeCommand(ChatHandler* handler, const char* args) + static bool HandleNpcSetSpawnTimeCommand(ChatHandler* handler, char const* args) { if (!*args) return false; @@ -1030,7 +1030,7 @@ public: return true; } - static bool HandleNpcSayCommand(ChatHandler* handler, const char* args) + static bool HandleNpcSayCommand(ChatHandler* handler, char const* args) { if (!*args) return false; @@ -1058,7 +1058,7 @@ public: } //show text emote by creature in chat - static bool HandleNpcTextEmoteCommand(ChatHandler* handler, const char* args) + static bool HandleNpcTextEmoteCommand(ChatHandler* handler, char const* args) { if (!*args) return false; @@ -1078,7 +1078,7 @@ public: } //npc unfollow handling - static bool HandleNpcUnFollowCommand(ChatHandler* handler, const char* /*args*/) + static bool HandleNpcUnFollowCommand(ChatHandler* handler, char const* /*args*/) { Player* player = handler->GetSession()->GetPlayer(); Creature* creature = handler->getSelectedCreature(); @@ -1093,7 +1093,7 @@ public: if (/*creature->GetMotionMaster()->empty() ||*/ creature->GetMotionMaster()->GetCurrentMovementGeneratorType() != FOLLOW_MOTION_TYPE) { - handler->PSendSysMessage(LANG_CREATURE_NOT_FOLLOW_YOU, creature->GetName()); + handler->PSendSysMessage(LANG_CREATURE_NOT_FOLLOW_YOU, creature->GetName().c_str()); handler->SetSentErrorMessage(true); return false; } @@ -1102,7 +1102,7 @@ public: if (mgen->GetTarget() != player) { - handler->PSendSysMessage(LANG_CREATURE_NOT_FOLLOW_YOU, creature->GetName()); + handler->PSendSysMessage(LANG_CREATURE_NOT_FOLLOW_YOU, creature->GetName().c_str()); handler->SetSentErrorMessage(true); return false; } @@ -1110,12 +1110,12 @@ public: // reset movement creature->GetMotionMaster()->MovementExpired(true); - handler->PSendSysMessage(LANG_CREATURE_NOT_FOLLOW_YOU_NOW, creature->GetName()); + handler->PSendSysMessage(LANG_CREATURE_NOT_FOLLOW_YOU_NOW, creature->GetName().c_str()); return true; } // make npc whisper to player - static bool HandleNpcWhisperCommand(ChatHandler* handler, const char* args) + static bool HandleNpcWhisperCommand(ChatHandler* handler, char const* args) { if (!*args) return false; @@ -1142,7 +1142,7 @@ public: return true; } - static bool HandleNpcYellCommand(ChatHandler* handler, const char* args) + static bool HandleNpcYellCommand(ChatHandler* handler, char const* args) { if (!*args) return false; @@ -1164,7 +1164,7 @@ public: } // add creature, temp only - static bool HandleNpcAddTempSpawnCommand(ChatHandler* handler, const char* args) + static bool HandleNpcAddTempSpawnCommand(ChatHandler* handler, char const* args) { if (!*args) return false; @@ -1184,7 +1184,7 @@ public: } //npc tame handling - static bool HandleNpcTameCommand(ChatHandler* handler, const char* /*args*/) + static bool HandleNpcTameCommand(ChatHandler* handler, char const* /*args*/) { Creature* creatureTarget = handler->getSelectedCreature(); if (!creatureTarget || creatureTarget->isPet()) @@ -1250,7 +1250,7 @@ public: return true; } - static bool HandleNpcAddFormationCommand(ChatHandler* handler, const char* args) + static bool HandleNpcAddFormationCommand(ChatHandler* handler, char const* args) { if (!*args) return false; @@ -1302,7 +1302,7 @@ public: return true; } - static bool HandleNpcSetLinkCommand(ChatHandler* handler, const char* args) + static bool HandleNpcSetLinkCommand(ChatHandler* handler, char const* args) { if (!*args) return false; @@ -1337,7 +1337,7 @@ public: } //TODO: NpcCommands that need to be fixed : - static bool HandleNpcAddWeaponCommand(ChatHandler* /*handler*/, const char* /*args*/) + static bool HandleNpcAddWeaponCommand(ChatHandler* /*handler*/, char const* /*args*/) { /*if (!*args) return false; @@ -1405,7 +1405,7 @@ public: return true; } - static bool HandleNpcSetNameCommand(ChatHandler* /*handler*/, const char* /*args*/) + static bool HandleNpcSetNameCommand(ChatHandler* /*handler*/, char const* /*args*/) { /* Temp. disabled if (!*args) @@ -1452,7 +1452,7 @@ public: return true; } - static bool HandleNpcSetSubNameCommand(ChatHandler* /*handler*/, const char* /*args*/) + static bool HandleNpcSetSubNameCommand(ChatHandler* /*handler*/, char const* /*args*/) { /* Temp. disabled diff --git a/src/server/scripts/Commands/cs_ticket.cpp b/src/server/scripts/Commands/cs_ticket.cpp index baaa5d2bd43..c99931a90fb 100644 --- a/src/server/scripts/Commands/cs_ticket.cpp +++ b/src/server/scripts/Commands/cs_ticket.cpp @@ -156,7 +156,7 @@ public: sTicketMgr->CloseTicket(ticket->GetId(), player ? player->GetGUID() : -1); sTicketMgr->UpdateLastChange(); - std::string msg = ticket->FormatMessageString(*handler, player ? player->GetName() : "Console", NULL, NULL, NULL); + std::string msg = ticket->FormatMessageString(*handler, player ? player->GetName().c_str() : "Console", NULL, NULL, NULL); handler->SendGlobalGMSysMessage(msg.c_str()); // Inform player, who submitted this ticket, that it is closed @@ -206,7 +206,7 @@ public: sTicketMgr->UpdateLastChange(); std::string msg = ticket->FormatMessageString(*handler, NULL, ticket->GetAssignedToName().c_str(), NULL, NULL); - msg += handler->PGetParseString(LANG_COMMAND_TICKETLISTADDCOMMENT, player ? player->GetName() : "Console", comment); + msg += handler->PGetParseString(LANG_COMMAND_TICKETLISTADDCOMMENT, player ? player->GetName().c_str() : "Console", comment); handler->SendGlobalGMSysMessage(msg.c_str()); return true; @@ -258,7 +258,7 @@ public: return true; } - std::string msg = ticket->FormatMessageString(*handler, NULL, NULL, NULL, handler->GetSession() ? handler->GetSession()->GetPlayer()->GetName() : "Console"); + std::string msg = ticket->FormatMessageString(*handler, NULL, NULL, NULL, handler->GetSession() ? handler->GetSession()->GetPlayer()->GetName().c_str() : "Console"); handler->SendGlobalGMSysMessage(msg.c_str()); sTicketMgr->RemoveTicket(ticket->GetId()); @@ -389,7 +389,7 @@ public: sTicketMgr->UpdateLastChange(); std::string msg = ticket->FormatMessageString(*handler, NULL, ticket->GetAssignedToName().c_str(), - handler->GetSession() ? handler->GetSession()->GetPlayer()->GetName() : "Console", NULL); + handler->GetSession() ? handler->GetSession()->GetPlayer()->GetName().c_str() : "Console", NULL); handler->SendGlobalGMSysMessage(msg.c_str()); return true; @@ -427,7 +427,7 @@ public: // Detect target's GUID uint64 guid = 0; - if (Player* player = sObjectAccessor->FindPlayerByName(name.c_str())) + if (Player* player = sObjectAccessor->FindPlayerByName(name)) guid = player->GetGUID(); else guid = sObjectMgr->GetPlayerGUIDByName(name); diff --git a/src/server/scripts/Commands/cs_titles.cpp b/src/server/scripts/Commands/cs_titles.cpp index f35f6baca98..e1b30d122de 100644 --- a/src/server/scripts/Commands/cs_titles.cpp +++ b/src/server/scripts/Commands/cs_titles.cpp @@ -36,7 +36,7 @@ public: static ChatCommand titlesSetCommandTable[] = { { "mask", SEC_GAMEMASTER, false, &HandleTitlesSetMaskCommand, "", NULL }, - { NULL, 0, false, NULL, "", NULL } + { NULL, SEC_PLAYER, false, NULL, "", NULL } }; static ChatCommand titlesCommandTable[] = { @@ -44,17 +44,17 @@ public: { "current", SEC_GAMEMASTER, false, &HandleTitlesCurrentCommand, "", NULL }, { "remove", SEC_GAMEMASTER, false, &HandleTitlesRemoveCommand, "", NULL }, { "set", SEC_GAMEMASTER, false, NULL, "", titlesSetCommandTable }, - { NULL, 0, false, NULL, "", NULL } + { NULL, SEC_PLAYER, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { { "titles", SEC_GAMEMASTER, false, NULL, "", titlesCommandTable }, - { NULL, 0, false, NULL, "", NULL } + { NULL, SEC_PLAYER, false, NULL, "", NULL } }; return commandTable; } - static bool HandleTitlesCurrentCommand(ChatHandler* handler, const char* args) + static bool HandleTitlesCurrentCommand(ChatHandler* handler, char const* args) { // number or [name] Shift-click form |color|Htitle:title_id|h[name]|h|r char* id_p = handler->extractKeyFromLink((char*)args, "Htitle"); @@ -99,7 +99,7 @@ public: return true; } - static bool HandleTitlesAddCommand(ChatHandler* handler, const char* args) + static bool HandleTitlesAddCommand(ChatHandler* handler, char const* args) { // number or [name] Shift-click form |color|Htitle:title_id|h[name]|h|r char* id_p = handler->extractKeyFromLink((char*)args, "Htitle"); @@ -136,9 +136,8 @@ public: std::string tNameLink = handler->GetNameLink(target); - char const* targetName = target->GetName(); char titleNameStr[80]; - snprintf(titleNameStr, 80, titleInfo->name[handler->GetSessionDbcLocale()], targetName); + snprintf(titleNameStr, 80, titleInfo->name[handler->GetSessionDbcLocale()], target->GetName().c_str()); target->SetTitle(titleInfo); handler->PSendSysMessage(LANG_TITLE_ADD_RES, id, titleNameStr, tNameLink.c_str()); @@ -146,7 +145,7 @@ public: return true; } - static bool HandleTitlesRemoveCommand(ChatHandler* handler, const char* args) + static bool HandleTitlesRemoveCommand(ChatHandler* handler, char const* args) { // number or [name] Shift-click form |color|Htitle:title_id|h[name]|h|r char* id_p = handler->extractKeyFromLink((char*)args, "Htitle"); @@ -185,9 +184,8 @@ public: std::string tNameLink = handler->GetNameLink(target); - char const* targetName = target->GetName(); char titleNameStr[80]; - snprintf(titleNameStr, 80, titleInfo->name[handler->GetSessionDbcLocale()], targetName); + snprintf(titleNameStr, 80, titleInfo->name[handler->GetSessionDbcLocale()], target->GetName().c_str()); handler->PSendSysMessage(LANG_TITLE_REMOVE_RES, id, titleNameStr, tNameLink.c_str()); @@ -201,7 +199,7 @@ public: } //Edit Player KnownTitles - static bool HandleTitlesSetMaskCommand(ChatHandler* handler, const char* args) + static bool HandleTitlesSetMaskCommand(ChatHandler* handler, char const* args) { if (!*args) return false; diff --git a/src/server/scripts/EasternKingdoms/BlackrockDepths/blackrock_depths.cpp b/src/server/scripts/EasternKingdoms/BlackrockDepths/blackrock_depths.cpp index 7286466d335..263897edfad 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockDepths/blackrock_depths.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockDepths/blackrock_depths.cpp @@ -546,7 +546,7 @@ public: if (player->GetQuestRewardStatus(QUEST_A_BINDING_CONTRACT) != 1 && !player->HasItemCount(ITEM_THRORIUM_BROTHERHOOD_CONTRACT, 1, true) && - player->HasItemCount(ITEM_SULFURON_INGOT, 1)) + player->HasItemCount(ITEM_SULFURON_INGOT)) { player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_GET_CONTRACT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); } diff --git a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_chromaggus.cpp b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_chromaggus.cpp index 25c3f2e41e3..9beb3bb10fe 100644 --- a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_chromaggus.cpp +++ b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_chromaggus.cpp @@ -240,8 +240,8 @@ public: //Affliction_Timer if (Affliction_Timer <= diff) { - std::list<HostileReference*> threatlist = me->getThreatManager().getThreatList(); - for (std::list<HostileReference*>::const_iterator i = threatlist.begin(); i != threatlist.end(); ++i) + ThreatContainer::StorageType threatlist = me->getThreatManager().getThreatList(); + for (ThreatContainer::StorageType::const_iterator i = threatlist.begin(); i != threatlist.end(); ++i) { if ((*i) && (*i)->getSource()) { diff --git a/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.cpp b/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.cpp index 65dc6c37d8a..8f79c4973f7 100644 --- a/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.cpp +++ b/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.cpp @@ -54,15 +54,6 @@ enum BlastmasterEmi SAY_BLASTMASTER_17 = 17, SAY_BLASTMASTER_18 = 18, SAY_BLASTMASTER_19 = 19, - SAY_BLASTMASTER_20 = 20, - SAY_BLASTMASTER_21 = 21, - SAY_BLASTMASTER_22 = 22, - SAY_BLASTMASTER_23 = 23, - SAY_BLASTMASTER_24 = 24, - SAY_BLASTMASTER_25 = 25, - SAY_BLASTMASTER_26 = 26, - SAY_BLASTMASTER_27 = 27, - SAY_BLASTMASTER_28 = 28, SAY_GRUBBIS = 0 }; @@ -304,12 +295,12 @@ public: NextStep(25000, false, 18); break; case 13: - Summon(7); + Summon(6); NextStep(25000, false, 19); break; case 14: SetInFace(false); - Talk(SAY_BLASTMASTER_26); + Talk(SAY_BLASTMASTER_17); SetEscortPaused(true); NextStep(5000, false, 20); break; @@ -372,7 +363,7 @@ public: me->SummonCreature(NPC_CAVERNDEEP_AMBUSHER, SpawnPosition[1], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 1800000); me->SummonCreature(NPC_CAVERNDEEP_AMBUSHER, SpawnPosition[2], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 1800000); me->SummonCreature(NPC_CAVERNDEEP_AMBUSHER, SpawnPosition[3], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 1800000); - Talk(SAY_BLASTMASTER_19); + Talk(SAY_BLASTMASTER_7); break; case 4: if (GameObject* go = me->SummonGameObject(183410, -542.199f, -96.854f, -155.790f, 0, 0, 0, 0, 0, 1000)) @@ -382,39 +373,33 @@ public: } break; case 5: - me->SummonCreature(NPC_CAVERNDEEP_AMBUSHER, SpawnPosition[0], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 1800000); - me->SummonCreature(NPC_CAVERNDEEP_AMBUSHER, SpawnPosition[1], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 1800000); - me->SummonCreature(NPC_CAVERNDEEP_AMBUSHER, SpawnPosition[2], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 1800000); - Talk(SAY_BLASTMASTER_15); - break; - case 6: me->SummonCreature(NPC_CAVERNDEEP_AMBUSHER, SpawnPosition[10], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 1800000); me->SummonCreature(NPC_CAVERNDEEP_AMBUSHER, SpawnPosition[11], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 1800000); me->SummonCreature(NPC_CAVERNDEEP_AMBUSHER, SpawnPosition[12], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 1800000); me->SummonCreature(NPC_CAVERNDEEP_AMBUSHER, SpawnPosition[13], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 1800000); me->SummonCreature(NPC_CAVERNDEEP_AMBUSHER, SpawnPosition[14], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 1800000); break; - case 7: + case 6: if (GameObject* go = me->SummonGameObject(183410, -507.820f, -103.333f, -151.353f, 0, 0, 0, 0, 0, 1000)) { GoSummonList.push_back(go->GetGUID()); go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); //We can't use it! - Summon(6); + Summon(5); } break; - case 8: + case 7: if (GameObject* go = me->SummonGameObject(183410, -511.829f, -86.249f, -151.431f, 0, 0, 0, 0, 0, 1000)) { GoSummonList.push_back(go->GetGUID()); go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); //We can't use it! } break; - case 9: + case 8: if (Creature* grubbis = me->SummonCreature(NPC_GRUBBIS, SpawnPosition[15], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 1800000)) grubbis->AI()->Talk(SAY_GRUBBIS); me->SummonCreature(NPC_CHOMPER, SpawnPosition[16], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 1800000); break; - case 10: + case 9: me->SummonGameObject(GO_RED_ROCKET, SpawnPosition[17].GetPositionX(), SpawnPosition[17].GetPositionY(), SpawnPosition[17].GetPositionZ(), SpawnPosition[17].GetOrientation(), 0, 0, 0, 0, 7200); me->SummonGameObject(GO_RED_ROCKET, SpawnPosition[18].GetPositionX(), SpawnPosition[18].GetPositionY(), SpawnPosition[18].GetPositionZ(), SpawnPosition[18].GetOrientation(), 0, 0, 0, 0, 7200); me->SummonGameObject(GO_RED_ROCKET, SpawnPosition[19].GetPositionX(), SpawnPosition[19].GetPositionY(), SpawnPosition[19].GetPositionZ(), SpawnPosition[19].GetOrientation(), 0, 0, 0, 0, 7200); @@ -475,31 +460,32 @@ public: break; case 10: Summon(4); + Talk(SAY_BLASTMASTER_8); NextStep(0, false); break; case 11: - Talk(SAY_BLASTMASTER_17); + Talk(SAY_BLASTMASTER_9); NextStep(5000, true); break; case 12: - Talk(SAY_BLASTMASTER_18); + Talk(SAY_BLASTMASTER_10); NextStep(5000, true); break; case 13: - Talk(SAY_BLASTMASTER_20); + Talk(SAY_BLASTMASTER_11); CaveDestruction(true); NextStep(8000, true); break; case 14: - Talk(SAY_BLASTMASTER_21); + Talk(SAY_BLASTMASTER_12); NextStep(8500, true); break; case 15: - Talk(SAY_BLASTMASTER_22); + Talk(SAY_BLASTMASTER_13); NextStep(2000, true); break; case 16: - Talk(SAY_BLASTMASTER_23); + Talk(SAY_BLASTMASTER_14); SetInFace(false); if (instance) if (GameObject* go = GameObject::GetGameObject(*me, instance->GetData64(DATA_GO_CAVE_IN_LEFT))) @@ -508,36 +494,36 @@ public: break; case 17: SetEscortPaused(false); - Talk(SAY_BLASTMASTER_24); - Summon(6); + Talk(SAY_BLASTMASTER_15); + Summon(5); NextStep(0, false); break; case 18: - Summon(7); + Summon(6); NextStep(0, false); break; case 19: SetInFace(false); - Summon(8); - Talk(SAY_BLASTMASTER_25); + Summon(7); + Talk(SAY_BLASTMASTER_16); NextStep(0, false); break; case 20: - Talk(SAY_BLASTMASTER_27); + Talk(SAY_BLASTMASTER_18); NextStep(2000, true); break; case 21: - Summon(9); + Summon(8); NextStep(0, false); break; case 22: CaveDestruction(false); - Talk(SAY_BLASTMASTER_20); - NextStep(2000, true); + Talk(SAY_BLASTMASTER_11); + NextStep(3000, true); break; case 23: - Summon(10); - Talk(SAY_BLASTMASTER_28); + Summon(9); + Talk(SAY_BLASTMASTER_19); NextStep(0, false); break; } diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_curator.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_curator.cpp index bf27cad44ef..2c7e1b9c48a 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_curator.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_curator.cpp @@ -187,13 +187,11 @@ public: if (Unit* target = SelectTarget(SELECT_TARGET_TOPAGGRO, 1)) DoCast(target, SPELL_HATEFUL_BOLT); - } else HatefulBoltTimer -= diff; DoMeleeAttackIfReady(); } }; - }; void AddSC_boss_curator() diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_maiden_of_virtue.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_maiden_of_virtue.cpp index 8921867be21..5f974a890bf 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_maiden_of_virtue.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_maiden_of_virtue.cpp @@ -132,9 +132,7 @@ public: DoMeleeAttackIfReady(); } - }; - }; void AddSC_boss_maiden_of_virtue() diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp index ea9cfe5c3c1..7eeced1d970 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp @@ -111,7 +111,6 @@ public: DoScriptText(SAY_DISARMED, me); } }; - }; class boss_midnight : public CreatureScript @@ -232,7 +231,6 @@ public: CAST_AI(boss_attumen::boss_attumenAI, pAttumen->AI())->Midnight = value; } }; - }; void boss_attumen::boss_attumenAI::UpdateAI(const uint32 diff) @@ -284,9 +282,9 @@ void boss_attumen::boss_attumenAI::UpdateAI(const uint32 diff) if (ChargeTimer <= diff) { Unit* target = NULL; - std::list<HostileReference*> t_list = me->getThreatManager().getThreatList(); + ThreatContainer::StorageType const &t_list = me->getThreatManager().getThreatList(); std::vector<Unit*> target_list; - for (std::list<HostileReference*>::const_iterator itr = t_list.begin(); itr!= t_list.end(); ++itr) + for (ThreatContainer::StorageType::const_iterator itr = t_list.begin(); itr != t_list.end(); ++itr) { target = Unit::GetUnit(*me, (*itr)->getUnitGuid()); if (target && !target->IsWithinDist(me, ATTACK_DISTANCE, false)) diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_moroes.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_moroes.cpp index 533a1aac2f0..99f2cb51c85 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_moroes.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_moroes.cpp @@ -307,7 +307,6 @@ public: DoMeleeAttackIfReady(); } }; - }; struct boss_moroes_guestAI : public ScriptedAI @@ -452,7 +451,6 @@ public: } else ShadowWordPain_Timer -= diff; } }; - }; class boss_baron_rafe_dreuger : public CreatureScript @@ -510,7 +508,6 @@ public: } else HammerOfJustice_Timer -= diff; } }; - }; class boss_lady_catriona_von_indi : public CreatureScript @@ -581,7 +578,6 @@ public: } else DispelMagic_Timer -= diff; } }; - }; class boss_lady_keira_berrybuck : public CreatureScript @@ -656,7 +652,6 @@ public: } else Cleanse_Timer -= diff; } }; - }; class boss_lord_robin_daris : public CreatureScript @@ -713,7 +708,6 @@ public: } else WhirlWind_Timer -= diff; } }; - }; class boss_lord_crispin_ference : public CreatureScript @@ -778,7 +772,6 @@ public: } else ShieldWall_Timer -= diff; } }; - }; void AddSC_boss_moroes() diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_netherspite.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_netherspite.cpp index 60e1a5ebc4c..c6587c3cd8a 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_netherspite.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_netherspite.cpp @@ -333,7 +333,6 @@ public: DoMeleeAttackIfReady(); } }; - }; void AddSC_boss_netherspite() diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp index e2420749a4c..690822203b5 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp @@ -413,7 +413,6 @@ public: } } }; - }; void AddSC_boss_nightbane() diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp index f4195620dda..d1c4790d705 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp @@ -169,7 +169,6 @@ public: void Cleanup(); }; - }; class boss_malchezaar : public CreatureScript @@ -314,14 +313,14 @@ public: if (!info) return; - std::list<HostileReference*> t_list = me->getThreatManager().getThreatList(); + ThreatContainer::StorageType const &t_list = me->getThreatManager().getThreatList(); std::vector<Unit*> targets; if (t_list.empty()) return; //begin + 1, so we don't target the one with the highest threat - std::list<HostileReference*>::const_iterator itr = t_list.begin(); + ThreatContainer::StorageType::const_iterator itr = t_list.begin(); std::advance(itr, 1); for (; itr != t_list.end(); ++itr) //store the threat list in a different container if (Unit* target = Unit::GetUnit(*me, (*itr)->getUnitGuid())) @@ -483,14 +482,12 @@ public: { DoCast(me->getVictim(), SPELL_SUNDER_ARMOR); SunderArmorTimer = urand(10000, 18000); - } else SunderArmorTimer -= diff; if (Cleave_Timer <= diff) { DoCast(me->getVictim(), SPELL_CLEAVE); Cleave_Timer = urand(6000, 12000); - } else Cleave_Timer -= diff; } else @@ -602,15 +599,14 @@ public: positions.push_back(point); } }; - }; void netherspite_infernal::netherspite_infernalAI::Cleanup() { - Unit* pMalchezaar = Unit::GetUnit(*me, malchezaar); + Creature *pMalchezaar = Unit::GetCreature(*me, malchezaar); if (pMalchezaar && pMalchezaar->isAlive()) - CAST_AI(boss_malchezaar::boss_malchezaarAI, CAST_CRE(pMalchezaar)->AI())->Cleanup(me, point); + CAST_AI(boss_malchezaar::boss_malchezaarAI, pMalchezaar->AI())->Cleanup(me, point); } void AddSC_boss_malchezaar() diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp index 7dd4e731a18..25fafdfcd0d 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp @@ -187,13 +187,13 @@ public: void FlameWreathEffect() { std::vector<Unit*> targets; - std::list<HostileReference*> t_list = me->getThreatManager().getThreatList(); + ThreatContainer::StorageType const &t_list = me->getThreatManager().getThreatList(); if (t_list.empty()) return; //store the threat list in a different container - for (std::list<HostileReference*>::const_iterator itr = t_list.begin(); itr!= t_list.end(); ++itr) + for (ThreatContainer::StorageType::const_iterator itr = t_list.begin(); itr!= t_list.end(); ++itr) { Unit* target = Unit::GetUnit(*me, (*itr)->getUnitGuid()); //only on alive players @@ -508,7 +508,6 @@ public: } } }; - }; class mob_aran_elemental : public CreatureScript @@ -546,7 +545,6 @@ public: } else CastTimer -= diff; } }; - }; void AddSC_boss_shade_of_aran() diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp index 44cd7e0faea..688a678060f 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp @@ -127,7 +127,6 @@ public: DoMeleeAttackIfReady(); } }; - }; class mob_demon_chain : public CreatureScript @@ -165,7 +164,6 @@ public: } } }; - }; class mob_fiendish_portal : public CreatureScript @@ -200,7 +198,6 @@ public: summons.DespawnAll(); } }; - }; #define SPELL_FIREBOLT 30050 // Blasts a target for 181-209 Fire damage. @@ -245,7 +242,6 @@ public: DoMeleeAttackIfReady(); } }; - }; class boss_terestian_illhoof : public CreatureScript @@ -422,7 +418,6 @@ public: DoMeleeAttackIfReady(); } }; - }; void AddSC_boss_terestian_illhoof() diff --git a/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp b/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp index 30d33dc65cf..a4f4f603206 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp @@ -216,7 +216,6 @@ public: DoMeleeAttackIfReady(); } }; - }; class mob_tito : public CreatureScript @@ -271,7 +270,6 @@ public: DoMeleeAttackIfReady(); } }; - }; void boss_dorothee::boss_dorotheeAI::SummonTito() @@ -398,7 +396,6 @@ public: DoMeleeAttackIfReady(); } }; - }; class boss_tinhead : public CreatureScript @@ -508,7 +505,6 @@ public: DoMeleeAttackIfReady(); } }; - }; class boss_roar : public CreatureScript @@ -617,7 +613,6 @@ public: DoMeleeAttackIfReady(); } }; - }; class boss_crone : public CreatureScript @@ -699,7 +694,6 @@ public: DoMeleeAttackIfReady(); } }; - }; class mob_cyclone : public CreatureScript @@ -743,7 +737,6 @@ public: } else MoveTimer -= diff; } }; - }; /**************************************/ @@ -792,7 +785,6 @@ public: return true; } - }; class boss_bigbadwolf : public CreatureScript @@ -915,10 +907,8 @@ public: DoCast(me->getVictim(), SPELL_WIDE_SWIPE); SwipeTimer = urand(25000, 30000); } else SwipeTimer -= diff; - } }; - }; /**********************************************/ @@ -977,7 +967,7 @@ void PretendToDie(Creature* creature) creature->GetMotionMaster()->MovementExpired(false); creature->GetMotionMaster()->MoveIdle(); creature->SetStandState(UNIT_STAND_STATE_DEAD); -}; +} void Resurrect(Creature* target) { @@ -992,7 +982,7 @@ void Resurrect(Creature* target) } else target->GetMotionMaster()->Initialize(); -}; +} class boss_julianne : public CreatureScript { @@ -1114,7 +1104,6 @@ public: void UpdateAI(const uint32 diff); }; - }; class boss_romulo : public CreatureScript @@ -1321,7 +1310,6 @@ public: DoMeleeAttackIfReady(); } }; - }; void boss_julianne::boss_julianneAI::UpdateAI(const uint32 diff) diff --git a/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp b/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp index 05d6ecf1478..2ecd98cbc4c 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp @@ -288,7 +288,7 @@ public: return 0; } - void Load(const char* chrIn) + void Load(char const* chrIn) { if (!chrIn) { @@ -308,7 +308,6 @@ public: OUT_LOAD_INST_DATA_COMPLETE; } }; - }; void AddSC_instance_karazhan() diff --git a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp index b84fc15d664..3bdfeab30da 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp @@ -321,7 +321,6 @@ public: WipeTimer = 15000; } else WipeTimer -= diff; } - } } }; @@ -344,17 +343,17 @@ public: case GOSSIP_ACTION_INFO_DEF+3: player->CLOSE_GOSSIP_MENU(); pBarnesAI->m_uiEventId = EVENT_OZ; - sLog->outInfo(LOG_FILTER_TSCR, "TSCR: player (GUID " UI64FMTD ") manually set Opera event to EVENT_OZ", player->GetGUID()); + sLog->outInfo(LOG_FILTER_TSCR, "player (GUID " UI64FMTD ") manually set Opera event to EVENT_OZ", player->GetGUID()); break; case GOSSIP_ACTION_INFO_DEF+4: player->CLOSE_GOSSIP_MENU(); pBarnesAI->m_uiEventId = EVENT_HOOD; - sLog->outInfo(LOG_FILTER_TSCR, "TSCR: player (GUID " UI64FMTD ") manually set Opera event to EVENT_HOOD", player->GetGUID()); + sLog->outInfo(LOG_FILTER_TSCR, "player (GUID " UI64FMTD ") manually set Opera event to EVENT_HOOD", player->GetGUID()); break; case GOSSIP_ACTION_INFO_DEF+5: player->CLOSE_GOSSIP_MENU(); pBarnesAI->m_uiEventId = EVENT_RAJ; - sLog->outInfo(LOG_FILTER_TSCR, "TSCR: player (GUID " UI64FMTD ") manually set Opera event to EVENT_RAJ", player->GetGUID()); + sLog->outInfo(LOG_FILTER_TSCR, "player (GUID " UI64FMTD ") manually set Opera event to EVENT_RAJ", player->GetGUID()); break; } @@ -397,7 +396,6 @@ public: { return new npc_barnesAI(creature); } - }; /*### @@ -438,7 +436,6 @@ public: player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID()); return true; } - }; /*### @@ -538,7 +535,7 @@ public: uint32 NextStep(uint32 Step) { - Unit* arca = Unit::GetUnit(*me, ArcanagosGUID); + Creature* arca = Unit::GetCreature(*me, ArcanagosGUID); Map* map = me->GetMap(); switch (Step) { @@ -548,21 +545,21 @@ public: return 10000; case 2: if (arca) - CAST_CRE(arca)->MonsterYell(SAY_DIALOG_ARCANAGOS_2, LANG_UNIVERSAL, 0); + arca->MonsterYell(SAY_DIALOG_ARCANAGOS_2, LANG_UNIVERSAL, 0); return 20000; case 3: me->MonsterYell(SAY_DIALOG_MEDIVH_3, LANG_UNIVERSAL, 0); return 10000; case 4: if (arca) - CAST_CRE(arca)->MonsterYell(SAY_DIALOG_ARCANAGOS_4, LANG_UNIVERSAL, 0); + arca->MonsterYell(SAY_DIALOG_ARCANAGOS_4, LANG_UNIVERSAL, 0); return 20000; case 5: me->MonsterYell(SAY_DIALOG_MEDIVH_5, LANG_UNIVERSAL, 0); return 20000; case 6: if (arca) - CAST_CRE(arca)->MonsterYell(SAY_DIALOG_ARCANAGOS_6, LANG_UNIVERSAL, 0); + arca->MonsterYell(SAY_DIALOG_ARCANAGOS_6, LANG_UNIVERSAL, 0); return 10000; case 7: FireArcanagosTimer = 500; @@ -580,7 +577,7 @@ public: return 1000; case 11: if (arca) - CAST_CRE(arca)->MonsterYell(SAY_DIALOG_ARCANAGOS_8, LANG_UNIVERSAL, 0); + arca->MonsterYell(SAY_DIALOG_ARCANAGOS_8, LANG_UNIVERSAL, 0); return 5000; case 12: arca->GetMotionMaster()->MovePoint(0, -11010.82f, -1761.18f, 156.47f); @@ -613,12 +610,10 @@ public: return 5000; default : return 9999999; } - } void UpdateAI(const uint32 diff) { - if (YellTimer <= diff) { if (EventStarted) @@ -645,7 +640,6 @@ public: } } }; - }; void AddSC_karazhan() diff --git a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.h b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.h index e1817034189..c8a1aa55c7e 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.h +++ b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.h @@ -64,4 +64,3 @@ enum OperaEvents #define ERROR_INST_DATA(a) sLog->outError(LOG_FILTER_TSCR, "Instance Data for Karazhan not set properly. Encounter for Creature Entry %u may not work properly.", a->GetEntry()); #endif - diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp index bd79cbba628..e21a84d9499 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp @@ -189,20 +189,20 @@ public: ScriptedAI::MoveInLineOfSight(who); } - void SetThreatList(Creature* SummonedUnit) + void SetThreatList(Creature* summonedUnit) { - if (!SummonedUnit) + if (!summonedUnit) return; - std::list<HostileReference*>& m_threatlist = me->getThreatManager().getThreatList(); - std::list<HostileReference*>::const_iterator i = m_threatlist.begin(); - for (i = m_threatlist.begin(); i != m_threatlist.end(); ++i) + ThreatContainer::StorageType const &threatlist = me->getThreatManager().getThreatList(); + ThreatContainer::StorageType::const_iterator i = threatlist.begin(); + for (i = threatlist.begin(); i != threatlist.end(); ++i) { Unit* unit = Unit::GetUnit(*me, (*i)->getUnitGuid()); if (unit && unit->isAlive()) { float threat = me->getThreatManager().getThreat(unit); - SummonedUnit->AddThreat(unit, threat); + summonedUnit->AddThreat(unit, threat); } } } @@ -212,9 +212,9 @@ public: float x = KaelLocations[0][0]; float y = KaelLocations[0][1]; me->SetPosition(x, y, LOCATION_Z, 0.0f); - //me->SendMonsterMove(x, y, LOCATION_Z, 0, 0, 0); // causes some issues... - std::list<HostileReference*>::const_iterator i = me->getThreatManager().getThreatList().begin(); - for (i = me->getThreatManager().getThreatList().begin(); i!= me->getThreatManager().getThreatList().end(); ++i) + ThreatContainer::StorageType threatlist = me->getThreatManager().getThreatList(); + ThreatContainer::StorageType::const_iterator i = threatlist.begin(); + for (i = threatlist.begin(); i != threatlist.end(); ++i) { Unit* unit = Unit::GetUnit(*me, (*i)->getUnitGuid()); if (unit && (unit->GetTypeId() == TYPEID_PLAYER)) @@ -225,8 +225,9 @@ public: void CastGravityLapseKnockUp() { - std::list<HostileReference*>::const_iterator i = me->getThreatManager().getThreatList().begin(); - for (i = me->getThreatManager().getThreatList().begin(); i!= me->getThreatManager().getThreatList().end(); ++i) + ThreatContainer::StorageType threatlist = me->getThreatManager().getThreatList(); + ThreatContainer::StorageType::const_iterator i = threatlist.begin(); + for (i = threatlist.begin(); i != threatlist.end(); ++i) { Unit* unit = Unit::GetUnit(*me, (*i)->getUnitGuid()); if (unit && (unit->GetTypeId() == TYPEID_PLAYER)) @@ -237,8 +238,9 @@ public: void CastGravityLapseFly() // Use Fly Packet hack for now as players can't cast "fly" spells unless in map 530. Has to be done a while after they get knocked into the air... { - std::list<HostileReference*>::const_iterator i = me->getThreatManager().getThreatList().begin(); - for (i = me->getThreatManager().getThreatList().begin(); i!= me->getThreatManager().getThreatList().end(); ++i) + ThreatContainer::StorageType threatlist = me->getThreatManager().getThreatList(); + ThreatContainer::StorageType::const_iterator i = threatlist.begin(); + for (i = threatlist.begin(); i != threatlist.end(); ++i) { Unit* unit = Unit::GetUnit(*me, (*i)->getUnitGuid()); if (unit && (unit->GetTypeId() == TYPEID_PLAYER)) @@ -257,8 +259,9 @@ public: void RemoveGravityLapse() { - std::list<HostileReference*>::const_iterator i = me->getThreatManager().getThreatList().begin(); - for (i = me->getThreatManager().getThreatList().begin(); i!= me->getThreatManager().getThreatList().end(); ++i) + ThreatContainer::StorageType threatlist = me->getThreatManager().getThreatList(); + ThreatContainer::StorageType::const_iterator i = threatlist.begin(); + for (i = threatlist.begin(); i != threatlist.end(); ++i) { Unit* unit = Unit::GetUnit(*me, (*i)->getUnitGuid()); if (unit && (unit->GetTypeId() == TYPEID_PLAYER)) @@ -306,7 +309,6 @@ public: if (PhoenixTimer <= diff) { - Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1); uint8 random = urand(1, 2); @@ -410,7 +412,6 @@ public: Orb->AddThreat(target, 1000000.0f); Orb->AI()->AttackStart(target); } - } DoCast(me, SPELL_GRAVITY_LAPSE_CHANNEL); @@ -431,7 +432,6 @@ public: } } }; - }; class mob_felkael_flamestrike : public CreatureScript @@ -473,7 +473,6 @@ public: } else FlameStrikeTimer -= diff; } }; - }; class mob_felkael_phoenix : public CreatureScript @@ -522,7 +521,6 @@ public: { damage = 0; return; - } //Don't really die in all phases of Kael'Thas if (instance && instance->GetData(DATA_KAELTHAS_EVENT) == 0) @@ -544,9 +542,7 @@ public: me->GetMotionMaster()->Clear(); me->GetMotionMaster()->MoveIdle(); me->SetStandState(UNIT_STAND_STATE_DEAD); - } - } void JustDied(Unit* /*killer*/) @@ -556,7 +552,6 @@ public: void UpdateAI(const uint32 diff) { - //If we are fake death, we cast revbirth and after that we kill the phoenix to spawn the egg. if (FakeDeath) { @@ -568,7 +563,6 @@ public: if (Rebirth) { - if (Death_Timer <= diff) { me->SummonCreature(CREATURE_PHOENIX_EGG, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 45000); @@ -576,7 +570,6 @@ public: Rebirth = false; } else Death_Timer -= diff; } - } if (!UpdateVictim()) @@ -593,7 +586,6 @@ public: DoMeleeAttackIfReady(); } }; - }; class mob_felkael_phoenix_egg : public CreatureScript @@ -627,10 +619,8 @@ public: me->SummonCreature(CREATURE_PHOENIX, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 60000); me->Kill(me); } else HatchTimer -= diff; - } }; - }; class mob_arcane_sphere : public CreatureScript @@ -687,7 +677,6 @@ public: } else ChangeTargetTimer -= diff; } }; - }; void AddSC_boss_felblood_kaelthas() diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp index 7ce9b08845f..2af417381a5 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp @@ -331,7 +331,6 @@ public: DoMeleeAttackIfReady(); } }; - }; enum eHealingPotion @@ -574,7 +573,6 @@ public: DoMeleeAttackIfReady(); } }; - }; enum eWarlockSpells @@ -671,7 +669,6 @@ public: DoMeleeAttackIfReady(); } }; - }; enum eKickDown @@ -728,7 +725,6 @@ public: DoMeleeAttackIfReady(); } }; - }; enum eMageSpells @@ -835,8 +831,8 @@ public: if (Blink_Timer <= diff) { bool InMeleeRange = false; - std::list<HostileReference*>& t_list = me->getThreatManager().getThreatList(); - for (std::list<HostileReference*>::const_iterator itr = t_list.begin(); itr!= t_list.end(); ++itr) + ThreatContainer::StorageType const &t_list = me->getThreatManager().getThreatList(); + for (ThreatContainer::StorageType::const_iterator itr = t_list.begin(); itr!= t_list.end(); ++itr) { if (Unit* target = Unit::GetUnit(*me, (*itr)->getUnitGuid())) { @@ -859,7 +855,6 @@ public: DoMeleeAttackIfReady(); } }; - }; enum eWarriorSpells @@ -922,8 +917,8 @@ public: if (Intercept_Stun_Timer <= diff) { bool InMeleeRange = false; - std::list<HostileReference*>& t_list = me->getThreatManager().getThreatList(); - for (std::list<HostileReference*>::const_iterator itr = t_list.begin(); itr!= t_list.end(); ++itr) + ThreatContainer::StorageType const &t_list = me->getThreatManager().getThreatList(); + for (ThreatContainer::StorageType::const_iterator itr = t_list.begin(); itr!= t_list.end(); ++itr) { if (Unit* target = Unit::GetUnit(*me, (*itr)->getUnitGuid())) { @@ -979,7 +974,6 @@ public: DoMeleeAttackIfReady(); } }; - }; enum eHunterSpells @@ -1103,7 +1097,6 @@ public: } } }; - }; enum Spells @@ -1203,7 +1196,6 @@ public: DoMeleeAttackIfReady(); } }; - }; enum eEngineerSpells @@ -1298,7 +1290,6 @@ public: DoMeleeAttackIfReady(); } }; - }; /* diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp index 82ad3ee2630..430bbb79bde 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp @@ -105,20 +105,20 @@ public: for (std::list<uint64>::const_iterator itr = Crystals.begin(); itr != Crystals.end(); ++itr) { //Unit* unit = Unit::GetUnit(*me, FelCrystals[i]); - Unit* unit = Unit::GetUnit(*me, *itr); - if (unit) + if (Creature *creature = Unit::GetCreature(*me, *itr)) { - if (!unit->isAlive()) - CAST_CRE(unit)->Respawn(); // Let the core handle setting death state, etc. + if (!creature->isAlive()) + creature->Respawn(); // Let the core handle setting death state, etc. // Only need to set unselectable flag. You can't attack unselectable units so non_attackable flag is not necessary here. - unit->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); } } instance->HandleGameObject(instance->GetData64(DATA_SELIN_ENCOUNTER_DOOR), true); // Open the big encounter door. Close it in Aggro and open it only in JustDied(and here) - // Small door opened after event are expected to be closed by default + // Small door opened after event are expected to be closed by default + // Set Inst data for encounter instance->SetData(DATA_SELIN_EVENT, NOT_STARTED); } else sLog->outError(LOG_FILTER_TSCR, ERROR_INST_DATA); @@ -291,7 +291,6 @@ public: DrainCrystalTimer = urand(20000, 25000); } else DrainCrystalTimer -= diff; } - }else { if (IsDraining) @@ -319,7 +318,6 @@ public: DoMeleeAttackIfReady(); // No need to check if we are draining crystal here, as the spell has a stun. } }; - }; class mob_fel_crystal : public CreatureScript @@ -365,7 +363,6 @@ public: } else sLog->outError(LOG_FILTER_TSCR, ERROR_INST_DATA); } }; - }; void AddSC_boss_selin_fireheart() diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp index b5cf443c5a5..34682683ee3 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp @@ -192,7 +192,6 @@ public: DoMeleeAttackIfReady(); } }; - }; class mob_pure_energy : public CreatureScript @@ -224,7 +223,6 @@ public: void MoveInLineOfSight(Unit* /*who*/) {} void AttackStart(Unit* /*who*/) {} }; - }; void AddSC_boss_vexallus() diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp index cd2874f7253..da8b24c3985 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp @@ -262,7 +262,6 @@ public: return 0; } }; - }; void AddSC_instance_magisters_terrace() diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.cpp index 69e0e5bff40..64b6c8d75b2 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.cpp @@ -140,14 +140,14 @@ public: if (lList.isEmpty()) return; - SpellInfo const* pSpell = sSpellMgr->GetSpellInfo(SPELL_ORB_KILL_CREDIT); + SpellInfo const* spell = sSpellMgr->GetSpellInfo(SPELL_ORB_KILL_CREDIT); for (Map::PlayerList::const_iterator i = lList.begin(); i != lList.end(); ++i) { if (Player* player = i->getSource()) { - if (pSpell && pSpell->Effects[0].MiscValue) - player->KilledMonsterCredit(pSpell->Effects[0].MiscValue, 0); + if (spell && spell->Effects[0].MiscValue) + player->KilledMonsterCredit(spell->Effects[0].MiscValue, 0); } } } @@ -170,7 +170,6 @@ public: } } }; - }; void AddSC_magisters_terrace() diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.h b/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.h index 78aa14b9102..660e58d325a 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.h +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.h @@ -20,7 +20,6 @@ #define DEF_MAGISTERS_TERRACE_H #define ERROR_INST_DATA "TSCR Error: Instance Data not set properly for Magister's Terrace instance (map 585). Encounters will be buggy." -#endif enum Data { @@ -47,3 +46,5 @@ enum Data DATA_ESCAPE_ORB = 16 }; + +#endif diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp index ca91fb920b1..5e7fa111a7b 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp @@ -46,7 +46,7 @@ uint32 RandomLaugh[] = {11965, 11975, 11976}; enum Entry { HH_MOUNTED = 23682, - HH_DISMOUNTED = 23800, // unhorsed?? wtf type of engrish was that? + HH_DISMOUNTED = 23800, HEAD = 23775, PULSING_PUMPKIN = 23694, PUMPKIN_FIEND = 23545, @@ -127,7 +127,7 @@ static Locations Spawn[]= {1765.28f, 1347.46f, 17.55f} //spawn point for smoke }; -static const char* Text[]= +static char const* Text[]= { "Horseman rise...", "Your time is nigh...", @@ -592,8 +592,8 @@ public: caster->GetMotionMaster()->Clear(false); caster->GetMotionMaster()->MoveFollow(me, 6, float(urand(0, 5))); //DoResetThreat();//not sure if need - std::list<HostileReference*>::const_iterator itr; - for (itr = caster->getThreatManager().getThreatList().begin(); itr != caster->getThreatManager().getThreatList().end(); ++itr) + ThreatContainer::StorageType threatlist = caster->getThreatManager().getThreatList(); + for (ThreatContainer::StorageType::const_iterator itr = threatlist.begin(); itr != threatlist.end(); ++itr) { Unit* unit = Unit::GetUnit(*me, (*itr)->getUnitGuid()); if (unit && unit->isAlive() && unit != caster) diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_herod.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_herod.cpp index 59244585ecf..dbbbb7fb0dd 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_herod.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_herod.cpp @@ -153,12 +153,7 @@ public: uint32 Start_Timer; void Reset() {} - - void WaypointReached(uint32 /*waypointId*/) - { - - } - + void WaypointReached(uint32 /*waypointId*/) {} void EnterCombat(Unit* /*who*/) {} void UpdateAI(const uint32 diff) diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp index e40a48d0251..c763cb69dec 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp @@ -344,7 +344,6 @@ public: DoMeleeAttackIfReady(); } }; - }; void AddSC_boss_brutallus() diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp index e7b0e86285e..34548ec9116 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp @@ -121,13 +121,12 @@ public: if (instance) { - Unit* Temp = Unit::GetUnit(*me, instance->GetData64(DATA_ALYTHESS)); - if (Temp) + if (Creature *temp = Unit::GetCreature(*me, instance->GetData64(DATA_ALYTHESS))) { - if (Temp->isDead()) - CAST_CRE(Temp)->Respawn(); - else if (Temp->getVictim()) - me->getThreatManager().addThreat(Temp->getVictim(), 0.0f); + if (temp->isDead()) + temp->Respawn(); + else if (temp->getVictim()) + me->getThreatManager().addThreat(temp->getVictim(), 0.0f); } } @@ -153,9 +152,9 @@ public: if (instance) { - Unit* Temp = Unit::GetUnit(*me, instance->GetData64(DATA_ALYTHESS)); - if (Temp && Temp->isAlive() && !(Temp->getVictim())) - CAST_CRE(Temp)->AI()->AttackStart(who); + Creature *temp = Unit::GetCreature(*me, instance->GetData64(DATA_ALYTHESS)); + if (temp && temp->isAlive() && !temp->getVictim()) + temp->AI()->AttackStart(who); } if (instance) @@ -341,7 +340,6 @@ public: } } }; - }; class boss_alythess : public CreatureScript @@ -383,13 +381,12 @@ public: if (instance) { - Unit* Temp = Unit::GetUnit(*me, instance->GetData64(DATA_SACROLASH)); - if (Temp) + if (Creature *temp = Unit::GetCreature((*me), instance->GetData64(DATA_SACROLASH))) { - if (Temp->isDead()) - CAST_CRE(Temp)->Respawn(); - else if (Temp->getVictim()) - me->getThreatManager().addThreat(Temp->getVictim(), 0.0f); + if (temp->isDead()) + temp->Respawn(); + else if (temp->getVictim()) + me->getThreatManager().addThreat(temp->getVictim(), 0.0f); } } @@ -416,9 +413,9 @@ public: if (instance) { - Unit* Temp = Unit::GetUnit(*me, instance->GetData64(DATA_SACROLASH)); - if (Temp && Temp->isAlive() && !(Temp->getVictim())) - CAST_CRE(Temp)->AI()->AttackStart(who); + Creature *temp = Unit::GetCreature(*me, instance->GetData64(DATA_SACROLASH)); + if (temp && temp->isAlive() && !temp->getVictim()) + temp->AI()->AttackStart(who); } if (instance) @@ -480,7 +477,6 @@ public: { switch (spell->Id) { - case SPELL_BLAZE: target->CastSpell(target, SPELL_BLAZE_SUMMON, true); case SPELL_CONFLAGRATION: @@ -670,7 +666,6 @@ public: } else EnrageTimer -= diff; } }; - }; class mob_shadow_image : public CreatureScript @@ -705,7 +700,6 @@ public: { switch (spell->Id) { - case SPELL_SHADOW_FURY: case SPELL_DARK_STRIKE: if (!target->HasAura(SPELL_DARK_FLAME)) @@ -752,7 +746,6 @@ public: } else DarkstrikeTimer -= diff; } }; - }; void AddSC_boss_eredar_twins() diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp index 7267c4e1bdb..bc841d76714 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp @@ -512,7 +512,6 @@ public: } } }; - }; class mob_felmyst_vapor : public CreatureScript @@ -545,7 +544,6 @@ public: AttackStart(target); } }; - }; class mob_felmyst_trail : public CreatureScript @@ -573,7 +571,6 @@ public: void MoveInLineOfSight(Unit* /*who*/) {} void UpdateAI(const uint32 /*diff*/) {} }; - }; void AddSC_boss_felmyst() diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp index 57e69238816..3e503a547d8 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp @@ -304,11 +304,20 @@ public: if (SpectralBlastTimer <= diff) { - std::list<HostileReference*> &m_threatlist = me->getThreatManager().getThreatList(); + ThreatContainer::StorageType const& m_threatlist = me->getThreatManager().getThreatList(); std::list<Unit*> targetList; - for (std::list<HostileReference*>::const_iterator itr = m_threatlist.begin(); itr!= m_threatlist.end(); ++itr) - if ((*itr)->getTarget() && (*itr)->getTarget()->GetTypeId() == TYPEID_PLAYER && (*itr)->getTarget()->GetGUID() != me->getVictim()->GetGUID() && !(*itr)->getTarget()->HasAura(AURA_SPECTRAL_EXHAUSTION) && (*itr)->getTarget()->GetPositionZ() > me->GetPositionZ()-5) - targetList.push_back((*itr)->getTarget()); + for (ThreatContainer::StorageType::const_iterator itr = m_threatlist.begin(); itr!= m_threatlist.end(); ++itr) + { + Unit* target = (*itr)->getTarget(); + if (target + && target->GetTypeId() == TYPEID_PLAYER + && target->GetGUID() != me->getVictim()->GetGUID() + && target->GetPositionZ() > me->GetPositionZ() - 5 + && !target->HasAura(AURA_SPECTRAL_EXHAUSTION)) + { + targetList.push_back(target); + } + } if (targetList.empty()) { SpectralBlastTimer = 1000; @@ -431,7 +440,6 @@ public: } } }; - }; class boss_kalec : public CreatureScript @@ -533,7 +541,6 @@ public: DoMeleeAttackIfReady(); } }; - }; class kalecgos_teleporter : public GameObjectScript @@ -561,7 +568,6 @@ public: player->CastSpell(player, SPELL_TELEPORT_SPECTRAL, true); return true; } - }; class boss_sathrovarr : public CreatureScript @@ -761,15 +767,12 @@ public: if (ResetThreat <= diff) { - for (std::list<HostileReference*>::const_iterator itr = me->getThreatManager().getThreatList().begin(); itr != me->getThreatManager().getThreatList().end(); ++itr) + ThreatContainer::StorageType threatlist = me->getThreatManager().getThreatList(); + for (ThreatContainer::StorageType::const_iterator itr = threatlist.begin(); itr != threatlist.end(); ++itr) { if (Unit* unit = Unit::GetUnit(*me, (*itr)->getUnitGuid())) - { - if (unit->GetPositionZ() > me->GetPositionZ()+5) - { + if (unit->GetPositionZ() > me->GetPositionZ() + 5) me->getThreatManager().modifyThreatPercent(unit, -100); - } - } } ResetThreat = 1000; } else ResetThreat -= diff; @@ -799,7 +802,6 @@ public: DoMeleeAttackIfReady(); } }; - }; void AddSC_boss_kalecgos() diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp index e368124abaf..096f6daaec2 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp @@ -367,7 +367,6 @@ public: } } }; - }; class go_orb_of_the_blue_flight : public GameObjectScript @@ -391,7 +390,6 @@ public: } return true; } - }; //AI for Kil'jaeden Event Controller @@ -492,7 +490,6 @@ public: } } }; - }; //AI for Kil'jaeden @@ -900,7 +897,6 @@ public: } } }; - }; //AI for Hand of the Deceiver @@ -987,8 +983,8 @@ public: { if (Creature* pPortal = DoSpawnCreature(CREATURE_FELFIRE_PORTAL, 0, 0, 0, 0, TEMPSUMMON_TIMED_DESPAWN, 20000)) { - std::list<HostileReference*>::iterator itr; - for (itr = me->getThreatManager().getThreatList().begin(); itr != me->getThreatManager().getThreatList().end(); ++itr) + ThreatContainer::StorageType const &threatlist = me->getThreatManager().getThreatList(); + for (ThreatContainer::StorageType::const_iterator itr = threatlist.begin(); itr != threatlist.end(); ++itr) { Unit* unit = Unit::GetUnit(*me, (*itr)->getUnitGuid()); if (unit) @@ -1001,7 +997,6 @@ public: DoMeleeAttackIfReady(); } }; - }; //AI for Felfire Portal @@ -1046,7 +1041,6 @@ public: } else uiSpawnFiendTimer -= diff; } }; - }; //AI for Felfire Fiend @@ -1104,7 +1098,6 @@ public: } } }; - }; //AI for Armageddon target @@ -1159,7 +1152,6 @@ public: } else uiTimer -=diff; } }; - }; //AI for Shield Orbs @@ -1247,7 +1239,6 @@ public: bPointReached = true; } }; - }; //AI for Sinister Reflection @@ -1310,7 +1301,8 @@ public: } } - switch (victimClass) { + switch (victimClass) + { case CLASS_DRUID: if (uiTimer[1] <= diff) { @@ -1411,13 +1403,12 @@ public: } DoMeleeAttackIfReady(); break; - } - sLog->outDebug(LOG_FILTER_TSCR, "Sinister-Timer"); - for (uint8 i = 0; i < 3; ++i) - uiTimer[i] -= diff; } + sLog->outDebug(LOG_FILTER_TSCR, "Sinister-Timer"); + for (uint8 i = 0; i < 3; ++i) + uiTimer[i] -= diff; + } }; - }; void AddSC_boss_kiljaeden() diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp index c00ab84b567..9fd0a5eb5d8 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp @@ -199,7 +199,6 @@ public: DoMeleeAttackIfReady(); } }; - }; class boss_muru : public CreatureScript @@ -364,7 +363,6 @@ public: } } }; - }; class npc_muru_portal : public CreatureScript @@ -448,7 +446,6 @@ public: } else SummonTimer -= diff; } }; - }; class npc_dark_fiend : public CreatureScript @@ -500,7 +497,6 @@ public: } else { - if (me->IsWithinDist(me->getVictim(), 5)) { DoCastAOE(SPELL_DARKFIEND_AOE, false); @@ -511,7 +507,6 @@ public: } else WaitTimer -= diff; } }; - }; class npc_void_sentinel : public CreatureScript @@ -567,7 +562,6 @@ public: DoMeleeAttackIfReady(); } }; - }; class npc_blackhole : public CreatureScript @@ -646,7 +640,6 @@ public: else DespawnTimer -= diff; } }; - }; void AddSC_boss_muru() diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp index 6324c5adf16..bea73837304 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp @@ -134,8 +134,9 @@ public: return player; } } + else + sLog->outDebug(LOG_FILTER_TSCR, "Instance Sunwell Plateau: GetPlayerInMap, but PlayerList is empty!"); - sLog->outDebug(LOG_FILTER_TSCR, "Instance Sunwell Plateau: GetPlayerInMap, but PlayerList is empty!"); return NULL; } @@ -281,7 +282,7 @@ public: return stream.str(); } - void Load(const char* in) + void Load(char const* in) { if (!in) { @@ -299,7 +300,6 @@ public: OUT_LOAD_INST_DATA_COMPLETE; } }; - }; void AddSC_instance_sunwell_plateau() diff --git a/src/server/scripts/EasternKingdoms/blasted_lands.cpp b/src/server/scripts/EasternKingdoms/blasted_lands.cpp index 3d8e68dfbf8..75109f3a2f6 100644 --- a/src/server/scripts/EasternKingdoms/blasted_lands.cpp +++ b/src/server/scripts/EasternKingdoms/blasted_lands.cpp @@ -60,7 +60,7 @@ public: bool OnGossipHello(Player* player, Creature* creature) { - if (player->GetQuestStatus(3628) == QUEST_STATUS_INCOMPLETE && player->HasItemCount(10757, 1)) + if (player->GetQuestStatus(3628) == QUEST_STATUS_INCOMPLETE && player->HasItemCount(10757)) player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_USHER, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID()); diff --git a/src/server/scripts/Events/CMakeLists.txt b/src/server/scripts/Events/CMakeLists.txt new file mode 100644 index 00000000000..d8be052d645 --- /dev/null +++ b/src/server/scripts/Events/CMakeLists.txt @@ -0,0 +1,17 @@ +# Copyright (C) 2008-2011 TrinityCore <http://www.trinitycore.org/> +# +# This file is free software; as a special exception the author gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +set(scripts_STAT_SRCS + ${scripts_STAT_SRCS} + Events/childrens_week.cpp + Events/event.cpp +) + +message(" -> Prepared: Events") diff --git a/src/server/scripts/Events/childrens_week.cpp b/src/server/scripts/Events/childrens_week.cpp new file mode 100644 index 00000000000..763961271d8 --- /dev/null +++ b/src/server/scripts/Events/childrens_week.cpp @@ -0,0 +1,1049 @@ +/* +* Copyright (C) 2008-2012 TrinityCore <http://www.trinitycore.org/> +* +* 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 <http://www.gnu.org/licenses/>. +*/ + +#include "ScriptMgr.h" +#include "ScriptedCreature.h" +#include "SpellAuras.h" + +enum Orphans +{ + ORPHAN_ORACLE = 33533, + ORPHAN_WOLVAR = 33532, + ORPHAN_BLOOD_ELF = 22817, + ORPHAN_DRAENEI = 22818, + ORPHAN_HUMAN = 14305, + ORPHAN_ORCISH = 14444, +}; + +enum Texts +{ + TEXT_ORACLE_ORPHAN_1 = 1, + TEXT_ORACLE_ORPHAN_2 = 2, + TEXT_ORACLE_ORPHAN_3 = 3, + TEXT_ORACLE_ORPHAN_4 = 4, + TEXT_ORACLE_ORPHAN_5 = 5, + TEXT_ORACLE_ORPHAN_6 = 6, + TEXT_ORACLE_ORPHAN_7 = 7, + TEXT_ORACLE_ORPHAN_8 = 8, + TEXT_ORACLE_ORPHAN_9 = 9, + TEXT_ORACLE_ORPHAN_10 = 10, + TEXT_ORACLE_ORPHAN_11 = 11, + TEXT_ORACLE_ORPHAN_12 = 12, + TEXT_ORACLE_ORPHAN_13 = 13, + TEXT_ORACLE_ORPHAN_14 = 14, + + TEXT_WOLVAR_ORPHAN_1 = 1, + TEXT_WOLVAR_ORPHAN_2 = 2, + TEXT_WOLVAR_ORPHAN_3 = 3, + TEXT_WOLVAR_ORPHAN_4 = 4, + TEXT_WOLVAR_ORPHAN_5 = 5, + // 6 - 9 used in Nesingwary script + TEXT_WOLVAR_ORPHAN_10 = 10, + TEXT_WOLVAR_ORPHAN_11 = 11, + TEXT_WOLVAR_ORPHAN_12 = 12, + TEXT_WOLVAR_ORPHAN_13 = 13, + + TEXT_WINTERFIN_PLAYMATE_1 = 1, + TEXT_WINTERFIN_PLAYMATE_2 = 2, + + TEXT_SNOWFALL_GLADE_PLAYMATE_1 = 1, + TEXT_SNOWFALL_GLADE_PLAYMATE_2 = 2, + + TEXT_SOO_ROO_1 = 1, + TEXT_ELDER_KEKEK_1 = 1, + + TEXT_ALEXSTRASZA_2 = 2, + TEXT_KRASUS_8 = 8, +}; + +enum Quests +{ + QUEST_PLAYMATE_WOLVAR = 13951, + QUEST_PLAYMATE_ORACLE = 13950, + QUEST_THE_BIGGEST_TREE_EVER = 13929, + QUEST_THE_BRONZE_DRAGONSHRINE_ORACLE = 13933, + QUEST_THE_BRONZE_DRAGONSHRINE_WOLVAR = 13934, + QUEST_MEETING_A_GREAT_ONE = 13956, + QUEST_THE_MIGHTY_HEMET_NESINGWARY = 13957, + QUEST_DOWN_AT_THE_DOCKS = 910, + QUEST_GATEWAY_TO_THE_FRONTIER = 911, + QUEST_BOUGHT_OF_ETERNALS = 1479, + QUEST_SPOOKY_LIGHTHOUSE = 1687, + QUEST_STONEWROUGHT_DAM = 1558, + QUEST_DARK_PORTAL_H = 10951, + QUEST_DARK_PORTAL_A = 10952, + QUEST_LORDAERON_THRONE_ROOM = 1800, + QUEST_AUCHINDOUN_AND_THE_RING = 10950, + QUEST_TIME_TO_VISIT_THE_CAVERNS_H = 10963, + QUEST_TIME_TO_VISIT_THE_CAVERNS_A = 10962, + QUEST_THE_SEAT_OF_THE_NARUU = 10956, + QUEST_CALL_ON_THE_FARSEER = 10968, + QUEST_JHEEL_IS_AT_AERIS_LANDING = 10954, + QUEST_HCHUU_AND_THE_MUSHROOM_PEOPLE = 10945, + QUEST_VISIT_THE_THRONE_OF_ELEMENTS = 10953, + QUEST_NOW_WHEN_I_GROW_UP = 11975, + QUEST_HOME_OF_THE_BEAR_MEN = 13930, + QUEST_THE_DRAGON_QUEEN_ORACLE = 13954, + QUEST_THE_DRAGON_QUEEN_WOLVAR = 13955, +}; + +enum Areatriggers +{ + AT_DOWN_AT_THE_DOCKS = 3551, + AT_GATEWAY_TO_THE_FRONTIER = 3549, + AT_LORDAERON_THRONE_ROOM = 3547, + AT_BOUGHT_OF_ETERNALS = 3546, + AT_SPOOKY_LIGHTHOUSE = 3552, + AT_STONEWROUGHT_DAM = 3548, + AT_DARK_PORTAL = 4356, + + NPC_CAVERNS_OF_TIME_CW_TRIGGER = 22872, + NPC_EXODAR_01_CW_TRIGGER = 22851, + NPC_EXODAR_02_CW_TRIGGER = 22905, + NPC_AERIS_LANDING_CW_TRIGGER = 22838, + NPC_AUCHINDOUN_CW_TRIGGER = 22831, + NPC_SPOREGGAR_CW_TRIGGER = 22829, + NPC_THRONE_OF_ELEMENTS_CW_TRIGGER = 22839, + NPC_SILVERMOON_01_CW_TRIGGER = 22866, + NPC_KRASUS = 27990, +}; + +enum Misc +{ + SPELL_SNOWBALL = 21343, + SPELL_ORPHAN_OUT = 58818, + + DISPLAY_INVISIBLE = 11686, +}; + +uint64 getOrphanGUID(Player* player, uint32 orphan) +{ + if (Aura* orphanOut = player->GetAura(SPELL_ORPHAN_OUT)) + if (orphanOut->GetCaster() && orphanOut->GetCaster()->GetEntry() == orphan) + return orphanOut->GetCaster()->GetGUID(); + + return 0; +} + +/*###### +## npc_winterfin_playmate +######*/ +class npc_winterfin_playmate : public CreatureScript +{ + public: + npc_winterfin_playmate() : CreatureScript("npc_winterfin_playmate") {} + + struct npc_winterfin_playmateAI : public ScriptedAI + { + npc_winterfin_playmateAI(Creature* creature) : ScriptedAI (creature) {} + + void Reset() + { + timer = 0; + phase = 0; + playerGUID = 0; + orphanGUID = 0; + } + + void MoveInLineOfSight(Unit* who) + { + if (!phase && who && who->GetDistance2d(me) < 10.0f) + if (Player* player = who->ToPlayer()) + if (player->GetQuestStatus(QUEST_PLAYMATE_ORACLE) == QUEST_STATUS_INCOMPLETE) + { + playerGUID = player->GetGUID(); + if ((orphanGUID = getOrphanGUID(player, ORPHAN_ORACLE))) + phase = 1; + } + } + + void UpdateAI(const uint32 diff) + { + if (!phase) + return; + + if (timer <= diff) + { + Player* player = Player::GetPlayer(*me, playerGUID); + Creature* orphan = Creature::GetCreature(*me, orphanGUID); + + if (!orphan || !player) + { + Reset(); + return; + } + + switch(phase) + { + case 1: + orphan->GetMotionMaster()->MovePoint(0, me->GetPositionX() + cos(me->GetOrientation()) * 5,me->GetPositionY() + sin(me->GetOrientation()) * 5, me->GetPositionZ()); + orphan->AI()->Talk(TEXT_ORACLE_ORPHAN_1); + timer = 3000; + break; + case 2: + orphan->SetFacingToObject(me); + Talk(TEXT_WINTERFIN_PLAYMATE_1); + me->HandleEmoteCommand(EMOTE_STATE_DANCE); + timer = 3000; + break; + case 3: + orphan->AI()->Talk(TEXT_ORACLE_ORPHAN_2); + timer = 3000; + break; + case 4: + Talk(TEXT_WINTERFIN_PLAYMATE_2); + timer = 5000; + break; + case 5: + orphan->AI()->Talk(TEXT_ORACLE_ORPHAN_3); + me->HandleEmoteCommand(EMOTE_STATE_NONE); + player->GroupEventHappens(QUEST_PLAYMATE_ORACLE, me); + orphan->GetMotionMaster()->MoveFollow(player, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE); + Reset(); + return; + } + ++phase; + } + else + timer -= diff; + } + + private: + uint32 timer; + int8 phase; + uint64 playerGUID; + uint64 orphanGUID; + + }; + + CreatureAI* GetAI(Creature* creature) const + { + return new npc_winterfin_playmateAI(creature); + } +}; + +/*###### +## npc_snowfall_glade_playmate +######*/ +class npc_snowfall_glade_playmate : public CreatureScript +{ + public: + npc_snowfall_glade_playmate() : CreatureScript("npc_snowfall_glade_playmate") {} + + struct npc_snowfall_glade_playmateAI : public ScriptedAI + { + npc_snowfall_glade_playmateAI(Creature* creature) : ScriptedAI (creature) {} + + void Reset() + { + timer = 0; + phase = 0; + playerGUID = 0; + orphanGUID = 0; + } + + void MoveInLineOfSight(Unit* who) + { + if (!phase && who && who->GetDistance2d(me) < 10.0f) + if (Player* player = who->ToPlayer()) + if (player->GetQuestStatus(QUEST_PLAYMATE_WOLVAR) == QUEST_STATUS_INCOMPLETE) + { + playerGUID = player->GetGUID(); + if ((orphanGUID = getOrphanGUID(player, ORPHAN_WOLVAR))) + phase = 1; + } + } + + void UpdateAI(const uint32 diff) + { + if (!phase) + return; + + if (timer <= diff) + { + Player* player = Player::GetPlayer(*me, playerGUID); + Creature* orphan = Creature::GetCreature(*me, orphanGUID); + + if (!orphan || !player) + { + Reset(); + return; + } + + switch (phase) + { + case 1: + orphan->GetMotionMaster()->MovePoint(0, me->GetPositionX() + cos(me->GetOrientation()) * 5,me->GetPositionY() + sin(me->GetOrientation()) * 5, me->GetPositionZ()); + orphan->AI()->Talk(TEXT_WOLVAR_ORPHAN_1); + timer = 5000; + break; + case 2: + orphan->SetFacingToObject(me); + Talk(TEXT_SNOWFALL_GLADE_PLAYMATE_1); + DoCast(orphan, SPELL_SNOWBALL); + timer = 5000; + break; + case 3: + Talk(TEXT_SNOWFALL_GLADE_PLAYMATE_2); + timer = 5000; + break; + case 4: + orphan->AI()->Talk(TEXT_WOLVAR_ORPHAN_2); + orphan->AI()->DoCast(me, SPELL_SNOWBALL); + timer = 5000; + break; + case 5: + orphan->AI()->Talk(TEXT_WOLVAR_ORPHAN_3); + player->GroupEventHappens(QUEST_PLAYMATE_WOLVAR, me); + orphan->GetMotionMaster()->MoveFollow(player, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE); + Reset(); + return; + } + ++phase; + } + else + timer -= diff; + } + + private: + uint32 timer; + int8 phase; + uint64 playerGUID; + uint64 orphanGUID; + }; + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_snowfall_glade_playmateAI(pCreature); + } +}; + +/*###### +## npc_the_biggest_tree +######*/ +class npc_the_biggest_tree : public CreatureScript +{ + public: + npc_the_biggest_tree() : CreatureScript("npc_the_biggest_tree") {} + + struct npc_the_biggest_treeAI : public ScriptedAI + { + npc_the_biggest_treeAI(Creature* creature) : ScriptedAI (creature) + { + me->SetDisplayId(DISPLAY_INVISIBLE); + } + + void Reset() + { + timer = 1000; + phase = 0; + playerGUID = 0; + orphanGUID = 0; + } + + void MoveInLineOfSight(Unit* who) + { + if (!phase && who && who->GetDistance2d(me) < 10.0f) + if (Player* player = who->ToPlayer()) + if (player->GetQuestStatus(QUEST_THE_BIGGEST_TREE_EVER) == QUEST_STATUS_INCOMPLETE) + { + playerGUID = player->GetGUID(); + if ((orphanGUID = getOrphanGUID(player, ORPHAN_ORACLE))) + phase = 1; + } + } + + void UpdateAI(const uint32 diff) + { + if (!phase) + return; + + if (timer <= diff) + { + Player* player = Player::GetPlayer(*me, playerGUID); + Creature* orphan = Creature::GetCreature(*me, orphanGUID); + + if (!orphan || !player) + { + Reset(); + return; + } + + switch (phase) + { + case 1: + orphan->GetMotionMaster()->MovePoint(0, me->GetPositionX() + cos(me->GetOrientation()) * 5, me->GetPositionY() + sin(me->GetOrientation()) * 5, me->GetPositionZ()); + timer = 2000; + break; + case 2: + orphan->SetFacingToObject(me); + orphan->AI()->Talk(TEXT_ORACLE_ORPHAN_4); + timer = 5000; + break; + case 3: + player->GroupEventHappens(QUEST_THE_BIGGEST_TREE_EVER, me); + orphan->GetMotionMaster()->MoveFollow(player, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE); + Reset(); + return; + } + ++phase; + } + else + timer -= diff; + } + + private: + uint32 timer; + uint8 phase; + uint64 playerGUID; + uint64 orphanGUID; + + }; + + CreatureAI* GetAI(Creature* creature) const + { + return new npc_the_biggest_treeAI(creature); + } +}; + +/*###### +## npc_high_oracle_soo_roo +######*/ +class npc_high_oracle_soo_roo : public CreatureScript +{ + public: + npc_high_oracle_soo_roo() : CreatureScript("npc_high_oracle_soo_roo") {} + + struct npc_high_oracle_soo_rooAI : public ScriptedAI + { + npc_high_oracle_soo_rooAI(Creature* creature) : ScriptedAI (creature) {} + + void Reset() + { + timer = 0; + phase = 0; + playerGUID = 0; + orphanGUID = 0; + } + + void MoveInLineOfSight(Unit* who) + { + if (!phase && who && who->GetDistance2d(me) < 10.0f) + if (Player* player = who->ToPlayer()) + if (player->GetQuestStatus(QUEST_THE_BRONZE_DRAGONSHRINE_ORACLE) == QUEST_STATUS_INCOMPLETE) + { + playerGUID = player->GetGUID(); + if ((orphanGUID = getOrphanGUID(player, ORPHAN_ORACLE))) + phase = 1; + } + } + + void UpdateAI(const uint32 diff) + { + if (!phase) + return; + + if (timer <= diff) + { + Player* player = Player::GetPlayer(*me, playerGUID); + Creature* orphan = Creature::GetCreature(*me, orphanGUID); + + if (!orphan || !player) + { + Reset(); + return; + } + + switch (phase) + { + case 1: + orphan->GetMotionMaster()->MovePoint(0, me->GetPositionX() + cos(me->GetOrientation()) * 5, me->GetPositionY() + sin(me->GetOrientation()) * 5, me->GetPositionZ()); + orphan->AI()->Talk(TEXT_ORACLE_ORPHAN_5); + timer = 3000; + break; + case 2: + orphan->SetFacingToObject(me); + Talk(TEXT_SOO_ROO_1); + timer = 6000; + break; + case 3: + orphan->AI()->Talk(TEXT_ORACLE_ORPHAN_6); + player->GroupEventHappens(QUEST_THE_BRONZE_DRAGONSHRINE_ORACLE, me); + orphan->GetMotionMaster()->MoveFollow(player, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE); + Reset(); + return; + } + ++phase; + } + else + timer -= diff; + } + + private: + uint32 timer; + int8 phase; + uint64 playerGUID; + uint64 orphanGUID; + + }; + + CreatureAI* GetAI(Creature* creature) const + { + return new npc_high_oracle_soo_rooAI(creature); + } +}; + +/*###### +## npc_elder_kekek +######*/ +class npc_elder_kekek : public CreatureScript +{ + public: + npc_elder_kekek() : CreatureScript("npc_elder_kekek") {} + + struct npc_elder_kekekAI : public ScriptedAI + { + npc_elder_kekekAI(Creature* creature) : ScriptedAI (creature) {} + + void Reset() + { + timer = 0; + phase = 0; + playerGUID = 0; + orphanGUID = 0; + } + + void MoveInLineOfSight(Unit* who) + { + if (!phase && who && who->GetDistance2d(me) < 10.0f) + if (Player* player = who->ToPlayer()) + if (player->GetQuestStatus(QUEST_THE_BRONZE_DRAGONSHRINE_WOLVAR) == QUEST_STATUS_INCOMPLETE) + { + playerGUID = player->GetGUID(); + if ((orphanGUID = getOrphanGUID(player, ORPHAN_WOLVAR))) + phase = 1; + } + } + + void UpdateAI(const uint32 diff) + { + if (!phase) + return; + + if (timer <= diff) + { + Player* player = Player::GetPlayer(*me, playerGUID); + Creature* orphan = Creature::GetCreature(*me, orphanGUID); + + if (!player || !orphan) + { + Reset(); + return; + } + + switch (phase) + { + case 1: + orphan->GetMotionMaster()->MovePoint(0, me->GetPositionX() + cos(me->GetOrientation()) * 5, me->GetPositionY() + sin(me->GetOrientation()) * 5, me->GetPositionZ()); + orphan->AI()->Talk(TEXT_WOLVAR_ORPHAN_4); + timer = 3000; + break; + case 2: + Talk(TEXT_ELDER_KEKEK_1); + timer = 6000; + break; + case 3: + orphan->AI()->Talk(TEXT_WOLVAR_ORPHAN_5); + player->GroupEventHappens(QUEST_THE_BRONZE_DRAGONSHRINE_WOLVAR, me); + orphan->GetMotionMaster()->MoveFollow(player, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE); + Reset(); + return; + } + ++phase; + } + else + timer -= diff; + } + + private: + uint32 timer; + int8 phase; + uint64 playerGUID; + uint64 orphanGUID; + + }; + + CreatureAI* GetAI(Creature* creature) const + { + return new npc_elder_kekekAI(creature); + } +}; + +/*###### +## npc_the_etymidian +## TODO: A red crystal as a gift for the great one should be spawned during the event. +######*/ +class npc_the_etymidian : public CreatureScript +{ + public: + npc_the_etymidian() : CreatureScript("npc_the_etymidian") {} + + struct npc_the_etymidianAI : public ScriptedAI + { + npc_the_etymidianAI(Creature* creature) : ScriptedAI (creature) {} + + void Reset() + { + timer = 0; + phase = 0; + playerGUID = 0; + orphanGUID = 0; + } + + void MoveInLineOfSight(Unit* who) + { + if (!phase && who && who->GetDistance2d(me) < 10.0f) + if (Player* player = who->ToPlayer()) + if (player->GetQuestStatus(QUEST_MEETING_A_GREAT_ONE) == QUEST_STATUS_INCOMPLETE) + { + playerGUID = player->GetGUID(); + if ((orphanGUID = getOrphanGUID(player, ORPHAN_ORACLE))) + phase = 1; + } + } + + void UpdateAI(const uint32 diff) + { + if (!phase) + return; + + if (timer <= diff) + { + Player* player = Player::GetPlayer(*me, playerGUID); + Creature* orphan = Creature::GetCreature(*me, orphanGUID); + + if (!orphan || !player) + { + Reset(); + return; + } + + switch (phase) + { + case 1: + orphan->GetMotionMaster()->MovePoint(0, me->GetPositionX() + cos(me->GetOrientation()) * 5, me->GetPositionY() + sin(me->GetOrientation()) * 5, me->GetPositionZ()); + orphan->AI()->Talk(TEXT_ORACLE_ORPHAN_7); + timer = 5000; + break; + case 2: + orphan->SetFacingToObject(me); + orphan->AI()->Talk(TEXT_ORACLE_ORPHAN_8); + timer = 5000; + break; + case 3: + orphan->AI()->Talk(TEXT_ORACLE_ORPHAN_9); + timer = 5000; + break; + case 4: + orphan->AI()->Talk(TEXT_ORACLE_ORPHAN_10); + timer = 5000; + break; + case 5: + orphan->GetMotionMaster()->MoveFollow(player, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE); + player->GroupEventHappens(QUEST_MEETING_A_GREAT_ONE, me); + Reset(); + return; + } + ++phase; + } + else + timer -= diff; + } + + private: + uint32 timer; + int8 phase; + uint32 GOtimer; + uint64 playerGUID; + uint64 orphanGUID; + + }; + + CreatureAI* GetAI(Creature* creature) const + { + return new npc_the_etymidianAI(creature); + } +}; + +/*###### +## npc_cw_alexstrasza_trigger +######*/ +class npc_alexstraza_the_lifebinder : public CreatureScript +{ + public: + npc_alexstraza_the_lifebinder() : CreatureScript("npc_alexstraza_the_lifebinder") {} + + struct npc_alexstraza_the_lifebinderAI : public ScriptedAI + { + npc_alexstraza_the_lifebinderAI(Creature* creature) : ScriptedAI (creature) {} + + void Reset() + { + timer = 0; + phase = 0; + playerGUID = 0; + orphanGUID = 0; + } + + void SetData(uint32 type, uint32 data) + { + // Existing SmartAI + if (type == 0) + { + switch (data) + { + case 1: + me->SetOrientation(1.6049f); + break; + case 2: + me->SetOrientation(me->GetHomePosition().GetOrientation()); + break; + } + } + } + + void MoveInLineOfSight(Unit* who) + { + if (!phase && who && who->GetDistance2d(me) < 10.0f) + if (Player* player = who->ToPlayer()) + { + if (player->GetQuestStatus(QUEST_THE_DRAGON_QUEEN_ORACLE) == QUEST_STATUS_INCOMPLETE) + { + if ((orphanGUID = getOrphanGUID(player, ORPHAN_ORACLE))) + phase = 1; + playerGUID = player->GetGUID(); + } + else if (player->GetQuestStatus(QUEST_THE_DRAGON_QUEEN_WOLVAR) == QUEST_STATUS_INCOMPLETE) + { + if ((orphanGUID = getOrphanGUID(player, ORPHAN_WOLVAR))) + phase = 7; + playerGUID = player->GetGUID(); + } + } + } + + void UpdateAI(const uint32 diff) + { + if (!phase) + return; + + if (timer <= diff) + { + Player* player = Player::GetPlayer(*me, playerGUID); + Creature* orphan = Creature::GetCreature(*me, orphanGUID); + + if (!orphan || !player) + { + Reset(); + return; + } + + switch (phase) + { + case 1: + orphan->GetMotionMaster()->MovePoint(0, me->GetPositionX() + cos(me->GetOrientation()) * 5, me->GetPositionY() + sin(me->GetOrientation()) * 5, me->GetPositionZ()); + orphan->AI()->Talk(TEXT_ORACLE_ORPHAN_11); + timer = 5000; + break; + case 2: + orphan->SetFacingToObject(me); + orphan->AI()->Talk(TEXT_ORACLE_ORPHAN_12); + timer = 5000; + break; + case 3: + orphan->AI()->Talk(TEXT_ORACLE_ORPHAN_13); + timer = 5000; + break; + case 4: + Talk(TEXT_ALEXSTRASZA_2); + me->SetStandState(UNIT_STAND_STATE_KNEEL); + me->SetFacingToObject(orphan); + timer = 5000; + break; + case 5: + orphan->AI()->Talk(TEXT_ORACLE_ORPHAN_14); + timer = 5000; + break; + case 6: + me->SetStandState(UNIT_STAND_STATE_STAND); + me->SetOrientation(me->GetHomePosition().GetOrientation()); + player->GroupEventHappens(QUEST_THE_DRAGON_QUEEN_ORACLE, me); + orphan->GetMotionMaster()->MoveFollow(player, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE); + Reset(); + return; + case 7: + orphan->GetMotionMaster()->MovePoint(0, me->GetPositionX() + cos(me->GetOrientation()) * 5, me->GetPositionY() + sin(me->GetOrientation()) * 5, me->GetPositionZ()); + orphan->AI()->Talk(TEXT_WOLVAR_ORPHAN_11); + timer = 5000; + break; + case 8: + if(Creature* krasus = me->FindNearestCreature(NPC_KRASUS, 10.0f)) + { + orphan->SetFacingToObject(krasus); + krasus->AI()->Talk(TEXT_KRASUS_8); + } + timer = 5000; + break; + case 9: + orphan->AI()->Talk(TEXT_WOLVAR_ORPHAN_12); + timer = 5000; + break; + case 10: + orphan->SetFacingToObject(me); + Talk(TEXT_ALEXSTRASZA_2); + timer = 5000; + break; + case 11: + orphan->AI()->Talk(TEXT_WOLVAR_ORPHAN_13); + timer = 5000; + break; + case 12: + player->GroupEventHappens(QUEST_THE_DRAGON_QUEEN_WOLVAR, me); + orphan->GetMotionMaster()->MoveFollow(player, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE); + Reset(); + return; + } + ++phase; + } + else + timer -= diff; + } + + private: + int8 phase; + uint32 timer; + uint64 playerGUID; + uint64 orphanGUID; + uint64 alexstraszaGUID; + + }; + + CreatureAI* GetAI(Creature* creature) const + { + return new npc_alexstraza_the_lifebinderAI(creature); + } +}; + +/*###### +## at_bring_your_orphan_to +######*/ + +class at_bring_your_orphan_to : public AreaTriggerScript +{ + public: + at_bring_your_orphan_to() : AreaTriggerScript("at_bring_your_orphan_to") { } + + bool OnTrigger(Player* player, AreaTriggerEntry const* trigger) + { + if (player->isDead() || !player->HasAura(SPELL_ORPHAN_OUT)) + return false; + + uint32 questId = 0; + uint32 orphanId = 0; + + switch (trigger->id) + { + case AT_DOWN_AT_THE_DOCKS: + questId = QUEST_DOWN_AT_THE_DOCKS; + orphanId = ORPHAN_ORCISH; + break; + case AT_GATEWAY_TO_THE_FRONTIER: + questId = QUEST_GATEWAY_TO_THE_FRONTIER; + orphanId = ORPHAN_ORCISH; + break; + case AT_LORDAERON_THRONE_ROOM: + questId = QUEST_LORDAERON_THRONE_ROOM; + orphanId = ORPHAN_ORCISH; + break; + case AT_BOUGHT_OF_ETERNALS: + questId = QUEST_BOUGHT_OF_ETERNALS; + orphanId = ORPHAN_HUMAN; + break; + case AT_SPOOKY_LIGHTHOUSE: + questId = QUEST_SPOOKY_LIGHTHOUSE; + orphanId = ORPHAN_HUMAN; + break; + case AT_STONEWROUGHT_DAM: + questId = QUEST_STONEWROUGHT_DAM; + orphanId = ORPHAN_HUMAN; + break; + case AT_DARK_PORTAL: + questId = player->GetTeam() == ALLIANCE ? QUEST_DARK_PORTAL_A : QUEST_DARK_PORTAL_H; + orphanId = player->GetTeam() == ALLIANCE ? ORPHAN_DRAENEI : ORPHAN_BLOOD_ELF; + break; + } + + if (questId && orphanId && getOrphanGUID(player, orphanId) && player->GetQuestStatus(questId) == QUEST_STATUS_INCOMPLETE) + player->AreaExploredOrEventHappens(questId); + + return true; + } +}; + +/*###### +## npc_cw_area_trigger +######*/ +class npc_cw_area_trigger : public CreatureScript +{ + public: + npc_cw_area_trigger() : CreatureScript("npc_cw_area_trigger") {} + + struct npc_cw_area_triggerAI : public ScriptedAI + { + npc_cw_area_triggerAI(Creature* creature) : ScriptedAI (creature) + { + me->SetDisplayId(DISPLAY_INVISIBLE); + } + + void MoveInLineOfSight(Unit* who) + { + if (who && me->GetDistance2d(who) < 20.0f) + if (Player* player = who->ToPlayer()) + if (player->HasAura(SPELL_ORPHAN_OUT)) + { + uint32 questId = 0; + uint32 orphanId = 0; + switch (me->GetEntry()) + { + case NPC_CAVERNS_OF_TIME_CW_TRIGGER: + questId = player->GetTeam() == ALLIANCE ? QUEST_TIME_TO_VISIT_THE_CAVERNS_A : QUEST_TIME_TO_VISIT_THE_CAVERNS_H; + orphanId = player->GetTeam() == ALLIANCE ? ORPHAN_DRAENEI : ORPHAN_BLOOD_ELF; + break; + case NPC_EXODAR_01_CW_TRIGGER: + questId = QUEST_THE_SEAT_OF_THE_NARUU; + orphanId = ORPHAN_DRAENEI; + break; + case NPC_EXODAR_02_CW_TRIGGER: + questId = QUEST_CALL_ON_THE_FARSEER; + orphanId = ORPHAN_DRAENEI; + break; + case NPC_AERIS_LANDING_CW_TRIGGER: + questId = QUEST_JHEEL_IS_AT_AERIS_LANDING; + orphanId = ORPHAN_DRAENEI; + break; + case NPC_AUCHINDOUN_CW_TRIGGER: + questId = QUEST_AUCHINDOUN_AND_THE_RING; + orphanId = ORPHAN_DRAENEI; + break; + case NPC_SPOREGGAR_CW_TRIGGER: + questId = QUEST_HCHUU_AND_THE_MUSHROOM_PEOPLE; + orphanId = ORPHAN_BLOOD_ELF; + break; + case NPC_THRONE_OF_ELEMENTS_CW_TRIGGER: + questId = QUEST_VISIT_THE_THRONE_OF_ELEMENTS; + orphanId = ORPHAN_BLOOD_ELF; + break; + case NPC_SILVERMOON_01_CW_TRIGGER: + if (player->GetQuestStatus(QUEST_NOW_WHEN_I_GROW_UP) == QUEST_STATUS_INCOMPLETE && getOrphanGUID(player, ORPHAN_BLOOD_ELF)) + { + player->AreaExploredOrEventHappens(QUEST_NOW_WHEN_I_GROW_UP); + if (player->GetQuestStatus(QUEST_NOW_WHEN_I_GROW_UP) == QUEST_STATUS_COMPLETE) + if (Creature* samuro = me->FindNearestCreature(25151, 20.0f)) + { + uint32 emote = 0; + switch(urand(1,5)) + { + case 1: + emote = EMOTE_ONESHOT_WAVE; + break; + case 2: + emote = EMOTE_ONESHOT_ROAR; + break; + case 3: + emote = EMOTE_ONESHOT_FLEX; + break; + case 4: + emote = EMOTE_ONESHOT_SALUTE; + break; + case 5: + emote = EMOTE_ONESHOT_DANCE; + break; + } + samuro->HandleEmoteCommand(emote); + } + } + break; + } + if (questId && orphanId && getOrphanGUID(player, orphanId) && player->GetQuestStatus(questId) == QUEST_STATUS_INCOMPLETE) + player->AreaExploredOrEventHappens(questId); + } + } + }; + + CreatureAI* GetAI(Creature* creature) const + { + return new npc_cw_area_triggerAI(creature); + } +}; + +/*###### +## npc_grizzlemaw_cw_trigger +######*/ +class npc_grizzlemaw_cw_trigger : public CreatureScript +{ + public: + npc_grizzlemaw_cw_trigger() : CreatureScript("npc_grizzlemaw_cw_trigger") {} + + struct npc_grizzlemaw_cw_triggerAI : public ScriptedAI + { + npc_grizzlemaw_cw_triggerAI(Creature* creature) : ScriptedAI (creature) + { + me->SetDisplayId(DISPLAY_INVISIBLE); + } + + void MoveInLineOfSight(Unit* who) + { + if (who && who->GetDistance2d(me) < 10.0f) + if (Player* player = who->ToPlayer()) + if (player->GetQuestStatus(QUEST_HOME_OF_THE_BEAR_MEN) == QUEST_STATUS_INCOMPLETE) + if (Creature* orphan = Creature::GetCreature(*me, getOrphanGUID(player, ORPHAN_WOLVAR))) + { + player->AreaExploredOrEventHappens(QUEST_HOME_OF_THE_BEAR_MEN); + orphan->AI()->Talk(TEXT_WOLVAR_ORPHAN_10); + } + } + }; + + CreatureAI* GetAI(Creature* creature) const + { + return new npc_grizzlemaw_cw_triggerAI(creature); + } +}; + +void AddSC_event_childrens_week() +{ + new npc_elder_kekek(); + new npc_high_oracle_soo_roo(); + new npc_winterfin_playmate(); + new npc_snowfall_glade_playmate(); + new npc_the_etymidian(); + new npc_the_biggest_tree(); + new at_bring_your_orphan_to(); + new npc_grizzlemaw_cw_trigger(); + new npc_cw_area_trigger(); + new npc_alexstraza_the_lifebinder(); +} diff --git a/src/server/scripts/Events/event.cpp b/src/server/scripts/Events/event.cpp new file mode 100644 index 00000000000..22334f8d365 --- /dev/null +++ b/src/server/scripts/Events/event.cpp @@ -0,0 +1,25 @@ +/* + * Copyright (C) 2008-2012 TrinityCore <http://www.trinitycore.org/> + * + * 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 <http://www.gnu.org/licenses/>. + */ + +#include "ScriptPCH.h" + +void AddSC_event_childrens_week(); + +void AddSC_event_scripts() +{ + AddSC_event_childrens_week(); +} diff --git a/src/server/scripts/Examples/example_gossip_codebox.cpp b/src/server/scripts/Examples/example_gossip_codebox.cpp index a5627c68ff6..d6936c8fb9e 100644 --- a/src/server/scripts/Examples/example_gossip_codebox.cpp +++ b/src/server/scripts/Examples/example_gossip_codebox.cpp @@ -72,7 +72,7 @@ class example_gossip_codebox : public CreatureScript return true; } - bool OnGossipSelectCode(Player* player, Creature* creature, uint32 sender, uint32 action, const char* code) + bool OnGossipSelectCode(Player* player, Creature* creature, uint32 sender, uint32 action, char const* code) { player->PlayerTalkClass->ClearMenus(); if (sender == GOSSIP_SENDER_MAIN) @@ -80,7 +80,7 @@ class example_gossip_codebox : public CreatureScript switch (action) { case GOSSIP_ACTION_INFO_DEF+1: - if (std::strcmp(code, player->GetName()) != 0) + if (player->GetName() != code) { DoScriptText(SAY_WRONG, creature); creature->CastSpell(player, SPELL_POLYMORPH, true); diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp index ee988accbac..1c91d78cd29 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp @@ -129,7 +129,6 @@ public: } else CheckTimer -= diff; } }; - }; /* This script is merely a placeholder for the Doomfire that triggers Doomfire spell. It will @@ -220,7 +219,6 @@ public: } else ChangeTargetTimer -= diff; } }; - }; /* Finally, Archimonde's script. His script isn't extremely complex, most are simply spells on timers. @@ -315,8 +313,8 @@ public: { Talk(SAY_SLAY); - if (victim && (victim->GetTypeId() == TYPEID_PLAYER)) - GainSoulCharge(CAST_PLR(victim)); + if (victim && victim->GetTypeId() == TYPEID_PLAYER) + GainSoulCharge(victim->ToPlayer()); } void GainSoulCharge(Player* victim) @@ -360,13 +358,13 @@ public: if (victim && me->IsWithinDistInMap(victim, me->GetAttackDistance(victim))) return false; - std::list<HostileReference*>& m_threatlist = me->getThreatManager().getThreatList(); - if (m_threatlist.empty()) + ThreatContainer::StorageType const &threatlist = me->getThreatManager().getThreatList(); + if (threatlist.empty()) return false; std::list<Unit*> targets; - std::list<HostileReference*>::const_iterator itr = m_threatlist.begin(); - for (; itr != m_threatlist.end(); ++itr) + ThreatContainer::StorageType::const_iterator itr = threatlist.begin(); + for (; itr != threatlist.end(); ++itr) { Unit* unit = Unit::GetUnit(*me, (*itr)->getUnitGuid()); if (unit && unit->isAlive()) @@ -637,13 +635,8 @@ public: DoMeleeAttackIfReady(); } - - void WaypointReached(uint32 /*waypointId*/) - { - - } + void WaypointReached(uint32 /*waypointId*/) { } }; - }; void AddSC_boss_archimonde() diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp index ee7ef383603..48dd847b190 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp @@ -236,7 +236,7 @@ public: uint32 AzgalorEvent = ai->GetInstanceData(DATA_AZGALOREVENT); // Only let them get item if Azgalor is dead. - if (AzgalorEvent == DONE && !player->HasItemCount(ITEM_TEAR_OF_GODDESS, 1)) + if (AzgalorEvent == DONE && !player->HasItemCount(ITEM_TEAR_OF_GODDESS)) player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_TYRANDE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); player->SEND_GOSSIP_MENU(907, creature->GetGUID()); return true; diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/DarkPortal/dark_portal.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/DarkPortal/dark_portal.cpp index ee8c4d1bae1..bed3cde6fa4 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/DarkPortal/dark_portal.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/DarkPortal/dark_portal.cpp @@ -388,13 +388,13 @@ public: if (creature->isQuestGiver()) player->PrepareQuestMenu(creature->GetGUID()); - if (player->GetQuestStatus(QUEST_OPENING_PORTAL) == QUEST_STATUS_INCOMPLETE && !player->HasItemCount(ITEM_CHRONO_BEACON, 1)) + if (player->GetQuestStatus(QUEST_OPENING_PORTAL) == QUEST_STATUS_INCOMPLETE && !player->HasItemCount(ITEM_CHRONO_BEACON)) { player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_OBTAIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); player->SEND_GOSSIP_MENU(10000, creature->GetGUID()); return true; } - else if (player->GetQuestRewardStatus(QUEST_OPENING_PORTAL) && !player->HasItemCount(ITEM_CHRONO_BEACON, 1)) + else if (player->GetQuestRewardStatus(QUEST_OPENING_PORTAL) && !player->HasItemCount(ITEM_CHRONO_BEACON)) { player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_OBTAIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); player->SEND_GOSSIP_MENU(10001, creature->GetGUID()); diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp index 3690e87354d..0158d470ef9 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp @@ -79,7 +79,7 @@ public: player->PrepareQuestMenu(creature->GetGUID()); InstanceScript* instance = creature->GetInstanceScript(); - if (instance && instance->GetData(TYPE_BARREL_DIVERSION) != DONE && !player->HasItemCount(ITEM_ENTRY_BOMBS, 1)) + if (instance && instance->GetData(TYPE_BARREL_DIVERSION) != DONE && !player->HasItemCount(ITEM_ENTRY_BOMBS)) player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_HELLO_EROZION1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); if (player->GetQuestStatus(QUEST_ENTRY_RETURN) == QUEST_STATUS_COMPLETE) diff --git a/src/server/scripts/Kalimdor/boss_azuregos.cpp b/src/server/scripts/Kalimdor/boss_azuregos.cpp index ec098951c03..3b431d55a2c 100644 --- a/src/server/scripts/Kalimdor/boss_azuregos.cpp +++ b/src/server/scripts/Kalimdor/boss_azuregos.cpp @@ -90,9 +90,9 @@ public: if (TeleportTimer <= diff) { DoScriptText(SAY_TELEPORT, me); - std::list<HostileReference*>& threatlist = me->getThreatManager().getThreatList(); - std::list<HostileReference*>::const_iterator i = threatlist.begin(); - for (i = threatlist.begin(); i!= threatlist.end(); ++i) + ThreatContainer::StorageType threatlist = me->getThreatManager().getThreatList(); + ThreatContainer::StorageType::const_iterator i = threatlist.begin(); + for (i = threatlist.begin(); i != threatlist.end(); ++i) { Unit* unit = Unit::GetUnit(*me, (*i)->getUnitGuid()); if (unit && (unit->GetTypeId() == TYPEID_PLAYER)) @@ -158,7 +158,6 @@ public: DoMeleeAttackIfReady(); } }; - }; void AddSC_boss_azuregos() diff --git a/src/server/scripts/Kalimdor/feralas.cpp b/src/server/scripts/Kalimdor/feralas.cpp index 4fcd20951c9..c1e247044f7 100644 --- a/src/server/scripts/Kalimdor/feralas.cpp +++ b/src/server/scripts/Kalimdor/feralas.cpp @@ -27,6 +27,7 @@ EndScriptData */ #include "ScriptedCreature.h" #include "ScriptedEscortAI.h" #include "ScriptedGossip.h" +#include "SpellScript.h" /*###### ## npc_gregan_brewspewer @@ -202,6 +203,39 @@ public: }; +enum GordunniTrap +{ + GO_GORDUNNI_DIRT_MOUND = 144064, +}; + +class spell_gordunni_trap : public SpellScriptLoader +{ + public: + spell_gordunni_trap() : SpellScriptLoader("spell_gordunni_trap") { } + + class spell_gordunni_trap_SpellScript : public SpellScript + { + PrepareSpellScript(spell_gordunni_trap_SpellScript); + + void HandleDummy() + { + if (Unit* caster = GetCaster()) + if (GameObject* chest = caster->SummonGameObject(GO_GORDUNNI_DIRT_MOUND, caster->GetPositionX(), caster->GetPositionY(), caster->GetPositionZ(), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0)) + chest->SetSpellId(GetSpellInfo()->Id); + } + + void Register() + { + OnCast += SpellCastFn(spell_gordunni_trap_SpellScript::HandleDummy); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_gordunni_trap_SpellScript(); + } +}; + /*###### ## AddSC ######*/ @@ -211,4 +245,5 @@ void AddSC_feralas() new npc_gregan_brewspewer(); new npc_oox22fe(); new npc_screecher_spirit(); + new spell_gordunni_trap(); } diff --git a/src/server/scripts/Kalimdor/silithus.cpp b/src/server/scripts/Kalimdor/silithus.cpp index bad278f51c7..45a2fad9999 100644 --- a/src/server/scripts/Kalimdor/silithus.cpp +++ b/src/server/scripts/Kalimdor/silithus.cpp @@ -1289,37 +1289,37 @@ class go_wind_stone : public GameObjectScript { case TEMPLAR: { - if (player->HasItemCount(ITEM_TEMPLAR_FIRE, 1)) + if (player->HasItemCount(ITEM_TEMPLAR_FIRE)) result |= FIRE; - if (player->HasItemCount(ITEM_TEMPLAR_WATER, 1)) + if (player->HasItemCount(ITEM_TEMPLAR_WATER)) result |= WATER; - if (player->HasItemCount(ITEM_TEMPLAR_EARTH, 1)) + if (player->HasItemCount(ITEM_TEMPLAR_EARTH)) result |= EARTH; - if (player->HasItemCount(ITEM_TEMPLAR_AIR, 1)) + if (player->HasItemCount(ITEM_TEMPLAR_AIR)) result |= AIR; break; } case DUKE: { - if (player->HasItemCount(ITEM_DUKE_FIRE, 1)) + if (player->HasItemCount(ITEM_DUKE_FIRE)) result |= FIRE; - if (player->HasItemCount(ITEM_DUKE_WATER, 1)) + if (player->HasItemCount(ITEM_DUKE_WATER)) result |= WATER; - if (player->HasItemCount(ITEM_DUKE_EARTH, 1)) + if (player->HasItemCount(ITEM_DUKE_EARTH)) result |= EARTH; - if (player->HasItemCount(ITEM_DUKE_AIR, 1)) + if (player->HasItemCount(ITEM_DUKE_AIR)) result |= AIR; break; } case ROYAL: { - if (player->HasItemCount(ITEM_ROYAL_FIRE, 1)) + if (player->HasItemCount(ITEM_ROYAL_FIRE)) result |= FIRE; - if (player->HasItemCount(ITEM_ROYAL_WATER, 1)) + if (player->HasItemCount(ITEM_ROYAL_WATER)) result |= WATER; - if (player->HasItemCount(ITEM_ROYAL_EARTH, 1)) + if (player->HasItemCount(ITEM_ROYAL_EARTH)) result |= EARTH; - if (player->HasItemCount(ITEM_ROYAL_AIR, 1)) + if (player->HasItemCount(ITEM_ROYAL_AIR)) result |= AIR; break; } diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp index 6ba13014585..82739c0026a 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp @@ -113,6 +113,8 @@ enum Spells SPELL_SUMMON_EXIT_PORTALS = 74805, // Custom spell created in spell_dbc. SPELL_TWILIGHT_MENDING = 75509, SPELL_TWILIGHT_REALM = 74807, + SPELL_DUSK_SHROUD = 75476, + SPELL_TWILIGHT_PRECISION = 78243, SPELL_COPY_DAMAGE = 74810 // Aura not found in DBCs. }; @@ -226,19 +228,24 @@ struct generic_halionAI : public BossAI { generic_halionAI(Creature* creature, uint32 bossId) : BossAI(creature, bossId), _canEvade(false) { } - void EnterCombat(Unit* /*who*/) + void EnterCombat(Unit* who) { - Talk(SAY_AGGRO); - _EnterCombat(); + BossAI::EnterCombat(who); _canEvade = false; - events.Reset(); events.ScheduleEvent(EVENT_CLEAVE, urand(8000, 10000)); + events.ScheduleEvent(EVENT_TAIL_LASH, 10000); + } + + void Reset() + { + _canEvade = false; + BossAI::Reset(); } void EnterEvadeMode() { + BossAI::EnterEvadeMode(); instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); - _EnterEvadeMode(); } void ExecuteEvent(uint32 const eventId) @@ -249,6 +256,10 @@ struct generic_halionAI : public BossAI DoCastVictim(SPELL_CLEAVE); events.ScheduleEvent(EVENT_CLEAVE, urand(8000, 10000)); break; + case EVENT_TAIL_LASH: + DoCastAOE(SPELL_TAIL_LASH); + events.ScheduleEvent(EVENT_TAIL_LASH, 10000); + break; } } @@ -297,52 +308,54 @@ class boss_halion : public CreatureScript struct boss_halionAI : public generic_halionAI { - boss_halionAI(Creature* creature) : generic_halionAI(creature, DATA_HALION) { } + boss_halionAI(Creature* creature) : generic_halionAI(creature, DATA_HALION) + { + me->SetHomePosition(HalionSpawnPos); + } void Reset() { generic_halionAI::Reset(); me->SetReactState(REACT_DEFENSIVE); - - instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); - me->RemoveAurasDueToSpell(SPELL_TWILIGHT_PHASING); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + me->AddAura(SPELL_TWILIGHT_PRECISION, me); } void EnterEvadeMode() { // Phase 1: We always can evade. Phase 2 & 3: We can evade if and only if the controller tells us to. - // Controller has absolute priority over the phasemask. if ((events.GetPhaseMask() & PHASE_ONE_MASK) || _canEvade) generic_halionAI::EnterEvadeMode(); } void EnterCombat(Unit* who) { + Talk(SAY_AGGRO); + + events.Reset(); + events.SetPhase(PHASE_ONE); + generic_halionAI::EnterCombat(who); instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me, 1); instance->SetBossState(DATA_HALION, IN_PROGRESS); - events.SetPhase(PHASE_ONE); - events.ScheduleEvent(EVENT_ACTIVATE_FIREWALL, 10000); + events.ScheduleEvent(EVENT_ACTIVATE_FIREWALL, 5000); events.ScheduleEvent(EVENT_FLAME_BREATH, urand(10000, 12000)); events.ScheduleEvent(EVENT_METEOR_STRIKE, urand(20000, 25000)); events.ScheduleEvent(EVENT_FIERY_COMBUSTION, urand(15000, 18000)); - events.ScheduleEvent(EVENT_TAIL_LASH, 10000); if (Creature* controller = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_HALION_CONTROLLER))) controller->AI()->SetData(DATA_FIGHT_PHASE, PHASE_ONE); } - void JustDied(Unit* /*killer*/) + void JustDied(Unit* killer) { - _JustDied(); + BossAI::JustDied(killer); Talk(SAY_DEATH); instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); - me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); if (Creature* controller = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_HALION_CONTROLLER))) me->Kill(controller); @@ -356,7 +369,7 @@ class boss_halion : public CreatureScript { events.SetPhase(PHASE_TWO); Talk(SAY_PHASE_TWO); - + me->CastStop(); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); DoCast(me, SPELL_TWILIGHT_PHASING); @@ -390,21 +403,15 @@ class boss_halion : public CreatureScript switch (eventId) { case EVENT_ACTIVATE_FIREWALL: - { - // Flame ring is activated 10 seconds after starting encounter, DOOR_TYPE_ROOM is only instant. + // Flame ring is activated 5 seconds after starting encounter, DOOR_TYPE_ROOM is only instant. for (uint8 i = DATA_FLAME_RING; i <= DATA_TWILIGHT_FLAME_RING; ++i) if (GameObject* flameRing = ObjectAccessor::GetGameObject(*me, instance->GetData64(i))) instance->HandleGameObject(instance->GetData64(DATA_FLAME_RING), false, flameRing); break; - } case EVENT_FLAME_BREATH: DoCast(me, SPELL_FLAME_BREATH); events.ScheduleEvent(EVENT_FLAME_BREATH, 25000); break; - case EVENT_TAIL_LASH: - DoCastAOE(SPELL_TAIL_LASH); - events.ScheduleEvent(EVENT_TAIL_LASH, 10000); - break; case EVENT_METEOR_STRIKE: { if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true, -SPELL_TWILIGHT_REALM)) @@ -466,29 +473,32 @@ class boss_twilight_halion : public CreatureScript if (!halion) return; - // We use explicit targeting here to avoid conditions + SPELL_ATTR6_CANT_TARGET_SELF. // Using AddAura because no spell cast packet in sniffs. - halion->AddAura(SPELL_COPY_DAMAGE, me); + halion->AddAura(SPELL_COPY_DAMAGE, me); // We use explicit targeting here to avoid conditions + SPELL_ATTR6_CANT_TARGET_SELF. me->AddAura(SPELL_COPY_DAMAGE, halion); + me->AddAura(SPELL_DUSK_SHROUD, me); me->SetHealth(halion->GetHealth()); me->SetPhaseMask(0x20, true); me->SetReactState(REACT_AGGRESSIVE); + } - instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me, 2); - + void EnterCombat(Unit* who) + { events.Reset(); events.SetPhase(PHASE_TWO); + + generic_halionAI::EnterCombat(who); + events.ScheduleEvent(EVENT_DARK_BREATH, urand(10000, 15000)); events.ScheduleEvent(EVENT_SOUL_CONSUMPTION, 20000); - events.ScheduleEvent(EVENT_TAIL_LASH, 10000); - } - void EnterEvadeMode() - { - // We don't care about evading, we will be despawned. + instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me, 2); } + // Never evade + void EnterEvadeMode() { } + void KilledUnit(Unit* victim) { if (victim->GetTypeId() == TYPEID_PLAYER) @@ -565,10 +575,6 @@ class boss_twilight_halion : public CreatureScript DoCast(target, SPELL_SOUL_CONSUMPTION); events.ScheduleEvent(EVENT_SOUL_CONSUMPTION, 20000); break; - case EVENT_TAIL_LASH: - DoCastAOE(SPELL_TAIL_LASH); - events.ScheduleEvent(EVENT_TAIL_LASH, 10000); - break; default: generic_halionAI::ExecuteEvent(eventId); break; @@ -1186,10 +1192,19 @@ class npc_living_inferno : public CreatureScript { npc_living_infernoAI(Creature* creature) : ScriptedAI(creature) { } - void JustSummoned(Creature* /*summoner*/) + void IsSummonedBy(Unit* /*summoner*/) { me->SetInCombatWithZone(); - DoCast(me, SPELL_BLAZING_AURA); + me->CastSpell(me, SPELL_BLAZING_AURA, true); + + if (InstanceScript* instance = me->GetInstanceScript()) + if (Creature* controller = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_HALION_CONTROLLER))) + controller->AI()->JustSummoned(me); + } + + void JustDied(Unit* /*killer*/) + { + me->DespawnOrUnsummon(1); } }; @@ -1220,6 +1235,18 @@ class npc_living_ember : public CreatureScript _hasEnraged = false; } + void IsSummonedBy(Unit* /*summoner*/) + { + if (InstanceScript* instance = me->GetInstanceScript()) + if (Creature* controller = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_HALION_CONTROLLER))) + controller->AI()->JustSummoned(me); + } + + void JustDied(Unit* /*killer*/) + { + me->DespawnOrUnsummon(1); + } + void UpdateAI(uint32 const diff) { if (!UpdateVictim() || me->HasUnitState(UNIT_STATE_CASTING)) @@ -1714,7 +1741,7 @@ void AddSC_boss_halion() { new boss_halion(); new boss_twilight_halion(); - + new npc_halion_controller(); new npc_meteor_strike_initial(); new npc_meteor_strike(); diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp index a6b50467538..bf48132b2b2 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp @@ -45,7 +45,6 @@ class instance_ruby_sanctum : public InstanceMapScript OrbCarrierGUID = 0; OrbRotationFocusGUID = 0; HalionControllerGUID = 0; - CombatStalkerGUID = 0; CrystalChannelTargetGUID = 0; XerestraszaGUID = 0; BaltharusSharedHealth = 0; @@ -56,6 +55,13 @@ class instance_ruby_sanctum : public InstanceMapScript memset(BurningTreeGUID, 0, 4 * sizeof(uint64)); } + void OnPlayerEnter(Player* /*player*/) + { + if (!GetData64(DATA_HALION_CONTROLLER) && GetBossState(DATA_HALION) != DONE && GetBossState(DATA_GENERAL_ZARITHRIAN) == DONE) + if (Creature* halionController = instance->SummonCreature(NPC_HALION_CONTROLLER, HalionControllerSpawnPos)) + halionController->AI()->DoAction(ACTION_INTRO_HALION); + } + void OnCreatureCreate(Creature* creature) { switch (creature->GetEntry()) @@ -84,9 +90,6 @@ class instance_ruby_sanctum : public InstanceMapScript case NPC_ORB_ROTATION_FOCUS: OrbRotationFocusGUID = creature->GetGUID(); break; - case NPC_COMBAT_STALKER: - CombatStalkerGUID = creature->GetGUID(); - break; case NPC_BALTHARUS_TARGET: CrystalChannelTargetGUID = creature->GetGUID(); break; @@ -195,8 +198,6 @@ class instance_ruby_sanctum : public InstanceMapScript return FlameRingGUID; case DATA_TWILIGHT_FLAME_RING: return TwilightFlameRingGUID; - case DATA_COMBAT_STALKER: - return CombatStalkerGUID; default: break; } @@ -207,14 +208,7 @@ class instance_ruby_sanctum : public InstanceMapScript bool SetBossState(uint32 type, EncounterState state) { if (!InstanceScript::SetBossState(type, state)) - { - // Summon Halion on instance loading if conditions are met. Without those lines, - // InstanceScript::SetBossState returns false, thus preventing the switch from being called. - if (type == DATA_HALION && state != DONE && GetBossState(DATA_GENERAL_ZARITHRIAN) == DONE && !GetData64(DATA_HALION_CONTROLLER)) - if (Creature* halionController = instance->SummonCreature(NPC_HALION_CONTROLLER, HalionControllerSpawnPos)) - halionController->AI()->DoAction(ACTION_INTRO_HALION); return false; - } switch (type) { @@ -353,7 +347,6 @@ class instance_ruby_sanctum : public InstanceMapScript uint64 BurningTreeGUID[4]; uint64 FlameRingGUID; uint64 TwilightFlameRingGUID; - uint64 CombatStalkerGUID; uint32 BaltharusSharedHealth; }; diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.h b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.h index 7eb1b73721c..47a55f9035f 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.h +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.h @@ -52,7 +52,6 @@ enum DataTypes DATA_BURNING_TREE_4 = 16, DATA_FLAME_RING = 17, DATA_TWILIGHT_FLAME_RING = 18, - DATA_COMBAT_STALKER = 19, }; enum SharedActions @@ -97,7 +96,7 @@ enum CreaturesIds NPC_METEOR_STRIKE_FLAME = 40055, NPC_COMBUSTION = 40001, NPC_CONSUMPTION = 40135, - NPC_COMBAT_STALKER = 40151, + NPC_COMBAT_STALKER = 40151, // Seen in sniffs but not used, so no wonder. // Xerestrasza NPC_XERESTRASZA = 40429, diff --git a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp index 10b40b490c4..c88377da3f3 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp @@ -59,7 +59,8 @@ enum Yells SAY_REQUEST_AID = -1533103, //start of phase 3 SAY_ANSWER_REQUEST = -1533104 //lich king answer }; -enum Event + +enum Events { EVENT_NONE, EVENT_BOLT, @@ -607,13 +608,17 @@ public: case EVENT_DETONATE: { std::vector<Unit*> unitList; - std::list<HostileReference*> *threatList = &me->getThreatManager().getThreatList(); - for (std::list<HostileReference*>::const_iterator itr = threatList->begin(); itr != threatList->end(); ++itr) + ThreatContainer::StorageType const &threatList = me->getThreatManager().getThreatList(); + for (ThreatContainer::StorageType::const_iterator itr = threatList.begin(); itr != threatList.end(); ++itr) { - if ((*itr)->getTarget()->GetTypeId() == TYPEID_PLAYER - && (*itr)->getTarget()->getPowerType() == POWER_MANA - && (*itr)->getTarget()->GetPower(POWER_MANA)) - unitList.push_back((*itr)->getTarget()); + Unit * const target = (*itr)->getTarget(); + + if (target->GetTypeId() == TYPEID_PLAYER + && target->getPowerType() == POWER_MANA + && target->GetPower(POWER_MANA)) + { + unitList.push_back(target); + } } if (!unitList.empty()) @@ -654,7 +659,6 @@ public: { return new boss_kelthuzadAI (creature); } - }; class at_kelthuzad_center : public AreaTriggerScript diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp index 9f5eb8d879a..28f73ed14b0 100644 --- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp +++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp @@ -305,8 +305,8 @@ public: summons.DespawnAll(); // players that used Hover Disk are no in the aggro list me->SetInCombatWithZone(); - std::list<HostileReference*> &m_threatlist = me->getThreatManager().getThreatList(); - for (std::list<HostileReference*>::const_iterator itr = m_threatlist.begin(); itr!= m_threatlist.end(); ++itr) + ThreatContainer::StorageType const& m_threatlist = me->getThreatManager().getThreatList(); + for (ThreatContainer::StorageType::const_iterator itr = m_threatlist.begin(); itr!= m_threatlist.end(); ++itr) { if (Unit* target = (*itr)->getTarget()) { @@ -683,8 +683,8 @@ class spell_malygos_vortex_visual : public SpellScriptLoader { if (Unit* caster = GetCaster()) { - std::list<HostileReference*> &m_threatlist = caster->getThreatManager().getThreatList(); - for (std::list<HostileReference*>::const_iterator itr = m_threatlist.begin(); itr!= m_threatlist.end(); ++itr) + ThreatContainer::StorageType const& m_threatlist = caster->getThreatManager().getThreatList(); + for (ThreatContainer::StorageType::const_iterator itr = m_threatlist.begin(); itr!= m_threatlist.end(); ++itr) { if (Unit* target = (*itr)->getTarget()) { diff --git a/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp b/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp index 28595571a2f..f00369fd9e2 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp @@ -32,7 +32,7 @@ #define GOSSIP_ITEM_ETERNOS1 "I want to fly on the wings of the Bronze Flight" #define GOSSIP_ITEM_ETERNOS2 "What abilities do Amber Drakes have?" -#define HAS_ESSENCE(a) ((a)->HasItemCount(ITEM_EMERALD_ESSENCE, 1) || (a)->HasItemCount(ITEM_AMBER_ESSENCE, 1) || (a)->HasItemCount(ITEM_RUBY_ESSENCE, 1)) +#define HAS_ESSENCE(a) ((a)->HasItemCount(ITEM_EMERALD_ESSENCE) || (a)->HasItemCount(ITEM_AMBER_ESSENCE) || (a)->HasItemCount(ITEM_RUBY_ESSENCE)) enum GossipNPCs { diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp index a0c00f73bff..7967a86039e 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp @@ -978,7 +978,7 @@ class go_celestial_planetarium_access : public GameObjectScript if (!lock->Index[i]) continue; - if (player->HasItemCount(lock->Index[i], 1)) + if (player->HasItemCount(lock->Index[i])) { hasKey = true; break; diff --git a/src/server/scripts/Northrend/sholazar_basin.cpp b/src/server/scripts/Northrend/sholazar_basin.cpp index 56ef25c5753..63960f13bb7 100644 --- a/src/server/scripts/Northrend/sholazar_basin.cpp +++ b/src/server/scripts/Northrend/sholazar_basin.cpp @@ -33,6 +33,7 @@ EndContentData */ #include "ScriptedGossip.h" #include "ScriptedEscortAI.h" #include "SpellScript.h" +#include "SpellAuras.h" /*###### ## npc_injured_rainspeaker_oracle @@ -470,11 +471,27 @@ public: enum utils { - NPC_HEMET = 27986, - NPC_HADRIUS = 28047, - NPC_TAMARA = 28568, - SPELL_OFFER = 51962, - QUEST_ENTRY = 12645, + NPC_HEMET = 27986, + NPC_HADRIUS = 28047, + NPC_TAMARA = 28568, + SPELL_OFFER = 51962, + QUEST_ENTRY = 12645, +}; + +enum NesingwaryChildrensWeek +{ + SPELL_ORPHAN_OUT = 58818, + + QUEST_THE_MIGHTY_HEMET_NESINGWARY = 13957, + + ORPHAN_WOLVAR = 33532, + + TEXT_WOLVAR_ORPHAN_6 = 6, + TEXT_WOLVAR_ORPHAN_7 = 7, + TEXT_WOLVAR_ORPHAN_8 = 8, + TEXT_WOLVAR_ORPHAN_9 = 9, + + TEXT_NESINGWARY_1 = 1, }; class npc_jungle_punch_target : public CreatureScript @@ -486,17 +503,86 @@ public: { npc_jungle_punch_targetAI(Creature* creature) : ScriptedAI(creature) {} - uint16 sayTimer; - uint8 sayStep; - void Reset() { sayTimer = 3500; sayStep = 0; + timer = 0; + phase = 0; + playerGUID = 0; + orphanGUID = 0; + } + + void MoveInLineOfSight(Unit* who) + { + if (!phase && who && who->GetDistance2d(me) < 10.0f) + if (Player* player = who->ToPlayer()) + if (player->GetQuestStatus(QUEST_THE_MIGHTY_HEMET_NESINGWARY) == QUEST_STATUS_INCOMPLETE) + { + playerGUID = player->GetGUID(); + if (Aura* orphanOut = player->GetAura(SPELL_ORPHAN_OUT)) + if (orphanOut->GetCaster() && orphanOut->GetCaster()->GetEntry() == ORPHAN_WOLVAR) + { + orphanGUID = orphanOut->GetCaster()->GetGUID(); + phase = 1; + } + } + } + + void proceedCwEvent(const uint32 diff) + { + if (timer <= diff) + { + Player* player = Player::GetPlayer(*me, playerGUID); + Creature* orphan = Creature::GetCreature(*me, orphanGUID); + + if(!orphan || !player) + { + Reset(); + return; + } + + switch(phase) + { + case 1: + orphan->GetMotionMaster()->MovePoint(0, me->GetPositionX() + cos(me->GetOrientation()) * 5, me->GetPositionY() + sin(me->GetOrientation()) * 5, me->GetPositionZ()); + orphan->AI()->Talk(TEXT_WOLVAR_ORPHAN_6); + timer = 5000; + break; + case 2: + orphan->SetFacingToObject(me); + orphan->AI()->Talk(TEXT_WOLVAR_ORPHAN_7); + timer = 5000; + break; + case 3: + Talk(TEXT_NESINGWARY_1); + timer = 5000; + break; + case 4: + orphan->AI()->Talk(TEXT_WOLVAR_ORPHAN_8); + timer = 5000; + break; + case 5: + orphan->AI()->Talk(TEXT_WOLVAR_ORPHAN_9); + timer = 5000; + break; + case 6: + orphan->GetMotionMaster()->MoveFollow(player, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE); + player->GroupEventHappens(QUEST_THE_MIGHTY_HEMET_NESINGWARY, me); + Reset(); + return; + } + ++phase; + } + else + timer -= diff; } void UpdateAI(const uint32 uiDiff) { + if (phase) + proceedCwEvent(uiDiff); + if (!sayStep) return; @@ -588,6 +674,14 @@ public: break; } } + + private: + uint16 sayTimer; + uint8 sayStep; + uint32 timer; + int8 phase; + uint64 playerGUID; + uint64 orphanGUID; }; CreatureAI* GetAI(Creature* creature) const diff --git a/src/server/scripts/Northrend/storm_peaks.cpp b/src/server/scripts/Northrend/storm_peaks.cpp index 976a6e5dba5..1733af17580 100644 --- a/src/server/scripts/Northrend/storm_peaks.cpp +++ b/src/server/scripts/Northrend/storm_peaks.cpp @@ -19,6 +19,8 @@ #include "ScriptedCreature.h" #include "ScriptedGossip.h" #include "ScriptedEscortAI.h" +#include "SpellScript.h" +#include "SpellAuraEffects.h" #include "Vehicle.h" #include "CombatAI.h" @@ -564,6 +566,53 @@ class npc_hyldsmeet_protodrake : public CreatureScript } }; +enum CloseRift +{ + SPELL_DESPAWN_RIFT = 61665 +}; + +class spell_close_rift : public SpellScriptLoader +{ + public: + spell_close_rift() : SpellScriptLoader("spell_close_rift") { } + + class spell_close_rift_AuraScript : public AuraScript + { + PrepareAuraScript(spell_close_rift_AuraScript); + + bool Load() + { + _counter = 0; + return true; + } + + bool Validate(SpellInfo const* /*spell*/) + { + return sSpellMgr->GetSpellInfo(SPELL_DESPAWN_RIFT); + } + + void HandlePeriodic(AuraEffect const* /* aurEff */) + { + if (++_counter == 5) + GetTarget()->CastSpell((Unit*)NULL, SPELL_DESPAWN_RIFT, true); + } + + void Register() + { + OnEffectPeriodic += AuraEffectPeriodicFn(spell_close_rift_AuraScript::HandlePeriodic, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL); + } + + private: + uint8 _counter; + + }; + + AuraScript* GetAuraScript() const + { + return new spell_close_rift_AuraScript(); + } +}; + void AddSC_storm_peaks() { new npc_agnetta_tyrsdottar(); @@ -574,4 +623,5 @@ void AddSC_storm_peaks() new npc_freed_protodrake(); new npc_icefang(); new npc_hyldsmeet_protodrake(); + new spell_close_rift(); } diff --git a/src/server/scripts/Northrend/wintergrasp.cpp b/src/server/scripts/Northrend/wintergrasp.cpp index 2aed813550d..d4a3f83ab70 100644 --- a/src/server/scripts/Northrend/wintergrasp.cpp +++ b/src/server/scripts/Northrend/wintergrasp.cpp @@ -559,7 +559,8 @@ public: { if (Battlefield* wg = sBattlefieldMgr->GetBattlefieldByBattleId(BATTLEFIELD_BATTLEID_WG)) if (Player* target = GetExplTargetUnit()->ToPlayer()) - if (target->GetTeamId() != wg->GetDefenderTeam() || target->HasAura(SPELL_WINTERGRASP_TELEPORT_TRIGGER)) + // check if we are in Wintergrasp at all, SotA uses same teleport spells + if ((target->GetZoneId() == 4197) && target->GetTeamId() != wg->GetDefenderTeam() || target->HasAura(SPELL_WINTERGRASP_TELEPORT_TRIGGER)) return SPELL_FAILED_BAD_TARGETS; return SPELL_CAST_OK; } diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPEP.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPEP.cpp index 2a94ddb3134..2e911406979 100755 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPEP.cpp +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPEP.cpp @@ -693,7 +693,7 @@ void OutdoorPvPEP::BuffTeams() { for (PlayerSet::iterator itr = m_players[0].begin(); itr != m_players[0].end(); ++itr) { - Player* player = *itr; + if (Player* player = ObjectAccessor::FindPlayer(*itr)) { for (int i = 0; i < 4; ++i) player->RemoveAurasDueToSpell(EP_AllianceBuffs[i]); @@ -703,7 +703,7 @@ void OutdoorPvPEP::BuffTeams() } for (PlayerSet::iterator itr = m_players[1].begin(); itr != m_players[1].end(); ++itr) { - Player* player = *itr; + if (Player* player = ObjectAccessor::FindPlayer(*itr)) { for (int i = 0; i < 4; ++i) player->RemoveAurasDueToSpell(EP_HordeBuffs[i]); diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp index 9572125a4bd..fdf6533a64b 100755 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp @@ -296,9 +296,12 @@ void OPvPCapturePointTF::ChangeState() uint32 alliance_towers = ((OutdoorPvPTF*)m_PvP)->GetAllianceTowersControlled(); if (alliance_towers < TF_TOWER_NUM) ((OutdoorPvPTF*)m_PvP)->SetAllianceTowersControlled(++alliance_towers); + sWorld->SendZoneText(OutdoorPvPTFBuffZones[0], sObjectMgr->GetTrinityStringForDBCLocale(LANG_OPVP_TF_CAPTURE_A)); + for (PlayerSet::iterator itr = m_activePlayers[0].begin(); itr != m_activePlayers[0].end(); ++itr) - (*itr)->AreaExploredOrEventHappens(TF_ALLY_QUEST); + if (Player* player = ObjectAccessor::FindPlayer(*itr)) + player->AreaExploredOrEventHappens(TF_ALLY_QUEST); break; } case OBJECTIVESTATE_HORDE: @@ -308,9 +311,12 @@ void OPvPCapturePointTF::ChangeState() uint32 horde_towers = ((OutdoorPvPTF*)m_PvP)->GetHordeTowersControlled(); if (horde_towers < TF_TOWER_NUM) ((OutdoorPvPTF*)m_PvP)->SetHordeTowersControlled(++horde_towers); + sWorld->SendZoneText(OutdoorPvPTFBuffZones[0], sObjectMgr->GetTrinityStringForDBCLocale(LANG_OPVP_TF_CAPTURE_H)); + for (PlayerSet::iterator itr = m_activePlayers[1].begin(); itr != m_activePlayers[1].end(); ++itr) - (*itr)->AreaExploredOrEventHappens(TF_HORDE_QUEST); + if (Player* player = ObjectAccessor::FindPlayer(*itr)) + player->AreaExploredOrEventHappens(TF_HORDE_QUEST); break; } case OBJECTIVESTATE_NEUTRAL: diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp index 4f8fc917424..0f3bcce6493 100644 --- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp +++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp @@ -80,8 +80,8 @@ public: void SonicBoomEffect() { - std::list<HostileReference*> t_list = me->getThreatManager().getThreatList(); - for (std::list<HostileReference*>::const_iterator itr = t_list.begin(); itr!= t_list.end(); ++itr) + ThreatContainer::StorageType const &t_list = me->getThreatManager().getThreatList(); + for (ThreatContainer::StorageType::const_iterator itr = t_list.begin(); itr!= t_list.end(); ++itr) { Unit* target = Unit::GetUnit(*me, (*itr)->getUnitGuid()); if (target && target->GetTypeId() == TYPEID_PLAYER) @@ -165,8 +165,8 @@ public: // Thundering Storm if (ThunderingStorm_Timer <= diff) { - std::list<HostileReference*>& m_threatlist = me->getThreatManager().getThreatList(); - for (std::list<HostileReference*>::const_iterator i = m_threatlist.begin(); i != m_threatlist.end(); ++i) + ThreatContainer::StorageType threatlist = me->getThreatManager().getThreatList(); + for (ThreatContainer::StorageType::const_iterator i = threatlist.begin(); i != threatlist.end(); ++i) if (Unit* target = Unit::GetUnit(*me, (*i)->getUnitGuid())) if (target->isAlive() && !me->IsWithinDist(target, 35, false)) DoCast(target, SPELL_THUNDERING_STORM, true); @@ -188,8 +188,8 @@ public: return; if (!me->IsWithinMeleeRange(me->getVictim())) { - std::list<HostileReference*>& m_threatlist = me->getThreatManager().getThreatList(); - for (std::list<HostileReference*>::const_iterator i = m_threatlist.begin(); i != m_threatlist.end(); ++i) + ThreatContainer::StorageType threatlist = me->getThreatManager().getThreatList(); + for (ThreatContainer::StorageType::const_iterator i = threatlist.begin(); i != threatlist.end(); ++i) if (Unit* target = Unit::GetUnit(*me, (*i)->getUnitGuid())) if (target->isAlive() && me->IsWithinMeleeRange(target)) { @@ -201,7 +201,6 @@ public: DoMeleeAttackIfReady(); } }; - }; void AddSC_boss_murmur() diff --git a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp index 6fd6f61c061..f812b1b35cd 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp @@ -46,9 +46,9 @@ EndScriptData */ #define SOUND_AKAMA_LEAVE 11390 // Self explanatory -const char* SAY_KILL1 = "Who shall be next to taste my blades?!"; +char const* SAY_KILL1 = "Who shall be next to taste my blades?!"; #define SOUND_KILL1 11473 -const char* SAY_KILL2 = "This is too easy!"; +char const* SAY_KILL2 = "This is too easy!"; #define SOUND_KILL2 11472 // I think I'll fly now and let my subordinates take you on @@ -254,7 +254,6 @@ struct Yells }; static const Yells Conversation[22] = - { {11463, "Akama... your duplicity is hardly surprising. I should have slaughtered you and your malformed brethren long ago.", ILLIDAN_STORMRAGE, 8000, 0, true}, {0, "", ILLIDAN_STORMRAGE, 5000, 396, true}, @@ -464,7 +463,6 @@ public: DoMeleeAttackIfReady(); } }; - }; /************************************** Illidan's AI* **************************************/ @@ -614,7 +612,8 @@ public: void DeleteFromThreatList(uint64 TargetGUID) { - for (std::list<HostileReference*>::const_iterator itr = me->getThreatManager().getThreatList().begin(); itr != me->getThreatManager().getThreatList().end(); ++itr) + ThreatContainer::StorageType threatlist = me->getThreatManager().getThreatList(); + for (ThreatContainer::StorageType::const_iterator itr = threatlist.begin(); itr != threatlist.end(); ++itr) { if ((*itr)->getUnitGuid() == TargetGUID) { @@ -1151,7 +1150,6 @@ public: } } }; - }; /********************************** End of Illidan AI* *****************************************/ @@ -1378,7 +1376,6 @@ public: DoMeleeAttackIfReady(); } }; - }; class npc_akama_illidan : public CreatureScript @@ -1491,9 +1488,9 @@ public: void KillAllElites() { - std::list<HostileReference*>& threatList = me->getThreatManager().getThreatList(); + ThreatContainer::StorageType const &threatList = me->getThreatManager().getThreatList(); std::vector<Unit*> eliteList; - for (std::list<HostileReference*>::const_iterator itr = threatList.begin(); itr != threatList.end(); ++itr) + for (ThreatContainer::StorageType::const_iterator itr = threatList.begin(); itr != threatList.end(); ++itr) { Unit* unit = Unit::GetUnit(*me, (*itr)->getUnitGuid()); if (unit && unit->GetEntry() == ILLIDARI_ELITE) @@ -1649,7 +1646,8 @@ public: void HandleChannelSequence() { - Unit* Channel = NULL, *Spirit[2] = { NULL, NULL }; + Unit* Channel = NULL; + Unit* Spirit[2] = { NULL, NULL }; if (ChannelCount <= 5) { Channel = Unit::GetUnit(*me, ChannelGUID); @@ -1840,7 +1838,6 @@ public: { return new npc_akama_illidanAI(creature); } - }; void boss_illidan_stormrage::boss_illidan_stormrageAI::Reset() @@ -2000,7 +1997,6 @@ void boss_illidan_stormrage::boss_illidan_stormrageAI::HandleTalkSequence() Akama->SetPosition(x, y, z, 0.0f); Akama->MonsterMoveWithSpeed(x, y, z, 0); // Illidan must not die until Akama arrives. Akama->GetMotionMaster()->MoveChase(me); - } } break; @@ -2194,7 +2190,6 @@ public: me->SetDisplayId(21431);// appear when hit by Illidan's glaive } }; - }; class mob_parasitic_shadowfiend : public CreatureScript diff --git a/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp b/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp index ec9e4e116bf..5ab9dcab667 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp @@ -128,7 +128,6 @@ public: void JustDied(Unit* /*killer*/); }; - }; class boss_reliquary_of_souls : public CreatureScript @@ -233,9 +232,8 @@ public: if (!target) return; - std::list<HostileReference*>& m_threatlist = target->getThreatManager().getThreatList(); - std::list<HostileReference*>::const_iterator itr = m_threatlist.begin(); - for (; itr != m_threatlist.end(); ++itr) + ThreatContainer::StorageType threatlist = target->getThreatManager().getThreatList(); + for (ThreatContainer::StorageType::const_iterator itr = threatlist.begin(); itr != threatlist.end(); ++itr) { Unit* unit = Unit::GetUnit(*me, (*itr)->getUnitGuid()); if (unit) @@ -376,7 +374,6 @@ public: } else Timer -= diff; } }; - }; void npc_enslaved_soul::npc_enslaved_soulAI::JustDied(Unit* /*killer*/) @@ -453,12 +450,12 @@ public: void CastFixate() { - std::list<HostileReference*>& m_threatlist = me->getThreatManager().getThreatList(); - if (m_threatlist.empty()) + ThreatContainer::StorageType const &threatlist = me->getThreatManager().getThreatList(); + if (threatlist.empty()) return; // No point continuing if empty threatlist. std::list<Unit*> targets; - std::list<HostileReference*>::const_iterator itr = m_threatlist.begin(); - for (; itr != m_threatlist.end(); ++itr) + ThreatContainer::StorageType::const_iterator itr = threatlist.begin(); + for (; itr != threatlist.end(); ++itr) { Unit* unit = Unit::GetUnit(*me, (*itr)->getUnitGuid()); if (unit && unit->isAlive() && (unit->GetTypeId() == TYPEID_PLAYER)) // Only alive players @@ -511,7 +508,6 @@ public: DoMeleeAttackIfReady(); } }; - }; class boss_essence_of_desire : public CreatureScript @@ -615,7 +611,6 @@ public: DoMeleeAttackIfReady(); } }; - }; class boss_essence_of_anger : public CreatureScript @@ -716,7 +711,6 @@ public: DoMeleeAttackIfReady(); } }; - }; void AddSC_boss_reliquary_of_souls() diff --git a/src/server/scripts/Outland/BlackTemple/boss_supremus.cpp b/src/server/scripts/Outland/BlackTemple/boss_supremus.cpp index e34a229eea5..77d1c86951b 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_supremus.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_supremus.cpp @@ -78,7 +78,6 @@ public: me->CastSpell(me, SPELL_MOLTEN_FLAME, true); } }; - }; class boss_supremus : public CreatureScript @@ -183,9 +182,9 @@ public: uint32 health = 0; Unit* target = NULL; - std::list<HostileReference*>& m_threatlist = me->getThreatManager().getThreatList(); - std::list<HostileReference*>::const_iterator i = m_threatlist.begin(); - for (i = m_threatlist.begin(); i!= m_threatlist.end(); ++i) + ThreatContainer::StorageType const &threatlist = me->getThreatManager().getThreatList(); + ThreatContainer::StorageType::const_iterator i = threatlist.begin(); + for (i = threatlist.begin(); i != threatlist.end(); ++i) { Unit* unit = Unit::GetUnit(*me, (*i)->getUnitGuid()); if (unit && me->IsWithinMeleeRange(unit)) @@ -258,7 +257,6 @@ public: DoMeleeAttackIfReady(); } }; - }; class npc_volcano : public CreatureScript @@ -303,9 +301,7 @@ public: } else wait -= diff; } - }; - }; void AddSC_boss_supremus() diff --git a/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp b/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp index 524992b3c44..9a200d07d2b 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp @@ -169,12 +169,12 @@ public: void CheckPlayers() { - std::list<HostileReference*>& m_threatlist = me->getThreatManager().getThreatList(); - if (m_threatlist.empty()) + ThreatContainer::StorageType const &threatlist = me->getThreatManager().getThreatList(); + if (threatlist.empty()) return; // No threat list. Don't continue. - std::list<HostileReference*>::const_iterator itr = m_threatlist.begin(); + ThreatContainer::StorageType::const_iterator itr = threatlist.begin(); std::list<Unit*> targets; - for (; itr != m_threatlist.end(); ++itr) + for (; itr != threatlist.end(); ++itr) { Unit* unit = Unit::GetUnit(*me, (*itr)->getUnitGuid()); if (unit && unit->isAlive()) @@ -207,7 +207,6 @@ public: } else CheckTeronTimer -= diff; } }; - }; class boss_teron_gorefiend : public CreatureScript @@ -317,20 +316,20 @@ public: return coord; } - void SetThreatList(Creature* Blossom) + void SetThreatList(Creature* blossom) { - if (!Blossom) + if (!blossom) return; - std::list<HostileReference*>& m_threatlist = me->getThreatManager().getThreatList(); - std::list<HostileReference*>::const_iterator i = m_threatlist.begin(); - for (i = m_threatlist.begin(); i != m_threatlist.end(); ++i) + ThreatContainer::StorageType const &threatlist = me->getThreatManager().getThreatList(); + ThreatContainer::StorageType::const_iterator i = threatlist.begin(); + for (i = threatlist.begin(); i != threatlist.end(); ++i) { Unit* unit = Unit::GetUnit(*me, (*i)->getUnitGuid()); if (unit && unit->isAlive()) { float threat = DoGetThreat(unit); - Blossom->AddThreat(unit, threat); + blossom->AddThreat(unit, threat); } } } @@ -344,26 +343,26 @@ public: /** WHAT IS FULLY NECESSARY FOR GOREFIEND TO BE 100% COMPLETE *****/ /************************************************************************/ - Unit* Ghost = NULL; + Unit* ghost = NULL; if (GhostGUID) - Ghost = Unit::GetUnit(*me, GhostGUID); - if (Ghost && Ghost->isAlive() && Ghost->HasAura(SPELL_SHADOW_OF_DEATH)) + ghost = Unit::GetUnit(*me, GhostGUID); + if (ghost && ghost->isAlive() && ghost->HasAura(SPELL_SHADOW_OF_DEATH)) { /*float x, y, z; - Ghost->GetPosition(x, y, z); + ghost->GetPosition(x, y, z); Creature* control = me->SummonCreature(CREATURE_GHOST, x, y, z, 0, TEMPSUMMON_TIMED_DESAWN, 30000); if (control) { - CAST_PLR(Ghost)->Possess(control); - Ghost->DealDamage(Ghost, Ghost->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, + CAST_PLR(ghost)->Possess(control); + ghost->DealDamage(ghost, ghost->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); }*/ for (uint8 i = 0; i < 4; ++i) { Creature* Construct = NULL; - float X = CalculateRandomLocation(Ghost->GetPositionX(), 10); - float Y = CalculateRandomLocation(Ghost->GetPositionY(), 10); - Construct = me->SummonCreature(CREATURE_SHADOWY_CONSTRUCT, X, Y, Ghost->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 45000); + float X = CalculateRandomLocation(ghost->GetPositionX(), 10); + float Y = CalculateRandomLocation(ghost->GetPositionY(), 10); + Construct = me->SummonCreature(CREATURE_SHADOWY_CONSTRUCT, X, Y, ghost->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 45000); if (Construct) { Construct->CastSpell(Construct, SPELL_PASSIVE_SHADOWFORM, true); @@ -511,7 +510,6 @@ public: DoMeleeAttackIfReady(); } }; - }; void AddSC_boss_teron_gorefiend() diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp index 81e03a19c1f..9b739a1a6ac 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp @@ -171,7 +171,6 @@ public: DoMeleeAttackIfReady(); } }; - }; //Original Leotheras the Blind AI @@ -263,7 +262,6 @@ public: Creature* binder = me->SummonCreature(MOB_SPELLBINDER, nx, ny, z, o, TEMPSUMMON_DEAD_DESPAWN, 0); if (binder) SpellBinderGUID[i] = binder->GetGUID(); - } } void MoveInLineOfSight(Unit* who) @@ -525,9 +523,9 @@ public: //Summon Inner Demon if (InnerDemons_Timer <= diff) { - std::list<HostileReference*>& ThreatList = me->getThreatManager().getThreatList(); + ThreatContainer::StorageType const & ThreatList = me->getThreatManager().getThreatList(); std::vector<Unit*> TargetList; - for (std::list<HostileReference*>::const_iterator itr = ThreatList.begin(); itr != ThreatList.end(); ++itr) + for (ThreatContainer::StorageType::const_iterator itr = ThreatList.begin(); itr != ThreatList.end(); ++itr) { Unit* tempTarget = Unit::GetUnit(*me, (*itr)->getUnitGuid()); if (tempTarget && tempTarget->GetTypeId() == TYPEID_PLAYER && tempTarget->GetGUID() != me->getVictim()->GetGUID() && TargetList.size()<5) @@ -602,7 +600,6 @@ public: } } }; - }; //Leotheras the Blind Demon Form AI @@ -812,7 +809,6 @@ public: void JustDied(Unit* /*killer*/) {} }; - }; void AddSC_boss_leotheras_the_blind() diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp index f60cc1d188c..29c87e57c83 100644 --- a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp +++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp @@ -176,7 +176,7 @@ struct advisorbase_ai : public ScriptedAI //reset encounter if (instance && (instance->GetData(DATA_KAELTHASEVENT) == 1 || instance->GetData(DATA_KAELTHASEVENT) == 3)) - if (Creature* Kaelthas = Unit::GetCreature((*me), instance->GetData64(DATA_KAELTHAS))) + if (Creature* Kaelthas = Unit::GetCreature(*me, instance->GetData64(DATA_KAELTHAS))) Kaelthas->AI()->EnterEvadeMode(); } @@ -344,7 +344,7 @@ class boss_kaelthas : public CreatureScript { for (uint8 i = 0; i < MAX_ADVISORS; ++i) { - if (Creature* creature = Unit::GetCreature((*me), m_auiAdvisorGuid[i])) + if (Creature* creature = Unit::GetCreature(*me, m_auiAdvisorGuid[i])) { creature->Respawn(); creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); @@ -379,7 +379,6 @@ class boss_kaelthas : public CreatureScript if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) AttackStart(target); - } else { @@ -499,7 +498,7 @@ class boss_kaelthas : public CreatureScript case 1: if (Phase_Timer <= diff) { - Advisor = (Unit::GetCreature((*me), m_auiAdvisorGuid[0])); + Advisor = (Unit::GetCreature(*me, m_auiAdvisorGuid[0])); if (Advisor) { @@ -517,7 +516,7 @@ class boss_kaelthas : public CreatureScript //Subphase 2 - Start case 2: - Advisor = (Unit::GetCreature((*me), m_auiAdvisorGuid[0])); + Advisor = (Unit::GetCreature(*me, m_auiAdvisorGuid[0])); if (Advisor && (Advisor->getStandState() == UNIT_STAND_STATE_DEAD)) { @@ -533,7 +532,7 @@ class boss_kaelthas : public CreatureScript case 3: if (Phase_Timer <= diff) { - Advisor = (Unit::GetCreature((*me), m_auiAdvisorGuid[1])); + Advisor = (Unit::GetCreature(*me, m_auiAdvisorGuid[1])); if (Advisor) { @@ -551,7 +550,7 @@ class boss_kaelthas : public CreatureScript //Subphase 3 - Start case 4: - Advisor = (Unit::GetCreature((*me), m_auiAdvisorGuid[1])); + Advisor = (Unit::GetCreature(*me, m_auiAdvisorGuid[1])); if (Advisor && (Advisor->getStandState() == UNIT_STAND_STATE_DEAD)) { @@ -567,7 +566,7 @@ class boss_kaelthas : public CreatureScript case 5: if (Phase_Timer <= diff) { - Advisor = (Unit::GetCreature((*me), m_auiAdvisorGuid[2])); + Advisor = (Unit::GetCreature(*me, m_auiAdvisorGuid[2])); if (Advisor) { @@ -585,7 +584,7 @@ class boss_kaelthas : public CreatureScript //Subphase 4 - Start case 6: - Advisor = (Unit::GetCreature((*me), m_auiAdvisorGuid[2])); + Advisor = (Unit::GetCreature(*me, m_auiAdvisorGuid[2])); if (Advisor && (Advisor->getStandState() == UNIT_STAND_STATE_DEAD)) { @@ -601,7 +600,7 @@ class boss_kaelthas : public CreatureScript case 7: if (Phase_Timer <= diff) { - Advisor = (Unit::GetCreature((*me), m_auiAdvisorGuid[3])); + Advisor = (Unit::GetCreature(*me, m_auiAdvisorGuid[3])); if (Advisor) { @@ -620,7 +619,7 @@ class boss_kaelthas : public CreatureScript //End of phase 1 case 8: - Advisor = (Unit::GetCreature((*me), m_auiAdvisorGuid[3])); + Advisor = (Unit::GetCreature(*me, m_auiAdvisorGuid[3])); if (Advisor && (Advisor->getStandState() == UNIT_STAND_STATE_DEAD)) { @@ -691,7 +690,7 @@ class boss_kaelthas : public CreatureScript Creature* Advisor; for (uint8 i = 0; i < MAX_ADVISORS; ++i) { - Advisor = Unit::GetCreature((*me), m_auiAdvisorGuid[i]); + Advisor = Unit::GetCreature(*me, m_auiAdvisorGuid[i]); if (!Advisor) sLog->outError(LOG_FILTER_TSCR, "SD2: Kael'Thas Advisor %u does not exist. Possibly despawned? Incorrectly Killed?", i); @@ -787,7 +786,7 @@ class boss_kaelthas : public CreatureScript if (me->getThreatManager().getThreatList().size() >= 2) for (uint32 i = 0; i < 3; ++i) { - sLog->outDebug(LOG_FILTER_TSCR, "SD2: Kael'Thas mind control not supported."); + sLog->outDebug(LOG_FILTER_TSCR, "Kael'Thas mind control not supported."); //DoCast(unit, SPELL_MIND_CONTROL); } @@ -879,11 +878,12 @@ class boss_kaelthas : public CreatureScript //Phase 5 if (Phase == 6) { - //GravityLapse_Timer if (GravityLapse_Timer <= diff) { - std::list<HostileReference*>::const_iterator i = me->getThreatManager().getThreatList().begin(); + ThreatContainer::StorageType threatlist = me->getThreatManager().getThreatList(); + ThreatContainer::StorageType::const_iterator i = threatlist.begin(); + switch (GravityLapse_Phase) { case 0: @@ -894,7 +894,7 @@ class boss_kaelthas : public CreatureScript me->MonsterMoveWithSpeed(afGravityPos[0], afGravityPos[1], afGravityPos[2], 0); // 1) Kael'thas will portal the whole raid right into his body - for (i = me->getThreatManager().getThreatList().begin(); i!= me->getThreatManager().getThreatList().end(); ++i) + for (i = threatlist.begin(); i != threatlist.end(); ++i) { Unit* unit = Unit::GetUnit(*me, (*i)->getUnitGuid()); if (unit && (unit->GetTypeId() == TYPEID_PLAYER)) @@ -915,7 +915,7 @@ class boss_kaelthas : public CreatureScript DoScriptText(RAND(SAY_GRAVITYLAPSE1, SAY_GRAVITYLAPSE2), me); // 2) At that point he will put a Gravity Lapse debuff on everyone - for (i = me->getThreatManager().getThreatList().begin(); i != me->getThreatManager().getThreatList().end(); ++i) + for (i = threatlist.begin(); i != threatlist.end(); ++i) { if (Unit* unit = Unit::GetUnit(*me, (*i)->getUnitGuid())) { @@ -948,7 +948,7 @@ class boss_kaelthas : public CreatureScript case 3: //Remove flight - for (i = me->getThreatManager().getThreatList().begin(); i!= me->getThreatManager().getThreatList().end(); ++i) + for (i = threatlist.begin(); i != threatlist.end(); ++i) { if (Unit* unit = Unit::GetUnit(*me, (*i)->getUnitGuid())) { @@ -1287,8 +1287,8 @@ class boss_grand_astromancer_capernian : public CreatureScript { bool InMeleeRange = false; Unit* target = NULL; - std::list<HostileReference*>& m_threatlist = me->getThreatManager().getThreatList(); - for (std::list<HostileReference*>::const_iterator i = m_threatlist.begin(); i!= m_threatlist.end(); ++i) + ThreatContainer::StorageType const &threatlist = me->getThreatManager().getThreatList(); + for (ThreatContainer::StorageType::const_iterator i = threatlist.begin(); i!= threatlist.end(); ++i) { Unit* unit = Unit::GetUnit(*me, (*i)->getUnitGuid()); //if in melee range diff --git a/src/server/scripts/Outland/netherstorm.cpp b/src/server/scripts/Outland/netherstorm.cpp index 480275c42bd..8533491c15f 100644 --- a/src/server/scripts/Outland/netherstorm.cpp +++ b/src/server/scripts/Outland/netherstorm.cpp @@ -323,22 +323,22 @@ public: { case 3726: //b'naar if ((player->GetQuestStatus(10299) == QUEST_STATUS_INCOMPLETE || player->GetQuestStatus(10329) == QUEST_STATUS_INCOMPLETE) && - player->HasItemCount(29366, 1)) + player->HasItemCount(29366)) manaforge = player->SummonCreature(ENTRY_BNAAR_C_CONSOLE, 2918.95f, 4189.98f, 161.88f, 0.34f, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 125000); break; case 3730: //coruu if ((player->GetQuestStatus(10321) == QUEST_STATUS_INCOMPLETE || player->GetQuestStatus(10330) == QUEST_STATUS_INCOMPLETE) && - player->HasItemCount(29396, 1)) + player->HasItemCount(29396)) manaforge = player->SummonCreature(ENTRY_CORUU_C_CONSOLE, 2426.77f, 2750.38f, 133.24f, 2.14f, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 125000); break; case 3734: //duro if ((player->GetQuestStatus(10322) == QUEST_STATUS_INCOMPLETE || player->GetQuestStatus(10338) == QUEST_STATUS_INCOMPLETE) && - player->HasItemCount(29397, 1)) + player->HasItemCount(29397)) manaforge = player->SummonCreature(ENTRY_DURO_C_CONSOLE, 2976.48f, 2183.29f, 163.20f, 1.85f, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 125000); break; case 3722: //ara if ((player->GetQuestStatus(10323) == QUEST_STATUS_INCOMPLETE || player->GetQuestStatus(10365) == QUEST_STATUS_INCOMPLETE) && - player->HasItemCount(29411, 1)) + player->HasItemCount(29411)) manaforge = player->SummonCreature(ENTRY_ARA_C_CONSOLE, 4013.71f, 4028.76f, 192.10f, 1.25f, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 125000); break; } @@ -704,7 +704,7 @@ public: if (creature->isQuestGiver()) player->PrepareQuestMenu(creature->GetGUID()); - if (player->GetQuestStatus(QUEST_ON_NETHERY_WINGS) == QUEST_STATUS_INCOMPLETE && !player->HasItemCount(29778, 1)) + if (player->GetQuestStatus(QUEST_ON_NETHERY_WINGS) == QUEST_STATUS_INCOMPLETE && !player->HasItemCount(29778)) player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID()); diff --git a/src/server/scripts/Outland/zangarmarsh.cpp b/src/server/scripts/Outland/zangarmarsh.cpp index aa51b532c27..a48866a2f83 100644 --- a/src/server/scripts/Outland/zangarmarsh.cpp +++ b/src/server/scripts/Outland/zangarmarsh.cpp @@ -249,7 +249,7 @@ public: break; case GOSSIP_ACTION_INFO_DEF + 2: { - if (!player->HasItemCount(24573, 1)) + if (!player->HasItemCount(24573)) { ItemPosCountVec dest; uint32 itemId = 24573; diff --git a/src/server/scripts/Spells/spell_rogue.cpp b/src/server/scripts/Spells/spell_rogue.cpp index ab6d0e95c1d..68cc50a3022 100644 --- a/src/server/scripts/Spells/spell_rogue.cpp +++ b/src/server/scripts/Spells/spell_rogue.cpp @@ -350,7 +350,7 @@ class spell_rog_deadly_poison : public SpellScriptLoader SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(enchant->spellid[s]); if (!spellInfo) { - sLog->outError(LOG_FILTER_SPELLS_AURAS, "Player::CastItemCombatSpell Enchant %i, player (Name: %s, GUID: %u) cast unknown spell %i", enchant->ID, player->GetName(), player->GetGUIDLow(), enchant->spellid[s]); + sLog->outError(LOG_FILTER_SPELLS_AURAS, "Player::CastItemCombatSpell Enchant %i, player (Name: %s, GUID: %u) cast unknown spell %i", enchant->ID, player->GetName().c_str(), player->GetGUIDLow(), enchant->spellid[s]); continue; } diff --git a/src/server/scripts/World/areatrigger_scripts.cpp b/src/server/scripts/World/areatrigger_scripts.cpp index f302009a4f3..67aeda314bf 100644 --- a/src/server/scripts/World/areatrigger_scripts.cpp +++ b/src/server/scripts/World/areatrigger_scripts.cpp @@ -235,21 +235,19 @@ enum eWaygate QUEST_THE_MAKERS_OVERLOOK = 12613, QUEST_THE_MAKERS_PERCH = 12559, + QUEST_MEETING_A_GREAT_ONE = 13956, }; class AreaTrigger_at_sholazar_waygate : public AreaTriggerScript { public: - AreaTrigger_at_sholazar_waygate() - : AreaTriggerScript("at_sholazar_waygate") - { - } + AreaTrigger_at_sholazar_waygate() : AreaTriggerScript("at_sholazar_waygate") {} bool OnTrigger(Player* player, AreaTriggerEntry const* trigger) { - if (player->GetQuestStatus(QUEST_THE_MAKERS_OVERLOOK) == QUEST_STATUS_REWARDED && !player->isDead() && - player->GetQuestStatus(QUEST_THE_MAKERS_PERCH) == QUEST_STATUS_REWARDED) + if (!player->isDead() && (player->GetQuestStatus(QUEST_MEETING_A_GREAT_ONE) != QUEST_STATUS_NONE || + (player->GetQuestStatus(QUEST_THE_MAKERS_OVERLOOK) == QUEST_STATUS_REWARDED && player->GetQuestStatus(QUEST_THE_MAKERS_PERCH) == QUEST_STATUS_REWARDED))) { switch (trigger->id) { @@ -303,76 +301,6 @@ class AreaTrigger_at_nats_landing : public AreaTriggerScript }; /*###### -## at_bring_your_orphan_to -######*/ - -enum BringYourOrphanTo -{ - QUEST_DOWN_AT_THE_DOCKS = 910, - QUEST_GATEWAY_TO_THE_FRONTIER = 911, - QUEST_LORDAERON_THRONE_ROOM = 1800, - QUEST_BOUGHT_OF_ETERNALS = 1479, - QUEST_SPOOKY_LIGHTHOUSE = 1687, - QUEST_STONEWROUGHT_DAM = 1558, - QUEST_DARK_PORTAL_H = 10951, - QUEST_DARK_PORTAL_A = 10952, - - AT_DOWN_AT_THE_DOCKS = 3551, - AT_GATEWAY_TO_THE_FRONTIER = 3549, - AT_LORDAERON_THRONE_ROOM = 3547, - AT_BOUGHT_OF_ETERNALS = 3546, - AT_SPOOKY_LIGHTHOUSE = 3552, - AT_STONEWROUGHT_DAM = 3548, - AT_DARK_PORTAL = 4356, - - AURA_ORPHAN_OUT = 58818, -}; - -class AreaTrigger_at_bring_your_orphan_to : public AreaTriggerScript -{ - public: - AreaTrigger_at_bring_your_orphan_to() : AreaTriggerScript("at_bring_your_orphan_to") { } - - bool OnTrigger(Player* player, AreaTriggerEntry const* trigger) - { - uint32 questId = 0; - - if (player->isDead() || !player->HasAura(AURA_ORPHAN_OUT)) - return false; - - switch (trigger->id) - { - case AT_DOWN_AT_THE_DOCKS: - questId = QUEST_DOWN_AT_THE_DOCKS; - break; - case AT_GATEWAY_TO_THE_FRONTIER: - questId = QUEST_GATEWAY_TO_THE_FRONTIER; - break; - case AT_LORDAERON_THRONE_ROOM: - questId = QUEST_LORDAERON_THRONE_ROOM; - break; - case AT_BOUGHT_OF_ETERNALS: - questId = QUEST_BOUGHT_OF_ETERNALS; - break; - case AT_SPOOKY_LIGHTHOUSE: - questId = QUEST_SPOOKY_LIGHTHOUSE; - break; - case AT_STONEWROUGHT_DAM: - questId = QUEST_STONEWROUGHT_DAM; - break; - case AT_DARK_PORTAL: - questId = player->GetTeam() == ALLIANCE ? QUEST_DARK_PORTAL_A : QUEST_DARK_PORTAL_H; - break; - } - - if (questId && player->GetQuestStatus(questId) == QUEST_STATUS_INCOMPLETE) - player->AreaExploredOrEventHappens(questId); - - return true; - } -}; - -/*###### ## at_brewfest ######*/ @@ -505,7 +433,6 @@ void AddSC_areatrigger_scripts() new AreaTrigger_at_last_rites(); new AreaTrigger_at_sholazar_waygate(); new AreaTrigger_at_nats_landing(); - new AreaTrigger_at_bring_your_orphan_to(); new AreaTrigger_at_brewfest(); new AreaTrigger_at_area_52_entrance(); } diff --git a/src/server/scripts/World/chat_log.cpp b/src/server/scripts/World/chat_log.cpp index fb540c177bc..236436b229b 100755 --- a/src/server/scripts/World/chat_log.cpp +++ b/src/server/scripts/World/chat_log.cpp @@ -32,25 +32,25 @@ public: case CHAT_MSG_ADDON: if (sWorld->getBoolConfig(CONFIG_CHATLOG_ADDON)) sLog->outDebug(LOG_FILTER_PLAYER_CHATLOG, "[ADDON] Player %s sends: %s", - player->GetName(), msg.c_str()); + player->GetName().c_str(), msg.c_str()); break; case CHAT_MSG_SAY: if (sWorld->getBoolConfig(CONFIG_CHATLOG_PUBLIC)) sLog->outDebug(LOG_FILTER_PLAYER_CHATLOG, "[SAY] Player %s says (language %u): %s", - player->GetName(), lang, msg.c_str()); + player->GetName().c_str(), lang, msg.c_str()); break; case CHAT_MSG_EMOTE: if (sWorld->getBoolConfig(CONFIG_CHATLOG_PUBLIC)) sLog->outDebug(LOG_FILTER_PLAYER_CHATLOG, "[TEXTEMOTE] Player %s emotes: %s", - player->GetName(), msg.c_str()); + player->GetName().c_str(), msg.c_str()); break; case CHAT_MSG_YELL: if (sWorld->getBoolConfig(CONFIG_CHATLOG_PUBLIC)) sLog->outDebug(LOG_FILTER_PLAYER_CHATLOG, "[YELL] Player %s yells (language %u): %s", - player->GetName(), lang, msg.c_str()); + player->GetName().c_str(), lang, msg.c_str()); break; } } @@ -59,10 +59,10 @@ public: { if (lang != LANG_ADDON && sWorld->getBoolConfig(CONFIG_CHATLOG_WHISPER)) sLog->outDebug(LOG_FILTER_PLAYER_CHATLOG, "[WHISPER] Player %s tells %s: %s", - player->GetName(), receiver ? receiver->GetName() : "<unknown>", msg.c_str()); + player->GetName().c_str(), receiver ? receiver->GetName().c_str() : "<unknown>", msg.c_str()); else if (lang == LANG_ADDON && sWorld->getBoolConfig(CONFIG_CHATLOG_ADDON)) sLog->outDebug(LOG_FILTER_PLAYER_CHATLOG, "[ADDON] Player %s tells %s: %s", - player->GetName(), receiver ? receiver->GetName() : "<unknown>", msg.c_str()); + player->GetName().c_str(), receiver ? receiver->GetName().c_str() : "<unknown>", msg.c_str()); } void OnChat(Player* player, uint32 type, uint32 lang, std::string& msg, Group* group) @@ -74,52 +74,52 @@ public: case CHAT_MSG_PARTY: if (lang != LANG_ADDON && sWorld->getBoolConfig(CONFIG_CHATLOG_PARTY)) sLog->outDebug(LOG_FILTER_PLAYER_CHATLOG, "[PARTY] Player %s tells group with leader %s: %s", - player->GetName(), group ? group->GetLeaderName() : "<unknown>", msg.c_str()); + player->GetName().c_str(), group ? group->GetLeaderName() : "<unknown>", msg.c_str()); else if (lang == LANG_ADDON && sWorld->getBoolConfig(CONFIG_CHATLOG_ADDON)) sLog->outDebug(LOG_FILTER_PLAYER_CHATLOG, "[ADDON] Player %s tells group with leader %s: %s", - player->GetName(), group ? group->GetLeaderName() : "<unknown>", msg.c_str()); + player->GetName().c_str(), group ? group->GetLeaderName() : "<unknown>", msg.c_str()); break; case CHAT_MSG_PARTY_LEADER: if (sWorld->getBoolConfig(CONFIG_CHATLOG_PARTY)) sLog->outDebug(LOG_FILTER_PLAYER_CHATLOG, "[PARTY] Leader %s tells group: %s", - player->GetName(), msg.c_str()); + player->GetName().c_str(), msg.c_str()); break; case CHAT_MSG_RAID: if (lang != LANG_ADDON && sWorld->getBoolConfig(CONFIG_CHATLOG_RAID)) sLog->outDebug(LOG_FILTER_PLAYER_CHATLOG, "[RAID] Player %s tells raid with leader %s: %s", - player->GetName(), group ? group->GetLeaderName() : "<unknown>", msg.c_str()); + player->GetName().c_str(), group ? group->GetLeaderName() : "<unknown>", msg.c_str()); else if (lang == LANG_ADDON && sWorld->getBoolConfig(CONFIG_CHATLOG_ADDON)) sLog->outDebug(LOG_FILTER_PLAYER_CHATLOG, "[ADDON] Player %s tells raid with leader %s: %s", - player->GetName(), group ? group->GetLeaderName() : "<unknown>", msg.c_str()); + player->GetName().c_str(), group ? group->GetLeaderName() : "<unknown>", msg.c_str()); break; case CHAT_MSG_RAID_LEADER: if (sWorld->getBoolConfig(CONFIG_CHATLOG_RAID)) sLog->outDebug(LOG_FILTER_PLAYER_CHATLOG, "[RAID] Leader player %s tells raid: %s", - player->GetName(), msg.c_str()); + player->GetName().c_str(), msg.c_str()); break; case CHAT_MSG_RAID_WARNING: if (sWorld->getBoolConfig(CONFIG_CHATLOG_RAID)) sLog->outDebug(LOG_FILTER_PLAYER_CHATLOG, "[RAID] Leader player %s warns raid with: %s", - player->GetName(), msg.c_str()); + player->GetName().c_str(), msg.c_str()); break; case CHAT_MSG_BATTLEGROUND: if (lang != LANG_ADDON && sWorld->getBoolConfig(CONFIG_CHATLOG_BGROUND)) sLog->outDebug(LOG_FILTER_PLAYER_CHATLOG, "[BATTLEGROUND] Player %s tells battleground with leader %s: %s", - player->GetName(), group ? group->GetLeaderName() : "<unknown>", msg.c_str()); + player->GetName().c_str(), group ? group->GetLeaderName() : "<unknown>", msg.c_str()); else if (lang == LANG_ADDON && sWorld->getBoolConfig(CONFIG_CHATLOG_ADDON)) sLog->outDebug(LOG_FILTER_PLAYER_CHATLOG, "[ADDON] Player %s tells battleground with leader %s: %s", - player->GetName(), group ? group->GetLeaderName() : "<unknown>", msg.c_str()); + player->GetName().c_str(), group ? group->GetLeaderName() : "<unknown>", msg.c_str()); break; case CHAT_MSG_BATTLEGROUND_LEADER: if (sWorld->getBoolConfig(CONFIG_CHATLOG_BGROUND)) sLog->outDebug(LOG_FILTER_PLAYER_CHATLOG, "[BATTLEGROUND] Leader player %s tells battleground: %s", - player->GetName(), msg.c_str()); + player->GetName().c_str(), msg.c_str()); break; } } @@ -131,16 +131,16 @@ public: case CHAT_MSG_GUILD: if (lang != LANG_ADDON && sWorld->getBoolConfig(CONFIG_CHATLOG_GUILD)) sLog->outDebug(LOG_FILTER_PLAYER_CHATLOG, "[GUILD] Player %s tells guild %s: %s", - player->GetName(), guild ? guild->GetName().c_str() : "<unknown>", msg.c_str()); + player->GetName().c_str(), guild ? guild->GetName().c_str() : "<unknown>", msg.c_str()); else if (lang == LANG_ADDON && sWorld->getBoolConfig(CONFIG_CHATLOG_ADDON)) sLog->outDebug(LOG_FILTER_PLAYER_CHATLOG, "[ADDON] Player %s sends to guild %s: %s", - player->GetName(), guild ? guild->GetName().c_str() : "<unknown>", msg.c_str()); + player->GetName().c_str(), guild ? guild->GetName().c_str() : "<unknown>", msg.c_str()); break; case CHAT_MSG_OFFICER: if (sWorld->getBoolConfig(CONFIG_CHATLOG_GUILD)) sLog->outDebug(LOG_FILTER_PLAYER_CHATLOG, "[OFFICER] Player %s tells guild %s officers: %s", - player->GetName(), guild ? guild->GetName().c_str() : "<unknown>", msg.c_str()); + player->GetName().c_str(), guild ? guild->GetName().c_str() : "<unknown>", msg.c_str()); break; } } @@ -155,10 +155,10 @@ public: if (sWorld->getBoolConfig(CONFIG_CHATLOG_SYSCHAN) && isSystem) sLog->outDebug(LOG_FILTER_PLAYER_CHATLOG, "[SYSCHAN] Player %s tells channel %s: %s", - player->GetName(), channel->GetName().c_str(), msg.c_str()); + player->GetName().c_str(), channel->GetName().c_str(), msg.c_str()); else if (sWorld->getBoolConfig(CONFIG_CHATLOG_CHANNEL)) sLog->outDebug(LOG_FILTER_PLAYER_CHATLOG, "[CHANNEL] Player %s tells channel %s: %s", - player->GetName(), channel ? channel->GetName().c_str() : "<unknown>", msg.c_str()); + player->GetName().c_str(), channel ? channel->GetName().c_str() : "<unknown>", msg.c_str()); } }; diff --git a/src/server/scripts/World/go_scripts.cpp b/src/server/scripts/World/go_scripts.cpp index 2a5d58122ed..ddb0044a888 100644 --- a/src/server/scripts/World/go_scripts.cpp +++ b/src/server/scripts/World/go_scripts.cpp @@ -677,28 +677,28 @@ public: switch (go->GetEntry()) { case MATRIX_PUNCHOGRAPH_3005_A: - if (player->HasItemCount(ITEM_WHITE_PUNCH_CARD, 1)) + if (player->HasItemCount(ITEM_WHITE_PUNCH_CARD)) { player->DestroyItemCount(ITEM_WHITE_PUNCH_CARD, 1, true); player->CastSpell(player, SPELL_YELLOW_PUNCH_CARD, true); } break; case MATRIX_PUNCHOGRAPH_3005_B: - if (player->HasItemCount(ITEM_YELLOW_PUNCH_CARD, 1)) + if (player->HasItemCount(ITEM_YELLOW_PUNCH_CARD)) { player->DestroyItemCount(ITEM_YELLOW_PUNCH_CARD, 1, true); player->CastSpell(player, SPELL_BLUE_PUNCH_CARD, true); } break; case MATRIX_PUNCHOGRAPH_3005_C: - if (player->HasItemCount(ITEM_BLUE_PUNCH_CARD, 1)) + if (player->HasItemCount(ITEM_BLUE_PUNCH_CARD)) { player->DestroyItemCount(ITEM_BLUE_PUNCH_CARD, 1, true); player->CastSpell(player, SPELL_RED_PUNCH_CARD, true); } break; case MATRIX_PUNCHOGRAPH_3005_D: - if (player->HasItemCount(ITEM_RED_PUNCH_CARD, 1)) + if (player->HasItemCount(ITEM_RED_PUNCH_CARD)) { player->DestroyItemCount(ITEM_RED_PUNCH_CARD, 1, true); player->CastSpell(player, SPELL_PRISMATIC_PUNCH_CARD, true); @@ -884,7 +884,7 @@ public: bool OnGossipHello(Player* player, GameObject* /*go*/) { - if (player->HasItemCount(ITEM_CUERGOS_KEY, 1)) + if (player->HasItemCount(ITEM_CUERGOS_KEY)) return false; player->CastSpell(player, SPELL_SUMMON_PIRATES_TREASURE_AND_TRIGGER_MOB, true); @@ -910,7 +910,7 @@ public: bool OnGossipHello(Player* player, GameObject* go) { - if (!player->HasItemCount(ITEM_TELEPORTER_POWER_PACK, 1)) + if (!player->HasItemCount(ITEM_TELEPORTER_POWER_PACK)) return false; go->SummonCreature(NPC_IMAGE_WIND_TRADER, go->GetPositionX(), go->GetPositionY(), go->GetPositionZ(), go->GetAngle(player), TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 60000); @@ -998,7 +998,7 @@ class go_soulwell : public GameObjectScript return true; // Don't try to add a stone if we already have one. - if (player->HasItemCount(_stoneId, 1)) + if (player->HasItemCount(_stoneId)) { if (SpellInfo const* spell = sSpellMgr->GetSpellInfo(_stoneSpell)) Spell::SendCastResult(player, spell, 0, SPELL_FAILED_TOO_MANY_OF_ITEM); @@ -1007,7 +1007,7 @@ class go_soulwell : public GameObjectScript owner->CastSpell(player, _stoneSpell, true); // Item has to actually be created to remove a charge on the well. - if (player->HasItemCount(_stoneId, 1)) + if (player->HasItemCount(_stoneId)) go->AddUse(); return false; @@ -1158,7 +1158,7 @@ public: go->CastSpell(target, SPELL_INDISPOSED_III); } go->CastSpell(player, SPELL_INDISPOSED); - if (player->HasItemCount(ITEM_ANDERHOLS_SLIDER_CIDER, 1)) + if (player->HasItemCount(ITEM_ANDERHOLS_SLIDER_CIDER)) go->CastSpell(player, SPELL_CREATE_AMBERSEEDS); return true; } diff --git a/src/server/scripts/World/npc_taxi.cpp b/src/server/scripts/World/npc_taxi.cpp index 6241978fbd2..efdd4da73d6 100644 --- a/src/server/scripts/World/npc_taxi.cpp +++ b/src/server/scripts/World/npc_taxi.cpp @@ -77,7 +77,7 @@ public: player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SUSURRUS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); break; case 20903: // Netherstorm - Protectorate Nether Drake - if (player->GetQuestStatus(10438) == QUEST_STATUS_INCOMPLETE && player->HasItemCount(29778, 1)) + if (player->GetQuestStatus(10438) == QUEST_STATUS_INCOMPLETE && player->HasItemCount(29778)) player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_NETHER_DRAKE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); break; case 18725: // Old Hillsbrad Foothills - Brazen @@ -203,7 +203,7 @@ public: player->ActivateTaxiPathTo(627); //TaxiPath 627 (possibly 627+628(152->153->154->155)) break; case GOSSIP_ACTION_INFO_DEF + 2: - if (!player->HasItemCount(25853, 1)) + if (!player->HasItemCount(25853)) player->SEND_GOSSIP_MENU(9780, creature->GetGUID()); else { diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp index b291b9751b4..4f0687ef11d 100644 --- a/src/server/scripts/World/npcs_special.cpp +++ b/src/server/scripts/World/npcs_special.cpp @@ -1268,7 +1268,7 @@ public: if (player->GetSpecsCount() == 1 && creature->isCanTrainingAndResetTalentsOf(player) && player->getLevel() >= sWorld->getIntConfig(CONFIG_MIN_DUALSPEC_LEVEL)) player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, GOSSIP_HELLO_ROGUE3, GOSSIP_SENDER_MAIN, GOSSIP_OPTION_LEARNDUALSPEC); - if (player->getClass() == CLASS_ROGUE && player->getLevel() >= 24 && !player->HasItemCount(17126, 1) && !player->GetQuestRewardStatus(6681)) + if (player->getClass() == CLASS_ROGUE && player->getLevel() >= 24 && !player->HasItemCount(17126) && !player->GetQuestRewardStatus(6681)) { player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_HELLO_ROGUE2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); player->SEND_GOSSIP_MENU(5996, creature->GetGUID()); |
