diff options
Diffstat (limited to 'src/server/scripts')
451 files changed, 3149 insertions, 2062 deletions
diff --git a/src/server/scripts/Commands/CMakeLists.txt b/src/server/scripts/Commands/CMakeLists.txt index 7b9e2444952..83e97b2c80d 100644 --- a/src/server/scripts/Commands/CMakeLists.txt +++ b/src/server/scripts/Commands/CMakeLists.txt @@ -35,6 +35,7 @@ set(scripts_STAT_SRCS Commands/cs_modify.cpp Commands/cs_npc.cpp Commands/cs_quest.cpp + Commands/cs_rbac.cpp Commands/cs_reload.cpp Commands/cs_reset.cpp Commands/cs_tele.cpp diff --git a/src/server/scripts/Commands/cs_account.cpp b/src/server/scripts/Commands/cs_account.cpp index 3a20a03bb4a..4dc44bbfc58 100644 --- a/src/server/scripts/Commands/cs_account.cpp +++ b/src/server/scripts/Commands/cs_account.cpp @@ -106,7 +106,7 @@ public: if (!accountName || !password) return false; - AccountOpResult result = AccountMgr::CreateAccount(std::string(accountName), std::string(password)); + AccountOpResult result = sAccountMgr->CreateAccount(std::string(accountName), std::string(password)); switch (result) { case AOR_OK: @@ -503,36 +503,8 @@ public: return false; } - // If gmRealmID is -1, delete all values for the account id, else, insert values for the specific realmID - PreparedStatement* stmt; - - if (gmRealmID == -1) - { - stmt = LoginDatabase.GetPreparedStatement(LOGIN_DEL_ACCOUNT_ACCESS); - - stmt->setUInt32(0, targetAccountId); - } - else - { - stmt = LoginDatabase.GetPreparedStatement(LOGIN_DEL_ACCOUNT_ACCESS_BY_REALM); - - stmt->setUInt32(0, targetAccountId); - stmt->setUInt32(1, realmID); - } - - LoginDatabase.Execute(stmt); - - if (gm != 0) - { - stmt = LoginDatabase.GetPreparedStatement(LOGIN_INS_ACCOUNT_ACCESS); - - stmt->setUInt32(0, targetAccountId); - stmt->setUInt8(1, uint8(gm)); - stmt->setInt32(2, gmRealmID); - - LoginDatabase.Execute(stmt); - } - + RBACData* rbac = isAccountNameGiven ? NULL : handler->getSelectedPlayer()->GetSession()->GetRBACData(); + sAccountMgr->UpdateAccountAccess(rbac, targetAccountId, uint8(gm), gmRealmID); handler->PSendSysMessage(LANG_YOU_CHANGE_SECURITY, targetAccountName.c_str(), gm); return true; diff --git a/src/server/scripts/Commands/cs_gm.cpp b/src/server/scripts/Commands/cs_gm.cpp index 932bb562f11..168a5ec60b8 100644 --- a/src/server/scripts/Commands/cs_gm.cpp +++ b/src/server/scripts/Commands/cs_gm.cpp @@ -59,30 +59,32 @@ public: // Enables or disables hiding of the staff badge static bool HandleGMChatCommand(ChatHandler* handler, char const* args) { - if (!*args) + if (WorldSession* session = handler->GetSession()) { - WorldSession* session = handler->GetSession(); - if (!AccountMgr::IsPlayerAccount(session->GetSecurity()) && session->GetPlayer()->isGMChat()) - session->SendNotification(LANG_GM_CHAT_ON); - else - session->SendNotification(LANG_GM_CHAT_OFF); - return true; - } + if (!*args) + { + if (session->HasPermission(RBAC_PERM_CHAT_USE_STAFF_BADGE) && session->GetPlayer()->isGMChat()) + session->SendNotification(LANG_GM_CHAT_ON); + else + session->SendNotification(LANG_GM_CHAT_OFF); + return true; + } - std::string param = (char*)args; + std::string param = (char*)args; - if (param == "on") - { - handler->GetSession()->GetPlayer()->SetGMChat(true); - handler->GetSession()->SendNotification(LANG_GM_CHAT_ON); - return true; - } + if (param == "on") + { + session->GetPlayer()->SetGMChat(true); + session->SendNotification(LANG_GM_CHAT_ON); + return true; + } - if (param == "off") - { - handler->GetSession()->GetPlayer()->SetGMChat(false); - handler->GetSession()->SendNotification(LANG_GM_CHAT_OFF); - return true; + if (param == "off") + { + session->GetPlayer()->SetGMChat(false); + session->SendNotification(LANG_GM_CHAT_OFF); + return true; + } } handler->SendSysMessage(LANG_USE_BOL); @@ -126,7 +128,9 @@ public: for (HashMapHolder<Player>::MapType::const_iterator itr = m.begin(); itr != m.end(); ++itr) { AccountTypes itrSec = itr->second->GetSession()->GetSecurity(); - if ((itr->second->isGameMaster() || (!AccountMgr::IsPlayerAccount(itrSec) && itrSec <= AccountTypes(sWorld->getIntConfig(CONFIG_GM_LEVEL_IN_GM_LIST)))) && + if ((itr->second->isGameMaster() || + (itr->second->GetSession()->HasPermission(RBAC_PERM_COMMANDS_APPEAR_IN_GM_LIST) && + itrSec <= AccountTypes(sWorld->getIntConfig(CONFIG_GM_LEVEL_IN_GM_LIST)))) && (!handler->GetSession() || itr->second->IsVisibleGloballyFor(handler->GetSession()->GetPlayer()))) { if (first) diff --git a/src/server/scripts/Commands/cs_lfg.cpp b/src/server/scripts/Commands/cs_lfg.cpp index 7f39a8fc024..aa9d9308bcd 100644 --- a/src/server/scripts/Commands/cs_lfg.cpp +++ b/src/server/scripts/Commands/cs_lfg.cpp @@ -28,12 +28,12 @@ void GetPlayerInfo(ChatHandler* handler, Player* player) return; uint64 guid = player->GetGUID(); - LfgDungeonSet dungeons = sLFGMgr->GetSelectedDungeons(guid); + lfg::LfgDungeonSet dungeons = sLFGMgr->GetSelectedDungeons(guid); - std::string const& state = sLFGMgr->GetStateString(sLFGMgr->GetState(guid)); + std::string const& state = lfg::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()); + state.c_str(), uint8(dungeons.size()), lfg::ConcatenateDungeons(dungeons).c_str(), + lfg::GetRolesString(sLFGMgr->GetRoles(guid)).c_str(), sLFGMgr->GetComment(guid).c_str()); } class lfg_commandscript : public CommandScript @@ -87,7 +87,7 @@ public: } uint64 guid = grp->GetGUID(); - std::string const& state = sLFGMgr->GetStateString(sLFGMgr->GetState(guid)); + std::string const& state = lfg::GetStateString(sLFGMgr->GetState(guid)); handler->PSendSysMessage(LANG_LFG_GROUP_INFO, grp->isLFGGroup(), state.c_str(), sLFGMgr->GetDungeon(guid)); diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp index e2b5ac9487d..4cdc1e0d9ce 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -33,6 +33,8 @@ #include "ace/INET_Addr.h" #include "Player.h" #include "Pet.h" +#include "LFG.h" +#include "GroupMgr.h" class misc_commandscript : public CommandScript { @@ -47,6 +49,7 @@ public: { "disband", SEC_ADMINISTRATOR, false, &HandleGroupDisbandCommand, "", NULL }, { "remove", SEC_ADMINISTRATOR, false, &HandleGroupRemoveCommand, "", NULL }, { "join", SEC_ADMINISTRATOR, false, &HandleGroupJoinCommand, "", NULL }, + { "list", SEC_ADMINISTRATOR, false, &HandleGroupListCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand petCommandTable[] = @@ -675,7 +678,7 @@ public: if (target) { - target->ResurrectPlayer(!AccountMgr::IsPlayerAccount(target->GetSession()->GetSecurity()) ? 1.0f : 0.5f); + target->ResurrectPlayer(target->GetSession()->HasPermission(RBAC_PERM_RESURRECT_WITH_FULL_HPS) ? 1.0f : 0.5f); target->SpawnCorpseBones(); target->SaveToDB(); } @@ -878,7 +881,7 @@ public: Player* player = handler->GetSession()->GetPlayer(); // save GM account without delay and output message - if (!AccountMgr::IsPlayerAccount(handler->GetSession()->GetSecurity())) + if (handler->GetSession()->HasPermission(RBAC_PERM_COMMANDS_SAVE_WITHOUT_DELAY)) { if (Player* target = handler->getSelectedPlayer()) target->SaveToDB(); @@ -935,8 +938,8 @@ public: static bool HandleUnstuckCommand(ChatHandler* handler, char const* args) { - //No args required for players - if (handler->GetSession() && AccountMgr::IsPlayerAccount(handler->GetSession()->GetSecurity())) + // No args required for players + if (handler->GetSession() && !handler->GetSession()->HasPermission(RBAC_PERM_COMMANDS_USE_UNSTUCK_WITH_ARGS)) { // 7355: "Stuck" if (Player* player = handler->GetSession()->GetPlayer()) @@ -1547,6 +1550,8 @@ public: std::string userName = handler->GetTrinityString(LANG_ERROR); std::string eMail = handler->GetTrinityString(LANG_ERROR); + std::string muteReason = ""; + std::string muteBy = ""; std::string lastIp = handler->GetTrinityString(LANG_ERROR); uint32 security = 0; std::string lastLogin = handler->GetTrinityString(LANG_ERROR); @@ -1563,6 +1568,8 @@ public: security = fields[1].GetUInt8(); eMail = fields[2].GetString(); muteTime = fields[5].GetUInt64(); + muteReason = fields[6].GetString(); + muteBy = fields[7].GetString(); if (eMail.empty()) eMail = "-"; @@ -1624,7 +1631,7 @@ public: } if (muteTime > 0) - handler->PSendSysMessage(LANG_PINFO_MUTE, secsToTimeString(muteTime - time(NULL), true).c_str()); + handler->PSendSysMessage(LANG_PINFO_MUTE, secsToTimeString(muteTime - time(NULL), true).c_str(), muteBy.c_str(), muteReason.c_str()); if (banTime >= 0) handler->PSendSysMessage(LANG_PINFO_BAN, banTime > 0 ? secsToTimeString(banTime - time(NULL), true).c_str() : "permanently", bannedby.c_str(), banreason.c_str()); @@ -1731,6 +1738,23 @@ public: else handler->PSendSysMessage(LANG_PINFO_MAP_OFFLINE, map->name[locale], areaName.c_str()); + stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUILD_MEMBER_EXTENDED); + stmt->setUInt32(0, GUID_LOPART(targetGuid)); + + result = CharacterDatabase.Query(stmt); + if (result) + { + Field* fields = result->Fetch(); + + uint32 guildId = fields[0].GetUInt32(); + std::string guildName = fields[1].GetString(); + std::string guildRank = fields[2].GetString(); + std::string note = fields[3].GetString(); + std::string officeNote = fields[4].GetString(); + + handler->PSendSysMessage(LANG_PINFO_GUILD_INFO, guildName.c_str(), guildId, guildRank.c_str(), note.c_str(), officeNote.c_str()); + } + return true; } @@ -1800,6 +1824,11 @@ public: return false; PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_MUTE_TIME); + std::string muteBy = ""; + if (handler->GetSession()) + muteBy = handler->GetSession()->GetPlayerName(); + else + muteBy = "Console"; if (target) { @@ -1807,7 +1836,7 @@ public: int64 muteTime = time(NULL) + notSpeakTime * MINUTE; target->GetSession()->m_muteTime = muteTime; stmt->setInt64(0, muteTime); - ChatHandler(target->GetSession()).PSendSysMessage(LANG_YOUR_CHAT_DISABLED, notSpeakTime, muteReasonStr.c_str()); + ChatHandler(target->GetSession()).PSendSysMessage(LANG_YOUR_CHAT_DISABLED, notSpeakTime, muteBy.c_str(), muteReasonStr.c_str()); } else { @@ -1816,7 +1845,9 @@ public: stmt->setInt64(0, muteTime); } - stmt->setUInt32(1, accountId); + stmt->setString(1, muteReasonStr.c_str()); + stmt->setString(2, muteBy.c_str()); + stmt->setUInt32(3, accountId); LoginDatabase.Execute(stmt); std::string nameLink = handler->playerLink(targetName); @@ -1859,7 +1890,9 @@ public: PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_MUTE_TIME); stmt->setInt64(0, 0); - stmt->setUInt32(1, accountId); + stmt->setString(1, ""); + stmt->setString(2, ""); + stmt->setUInt32(3, accountId); LoginDatabase.Execute(stmt); if (target) @@ -2781,6 +2814,77 @@ public: return true; } + static bool HandleGroupListCommand(ChatHandler* handler, char const* args) + { + Player* playerTarget; + uint64 guidTarget; + std::string nameTarget; + + uint32 parseGUID = MAKE_NEW_GUID(atol((char*)args), 0, HIGHGUID_PLAYER); + + if (sObjectMgr->GetPlayerNameByGUID(parseGUID, nameTarget)) + { + playerTarget = sObjectMgr->GetPlayerByLowGUID(parseGUID); + guidTarget = parseGUID; + } + else if (!handler->extractPlayerTarget((char*)args, &playerTarget, &guidTarget, &nameTarget)) + return false; + + Group* groupTarget = NULL; + if (playerTarget) + groupTarget = playerTarget->GetGroup(); + + if (!groupTarget) + { + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GROUP_MEMBER); + stmt->setUInt32(0, guidTarget); + PreparedQueryResult resultGroup = CharacterDatabase.Query(stmt); + if (resultGroup) + groupTarget = sGroupMgr->GetGroupByDbStoreId((*resultGroup)[0].GetUInt32()); + } + + if (groupTarget) + { + handler->PSendSysMessage(LANG_GROUP_TYPE, (groupTarget->isRaidGroup() ? "raid" : "party")); + Group::MemberSlotList const& members = groupTarget->GetMemberSlots(); + for (Group::MemberSlotList::const_iterator itr = members.begin(); itr != members.end(); ++itr) + { + Group::MemberSlot const& slot = *itr; + + std::string flags; + if (slot.flags & MEMBER_FLAG_ASSISTANT) + flags = "Assistant"; + + if (slot.flags & MEMBER_FLAG_MAINTANK) + { + if (!flags.empty()) + flags.append(", "); + flags.append("MainTank"); + } + + if (slot.flags & MEMBER_FLAG_MAINASSIST) + { + if (!flags.empty()) + flags.append(", "); + flags.append("MainAssist"); + } + + if (flags.empty()) + flags = "None"; + + Player* p = ObjectAccessor::FindPlayer((*itr).guid); + const char* onlineState = (p && p->IsInWorld()) ? "online" : "offline"; + + handler->PSendSysMessage(LANG_GROUP_PLAYER_NAME_GUID, slot.name.c_str(), onlineState, + GUID_LOPART(slot.guid), flags.c_str(), lfg::GetRolesString(slot.roles).c_str()); + } + } + else + handler->PSendSysMessage(LANG_GROUP_NOT_IN_GROUP, nameTarget.c_str()); + + return true; + } + static bool HandlePlayAllCommand(ChatHandler* handler, char const* args) { if (!*args) diff --git a/src/server/scripts/Commands/cs_mmaps.cpp b/src/server/scripts/Commands/cs_mmaps.cpp index 97861133983..79cd0deb75e 100644 --- a/src/server/scripts/Commands/cs_mmaps.cpp +++ b/src/server/scripts/Commands/cs_mmaps.cpp @@ -95,7 +95,7 @@ public: path.SetUseStraightPath(useStraightPath); bool result = path.CalculatePath(x, y, z); - PointsArray pointPath = path.GetPath(); + PointsArray const& pointPath = path.GetPath(); handler->PSendSysMessage("%s's path to %s:", target->GetName().c_str(), player->GetName().c_str()); handler->PSendSysMessage("Building: %s", useStraightPath ? "StraightPath" : "SmoothPath"); handler->PSendSysMessage("Result: %s - Length: "SIZEFMTD" - Type: %u", (result ? "true" : "false"), pointPath.size(), path.GetPathType()); diff --git a/src/server/scripts/Commands/cs_modify.cpp b/src/server/scripts/Commands/cs_modify.cpp index 01648f25cff..eaed64db579 100644 --- a/src/server/scripts/Commands/cs_modify.cpp +++ b/src/server/scripts/Commands/cs_modify.cpp @@ -1046,9 +1046,12 @@ public: ChatHandler(target->GetSession()).PSendSysMessage(LANG_YOURS_MONEY_GIVEN, handler->GetNameLink().c_str(), moneyToAdd); if (moneyToAdd >= MAX_MONEY_AMOUNT) - target->SetMoney(MAX_MONEY_AMOUNT); - else - target->ModifyMoney(moneyToAdd); + moneyToAdd = MAX_MONEY_AMOUNT; + + if (targetMoney >= uint32(MAX_MONEY_AMOUNT) - moneyToAdd) + moneyToAdd -= targetMoney; + + target->ModifyMoney(moneyToAdd); } sLog->outDebug(LOG_FILTER_GENERAL, handler->GetTrinityString(LANG_NEW_MONEY), targetMoney, moneyToAdd, target->GetMoney()); diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp index 7ccd5ed1177..8dc466296fd 100644 --- a/src/server/scripts/Commands/cs_npc.cpp +++ b/src/server/scripts/Commands/cs_npc.cpp @@ -645,6 +645,7 @@ public: handler->PSendSysMessage(LANG_NPCINFO_CHAR, target->GetDBTableGUIDLow(), target->GetGUIDLow(), faction, npcflags, Entry, displayid, nativeid); handler->PSendSysMessage(LANG_NPCINFO_LEVEL, target->getLevel()); + handler->PSendSysMessage(LANG_NPCINFO_EQUIPMENT, target->GetCurrentEquipmentId(), target->GetOriginalEquipmentId()); handler->PSendSysMessage(LANG_NPCINFO_HEALTH, target->GetCreateHealth(), target->GetMaxHealth(), target->GetHealth()); handler->PSendSysMessage(LANG_NPCINFO_FLAGS, target->GetUInt32Value(UNIT_FIELD_FLAGS), target->GetUInt32Value(UNIT_DYNAMIC_FLAGS), target->getFaction()); handler->PSendSysMessage(LANG_COMMAND_RAWPAWNTIMES, defRespawnDelayStr.c_str(), curRespawnDelayStr.c_str()); @@ -652,7 +653,7 @@ public: handler->PSendSysMessage(LANG_NPCINFO_DUNGEON_ID, target->GetInstanceId()); handler->PSendSysMessage(LANG_NPCINFO_PHASEMASK, target->GetPhaseMask()); handler->PSendSysMessage(LANG_NPCINFO_ARMOR, target->GetArmor()); - handler->PSendSysMessage(LANG_NPCINFO_POSITION, float(target->GetPositionX()), float(target->GetPositionY()), float(target->GetPositionZ())); + handler->PSendSysMessage(LANG_NPCINFO_POSITION, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ()); handler->PSendSysMessage(LANG_NPCINFO_AIINFO, target->GetAIName().c_str(), target->GetScriptName().c_str()); for (uint8 i = 0; i < NPCFLAG_COUNT; i++) diff --git a/src/server/scripts/Commands/cs_rbac.cpp b/src/server/scripts/Commands/cs_rbac.cpp new file mode 100644 index 00000000000..604218c2e68 --- /dev/null +++ b/src/server/scripts/Commands/cs_rbac.cpp @@ -0,0 +1,780 @@ +/*
+ * Copyright (C) 2008-2013 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/>.
+ */
+
+/* ScriptData
+Name: rbac_commandscript
+%Complete: 100
+Comment: All role based access control related commands (including account related)
+Category: commandscripts
+EndScriptData */
+
+#include "AccountMgr.h"
+#include "Config.h"
+#include "Chat.h"
+#include "Language.h"
+#include "Player.h"
+#include "ScriptMgr.h"
+
+struct RBACCommandData
+{
+ RBACCommandData(): id(0), realmId(0), rbac(NULL), needDelete(false) { }
+ uint32 id;
+ int32 realmId;
+ RBACData* rbac;
+ bool needDelete;
+};
+
+class rbac_commandscript : public CommandScript
+{
+public:
+ rbac_commandscript() : CommandScript("rbac_commandscript") { }
+
+ ChatCommand* GetCommands() const
+ {
+ static ChatCommand rbacGroupsCommandTable[] =
+ {
+ { "add", SEC_ADMINISTRATOR, true, &HandleRBACGroupAddCommand, "", NULL },
+ { "remove", SEC_ADMINISTRATOR, true, &HandleRBACGroupRemoveCommand, "", NULL },
+ { "", SEC_ADMINISTRATOR, true, &HandleRBACGroupListCommand, "", NULL },
+ { NULL, SEC_ADMINISTRATOR, false, NULL, "", NULL }
+ };
+
+ static ChatCommand rbacRolesCommandTable[] =
+ {
+ { "grant", SEC_ADMINISTRATOR, true, &HandleRBACRoleGrantCommand, "", NULL },
+ { "deny", SEC_ADMINISTRATOR, true, &HandleRBACRoleDenyCommand, "", NULL },
+ { "revoke", SEC_ADMINISTRATOR, true, &HandleRBACRoleRevokeCommand, "", NULL },
+ { "", SEC_ADMINISTRATOR, true, &HandleRBACRoleListCommand, "", NULL },
+ { NULL, SEC_ADMINISTRATOR, false, NULL, "", NULL }
+ };
+
+ static ChatCommand rbacPermsCommandTable[] =
+ {
+ { "grant", SEC_ADMINISTRATOR, true, &HandleRBACPermGrantCommand, "", NULL },
+ { "deny", SEC_ADMINISTRATOR, true, &HandleRBACPermDenyCommand, "", NULL },
+ { "revoke", SEC_ADMINISTRATOR, true, &HandleRBACPermRevokeCommand, "", NULL },
+ { "", SEC_ADMINISTRATOR, true, &HandleRBACPermListCommand, "", NULL },
+ { NULL, SEC_ADMINISTRATOR, false, NULL, "", NULL }
+ };
+
+ static ChatCommand rbacListCommandTable[] =
+ {
+ { "groups", SEC_ADMINISTRATOR, true, &HandleRBACListGroupsCommand, "", NULL },
+ { "roles", SEC_ADMINISTRATOR, true, &HandleRBACListRolesCommand, "", NULL },
+ { "permissions", SEC_ADMINISTRATOR, true, &HandleRBACListPermissionsCommand, "", NULL },
+ { NULL, SEC_ADMINISTRATOR, false, NULL, "", NULL }
+ };
+
+ static ChatCommand rbacAccountCommandTable[] =
+ {
+ { "group", SEC_ADMINISTRATOR, true, NULL, "", rbacGroupsCommandTable },
+ { "role", SEC_ADMINISTRATOR, true, NULL, "", rbacRolesCommandTable },
+ { "permission", SEC_ADMINISTRATOR, true, NULL, "", rbacPermsCommandTable },
+ { "", SEC_ADMINISTRATOR, true, &HandleRBACAccountPermissionCommand, "", NULL },
+ { NULL, SEC_ADMINISTRATOR, false, NULL, "", NULL }
+ };
+
+ static ChatCommand rbacCommandTable[] =
+ {
+ { "account", SEC_ADMINISTRATOR, true, NULL, "", rbacAccountCommandTable },
+ { "list", SEC_ADMINISTRATOR, true, NULL, "", rbacListCommandTable },
+ { NULL, SEC_ADMINISTRATOR, false, NULL, "", NULL }
+ };
+
+ static ChatCommand commandTable[] =
+ {
+ { "rbac", SEC_ADMINISTRATOR, true, NULL, "", rbacCommandTable },
+ { NULL, SEC_ADMINISTRATOR, false, NULL, "", NULL }
+ };
+
+ return commandTable;
+ }
+
+ static RBACCommandData* ReadParams(ChatHandler* handler, char const* args, bool checkParams = true)
+ {
+ if (!args)
+ return NULL;
+
+ char* param1 = strtok((char*)args, " ");
+ char* param2 = strtok(NULL, " ");
+ char* param3 = strtok(NULL, " ");
+
+ int32 realmId = -1;
+ uint32 accountId = 0;
+ std::string accountName;
+ uint32 id = 0;
+ RBACCommandData* data = NULL;
+ RBACData* rdata = NULL;
+ bool useSelectedPlayer = false;
+
+ if (checkParams)
+ {
+ if (!param3)
+ {
+ if (param2)
+ realmId = atoi(param2);
+
+ if (param1)
+ id = atoi(param1);
+
+ useSelectedPlayer = true;
+ }
+ else
+ {
+ id = atoi(param2);
+ realmId = atoi(param3);
+ }
+
+ if (!id)
+ {
+ handler->PSendSysMessage(LANG_RBAC_WRONG_PARAMETER_ID, id);
+ handler->SetSentErrorMessage(true);
+ return NULL;
+ }
+
+ if (realmId < -1 || !realmId)
+ {
+ handler->PSendSysMessage(LANG_RBAC_WRONG_PARAMETER_REALM, realmId);
+ handler->SetSentErrorMessage(true);
+ return NULL;
+ }
+ }
+ else if (!param1)
+ useSelectedPlayer = true;
+
+ if (useSelectedPlayer)
+ {
+ Player* player = handler->getSelectedPlayer();
+ if (!player)
+ return NULL;
+
+ rdata = player->GetSession()->GetRBACData();
+ accountId = rdata->GetId();
+ AccountMgr::GetName(accountId, accountName);
+ }
+ else
+ {
+ accountName = param1;
+
+ if (AccountMgr::normalizeString(accountName))
+ accountId = AccountMgr::GetId(accountName);
+
+ if (!accountId)
+ {
+ handler->PSendSysMessage(LANG_ACCOUNT_NOT_EXIST, accountName.c_str());
+ handler->SetSentErrorMessage(true);
+ return NULL;
+ }
+ }
+
+ if (checkParams && handler->HasLowerSecurityAccount(NULL, accountId, true))
+ return NULL;
+
+ data = new RBACCommandData();
+
+ if (!rdata)
+ {
+ data->rbac = new RBACData(accountId, accountName, realmID);
+ data->rbac->LoadFromDB();
+ data->needDelete = true;
+ }
+ else
+ data->rbac = rdata;
+
+ data->id = id;
+ data->realmId = realmId;
+ return data;
+ }
+
+ static bool HandleRBACGroupAddCommand(ChatHandler* handler, char const* args)
+ {
+ RBACCommandData* command = ReadParams(handler, args);
+
+ if (!command)
+ {
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ RBACCommandResult result = command->rbac->AddGroup(command->id, command->realmId);
+ RBACGroup const* group = sAccountMgr->GetRBACGroup(command->id);
+
+ switch (result)
+ {
+ case RBAC_CANT_ADD_ALREADY_ADDED:
+ handler->PSendSysMessage(LANG_RBAC_GROUP_IN_LIST, command->id, group->GetName().c_str(),
+ command->realmId, command->rbac->GetId(), command->rbac->GetName().c_str());
+ break;
+ case RBAC_OK:
+ handler->PSendSysMessage(LANG_RBAC_GROUP_ADDED, command->id, group->GetName().c_str(),
+ command->realmId, command->rbac->GetId(), command->rbac->GetName().c_str());
+ break;
+ case RBAC_ID_DOES_NOT_EXISTS:
+ handler->PSendSysMessage(LANG_RBAC_WRONG_PARAMETER_ID, command->id);
+ break;
+ default:
+ break;
+ }
+
+ if (command->needDelete)
+ delete command;
+
+ return true;
+ }
+
+ static bool HandleRBACGroupRemoveCommand(ChatHandler* handler, char const* args)
+ {
+ RBACCommandData* command = ReadParams(handler, args);
+
+ if (!command)
+ {
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ RBACCommandResult result = command->rbac->RemoveGroup(command->id, command->realmId);
+ RBACGroup const* group = sAccountMgr->GetRBACGroup(command->id);
+
+ switch (result)
+ {
+ case RBAC_CANT_REVOKE_NOT_IN_LIST:
+ handler->PSendSysMessage(LANG_RBAC_GROUP_NOT_IN_LIST, command->id, group->GetName().c_str(),
+ command->realmId, command->rbac->GetId(), command->rbac->GetName().c_str());
+ break;
+ case RBAC_OK:
+ handler->PSendSysMessage(LANG_RBAC_GROUP_REMOVED, command->id, group->GetName().c_str(),
+ command->realmId, command->rbac->GetId(), command->rbac->GetName().c_str());
+ break;
+ case RBAC_ID_DOES_NOT_EXISTS:
+ handler->PSendSysMessage(LANG_RBAC_WRONG_PARAMETER_ID, command->id);
+ break;
+ default:
+ break;
+ }
+
+ if (command->needDelete)
+ delete command;
+
+ return true;
+ }
+
+ static bool HandleRBACGroupListCommand(ChatHandler* handler, char const* args)
+ {
+ RBACCommandData* command = ReadParams(handler, args, false);
+
+ if (!command)
+ {
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ handler->PSendSysMessage(LANG_RBAC_GROUP_LIST_HEADER, command->rbac->GetId(), command->rbac->GetName().c_str());
+ RBACGroupContainer const& groups = command->rbac->GetGroups();
+ if (groups.empty())
+ handler->PSendSysMessage("%s", handler->GetTrinityString(LANG_RBAC_LIST_EMPTY));
+ else
+ {
+ for (RBACGroupContainer::const_iterator it = groups.begin(); it != groups.end(); ++it)
+ {
+ RBACGroup const* group = sAccountMgr->GetRBACGroup(*it);
+ handler->PSendSysMessage(LANG_RBAC_LIST_ELEMENT, group->GetId(), group->GetName().c_str());
+ }
+ }
+
+ if (command->needDelete)
+ delete command;
+
+ return true;
+ }
+
+ static bool HandleRBACRoleGrantCommand(ChatHandler* handler, char const* args)
+ {
+ RBACCommandData* command = ReadParams(handler, args);
+
+ if (!command)
+ {
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ RBACCommandResult result = command->rbac->GrantRole(command->id, command->realmId);
+ RBACRole const* role = sAccountMgr->GetRBACRole(command->id);
+
+ switch (result)
+ {
+ case RBAC_CANT_ADD_ALREADY_ADDED:
+ handler->PSendSysMessage(LANG_RBAC_ROLE_GRANTED_IN_LIST, command->id, role->GetName().c_str(),
+ command->realmId, command->rbac->GetId(), command->rbac->GetName().c_str());
+ break;
+ case RBAC_IN_DENIED_LIST:
+ handler->PSendSysMessage(LANG_RBAC_ROLE_GRANTED_IN_DENIED_LIST, command->id, role->GetName().c_str(),
+ command->realmId, command->rbac->GetId(), command->rbac->GetName().c_str());
+ break;
+ case RBAC_OK:
+ handler->PSendSysMessage(LANG_RBAC_ROLE_GRANTED, command->id, role->GetName().c_str(),
+ command->realmId, command->rbac->GetId(), command->rbac->GetName().c_str());
+ break;
+ case RBAC_ID_DOES_NOT_EXISTS:
+ handler->PSendSysMessage(LANG_RBAC_WRONG_PARAMETER_ID, command->id);
+ break;
+ default:
+ break;
+ }
+
+ if (command->needDelete)
+ delete command;
+
+ return true;
+ }
+
+ static bool HandleRBACRoleDenyCommand(ChatHandler* handler, char const* args)
+ {
+ RBACCommandData* command = ReadParams(handler, args);
+
+ if (!command)
+ {
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ RBACCommandResult result = command->rbac->DenyRole(command->id, command->realmId);
+ RBACRole const* role = sAccountMgr->GetRBACRole(command->id);
+
+ switch (result)
+ {
+ case RBAC_CANT_ADD_ALREADY_ADDED:
+ handler->PSendSysMessage(LANG_RBAC_ROLE_DENIED_IN_LIST, command->id, role->GetName().c_str(),
+ command->realmId, command->rbac->GetId(), command->rbac->GetName().c_str());
+ break;
+ case RBAC_IN_GRANTED_LIST:
+ handler->PSendSysMessage(LANG_RBAC_ROLE_DENIED_IN_GRANTED_LIST, command->id, role->GetName().c_str(),
+ command->realmId, command->rbac->GetId(), command->rbac->GetName().c_str());
+ break;
+ case RBAC_OK:
+ handler->PSendSysMessage(LANG_RBAC_ROLE_DENIED, command->id, role->GetName().c_str(),
+ command->realmId, command->rbac->GetId(), command->rbac->GetName().c_str());
+ break;
+ case RBAC_ID_DOES_NOT_EXISTS:
+ handler->PSendSysMessage(LANG_RBAC_WRONG_PARAMETER_ID, command->id);
+ break;
+ default:
+ break;
+ }
+
+ if (command->needDelete)
+ delete command;
+
+ return true;
+ }
+
+ static bool HandleRBACRoleRevokeCommand(ChatHandler* handler, char const* args)
+ {
+ RBACCommandData* command = ReadParams(handler, args);
+
+ if (!command)
+ {
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ RBACCommandResult result = command->rbac->RevokeRole(command->id, command->realmId);
+ RBACRole const* role = sAccountMgr->GetRBACRole(command->id);
+
+ switch (result)
+ {
+ case RBAC_CANT_REVOKE_NOT_IN_LIST:
+ handler->PSendSysMessage(LANG_RBAC_ROLE_REVOKED_NOT_IN_LIST, command->id, role->GetName().c_str(),
+ command->realmId, command->rbac->GetId(), command->rbac->GetName().c_str());
+ break;
+ case RBAC_OK:
+ handler->PSendSysMessage(LANG_RBAC_ROLE_REVOKED, command->id, role->GetName().c_str(),
+ command->realmId, command->rbac->GetId(), command->rbac->GetName().c_str());
+ break;
+ case RBAC_ID_DOES_NOT_EXISTS:
+ handler->PSendSysMessage(LANG_RBAC_WRONG_PARAMETER_ID, command->id);
+ break;
+ default:
+ break;
+ }
+
+ if (command->needDelete)
+ delete command;
+
+ return true;
+ }
+
+ static bool HandleRBACRoleListCommand(ChatHandler* handler, char const* args)
+ {
+ RBACCommandData* command = ReadParams(handler, args, false);
+
+ if (!command)
+ {
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ handler->PSendSysMessage(LANG_RBAC_ROLE_LIST_HEADER_GRANTED, command->rbac->GetId(), command->rbac->GetName().c_str());
+ RBACGroupContainer const& granted = command->rbac->GetGrantedRoles();
+ if (granted.empty())
+ handler->PSendSysMessage("%s", handler->GetTrinityString(LANG_RBAC_LIST_EMPTY));
+ else
+ {
+ for (RBACRoleContainer::const_iterator it = granted.begin(); it != granted.end(); ++it)
+ {
+ RBACRole const* role = sAccountMgr->GetRBACRole(*it);
+ handler->PSendSysMessage(LANG_RBAC_LIST_ELEMENT, role->GetId(), role->GetName().c_str());
+ }
+ }
+
+ handler->PSendSysMessage(LANG_RBAC_ROLE_LIST_HEADER_DENIED, command->rbac->GetId(), command->rbac->GetName().c_str());
+ RBACGroupContainer const& denied = command->rbac->GetDeniedRoles();
+ if (denied.empty())
+ handler->PSendSysMessage("%s", handler->GetTrinityString(LANG_RBAC_LIST_EMPTY));
+ else
+ {
+ for (RBACRoleContainer::const_iterator it = denied.begin(); it != denied.end(); ++it)
+ {
+ RBACRole const* role = sAccountMgr->GetRBACRole(*it);
+ handler->PSendSysMessage(LANG_RBAC_LIST_ELEMENT, role->GetId(), role->GetName().c_str());
+ }
+ }
+
+ if (command->needDelete)
+ delete command;
+
+ return true;
+ }
+
+ static bool HandleRBACPermGrantCommand(ChatHandler* handler, char const* args)
+ {
+ RBACCommandData* command = ReadParams(handler, args);
+
+ if (!command)
+ {
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ RBACCommandResult result = command->rbac->GrantPermission(command->id, command->realmId);
+ RBACPermission const* permission = sAccountMgr->GetRBACPermission(command->id);
+
+ switch (result)
+ {
+ case RBAC_CANT_ADD_ALREADY_ADDED:
+ handler->PSendSysMessage(LANG_RBAC_PERM_GRANTED_IN_LIST, command->id, permission->GetName().c_str(),
+ command->realmId, command->rbac->GetId(), command->rbac->GetName().c_str());
+ break;
+ case RBAC_IN_DENIED_LIST:
+ handler->PSendSysMessage(LANG_RBAC_PERM_GRANTED_IN_DENIED_LIST, command->id, permission->GetName().c_str(),
+ command->realmId, command->rbac->GetId(), command->rbac->GetName().c_str());
+ break;
+ case RBAC_OK:
+ handler->PSendSysMessage(LANG_RBAC_PERM_GRANTED, command->id, permission->GetName().c_str(),
+ command->realmId, command->rbac->GetId(), command->rbac->GetName().c_str());
+ break;
+ case RBAC_ID_DOES_NOT_EXISTS:
+ handler->PSendSysMessage(LANG_RBAC_WRONG_PARAMETER_ID, command->id);
+ break;
+ default:
+ break;
+ }
+
+ if (command->needDelete)
+ delete command;
+
+ return true;
+ }
+
+ static bool HandleRBACPermDenyCommand(ChatHandler* handler, char const* args)
+ {
+ RBACCommandData* command = ReadParams(handler, args);
+
+ if (!command)
+ {
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ RBACCommandResult result = command->rbac->DenyPermission(command->id, command->realmId);
+ RBACPermission const* permission = sAccountMgr->GetRBACPermission(command->id);
+
+ switch (result)
+ {
+ case RBAC_CANT_ADD_ALREADY_ADDED:
+ handler->PSendSysMessage(LANG_RBAC_PERM_DENIED_IN_LIST, command->id, permission->GetName().c_str(),
+ command->realmId, command->rbac->GetId(), command->rbac->GetName().c_str());
+ break;
+ case RBAC_IN_GRANTED_LIST:
+ handler->PSendSysMessage(LANG_RBAC_PERM_DENIED_IN_GRANTED_LIST, command->id, permission->GetName().c_str(),
+ command->realmId, command->rbac->GetId(), command->rbac->GetName().c_str());
+ break;
+ case RBAC_OK:
+ handler->PSendSysMessage(LANG_RBAC_PERM_DENIED, command->id, permission->GetName().c_str(),
+ command->realmId, command->rbac->GetId(), command->rbac->GetName().c_str());
+ break;
+ case RBAC_ID_DOES_NOT_EXISTS:
+ handler->PSendSysMessage(LANG_RBAC_WRONG_PARAMETER_ID, command->id);
+ break;
+ default:
+ break;
+ }
+
+ if (command->needDelete)
+ delete command;
+
+ return true;
+ }
+
+ static bool HandleRBACPermRevokeCommand(ChatHandler* handler, char const* args)
+ {
+ RBACCommandData* command = ReadParams(handler, args);
+
+ if (!command)
+ {
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ RBACCommandResult result = command->rbac->RevokePermission(command->id, command->realmId);
+ RBACPermission const* permission = sAccountMgr->GetRBACPermission(command->id);
+
+ switch (result)
+ {
+ case RBAC_CANT_REVOKE_NOT_IN_LIST:
+ handler->PSendSysMessage(LANG_RBAC_PERM_REVOKED_NOT_IN_LIST, command->id, permission->GetName().c_str(),
+ command->realmId, command->rbac->GetId(), command->rbac->GetName().c_str());
+ break;
+ case RBAC_OK:
+ handler->PSendSysMessage(LANG_RBAC_PERM_REVOKED, command->id, permission->GetName().c_str(),
+ command->realmId, command->rbac->GetId(), command->rbac->GetName().c_str());
+ break;
+ case RBAC_ID_DOES_NOT_EXISTS:
+ handler->PSendSysMessage(LANG_RBAC_WRONG_PARAMETER_ID, command->id);
+ break;
+ default:
+ break;
+ }
+
+ if (command->needDelete)
+ delete command;
+
+ return true;
+ }
+
+ static bool HandleRBACPermListCommand(ChatHandler* handler, char const* args)
+ {
+ RBACCommandData* command = ReadParams(handler, args, false);
+
+ if (!command)
+ {
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ handler->PSendSysMessage(LANG_RBAC_PERM_LIST_HEADER_GRANTED, command->rbac->GetId(), command->rbac->GetName().c_str());
+ RBACPermissionContainer const& granted = command->rbac->GetGrantedPermissions();
+ if (!granted.any())
+ handler->PSendSysMessage("%s", handler->GetTrinityString(LANG_RBAC_LIST_EMPTY));
+ else
+ {
+ for (uint32 i = 0; i < RBAC_PERM_MAX; ++i)
+ if (granted.test(i))
+ {
+ RBACPermission const* permission = sAccountMgr->GetRBACPermission(i);
+ handler->PSendSysMessage(LANG_RBAC_LIST_ELEMENT, permission->GetId(), permission->GetName().c_str());
+ }
+ }
+
+ handler->PSendSysMessage(LANG_RBAC_PERM_LIST_HEADER_DENIED, command->rbac->GetId(), command->rbac->GetName().c_str());
+ RBACPermissionContainer const& denied = command->rbac->GetDeniedPermissions();
+ if (!denied.any())
+ handler->PSendSysMessage("%s", handler->GetTrinityString(LANG_RBAC_LIST_EMPTY));
+ else
+ {
+ for (uint32 i = 0; i < RBAC_PERM_MAX; ++i)
+ if (denied.test(i))
+ {
+ RBACPermission const* permission = sAccountMgr->GetRBACPermission(i);
+ handler->PSendSysMessage(LANG_RBAC_LIST_ELEMENT, permission->GetId(), permission->GetName().c_str());
+ }
+ }
+
+ if (command->needDelete)
+ delete command;
+
+ return true;
+ }
+
+ static bool HandleRBACAccountPermissionCommand(ChatHandler* handler, char const* args)
+ {
+ RBACCommandData* command = ReadParams(handler, args, false);
+
+ if (!command)
+ {
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ handler->PSendSysMessage(LANG_RBAC_PERM_LIST_GLOBAL, command->rbac->GetId(), command->rbac->GetName().c_str());
+ RBACPermissionContainer const& permissions = command->rbac->GetPermissions();
+ if (!permissions.any())
+ handler->PSendSysMessage("%s", handler->GetTrinityString(LANG_RBAC_LIST_EMPTY));
+ else
+ {
+ for (uint32 i = 0; i < RBAC_PERM_MAX; ++i)
+ if (permissions.test(i))
+ {
+ RBACPermission const* permission = sAccountMgr->GetRBACPermission(i);
+ handler->PSendSysMessage(LANG_RBAC_LIST_ELEMENT, permission->GetId(), permission->GetName().c_str());
+ }
+ }
+
+ if (command->needDelete)
+ delete command;
+
+ return true;
+ }
+
+ static bool HandleRBACListGroupsCommand(ChatHandler* handler, char const* args)
+ {
+ uint32 id = 0;
+ if (char* param1 = strtok((char*)args, " "))
+ id = atoi(param1);
+
+ if (!id)
+ {
+ RBACGroupsContainer const& groups = sAccountMgr->GetRBACGroupList();
+ handler->PSendSysMessage("%s", handler->GetTrinityString(LANG_RBAC_LIST_GROUPS_HEADER));
+ for (RBACGroupsContainer::const_iterator it = groups.begin(); it != groups.end(); ++it)
+ {
+ RBACGroup const* group = it->second;
+ handler->PSendSysMessage(LANG_RBAC_LIST_ELEMENT, group->GetId(), group->GetName().c_str());
+ }
+ }
+ else
+ {
+ RBACGroup const* group = sAccountMgr->GetRBACGroup(id);
+ if (!group)
+ {
+ handler->PSendSysMessage(LANG_RBAC_WRONG_PARAMETER_ID, id);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ handler->PSendSysMessage("%s", handler->GetTrinityString(LANG_RBAC_LIST_GROUPS_HEADER));
+ handler->PSendSysMessage(LANG_RBAC_LIST_ELEMENT, group->GetId(), group->GetName().c_str());
+ handler->PSendSysMessage("%s", handler->GetTrinityString(LANG_RBAC_LIST_ROLES_HEADER));
+ RBACRoleContainer const& roles = group->GetRoles();
+ if (roles.empty())
+ handler->PSendSysMessage("%s", handler->GetTrinityString(LANG_RBAC_LIST_EMPTY));
+ else
+ {
+ for (RBACRoleContainer::const_iterator it = roles.begin(); it != roles.end(); ++it)
+ {
+ RBACRole const* role = sAccountMgr->GetRBACRole(*it);
+ handler->PSendSysMessage(LANG_RBAC_LIST_ELEMENT, role->GetId(), role->GetName().c_str());
+ }
+ }
+ }
+
+ return true;
+ }
+
+ static bool HandleRBACListRolesCommand(ChatHandler* handler, char const* args)
+ {
+ uint32 id = 0;
+ if (char* param1 = strtok((char*)args, " "))
+ id = atoi(param1);
+
+ if (!id)
+ {
+ RBACRolesContainer const& roles = sAccountMgr->GetRBACRoleList();
+ handler->PSendSysMessage("%s", handler->GetTrinityString(LANG_RBAC_LIST_ROLES_HEADER));
+ for (RBACRolesContainer::const_iterator it = roles.begin(); it != roles.end(); ++it)
+ {
+ RBACRole const* role = it->second;
+ handler->PSendSysMessage(LANG_RBAC_LIST_ELEMENT, role->GetId(), role->GetName().c_str());
+ }
+ }
+ else
+ {
+ RBACRole const* role = sAccountMgr->GetRBACRole(id);
+ if (!role)
+ {
+ handler->PSendSysMessage(LANG_RBAC_WRONG_PARAMETER_ID, id);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ handler->PSendSysMessage("%s", handler->GetTrinityString(LANG_RBAC_LIST_ROLES_HEADER));
+ handler->PSendSysMessage(LANG_RBAC_LIST_ELEMENT, role->GetId(), role->GetName().c_str());
+ handler->PSendSysMessage("%s", handler->GetTrinityString(LANG_RBAC_LIST_PERMISSIONS_HEADER));
+ RBACPermissionContainer const& permissions = role->GetPermissions();
+ if (!permissions.any())
+ handler->PSendSysMessage("%s", handler->GetTrinityString(LANG_RBAC_LIST_EMPTY));
+ else
+ {
+ for (uint32 i = 0; i < RBAC_PERM_MAX; ++i)
+ if (permissions.test(i))
+ {
+ RBACPermission const* permission = sAccountMgr->GetRBACPermission(i);
+ handler->PSendSysMessage(LANG_RBAC_LIST_ELEMENT, permission->GetId(), permission->GetName().c_str());
+ }
+ }
+ }
+
+ return true;
+ }
+
+ static bool HandleRBACListPermissionsCommand(ChatHandler* handler, char const* args)
+ {
+ uint32 id = 0;
+ if (char* param1 = strtok((char*)args, " "))
+ id = atoi(param1);
+
+ if (!id)
+ {
+ RBACPermissionsContainer const& permissions = sAccountMgr->GetRBACPermissionList();
+ handler->PSendSysMessage("%s", handler->GetTrinityString(LANG_RBAC_LIST_PERMISSIONS_HEADER));
+ for (RBACPermissionsContainer::const_iterator it = permissions.begin(); it != permissions.end(); ++it)
+ {
+ RBACPermission const* permission = it->second;
+ handler->PSendSysMessage(LANG_RBAC_LIST_ELEMENT, permission->GetId(), permission->GetName().c_str());
+ }
+ }
+ else
+ {
+ RBACPermission const* permission = sAccountMgr->GetRBACPermission(id);
+ if (!permission)
+ {
+ handler->PSendSysMessage(LANG_RBAC_WRONG_PARAMETER_ID, id);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
+ handler->PSendSysMessage("%s", handler->GetTrinityString(LANG_RBAC_LIST_PERMISSIONS_HEADER));
+ handler->PSendSysMessage(LANG_RBAC_LIST_ELEMENT, permission->GetId(), permission->GetName().c_str());
+ }
+
+ return true;
+ }
+};
+
+void AddSC_rbac_commandscript()
+{
+ new rbac_commandscript();
+}
diff --git a/src/server/scripts/Commands/cs_reload.cpp b/src/server/scripts/Commands/cs_reload.cpp index 43c2001fbf7..b2542d6a668 100644 --- a/src/server/scripts/Commands/cs_reload.cpp +++ b/src/server/scripts/Commands/cs_reload.cpp @@ -508,10 +508,9 @@ public: cInfo->questItems[5] = fields[78].GetUInt32(); cInfo->movementId = fields[79].GetUInt32(); cInfo->RegenHealth = fields[80].GetBool(); - cInfo->equipmentId = fields[81].GetUInt32(); - cInfo->MechanicImmuneMask = fields[82].GetUInt32(); - cInfo->flags_extra = fields[83].GetUInt32(); - cInfo->ScriptID = sObjectMgr->GetScriptId(fields[84].GetCString()); + cInfo->MechanicImmuneMask = fields[81].GetUInt32(); + cInfo->flags_extra = fields[82].GetUInt32(); + cInfo->ScriptID = sObjectMgr->GetScriptId(fields[83].GetCString()); sObjectMgr->CheckCreatureTemplate(cInfo); } diff --git a/src/server/scripts/Commands/cs_ticket.cpp b/src/server/scripts/Commands/cs_ticket.cpp index aee01f47581..958eb1709d5 100644 --- a/src/server/scripts/Commands/cs_ticket.cpp +++ b/src/server/scripts/Commands/cs_ticket.cpp @@ -95,18 +95,16 @@ public: return true; } - // Get target information - uint64 targetGuid = sObjectMgr->GetPlayerGUIDByName(target.c_str()); - uint64 targetAccountId = sObjectMgr->GetPlayerAccountIdByGUID(targetGuid); - uint32 targetGmLevel = AccountMgr::GetSecurity(targetAccountId, realmID); - + uint32 accountId = AccountMgr::GetId(target); // Target must exist and have administrative rights - if (!targetGuid || AccountMgr::IsPlayerAccount(targetGmLevel)) + if (!AccountMgr::HasPermission(accountId, RBAC_PERM_COMMANDS_BE_ASSIGNED_TICKET, realmID)) { handler->SendSysMessage(LANG_COMMAND_TICKETASSIGNERROR_A); return true; } + uint64 targetGuid = sObjectMgr->GetPlayerGUIDByName(target); + // If already assigned, leave if (ticket->IsAssignedTo(targetGuid)) { @@ -125,7 +123,7 @@ public: // Assign ticket SQLTransaction trans = SQLTransaction(NULL); - ticket->SetAssignedTo(targetGuid, AccountMgr::IsAdminAccount(targetGmLevel)); + ticket->SetAssignedTo(targetGuid, AccountMgr::IsAdminAccount(AccountMgr::GetSecurity(accountId, realmID))); ticket->SaveToDB(trans); sTicketMgr->UpdateLastChange(); diff --git a/src/server/scripts/EasternKingdoms/AlteracValley/alterac_valley.cpp b/src/server/scripts/EasternKingdoms/AlteracValley/alterac_valley.cpp index 809bd2440d7..d301e702174 100644 --- a/src/server/scripts/EasternKingdoms/AlteracValley/alterac_valley.cpp +++ b/src/server/scripts/EasternKingdoms/AlteracValley/alterac_valley.cpp @@ -104,7 +104,7 @@ class mob_av_marshal_or_warmaster : public CreatureScript Reset(); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { // I have a feeling this isn't blizzlike, but owell, I'm only passing by and cleaning up. if (!_hasAura) diff --git a/src/server/scripts/EasternKingdoms/AlteracValley/boss_balinda.cpp b/src/server/scripts/EasternKingdoms/AlteracValley/boss_balinda.cpp index 5622e91cd73..6dec1796500 100644 --- a/src/server/scripts/EasternKingdoms/AlteracValley/boss_balinda.cpp +++ b/src/server/scripts/EasternKingdoms/AlteracValley/boss_balinda.cpp @@ -62,7 +62,7 @@ public: resetTimer = 5 * IN_MILLISECONDS; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -145,7 +145,7 @@ public: summons.DespawnAll(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/AlteracValley/boss_drekthar.cpp b/src/server/scripts/EasternKingdoms/AlteracValley/boss_drekthar.cpp index 6e2738d79ca..745c310d35c 100644 --- a/src/server/scripts/EasternKingdoms/AlteracValley/boss_drekthar.cpp +++ b/src/server/scripts/EasternKingdoms/AlteracValley/boss_drekthar.cpp @@ -75,7 +75,7 @@ public: Talk(YELL_RESPAWN); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/AlteracValley/boss_galvangar.cpp b/src/server/scripts/EasternKingdoms/AlteracValley/boss_galvangar.cpp index fea8573d6f8..2cf7d7cafef 100644 --- a/src/server/scripts/EasternKingdoms/AlteracValley/boss_galvangar.cpp +++ b/src/server/scripts/EasternKingdoms/AlteracValley/boss_galvangar.cpp @@ -69,7 +69,7 @@ public: Reset(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/AlteracValley/boss_vanndar.cpp b/src/server/scripts/EasternKingdoms/AlteracValley/boss_vanndar.cpp index 732bbc6f1ba..6939890a702 100644 --- a/src/server/scripts/EasternKingdoms/AlteracValley/boss_vanndar.cpp +++ b/src/server/scripts/EasternKingdoms/AlteracValley/boss_vanndar.cpp @@ -64,7 +64,7 @@ public: Talk(YELL_AGGRO); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/BlackrockDepths/blackrock_depths.cpp b/src/server/scripts/EasternKingdoms/BlackrockDepths/blackrock_depths.cpp index 071e0c4dd19..0c8092013aa 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockDepths/blackrock_depths.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockDepths/blackrock_depths.cpp @@ -222,7 +222,7 @@ public: instance->HandleGameObject(instance->GetData64(id), open); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!instance) return; @@ -372,7 +372,7 @@ public: MightyBlow_Timer = 15000; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) @@ -648,7 +648,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (instance->GetData(DATA_QUEST_JAIL_BREAK) == ENCOUNTER_STATE_NOT_STARTED) return; if ((instance->GetData(DATA_QUEST_JAIL_BREAK) == ENCOUNTER_STATE_IN_PROGRESS || instance->GetData(DATA_QUEST_JAIL_BREAK) == ENCOUNTER_STATE_FAILED || instance->GetData(DATA_QUEST_JAIL_BREAK) == ENCOUNTER_STATE_ENDED)&& instance->GetData(DATA_DUGHAL) == ENCOUNTER_STATE_ENDED) @@ -807,7 +807,7 @@ public: instance->SetData(DATA_QUEST_JAIL_BREAK, ENCOUNTER_STATE_FAILED); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (instance->GetData(DATA_QUEST_JAIL_BREAK) == ENCOUNTER_STATE_NOT_STARTED) return; @@ -1017,7 +1017,7 @@ public: instance->SetData(DATA_QUEST_JAIL_BREAK, ENCOUNTER_STATE_FAILED); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (instance->GetData(DATA_QUEST_JAIL_BREAK) == ENCOUNTER_STATE_NOT_STARTED) return; @@ -1151,7 +1151,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (instance->GetData(DATA_QUEST_JAIL_BREAK) == ENCOUNTER_STATE_NOT_STARTED) return; @@ -1284,7 +1284,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!instance) return; diff --git a/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_ambassador_flamelash.cpp b/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_ambassador_flamelash.cpp index 99619a89bf3..c5d93ad0c85 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_ambassador_flamelash.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_ambassador_flamelash.cpp @@ -55,7 +55,7 @@ public: Spirit->AI()->AttackStart(victim); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_anubshiah.cpp b/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_anubshiah.cpp index 424489fc703..bb4de5b347a 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_anubshiah.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_anubshiah.cpp @@ -59,7 +59,7 @@ public: void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_emperor_dagran_thaurissan.cpp b/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_emperor_dagran_thaurissan.cpp index 3a7baff0196..aaf0adc57c4 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_emperor_dagran_thaurissan.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_emperor_dagran_thaurissan.cpp @@ -81,7 +81,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_general_angerforge.cpp b/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_general_angerforge.cpp index 8c2c590e3e5..bd5a06bf46c 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_general_angerforge.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_general_angerforge.cpp @@ -69,7 +69,7 @@ public: SummonedMedic->AI()->AttackStart(victim); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_gorosh_the_dervish.cpp b/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_gorosh_the_dervish.cpp index 4f876f41907..02c00b4958c 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_gorosh_the_dervish.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_gorosh_the_dervish.cpp @@ -52,7 +52,7 @@ public: { } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_grizzle.cpp b/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_grizzle.cpp index 51fddc0f71f..a0ab6f9939c 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_grizzle.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_grizzle.cpp @@ -51,7 +51,7 @@ public: void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_high_interrogator_gerstahn.cpp b/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_high_interrogator_gerstahn.cpp index 0631a4308df..a901bc3d5e3 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_high_interrogator_gerstahn.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_high_interrogator_gerstahn.cpp @@ -56,7 +56,7 @@ public: void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_magmus.cpp b/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_magmus.cpp index fa8a13f1bfd..5c496ed597b 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_magmus.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_magmus.cpp @@ -55,7 +55,7 @@ public: void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_moira_bronzebeard.cpp b/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_moira_bronzebeard.cpp index 3142610b346..bb528de9dca 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_moira_bronzebeard.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_moira_bronzebeard.cpp @@ -58,7 +58,7 @@ public: void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_tomb_of_seven.cpp b/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_tomb_of_seven.cpp index f4e9d561b5e..2767c76a69e 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_tomb_of_seven.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockDepths/boss_tomb_of_seven.cpp @@ -202,7 +202,7 @@ public: instance->SetData(DATA_GHOSTKILL, 1); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_drakkisath.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_drakkisath.cpp index fa1f79d82e7..7081974195f 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_drakkisath.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_drakkisath.cpp @@ -69,7 +69,7 @@ public: _JustDied(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_gyth.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_gyth.cpp index cef633ac2d8..7a4f1aac17d 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_gyth.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_gyth.cpp @@ -92,7 +92,7 @@ public: Summoned->AddThreat(target, 250.0f); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_halycon.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_halycon.cpp index 2f9d39152e3..af0e5110523 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_halycon.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_halycon.cpp @@ -68,7 +68,7 @@ public: _JustDied(); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_highlord_omokk.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_highlord_omokk.cpp index afb6ab75649..082e1f8e79b 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_highlord_omokk.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_highlord_omokk.cpp @@ -78,7 +78,7 @@ public: _JustDied(); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_mother_smolderweb.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_mother_smolderweb.cpp index d67fa7c5caa..fc6d3f7d4db 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_mother_smolderweb.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_mother_smolderweb.cpp @@ -70,7 +70,7 @@ public: DoCast(me, SPELL_SUMMON_SPIRE_SPIDERLING, true); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_overlord_wyrmthalak.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_overlord_wyrmthalak.cpp index ff68462ffb5..09d85a680b8 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_overlord_wyrmthalak.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_overlord_wyrmthalak.cpp @@ -81,7 +81,7 @@ public: _JustDied(); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_pyroguard_emberseer.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_pyroguard_emberseer.cpp index da38fe9f54b..44a27e6938f 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_pyroguard_emberseer.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_pyroguard_emberseer.cpp @@ -97,7 +97,7 @@ public: door3->SetGoState(GO_STATE_ACTIVE); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_quartermaster_zigris.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_quartermaster_zigris.cpp index 2f86c009d56..8828fcfe753 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_quartermaster_zigris.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_quartermaster_zigris.cpp @@ -65,7 +65,7 @@ public: _JustDied(); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_rend_blackhand.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_rend_blackhand.cpp index b881f94dda9..b8d9377d7c4 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_rend_blackhand.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_rend_blackhand.cpp @@ -66,7 +66,7 @@ public: _JustDied(); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_shadow_hunter_voshgajin.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_shadow_hunter_voshgajin.cpp index 69ebf33248f..c429931d42b 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_shadow_hunter_voshgajin.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_shadow_hunter_voshgajin.cpp @@ -67,7 +67,7 @@ public: _JustDied(); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_the_beast.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_the_beast.cpp index f8f4f64b618..a32fefeca40 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_the_beast.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_the_beast.cpp @@ -66,7 +66,7 @@ public: _JustDied(); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_warmaster_voone.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_warmaster_voone.cpp index 7d4c7a40d61..056448854dc 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_warmaster_voone.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_warmaster_voone.cpp @@ -75,7 +75,7 @@ public: _JustDied(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_broodlord_lashlayer.cpp b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_broodlord_lashlayer.cpp index 0aeba151385..73afebfa9f3 100644 --- a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_broodlord_lashlayer.cpp +++ b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_broodlord_lashlayer.cpp @@ -32,12 +32,20 @@ enum Say SAY_LEASH = 1, }; +enum Events +{ + EVENT_CLEAVE = 1, + EVENT_MORTAL_STRIKE = 2, + EVENT_BLAST_WAVE = 3, + EVENT_KNOCK_BACK = 4, +}; + enum Spells { SPELL_CLEAVE = 26350, - SPELL_BLASTWAVE = 23331, - SPELL_MORTALSTRIKE = 24573, - SPELL_KNOCKBACK = 25778 + SPELL_BLAST_WAVE = 23331, + SPELL_MORTAL_STRIKE = 24573, + SPELL_KNOCK_BACK = 25778 }; class boss_broodlord : public CreatureScript @@ -54,17 +62,13 @@ public: { boss_broodlordAI(Creature* creature) : ScriptedAI(creature) {} - uint32 Cleave_Timer; - uint32 BlastWave_Timer; - uint32 MortalStrike_Timer; - uint32 KnockBack_Timer; - void Reset() { - Cleave_Timer = 8000; // These times are probably wrong - BlastWave_Timer = 12000; - MortalStrike_Timer = 20000; - KnockBack_Timer = 30000; + // These timers are probably wrong + events.ScheduleEvent(EVENT_CLEAVE, 8000); + events.ScheduleEvent(EVENT_BLAST_WAVE, 12000); + events.ScheduleEvent(EVENT_MORTAL_STRIKE, 20000); + events.ScheduleEvent(EVENT_KNOCK_BACK, 30000); } void EnterCombat(Unit* /*who*/) @@ -73,47 +77,56 @@ public: DoZoneInCombat(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; - //Cleave_Timer - if (Cleave_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_CLEAVE); - Cleave_Timer = 7000; - } else Cleave_Timer -= diff; - - // BlastWave - if (BlastWave_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_BLASTWAVE); - BlastWave_Timer = urand(8000, 16000); - } else BlastWave_Timer -= diff; + if (EnterEvadeIfOutOfCombatArea(diff)) + Talk(SAY_LEASH); - //MortalStrike_Timer - if (MortalStrike_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_MORTALSTRIKE); - MortalStrike_Timer = urand(25000, 35000); - } else MortalStrike_Timer -= diff; + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; - if (KnockBack_Timer <= diff) + while (uint32 eventId = events.ExecuteEvent()) { - DoCast(me->getVictim(), SPELL_KNOCKBACK); - //Drop 50% aggro - if (DoGetThreat(me->getVictim())) - DoModifyThreatPercent(me->getVictim(), -50); - - KnockBack_Timer = urand(15000, 30000); - } else KnockBack_Timer -= diff; + switch (eventId) + { + case EVENT_CLEAVE: + DoCastVictim(SPELL_CLEAVE); + events.ScheduleEvent(EVENT_CLEAVE, 8000); + break; + case EVENT_MORTAL_STRIKE: + DoCastVictim(SPELL_MORTAL_STRIKE); + events.ScheduleEvent(EVENT_MORTAL_STRIKE, 20000); + break; + case EVENT_BLAST_WAVE: + DoCastVictim(SPELL_BLAST_WAVE); + events.ScheduleEvent(EVENT_BLAST_WAVE, 12000); + break; + case EVENT_KNOCK_BACK: + if (Unit* target = me->getVictim()) + { + DoCast(target, SPELL_BLAST_WAVE); + // Drop 50% of threat + if (DoGetThreat(target)) + DoModifyThreatPercent(target, -50); + } + events.ScheduleEvent(EVENT_KNOCK_BACK, 30000); + break; + default: + break; + } + } if (EnterEvadeIfOutOfCombatArea(diff)) Talk(SAY_LEASH); DoMeleeAttackIfReady(); } + + private: + EventMap events; /// @todo: change BWL to instance script and bosses to BossAI }; }; diff --git a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_chromaggus.cpp b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_chromaggus.cpp index 14e4e90337c..c7459ed2f7d 100644 --- a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_chromaggus.cpp +++ b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_chromaggus.cpp @@ -200,7 +200,7 @@ public: void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_ebonroc.cpp b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_ebonroc.cpp index 54c1ba99e8d..a9b41b719f7 100644 --- a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_ebonroc.cpp +++ b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_ebonroc.cpp @@ -27,9 +27,10 @@ EndScriptData */ #include "ScriptedCreature.h" #define SPELL_SHADOWFLAME 22539 -#define SPELL_WINGBUFFET 18500 +#define SPELL_WINGBUFFET 23339 #define SPELL_SHADOWOFEBONROC 23340 -#define SPELL_HEAL 41386 //Thea Heal spell of his Shadow +#define SPELL_HEAL 41386 //The Heal spell of his Shadow +#define SPELL_THRASH 3391 class boss_ebonroc : public CreatureScript { @@ -49,6 +50,7 @@ public: uint32 WingBuffet_Timer; uint32 ShadowOfEbonroc_Timer; uint32 Heal_Timer; + uint32 Thrash_Timer; void Reset() { @@ -56,6 +58,7 @@ public: WingBuffet_Timer = 30000; ShadowOfEbonroc_Timer = 45000; Heal_Timer = 1000; + Thrash_Timer = 10000; } void EnterCombat(Unit* /*who*/) @@ -63,7 +66,7 @@ public: DoZoneInCombat(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -75,6 +78,13 @@ public: ShadowFlame_Timer = urand(12000, 15000); } else ShadowFlame_Timer -= diff; + //Thrash Timer + if (Thrash_Timer <= diff) + { + DoCast(me->getVictim(), SPELL_THRASH); + Thrash_Timer = urand(10000, 15000); + } else Thrash_Timer -= diff; + //Wing Buffet Timer if (WingBuffet_Timer <= diff) { diff --git a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_firemaw.cpp b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_firemaw.cpp index 7ca74f4ed4f..3b63d67814e 100644 --- a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_firemaw.cpp +++ b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_firemaw.cpp @@ -60,7 +60,7 @@ public: DoZoneInCombat(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -68,24 +68,26 @@ public: //ShadowFlame_Timer if (ShadowFlame_Timer <= diff) { - DoCast(me->getVictim(), SPELL_SHADOWFLAME); + DoCastVictim(SPELL_SHADOWFLAME); ShadowFlame_Timer = urand(15000, 18000); } else ShadowFlame_Timer -= diff; //WingBuffet_Timer if (WingBuffet_Timer <= diff) { - DoCast(me->getVictim(), SPELL_WINGBUFFET); - if (DoGetThreat(me->getVictim())) - DoModifyThreatPercent(me->getVictim(), -75); - + if (Unit* target = me->getVictim()) + { + DoCast(target, SPELL_WINGBUFFET); + if (DoGetThreat(target)) + DoModifyThreatPercent(target, -75); + } WingBuffet_Timer = 25000; } else WingBuffet_Timer -= diff; //FlameBuffet_Timer if (FlameBuffet_Timer <= diff) { - DoCast(me->getVictim(), SPELL_FLAMEBUFFET); + DoCastVictim(SPELL_FLAMEBUFFET); FlameBuffet_Timer = 5000; } else FlameBuffet_Timer -= diff; diff --git a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_flamegor.cpp b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_flamegor.cpp index a1659330a6f..f90389bc4eb 100644 --- a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_flamegor.cpp +++ b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_flamegor.cpp @@ -68,7 +68,7 @@ public: DoZoneInCombat(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -76,17 +76,19 @@ public: //ShadowFlame_Timer if (ShadowFlame_Timer <= diff) { - DoCast(me->getVictim(), SPELL_SHADOWFLAME); + DoCastVictim(SPELL_SHADOWFLAME); ShadowFlame_Timer = urand(15000, 22000); } else ShadowFlame_Timer -= diff; //WingBuffet_Timer if (WingBuffet_Timer <= diff) { - DoCast(me->getVictim(), SPELL_WINGBUFFET); - if (DoGetThreat(me->getVictim())) - DoModifyThreatPercent(me->getVictim(), -75); - + if (Unit* target = me->getVictim()) + { + DoCast(target, SPELL_WINGBUFFET); + if (DoGetThreat(target)) + DoModifyThreatPercent(target, -75); + } WingBuffet_Timer = 25000; } else WingBuffet_Timer -= diff; diff --git a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_nefarian.cpp b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_nefarian.cpp index 5594d826fdf..f96d6c4a562 100644 --- a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_nefarian.cpp +++ b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_nefarian.cpp @@ -123,7 +123,7 @@ public: DoZoneInCombat(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (DespawnTimer <= diff) { diff --git a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_razorgore.cpp b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_razorgore.cpp index b8361da5eb8..ebf6298b79d 100644 --- a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_razorgore.cpp +++ b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_razorgore.cpp @@ -81,7 +81,7 @@ public: Talk(SAY_DEATH); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_vaelastrasz.cpp b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_vaelastrasz.cpp index 45a9eb397eb..e07da353e90 100644 --- a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_vaelastrasz.cpp +++ b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_vaelastrasz.cpp @@ -156,7 +156,7 @@ public: me->ResetPlayerDamageReq(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Speech if (DoingSpeech) diff --git a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_victor_nefarius.cpp b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_victor_nefarius.cpp index 86709e5e6b5..8a781b48e90 100644 --- a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_victor_nefarius.cpp +++ b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_victor_nefarius.cpp @@ -270,7 +270,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/Deadmines/boss_mr_smite.cpp b/src/server/scripts/EasternKingdoms/Deadmines/boss_mr_smite.cpp index eb8fc77717c..060c2e0506f 100644 --- a/src/server/scripts/EasternKingdoms/Deadmines/boss_mr_smite.cpp +++ b/src/server/scripts/EasternKingdoms/Deadmines/boss_mr_smite.cpp @@ -94,7 +94,7 @@ public: return true; } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.cpp b/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.cpp index 6b0d39d7223..558ffaf7135 100644 --- a/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.cpp +++ b/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.cpp @@ -572,7 +572,7 @@ public: CAST_CRE(summon)->AI()->SetData(2, 1); } - void UpdateAI(const uint32 /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_curator.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_curator.cpp index bcdd1a9671a..9dab7439136 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_curator.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_curator.cpp @@ -95,7 +95,7 @@ public: Talk(SAY_AGGRO); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; 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 a431a3e10e7..52d9c697452 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_maiden_of_virtue.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_maiden_of_virtue.cpp @@ -89,7 +89,7 @@ public: Talk(SAY_AGGRO); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp index 8347e1c114d..1bbc1bc98fa 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp @@ -104,7 +104,7 @@ public: midnight->Kill(midnight); } - void UpdateAI(const uint32 diff); + void UpdateAI(uint32 diff); void SpellHit(Unit* /*source*/, const SpellInfo* spell) { @@ -153,7 +153,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -234,7 +234,7 @@ public: }; }; -void boss_attumen::boss_attumenAI::UpdateAI(const uint32 diff) +void boss_attumen::boss_attumenAI::UpdateAI(uint32 diff) { if (ResetTimer) { diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_moroes.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_moroes.cpp index 5c7c39e3725..f3bc733e722 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_moroes.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_moroes.cpp @@ -228,7 +228,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -354,7 +354,7 @@ struct boss_moroes_guestAI : public ScriptedAI return me; } - void UpdateAI(const uint32 /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (instance && !instance->GetData(TYPE_MOROES)) EnterEvadeMode(); @@ -421,7 +421,7 @@ public: boss_moroes_guestAI::Reset(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -482,7 +482,7 @@ public: boss_moroes_guestAI::Reset(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -543,7 +543,7 @@ public: boss_moroes_guestAI::Reset(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -613,7 +613,7 @@ public: boss_moroes_guestAI::Reset(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -683,7 +683,7 @@ public: boss_moroes_guestAI::Reset(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -741,7 +741,7 @@ public: boss_moroes_guestAI::Reset(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_netherspite.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_netherspite.cpp index dd9b97386b4..305e37a72d3 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_netherspite.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_netherspite.cpp @@ -269,7 +269,7 @@ public: DestroyPortals(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp index 6d9a1f98e93..8165ba5c53b 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp @@ -260,7 +260,7 @@ public: Skeletons = false; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { /* The timer for this was never setup apparently, not sure if the code works properly: if (WaitTimer <= diff) diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp index ae4b6197f4c..4ef91b93b43 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp @@ -121,7 +121,7 @@ public: void EnterCombat(Unit* /*who*/) {} void MoveInLineOfSight(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (HellfireTimer) { @@ -386,7 +386,7 @@ public: Talk(SAY_SUMMON); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; 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 5bd9e8a0bae..2a349297860 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp @@ -217,7 +217,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -531,7 +531,7 @@ public: void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp index 75a8c8cf662..fe773a1e3a2 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp @@ -111,7 +111,7 @@ public: } else ERROR_INST_DATA(me); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) @@ -228,7 +228,7 @@ public: void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) @@ -362,7 +362,7 @@ public: instance->SetData(TYPE_TERESTIAN, DONE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp b/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp index 6cb4e70ee7a..06389fbbf25 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp @@ -187,7 +187,7 @@ public: ScriptedAI::MoveInLineOfSight(who); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (AggroTimer) { @@ -263,7 +263,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -373,7 +373,7 @@ public: Talk(SAY_STRAWMAN_SLAY); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (AggroTimer) { @@ -478,7 +478,7 @@ public: Talk(SAY_TINHEAD_SLAY); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (AggroTimer) { @@ -585,7 +585,7 @@ public: Talk(SAY_ROAR_SLAY); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (AggroTimer) { @@ -682,7 +682,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -735,7 +735,7 @@ public: { } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!me->HasAura(SPELL_KNOCKBACK)) DoCast(me, SPELL_KNOCKBACK, true); @@ -871,7 +871,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -1121,7 +1121,7 @@ public: Talk(SAY_JULIANNE_SLAY); } - void UpdateAI(const uint32 diff); + void UpdateAI(uint32 diff); }; }; @@ -1276,7 +1276,7 @@ public: Talk(SAY_ROMULO_SLAY); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim() || IsFakingDeath) return; @@ -1331,7 +1331,7 @@ public: }; }; -void boss_julianne::boss_julianneAI::UpdateAI(const uint32 diff) +void boss_julianne::boss_julianneAI::UpdateAI(uint32 diff) { if (EntryYellTimer) { diff --git a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp index 7d3b63acb6a..b8525dd0181 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp @@ -266,7 +266,7 @@ public: RaidWiped = false; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { npc_escortAI::UpdateAI(diff); @@ -613,7 +613,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (YellTimer <= diff) { diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp index 5d132cbd34e..699793402f0 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp @@ -280,7 +280,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) @@ -462,7 +462,7 @@ public: void EnterCombat(Unit* /*who*/) {} void MoveInLineOfSight(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (FlameStrikeTimer <= diff) { @@ -548,7 +548,7 @@ public: me->SummonCreature(CREATURE_PHOENIX_EGG, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 45000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //If we are fake death, we cast revbirth and after that we kill the phoenix to spawn the egg. if (FakeDeath) @@ -610,7 +610,7 @@ public: void EnterCombat(Unit* /*who*/) {} void MoveInLineOfSight(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (HatchTimer <= diff) { @@ -651,7 +651,7 @@ public: void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (DespawnTimer <= diff) me->Kill(me); diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp index 3ed4c50fab4..36324e6b042 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp @@ -238,7 +238,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -456,7 +456,7 @@ struct boss_priestess_lackey_commonAI : public ScriptedAI } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UsedPotion && HealthBelowPct(25)) { @@ -517,7 +517,7 @@ public: boss_priestess_lackey_commonAI::Reset(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -623,7 +623,7 @@ public: DoCast(me, SPELL_SUMMON_IMP); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -703,7 +703,7 @@ public: boss_priestess_lackey_commonAI::Reset(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -780,7 +780,7 @@ public: boss_priestess_lackey_commonAI::Reset(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -907,7 +907,7 @@ public: DoCast(me, SPELL_BATTLE_SHOUT); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -1036,7 +1036,7 @@ public: m_uiPetGUID = summoned->GetGUID(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -1144,7 +1144,7 @@ public: boss_priestess_lackey_commonAI::Reset(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -1240,7 +1240,7 @@ public: boss_priestess_lackey_commonAI::Reset(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp index a18dbe79d40..bd5f57f8af0 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp @@ -242,7 +242,7 @@ public: ShatterRemainingCrystals(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -338,7 +338,7 @@ public: void EnterCombat(Unit* /*who*/) {} void AttackStart(Unit* /*who*/) {} void MoveInLineOfSight(Unit* /*who*/) {} - void UpdateAI(const uint32 /*diff*/) {} + void UpdateAI(uint32 /*diff*/) {} void JustDied(Unit* /*killer*/) { diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp index 85a113ec495..8958246f1cf 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp @@ -127,7 +127,7 @@ public: summoned->CastSpell(summoned, SPELL_ENERGY_BOLT, false, 0, 0, me->GetGUID()); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.cpp index da1423ed0e9..daaa7d94d18 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.cpp @@ -154,7 +154,7 @@ public: } } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (m_uiTransformTimer) { diff --git a/src/server/scripts/EasternKingdoms/MoltenCore/boss_baron_geddon.cpp b/src/server/scripts/EasternKingdoms/MoltenCore/boss_baron_geddon.cpp index cc8f2b41fbb..645322768e3 100644 --- a/src/server/scripts/EasternKingdoms/MoltenCore/boss_baron_geddon.cpp +++ b/src/server/scripts/EasternKingdoms/MoltenCore/boss_baron_geddon.cpp @@ -67,7 +67,7 @@ class boss_baron_geddon : public CreatureScript events.ScheduleEvent(EVENT_LIVING_BOMB, 35000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/MoltenCore/boss_garr.cpp b/src/server/scripts/EasternKingdoms/MoltenCore/boss_garr.cpp index 824fcca4714..aa563bf3180 100644 --- a/src/server/scripts/EasternKingdoms/MoltenCore/boss_garr.cpp +++ b/src/server/scripts/EasternKingdoms/MoltenCore/boss_garr.cpp @@ -64,7 +64,7 @@ class boss_garr : public CreatureScript events.ScheduleEvent(EVENT_MAGMA_SHACKLES, 15000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -129,7 +129,7 @@ class mob_firesworn : public CreatureScript } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/MoltenCore/boss_gehennas.cpp b/src/server/scripts/EasternKingdoms/MoltenCore/boss_gehennas.cpp index 6e9d9b00523..9007d16d2f9 100644 --- a/src/server/scripts/EasternKingdoms/MoltenCore/boss_gehennas.cpp +++ b/src/server/scripts/EasternKingdoms/MoltenCore/boss_gehennas.cpp @@ -61,7 +61,7 @@ class boss_gehennas : public CreatureScript events.ScheduleEvent(EVENT_SHADOW_BOLT, 6000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/MoltenCore/boss_golemagg.cpp b/src/server/scripts/EasternKingdoms/MoltenCore/boss_golemagg.cpp index 65c82610cc2..a21ca66543e 100644 --- a/src/server/scripts/EasternKingdoms/MoltenCore/boss_golemagg.cpp +++ b/src/server/scripts/EasternKingdoms/MoltenCore/boss_golemagg.cpp @@ -84,7 +84,7 @@ class boss_golemagg : public CreatureScript events.ScheduleEvent(EVENT_EARTHQUAKE, 3000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -155,7 +155,7 @@ class mob_core_rager : public CreatureScript } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/MoltenCore/boss_lucifron.cpp b/src/server/scripts/EasternKingdoms/MoltenCore/boss_lucifron.cpp index 1bb93b2e038..cb91cfc3cae 100644 --- a/src/server/scripts/EasternKingdoms/MoltenCore/boss_lucifron.cpp +++ b/src/server/scripts/EasternKingdoms/MoltenCore/boss_lucifron.cpp @@ -61,7 +61,7 @@ class boss_lucifron : public CreatureScript events.ScheduleEvent(EVENT_SHADOW_SHOCK, 6000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/MoltenCore/boss_magmadar.cpp b/src/server/scripts/EasternKingdoms/MoltenCore/boss_magmadar.cpp index c18e9db1ab7..c4b338d635d 100644 --- a/src/server/scripts/EasternKingdoms/MoltenCore/boss_magmadar.cpp +++ b/src/server/scripts/EasternKingdoms/MoltenCore/boss_magmadar.cpp @@ -73,7 +73,7 @@ class boss_magmadar : public CreatureScript events.ScheduleEvent(EVENT_LAVA_BOMB, 12000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/MoltenCore/boss_majordomo_executus.cpp b/src/server/scripts/EasternKingdoms/MoltenCore/boss_majordomo_executus.cpp index 26788e10302..a221e2829dd 100644 --- a/src/server/scripts/EasternKingdoms/MoltenCore/boss_majordomo_executus.cpp +++ b/src/server/scripts/EasternKingdoms/MoltenCore/boss_majordomo_executus.cpp @@ -94,7 +94,7 @@ class boss_majordomo : public CreatureScript events.ScheduleEvent(EVENT_TELEPORT, 20000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (instance && instance->GetBossState(BOSS_MAJORDOMO_EXECUTUS) != DONE) { @@ -174,7 +174,7 @@ class boss_majordomo : public CreatureScript } } - void DoAction(const int32 action) + void DoAction(int32 action) { if (action == ACTION_START_RAGNAROS) { diff --git a/src/server/scripts/EasternKingdoms/MoltenCore/boss_ragnaros.cpp b/src/server/scripts/EasternKingdoms/MoltenCore/boss_ragnaros.cpp index eecd9ae65f4..63764b5de01 100644 --- a/src/server/scripts/EasternKingdoms/MoltenCore/boss_ragnaros.cpp +++ b/src/server/scripts/EasternKingdoms/MoltenCore/boss_ragnaros.cpp @@ -115,7 +115,7 @@ class boss_ragnaros : public CreatureScript Talk(SAY_KILL); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (_introState != 2) { @@ -328,7 +328,7 @@ class mob_son_of_flame : public CreatureScript instance->SetData(DATA_RAGNAROS_ADDS, 1); } - void UpdateAI(const uint32 /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/MoltenCore/boss_shazzrah.cpp b/src/server/scripts/EasternKingdoms/MoltenCore/boss_shazzrah.cpp index 778a8012269..435082b5a98 100644 --- a/src/server/scripts/EasternKingdoms/MoltenCore/boss_shazzrah.cpp +++ b/src/server/scripts/EasternKingdoms/MoltenCore/boss_shazzrah.cpp @@ -66,7 +66,7 @@ class boss_shazzrah : public CreatureScript events.ScheduleEvent(EVENT_BLINK, 30000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/MoltenCore/boss_sulfuron_harbinger.cpp b/src/server/scripts/EasternKingdoms/MoltenCore/boss_sulfuron_harbinger.cpp index 1ad0c5dfa2d..b4c2372a015 100644 --- a/src/server/scripts/EasternKingdoms/MoltenCore/boss_sulfuron_harbinger.cpp +++ b/src/server/scripts/EasternKingdoms/MoltenCore/boss_sulfuron_harbinger.cpp @@ -77,7 +77,7 @@ class boss_sulfuron : public CreatureScript events.ScheduleEvent(EVENT_FLAMESPEAR, 2000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -162,7 +162,7 @@ class mob_flamewaker_priest : public CreatureScript events.ScheduleEvent(EVENT_IMMOLATE, 8000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp index 96293c635d6..c9d3201d02c 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp @@ -102,10 +102,8 @@ public: npc_unworthy_initiateAI(Creature* creature) : ScriptedAI(creature) { me->SetReactState(REACT_PASSIVE); - if (!me->GetEquipmentId()) - if (const CreatureTemplate* info = sObjectMgr->GetCreatureTemplate(28406)) - if (info->equipmentId) - const_cast<CreatureTemplate*>(me->GetCreatureTemplate())->equipmentId = info->equipmentId; + if (!me->GetCurrentEquipmentId()) + me->SetCurrentEquipmentId(me->GetOriginalEquipmentId()); } uint64 playerGUID; @@ -168,7 +166,7 @@ public: Talk(SAY_EVENT_START); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { switch (phase) { @@ -459,7 +457,7 @@ public: } } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (!UpdateVictim()) { @@ -544,7 +542,7 @@ public: TargetGUID = 0; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!Intro || !TargetGUID) return; @@ -816,7 +814,7 @@ public: } } - void UpdateAI(const uint32 /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (!me->isInCombat()) { @@ -890,7 +888,7 @@ public: minerGUID = guid; } - void DoAction(const int32 /*param*/) + void DoAction(int32 /*param*/) { if (Creature* miner = Unit::GetCreature(*me, minerGUID)) { @@ -1024,7 +1022,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (IntroPhase) { diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp index 6985ad2c4ad..cb067fccf0d 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp @@ -90,7 +90,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (speechCounter) { @@ -160,7 +160,7 @@ public: ## npc_koltira_deathweaver ######*/ -enum eKoltira +enum Koltira { SAY_BREAKOUT1 = 0, SAY_BREAKOUT2 = 1, @@ -180,10 +180,9 @@ enum eKoltira NPC_CRIMSON_ACOLYTE = 29007, NPC_HIGH_INQUISITOR_VALROTH = 29001, - NPC_KOLTIRA_ALT = 28447, //not sure about this id - //NPC_DEATH_KNIGHT_MOUNT = 29201, + //NPC_DEATH_KNIGHT_MOUNT = 29201, MODEL_DEATH_KNIGHT_MOUNT = 25278 }; @@ -198,17 +197,12 @@ public: { creature->SetStandState(UNIT_STAND_STATE_STAND); - if (npc_escortAI* pEscortAI = CAST_AI(npc_koltira_deathweaver::npc_koltira_deathweaverAI, creature->AI())) - pEscortAI->Start(false, false, player->GetGUID()); + if (npc_escortAI* escortAI = CAST_AI(npc_koltira_deathweaver::npc_koltira_deathweaverAI, creature->AI())) + escortAI->Start(false, false, player->GetGUID()); } return true; } - CreatureAI* GetAI(Creature* creature) const - { - return new npc_koltira_deathweaverAI(creature); - } - struct npc_koltira_deathweaverAI : public npc_escortAI { npc_koltira_deathweaverAI(Creature* creature) : npc_escortAI(creature) @@ -216,20 +210,17 @@ public: me->SetReactState(REACT_DEFENSIVE); } - uint32 m_uiWave; - uint32 m_uiWave_Timer; - uint64 m_uiValrothGUID; - void Reset() { if (!HasEscortState(STATE_ESCORT_ESCORTING)) { - m_uiWave = 0; - m_uiWave_Timer = 3000; - m_uiValrothGUID = 0; - me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); + wave = 0; + waveTimer = 3000; + valrothGUID = 0; me->LoadEquipment(0, true); - me->RemoveAura(SPELL_ANTI_MAGIC_ZONE); + me->RemoveAurasDueToSpell(SPELL_ANTI_MAGIC_ZONE); + me->RemoveAurasDueToSpell(SPELL_KOLTIRA_TRANSFORM); + me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); } } @@ -239,22 +230,21 @@ public: { case 0: Talk(SAY_BREAKOUT1); - me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); break; case 1: me->SetStandState(UNIT_STAND_STATE_KNEEL); break; case 2: me->SetStandState(UNIT_STAND_STATE_STAND); - //me->UpdateEntry(NPC_KOLTIRA_ALT); //unclear if we must update or not DoCast(me, SPELL_KOLTIRA_TRANSFORM); - me->LoadEquipment(me->GetEquipmentId()); + me->LoadEquipment(); break; case 3: SetEscortPaused(true); + me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); me->SetStandState(UNIT_STAND_STATE_KNEEL); Talk(SAY_BREAKOUT2); - DoCast(me, SPELL_ANTI_MAGIC_ZONE); // cast again that makes bubble up + DoCast(me, SPELL_ANTI_MAGIC_ZONE); break; case 4: SetRun(true); @@ -274,9 +264,8 @@ public: summoned->AI()->AttackStart(player); if (summoned->GetEntry() == NPC_HIGH_INQUISITOR_VALROTH) - m_uiValrothGUID = summoned->GetGUID(); + valrothGUID = summoned->GetGUID(); - summoned->AddThreat(me, 0.0f); summoned->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC); } @@ -286,57 +275,57 @@ public: me->SummonCreature(NPC_CRIMSON_ACOLYTE, 1642.329f, -6045.818f, 127.583f, 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000); } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { npc_escortAI::UpdateAI(uiDiff); if (HasEscortState(STATE_ESCORT_PAUSED)) { - if (m_uiWave_Timer <= uiDiff) + if (waveTimer <= uiDiff) { - switch (m_uiWave) + switch (wave) { case 0: Talk(SAY_BREAKOUT3); SummonAcolyte(3); - m_uiWave_Timer = 20000; + waveTimer = 20000; break; case 1: Talk(SAY_BREAKOUT4); SummonAcolyte(3); - m_uiWave_Timer = 20000; + waveTimer = 20000; break; case 2: Talk(SAY_BREAKOUT5); SummonAcolyte(4); - m_uiWave_Timer = 20000; + waveTimer = 20000; break; case 3: Talk(SAY_BREAKOUT6); me->SummonCreature(NPC_HIGH_INQUISITOR_VALROTH, 1642.329f, -6045.818f, 127.583f, 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 1000); - m_uiWave_Timer = 1000; + waveTimer = 1000; break; case 4: { - Creature* temp = Unit::GetCreature(*me, m_uiValrothGUID); + Creature* temp = Unit::GetCreature(*me, valrothGUID); if (!temp || !temp->isAlive()) { Talk(SAY_BREAKOUT8); - m_uiWave_Timer = 5000; + waveTimer = 5000; } else { - m_uiWave_Timer = 2500; - return; //return, we don't want m_uiWave to increment now + waveTimer = 2500; + return; } break; } case 5: Talk(SAY_BREAKOUT9); me->RemoveAurasDueToSpell(SPELL_ANTI_MAGIC_ZONE); - // i do not know why the armor will also be removed - m_uiWave_Timer = 2500; + me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); + waveTimer = 2500; break; case 6: Talk(SAY_BREAKOUT10); @@ -344,14 +333,24 @@ public: break; } - ++m_uiWave; + ++wave; } else - m_uiWave_Timer -= uiDiff; + waveTimer -= uiDiff; } } + + private: + uint8 wave; + uint32 waveTimer; + uint64 valrothGUID; + }; + CreatureAI* GetAI(Creature* creature) const + { + return new npc_koltira_deathweaverAI(creature); + } }; //Scarlet courier @@ -404,7 +403,7 @@ public: uiStage = 2; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (uiStage && !me->isInCombat()) { @@ -487,7 +486,7 @@ public: DoCast(who, SPELL_VALROTH_SMITE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (uiRenew_timer <= diff) { @@ -677,7 +676,7 @@ public: PlayerGUID = who->GetGUID(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (PlayerGUID && !me->getVictim() && me->isAlive()) { diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp index ff92710d5b2..3d91e81644e 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp @@ -606,7 +606,7 @@ public: npc_escortAI::EnterEvadeMode(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { npc_escortAI::UpdateAI(diff); @@ -1662,7 +1662,7 @@ public: npc_the_lich_king_tirion_dawnAI(Creature* creature) : ScriptedAI(creature) { Reset(); } void Reset() {} void AttackStart(Unit* /*who*/) {} // very sample, just don't make them aggreesive - void UpdateAI(const uint32 /*diff*/) {} + void UpdateAI(uint32 /*diff*/) {} void JustDied(Unit* /*killer*/) {} }; diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/zone_the_scarlet_enclave.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/zone_the_scarlet_enclave.cpp index 27e057ce6aa..16e6554d1f4 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/zone_the_scarlet_enclave.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/zone_the_scarlet_enclave.cpp @@ -69,7 +69,7 @@ public: me->SetPosition(x, y, z, 0.0f); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (FlyBackTimer <= diff) { diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_arcanist_doan.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_arcanist_doan.cpp index 1ede8a871d9..db08df50148 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_arcanist_doan.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_arcanist_doan.cpp @@ -72,7 +72,7 @@ public: Talk(SAY_AGGRO); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_azshir_the_sleepless.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_azshir_the_sleepless.cpp index 23480154c22..384ffeb6bf3 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_azshir_the_sleepless.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_azshir_the_sleepless.cpp @@ -60,7 +60,7 @@ public: void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_bloodmage_thalnos.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_bloodmage_thalnos.cpp index 7540a1eefb3..cae033f2a30 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_bloodmage_thalnos.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_bloodmage_thalnos.cpp @@ -77,7 +77,7 @@ public: Talk(SAY_KILL); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp index 4927666073b..32e8af3821b 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp @@ -204,7 +204,7 @@ public: DoCast(who, SPELL_SQUASH_SOUL); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (delay) { @@ -325,7 +325,7 @@ public: } void Disappear(); - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!withbody) { @@ -639,7 +639,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (withhead) { @@ -858,7 +858,7 @@ public: DoStartMovement(who); } - void UpdateAI(const uint32 /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (sprouted && UpdateVictim()) DoMeleeAttackIfReady(); diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_herod.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_herod.cpp index 6e24dd81bbe..4929e0fbb3d 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_herod.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_herod.cpp @@ -93,7 +93,7 @@ public: me->SummonCreature(ENTRY_SCARLET_TRAINEE, 1939.18f, -431.58f, 17.09f, 6.22f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 600000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -152,7 +152,7 @@ public: void WaypointReached(uint32 /*waypointId*/) {} void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (Start_Timer) { diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_high_inquisitor_fairbanks.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_high_inquisitor_fairbanks.cpp index 2c64ba693d0..12148157062 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_high_inquisitor_fairbanks.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_high_inquisitor_fairbanks.cpp @@ -77,7 +77,7 @@ public: me->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_houndmaster_loksey.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_houndmaster_loksey.cpp index 1b2679538b0..6bdf1a16b03 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_houndmaster_loksey.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_houndmaster_loksey.cpp @@ -59,7 +59,7 @@ public: Talk(SAY_AGGRO); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_interrogator_vishas.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_interrogator_vishas.cpp index 76673b7a632..4206e958f3c 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_interrogator_vishas.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_interrogator_vishas.cpp @@ -89,7 +89,7 @@ public: vorrel->AI()->Talk(SAY_TRIGGER_VORREL); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_mograine_and_whitemane.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_mograine_and_whitemane.cpp index 70af355a4c7..c6fdc6e651b 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_mograine_and_whitemane.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_mograine_and_whitemane.cpp @@ -175,7 +175,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -290,7 +290,7 @@ public: damage = me->GetHealth() - 1; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_scorn.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_scorn.cpp index f6b6118f701..639db4571cb 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_scorn.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_scorn.cpp @@ -63,7 +63,7 @@ public: void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp index 5d164fbfafa..dccb7ccbaa0 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp @@ -88,7 +88,7 @@ class boss_darkmaster_gandling : public CreatureScript me->GetMotionMaster()->MoveRandom(5); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_doctor_theolen_krastinov.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_doctor_theolen_krastinov.cpp index b2a91f4efe4..0f1999b112f 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_doctor_theolen_krastinov.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_doctor_theolen_krastinov.cpp @@ -61,7 +61,7 @@ class boss_doctor_theolen_krastinov : public CreatureScript events.ScheduleEvent(EVENT_FRENZY, 1000); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_illucia_barov.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_illucia_barov.cpp index 617dff17220..5ea6c86d23e 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_illucia_barov.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_illucia_barov.cpp @@ -59,7 +59,7 @@ class boss_illucia_barov : public CreatureScript events.ScheduleEvent(EVENT_FEAR, 30000); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_instructor_malicia.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_instructor_malicia.cpp index e2c7287f178..1d311a7bd2c 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_instructor_malicia.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_instructor_malicia.cpp @@ -72,7 +72,7 @@ class boss_instructor_malicia : public CreatureScript events.ScheduleEvent(EVENT_HEALINGTOUCH, 45000); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_jandice_barov.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_jandice_barov.cpp index c9cf4aa9020..3f083a30987 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_jandice_barov.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_jandice_barov.cpp @@ -70,7 +70,7 @@ public: Illusion->AI()->AttackStart(victim); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (Invisible && Invisible_Timer <= diff) { @@ -180,7 +180,7 @@ public: { } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp index 19660cec4af..97b8e0334ee 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp @@ -142,7 +142,7 @@ class boss_kirtonos_the_herald : public CreatureScript } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { events.Update(diff); diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_kormok.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_kormok.cpp index a0dc31c4dff..1167a945992 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_kormok.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_kormok.cpp @@ -74,7 +74,7 @@ public: SummonedMage->AI()->AttackStart(victim); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_lord_alexei_barov.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_lord_alexei_barov.cpp index 3a7aee0d6c6..d0028894067 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_lord_alexei_barov.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_lord_alexei_barov.cpp @@ -59,7 +59,7 @@ class boss_lord_alexei_barov : public CreatureScript events.ScheduleEvent(EVENT_VEILOFSHADOW, 15000); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_lorekeeper_polkelt.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_lorekeeper_polkelt.cpp index d06189d5054..f7170a0618f 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_lorekeeper_polkelt.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_lorekeeper_polkelt.cpp @@ -59,7 +59,7 @@ class boss_lorekeeper_polkelt : public CreatureScript events.ScheduleEvent(EVENT_NOXIOUSCATALYST, 35000); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_ras_frostwhisper.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_ras_frostwhisper.cpp index 99f01ee96c3..4483d5332d7 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_ras_frostwhisper.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_ras_frostwhisper.cpp @@ -71,7 +71,7 @@ public: void EnterCombat(Unit* /*who*/){} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_the_ravenian.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_the_ravenian.cpp index 99b9fba958c..14caccb8b00 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_the_ravenian.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_the_ravenian.cpp @@ -59,7 +59,7 @@ class boss_the_ravenian : public CreatureScript events.ScheduleEvent(EVENT_KNOCKAWAY, 32000); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_vectus.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_vectus.cpp index 054760981d2..85ae16499cf 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_vectus.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_vectus.cpp @@ -60,7 +60,7 @@ public: m_uiFrenzy_Timer = 0; } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.cpp b/src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.cpp index f9bd7d89216..7af7e1e78bc 100644 --- a/src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.cpp +++ b/src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.cpp @@ -172,7 +172,7 @@ public: uiDarkOffering = urand(200, 1000); } - void UpdateAI(uint32 const uiDiff) + void UpdateAI(uint32 uiDiff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/Stratholme/boss_baron_rivendare.cpp b/src/server/scripts/EasternKingdoms/Stratholme/boss_baron_rivendare.cpp index 2357f59b65d..8b49df5ca84 100644 --- a/src/server/scripts/EasternKingdoms/Stratholme/boss_baron_rivendare.cpp +++ b/src/server/scripts/EasternKingdoms/Stratholme/boss_baron_rivendare.cpp @@ -116,7 +116,7 @@ public: instance->SetData(TYPE_BARON, DONE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/Stratholme/boss_baroness_anastari.cpp b/src/server/scripts/EasternKingdoms/Stratholme/boss_baroness_anastari.cpp index d72e226d2e2..b2adbecbe63 100644 --- a/src/server/scripts/EasternKingdoms/Stratholme/boss_baroness_anastari.cpp +++ b/src/server/scripts/EasternKingdoms/Stratholme/boss_baroness_anastari.cpp @@ -74,7 +74,7 @@ public: instance->SetData(TYPE_BARONESS, IN_PROGRESS); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/Stratholme/boss_cannon_master_willey.cpp b/src/server/scripts/EasternKingdoms/Stratholme/boss_cannon_master_willey.cpp index 909609baecc..74819269415 100644 --- a/src/server/scripts/EasternKingdoms/Stratholme/boss_cannon_master_willey.cpp +++ b/src/server/scripts/EasternKingdoms/Stratholme/boss_cannon_master_willey.cpp @@ -119,7 +119,7 @@ public: { } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/EasternKingdoms/Stratholme/boss_dathrohan_balnazzar.cpp b/src/server/scripts/EasternKingdoms/Stratholme/boss_dathrohan_balnazzar.cpp index 2cb00df38db..f75a0c4a3dc 100644 --- a/src/server/scripts/EasternKingdoms/Stratholme/boss_dathrohan_balnazzar.cpp +++ b/src/server/scripts/EasternKingdoms/Stratholme/boss_dathrohan_balnazzar.cpp @@ -120,7 +120,7 @@ public: { } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/Stratholme/boss_magistrate_barthilas.cpp b/src/server/scripts/EasternKingdoms/Stratholme/boss_magistrate_barthilas.cpp index 5d75ce4fa16..5f4d1cbc0b9 100644 --- a/src/server/scripts/EasternKingdoms/Stratholme/boss_magistrate_barthilas.cpp +++ b/src/server/scripts/EasternKingdoms/Stratholme/boss_magistrate_barthilas.cpp @@ -85,7 +85,7 @@ public: { } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/EasternKingdoms/Stratholme/boss_maleki_the_pallid.cpp b/src/server/scripts/EasternKingdoms/Stratholme/boss_maleki_the_pallid.cpp index 0a7bdfad583..2812c1dd39b 100644 --- a/src/server/scripts/EasternKingdoms/Stratholme/boss_maleki_the_pallid.cpp +++ b/src/server/scripts/EasternKingdoms/Stratholme/boss_maleki_the_pallid.cpp @@ -72,7 +72,7 @@ public: instance->SetData(TYPE_PALLID, IN_PROGRESS); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/EasternKingdoms/Stratholme/boss_nerubenkan.cpp b/src/server/scripts/EasternKingdoms/Stratholme/boss_nerubenkan.cpp index 75bdd2b06de..2cc16bc2972 100644 --- a/src/server/scripts/EasternKingdoms/Stratholme/boss_nerubenkan.cpp +++ b/src/server/scripts/EasternKingdoms/Stratholme/boss_nerubenkan.cpp @@ -84,7 +84,7 @@ public: pUndeadScarab->AI()->AttackStart(victim); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/Stratholme/boss_order_of_silver_hand.cpp b/src/server/scripts/EasternKingdoms/Stratholme/boss_order_of_silver_hand.cpp index e52fd3402e7..7c6ea86dfa5 100644 --- a/src/server/scripts/EasternKingdoms/Stratholme/boss_order_of_silver_hand.cpp +++ b/src/server/scripts/EasternKingdoms/Stratholme/boss_order_of_silver_hand.cpp @@ -136,7 +136,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/EasternKingdoms/Stratholme/boss_postmaster_malown.cpp b/src/server/scripts/EasternKingdoms/Stratholme/boss_postmaster_malown.cpp index 5b0b39c1de2..3d0eaba9022 100644 --- a/src/server/scripts/EasternKingdoms/Stratholme/boss_postmaster_malown.cpp +++ b/src/server/scripts/EasternKingdoms/Stratholme/boss_postmaster_malown.cpp @@ -77,7 +77,7 @@ class boss_postmaster_malown : public CreatureScript Talk(SAY_KILL); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/Stratholme/boss_ramstein_the_gorger.cpp b/src/server/scripts/EasternKingdoms/Stratholme/boss_ramstein_the_gorger.cpp index 6d83093d13c..5cd69f561d6 100644 --- a/src/server/scripts/EasternKingdoms/Stratholme/boss_ramstein_the_gorger.cpp +++ b/src/server/scripts/EasternKingdoms/Stratholme/boss_ramstein_the_gorger.cpp @@ -82,7 +82,7 @@ public: instance->SetData(TYPE_RAMSTEIN, DONE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/EasternKingdoms/Stratholme/boss_timmy_the_cruel.cpp b/src/server/scripts/EasternKingdoms/Stratholme/boss_timmy_the_cruel.cpp index bd7c3519926..27249e84892 100644 --- a/src/server/scripts/EasternKingdoms/Stratholme/boss_timmy_the_cruel.cpp +++ b/src/server/scripts/EasternKingdoms/Stratholme/boss_timmy_the_cruel.cpp @@ -68,7 +68,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/EasternKingdoms/Stratholme/stratholme.cpp b/src/server/scripts/EasternKingdoms/Stratholme/stratholme.cpp index 0798fe2e3b0..7208bbbee03 100644 --- a/src/server/scripts/EasternKingdoms/Stratholme/stratholme.cpp +++ b/src/server/scripts/EasternKingdoms/Stratholme/stratholme.cpp @@ -172,7 +172,7 @@ public: me->SummonCreature(ENTRY_FREED, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), me->GetOrientation(), TEMPSUMMON_TIMED_DESPAWN, 300000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (Tagged) { @@ -244,7 +244,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (Tagged) { diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp index dab612828f8..d81c001889a 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp @@ -277,7 +277,7 @@ public: ScriptedAI::MoveInLineOfSight(who); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (IsIntro) { diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp index c186ada72b7..eb2e4f1ae8b 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp @@ -217,7 +217,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!SisterDeath) { @@ -345,10 +345,12 @@ public: return new boss_alythessAI (creature); }; - struct boss_alythessAI : public Scripted_NoMovementAI + struct boss_alythessAI : public ScriptedAI { - boss_alythessAI(Creature* creature) : Scripted_NoMovementAI(creature) + boss_alythessAI(Creature* creature) : ScriptedAI(creature) { + SetCombatMovement(false); + instance = creature->GetInstanceScript(); IntroStepCounter = 10; } @@ -418,9 +420,7 @@ public: void AttackStart(Unit* who) { if (!me->isInCombat()) - { - Scripted_NoMovementAI::AttackStart(who); - } + ScriptedAI::AttackStart(who); } void MoveInLineOfSight(Unit* who) @@ -542,7 +542,7 @@ public: return 10000; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (IntroStepCounter < 9) { @@ -707,7 +707,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!me->HasAura(SPELL_IMAGE_VISUAL)) DoCast(me, SPELL_IMAGE_VISUAL); diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp index 7f72da805ce..6ac6b9a4812 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp @@ -404,7 +404,7 @@ public: ++uiFlightCount; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) { @@ -536,7 +536,7 @@ public: DoZoneInCombat(); //DoCast(me, SPELL_VAPOR_FORCE, true); core bug } - void UpdateAI(const uint32 /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (!me->getVictim()) if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true)) @@ -568,7 +568,7 @@ public: void EnterCombat(Unit* /*who*/) {} void AttackStart(Unit* /*who*/) {} void MoveInLineOfSight(Unit* /*who*/) {} - void UpdateAI(const uint32 /*diff*/) {} + void UpdateAI(uint32 /*diff*/) {} }; }; diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp index a8755c16418..f6c9b79bbc1 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp @@ -182,7 +182,7 @@ public: ScriptedAI::EnterEvadeMode(); } - void DoAction(const int32 param) + void DoAction(int32 param) { switch (param) { @@ -197,7 +197,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (TalkTimer) { @@ -485,7 +485,7 @@ public: damage *= 3; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!me->HasAura(AURA_SPECTRAL_INVISIBILITY)) me->CastSpell(me, AURA_SPECTRAL_INVISIBILITY, true); @@ -691,7 +691,7 @@ public: } } - void DoAction(const int32 param) + void DoAction(int32 param) { switch (param) { @@ -706,7 +706,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!me->HasAura(AURA_SPECTRAL_INVISIBILITY)) me->CastSpell(me, AURA_SPECTRAL_INVISIBILITY, true); @@ -780,8 +780,9 @@ public: if (AgonyCurseTimer <= diff) { - Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0); - if (!target) target = me->getVictim(); + Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1); + if (!target) + target = me->getVictim(); DoCast(target, SPELL_AGONY_CURSE); AgonyCurseTimer = 20000; } else AgonyCurseTimer -= diff; diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp index 59face32389..39adb8faeff 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp @@ -335,7 +335,7 @@ public: } } - void UpdateAI(const uint32 /*diff*/) + void UpdateAI(uint32 /*diff*/) { } @@ -392,11 +392,13 @@ public: return new mob_kiljaeden_controllerAI (creature); } - struct mob_kiljaeden_controllerAI : public Scripted_NoMovementAI + struct mob_kiljaeden_controllerAI : public ScriptedAI { - mob_kiljaeden_controllerAI(Creature* creature) : Scripted_NoMovementAI(creature), summons(me) + mob_kiljaeden_controllerAI(Creature* creature) : ScriptedAI(creature), summons(me) { instance = creature->GetInstanceScript(); + + SetCombatMovement(false); } InstanceScript* instance; @@ -452,7 +454,7 @@ public: summons.Summon(summoned); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (uiRandomSayTimer < diff) { @@ -492,11 +494,13 @@ public: return new boss_kiljaedenAI (creature); } - struct boss_kiljaedenAI : public Scripted_NoMovementAI + struct boss_kiljaedenAI : public ScriptedAI { - boss_kiljaedenAI(Creature* creature) : Scripted_NoMovementAI(creature), summons(me) + boss_kiljaedenAI(Creature* creature) : ScriptedAI(creature), summons(me) { instance = creature->GetInstanceScript(); + + SetCombatMovement(false); } InstanceScript* instance; @@ -520,7 +524,7 @@ public: void InitializeAI() { - Scripted_NoMovementAI::InitializeAI(); + // Scripted_NoMovementAI::InitializeAI(); } void Reset() @@ -615,7 +619,8 @@ public: void EnterEvadeMode() { - Scripted_NoMovementAI::EnterEvadeMode(); + ScriptedAI::EnterEvadeMode(); + summons.DespawnAll(); // Reset the controller @@ -661,7 +666,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim() || Phase < PHASE_NORMAL) return; @@ -946,7 +951,7 @@ public: ++(CAST_AI(mob_kiljaeden_controller::mob_kiljaeden_controllerAI, pControl->AI())->deceiverDeathCount); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!me->isInCombat()) DoCast(me, SPELL_SHADOW_CHANNELING); @@ -999,9 +1004,12 @@ public: return new mob_felfire_portalAI (creature); } - struct mob_felfire_portalAI : public Scripted_NoMovementAI + struct mob_felfire_portalAI : public ScriptedAI { - mob_felfire_portalAI(Creature* creature) : Scripted_NoMovementAI(creature) {} + mob_felfire_portalAI(Creature* creature) : ScriptedAI(creature) + { + SetCombatMovement(false); + } uint32 uiSpawnFiendTimer; @@ -1017,7 +1025,7 @@ public: summoned->SetLevel(me->getLevel()); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -1063,7 +1071,7 @@ public: DoCast(me, SPELL_FELFIRE_FISSION, true); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -1100,9 +1108,12 @@ public: return new mob_armageddonAI (creature); } - struct mob_armageddonAI : public Scripted_NoMovementAI + struct mob_armageddonAI : public ScriptedAI { - mob_armageddonAI(Creature* creature) : Scripted_NoMovementAI(creature) {} + mob_armageddonAI(Creature* creature) : ScriptedAI(creature) + { + SetCombatMovement(false); + } uint8 spell; uint32 uiTimer; @@ -1113,7 +1124,7 @@ public: uiTimer = 0; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (uiTimer <= diff) { @@ -1182,7 +1193,7 @@ public: bClockwise = urand(0, 1); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (bPointReached) { @@ -1256,7 +1267,7 @@ public: victimClass = 0; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp index 5eb79258005..aa4acc24bfd 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp @@ -172,7 +172,7 @@ public: instance->SetData(DATA_MURU_EVENT, DONE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -213,10 +213,11 @@ public: return new boss_muruAI (creature); } - struct boss_muruAI : public Scripted_NoMovementAI + struct boss_muruAI : public ScriptedAI { - boss_muruAI(Creature* creature) : Scripted_NoMovementAI(creature), Summons(me) + boss_muruAI(Creature* creature) : ScriptedAI(creature), Summons(creature) { + SetCombatMovement(false); instance = creature->GetInstanceScript(); } @@ -285,7 +286,7 @@ public: Summons.Summon(summoned); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -377,10 +378,11 @@ public: return new npc_muru_portalAI (creature); } - struct npc_muru_portalAI : public Scripted_NoMovementAI + struct npc_muru_portalAI : public ScriptedAI { - npc_muru_portalAI(Creature* creature) : Scripted_NoMovementAI(creature), Summons(me) + npc_muru_portalAI(Creature* creature) : ScriptedAI(creature), Summons(creature) { + SetCombatMovement(false); instance = creature->GetInstanceScript(); } @@ -432,7 +434,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!SummonSentinel) { @@ -482,7 +484,7 @@ public: me->DisappearAndDie(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -544,7 +546,7 @@ public: me->SummonCreature(CREATURE_VOID_SPAWN, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), float(rand()%6), TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 180000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -600,7 +602,7 @@ public: DoCastAOE(SPELL_BLACKHOLE_SPAWN, true); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (SpellTimer <= diff) { diff --git a/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp b/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp index 81f64ce6de0..ec9409af69f 100644 --- a/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp +++ b/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp @@ -130,7 +130,7 @@ class boss_archaedas : public CreatureScript Talk(SAY_KILL); } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (!instance) return; @@ -278,7 +278,7 @@ class mob_archaedas_minions : public CreatureScript ScriptedAI::MoveInLineOfSight(who); } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { // we're still in the awaken animation if (bWakingUp && iAwakenTimer >= 0) @@ -347,7 +347,7 @@ class mob_stonekeepers : public CreatureScript me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE); } - void UpdateAI(const uint32 /*diff*/) + void UpdateAI(uint32 /*diff*/) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/EasternKingdoms/Uldaman/boss_ironaya.cpp b/src/server/scripts/EasternKingdoms/Uldaman/boss_ironaya.cpp index 6f521060541..f40570d4130 100644 --- a/src/server/scripts/EasternKingdoms/Uldaman/boss_ironaya.cpp +++ b/src/server/scripts/EasternKingdoms/Uldaman/boss_ironaya.cpp @@ -63,7 +63,7 @@ class boss_ironaya : public CreatureScript Talk(SAY_AGGRO); } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/EasternKingdoms/Uldaman/uldaman.cpp b/src/server/scripts/EasternKingdoms/Uldaman/uldaman.cpp index 0cd59951590..9fdc2f26d9f 100644 --- a/src/server/scripts/EasternKingdoms/Uldaman/uldaman.cpp +++ b/src/server/scripts/EasternKingdoms/Uldaman/uldaman.cpp @@ -68,7 +68,7 @@ class mob_jadespine_basilisk : public CreatureScript { } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp index 1b2512ccf63..ce526fb0ddc 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp @@ -201,8 +201,11 @@ class boss_akilzon : public CreatureScript //dealdamege for (std::list<Unit*>::const_iterator i = tempUnitMap.begin(); i != tempUnitMap.end(); ++i) { - if (!Cloud->IsWithinDist(*i, 6, false)) - Cloud->CastCustomSpell(*i, 43137, &bp0, NULL, NULL, true, 0, 0, me->GetGUID()); + if (Unit* target = (*i)) + { + if (!Cloud->IsWithinDist(target, 6, false)) + Cloud->CastCustomSpell(target, 43137, &bp0, NULL, NULL, true, 0, 0, me->GetGUID()); + } } // visual float x, y, z; @@ -237,7 +240,7 @@ class boss_akilzon : public CreatureScript StormSequenceTimer = 1000; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -418,7 +421,7 @@ class mob_akilzon_eagle : public CreatureScript } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (EagleSwoop_Timer <= diff) EagleSwoop_Timer = 0; diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp index 577423adb39..21392fda660 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp @@ -213,7 +213,7 @@ class boss_halazzi : public CreatureScript Phase = NextPhase; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -384,7 +384,7 @@ class mob_halazzi_lynx : public CreatureScript void EnterCombat(Unit* /*who*/) {/*DoZoneInCombat();*/} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp index d3d7bd390ca..332baa29b51 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp @@ -198,7 +198,7 @@ struct boss_hexlord_addAI : public ScriptedAI DoZoneInCombat(); } - void UpdateAI(const uint32 /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (instance && instance->GetData(DATA_HEXLORDEVENT) != IN_PROGRESS) { @@ -351,7 +351,7 @@ class boss_hexlord_malacrass : public CreatureScript } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -511,7 +511,7 @@ class boss_thurg : public CreatureScript boss_hexlord_addAI::Reset(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -588,7 +588,7 @@ class boss_alyson_antille : public CreatureScript } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -672,7 +672,7 @@ struct boss_gazakrothAI : public boss_hexlord_addAI } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -714,7 +714,7 @@ class boss_lord_raadan : public CreatureScript boss_hexlord_addAI::Reset(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -763,7 +763,7 @@ class boss_darkheart : public CreatureScript psychicwail_timer = 8000; boss_hexlord_addAI::Reset(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -822,7 +822,7 @@ class boss_slither : public CreatureScript } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -867,7 +867,7 @@ class boss_fenstalker : public CreatureScript boss_hexlord_addAI::Reset(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -916,7 +916,7 @@ class boss_koragg : public CreatureScript boss_hexlord_addAI::Reset(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_janalai.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_janalai.cpp index eced8dd6830..75e044a3c5e 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_janalai.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_janalai.cpp @@ -315,7 +315,7 @@ class boss_janalai : public CreatureScript } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (isFlameBreathing) { @@ -468,7 +468,7 @@ class mob_janalai_firebomb : public CreatureScript void MoveInLineOfSight(Unit* /*who*/) {} - void UpdateAI(const uint32 /*diff*/) {} + void UpdateAI(uint32 /*diff*/) {} }; CreatureAI* GetAI(Creature* creature) const @@ -560,7 +560,7 @@ class mob_janalai_hatcher : public CreatureScript WaitTimer = 1; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!instance || !(instance->GetData(DATA_JANALAIEVENT) == IN_PROGRESS)) { @@ -641,7 +641,7 @@ class mob_janalai_hatchling : public CreatureScript void EnterCombat(Unit* /*who*/) {/*DoZoneInCombat();*/} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!instance || !(instance->GetData(DATA_JANALAIEVENT) == IN_PROGRESS)) { @@ -684,7 +684,7 @@ public: void Reset() {} - void UpdateAI(uint32 const /*diff*/) {} + void UpdateAI(uint32 /*diff*/) {} void SpellHit(Unit* /*caster*/, const SpellInfo* spell) { diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp index 8fd9da930ae..e1cbb52e8d9 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp @@ -343,7 +343,7 @@ class boss_nalorakk : public CreatureScript } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (waitTimer && inMove) { diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp index 2305c360fd2..be88e67386b 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp @@ -363,7 +363,7 @@ class boss_zuljin : public CreatureScript Phase = NextPhase; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!TankGUID) { @@ -582,7 +582,7 @@ class mob_zuljin_vortex : public CreatureScript DoCast(caster, SPELL_ZAP_DAMAGE, true); } - void UpdateAI(const uint32 /*diff*/) + void UpdateAI(uint32 /*diff*/) { //if the vortex reach the target, it change his target to another player if (me->IsWithinMeleeRange(me->getVictim())) diff --git a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp index 44fa0f87177..ff6d434fa40 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp @@ -148,7 +148,7 @@ class npc_zulaman_hostage : public CreatureScript player->SendLoot(me->GetGUID(), LOOT_CORPSE); } - void UpdateAI(const uint32 /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (IsLoot) DoCast(me, 7, false); @@ -314,14 +314,14 @@ class npc_harrison_jones : public CreatureScript me->SetEntry(NPC_HARRISON_JONES_2); me->SetDisplayId(MODEL_HARRISON_JONES_2); me->SetTarget(0); - me->SetByteValue(UNIT_FIELD_BYTES_1, 0,UNIT_STAND_STATE_DEAD); + me->SetByteValue(UNIT_FIELD_BYTES_1, 0, UNIT_STAND_STATE_DEAD); me->SetFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_DEAD); if (instance) instance->SetData(DATA_GONGEVENT, DONE); } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (_gongEvent) { diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp index c2806c395f4..97eeb385e15 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp @@ -180,7 +180,7 @@ class boss_arlokk : public CreatureScript --_summonCountB; } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -386,7 +386,7 @@ class npc_zulian_prowler : public CreatureScript me->DespawnOrUnsummon(4000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (UpdateVictim()) { diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp index f3f12bc35c5..e930d864940 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp @@ -67,7 +67,7 @@ class boss_gahzranka : public CreatureScript // gahzranka events.ScheduleEvent(EVENT_SLAM, 17000); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp index f06500694a5..af8303e63e4 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp @@ -64,7 +64,7 @@ class boss_grilek : public CreatureScript // grilek events.ScheduleEvent(EVENT_GROUND_TREMOR, urand(15000, 25000)); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -80,8 +80,12 @@ class boss_grilek : public CreatureScript // grilek { case EVENT_AVATAR: DoCast(me, SPELL_AVATAR); - if (DoGetThreat(me->getVictim())) - DoModifyThreatPercent(me->getVictim(), -50); + if (Unit* victim = me->getVictim()) + { + if (DoGetThreat(victim)) + DoModifyThreatPercent(victim, -50); + } + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1)) AttackStart(target); events.ScheduleEvent(EVENT_AVATAR, urand(25000, 35000)); diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp index 68aac7547df..f9fe338d918 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp @@ -103,7 +103,7 @@ class boss_hakkar : public CreatureScript Talk(SAY_AGGRO); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp index 809403bb325..b2282ba85da 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp @@ -66,7 +66,7 @@ class boss_hazzarah : public CreatureScript events.ScheduleEvent(EVENT_ILLUSIONS, urand(10000, 18000)); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp index dc02c895327..73d2982aee6 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp @@ -97,7 +97,7 @@ class boss_jeklik : public CreatureScript //jeklik DoCast(me, SPELL_BAT_FORM); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -158,7 +158,7 @@ class boss_jeklik : public CreatureScript //jeklik { if (PhaseTwo) { - if (PhaseTwo && ShadowWordPain_Timer <= diff) + if (ShadowWordPain_Timer <= diff) { if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) { @@ -189,13 +189,11 @@ class boss_jeklik : public CreatureScript //jeklik if (SpawnFlyingBats_Timer <= diff) { - Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0); - if (!target) - return; - - Creature* FlyingBat = me->SummonCreature(14965, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ()+15, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (FlyingBat) - FlyingBat->AI()->AttackStart(target); + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + { + if (Creature* FlyingBat = me->SummonCreature(14965, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ()+15, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000)) + FlyingBat->AI()->AttackStart(target); + } SpawnFlyingBats_Timer = urand(10000, 15000); } else SpawnFlyingBats_Timer -=diff; @@ -251,7 +249,7 @@ class mob_batrider : public CreatureScript void EnterCombat(Unit* /*who*/) {} - void UpdateAI (const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp index 005609e88db..166acc13f58 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp @@ -86,7 +86,7 @@ class boss_jindo : public CreatureScript Talk(SAY_AGGRO); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -110,9 +110,12 @@ class boss_jindo : public CreatureScript events.ScheduleEvent(EVENT_POWERFULLHEALINGWARD, urand(14000, 20000)); break; case EVENT_HEX: - DoCastVictim(SPELL_HEX, true); - if (DoGetThreat(me->getVictim())) - DoModifyThreatPercent(me->getVictim(), -80); + if (Unit* target = me->getVictim()) + { + DoCast(target, SPELL_HEX, true); + if (DoGetThreat(target)) + DoModifyThreatPercent(target, -80); + } events.ScheduleEvent(EVENT_HEX, urand(12000, 20000)); break; case EVENT_DELUSIONSOFJINDO: // HACK @@ -161,7 +164,7 @@ class boss_jindo : public CreatureScript SacrificedTroll = me->SummonCreature(NPC_SACRIFICED_TROLL, target->GetPositionX()+3, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); if (SacrificedTroll) SacrificedTroll->AI()->AttackStart(target); - } + } events.ScheduleEvent(EVENT_TELEPORT, urand(15000, 23000)); break; default: @@ -209,7 +212,7 @@ class mob_healing_ward : public CreatureScript { } - void UpdateAI (const uint32 diff) + void UpdateAI(uint32 diff) { //Heal_Timer if (Heal_Timer <= diff) @@ -257,7 +260,7 @@ class mob_shade_of_jindo : public CreatureScript void EnterCombat(Unit* /*who*/){} - void UpdateAI (const uint32 diff) + void UpdateAI(uint32 diff) { //ShadowShock_Timer diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp index e402480609b..bd7b7a8798c 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp @@ -191,7 +191,7 @@ class boss_mandokir : public CreatureScript } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { events.Update(diff); @@ -311,7 +311,7 @@ class mob_ohgan : public CreatureScript instance->SetBossState(DATA_OHGAN, DONE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { // Return since we have no target if (!UpdateVictim()) @@ -364,7 +364,7 @@ class mob_vilebranch_speaker : public CreatureScript instance->SetBossState(DATA_MANDOKIR, SPECIAL); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { // Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp index 40850a988e4..b1200c2899e 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp @@ -95,7 +95,7 @@ class boss_marli : public CreatureScript Talk(SAY_AGGRO); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -239,7 +239,7 @@ class mob_spawn_of_marli : public CreatureScript { } - void UpdateAI (const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp index 6bf87decf7e..7e8c7dca7b4 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp @@ -78,7 +78,7 @@ class boss_renataki : public CreatureScript _EnterCombat(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp index 61eb695719a..f115daf0fb0 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp @@ -116,7 +116,7 @@ class boss_thekal : public CreatureScript instance->SetBossState(DATA_THEKAL, NOT_STARTED); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -232,7 +232,7 @@ class boss_thekal : public CreatureScript if (me->IsFullHealth() && WasDead) WasDead = false; - if ((events.GetPhaseMask() == PHASE_ONE) && !WasDead && !HealthAbovePct(5)) + if ((events.IsInPhase(PHASE_ONE)) && !WasDead && !HealthAbovePct(5)) { me->RemoveAurasByType(SPELL_AURA_PERIODIC_DAMAGE_PERCENT); me->RemoveAurasByType(SPELL_AURA_PERIODIC_DAMAGE); @@ -298,7 +298,7 @@ class mob_zealot_lorkhan : public CreatureScript { } - void UpdateAI (const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -460,7 +460,7 @@ class mob_zealot_zath : public CreatureScript { } - void UpdateAI (const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp index 11a6e710c3c..3d53d71394b 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp @@ -147,7 +147,7 @@ class boss_venoxis : public CreatureScript } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp index d1e7edf0218..945303f3d10 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp @@ -64,7 +64,7 @@ class boss_wushoolay : public CreatureScript events.ScheduleEvent(EVENT_LIGHTNINGWAVE, urand(8000, 16000)); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/boss_kruul.cpp b/src/server/scripts/EasternKingdoms/boss_kruul.cpp index 158861e90c7..997417714e8 100644 --- a/src/server/scripts/EasternKingdoms/boss_kruul.cpp +++ b/src/server/scripts/EasternKingdoms/boss_kruul.cpp @@ -86,7 +86,7 @@ public: Hound->AI()->AttackStart(victim); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/EasternKingdoms/zone_arathi_highlands.cpp b/src/server/scripts/EasternKingdoms/zone_arathi_highlands.cpp index d638a435936..74344f28a9b 100644 --- a/src/server/scripts/EasternKingdoms/zone_arathi_highlands.cpp +++ b/src/server/scripts/EasternKingdoms/zone_arathi_highlands.cpp @@ -115,7 +115,7 @@ class npc_professor_phizzlethorpe : public CreatureScript Talk(SAY_AGGRO); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { npc_escortAI::UpdateAI(diff); } diff --git a/src/server/scripts/EasternKingdoms/zone_duskwood.cpp b/src/server/scripts/EasternKingdoms/zone_duskwood.cpp index 1ce83d31a63..5bfb5edadc1 100644 --- a/src/server/scripts/EasternKingdoms/zone_duskwood.cpp +++ b/src/server/scripts/EasternKingdoms/zone_duskwood.cpp @@ -116,7 +116,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/EasternKingdoms/zone_eversong_woods.cpp b/src/server/scripts/EasternKingdoms/zone_eversong_woods.cpp index 432768a51de..ce62de8b368 100644 --- a/src/server/scripts/EasternKingdoms/zone_eversong_woods.cpp +++ b/src/server/scripts/EasternKingdoms/zone_eversong_woods.cpp @@ -166,7 +166,7 @@ public: void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (questPhase == 1) { @@ -315,7 +315,7 @@ public: void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { // Quest accepted but object not activated, object despawned (if in sync 1 minute!) if (questPhase == 1) @@ -496,7 +496,7 @@ public: player->FailQuest(QUEST_UNEXPECTED_RESULT); } - void UpdateAI(const uint32 /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (KillCount >= 3 && PlayerGUID) if (Player* player = Unit::GetPlayer(*me, PlayerGUID)) @@ -551,9 +551,12 @@ public: return new npc_infused_crystalAI (creature); } - struct npc_infused_crystalAI : public Scripted_NoMovementAI + struct npc_infused_crystalAI : public ScriptedAI { - npc_infused_crystalAI(Creature* creature) : Scripted_NoMovementAI(creature) {} + npc_infused_crystalAI(Creature* creature) : ScriptedAI(creature) + { + SetCombatMovement(false); + } uint32 EndTimer; uint32 WaveTimer; @@ -596,7 +599,7 @@ public: CAST_PLR(player)->FailQuest(QUEST_POWERING_OUR_DEFENSES); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (EndTimer < diff && Progress) { diff --git a/src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp b/src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp index bfd4d24cec6..45f5e17095f 100644 --- a/src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp +++ b/src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp @@ -71,7 +71,7 @@ public: void MoveInLineOfSight(Unit* /*who*/) {} void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!Credit) { @@ -145,7 +145,7 @@ public: } } - void UpdateAI(const uint32 /*diff*/) + void UpdateAI(uint32 /*diff*/) { DoMeleeAttackIfReady(); } diff --git a/src/server/scripts/EasternKingdoms/zone_redridge_mountains.cpp b/src/server/scripts/EasternKingdoms/zone_redridge_mountains.cpp index 5ff95f83f25..fc5ee94a55f 100644 --- a/src/server/scripts/EasternKingdoms/zone_redridge_mountains.cpp +++ b/src/server/scripts/EasternKingdoms/zone_redridge_mountains.cpp @@ -105,7 +105,7 @@ public: } } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (HasEscortState(STATE_ESCORT_NONE)) return; diff --git a/src/server/scripts/EasternKingdoms/zone_silvermoon_city.cpp b/src/server/scripts/EasternKingdoms/zone_silvermoon_city.cpp index e750faefbf5..fd36a02b8a5 100644 --- a/src/server/scripts/EasternKingdoms/zone_silvermoon_city.cpp +++ b/src/server/scripts/EasternKingdoms/zone_silvermoon_city.cpp @@ -77,7 +77,7 @@ public: { } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (me->IsStandState()) { diff --git a/src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp b/src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp index 290f7fa6882..80e47dbbf08 100644 --- a/src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp +++ b/src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp @@ -253,7 +253,7 @@ public: player->FailQuest(QUEST_PYREWOOD_AMBUSH); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //sLog->outInfo(LOG_FILTER_TSCR, "DEBUG: p(%i) k(%i) d(%u) W(%i)", Phase, KillCount, diff, WaitTimer); diff --git a/src/server/scripts/EasternKingdoms/zone_stormwind_city.cpp b/src/server/scripts/EasternKingdoms/zone_stormwind_city.cpp index e81567a1a7a..b9c9c8ff15b 100644 --- a/src/server/scripts/EasternKingdoms/zone_stormwind_city.cpp +++ b/src/server/scripts/EasternKingdoms/zone_stormwind_city.cpp @@ -308,7 +308,7 @@ public: } } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (uiPhase) { @@ -448,7 +448,7 @@ public: } } - void UpdateAI(const uint32 /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (!UpdateVictim()) return; @@ -524,7 +524,7 @@ public: } } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (uiPhase) { diff --git a/src/server/scripts/EasternKingdoms/zone_stranglethorn_vale.cpp b/src/server/scripts/EasternKingdoms/zone_stranglethorn_vale.cpp index 6e14ef840a3..c11e850cbc8 100644 --- a/src/server/scripts/EasternKingdoms/zone_stranglethorn_vale.cpp +++ b/src/server/scripts/EasternKingdoms/zone_stranglethorn_vale.cpp @@ -83,7 +83,7 @@ public: void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (bReset) { diff --git a/src/server/scripts/EasternKingdoms/zone_swamp_of_sorrows.cpp b/src/server/scripts/EasternKingdoms/zone_swamp_of_sorrows.cpp index f686de5d88f..c7780bb0065 100644 --- a/src/server/scripts/EasternKingdoms/zone_swamp_of_sorrows.cpp +++ b/src/server/scripts/EasternKingdoms/zone_swamp_of_sorrows.cpp @@ -128,7 +128,7 @@ public: } } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { npc_escortAI::UpdateAI(uiDiff); diff --git a/src/server/scripts/EasternKingdoms/zone_tirisfal_glades.cpp b/src/server/scripts/EasternKingdoms/zone_tirisfal_glades.cpp index f36220dec0f..9a496fadb1e 100644 --- a/src/server/scripts/EasternKingdoms/zone_tirisfal_glades.cpp +++ b/src/server/scripts/EasternKingdoms/zone_tirisfal_glades.cpp @@ -113,7 +113,7 @@ public: } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (m_uiPhase) { diff --git a/src/server/scripts/EasternKingdoms/zone_undercity.cpp b/src/server/scripts/EasternKingdoms/zone_undercity.cpp index 2c3017a2f1a..43ee012ef40 100644 --- a/src/server/scripts/EasternKingdoms/zone_undercity.cpp +++ b/src/server/scripts/EasternKingdoms/zone_undercity.cpp @@ -142,7 +142,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (LamentEvent) { @@ -248,7 +248,7 @@ public: void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (EventMove) { diff --git a/src/server/scripts/EasternKingdoms/zone_western_plaguelands.cpp b/src/server/scripts/EasternKingdoms/zone_western_plaguelands.cpp index ee22b766154..1831d9f7ff1 100644 --- a/src/server/scripts/EasternKingdoms/zone_western_plaguelands.cpp +++ b/src/server/scripts/EasternKingdoms/zone_western_plaguelands.cpp @@ -254,9 +254,12 @@ public: return new npc_andorhal_towerAI (creature); } - struct npc_andorhal_towerAI : public Scripted_NoMovementAI + struct npc_andorhal_towerAI : public ScriptedAI { - npc_andorhal_towerAI(Creature* creature) : Scripted_NoMovementAI(creature) {} + npc_andorhal_towerAI(Creature* creature) : ScriptedAI(creature) + { + SetCombatMovement(false); + } void MoveInLineOfSight(Unit* who) { @@ -395,7 +398,7 @@ public: player->FailQuest(QUEST_TOMB_LIGHTBRINGER); } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { npc_escortAI::UpdateAI(uiDiff); DoMeleeAttackIfReady(); diff --git a/src/server/scripts/Events/childrens_week.cpp b/src/server/scripts/Events/childrens_week.cpp index 9d35b510f6e..4541e160e63 100644 --- a/src/server/scripts/Events/childrens_week.cpp +++ b/src/server/scripts/Events/childrens_week.cpp @@ -173,7 +173,7 @@ class npc_winterfin_playmate : public CreatureScript } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!phase) return; @@ -271,7 +271,7 @@ class npc_snowfall_glade_playmate : public CreatureScript } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!phase) return; @@ -371,7 +371,7 @@ class npc_the_biggest_tree : public CreatureScript } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!phase) return; @@ -457,7 +457,7 @@ class npc_high_oracle_soo_roo : public CreatureScript } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!phase) return; @@ -545,7 +545,7 @@ class npc_elder_kekek : public CreatureScript } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!phase) return; @@ -633,7 +633,7 @@ class npc_the_etymidian : public CreatureScript } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!phase) return; @@ -755,7 +755,7 @@ class npc_alexstraza_the_lifebinder : public CreatureScript } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!phase) return; diff --git a/src/server/scripts/Examples/example_creature.cpp b/src/server/scripts/Examples/example_creature.cpp index f82782448ea..d4e1b8d8ce2 100644 --- a/src/server/scripts/Examples/example_creature.cpp +++ b/src/server/scripts/Examples/example_creature.cpp @@ -165,7 +165,7 @@ class example_creature : public CreatureScript // *** HANDLED FUNCTION *** //Update AI is called Every single map update (roughly once every 50ms if a player is within the grid) - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { //Out of combat timers if (!me->getVictim()) diff --git a/src/server/scripts/Examples/example_escort.cpp b/src/server/scripts/Examples/example_escort.cpp index a7906c4359a..e911736036c 100644 --- a/src/server/scripts/Examples/example_escort.cpp +++ b/src/server/scripts/Examples/example_escort.cpp @@ -136,7 +136,7 @@ class example_escort : public CreatureScript Talk(SAY_DEATH_3); } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { //Must update npc_escortAI npc_escortAI::UpdateAI(uiDiff); diff --git a/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.cpp b/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.cpp index 27a442f302e..0f52daba991 100644 --- a/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.cpp +++ b/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.cpp @@ -132,7 +132,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_aku_mai.cpp b/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_aku_mai.cpp index e3fdc633382..535d9a4425b 100644 --- a/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_aku_mai.cpp +++ b/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_aku_mai.cpp @@ -67,7 +67,7 @@ public: instance->SetData(TYPE_AKU_MAI, DONE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_gelihast.cpp b/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_gelihast.cpp index ee87dfa3cf8..4fa9edd40c6 100644 --- a/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_gelihast.cpp +++ b/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_gelihast.cpp @@ -64,7 +64,7 @@ public: instance->SetData(TYPE_GELIHAST, DONE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_kelris.cpp b/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_kelris.cpp index 61f933d0893..72992c477a8 100644 --- a/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_kelris.cpp +++ b/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_kelris.cpp @@ -73,7 +73,7 @@ public: instance->SetData(TYPE_KELRIS, DONE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Kalimdor/CMakeLists.txt b/src/server/scripts/Kalimdor/CMakeLists.txt index 5c44cd7ef27..536824e7a63 100644 --- a/src/server/scripts/Kalimdor/CMakeLists.txt +++ b/src/server/scripts/Kalimdor/CMakeLists.txt @@ -38,11 +38,11 @@ set(scripts_STAT_SRCS Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.h Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp - Kalimdor/CavernsOfTime/CullingOfStratholme/boss_infinite.cpp - Kalimdor/CavernsOfTime/CullingOfStratholme/boss_salramm.cpp + Kalimdor/CavernsOfTime/CullingOfStratholme/boss_infinite_corruptor.cpp + Kalimdor/CavernsOfTime/CullingOfStratholme/boss_salramm_the_fleshcrafter.cpp Kalimdor/CavernsOfTime/CullingOfStratholme/boss_meathook.cpp Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp - Kalimdor/CavernsOfTime/CullingOfStratholme/boss_epoch.cpp + Kalimdor/CavernsOfTime/CullingOfStratholme/boss_chrono_lord_epoch.cpp Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.h diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp index 075d54937c7..6a697c3cc9c 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp @@ -106,7 +106,7 @@ public: Talk(SAY_ONDEATH); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (IsEvent) { @@ -221,7 +221,7 @@ public: AttackStart(who); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (CheckTimer <= diff) { diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp index e278b3009a0..dcf9605f101 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp @@ -115,7 +115,7 @@ public: damage = 0; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (CheckTimer <= diff) { @@ -200,7 +200,7 @@ public: damage = 0; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (ChangeTargetTimer <= diff) { @@ -465,7 +465,7 @@ public: SoulChargeTimer = urand(2000, 30000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!me->isInCombat()) { diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp index 180aeb0962d..15470716ea7 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp @@ -112,7 +112,7 @@ public: Talk(SAY_ONDEATH); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (IsEvent) { @@ -234,7 +234,7 @@ public: { } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (CheckTimer <= diff) { diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp index 2432be2c31a..0780b3dcf0d 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp @@ -108,7 +108,7 @@ public: DoPlaySoundToSet(me, SOUND_ONDEATH); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (IsEvent) { diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_rage_winterchill.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_rage_winterchill.cpp index 84ef05779ee..b35826c9d87 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_rage_winterchill.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_rage_winterchill.cpp @@ -103,7 +103,7 @@ public: Talk(SAY_ONDEATH); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (IsEvent) { diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp index aa17fcf6af4..3f186c96d40 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp @@ -708,7 +708,7 @@ void hyjalAI::DeSpawnVeins() } } -void hyjalAI::UpdateAI(const uint32 diff) +void hyjalAI::UpdateAI(uint32 diff) { if (IsDummy) { diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.h b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.h index 0833dc2bf07..f40c868a96b 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.h +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.h @@ -153,7 +153,7 @@ struct hyjalAI : public npc_escortAI void EnterCombat(Unit* /*who*/); // Used to reset cooldowns for our spells and to inform the raid that we're under attack - void UpdateAI(const uint32 diff); // Called to summon waves, check for boss deaths and to cast our spells. + void UpdateAI(uint32 diff); // Called to summon waves, check for boss deaths and to cast our spells. void JustDied(Unit* /*killer*/); // Called on death, informs the raid that they have failed. diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp index 36f6f94b324..adb89ba5a69 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp @@ -199,7 +199,7 @@ void hyjal_trashAI::DamageTaken(Unit* done_by, uint32 &damage) } } -void hyjal_trashAI::UpdateAI(const uint32 /*diff*/) +void hyjal_trashAI::UpdateAI(uint32 /*diff*/) { if (IsOverrun && !SetupOverrun) { @@ -458,7 +458,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (Delay <= diff) { @@ -596,7 +596,7 @@ public: void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { hyjal_trashAI::UpdateAI(diff); if (IsEvent || IsOverrun) @@ -699,7 +699,7 @@ public: void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { hyjal_trashAI::UpdateAI(diff); if (IsEvent || IsOverrun) @@ -822,7 +822,7 @@ public: void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { hyjal_trashAI::UpdateAI(diff); @@ -920,7 +920,7 @@ public: void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { hyjal_trashAI::UpdateAI(diff); if (IsEvent || IsOverrun) @@ -1019,7 +1019,7 @@ public: void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { hyjal_trashAI::UpdateAI(diff); if (IsEvent || IsOverrun) @@ -1109,7 +1109,7 @@ public: void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { hyjal_trashAI::UpdateAI(diff); if (IsEvent || IsOverrun) @@ -1208,7 +1208,7 @@ public: void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { hyjal_trashAI::UpdateAI(diff); if (IsEvent || IsOverrun) @@ -1321,7 +1321,7 @@ public: hyjal_trashAI::JustDied(killer); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { hyjal_trashAI::UpdateAI(diff); if (IsEvent || IsOverrun) @@ -1369,8 +1369,7 @@ public: forcemove = false; if (forcemove) { - Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0); - if (target) + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) me->Attack(target, false); } if (MoveTimer <= diff) @@ -1409,11 +1408,11 @@ public: return new alliance_riflemanAI(creature); } - struct alliance_riflemanAI : public Scripted_NoMovementAI + struct alliance_riflemanAI : public ScriptedAI { - alliance_riflemanAI(Creature* creature) : Scripted_NoMovementAI(creature) + alliance_riflemanAI(Creature* creature) : ScriptedAI(creature) { - Reset(); + SetCombatMovement(false); } uint32 ExplodeTimer; @@ -1444,7 +1443,7 @@ public: { } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Check if we have a target if (!UpdateVictim()) diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.h b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.h index 1a9a4394a3d..01ae6244b4a 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.h +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.h @@ -27,7 +27,7 @@ struct hyjal_trashAI : public npc_escortAI { hyjal_trashAI(Creature* creature); - void UpdateAI(const uint32 diff); + void UpdateAI(uint32 diff); void JustDied(Unit* /*killer*/); diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_epoch.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_chrono_lord_epoch.cpp index fad5736e18f..db568ddc81c 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_epoch.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_chrono_lord_epoch.cpp @@ -93,7 +93,7 @@ public: instance->SetData(DATA_EPOCH_EVENT, IN_PROGRESS); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_infinite.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_infinite_corruptor.cpp index 8c2861db299..262f8a76509 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_infinite.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_infinite_corruptor.cpp @@ -64,7 +64,7 @@ public: instance->SetData(DATA_INFINITE_EVENT, IN_PROGRESS); } - void UpdateAI(uint32 const /*diff*/) + void UpdateAI(uint32 /*diff*/) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp index 5aacaf736e0..09335ffb865 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp @@ -119,7 +119,7 @@ public: damage = me->GetHealth()-1; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { switch (Phase) { diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_meathook.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_meathook.cpp index c7b819dd243..7cf095d176c 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_meathook.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_meathook.cpp @@ -87,7 +87,7 @@ public: instance->SetData(DATA_MEATHOOK_EVENT, IN_PROGRESS); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_salramm.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_salramm_the_fleshcrafter.cpp index d7d9beaedd4..828ffd90113 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_salramm.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_salramm_the_fleshcrafter.cpp @@ -96,7 +96,7 @@ public: instance->SetData(DATA_SALRAMM_EVENT, IN_PROGRESS); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp index d5d5416f093..d8df5d56888 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp @@ -589,7 +589,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { npc_escortAI::UpdateAI(diff); diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/DarkPortal/boss_aeonus.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/DarkPortal/boss_aeonus.cpp index 7643131edf7..7a18210791c 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/DarkPortal/boss_aeonus.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/DarkPortal/boss_aeonus.cpp @@ -109,7 +109,7 @@ public: Talk(SAY_SLAY); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/DarkPortal/boss_chrono_lord_deja.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/DarkPortal/boss_chrono_lord_deja.cpp index ea372621026..ef0d7b1f418 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/DarkPortal/boss_chrono_lord_deja.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/DarkPortal/boss_chrono_lord_deja.cpp @@ -108,7 +108,7 @@ public: instance->SetData(TYPE_RIFT, SPECIAL); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) @@ -124,8 +124,8 @@ public: //Arcane Discharge if (ArcaneDischarge_Timer <= diff) { - Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0); - DoCast(target, SPELL_ARCANE_DISCHARGE); + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + DoCast(target, SPELL_ARCANE_DISCHARGE); ArcaneDischarge_Timer = 20000+rand()%10000; } else ArcaneDischarge_Timer -= diff; diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/DarkPortal/boss_temporus.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/DarkPortal/boss_temporus.cpp index 6e78e4dae7b..e224094b1f9 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/DarkPortal/boss_temporus.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/DarkPortal/boss_temporus.cpp @@ -108,7 +108,7 @@ public: ScriptedAI::MoveInLineOfSight(who); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/DarkPortal/dark_portal.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/DarkPortal/dark_portal.cpp index 4c80bc017b7..c7c88e380cb 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/DarkPortal/dark_portal.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/DarkPortal/dark_portal.cpp @@ -168,7 +168,7 @@ public: Talk(SAY_DEATH); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!instance) return; @@ -342,7 +342,7 @@ public: } else DoSummonAtRift(entry); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!instance) return; diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/DarkPortal/instance_dark_portal.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/DarkPortal/instance_dark_portal.cpp index 9c17ed10d9c..78b655bb73b 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/DarkPortal/instance_dark_portal.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/DarkPortal/instance_dark_portal.cpp @@ -122,7 +122,7 @@ public: bool IsEncounterInProgress() const { - if (const_cast<instance_dark_portal_InstanceMapScript*>(this)->GetData(TYPE_MEDIVH) == IN_PROGRESS) + if (GetData(TYPE_MEDIVH) == IN_PROGRESS) return true; return false; diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp index 5e7fc6e66e8..adbc7a14745 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp @@ -103,7 +103,7 @@ public: instance->SetData(TYPE_THRALL_PART1, DONE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_epoch_hunter.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_epoch_hunter.cpp index ad3e6979dfb..b48e0b376ea 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_epoch_hunter.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_epoch_hunter.cpp @@ -95,7 +95,7 @@ public: instance->SetData(TYPE_THRALL_PART4, DONE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_leutenant_drake.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_leutenant_drake.cpp index 65f496a579f..241bdc18be6 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_leutenant_drake.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_leutenant_drake.cpp @@ -150,7 +150,7 @@ public: Talk(SAY_DEATH); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //TODO: make this work if (CanPatrol && wpId == 0) diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp index 4a4ba4f3ce2..0fce48939af 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp @@ -536,7 +536,7 @@ public: Talk(SAY_TH_RANDOM_DIE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { npc_escortAI::UpdateAI(diff); @@ -642,7 +642,7 @@ public: void Reset() {} void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { npc_escortAI::UpdateAI(diff); } diff --git a/src/server/scripts/Kalimdor/Maraudon/boss_celebras_the_cursed.cpp b/src/server/scripts/Kalimdor/Maraudon/boss_celebras_the_cursed.cpp index 222937621a8..695f9d2973e 100644 --- a/src/server/scripts/Kalimdor/Maraudon/boss_celebras_the_cursed.cpp +++ b/src/server/scripts/Kalimdor/Maraudon/boss_celebras_the_cursed.cpp @@ -65,7 +65,7 @@ public: me->SummonCreature(13716, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 600000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Kalimdor/Maraudon/boss_landslide.cpp b/src/server/scripts/Kalimdor/Maraudon/boss_landslide.cpp index c6c0387026c..eea34e1949f 100644 --- a/src/server/scripts/Kalimdor/Maraudon/boss_landslide.cpp +++ b/src/server/scripts/Kalimdor/Maraudon/boss_landslide.cpp @@ -62,7 +62,7 @@ public: { } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Kalimdor/Maraudon/boss_noxxion.cpp b/src/server/scripts/Kalimdor/Maraudon/boss_noxxion.cpp index 3fcd840077f..96c3c4a6c45 100644 --- a/src/server/scripts/Kalimdor/Maraudon/boss_noxxion.cpp +++ b/src/server/scripts/Kalimdor/Maraudon/boss_noxxion.cpp @@ -69,7 +69,7 @@ public: Add->AI()->AttackStart(victim); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (Invisible && InvisibleTimer <= diff) { diff --git a/src/server/scripts/Kalimdor/Maraudon/boss_princess_theradras.cpp b/src/server/scripts/Kalimdor/Maraudon/boss_princess_theradras.cpp index eda5f125b00..ddce2f658e7 100644 --- a/src/server/scripts/Kalimdor/Maraudon/boss_princess_theradras.cpp +++ b/src/server/scripts/Kalimdor/Maraudon/boss_princess_theradras.cpp @@ -69,7 +69,7 @@ public: me->SummonCreature(12238, 28.067f, 61.875f, -123.405f, 4.67f, TEMPSUMMON_TIMED_DESPAWN, 600000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp b/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp index 4724794d03b..e01f2b097b0 100644 --- a/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp +++ b/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp @@ -341,7 +341,7 @@ public: MovePoint = iTemp; } - void UpdateAI(const uint32 Diff) + void UpdateAI(uint32 Diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Kalimdor/RazorfenDowns/boss_amnennar_the_coldbringer.cpp b/src/server/scripts/Kalimdor/RazorfenDowns/boss_amnennar_the_coldbringer.cpp index d272b3cc84c..374652ee91d 100644 --- a/src/server/scripts/Kalimdor/RazorfenDowns/boss_amnennar_the_coldbringer.cpp +++ b/src/server/scripts/Kalimdor/RazorfenDowns/boss_amnennar_the_coldbringer.cpp @@ -81,7 +81,7 @@ public: Talk(SAY_KILL); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.cpp b/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.cpp index b90d5a760d3..78535b7c3b0 100644 --- a/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.cpp +++ b/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.cpp @@ -142,7 +142,7 @@ public: uiWebTimer = urand(5000, 8000); } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp index cfc35b676ea..20872903c7b 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp @@ -144,7 +144,7 @@ class boss_ayamiss : public CreatureScript me->GetMotionMaster()->MovePoint(POINT_AIR, AyamissAirPos); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -272,7 +272,7 @@ class npc_hive_zara_larva : public CreatureScript ScriptedAI::AttackStart(victim); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (_instance->GetBossState(DATA_AYAMISS) == IN_PROGRESS) return; diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp index 285d893fe41..0ad077aaa4e 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp @@ -95,7 +95,7 @@ class boss_buru : public CreatureScript _phase = PHASE_EGG; } - void DoAction(int32 const action) + void DoAction(int32 action) { if (action == ACTION_EXPLODE) if (_phase == PHASE_EGG) @@ -133,7 +133,7 @@ class boss_buru : public CreatureScript events.ScheduleEvent(EVENT_RESPAWN_EGG, 100000); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -197,11 +197,12 @@ class npc_buru_egg : public CreatureScript public: npc_buru_egg() : CreatureScript("npc_buru_egg") { } - struct npc_buru_eggAI : public Scripted_NoMovementAI + struct npc_buru_eggAI : public ScriptedAI { - npc_buru_eggAI(Creature* creature) : Scripted_NoMovementAI(creature) + npc_buru_eggAI(Creature* creature) : ScriptedAI(creature) { _instance = me->GetInstanceScript(); + SetCombatMovement(false); } void EnterCombat(Unit* attacker) diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_kurinnaxx.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_kurinnaxx.cpp index ddb9017f3dd..033980d746b 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_kurinnaxx.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_kurinnaxx.cpp @@ -81,7 +81,7 @@ class boss_kurinnaxx : public CreatureScript sCreatureTextMgr->SendChat(Ossirian, SAY_KURINAXX_DEATH, 0, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_ZONE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_moam.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_moam.cpp index 70db1213394..dd52872e1da 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_moam.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_moam.cpp @@ -80,7 +80,7 @@ class boss_moam : public CreatureScript } } - void DoAction(int32 const action) + void DoAction(int32 action) { switch (action) { @@ -105,7 +105,7 @@ class boss_moam : public CreatureScript } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp index 20c0dd035a4..f29f4999d2d 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp @@ -117,7 +117,7 @@ class boss_ossirian : public CreatureScript } } - void DoAction(const int32 action) + void DoAction(int32 action) { if (action == ACTION_TRIGGER_WEAKNESS) if (Creature* Trigger = me->GetMap()->GetCreature(TriggerGUID)) @@ -212,7 +212,7 @@ class boss_ossirian : public CreatureScript BossAI::MoveInLineOfSight(who); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp index dae447e43d2..a7151ec7c05 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp @@ -86,7 +86,7 @@ class boss_rajaxx : public CreatureScript _EnterCombat(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp index 2a9ea4ba4fc..becbd126d9b 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp @@ -89,7 +89,7 @@ public: instance->SetData(DATA_BUG_TRIO_DEATH, 1); } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) @@ -185,7 +185,7 @@ public: { } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) @@ -274,10 +274,11 @@ public: for (uint8 i = 0; i < 10; ++i) { - Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0); - Creature* Summoned = me->SummonCreature(15621, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 90000); - if (Summoned && target) - Summoned->AI()->AttackStart(target); + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + { + if (Creature* Summoned = me->SummonCreature(15621, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 90000)) + Summoned->AI()->AttackStart(target); + } } } @@ -285,7 +286,7 @@ public: { } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp index 3da1fc1dc5c..e6460c00ab6 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp @@ -156,13 +156,15 @@ public: return new eye_of_cthunAI (creature); } - struct eye_of_cthunAI : public Scripted_NoMovementAI + struct eye_of_cthunAI : public ScriptedAI { - eye_of_cthunAI(Creature* creature) : Scripted_NoMovementAI(creature) + eye_of_cthunAI(Creature* creature) : ScriptedAI(creature) { instance = creature->GetInstanceScript(); if (!instance) sLog->outError(LOG_FILTER_TSCR, "No Instance eye_of_cthunAI"); + + SetCombatMovement(false); } InstanceScript* instance; @@ -228,7 +230,7 @@ public: Spawned->AI()->AttackStart(target); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Check if we have a target if (!UpdateVictim()) @@ -460,9 +462,9 @@ public: return new cthunAI (creature); } - struct cthunAI : public Scripted_NoMovementAI + struct cthunAI : public ScriptedAI { - cthunAI(Creature* creature) : Scripted_NoMovementAI(creature) + cthunAI(Creature* creature) : ScriptedAI(creature) { SetCombatMovement(false); @@ -579,7 +581,7 @@ public: return (*j); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Check if we have a target if (!UpdateVictim()) @@ -893,7 +895,7 @@ public: } } - void DoAction(const int32 param) + void DoAction(int32 param) { switch (param) { @@ -916,15 +918,17 @@ public: return new eye_tentacleAI (creature); } - struct eye_tentacleAI : public Scripted_NoMovementAI + struct eye_tentacleAI : public ScriptedAI { - eye_tentacleAI(Creature* creature) : Scripted_NoMovementAI(creature) + eye_tentacleAI(Creature* creature) : ScriptedAI(creature) { if (Creature* pPortal = me->SummonCreature(MOB_SMALL_PORTAL, *me, TEMPSUMMON_CORPSE_DESPAWN)) { pPortal->SetReactState(REACT_PASSIVE); Portal = pPortal->GetGUID(); } + + SetCombatMovement(false); } uint32 MindflayTimer; @@ -951,7 +955,7 @@ public: DoZoneInCombat(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Check if we have a target if (!UpdateVictim()) @@ -989,9 +993,9 @@ public: return new claw_tentacleAI (creature); } - struct claw_tentacleAI : public Scripted_NoMovementAI + struct claw_tentacleAI : public ScriptedAI { - claw_tentacleAI(Creature* creature) : Scripted_NoMovementAI(creature) + claw_tentacleAI(Creature* creature) : ScriptedAI(creature) { SetCombatMovement(false); @@ -1026,7 +1030,7 @@ public: DoZoneInCombat(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Check if we have a target if (!UpdateVictim()) @@ -1099,9 +1103,9 @@ public: return new giant_claw_tentacleAI (creature); } - struct giant_claw_tentacleAI : public Scripted_NoMovementAI + struct giant_claw_tentacleAI : public ScriptedAI { - giant_claw_tentacleAI(Creature* creature) : Scripted_NoMovementAI(creature) + giant_claw_tentacleAI(Creature* creature) : ScriptedAI(creature) { SetCombatMovement(false); @@ -1138,7 +1142,7 @@ public: DoZoneInCombat(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Check if we have a target if (!UpdateVictim()) @@ -1218,9 +1222,9 @@ public: return new giant_eye_tentacleAI (creature); } - struct giant_eye_tentacleAI : public Scripted_NoMovementAI + struct giant_eye_tentacleAI : public ScriptedAI { - giant_eye_tentacleAI(Creature* creature) : Scripted_NoMovementAI(creature) + giant_eye_tentacleAI(Creature* creature) : ScriptedAI(creature) { SetCombatMovement(false); @@ -1251,7 +1255,7 @@ public: DoZoneInCombat(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Check if we have a target if (!UpdateVictim()) @@ -1282,9 +1286,9 @@ public: return new flesh_tentacleAI (creature); } - struct flesh_tentacleAI : public Scripted_NoMovementAI + struct flesh_tentacleAI : public ScriptedAI { - flesh_tentacleAI(Creature* creature) : Scripted_NoMovementAI(creature) + flesh_tentacleAI(Creature* creature) : ScriptedAI(creature) { SetCombatMovement(false); } diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp index 80fdc111911..de941ec266f 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp @@ -97,7 +97,7 @@ public: { } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) @@ -137,9 +137,7 @@ public: { if (SpawnHatchlings_Timer <= diff) { - Unit* target = NULL; - target = SelectTarget(SELECT_TARGET_RANDOM, 0); - if (target && target->GetTypeId() == TYPEID_PLAYER) + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true)) { DoCast(target, SPELL_ROOT); diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp index 5493e9d76b0..f8cf0917c37 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp @@ -80,7 +80,7 @@ public: { } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp index 53242d4cdc6..9b095b0100a 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp @@ -78,7 +78,7 @@ public: DoCast(me->getVictim(), SPELL_BIRTH); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp index 3915a7655c5..d4bb5416a4e 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp @@ -98,7 +98,7 @@ public: Talk(SAY_SLAY); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) @@ -225,7 +225,7 @@ public: { } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp index 8030358a068..034b27f081e 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp @@ -134,7 +134,7 @@ class boss_skeram : public CreatureScript Talk(SAY_AGGRO); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp index d623963e929..86ab6371789 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp @@ -429,7 +429,7 @@ public: target->SetFullHealth(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) @@ -518,7 +518,7 @@ public: target->SetFullHealth(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp index fcbe3a84d62..413149e0d5e 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp @@ -194,7 +194,7 @@ class boss_viscidus : public CreatureScript summons.DespawnAll(); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp b/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp index 7189abcc4fa..a4a5e0d94be 100644 --- a/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp +++ b/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp @@ -208,7 +208,7 @@ public: summoned->AI()->AttackStart(me); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (currentEvent != TYPE_NARALEX_PART3) npc_escortAI::UpdateAI(diff); diff --git a/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp b/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp index ee89c9b6cad..59c91dbd549 100644 --- a/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp +++ b/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp @@ -124,7 +124,7 @@ public: me->setFaction(FACTION_FRIENDLY); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (postGossipStep>0 && postGossipStep<4) { @@ -182,7 +182,7 @@ public: DoMeleeAttackIfReady(); } - void DoAction(const int32 /*param*/) + void DoAction(int32 /*param*/) { postGossipStep=1; Text_Timer = 0; @@ -331,7 +331,7 @@ public: instance->SetData(0, DONE);*/ } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -376,7 +376,7 @@ public: } } - void DoAction(const int32 /*param*/) + void DoAction(int32 /*param*/) { DestroyDoor(); } diff --git a/src/server/scripts/Kalimdor/boss_azuregos.cpp b/src/server/scripts/Kalimdor/boss_azuregos.cpp index 4f37cacac02..dd202247aaa 100644 --- a/src/server/scripts/Kalimdor/boss_azuregos.cpp +++ b/src/server/scripts/Kalimdor/boss_azuregos.cpp @@ -81,7 +81,7 @@ public: void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Kalimdor/zone_ashenvale.cpp b/src/server/scripts/Kalimdor/zone_ashenvale.cpp index 94c68a1d3ec..ec24e870ae9 100644 --- a/src/server/scripts/Kalimdor/zone_ashenvale.cpp +++ b/src/server/scripts/Kalimdor/zone_ashenvale.cpp @@ -124,7 +124,7 @@ class npc_torek : public CreatureScript summoned->AI()->AttackStart(me); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { npc_escortAI::UpdateAI(diff); @@ -242,7 +242,7 @@ class npc_ruul_snowhoof : public CreatureScript summoned->AI()->AttackStart(me); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { npc_escortAI::UpdateAI(diff); } @@ -411,7 +411,7 @@ class npc_muglash : public CreatureScript } } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { npc_escortAI::UpdateAI(uiDiff); diff --git a/src/server/scripts/Kalimdor/zone_azshara.cpp b/src/server/scripts/Kalimdor/zone_azshara.cpp index 44f7e1e8172..bb27e172e5e 100644 --- a/src/server/scripts/Kalimdor/zone_azshara.cpp +++ b/src/server/scripts/Kalimdor/zone_azshara.cpp @@ -78,7 +78,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { // we mustn't remove the Creature in the same round in which we cast the summon spell, otherwise there will be no summons if (spellhit && morphtimer >= 5000) @@ -332,7 +332,7 @@ public: Reached = false; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (MustDie) { @@ -485,7 +485,7 @@ public: WeMustDieTimer = 1000; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (WeMustDie) { diff --git a/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp b/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp index 4b03cd65cad..3f4b1d82b8d 100644 --- a/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp +++ b/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp @@ -124,7 +124,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (SayThanksTimer) { @@ -254,7 +254,7 @@ public: Talk(ATTACK_YELL, who->GetGUID()); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!me->isInCombat() && !IsTreeEvent) { @@ -321,7 +321,7 @@ public: void MoveInLineOfSight(Unit* /*who*/) {} - void UpdateAI(const uint32 /*diff*/) {} + void UpdateAI(uint32 /*diff*/) {} }; }; @@ -555,7 +555,7 @@ public: sLog->outError(LOG_FILTER_TSCR, "SD2 ERROR: FlagList is empty!"); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (SayTimer <= diff) { @@ -626,7 +626,7 @@ public: me->SetReactState(REACT_PASSIVE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -712,7 +712,7 @@ class npc_stillpine_capitive : public CreatureScript _events.ScheduleEvent(EVENT_DESPAWN, 3500); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!_movementComplete) return; diff --git a/src/server/scripts/Kalimdor/zone_darkshore.cpp b/src/server/scripts/Kalimdor/zone_darkshore.cpp index 09f061148d3..30f5283f716 100644 --- a/src/server/scripts/Kalimdor/zone_darkshore.cpp +++ b/src/server/scripts/Kalimdor/zone_darkshore.cpp @@ -143,7 +143,7 @@ public: SetFollowPaused(false); } - void UpdateFollowerAI(const uint32 Diff) + void UpdateFollowerAI(uint32 Diff) { if (!UpdateVictim()) { diff --git a/src/server/scripts/Kalimdor/zone_desolace.cpp b/src/server/scripts/Kalimdor/zone_desolace.cpp index 8f55bb6102c..b21cb28e0d5 100644 --- a/src/server/scripts/Kalimdor/zone_desolace.cpp +++ b/src/server/scripts/Kalimdor/zone_desolace.cpp @@ -39,7 +39,6 @@ EndContentData */ enum DyingKodo { - // signed for 9999 SAY_SMEED_HOME = 0, QUEST_KODO = 5561, @@ -51,7 +50,7 @@ enum DyingKodo NPC_TAMED_KODO = 11627, SPELL_KODO_KOMBO_ITEM = 18153, - SPELL_KODO_KOMBO_PLAYER_BUFF = 18172, //spells here have unclear function, but using them at least for visual parts and checks + SPELL_KODO_KOMBO_PLAYER_BUFF = 18172, SPELL_KODO_KOMBO_DESPAWN_BUFF = 18377, SPELL_KODO_KOMBO_GOSSIP = 18362 @@ -66,111 +65,56 @@ public: { if (player->HasAura(SPELL_KODO_KOMBO_PLAYER_BUFF) && creature->HasAura(SPELL_KODO_KOMBO_DESPAWN_BUFF)) { - //the expected quest objective - player->TalkedToCreature(creature->GetEntry(), creature->GetGUID()); - + player->TalkedToCreature(creature->GetEntry(), 0); player->RemoveAurasDueToSpell(SPELL_KODO_KOMBO_PLAYER_BUFF); - creature->GetMotionMaster()->MoveIdle(); } player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID()); return true; } - bool EffectDummyCreature(Unit* pCaster, uint32 spellId, uint32 effIndex, Creature* creatureTarget) - { - //always check spellid and effectindex - if (spellId == SPELL_KODO_KOMBO_ITEM && effIndex == 0) - { - //no effect if player/creature already have aura from spells - if (pCaster->HasAura(SPELL_KODO_KOMBO_PLAYER_BUFF) || creatureTarget->HasAura(SPELL_KODO_KOMBO_DESPAWN_BUFF)) - return true; - - if (creatureTarget->GetEntry() == NPC_AGED_KODO || - creatureTarget->GetEntry() == NPC_DYING_KODO || - creatureTarget->GetEntry() == NPC_ANCIENT_KODO) - { - pCaster->CastSpell(pCaster, SPELL_KODO_KOMBO_PLAYER_BUFF, true); - - creatureTarget->UpdateEntry(NPC_TAMED_KODO); - creatureTarget->CastSpell(creatureTarget, SPELL_KODO_KOMBO_DESPAWN_BUFF, false); - - if (creatureTarget->GetMotionMaster()->GetCurrentMovementGeneratorType() == WAYPOINT_MOTION_TYPE) - creatureTarget->GetMotionMaster()->MoveIdle(); - - creatureTarget->GetMotionMaster()->MoveFollow(pCaster, PET_FOLLOW_DIST, creatureTarget->GetFollowAngle()); - } - - //always return true when we are handling this spell and effect - return true; - } - return false; - } - - CreatureAI* GetAI(Creature* creature) const - { - return new npc_aged_dying_ancient_kodoAI(creature); - } - struct npc_aged_dying_ancient_kodoAI : public ScriptedAI { - npc_aged_dying_ancient_kodoAI(Creature* creature) : ScriptedAI(creature) { Reset(); } - - uint32 DespawnTimer; + npc_aged_dying_ancient_kodoAI(Creature* creature) : ScriptedAI(creature) {} - void Reset() + void MoveInLineOfSight(Unit* who) { - DespawnTimer = 0; + if (who->GetEntry() == NPC_SMEED && me->IsWithinDistInMap(who, 10.0f) && !me->HasAura(SPELL_KODO_KOMBO_GOSSIP)) + { + me->GetMotionMaster()->Clear(); + DoCast(me, SPELL_KODO_KOMBO_GOSSIP, true); + if (Creature* smeed = who->ToCreature()) + smeed->AI()->Talk(SAY_SMEED_HOME); + } } - void MoveInLineOfSight(Unit* who) + void SpellHit(Unit* caster, SpellInfo const* spell) { - if (who->GetEntry() == NPC_SMEED) + if (spell->Id == SPELL_KODO_KOMBO_ITEM) { - if (me->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP)) - return; - - if (me->IsWithinDistInMap(who, 10.0f)) + if (!(caster->HasAura(SPELL_KODO_KOMBO_PLAYER_BUFF) || me->HasAura(SPELL_KODO_KOMBO_DESPAWN_BUFF)) + && (me->GetEntry() == NPC_AGED_KODO || me->GetEntry() == NPC_DYING_KODO || me->GetEntry() == NPC_ANCIENT_KODO)) { - if (Creature* talker = who->ToCreature()) - talker->AI()->Talk(SAY_SMEED_HOME); + caster->CastSpell(caster, SPELL_KODO_KOMBO_PLAYER_BUFF, true); + DoCast(me, SPELL_KODO_KOMBO_DESPAWN_BUFF, true); - //spell have no implemented effect (dummy), so useful to notify spellHit - DoCast(me, SPELL_KODO_KOMBO_GOSSIP, true); + me->UpdateEntry(NPC_TAMED_KODO); + me->GetMotionMaster()->MoveFollow(caster, PET_FOLLOW_DIST, me->GetFollowAngle()); } } - } - - void SpellHit(Unit* /*pCaster*/, SpellInfo const* pSpell) - { - if (pSpell->Id == SPELL_KODO_KOMBO_GOSSIP) + else if (spell->Id == SPELL_KODO_KOMBO_GOSSIP) { me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); - DespawnTimer = 60000; + me->DespawnOrUnsummon(60000); } } - - void UpdateAI(const uint32 diff) - { - //timer should always be == 0 unless we already updated entry of creature. Then not expect this updated to ever be in combat. - if (DespawnTimer && DespawnTimer <= diff) - { - if (!me->getVictim() && me->isAlive()) - { - Reset(); - me->setDeathState(JUST_DIED); - me->Respawn(); - return; - } - } else DespawnTimer -= diff; - - if (!UpdateVictim()) - return; - - DoMeleeAttackIfReady(); - } }; + CreatureAI* GetAI(Creature* creature) const + { + return new npc_aged_dying_ancient_kodoAI(creature); + } + }; /*###### @@ -261,7 +205,7 @@ public: return; } - void UpdateAI(const uint32 Diff) + void UpdateAI(uint32 Diff) { npc_escortAI::UpdateAI(Diff); if (!UpdateVictim()) diff --git a/src/server/scripts/Kalimdor/zone_durotar.cpp b/src/server/scripts/Kalimdor/zone_durotar.cpp index fa6b830c1ae..6e474655db3 100644 --- a/src/server/scripts/Kalimdor/zone_durotar.cpp +++ b/src/server/scripts/Kalimdor/zone_durotar.cpp @@ -84,7 +84,7 @@ public: } } - void UpdateAI(const uint32 Diff) + void UpdateAI(uint32 Diff) { if (work == true) me->HandleEmoteCommand(EMOTE_ONESHOT_WORK_CHOPWOOD); @@ -175,14 +175,15 @@ class npc_tiger_matriarch_credit : public CreatureScript public: npc_tiger_matriarch_credit() : CreatureScript("npc_tiger_matriarch_credit") { } - struct npc_tiger_matriarch_creditAI : public Scripted_NoMovementAI + struct npc_tiger_matriarch_creditAI : public ScriptedAI { - npc_tiger_matriarch_creditAI(Creature* creature) : Scripted_NoMovementAI(creature) + npc_tiger_matriarch_creditAI(Creature* creature) : ScriptedAI(creature) { + SetCombatMovement(false); events.ScheduleEvent(EVENT_CHECK_SUMMON_AURA, 2000); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { events.Update(diff); @@ -294,7 +295,7 @@ class npc_tiger_matriarch : public CreatureScript } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp b/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp index 37941227c78..f1789ff5139 100644 --- a/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp +++ b/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp @@ -95,7 +95,7 @@ class mobs_risen_husk_spirit : public CreatureScript } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -204,7 +204,7 @@ public: Step = 0; } - void UpdateAI(const uint32 Diff) + void UpdateAI(uint32 Diff) { if (!me->HasAura(SPELL_PROPAGANDIZED)) me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); @@ -458,7 +458,7 @@ public: Talk(SAY_ZELFRAX2); } - void UpdateAI(uint32 const /*Diff*/) + void UpdateAI(uint32 /*Diff*/) { if (!UpdateVictim()) return; @@ -583,7 +583,7 @@ public: } } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { npc_escortAI::UpdateAI(uiDiff); diff --git a/src/server/scripts/Kalimdor/zone_moonglade.cpp b/src/server/scripts/Kalimdor/zone_moonglade.cpp index e41ffae03e6..b5be4ac1a6d 100644 --- a/src/server/scripts/Kalimdor/zone_moonglade.cpp +++ b/src/server/scripts/Kalimdor/zone_moonglade.cpp @@ -383,7 +383,7 @@ public: return; } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { npc_escortAI::UpdateAI(diff); @@ -630,7 +630,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -677,7 +677,7 @@ public: events.ScheduleEvent(EVENT_DESPAWN, 5*MINUTE*IN_MILLISECONDS); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { events.Update(diff); diff --git a/src/server/scripts/Kalimdor/zone_mulgore.cpp b/src/server/scripts/Kalimdor/zone_mulgore.cpp index aca55284b67..b81b8eb9eb7 100644 --- a/src/server/scripts/Kalimdor/zone_mulgore.cpp +++ b/src/server/scripts/Kalimdor/zone_mulgore.cpp @@ -147,7 +147,7 @@ public: IsMovingToLunch = false; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (EventActive) { @@ -303,7 +303,7 @@ public: } } - void UpdateAI(const uint32 /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (newWaypoint) { diff --git a/src/server/scripts/Kalimdor/zone_orgrimmar.cpp b/src/server/scripts/Kalimdor/zone_orgrimmar.cpp index 42ef9843a4e..1d4806e7f97 100644 --- a/src/server/scripts/Kalimdor/zone_orgrimmar.cpp +++ b/src/server/scripts/Kalimdor/zone_orgrimmar.cpp @@ -83,7 +83,7 @@ public: void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (CanEmote) { @@ -224,7 +224,7 @@ public: void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Kalimdor/zone_silithus.cpp b/src/server/scripts/Kalimdor/zone_silithus.cpp index a612269eff7..70e7f731fc4 100644 --- a/src/server/scripts/Kalimdor/zone_silithus.cpp +++ b/src/server/scripts/Kalimdor/zone_silithus.cpp @@ -791,7 +791,7 @@ public: } ++AnimationCount; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (AnimationTimer) { @@ -843,7 +843,7 @@ public: void EnterCombat(Unit* /*who*/) {} void JustDied(Unit* /*slayer*/); - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!Timers) { @@ -1045,7 +1045,7 @@ public: Announced = false; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!PlayerGUID || !EventStarted) return; diff --git a/src/server/scripts/Kalimdor/zone_tanaris.cpp b/src/server/scripts/Kalimdor/zone_tanaris.cpp index 0648e40416d..9d257790ab8 100644 --- a/src/server/scripts/Kalimdor/zone_tanaris.cpp +++ b/src/server/scripts/Kalimdor/zone_tanaris.cpp @@ -104,7 +104,7 @@ public: Talk(AGGRO_YELL_AQUE, who->GetGUID()); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (isFriendly) { @@ -270,7 +270,7 @@ public: void EnterCombat(Unit* /*who*/) {} void Reset() {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { npc_escortAI::UpdateAI(diff); } @@ -603,7 +603,7 @@ public: SetFollowComplete(); } - void UpdateFollowerAI(const uint32 Diff) + void UpdateFollowerAI(uint32 Diff) { if (!UpdateVictim()) { diff --git a/src/server/scripts/Kalimdor/zone_the_barrens.cpp b/src/server/scripts/Kalimdor/zone_the_barrens.cpp index b349de8f083..ff52af97c11 100644 --- a/src/server/scripts/Kalimdor/zone_the_barrens.cpp +++ b/src/server/scripts/Kalimdor/zone_the_barrens.cpp @@ -278,7 +278,7 @@ public: void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (IsFriend) { @@ -397,7 +397,7 @@ public: void KilledUnit(Unit* /*victim*/) { } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (EventInProgress) { Player* pWarrior = NULL; diff --git a/src/server/scripts/Kalimdor/zone_thousand_needles.cpp b/src/server/scripts/Kalimdor/zone_thousand_needles.cpp index 9c47991a5d5..02e64421ecb 100644 --- a/src/server/scripts/Kalimdor/zone_thousand_needles.cpp +++ b/src/server/scripts/Kalimdor/zone_thousand_needles.cpp @@ -368,7 +368,7 @@ public: } } - void UpdateAI(const uint32 Diff) + void UpdateAI(uint32 Diff) { if (me->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP)) { @@ -441,7 +441,7 @@ public: me->SetReactState(REACT_PASSIVE); } - void UpdateAI(const uint32 /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Kalimdor/zone_thunder_bluff.cpp b/src/server/scripts/Kalimdor/zone_thunder_bluff.cpp index 0d915dc7c44..cd2e8308e6a 100644 --- a/src/server/scripts/Kalimdor/zone_thunder_bluff.cpp +++ b/src/server/scripts/Kalimdor/zone_thunder_bluff.cpp @@ -98,15 +98,14 @@ public: void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; if (BerserkerChargeTimer <= diff) { - Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0); - if (target) + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) DoCast(target, SPELL_BERSERKER_CHARGE); BerserkerChargeTimer = 25000; } else BerserkerChargeTimer -= diff; diff --git a/src/server/scripts/Kalimdor/zone_ungoro_crater.cpp b/src/server/scripts/Kalimdor/zone_ungoro_crater.cpp index e72c82bee97..9c89ad6d53a 100644 --- a/src/server/scripts/Kalimdor/zone_ungoro_crater.cpp +++ b/src/server/scripts/Kalimdor/zone_ungoro_crater.cpp @@ -126,7 +126,7 @@ public: player->FailQuest(QUEST_CHASING_AME); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { npc_escortAI::UpdateAI(diff); if (!UpdateVictim()) @@ -261,7 +261,7 @@ public: SetFollowPaused(false); } - void UpdateFollowerAI(const uint32 Diff) + void UpdateFollowerAI(uint32 Diff) { if (!UpdateVictim()) { diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_amanitar.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_amanitar.cpp index d484e2a4279..24335c0e469 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_amanitar.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_amanitar.cpp @@ -129,7 +129,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -182,9 +182,9 @@ class mob_amanitar_mushrooms : public CreatureScript public: mob_amanitar_mushrooms() : CreatureScript("mob_amanitar_mushrooms") { } - struct mob_amanitar_mushroomsAI : public Scripted_NoMovementAI + struct mob_amanitar_mushroomsAI : public ScriptedAI { - mob_amanitar_mushroomsAI(Creature* creature) : Scripted_NoMovementAI(creature) {} + mob_amanitar_mushroomsAI(Creature* creature) : ScriptedAI(creature) {} EventMap events; @@ -211,7 +211,7 @@ public: void EnterCombat(Unit* /*who*/) {} void AttackStart(Unit* /*victim*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp index ac668c33874..a9fad9c5451 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp @@ -139,7 +139,7 @@ class boss_elder_nadox : public CreatureScript instance->SetData(DATA_ELDER_NADOX_EVENT, DONE); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -218,7 +218,7 @@ class mob_ahnkahar_nerubian : public CreatureScript me->RemoveAurasDueToSpell(SPELL_GUARDIAN_AURA); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -254,9 +254,9 @@ class mob_nadox_eggs : public CreatureScript public: mob_nadox_eggs() : CreatureScript("mob_nadox_eggs") { } - struct mob_nadox_eggsAI : public Scripted_NoMovementAI + struct mob_nadox_eggsAI : public ScriptedAI { - mob_nadox_eggsAI(Creature* creature) : Scripted_NoMovementAI(creature) + mob_nadox_eggsAI(Creature* creature) : ScriptedAI(creature) { creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE); creature->UpdateAllStats(); @@ -266,7 +266,7 @@ public: void EnterCombat(Unit* /*who*/) {} void AttackStart(Unit* /*victim*/) {} void MoveInLineOfSight(Unit* /*who*/) {} - void UpdateAI(const uint32 /*diff*/) {} + void UpdateAI(uint32 /*diff*/) {} }; CreatureAI* GetAI(Creature* creature) const diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp index 7f6709b34fa..82ac2e8387c 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp @@ -258,7 +258,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) @@ -322,5 +322,5 @@ public: void AddSC_boss_volazj() { - new boss_volazj; + new boss_volazj(); } diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_jedoga_shadowseeker.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_jedoga_shadowseeker.cpp index c36bcf9708f..e8b17224179 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_jedoga_shadowseeker.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_jedoga_shadowseeker.cpp @@ -150,7 +150,7 @@ public: instance->SetData(DATA_JEDOGA_SHADOWSEEKER_EVENT, DONE); } - void DoAction(int32 const action) + void DoAction(int32 action) { if (action == ACTION_INITIAND_KILLED) volunteerWork = false; @@ -280,7 +280,7 @@ public: bCanDown = true; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!instance) return; @@ -451,7 +451,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (instance && bCheckTimer <= diff) { @@ -523,15 +523,17 @@ class npc_jedogas_aufseher_trigger : public CreatureScript public: npc_jedogas_aufseher_trigger() : CreatureScript("npc_jedogas_aufseher_trigger") { } - struct npc_jedogas_aufseher_triggerAI : public Scripted_NoMovementAI + struct npc_jedogas_aufseher_triggerAI : public ScriptedAI { - npc_jedogas_aufseher_triggerAI(Creature* creature) : Scripted_NoMovementAI(creature) + npc_jedogas_aufseher_triggerAI(Creature* creature) : ScriptedAI(creature) { instance = creature->GetInstanceScript(); bRemoved = false; bRemoved2 = false; bCasted = false; bCasted2 = false; + + SetCombatMovement(false); } InstanceScript* instance; @@ -546,7 +548,7 @@ public: void AttackStart(Unit* /*victim*/) {} void MoveInLineOfSight(Unit* /*who*/) {} - void UpdateAI(const uint32 /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (!instance) return; diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp index 8f77cc7ec6f..a68cbcb7ee6 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp @@ -121,7 +121,7 @@ public: Talk(SAY_AGGRO); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -370,7 +370,7 @@ public: DoCast(me, SPELL_FLAME_SPHERE_DEATH_EFFECT); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (uiDespawnTimer <= diff) me->DisappearAndDie(); @@ -424,7 +424,7 @@ public: void AddSC_boss_taldaram() { - new boss_taldaram; - new mob_taldaram_flamesphere; - new prince_taldaram_sphere; + new boss_taldaram(); + new mob_taldaram_flamesphere(); + new prince_taldaram_sphere(); } diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/instance_ahnkahet.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/instance_ahnkahet.cpp index db4959ae670..26a4aeeca01 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/instance_ahnkahet.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/instance_ahnkahet.cpp @@ -336,5 +336,5 @@ public: void AddSC_instance_ahnkahet() { - new instance_ahnkahet; + new instance_ahnkahet(); } diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp index 1442ff265f4..1ec61488c1b 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp @@ -168,7 +168,7 @@ public: instance->SetData(DATA_ANUBARAK_EVENT, IN_PROGRESS); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -360,5 +360,5 @@ public: void AddSC_boss_anub_arak() { - new boss_anub_arak; + new boss_anub_arak(); } diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp index 6c707a8388f..eec7959f56f 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp @@ -134,7 +134,7 @@ public: EnterEvadeMode(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) @@ -198,5 +198,5 @@ public: void AddSC_boss_hadronox() { - new boss_hadronox; + new boss_hadronox(); } diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp index aa329f12f6a..295f38658e2 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp @@ -138,7 +138,7 @@ public: me->SummonCreature(MOB_SKITTERING_SWARMER, SpawnPoint[7], TEMPSUMMON_TIMED_DESPAWN, 25*IN_MILLISECONDS); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -239,7 +239,7 @@ public: uiBackstabTimer = 7*IN_MILLISECONDS; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -290,7 +290,7 @@ public: uiShadowNovaTimer = 15*IN_MILLISECONDS; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -336,7 +336,7 @@ public: uiStrikeTimer = 6*IN_MILLISECONDS; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -386,7 +386,7 @@ public: DoCast(me, SPELL_ENRAGE, true); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -434,7 +434,7 @@ public: uiBindingWebsTimer = 17*IN_MILLISECONDS; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -488,7 +488,7 @@ public: uiPoisonSprayTimer = 15*IN_MILLISECONDS; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp index 7873cadd096..875aafe9826 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp @@ -213,5 +213,5 @@ public: void AddSC_instance_azjol_nerub() { - new instance_azjol_nerub; + new instance_azjol_nerub(); } diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp index f5864fe7b8f..bbec79ea43d 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp @@ -547,7 +547,7 @@ public: (*itr)->CastSpell(target, SPELL_LAVA_STRIKE, true); } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { //Return since we have no target if (!UpdateVictim()) @@ -954,7 +954,7 @@ struct dummy_dragonAI : public ScriptedAI } } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (m_bCanMoveFree && m_uiMoveNextTimer) { @@ -1017,7 +1017,7 @@ public: Talk(SAY_TENEBRON_SLAY); } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { //if no target, update dummy and return if (!UpdateVictim()) @@ -1112,7 +1112,7 @@ public: Talk(SAY_SHADRON_SLAY); } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { //if no target, update dummy and return if (!UpdateVictim()) @@ -1210,7 +1210,7 @@ public: Talk(SAY_VESPERON_SLAY); } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { //if no target, update dummy and return if (!UpdateVictim()) @@ -1352,7 +1352,7 @@ public: } } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (uiDespawnTimer < uiDiff) { @@ -1447,7 +1447,7 @@ public: } } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (uiDespawnTimer < uiDiff) { @@ -1480,10 +1480,11 @@ public: return new mob_twilight_eggsAI(creature); } - struct mob_twilight_eggsAI : public Scripted_NoMovementAI + struct mob_twilight_eggsAI : public ScriptedAI { - mob_twilight_eggsAI(Creature* creature) : Scripted_NoMovementAI(creature) + mob_twilight_eggsAI(Creature* creature) : ScriptedAI(creature) { + SetCombatMovement(false); instance = creature->GetInstanceScript(); } @@ -1518,7 +1519,7 @@ public: who->SetInCombatWithZone(); } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (m_uiHatchEggTimer <= uiDiff) { @@ -1572,7 +1573,7 @@ public: entry = 0; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (Tsunami_Timer <= diff) { @@ -1602,11 +1603,11 @@ public: return new npc_twilight_fissureAI(creature); } - struct npc_twilight_fissureAI : public Scripted_NoMovementAI + struct npc_twilight_fissureAI : public ScriptedAI { - npc_twilight_fissureAI(Creature* creature) : Scripted_NoMovementAI(creature) + npc_twilight_fissureAI(Creature* creature) : ScriptedAI(creature) { - Reset(); + SetCombatMovement(false); } uint32 VoidBlast_Timer; @@ -1620,7 +1621,7 @@ public: VoidBlast_Timer = 5000; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (VoidBlast_Timer <= diff) { @@ -1667,7 +1668,7 @@ public: m_uiFadeArmorTimer = 1000; } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp index 205a0b10d69..d3a685bc6ba 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp @@ -61,9 +61,7 @@ enum Phases { PHASE_ALL = 0, PHASE_INTRO = 1, - PHASE_COMBAT = 2, - - PHASE_INTRO_MASK = 1 << PHASE_INTRO, + PHASE_COMBAT = 2 }; class boss_baltharus_the_warborn : public CreatureScript @@ -87,7 +85,7 @@ class boss_baltharus_the_warborn : public CreatureScript instance->SetData(DATA_BALTHARUS_SHARED_HEALTH, me->GetMaxHealth()); } - void DoAction(int32 const action) + void DoAction(int32 action) { switch (action) { @@ -164,17 +162,18 @@ class boss_baltharus_the_warborn : public CreatureScript instance->SetData(DATA_BALTHARUS_SHARED_HEALTH, me->GetHealth() - damage); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { - if (!UpdateVictim() && !(events.GetPhaseMask() & PHASE_INTRO_MASK)) + bool introPhase = events.IsInPhase(PHASE_INTRO); + if (!UpdateVictim() && !introPhase) return; - if (!(events.GetPhaseMask() & PHASE_INTRO_MASK)) + if (!introPhase) me->SetHealth(instance->GetData(DATA_BALTHARUS_SHARED_HEALTH)); events.Update(diff); - if (me->HasUnitState(UNIT_STATE_CASTING) && !(events.GetPhaseMask() & PHASE_INTRO_MASK)) + if (me->HasUnitState(UNIT_STATE_CASTING) && !introPhase) return; while (uint32 eventId = events.ExecuteEvent()) @@ -258,7 +257,7 @@ class npc_baltharus_the_warborn_clone : public CreatureScript killer->Kill(baltharus); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp index 94325ca015b..c616d44816c 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp @@ -140,7 +140,7 @@ class boss_general_zarithrian : public CreatureScript return (instance->GetBossState(DATA_SAVIANA_RAGEFIRE) == DONE && instance->GetBossState(DATA_BALTHARUS_THE_WARBORN) == DONE); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp index 6039e01b901..fd70a073a39 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp @@ -165,12 +165,7 @@ enum Phases PHASE_INTRO = 1, PHASE_ONE = 2, PHASE_TWO = 3, - PHASE_THREE = 4, - - PHASE_INTRO_MASK = 1 << PHASE_INTRO, - PHASE_ONE_MASK = 1 << PHASE_ONE, - PHASE_TWO_MASK = 1 << PHASE_TWO, - PHASE_THREE_MASK = 1 << PHASE_THREE + PHASE_THREE = 4 }; enum Misc @@ -248,7 +243,7 @@ struct generic_halionAI : public BossAI _JustReachedHome(); } - void ExecuteEvent(uint32 const eventId) + void ExecuteEvent(uint32 eventId) { switch (eventId) { @@ -267,7 +262,7 @@ struct generic_halionAI : public BossAI } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim() || me->HasUnitState(UNIT_STATE_CASTING)) return; @@ -325,7 +320,7 @@ class boss_halion : public CreatureScript void EnterEvadeMode() { // Phase 1: We always can evade. Phase 2 & 3: We can evade if and only if the controller tells us to. - if ((events.GetPhaseMask() & PHASE_ONE_MASK) || _canEvade) + if (events.IsInPhase(PHASE_ONE) || _canEvade) generic_halionAI::EnterEvadeMode(); } @@ -369,7 +364,7 @@ class boss_halion : public CreatureScript void DamageTaken(Unit* attacker, uint32& damage) { - if (me->HealthBelowPctDamaged(75, damage) && (events.GetPhaseMask() & PHASE_ONE_MASK)) + if (me->HealthBelowPctDamaged(75, damage) && events.IsInPhase(PHASE_ONE)) { events.SetPhase(PHASE_TWO); Talk(SAY_PHASE_TWO); @@ -383,7 +378,7 @@ class boss_halion : public CreatureScript return; } - if (events.GetPhaseMask() & PHASE_THREE_MASK) + if (events.IsInPhase(PHASE_THREE)) { // Don't consider copied damage. if (!me->InSamePhase(attacker)) @@ -394,15 +389,15 @@ class boss_halion : public CreatureScript } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { - if (events.GetPhaseMask() & PHASE_TWO_MASK) + if (events.IsInPhase(PHASE_TWO)) return; generic_halionAI::UpdateAI(diff); } - void ExecuteEvent(uint32 const eventId) + void ExecuteEvent(uint32 eventId) { switch (eventId) { @@ -528,7 +523,7 @@ class boss_twilight_halion : public CreatureScript void DamageTaken(Unit* attacker, uint32& damage) { - if (me->HealthBelowPctDamaged(50, damage) && (events.GetPhaseMask() & PHASE_TWO_MASK)) + if (me->HealthBelowPctDamaged(50, damage) && events.IsInPhase(PHASE_TWO)) { events.SetPhase(PHASE_THREE); me->CastStop(); @@ -537,7 +532,7 @@ class boss_twilight_halion : public CreatureScript return; } - if (events.GetPhaseMask() & PHASE_THREE_MASK) + if (events.IsInPhase(PHASE_THREE)) { // Don't consider copied damage. if (!me->InSamePhase(attacker)) @@ -562,7 +557,7 @@ class boss_twilight_halion : public CreatureScript } } - void ExecuteEvent(uint32 const eventId) + void ExecuteEvent(uint32 eventId) { switch (eventId) { @@ -646,7 +641,7 @@ class npc_halion_controller : public CreatureScript _instance->SetBossState(DATA_HALION, FAIL); } - void DoAction(int32 const action) + void DoAction(int32 action) { switch (action) { @@ -688,12 +683,12 @@ class npc_halion_controller : public CreatureScript } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { // The isInCombat() check is needed because that check should be false when Halion is // not engaged, while it would return true without as UpdateVictim() checks for // combat state. - if (!(_events.GetPhaseMask() & PHASE_INTRO_MASK) && me->isInCombat() && !UpdateVictim()) + if (!(_events.IsInPhase(PHASE_INTRO)) && me->isInCombat() && !UpdateVictim()) { EnterEvadeMode(); return; @@ -917,7 +912,7 @@ class npc_orb_carrier : public CreatureScript ASSERT(creature->GetVehicleKit()); } - void UpdateAI(uint32 const /*diff*/) + void UpdateAI(uint32 /*diff*/) { /// According to sniffs this spell is cast every 1 or 2 seconds. /// However, refreshing it looks bad, so just cast the spell if @@ -933,7 +928,7 @@ class npc_orb_carrier : public CreatureScript me->SetFacingToObject(rotationFocus); // setInFront } - void DoAction(int32 const action) + void DoAction(int32 action) { if (action == ACTION_SHOOT) { @@ -978,13 +973,15 @@ class npc_meteor_strike_initial : public CreatureScript public: npc_meteor_strike_initial() : CreatureScript("npc_meteor_strike_initial") { } - struct npc_meteor_strike_initialAI : public Scripted_NoMovementAI + struct npc_meteor_strike_initialAI : public ScriptedAI { - npc_meteor_strike_initialAI(Creature* creature) : Scripted_NoMovementAI(creature), + npc_meteor_strike_initialAI(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript()) - { } + { + SetCombatMovement(false); + } - void DoAction(int32 const action) + void DoAction(int32 action) { switch (action) { @@ -1032,7 +1029,7 @@ class npc_meteor_strike_initial : public CreatureScript } } - void UpdateAI(uint32 const /*diff*/) { } + void UpdateAI(uint32 /*diff*/) { } void EnterEvadeMode() { } private: InstanceScript* _instance; @@ -1050,16 +1047,18 @@ class npc_meteor_strike : public CreatureScript public: npc_meteor_strike() : CreatureScript("npc_meteor_strike") { } - struct npc_meteor_strikeAI : public Scripted_NoMovementAI + struct npc_meteor_strikeAI : public ScriptedAI { - npc_meteor_strikeAI(Creature* creature) : Scripted_NoMovementAI(creature), + npc_meteor_strikeAI(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript()) { _range = 5.0f; _spawnCount = 0; + + SetCombatMovement(false); } - void DoAction(int32 const action) + void DoAction(int32 action) { if (action == ACTION_METEOR_STRIKE_BURN) { @@ -1076,7 +1075,7 @@ class npc_meteor_strike : public CreatureScript controller->AI()->JustSummoned(me); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (_spawnCount > 5) return; @@ -1119,11 +1118,13 @@ class npc_combustion_consumption : public CreatureScript public: npc_combustion_consumption() : CreatureScript("npc_combustion_consumption") { } - struct npc_combustion_consumptionAI : public Scripted_NoMovementAI + struct npc_combustion_consumptionAI : public ScriptedAI { - npc_combustion_consumptionAI(Creature* creature) : Scripted_NoMovementAI(creature), + npc_combustion_consumptionAI(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript()), _summonerGuid(0) { + SetCombatMovement(false); + switch (me->GetEntry()) { case NPC_COMBUSTION: @@ -1169,7 +1170,7 @@ class npc_combustion_consumption : public CreatureScript summoner->CastCustomSpell(_explosionSpell, SPELLVALUE_BASE_POINT0, damage, summoner); } - void UpdateAI(uint32 const /*diff*/) { } + void UpdateAI(uint32 /*diff*/) { } private: InstanceScript* _instance; @@ -1248,7 +1249,7 @@ class npc_living_ember : public CreatureScript me->DespawnOrUnsummon(1); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim() || me->HasUnitState(UNIT_STATE_CASTING)) return; diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp index 06743858ec0..d391abb0d4d 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp @@ -141,7 +141,7 @@ class boss_saviana_ragefire : public CreatureScript Talk(SAY_KILL); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp index 5baae66e65b..2623b2c542a 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp @@ -66,7 +66,7 @@ class npc_xerestrasza : public CreatureScript me->RemoveFlag(UNIT_NPC_FLAGS, GOSSIP_OPTION_QUESTGIVER); } - void DoAction(int32 const action) + void DoAction(int32 action) { if (action == ACTION_BALTHARUS_DEATH) { @@ -92,7 +92,7 @@ class npc_xerestrasza : public CreatureScript } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (_isIntro) return; diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp index fb0f0fbaee1..553b836da8f 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp @@ -175,7 +175,7 @@ public: me->DisappearAndDie(); } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (bDone && uiResetTimer <= uiDiff) { @@ -299,7 +299,7 @@ public: me->DisappearAndDie(); } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (bDone && uiResetTimer <= uiDiff) { @@ -403,7 +403,7 @@ public: uiWakingNightmare = 7000; } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (!UpdateVictim()) return; @@ -545,7 +545,7 @@ public: uiWaypoint = uiType; } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { npc_escortAI::UpdateAI(uiDiff); diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp index ceb9724a078..b253d15773d 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp @@ -153,7 +153,7 @@ public: summon->AI()->AttackStart(me->getVictim()); } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { //Return since we have no target if (!UpdateVictim()) @@ -320,7 +320,7 @@ public: uiAttackTimer = 3500; } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (!UpdateVictim()) return; @@ -362,7 +362,7 @@ public: } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { npc_escortAI::UpdateAI(uiDiff); diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp index 9299630b3d2..e637de75b4d 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp @@ -233,7 +233,7 @@ public: DoCast(me, SPELL_SHIELD, true); } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { npc_escortAI::UpdateAI(uiDiff); @@ -360,7 +360,7 @@ public: bHome = false; } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (!bDone && GrandChampionsOutVehicle(me)) { @@ -494,7 +494,7 @@ public: bHome = false; } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (!bDone && GrandChampionsOutVehicle(me)) { @@ -639,7 +639,7 @@ public: bHome = false; } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (!bDone && GrandChampionsOutVehicle(me)) { @@ -785,7 +785,7 @@ public: bHome = false; } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (!bDone && GrandChampionsOutVehicle(me)) { @@ -933,7 +933,7 @@ public: bHome = false; } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (!bDone && GrandChampionsOutVehicle(me)) { diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.cpp index 7e4a740cb13..472048501a5 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.cpp @@ -412,7 +412,7 @@ public: } } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { ScriptedAI::UpdateAI(uiDiff); diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp index e44f5fba1b8..9c6d481c207 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp @@ -154,9 +154,7 @@ enum Phases { // Anub'arak PHASE_MELEE = 1, - PHASE_SUBMERGED = 2, - - PHASE_MASK_MELEE = 1 << PHASE_MELEE + PHASE_SUBMERGED = 2 }; class boss_anubarak_trial : public CreatureScript @@ -286,7 +284,7 @@ class boss_anubarak_trial : public CreatureScript _sphereGUID[i] = summoned->GetGUID(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -403,7 +401,7 @@ class boss_anubarak_trial : public CreatureScript } - if (HealthBelowPct(30) && events.GetPhaseMask() & PHASE_MASK_MELEE && !_reachedPhase3) + if (HealthBelowPct(30) && events.IsInPhase(PHASE_MELEE) && !_reachedPhase3) { _reachedPhase3 = true; DoCastAOE(SPELL_LEECHING_SWARM); @@ -411,7 +409,7 @@ class boss_anubarak_trial : public CreatureScript Talk(SAY_LEECHING_SWARM); } - if (events.GetPhaseMask() & PHASE_MASK_MELEE) + if (events.IsInPhase(PHASE_MELEE)) DoMeleeAttackIfReady(); } @@ -453,7 +451,7 @@ class mob_swarm_scarab : public CreatureScript Anubarak->AI()->JustSummoned(me); } - void DoAction(const int32 actionId) + void DoAction(int32 actionId) { switch (actionId) { @@ -471,7 +469,7 @@ class mob_swarm_scarab : public CreatureScript DoCast(killer, RAID_MODE(SPELL_TRAITOR_KING_10, SPELL_TRAITOR_KING_25)); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (_instance && _instance->GetBossState(BOSS_ANUBARAK) != IN_PROGRESS) me->DisappearAndDie(); @@ -527,7 +525,7 @@ class mob_nerubian_burrower : public CreatureScript Anubarak->AI()->JustSummoned(me); } - void DoAction(const int32 actionId) + void DoAction(int32 actionId) { switch (actionId) { @@ -541,7 +539,7 @@ class mob_nerubian_burrower : public CreatureScript } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (_instance && _instance->GetBossState(BOSS_ANUBARAK) != IN_PROGRESS) me->DisappearAndDie(); @@ -702,7 +700,7 @@ class mob_anubarak_spike : public CreatureScript uiDamage = 0; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) { diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp index ba554c3703d..f1bf0579187 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp @@ -710,7 +710,7 @@ struct boss_faction_championsAI : public BossAI } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { _events.Update(diff); @@ -773,7 +773,7 @@ class mob_toc_druid : public CreatureScript SetEquipmentSlots(false, 51799, EQUIP_NO_CHANGE, EQUIP_NO_CHANGE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -865,7 +865,7 @@ class mob_toc_shaman : public CreatureScript SetEquipmentSlots(false, 49992, EQUIP_NO_CHANGE, EQUIP_NO_CHANGE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -959,7 +959,7 @@ class mob_toc_paladin : public CreatureScript SetEquipmentSlots(false, 50771, 47079, EQUIP_NO_CHANGE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -1062,7 +1062,7 @@ class mob_toc_priest : public CreatureScript SetEquipmentSlots(false, 49992, EQUIP_NO_CHANGE, EQUIP_NO_CHANGE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -1152,7 +1152,7 @@ class mob_toc_shadow_priest : public CreatureScript DoCast(me, SPELL_SHADOWFORM); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -1251,7 +1251,7 @@ class mob_toc_warlock : public CreatureScript DoCast(SPELL_SUMMON_FELHUNTER); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -1337,7 +1337,7 @@ class mob_toc_mage : public CreatureScript SetEquipmentSlots(false, 47524, EQUIP_NO_CHANGE, EQUIP_NO_CHANGE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -1437,7 +1437,7 @@ class mob_toc_hunter : public CreatureScript DoCast(SPELL_CALL_PET); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -1534,7 +1534,7 @@ class mob_toc_boomkin : public CreatureScript SetEquipmentSlots(false, 50966, EQUIP_NO_CHANGE, EQUIP_NO_CHANGE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -1629,7 +1629,7 @@ class mob_toc_warrior : public CreatureScript SetEquipmentSlots(false, 47427, 46964, EQUIP_NO_CHANGE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -1728,7 +1728,7 @@ class mob_toc_dk : public CreatureScript SetEquipmentSlots(false, 47518, 51021, EQUIP_NO_CHANGE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -1827,7 +1827,7 @@ class mob_toc_rogue : public CreatureScript me->SetMaxPower(POWER_ENERGY, 100); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -1967,7 +1967,7 @@ class mob_toc_enh_shaman : public CreatureScript summons.DespawnAll(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -2062,7 +2062,7 @@ class mob_toc_retro_paladin : public CreatureScript DoCast(SPELL_SEAL_OF_COMMAND); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -2155,7 +2155,7 @@ class mob_toc_pet_warlock : public CreatureScript events.ScheduleEvent(EVENT_SPELL_LOCK, urand(15*IN_MILLISECONDS, 30*IN_MILLISECONDS)); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -2206,7 +2206,7 @@ class mob_toc_pet_hunter : public CreatureScript _clawTimer = urand(5*IN_MILLISECONDS, 10*IN_MILLISECONDS); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp index 82cff5ff01f..74324d6c515 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp @@ -18,8 +18,9 @@ #include "ScriptMgr.h" #include "ScriptedCreature.h" -#include "trial_of_the_crusader.h" #include "SpellScript.h" +#include "Player.h" +#include "trial_of_the_crusader.h" enum Yells { @@ -69,7 +70,6 @@ enum BossSpells SPELL_FEL_INFERNO = 67047, SPELL_FEL_STREAK = 66494, SPELL_LORD_HITTIN = 66326, // special effect preventing more specific spells be cast on the same player within 10 seconds - SPELL_MISTRESS_KISS_DEBUFF = 66334, SPELL_MISTRESS_KISS_DAMAGE_SILENCE = 66359 }; @@ -149,7 +149,7 @@ class boss_jaraxxus : public CreatureScript Talk(SAY_AGGRO); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -223,10 +223,11 @@ class mob_legion_flame : public CreatureScript public: mob_legion_flame() : CreatureScript("mob_legion_flame") { } - struct mob_legion_flameAI : public Scripted_NoMovementAI + struct mob_legion_flameAI : public ScriptedAI { - mob_legion_flameAI(Creature* creature) : Scripted_NoMovementAI(creature) + mob_legion_flameAI(Creature* creature) : ScriptedAI(creature) { + SetCombatMovement(false); _instance = creature->GetInstanceScript(); } @@ -237,7 +238,7 @@ class mob_legion_flame : public CreatureScript DoCast(SPELL_LEGION_FLAME_EFFECT); } - void UpdateAI(const uint32 /*diff*/) + void UpdateAI(uint32 /*diff*/) { UpdateVictim(); if (_instance && _instance->GetBossState(BOSS_JARAXXUS) != IN_PROGRESS) @@ -258,10 +259,11 @@ class mob_infernal_volcano : public CreatureScript public: mob_infernal_volcano() : CreatureScript("mob_infernal_volcano") { } - struct mob_infernal_volcanoAI : public Scripted_NoMovementAI + struct mob_infernal_volcanoAI : public ScriptedAI { - mob_infernal_volcanoAI(Creature* creature) : Scripted_NoMovementAI(creature), _summons(me) + mob_infernal_volcanoAI(Creature* creature) : ScriptedAI(creature), _summons(me) { + SetCombatMovement(false); } void Reset() @@ -294,7 +296,7 @@ class mob_infernal_volcano : public CreatureScript me->DespawnOrUnsummon(); } - void UpdateAI(uint32 const /*diff*/) {} + void UpdateAI(uint32 /*diff*/) {} private: SummonList _summons; @@ -324,7 +326,7 @@ class mob_fel_infernal : public CreatureScript me->SetInCombatWithZone(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (_instance && _instance->GetBossState(BOSS_JARAXXUS) != IN_PROGRESS) { @@ -398,7 +400,7 @@ class mob_nether_portal : public CreatureScript me->DespawnOrUnsummon(); } - void UpdateAI(uint32 const /*diff*/) {} + void UpdateAI(uint32 /*diff*/) {} private: SummonList _summons; @@ -439,7 +441,7 @@ class mob_mistress_of_pain : public CreatureScript _instance->SetData(DATA_MISTRESS_OF_PAIN_COUNT, DECREASE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (_instance && _instance->GetBossState(BOSS_JARAXXUS) != IN_PROGRESS) { @@ -533,6 +535,21 @@ class spell_mistress_kiss : public SpellScriptLoader } }; +class MistressKissTargetSelector +{ + public: + MistressKissTargetSelector() { } + + bool operator()(WorldObject* unit) const + { + if (unit->GetTypeId() == TYPEID_PLAYER) + if (unit->ToPlayer()->getPowerType() == POWER_MANA) + return false; + + return true; + } +}; + class spell_mistress_kiss_area : public SpellScriptLoader { public: @@ -542,44 +559,27 @@ class spell_mistress_kiss_area : public SpellScriptLoader { PrepareSpellScript(spell_mistress_kiss_area_SpellScript) - bool Load() + void FilterTargets(std::list<WorldObject*>& targets) { - if (GetCaster()) - if (sSpellMgr->GetSpellIdForDifficulty(SPELL_MISTRESS_KISS_DEBUFF, GetCaster())) - return true; - return false; - } + // get a list of players with mana + targets.remove_if(MistressKissTargetSelector()); + if (targets.empty()) + return; - void HandleScript(SpellEffIndex /*effIndex*/) - { - Unit* caster = GetCaster(); - Unit* target = GetHitUnit(); - if (caster && target) - caster->CastSpell(target, SPELL_MISTRESS_KISS_DEBUFF, true); + WorldObject* target = Trinity::Containers::SelectRandomContainerElement(targets); + targets.clear(); + targets.push_back(target); } - void FilterTargets(std::list<WorldObject*>& targets) + void HandleScript(SpellEffIndex /*effIndex*/) { - // get a list of players with mana - std::list<WorldObject*> _targets; - for (std::list<WorldObject*>::iterator itr = targets.begin(); itr != targets.end(); ++itr) - if ((*itr)->ToUnit()->getPowerType() == POWER_MANA) - _targets.push_back(*itr); - - // pick a random target and kiss him - if (WorldObject* _target = Trinity::Containers::SelectRandomContainerElement(_targets)) - { - // correctly fill "targets" for the visual effect - targets.clear(); - targets.push_back(_target); - if (Unit* caster = GetCaster()) - caster->CastSpell(_target->ToUnit(), SPELL_MISTRESS_KISS_DEBUFF, true); - } + GetCaster()->CastSpell(GetHitUnit(), uint32(GetEffectValue()), true); } void Register() { OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_mistress_kiss_area_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY); + OnEffectHitTarget += SpellEffectFn(spell_mistress_kiss_area_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); } }; diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp index 03a305356c4..c39b8403474 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp @@ -146,10 +146,7 @@ enum Phases { PHASE_MOBILE = 1, PHASE_STATIONARY = 2, - PHASE_SUBMERGED = 3, - - PHASE_MASK_MOBILE = 1 << PHASE_MOBILE, - PHASE_MASK_STATIONARY = 1 << PHASE_STATIONARY + PHASE_SUBMERGED = 3 }; class boss_gormok : public CreatureScript @@ -238,7 +235,7 @@ class boss_gormok : public CreatureScript pSnobold->ToCreature()->DespawnOrUnsummon(); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -362,7 +359,7 @@ class mob_snobold_vassal : public CreatureScript _instance->SetData(DATA_SNOBOLD_COUNT, DECREASE); } - void DoAction(int32 const action) + void DoAction(int32 action) { switch (action) { @@ -377,7 +374,7 @@ class mob_snobold_vassal : public CreatureScript } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim() || _targetDied) return; @@ -484,7 +481,7 @@ class npc_firebomb : public CreatureScript me->SetDisplayId(me->GetCreatureTemplate()->Modelid2); } - void UpdateAI(uint32 const /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (_instance->GetData(TYPE_NORTHREND_BEASTS) != GORMOK_IN_PROGRESS) me->DespawnOrUnsummon(); @@ -561,7 +558,7 @@ struct boss_jormungarAI : public BossAI instance->SetData(TYPE_NORTHREND_BEASTS, SNAKES_IN_PROGRESS); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -624,9 +621,9 @@ struct boss_jormungarAI : public BossAI return; } } - if (events.GetPhaseMask() & PHASE_MASK_MOBILE) + if (events.IsInPhase(PHASE_MOBILE)) DoMeleeAttackIfReady(); - if (events.GetPhaseMask() & PHASE_MASK_STATIONARY) + if (events.IsInPhase(PHASE_STATIONARY)) DoSpellAttackIfReady(SpitSpell); } @@ -807,7 +804,7 @@ class mob_slime_pool : public CreatureScript me->SetReactState(REACT_PASSIVE); } - void UpdateAI(uint32 const /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (!_cast) { @@ -975,7 +972,7 @@ class boss_icehowl : public CreatureScript } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp index 9b6f4a6a0da..b41e986741b 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp @@ -270,7 +270,7 @@ struct boss_twin_baseAI : public BossAI DoCast(me, SurgeSpellId); } - void DoAction(const int32 action) + void DoAction(int32 action) { switch (action) { @@ -292,7 +292,7 @@ struct boss_twin_baseAI : public BossAI me->UpdateDamagePhysical(mode ? OFF_ATTACK : BASE_ATTACK); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!instance || !UpdateVictim()) return; @@ -594,7 +594,7 @@ class mob_unleashed_dark : public CreatureScript { mob_unleashed_darkAI(Creature* creature) : mob_unleashed_ballAI(creature) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (RangeCheckTimer < diff) { @@ -626,7 +626,7 @@ class mob_unleashed_light : public CreatureScript { mob_unleashed_lightAI(Creature* creature) : mob_unleashed_ballAI(creature) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (RangeCheckTimer < diff) { @@ -654,11 +654,11 @@ class mob_bullet_controller : public CreatureScript public: mob_bullet_controller() : CreatureScript("mob_bullet_controller") { } - struct mob_bullet_controllerAI : public Scripted_NoMovementAI + struct mob_bullet_controllerAI : public ScriptedAI { - mob_bullet_controllerAI(Creature* creature) : Scripted_NoMovementAI(creature) + mob_bullet_controllerAI(Creature* creature) : ScriptedAI(creature) { - Reset(); + SetCombatMovement(false); } void Reset() @@ -666,7 +666,7 @@ class mob_bullet_controller : public CreatureScript DoCastAOE(SPELL_CONTROLLER_PERIODIC); } - void UpdateAI(const uint32 /*diff*/) + void UpdateAI(uint32 /*diff*/) { UpdateVictim(); } diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp index 3e3fbf51cd0..a68ea1025d5 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp @@ -267,7 +267,7 @@ class boss_lich_king_toc : public CreatureScript } } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (!_instance) return; @@ -415,7 +415,7 @@ class npc_fizzlebang_toc : public CreatureScript _summons.Summon(summoned); } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (!_instance) return; @@ -548,7 +548,7 @@ class npc_tirion_toc : public CreatureScript void AttackStart(Unit* /*who*/) {} - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (!_instance) return; @@ -836,7 +836,7 @@ class npc_garrosh_toc : public CreatureScript void AttackStart(Unit* /*who*/) {} - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (!_instance) return; @@ -920,7 +920,7 @@ class npc_varian_toc : public CreatureScript void AttackStart(Unit* /*who*/) {} - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (!_instance) return; diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_dred.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_dred.cpp index 6cb970f6ab7..923f8a23d6f 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/boss_dred.cpp +++ b/src/server/scripts/Northrend/DraktharonKeep/boss_dred.cpp @@ -86,7 +86,7 @@ class boss_dred : public CreatureScript instance->SetData(DATA_DRED_EVENT, IN_PROGRESS); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -148,7 +148,7 @@ class boss_dred : public CreatureScript DoMeleeAttackIfReady(); } - void DoAction(int32 const action) + void DoAction(int32 action) { if (action == ACTION_RAPTOR_KILLED) ++raptorsKilled; @@ -196,7 +196,7 @@ class npc_drakkari_gutripper : public CreatureScript GutRipTimer = urand(10000, 15000); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -246,7 +246,7 @@ class npc_drakkari_scytheclaw : public CreatureScript uiRendTimer = urand(10000, 15000); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp index e99128fbbf9..6eedfb357db 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp +++ b/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp @@ -112,7 +112,7 @@ public: DoStartNoMovement(target); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim() || _bubbled) return; @@ -141,7 +141,7 @@ public: } } - void DoAction(int32 const action) + void DoAction(int32 action) { if (action == ACTION_CRYSTAL_HANDLER_DIED) CrystalHandlerDied(); @@ -279,7 +279,7 @@ public: _temp = 0; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (_spell) { diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp index 1f30b805f8a..0ca7ccd196a 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp +++ b/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp @@ -107,7 +107,7 @@ public: instance->SetData(DATA_THARON_JA_EVENT, IN_PROGRESS); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp index bcec5fc1547..9e9ecc561d5 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp +++ b/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp @@ -108,7 +108,7 @@ public: instance->SetData(DATA_TROLLGORE_EVENT, IN_PROGRESS); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp index 261eb854aa3..516a3e0f7c9 100644 --- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp @@ -118,7 +118,7 @@ class boss_bronjahm : public CreatureScript void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/) { - if (events.GetPhaseMask() & (1 << PHASE_1) && !HealthAbovePct(30)) + if (events.IsInPhase(PHASE_1) && !HealthAbovePct(30)) { events.SetPhase(PHASE_2); DoCast(me, SPELL_TELEPORT); @@ -136,7 +136,7 @@ class boss_bronjahm : public CreatureScript summon->CastSpell(summon, SPELL_PURPLE_BANISH_VISUAL, true); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp index b3781f89e06..623124f441f 100644 --- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp @@ -247,7 +247,7 @@ class boss_devourer_of_souls : public CreatureScript return 0; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { // Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp index b5d95dfb0f6..efc687eb409 100644 --- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp @@ -95,7 +95,7 @@ public: phase = PHASE_NORMAL; } - void DoAction(const int32 actionId) + void DoAction(int32 actionId) { switch (actionId) { @@ -109,7 +109,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (phase == PHASE_INTRO) { @@ -221,7 +221,7 @@ public: phase = PHASE_NORMAL; } - void DoAction(const int32 actionId) + void DoAction(int32 actionId) { switch (actionId) { @@ -235,7 +235,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (phase == PHASE_INTRO) { diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp index 2278bfe409a..5e13fd22c47 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp @@ -95,7 +95,7 @@ public: Talk(SAY_SLAY); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { // Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp index 1d7e405585f..191465a52f3 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp @@ -91,7 +91,7 @@ public: Talk(SAY_SLAY); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { // Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp index e0a2f90b082..c6093d6bc0f 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp @@ -233,7 +233,7 @@ public: me->SetVisible(true); } - void DoAction(const int32 actionId) + void DoAction(int32 actionId) { switch (actionId) { @@ -246,7 +246,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { events.Update(diff); switch (events.ExecuteEvent()) @@ -657,7 +657,7 @@ public: events.ScheduleEvent(EVENT_DARK_MENDING, 20000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -740,7 +740,7 @@ public: events.ScheduleEvent(EVENT_HALLUCINATION, 40000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -840,7 +840,7 @@ public: events.ScheduleEvent(EVENT_KIDNEY_SHOT, 12000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -910,7 +910,7 @@ public: events.ScheduleEvent(EVENT_TORTURED_ENRAGE, 15000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -976,7 +976,7 @@ public: events.ScheduleEvent(EVENT_ICE_SHOT, 15000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.h b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.h index a8bd92cc070..2cab1cca214 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.h +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.h @@ -102,7 +102,7 @@ struct boss_horAI : ScriptedAI uiDamage = 0; } - void DoAction(const int32 actionID) + void DoAction(int32 actionID) { switch (actionID) { diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp index 160d45f5140..822adbb9201 100644 --- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp @@ -52,11 +52,7 @@ enum Phases { PHASE_ONE = 1, PHASE_TWO = 2, - PHASE_THREE = 3, - - PHASE_ONE_MASK = 1 << PHASE_ONE, - PHASE_TWO_MASK = 1 << PHASE_TWO, - PHASE_THREE_MASK = 1 << PHASE_THREE, + PHASE_THREE = 3 }; enum MiscData @@ -136,7 +132,7 @@ enum Events void DamageTaken(Unit* /*attacker*/, uint32& /*uiDamage*/) { - if (events.GetPhaseMask() & PHASE_ONE_MASK && !HealthAbovePct(66)) + if (events.IsInPhase(PHASE_ONE) && !HealthAbovePct(66)) { events.SetPhase(PHASE_TWO); Talk(SAY_PHASE2); @@ -146,7 +142,7 @@ enum Events return; } - if (events.GetPhaseMask() & PHASE_TWO_MASK && !HealthAbovePct(33)) + if (events.IsInPhase(PHASE_TWO) && !HealthAbovePct(33)) { events.SetPhase(PHASE_THREE); Talk(SAY_PHASE3); @@ -162,12 +158,12 @@ enum Events if (type != EFFECT_MOTION_TYPE || id != POINT_FORGE) return; - if (events.GetPhaseMask() & PHASE_TWO_MASK) + if (events.IsInPhase(PHASE_TWO)) { DoCast(me, SPELL_FORGE_BLADE); SetEquipmentSlots(false, EQUIP_ID_SWORD); } - if (events.GetPhaseMask() & PHASE_THREE_MASK) + if (events.IsInPhase(PHASE_THREE)) { me->RemoveAurasDueToSpell(SPELL_FORGE_BLADE_HELPER); DoCast(me, SPELL_FORGE_MACE); @@ -190,7 +186,7 @@ enum Events return _permafrostStack; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -226,15 +222,15 @@ enum Events break; case EVENT_JUMP: me->AttackStop(); - if (events.GetPhaseMask() & PHASE_TWO_MASK) + if (events.IsInPhase(PHASE_TWO)) me->GetMotionMaster()->MoveJump(northForgePos.GetPositionX(), northForgePos.GetPositionY(), northForgePos.GetPositionZ(), 25.0f, 15.0f); - else if (events.GetPhaseMask() & PHASE_THREE_MASK) + else if (events.IsInPhase(PHASE_THREE)) me->GetMotionMaster()->MoveJump(southForgePos.GetPositionX(), southForgePos.GetPositionY(), southForgePos.GetPositionZ(), 25.0f, 15.0f); break; case EVENT_RESUME_ATTACK: - if (events.GetPhaseMask() & PHASE_TWO_MASK) + if (events.IsInPhase(PHASE_THREE)) events.ScheduleEvent(EVENT_CHILLING_WAVE, 5000, 0, PHASE_TWO); - else if (events.GetPhaseMask() & PHASE_THREE_MASK) + else if (events.IsInPhase(PHASE_THREE)) events.ScheduleEvent(EVENT_DEEP_FREEZE, 10000, 0, PHASE_THREE); AttackStart(me->getVictim()); break; diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp index f657c8e19b5..182f79b6ea0 100644 --- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp @@ -203,7 +203,7 @@ class boss_ick : public CreatureScript me->AddThreat(target, _tempThreat); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!me->isInCombat()) return; @@ -338,7 +338,7 @@ class boss_krick : public CreatureScript } } - void DoAction(const int32 actionId) + void DoAction(int32 actionId) { if (actionId == ACTION_OUTRO) { @@ -365,7 +365,7 @@ class boss_krick : public CreatureScript _events.ScheduleEvent(EVENT_OUTRO_1, 1000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (_phase != PHASE_OUTRO) return; diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp index 783cc266509..8b771f507c2 100644 --- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp @@ -94,7 +94,7 @@ enum Phases PHASE_NONE = 0, PHASE_INTRO = 1, PHASE_COMBAT = 2, - PHASE_OUTRO = 3, + PHASE_OUTRO = 3 }; enum Actions @@ -168,7 +168,7 @@ class boss_tyrannus : public CreatureScript if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE)) return; - if (victim && me->Attack(victim, true) && !(events.GetPhaseMask() & (1 << PHASE_INTRO))) + if (victim && me->Attack(victim, true) && !events.IsInPhase(PHASE_INTRO)) me->GetMotionMaster()->MoveChase(victim); } @@ -201,7 +201,7 @@ class boss_tyrannus : public CreatureScript rimefang->AI()->DoAction(ACTION_END_COMBAT); } - void DoAction(const int32 actionId) + void DoAction(int32 actionId) { if (actionId == ACTION_START_INTRO) { @@ -215,9 +215,9 @@ class boss_tyrannus : public CreatureScript } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { - if (!UpdateVictim() && !(events.GetPhaseMask() & (1 << PHASE_INTRO))) + if (!UpdateVictim() && !events.IsInPhase(PHASE_INTRO)) return; events.Update(diff); @@ -313,7 +313,7 @@ class boss_rimefang : public CreatureScript _vehicle->InstallAllAccessories(false); } - void DoAction(const int32 actionId) + void DoAction(int32 actionId) { if (actionId == ACTION_START_RIMEFANG) { @@ -335,9 +335,9 @@ class boss_rimefang : public CreatureScript } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { - if (!UpdateVictim() && !(_events.GetPhaseMask() & (1 << PHASE_COMBAT))) + if (!UpdateVictim() && !_events.IsInPhase(PHASE_COMBAT)) return; _events.Update(diff); @@ -409,7 +409,7 @@ class player_overlord_brandAI : public PlayerAI me->CastCustomSpell(SPELL_OVERLORD_BRAND_HEAL, SPELLVALUE_BASE_POINT0, int32(addHealth*5.5f), tyrannus, true, NULL, NULL, tyrannus->GetGUID()); } - void UpdateAI(const uint32 /*diff*/) { } + void UpdateAI(uint32 /*diff*/) { } private: Creature* tyrannus; diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp index 246d389e0e7..42d912e2bd2 100644 --- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp @@ -60,7 +60,7 @@ class mob_ymirjar_flamebearer : public CreatureScript _events.ScheduleEvent(EVENT_TACTICAL_BLINK, 15000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -125,7 +125,7 @@ class mob_iceborn_protodrake : public CreatureScript _vehicle->RemoveAllPassengers(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -178,7 +178,7 @@ class mob_geist_ambusher : public CreatureScript DoCast(who, SPELL_LEAPING_FACE_MAUL); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp b/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp index 58301df4ca2..1ec29224763 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp @@ -140,7 +140,7 @@ class boss_drakkari_colossus : public CreatureScript instance->SetData(DATA_DRAKKARI_COLOSSUS_EVENT, FAIL); } - void DoAction(const int32 action) + void DoAction(int32 action) { switch (action) { @@ -148,6 +148,7 @@ class boss_drakkari_colossus : public CreatureScript DoCast(SPELL_EMERGE); break; case ACTION_FREEZE_COLOSSUS: + me->GetMotionMaster()->Clear(); me->GetMotionMaster()->MoveIdle(); me->SetReactState(REACT_PASSIVE); @@ -207,7 +208,7 @@ class boss_drakkari_colossus : public CreatureScript introDone = data; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -284,7 +285,7 @@ class boss_drakkari_elemental : public CreatureScript } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -310,7 +311,7 @@ class boss_drakkari_elemental : public CreatureScript DoMeleeAttackIfReady(); } - void DoAction(const int32 action) + void DoAction(int32 action) { switch (action) { @@ -465,7 +466,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Northrend/Gundrak/boss_eck.cpp b/src/server/scripts/Northrend/Gundrak/boss_eck.cpp index d169fb163b2..df949c7a962 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_eck.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_eck.cpp @@ -75,7 +75,7 @@ public: instance->SetData(DATA_ECK_THE_FEROCIOUS_EVENT, IN_PROGRESS); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp b/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp index baba9d5396b..e4cdf89c165 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp @@ -127,7 +127,7 @@ public: instance->SetData(DATA_GAL_DARAH_EVENT, IN_PROGRESS); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp b/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp index 8f325dafc82..97c75b5f391 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp @@ -91,7 +91,7 @@ public: instance->SetData(DATA_MOORABI_EVENT, IN_PROGRESS); } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp b/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp index 1b5f6e5d426..6deb0c20676 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp @@ -122,7 +122,7 @@ public: instance->SetData(DATA_SLAD_RAN_EVENT, IN_PROGRESS); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) @@ -231,7 +231,7 @@ public: uiGripOfSladRanTimer = 1*IN_MILLISECONDS; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -286,7 +286,7 @@ public: uiVenomousBiteTimer = 2*IN_MILLISECONDS; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp index cb073b1c569..833649b576d 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp @@ -282,7 +282,7 @@ class boss_blood_council_controller : public CreatureScript } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -477,7 +477,7 @@ class boss_prince_keleseth_icc : public CreatureScript Talk(SAY_KELESETH_KILL); } - void DoAction(int32 const action) + void DoAction(int32 action) { switch (action) { @@ -522,7 +522,7 @@ class boss_prince_keleseth_icc : public CreatureScript return true; } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim() || !CheckRoom()) return; @@ -695,7 +695,7 @@ class boss_prince_taldaram_icc : public CreatureScript Talk(SAY_TALDARAM_KILL); } - void DoAction(int32 const action) + void DoAction(int32 action) { switch (action) { @@ -740,7 +740,7 @@ class boss_prince_taldaram_icc : public CreatureScript return true; } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim() || !CheckRoom()) return; @@ -933,7 +933,7 @@ class boss_prince_valanar_icc : public CreatureScript Talk(SAY_VALANAR_KILL); } - void DoAction(int32 const action) + void DoAction(int32 action) { switch (action) { @@ -978,7 +978,7 @@ class boss_prince_valanar_icc : public CreatureScript return true; } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim() || !CheckRoom()) return; @@ -1090,7 +1090,7 @@ class npc_blood_queen_lana_thel : public CreatureScript me->SetVisible(false); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!_events.GetPhaseMask()) return; @@ -1168,7 +1168,7 @@ class npc_ball_of_flame : public CreatureScript _chaseGUID = guid; } - void DoAction(int32 const action) + void DoAction(int32 action) { if (action == ACTION_FLAME_BALL_CHASE) if (Player* target = ObjectAccessor::GetPlayer(*me, _chaseGUID)) @@ -1189,7 +1189,7 @@ class npc_ball_of_flame : public CreatureScript _instance->SetData(DATA_ORB_WHISPERER_ACHIEVEMENT, uint32(false)); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!_despawnTimer) return; @@ -1236,7 +1236,7 @@ class npc_kinetic_bomb : public CreatureScript _groundZ = me->GetMap()->GetHeight(me->GetPhaseMask(), _x, _y, _groundZ, true, 500.0f); } - void DoAction(int32 const action) + void DoAction(int32 action) { if (action == SPELL_KINETIC_BOMB_EXPLOSION) _events.ScheduleEvent(EVENT_BOMB_DESPAWN, 1000); @@ -1248,7 +1248,7 @@ class npc_kinetic_bomb : public CreatureScript } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { _events.Update(diff); @@ -1328,7 +1328,7 @@ class npc_dark_nucleus : public CreatureScript me->AddThreat(attacker, 500000000.0f); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp index ab0c44aa6d0..f4df90c49e8 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp @@ -45,11 +45,13 @@ enum Spells SPELL_SHROUD_OF_SORROW = 70986, SPELL_FRENZIED_BLOODTHIRST_VISUAL = 71949, SPELL_VAMPIRIC_BITE = 71726, + SPELL_VAMPIRIC_BITE_DUMMY = 71837, SPELL_ESSENCE_OF_THE_BLOOD_QUEEN_PLR = 70879, SPELL_ESSENCE_OF_THE_BLOOD_QUEEN_HEAL = 70872, SPELL_FRENZIED_BLOODTHIRST = 70877, SPELL_UNCONTROLLABLE_FRENZY = 70923, - SPELL_PRESENCE_OF_THE_DARKFALLEN = 71952, + SPELL_PRESENCE_OF_THE_DARKFALLEN = 70994, + SPELL_PRESENCE_OF_THE_DARKFALLEN_2 = 71952, SPELL_BLOOD_MIRROR_DAMAGE = 70821, SPELL_BLOOD_MIRROR_VISUAL = 71510, SPELL_BLOOD_MIRROR_DUMMY = 70838, @@ -88,6 +90,7 @@ uint32 const vampireAuras[3][MAX_DIFFICULTY] = #define ESSENCE_OF_BLOOD_QUEEN_PLR RAID_MODE<uint32>(70879, 71525, 71530, 71531) #define FRENZIED_BLOODTHIRST RAID_MODE<uint32>(70877, 71474, 70877, 71474) #define DELIRIOUS_SLASH RAID_MODE<uint32>(71623, 71624, 71625, 71626) +#define PRESENCE_OF_THE_DARKFALLEN RAID_MODE<uint32>(70994, 71962, 71963, 71964) enum Events { @@ -220,9 +223,10 @@ class boss_blood_queen_lana_thel : public CreatureScript instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_BLOOD_MIRROR_DUMMY); instance->DoRemoveAurasDueToSpellOnPlayers(DELIRIOUS_SLASH); instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_PACT_OF_THE_DARKFALLEN); + instance->DoRemoveAurasDueToSpellOnPlayers(PRESENCE_OF_THE_DARKFALLEN); } - void DoAction(int32 const action) + void DoAction(int32 action) { if (action != ACTION_KILL_MINCHAR) return; @@ -330,7 +334,7 @@ class boss_blood_queen_lana_thel : public CreatureScript } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim() || !CheckInRoom()) return; @@ -357,8 +361,11 @@ class boss_blood_queen_lana_thel : public CreatureScript { Unit* target = targets.front(); DoCast(target, SPELL_VAMPIRIC_BITE); + DoCastAOE(SPELL_VAMPIRIC_BITE_DUMMY, true); Talk(SAY_VAMPIRIC_BITE); _vampires.insert(target->GetGUID()); + target->CastSpell(target, SPELL_PRESENCE_OF_THE_DARKFALLEN, TRIGGERED_FULL_MASK); + target->CastSpell(target, SPELL_PRESENCE_OF_THE_DARKFALLEN_2, TRIGGERED_FULL_MASK); } break; } @@ -377,9 +384,10 @@ class boss_blood_queen_lana_thel : public CreatureScript _offtank->CastSpell(me->getVictim(), SPELL_BLOOD_MIRROR_DAMAGE, true); me->getVictim()->CastSpell(_offtank, SPELL_BLOOD_MIRROR_DUMMY, true); DoCastVictim(SPELL_BLOOD_MIRROR_VISUAL); - if (Item* shadowsEdge = _offtank->GetWeaponForAttack(BASE_ATTACK, true)) - if (!_offtank->HasAura(SPELL_THIRST_QUENCHED) && shadowsEdge->GetEntry() == ITEM_SHADOW_S_EDGE && !_offtank->HasAura(SPELL_GUSHING_WOUND)) - _offtank->CastSpell(_offtank, SPELL_GUSHING_WOUND, true); + if (Is25ManRaid() && _offtank->GetQuestStatus(QUEST_BLOOD_INFUSION) == QUEST_STATUS_INCOMPLETE && + _offtank->HasAura(SPELL_UNSATED_CRAVING) && !_offtank->HasAura(SPELL_THIRST_QUENCHED) && + !_offtank->HasAura(SPELL_GUSHING_WOUND)) + _offtank->CastSpell(_offtank, SPELL_GUSHING_WOUND, TRIGGERED_FULL_MASK); } } @@ -396,13 +404,7 @@ class boss_blood_queen_lana_thel : public CreatureScript { std::list<Player*> targets; SelectRandomTarget(false, &targets); - uint32 targetCount = 2; - // do not combine these checks! we want it incremented TWICE when both conditions are met - if (IsHeroic()) - ++targetCount; - if (Is25ManRaid()) - ++targetCount; - Trinity::Containers::RandomResizeList<Player*>(targets, targetCount); + Trinity::Containers::RandomResizeList(targets, Is25ManRaid() ? 3 : 2); if (targets.size() > 1) { Talk(SAY_PACT_OF_THE_DARKFALLEN); @@ -479,7 +481,7 @@ class boss_blood_queen_lana_thel : public CreatureScript for (std::list<HostileReference*>::const_iterator itr = threatlist.begin(); itr != threatlist.end(); ++itr) if (Unit* refTarget = (*itr)->getTarget()) - if (refTarget != me->getVictim() && refTarget->GetTypeId() == TYPEID_PLAYER && (includeOfftank ? true : (refTarget != _offtank))) + if (refTarget != me->getVictim() && refTarget->GetTypeId() == TYPEID_PLAYER && (includeOfftank || (refTarget != _offtank))) tempTargets.push_back(refTarget->ToPlayer()); if (tempTargets.empty()) @@ -554,33 +556,36 @@ class spell_blood_queen_vampiric_bite : public SpellScriptLoader uint32 spellId = sSpellMgr->GetSpellIdForDifficulty(SPELL_FRENZIED_BLOODTHIRST, GetCaster()); GetCaster()->RemoveAura(spellId, 0, 0, AURA_REMOVE_BY_ENEMY_SPELL); - GetCaster()->CastSpell(GetCaster(), SPELL_ESSENCE_OF_THE_BLOOD_QUEEN_PLR, true); - // Presence of the Darkfallen buff on Blood-Queen - if (GetCaster()->GetMap()->IsHeroic()) - GetCaster()->CastSpell(GetCaster(), SPELL_PRESENCE_OF_THE_DARKFALLEN, true); + GetCaster()->CastSpell(GetCaster(), SPELL_ESSENCE_OF_THE_BLOOD_QUEEN_PLR, TRIGGERED_FULL_MASK); + // Shadowmourne questline - if (GetCaster()->ToPlayer()->GetQuestStatus(QUEST_BLOOD_INFUSION) == QUEST_STATUS_INCOMPLETE) + if (Aura* aura = GetCaster()->GetAura(SPELL_GUSHING_WOUND)) { - if (Aura* aura = GetCaster()->GetAura(SPELL_GUSHING_WOUND)) + if (aura->GetStackAmount() == 3) { - if (aura->GetStackAmount() == 3) - { - GetCaster()->CastSpell(GetCaster(), SPELL_THIRST_QUENCHED, true); - GetCaster()->RemoveAura(aura); - } - else - GetCaster()->CastSpell(GetCaster(), SPELL_GUSHING_WOUND, true); + GetCaster()->CastSpell(GetCaster(), SPELL_THIRST_QUENCHED, TRIGGERED_FULL_MASK); + GetCaster()->RemoveAura(aura); } + else + GetCaster()->CastSpell(GetCaster(), SPELL_GUSHING_WOUND, TRIGGERED_FULL_MASK); } + if (InstanceScript* instance = GetCaster()->GetInstanceScript()) if (Creature* bloodQueen = ObjectAccessor::GetCreature(*GetCaster(), instance->GetData64(DATA_BLOOD_QUEEN_LANA_THEL))) bloodQueen->AI()->SetGUID(GetHitUnit()->GetGUID(), GUID_VAMPIRE); } + void HandlePresence(SpellEffIndex /*effIndex*/) + { + GetHitUnit()->CastSpell(GetHitUnit(), SPELL_PRESENCE_OF_THE_DARKFALLEN, TRIGGERED_FULL_MASK); + GetHitUnit()->CastSpell(GetHitUnit(), SPELL_PRESENCE_OF_THE_DARKFALLEN_2, TRIGGERED_FULL_MASK); + } + void Register() { OnCheckCast += SpellCheckCastFn(spell_blood_queen_vampiric_bite_SpellScript::CheckTarget); BeforeHit += SpellHitFn(spell_blood_queen_vampiric_bite_SpellScript::OnCast); + OnEffectHitTarget += SpellEffectFn(spell_blood_queen_vampiric_bite_SpellScript::HandlePresence, EFFECT_1, SPELL_EFFECT_TRIGGER_SPELL); } }; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp index d688205938a..fe135ea70a4 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp @@ -185,9 +185,7 @@ enum Phases { PHASE_INTRO_A = 1, PHASE_INTRO_H = 2, - PHASE_COMBAT = 3, - - PHASE_INTRO_MASK = (1 << PHASE_INTRO_A) | (1 << PHASE_INTRO_H), + PHASE_COMBAT = 3 }; enum Actions @@ -415,16 +413,16 @@ class boss_deathbringer_saurfang : public CreatureScript } } - void SpellHit(Unit* caster, SpellInfo const* spell) + void SpellHit(Unit* /*caster*/, SpellInfo const* spell) { if (spell->Id == SPELL_BLOOD_LINK_POWER) if (Aura* bloodPower = me->GetAura(SPELL_BLOOD_POWER)) bloodPower->RecalculateAmountOfEffects(); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { - if (!UpdateVictim() && !(events.GetPhaseMask() & PHASE_INTRO_MASK)) + if (!UpdateVictim() && !(events.IsInPhase(PHASE_INTRO_A) || events.IsInPhase(PHASE_INTRO_H))) return; events.Update(diff); @@ -514,7 +512,7 @@ class boss_deathbringer_saurfang : public CreatureScript } // intro setup - void DoAction(int32 const action) + void DoAction(int32 action) { switch (action) { @@ -605,14 +603,14 @@ class npc_high_overlord_saurfang_icc : public CreatureScript _events.Reset(); } - void DoAction(int32 const action) + void DoAction(int32 action) { switch (action) { case ACTION_START_EVENT: { // Prevent crashes - if (_events.GetPhaseMask() & PHASE_INTRO_MASK) + if (_events.IsInPhase(PHASE_INTRO_A) || _events.IsInPhase(PHASE_INTRO_H)) return; GetCreatureListWithEntryInGrid(_guardList, me, NPC_SE_KOR_KRON_REAVER, 20.0f); @@ -710,7 +708,7 @@ class npc_high_overlord_saurfang_icc : public CreatureScript } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { _events.Update(diff); while (uint32 eventId = _events.ExecuteEvent()) @@ -814,14 +812,14 @@ class npc_muradin_bronzebeard_icc : public CreatureScript _events.Reset(); } - void DoAction(int32 const action) + void DoAction(int32 action) { switch (action) { case ACTION_START_EVENT: { // Prevent crashes - if (_events.GetPhaseMask() & PHASE_INTRO_MASK) + if (_events.IsInPhase(PHASE_INTRO_A) || _events.IsInPhase(PHASE_INTRO_H)) return; _events.SetPhase(PHASE_INTRO_A); @@ -890,7 +888,7 @@ class npc_muradin_bronzebeard_icc : public CreatureScript } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { _events.Update(diff); while (uint32 eventId = _events.ExecuteEvent()) @@ -972,7 +970,7 @@ class npc_saurfang_event : public CreatureScript } } - void DoAction(int32 const action) + void DoAction(int32 action) { if (action == ACTION_CHARGE && _index) me->GetMotionMaster()->MoveCharge(chargePos[_index].GetPositionX(), chargePos[_index].GetPositionY(), chargePos[_index].GetPositionZ(), 13.0f, POINT_CHARGE); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp index 70cb585422d..4ec945fcb77 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp @@ -162,7 +162,7 @@ class boss_festergut : public CreatureScript target->RemoveAurasDueToSpell(INOCULATED_HELPER); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim() || !CheckInRoom()) return; @@ -298,7 +298,7 @@ class npc_stinky_icc : public CreatureScript DoCast(me, SPELL_PLAGUE_STENCH); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp index 4e677bf5b0e..59c9393c934 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp @@ -160,10 +160,7 @@ enum Phases PHASE_ALL = 0, PHASE_INTRO = 1, PHASE_ONE = 2, - PHASE_TWO = 3, - - PHASE_INTRO_MASK = 1 << PHASE_INTRO, - PHASE_ONE_MASK = 1 << PHASE_ONE, + PHASE_TWO = 3 }; enum DeprogrammingData @@ -259,7 +256,7 @@ class boss_lady_deathwhisper : public CreatureScript if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE)) return; - if (victim && me->Attack(victim, true) && !(events.GetPhaseMask() & PHASE_ONE_MASK)) + if (victim && me->Attack(victim, true) && !events.IsInPhase(PHASE_ONE)) me->GetMotionMaster()->MoveChase(victim); } @@ -358,7 +355,7 @@ class boss_lady_deathwhisper : public CreatureScript void DamageTaken(Unit* /*damageDealer*/, uint32& damage) { // phase transition - if (events.GetPhaseMask() & PHASE_ONE_MASK && damage > me->GetPower(POWER_MANA)) + if (events.IsInPhase(PHASE_ONE) && damage > me->GetPower(POWER_MANA)) { Talk(SAY_PHASE_2); Talk(EMOTE_PHASE_2); @@ -404,14 +401,14 @@ class boss_lady_deathwhisper : public CreatureScript summon->CastSpell(summon, SPELL_ADHERENT_S_DETERMINATION, true); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { - if ((!UpdateVictim() && !(events.GetPhaseMask() & PHASE_INTRO_MASK)) || !CheckInRoom()) + if ((!UpdateVictim() && !events.IsInPhase(PHASE_INTRO)) || !CheckInRoom()) return; events.Update(diff); - if (me->HasUnitState(UNIT_STATE_CASTING) && !(events.GetPhaseMask() & PHASE_INTRO_MASK)) + if (me->HasUnitState(UNIT_STATE_CASTING) && !events.IsInPhase(PHASE_INTRO)) return; while (uint32 eventId = events.ExecuteEvent()) @@ -659,7 +656,7 @@ class npc_cult_fanatic : public CreatureScript } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -737,7 +734,7 @@ class npc_cult_adherent : public CreatureScript } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -882,7 +879,7 @@ class npc_darnavan : public CreatureScript Talk(SAY_DARNAVAN_AGGRO); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp index 4763896cf72..7e72ad00a3c 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp @@ -20,8 +20,9 @@ #include "ScriptedCreature.h" #include "SpellAuras.h" #include "MapManager.h" -#include "icecrown_citadel.h" +#include "MoveSplineInit.h" #include "Player.h" +#include "icecrown_citadel.h" enum ScriptTexts { @@ -78,7 +79,46 @@ enum MovementPoints POINT_TARGET_COLDFLAME = 36672631, }; -#define DATA_COLDFLAME_GUID 0 +enum MiscInfo +{ + DATA_COLDFLAME_GUID = 0, + + // Manual marking for targets hit by Bone Slice as no aura exists for this purpose + // These units are the tanks in this encounter + // and should be immune to Bone Spike Graveyard + DATA_SPIKE_IMMUNE = 1, + //DATA_SPIKE_IMMUNE_1, = 2, // Reserved & used + //DATA_SPIKE_IMMUNE_2, = 3, // Reserved & used + + ACTION_CLEAR_SPIKE_IMMUNITIES = 1, + + MAX_BONE_SPIKE_IMMUNE = 3, +}; + +class BoneSpikeTargetSelector : public std::unary_function<Unit*, bool> +{ + public: + BoneSpikeTargetSelector(UnitAI* ai) : _ai(ai) { } + + bool operator()(Unit* unit) const + { + if (unit->GetTypeId() != TYPEID_PLAYER) + return false; + + if (unit->HasAura(SPELL_IMPALED)) + return false; + + // Check if it is one of the tanks soaking Bone Slice + for (uint32 i = 0; i < MAX_BONE_SPIKE_IMMUNE; ++i) + if (unit->GetGUID() == _ai->GetGUID(DATA_SPIKE_IMMUNE + i)) + return false; + + return true; + } + + private: + UnitAI* _ai; +}; class boss_lord_marrowgar : public CreatureScript { @@ -103,11 +143,12 @@ class boss_lord_marrowgar : public CreatureScript me->RemoveAurasDueToSpell(SPELL_BONE_STORM); me->RemoveAurasDueToSpell(SPELL_BERSERK); events.ScheduleEvent(EVENT_ENABLE_BONE_SLICE, 10000); - events.ScheduleEvent(EVENT_BONE_SPIKE_GRAVEYARD, urand(10000, 15000), EVENT_GROUP_SPECIAL); + events.ScheduleEvent(EVENT_BONE_SPIKE_GRAVEYARD, 15000, EVENT_GROUP_SPECIAL); events.ScheduleEvent(EVENT_COLDFLAME, 5000, EVENT_GROUP_SPECIAL); events.ScheduleEvent(EVENT_WARN_BONE_STORM, urand(45000, 50000)); events.ScheduleEvent(EVENT_ENRAGE, 600000); _boneSlice = false; + _boneSpikeImmune.clear(); } void EnterCombat(Unit* /*who*/) @@ -148,7 +189,7 @@ class boss_lord_marrowgar : public CreatureScript } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim() || !CheckInRoom()) return; @@ -199,18 +240,18 @@ class boss_lord_marrowgar : public CreatureScript if (!unit) unit = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true); if (unit) - me->GetMotionMaster()->MovePoint(POINT_TARGET_BONESTORM_PLAYER, unit->GetPositionX(), unit->GetPositionY(), unit->GetPositionZ()); + me->GetMotionMaster()->MovePoint(POINT_TARGET_BONESTORM_PLAYER, *unit); break; } case EVENT_BONE_STORM_END: if (me->GetMotionMaster()->GetCurrentMovementGeneratorType() == POINT_MOTION_TYPE) me->GetMotionMaster()->MovementExpired(); - DoStartMovement(me->getVictim()); + me->GetMotionMaster()->MoveChase(me->getVictim()); me->SetSpeed(MOVE_RUN, _baseSpeed, true); events.CancelEvent(EVENT_BONE_STORM_MOVE); events.ScheduleEvent(EVENT_ENABLE_BONE_SLICE, 10000); if (!IsHeroic()) - events.RescheduleEvent(EVENT_BONE_SPIKE_GRAVEYARD, urand(15000, 20000), EVENT_GROUP_SPECIAL); + events.RescheduleEvent(EVENT_BONE_SPIKE_GRAVEYARD, 15000, EVENT_GROUP_SPECIAL); break; case EVENT_ENABLE_BONE_SLICE: _boneSlice = true; @@ -239,7 +280,7 @@ class boss_lord_marrowgar : public CreatureScript return; // lock movement - DoStartNoMovement(me->getVictim()); + me->GetMotionMaster()->MoveIdle(); } Position const* GetLastColdflamePosition() const @@ -247,23 +288,51 @@ class boss_lord_marrowgar : public CreatureScript return &_coldflameLastPos; } - uint64 GetGUID(int32 type/* = 0 */) const + uint64 GetGUID(int32 type /*= 0 */) const { - if (type == DATA_COLDFLAME_GUID) - return _coldflameTarget; + switch (type) + { + case DATA_COLDFLAME_GUID: + return _coldflameTarget; + case DATA_SPIKE_IMMUNE + 0: + case DATA_SPIKE_IMMUNE + 1: + case DATA_SPIKE_IMMUNE + 2: + { + uint32 index = uint32(type - DATA_SPIKE_IMMUNE); + if (index < _boneSpikeImmune.size()) + return _boneSpikeImmune[index]; + + break; + } + } + return 0LL; } - void SetGUID(uint64 guid, int32 type/* = 0 */) + void SetGUID(uint64 guid, int32 type /*= 0 */) + { + switch (type) + { + case DATA_COLDFLAME_GUID: + _coldflameTarget = guid; + break; + case DATA_SPIKE_IMMUNE: + _boneSpikeImmune.push_back(guid); + break; + } + } + + void DoAction(int32 action) { - if (type != DATA_COLDFLAME_GUID) + if (action != ACTION_CLEAR_SPIKE_IMMUNITIES) return; - _coldflameTarget = guid; + _boneSpikeImmune.clear(); } private: Position _coldflameLastPos; + std::vector<uint64> _boneSpikeImmune; uint64 _coldflameTarget; uint32 _boneStormDuration; float _baseSpeed; @@ -295,19 +364,17 @@ class npc_coldflame : public CreatureScript if (owner->GetTypeId() != TYPEID_UNIT) return; - Creature* creOwner = owner->ToCreature(); Position pos; - // random target case + if (MarrowgarAI* marrowgarAI = CAST_AI(MarrowgarAI, owner->GetAI())) + pos.Relocate(marrowgarAI->GetLastColdflamePosition()); + else + pos.Relocate(owner); + if (owner->HasAura(SPELL_BONE_STORM)) { - if (MarrowgarAI* marrowgarAI = CAST_AI(MarrowgarAI, creOwner->AI())) - { - Position const* ownerPos = marrowgarAI->GetLastColdflamePosition(); - float ang = me->GetAngle(ownerPos) - static_cast<float>(M_PI); - MapManager::NormalizeOrientation(ang); - me->SetOrientation(ang); - owner->GetNearPosition(pos, 2.5f, 0.0f); - } + float ang = MapManager::NormalizeOrientation(pos.GetAngle(me)); + me->SetOrientation(ang); + owner->GetNearPoint2D(pos.m_positionX, pos.m_positionY, 5.0f - owner->GetObjectSize(), ang); } else { @@ -318,25 +385,27 @@ class npc_coldflame : public CreatureScript return; } - me->SetOrientation(owner->GetAngle(target)); - owner->GetNearPosition(pos, owner->GetObjectSize() / 2.0f, 0.0f); + float ang = MapManager::NormalizeOrientation(pos.GetAngle(target)); + me->SetOrientation(ang); + owner->GetNearPoint2D(pos.m_positionX, pos.m_positionY, 15.0f - owner->GetObjectSize(), ang); } me->NearTeleportTo(pos.GetPositionX(), pos.GetPositionY(), me->GetPositionZ(), me->GetOrientation()); - _events.ScheduleEvent(EVENT_COLDFLAME_TRIGGER, 450); + DoCast(SPELL_COLDFLAME_SUMMON); + _events.ScheduleEvent(EVENT_COLDFLAME_TRIGGER, 500); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { _events.Update(diff); if (_events.ExecuteEvent() == EVENT_COLDFLAME_TRIGGER) { Position newPos; - me->GetNearPosition(newPos, 5.5f, 0.0f); + me->GetNearPosition(newPos, 5.0f, 0.0f); me->NearTeleportTo(newPos.GetPositionX(), newPos.GetPositionY(), me->GetPositionZ(), me->GetOrientation()); DoCast(SPELL_COLDFLAME_SUMMON); - _events.ScheduleEvent(EVENT_COLDFLAME_TRIGGER, 450); + _events.ScheduleEvent(EVENT_COLDFLAME_TRIGGER, 500); } } @@ -355,11 +424,13 @@ class npc_bone_spike : public CreatureScript public: npc_bone_spike() : CreatureScript("npc_bone_spike") { } - struct npc_bone_spikeAI : public Scripted_NoMovementAI + struct npc_bone_spikeAI : public ScriptedAI { - npc_bone_spikeAI(Creature* creature) : Scripted_NoMovementAI(creature), _hasTrappedUnit(false) + npc_bone_spikeAI(Creature* creature) : ScriptedAI(creature), _hasTrappedUnit(false) { ASSERT(creature->GetVehicleKit()); + + SetCombatMovement(false); } void JustDied(Unit* /*killer*/) @@ -385,7 +456,25 @@ class npc_bone_spike : public CreatureScript _hasTrappedUnit = true; } - void UpdateAI(uint32 const diff) + void PassengerBoarded(Unit* passenger, int8 /*seat*/, bool apply) + { + if (!apply) + return; + + /// @HACK - Change passenger offset to the one taken directly from sniffs + /// Remove this when proper calculations are implemented. + /// This fixes healing spiked people + Movement::MoveSplineInit init(passenger); + init.DisableTransportPathTransformations(); + init.MoveTo(-0.02206125f, -0.02132235f, 5.514783f, false); + init.Launch(); + + /// @WORKAROUND - Clear ON VEHICLE state to allow healing (Invalid target errors) + /// Current rule for applying this state is questionable (seatFlags & VEHICLE_SEAT_FLAG_ALLOW_TURNING ???) + passenger->ClearUnitState(UNIT_STATE_ONVEHICLE); + } + + void UpdateAI(uint32 diff) { if (!_hasTrappedUnit) return; @@ -487,16 +576,24 @@ class spell_marrowgar_coldflame_damage : public SpellScriptLoader { PrepareAuraScript(spell_marrowgar_coldflame_damage_AuraScript); - void OnPeriodic(AuraEffect const* /*aurEff*/) + bool CanBeAppliedOn(Unit* target) { - if (DynamicObject* owner = GetDynobjOwner()) - if (GetTarget()->GetExactDist2d(owner) >= owner->GetRadius() || GetTarget()->HasAura(SPELL_IMPALED)) - PreventDefaultAction(); + if (target->HasAura(SPELL_IMPALED)) + return false; + + if (target->GetExactDist2d(GetOwner()) > GetSpellInfo()->Effects[EFFECT_0].CalcRadius()) + return false; + + if (Aura* aur = target->GetAura(GetId())) + if (aur->GetOwner() != GetOwner()) + return false; + + return true; } void Register() { - OnEffectPeriodic += AuraEffectPeriodicFn(spell_marrowgar_coldflame_damage_AuraScript::OnPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE); + DoCheckAreaTarget += AuraCheckAreaTargetFn(spell_marrowgar_coldflame_damage_AuraScript::CanBeAppliedOn); } }; @@ -531,7 +628,7 @@ class spell_marrowgar_bone_spike_graveyard : public SpellScriptLoader SpellCastResult CheckCast() { - return GetCaster()->GetAI()->SelectTarget(SELECT_TARGET_TOPAGGRO, 1, 0.0f, true, -SPELL_IMPALED) ? SPELL_CAST_OK : SPELL_FAILED_NO_VALID_TARGETS; + return GetCaster()->GetAI()->SelectTarget(SELECT_TARGET_RANDOM, 0, BoneSpikeTargetSelector(GetCaster()->GetAI())) ? SPELL_CAST_OK : SPELL_FAILED_NO_VALID_TARGETS; } void HandleSpikes(SpellEffIndex effIndex) @@ -539,22 +636,22 @@ class spell_marrowgar_bone_spike_graveyard : public SpellScriptLoader PreventHitDefaultEffect(effIndex); if (Creature* marrowgar = GetCaster()->ToCreature()) { - bool didHit = false; CreatureAI* marrowgarAI = marrowgar->AI(); uint8 boneSpikeCount = uint8(GetCaster()->GetMap()->GetSpawnMode() & 1 ? 3 : 1); - for (uint8 i = 0; i < boneSpikeCount; ++i) - { - // select any unit but not the tank - Unit* target = marrowgarAI->SelectTarget(SELECT_TARGET_RANDOM, 1, 150.0f, true, -SPELL_IMPALED); - if (!target) - break; - didHit = true; + std::list<Unit*> targets; + marrowgarAI->SelectTargetList(targets, BoneSpikeTargetSelector(marrowgarAI), boneSpikeCount, SELECT_TARGET_RANDOM); + if (targets.empty()) + return; + + uint32 i = 0; + for (std::list<Unit*>::const_iterator itr = targets.begin(); itr != targets.end(); ++itr, ++i) + { + Unit* target = *itr; target->CastCustomSpell(BoneSpikeSummonId[i], SPELLVALUE_BASE_POINT0, 0, target, true); } - if (didHit) - marrowgarAI->Talk(SAY_BONESPIKE); + marrowgarAI->Talk(SAY_BONESPIKE); } } @@ -597,6 +694,58 @@ class spell_marrowgar_bone_storm : public SpellScriptLoader } }; +class spell_marrowgar_bone_slice : public SpellScriptLoader +{ + public: + spell_marrowgar_bone_slice() : SpellScriptLoader("spell_marrowgar_bone_slice") { } + + class spell_marrowgar_bone_slice_SpellScript : public SpellScript + { + PrepareSpellScript(spell_marrowgar_bone_slice_SpellScript); + + bool Load() + { + _targetCount = 0; + return true; + } + + void ClearSpikeImmunities() + { + GetCaster()->GetAI()->DoAction(ACTION_CLEAR_SPIKE_IMMUNITIES); + } + + void CountTargets(std::list<WorldObject*>& targets) + { + _targetCount = std::min<uint32>(targets.size(), GetSpellInfo()->MaxAffectedTargets); + } + + void SplitDamage() + { + // Mark the unit as hit, even if the spell missed or was dodged/parried + GetCaster()->GetAI()->SetGUID(GetHitUnit()->GetGUID(), DATA_SPIKE_IMMUNE); + + if (!_targetCount) + return; // This spell can miss all targets + + SetHitDamage(GetHitDamage() / _targetCount); + } + + void Register() + { + BeforeCast += SpellCastFn(spell_marrowgar_bone_slice_SpellScript::ClearSpikeImmunities); + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_marrowgar_bone_slice_SpellScript::CountTargets, EFFECT_0, TARGET_UNIT_DEST_AREA_ENEMY); + OnHit += SpellHitFn(spell_marrowgar_bone_slice_SpellScript::SplitDamage); + } + + uint32 _targetCount; + }; + + SpellScript* GetSpellScript() const + { + return new spell_marrowgar_bone_slice_SpellScript(); + } +}; + void AddSC_boss_lord_marrowgar() { new boss_lord_marrowgar(); @@ -607,4 +756,5 @@ void AddSC_boss_lord_marrowgar() new spell_marrowgar_coldflame_damage(); new spell_marrowgar_bone_spike_graveyard(); new spell_marrowgar_bone_storm(); + new spell_marrowgar_bone_slice(); } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp index 05bf7b9794a..e377f5f8d07 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp @@ -145,10 +145,7 @@ enum Phases PHASE_ROTFACE = 2, PHASE_COMBAT_1 = 4, PHASE_COMBAT_2 = 5, - PHASE_COMBAT_3 = 6, - - PHASE_MASK_COMBAT = (1 << PHASE_COMBAT_1) | (1 << PHASE_COMBAT_2) | (1 << PHASE_COMBAT_3), - PHASE_MASK_NOT_SELF = (1 << PHASE_FESTERGUT) | (1 << PHASE_ROTFACE) + PHASE_COMBAT_3 = 6 }; enum Points @@ -233,7 +230,7 @@ class boss_professor_putricide : public CreatureScript void Reset() { - if (!(events.GetPhaseMask() & PHASE_MASK_NOT_SELF)) + if (!(events.IsInPhase(PHASE_ROTFACE) || events.IsInPhase(PHASE_FESTERGUT))) instance->SetBossState(DATA_PROFESSOR_PUTRICIDE, NOT_STARTED); instance->SetData(DATA_NAUSEA_ACHIEVEMENT, uint32(true)); @@ -252,7 +249,7 @@ class boss_professor_putricide : public CreatureScript void EnterCombat(Unit* who) { - if (events.GetPhaseMask() & PHASE_MASK_NOT_SELF) + if (events.IsInPhase(PHASE_ROTFACE) || events.IsInPhase(PHASE_FESTERGUT)) return; if (!instance->CheckRequiredBosses(DATA_PROFESSOR_PUTRICIDE, who->ToPlayer())) @@ -282,7 +279,7 @@ class boss_professor_putricide : public CreatureScript { _JustReachedHome(); me->SetWalk(false); - if (events.GetPhaseMask() & PHASE_MASK_COMBAT) + if (events.IsInPhase(PHASE_COMBAT_1) || events.IsInPhase(PHASE_COMBAT_2) || events.IsInPhase(PHASE_COMBAT_3)) instance->SetBossState(DATA_PROFESSOR_PUTRICIDE, FAIL); } @@ -416,7 +413,7 @@ class boss_professor_putricide : public CreatureScript } } - void DoAction(int32 const action) + void DoAction(int32 action) { switch (action) { @@ -566,9 +563,9 @@ class boss_professor_putricide : public CreatureScript _experimentState = bool(data); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { - if ((!(events.GetPhaseMask() & PHASE_MASK_NOT_SELF) && !UpdateVictim()) || !CheckInRoom()) + if ((!(events.IsInPhase(PHASE_ROTFACE) || events.IsInPhase(PHASE_FESTERGUT)) && !UpdateVictim()) || !CheckInRoom()) return; events.Update(diff); @@ -745,7 +742,7 @@ class npc_putricide_oozeAI : public ScriptedAI _newTargetSelectTimer = 1000; } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim() && !_newTargetSelectTimer) return; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp index db5f373a753..f398ad55603 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp @@ -162,7 +162,7 @@ class boss_rotface : public CreatureScript // don't enter combat } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim() || !CheckInRoom()) return; @@ -239,7 +239,7 @@ class npc_little_ooze : public CreatureScript me->DespawnOrUnsummon(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -296,13 +296,13 @@ class npc_big_ooze : public CreatureScript me->DespawnOrUnsummon(); } - void DoAction(const int32 action) + void DoAction(int32 action) { if (action == EVENT_STICKY_OOZE) events.CancelEvent(EVENT_STICKY_OOZE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -377,7 +377,7 @@ class npc_precious_icc : public CreatureScript rotface->AI()->Talk(SAY_PRECIOUS_DIES); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp index 45c5302bfe8..ea74d8ec61c 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp @@ -84,7 +84,9 @@ enum Spells SPELL_CONCUSSIVE_SHOCK = 71337, // Frost Infusion - SPELL_FROST_INFUSION_CREDIT = 72289 + SPELL_FROST_INFUSION_CREDIT = 72289, + SPELL_FROST_IMBUED_BLADE = 72290, + SPELL_FROST_INFUSION = 72292, }; enum Events @@ -147,11 +149,7 @@ enum MovementPoints enum Shadowmourne { - QUEST_FROST_INFUSION = 24757, - ITEM_SHADOW_S_EDGE = 49888, - - SPELL_FROST_INFUSION = 72292, - SPELL_FROST_IMBUED_BLADE = 72290, + QUEST_FROST_INFUSION = 24757 }; Position const RimefangFlyPos = {4413.309f, 2456.421f, 233.3795f, 2.890186f}; @@ -271,7 +269,7 @@ class boss_sindragosa : public CreatureScript Talk(SAY_KILL); } - void DoAction(int32 const action) + void DoAction(int32 action) { if (action == ACTION_START_FROSTWYRM) { @@ -390,50 +388,13 @@ class boss_sindragosa : public CreatureScript void SpellHitTarget(Unit* target, SpellInfo const* spell) { if (uint32 spellId = sSpellMgr->GetSpellIdForDifficulty(70127, me)) - { if (spellId == spell->Id) - { if (Aura const* mysticBuffet = target->GetAura(spell->Id)) _mysticBuffetStack = std::max<uint8>(_mysticBuffetStack, mysticBuffet->GetStackAmount()); - return; - } - } - - // Frost Infusion - if (Player* player = target->ToPlayer()) - { - if (uint32 spellId = sSpellMgr->GetSpellIdForDifficulty(_isThirdPhase ? SPELL_FROST_BREATH_P2 : SPELL_FROST_BREATH_P1, me)) - { - if (spellId == spell->Id) - { - Item* shadowsEdge = player->GetWeaponForAttack(BASE_ATTACK, true); - if (player->GetQuestStatus(QUEST_FROST_INFUSION) == QUEST_STATUS_INCOMPLETE && shadowsEdge) - { - if (!player->HasAura(SPELL_FROST_IMBUED_BLADE) && shadowsEdge->GetEntry() == ITEM_SHADOW_S_EDGE) - { - if (Aura* infusion = player->GetAura(SPELL_FROST_INFUSION)) - { - if (infusion->GetStackAmount() == 3) - { - player->CastSpell(player, SPELL_FROST_IMBUED_BLADE, true); - player->RemoveAura(infusion); - } - else - player->CastSpell(player, SPELL_FROST_INFUSION, true); - } - else - player->CastSpell(player, SPELL_FROST_INFUSION, true); - } - } - - return; - } - } - } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim() || !CheckInRoom()) return; @@ -576,11 +537,12 @@ class npc_ice_tomb : public CreatureScript public: npc_ice_tomb() : CreatureScript("npc_ice_tomb") { } - struct npc_ice_tombAI : public Scripted_NoMovementAI + struct npc_ice_tombAI : public ScriptedAI { - npc_ice_tombAI(Creature* creature) : Scripted_NoMovementAI(creature) + npc_ice_tombAI(Creature* creature) : ScriptedAI(creature) { _trappedPlayerGUID = 0; + SetCombatMovement(false); } void Reset() @@ -597,7 +559,7 @@ class npc_ice_tomb : public CreatureScript } } - void DoAction(int32 const action) + void DoAction(int32 action) { if (action == ACTION_TRIGGER_ASPHYXIATION) if (Player* player = ObjectAccessor::GetPlayer(*me, _trappedPlayerGUID)) @@ -616,7 +578,7 @@ class npc_ice_tomb : public CreatureScript } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!_trappedPlayerGUID) return; @@ -695,7 +657,7 @@ class npc_spinestalker : public CreatureScript _events.Reset(); } - void DoAction(int32 const action) + void DoAction(int32 action) { if (action == ACTION_START_FROSTWYRM) { @@ -732,7 +694,7 @@ class npc_spinestalker : public CreatureScript me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -825,7 +787,7 @@ class npc_rimefang : public CreatureScript _events.Reset(); } - void DoAction(int32 const action) + void DoAction(int32 action) { if (action == ACTION_START_FROSTWYRM) { @@ -867,7 +829,7 @@ class npc_rimefang : public CreatureScript DoCast(me, SPELL_FROST_AURA_RIMEFANG, true); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -995,7 +957,7 @@ class npc_sindragosa_trash : public CreatureScript return 0; } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -1154,6 +1116,50 @@ class spell_sindragosa_unchained_magic : public SpellScriptLoader } }; +class spell_sindragosa_frost_breath : public SpellScriptLoader +{ + public: + spell_sindragosa_frost_breath() : SpellScriptLoader("spell_sindragosa_frost_breath") { } + + class spell_sindragosa_frost_breath_SpellScript : public SpellScript + { + PrepareSpellScript(spell_sindragosa_frost_breath_SpellScript); + + void HandleInfusion() + { + Player* target = GetHitPlayer(); + if (!target) + return; + + if (target->GetQuestStatus(QUEST_FROST_INFUSION) != QUEST_STATUS_INCOMPLETE) + return; + + // Check if player has Shadow's Edge equipped and not ready for infusion + if (!target->HasAura(SPELL_UNSATED_CRAVING) || target->HasAura(SPELL_FROST_IMBUED_BLADE)) + return; + + Aura* infusion = target->GetAura(SPELL_FROST_INFUSION, target->GetGUID()); + if (infusion && infusion->GetStackAmount() >= 3) + { + target->RemoveAura(infusion); + target->CastSpell(target, SPELL_FROST_IMBUED_BLADE, TRIGGERED_FULL_MASK); + } + else + target->CastSpell(target, SPELL_FROST_INFUSION, TRIGGERED_FULL_MASK); + } + + void Register() + { + AfterHit += SpellHitFn(spell_sindragosa_frost_breath_SpellScript::HandleInfusion); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_sindragosa_frost_breath_SpellScript(); + } +}; + class spell_sindragosa_instability : public SpellScriptLoader { public: @@ -1576,6 +1582,7 @@ void AddSC_boss_sindragosa() new npc_sindragosa_trash(); new spell_sindragosa_s_fury(); new spell_sindragosa_unchained_magic(); + new spell_sindragosa_frost_breath(); new spell_sindragosa_instability(); new spell_sindragosa_frost_beacon(); new spell_sindragosa_ice_tomb(); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp index 3bd313fa148..e314667d48a 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp @@ -279,20 +279,10 @@ enum Phases PHASE_THREE = 4, PHASE_TRANSITION = 5, PHASE_FROSTMOURNE = 6, // only set on heroic mode when all players are sent into frostmourne - PHASE_OUTRO = 7, - - PHASE_MASK_INTRO = 1 << PHASE_INTRO, - PHASE_MASK_ONE = 1 << PHASE_ONE, - PHASE_MASK_TWO = 1 << PHASE_TWO, - PHASE_MASK_THREE = 1 << PHASE_THREE, - PHASE_MASK_TRANSITION = 1 << PHASE_TRANSITION, - PHASE_MASK_NO_CAST_CHECK = (1 << PHASE_TRANSITION) | (1 << PHASE_FROSTMOURNE) | (1 << PHASE_OUTRO), - PHASE_MASK_FROSTMOURNE = 1 << PHASE_FROSTMOURNE, - PHASE_MASK_OUTRO = 1 << PHASE_OUTRO, - PHASE_MASK_NO_VICTIM = (1 << PHASE_INTRO) | (1 << PHASE_OUTRO) | (1 << PHASE_FROSTMOURNE), + PHASE_OUTRO = 7 }; -#define PHASE_TWO_THREE (events.GetPhaseMask() & PHASE_MASK_TWO ? PHASE_TWO : PHASE_THREE) +#define PHASE_TWO_THREE (events.IsInPhase(PHASE_TWO) ? PHASE_TWO : PHASE_THREE) Position const CenterPosition = {503.6282f, -2124.655f, 840.8569f, 0.0f}; Position const TirionIntro = {489.2970f, -2124.840f, 840.8569f, 0.0f}; @@ -589,11 +579,11 @@ class boss_the_lich_king : public CreatureScript void KilledUnit(Unit* victim) { - if (victim->GetTypeId() == TYPEID_PLAYER && !me->IsInEvadeMode() && !(events.GetPhaseMask() & PHASE_MASK_OUTRO)) + if (victim->GetTypeId() == TYPEID_PLAYER && !me->IsInEvadeMode() && !events.IsInPhase(PHASE_OUTRO)) Talk(SAY_LK_KILL); } - void DoAction(int32 const action) + void DoAction(int32 action) { switch (action) { @@ -669,7 +659,7 @@ class boss_the_lich_king : public CreatureScript void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/) { - if (events.GetPhaseMask() & PHASE_MASK_ONE && !HealthAbovePct(70)) + if (events.IsInPhase(PHASE_ONE) && !HealthAbovePct(70)) { events.SetPhase(PHASE_TRANSITION); me->SetReactState(REACT_PASSIVE); @@ -678,7 +668,7 @@ class boss_the_lich_king : public CreatureScript return; } - if (events.GetPhaseMask() & PHASE_MASK_TWO && !HealthAbovePct(40)) + if (events.IsInPhase(PHASE_TWO) && !HealthAbovePct(40)) { events.SetPhase(PHASE_TRANSITION); me->SetReactState(REACT_PASSIVE); @@ -687,7 +677,7 @@ class boss_the_lich_king : public CreatureScript return; } - if (events.GetPhaseMask() & PHASE_MASK_THREE && !HealthAbovePct(10)) + if (events.IsInPhase(PHASE_THREE) && !HealthAbovePct(10)) { me->SetReactState(REACT_PASSIVE); me->AttackStop(); @@ -758,7 +748,7 @@ class boss_the_lich_king : public CreatureScript summon->SetReactState(REACT_PASSIVE); summon->SetSpeed(MOVE_FLIGHT, 0.5f); summon->GetMotionMaster()->MoveRandom(10.0f); - if (!(events.GetPhaseMask() & PHASE_MASK_FROSTMOURNE)) + if (!events.IsInPhase(PHASE_FROSTMOURNE)) summon->m_Events.AddEvent(new VileSpiritActivateEvent(summon), summon->m_Events.CalculateTime(15000)); return; } @@ -870,17 +860,17 @@ class boss_the_lich_king : public CreatureScript } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { // check phase first to prevent updating victim and entering evade mode when not wanted - if (!(events.GetPhaseMask() & PHASE_MASK_NO_VICTIM)) + if (!(events.IsInPhase(PHASE_OUTRO) || events.IsInPhase(PHASE_INTRO) || events.IsInPhase(PHASE_FROSTMOURNE))) if (!UpdateVictim()) return; events.Update(diff); // during Remorseless Winter phases The Lich King is channeling a spell, but we must continue casting other spells - if (me->HasUnitState(UNIT_STATE_CASTING) && !(events.GetPhaseMask() & PHASE_MASK_NO_CAST_CHECK)) + if (me->HasUnitState(UNIT_STATE_CASTING) && !(events.IsInPhase(PHASE_TRANSITION) || events.IsInPhase(PHASE_OUTRO) || events.IsInPhase(PHASE_FROSTMOURNE))) return; while (uint32 eventId = events.ExecuteEvent()) @@ -936,7 +926,7 @@ class boss_the_lich_king : public CreatureScript break; case EVENT_INFEST: DoCast(me, SPELL_INFEST); - events.ScheduleEvent(EVENT_INFEST, urand(21000, 24000), 0, (events.GetPhaseMask() & PHASE_MASK_ONE) ? PHASE_ONE : PHASE_TWO); + events.ScheduleEvent(EVENT_INFEST, urand(21000, 24000), 0, events.IsInPhase(PHASE_ONE) ? PHASE_ONE : PHASE_TWO); break; case EVENT_NECROTIC_PLAGUE: if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, NecroticPlagueTargetCheck(me, NECROTIC_PLAGUE_LK, NECROTIC_PLAGUE_PLR))) @@ -1005,7 +995,7 @@ class boss_the_lich_king : public CreatureScript break; case EVENT_START_ATTACK: me->SetReactState(REACT_AGGRESSIVE); - if (events.GetPhaseMask() & PHASE_MASK_FROSTMOURNE) + if (events.IsInPhase(PHASE_FROSTMOURNE)) events.SetPhase(PHASE_THREE); break; case EVENT_VILE_SPIRITS: @@ -1204,7 +1194,7 @@ class npc_tirion_fordring_tft : public CreatureScript } } - void DoAction(int32 const action) + void DoAction(int32 action) { switch (action) { @@ -1251,9 +1241,9 @@ class npc_tirion_fordring_tft : public CreatureScript me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { - if (!UpdateVictim() && !(_events.GetPhaseMask() & (PHASE_MASK_INTRO | PHASE_MASK_OUTRO))) + if (!UpdateVictim() && !(_events.IsInPhase(PHASE_OUTRO) || _events.IsInPhase(PHASE_INTRO))) return; _events.Update(diff); @@ -1345,7 +1335,7 @@ class npc_shambling_horror_icc : public CreatureScript } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -1425,7 +1415,7 @@ class npc_raging_spirit : public CreatureScript summon->SetTempSummonType(TEMPSUMMON_CORPSE_DESPAWN); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -1560,7 +1550,7 @@ class npc_valkyr_shadowguard : public CreatureScript _grabbedPlayer = guid; } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -1635,7 +1625,7 @@ class npc_strangulate_vehicle : public CreatureScript lichKing->AI()->JustSummoned(me); } - void DoAction(int32 const action) + void DoAction(int32 action) { if (action != ACTION_TELEPORT_BACK) return; @@ -1653,7 +1643,7 @@ class npc_strangulate_vehicle : public CreatureScript lichKing->AI()->SummonedCreatureDespawn(me); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { UpdateVictim(); @@ -1734,7 +1724,7 @@ class npc_terenas_menethil : public CreatureScript return target->GetEntry() != NPC_THE_LICH_KING; } - void DoAction(int32 const action) + void DoAction(int32 action) { switch (action) { @@ -1803,7 +1793,7 @@ class npc_terenas_menethil : public CreatureScript _events.ScheduleEvent(EVENT_OUTRO_TERENAS_TALK_2, 14000, 0, PHASE_OUTRO); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { UpdateVictim(); @@ -1895,7 +1885,7 @@ class npc_spirit_warden : public CreatureScript terenas->AI()->DoAction(ACTION_TELEPORT_BACK); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -1963,7 +1953,7 @@ class npc_spirit_bomb : public CreatureScript { } - void UpdateAI(uint32 const /*diff*/) + void UpdateAI(uint32 /*diff*/) { UpdateVictim(); // no melee attacks @@ -1998,7 +1988,7 @@ class npc_broken_frostmourne : public CreatureScript _events.ScheduleEvent(EVENT_OUTRO_KNOCK_BACK, 3000, 0, PHASE_OUTRO); } - void DoAction(int32 const action) + void DoAction(int32 action) { if (action == ACTION_SUMMON_TERENAS) _events.ScheduleEvent(EVENT_OUTRO_SUMMON_TERENAS, 6000, 0, PHASE_OUTRO); @@ -2008,7 +1998,7 @@ class npc_broken_frostmourne : public CreatureScript { } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { UpdateVictim(); @@ -2188,7 +2178,8 @@ class spell_the_lich_king_necrotic_plague_jump : public SpellScriptLoader void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { if (Unit* caster = GetCaster()) - caster->GetAI()->SetData(DATA_PLAGUE_STACK, GetStackAmount()); + if (caster->GetAI()) + caster->GetAI()->SetData(DATA_PLAGUE_STACK, GetStackAmount()); } void OnRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) @@ -2847,8 +2838,6 @@ class spell_the_lich_king_vile_spirit_damage_target_search : public SpellScriptL { OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_the_lich_king_vile_spirit_damage_target_search_SpellScript::CheckTargetCount, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY); } - - Unit* _target; }; SpellScript* GetSpellScript() const diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp index df23abd8312..97a70f43c27 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp @@ -316,7 +316,7 @@ class boss_valithria_dreamwalker : public CreatureScript { } - void DoAction(int32 const action) + void DoAction(int32 action) { if (action != ACTION_ENTER_COMBAT) return; @@ -423,7 +423,7 @@ class boss_valithria_dreamwalker : public CreatureScript ++_missedPortals; } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { // does not enter combat if (_instance->GetBossState(DATA_VALITHRIA_DREAMWALKER) != IN_PROGRESS) @@ -536,7 +536,7 @@ class npc_green_dragon_combat_trigger : public CreatureScript DoAction(ACTION_DEATH); } - void DoAction(int32 const action) + void DoAction(int32 action) { if (action == ACTION_DEATH) { @@ -545,7 +545,7 @@ class npc_green_dragon_combat_trigger : public CreatureScript } } - void UpdateAI(uint32 const /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (!me->isInCombat()) return; @@ -624,7 +624,7 @@ class npc_the_lich_king_controller : public CreatureScript summon->AI()->AttackStart(target); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -716,7 +716,7 @@ class npc_risen_archmage : public CreatureScript } } - void DoAction(int32 const action) + void DoAction(int32 action) { if (action != ACTION_ENTER_COMBAT) return; @@ -734,7 +734,7 @@ class npc_risen_archmage : public CreatureScript summon->DespawnOrUnsummon(36000); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!me->isInCombat()) if (me->GetDBTableGUIDLow()) @@ -805,7 +805,7 @@ class npc_blazing_skeleton : public CreatureScript _events.ScheduleEvent(EVENT_LEY_WASTE, urand(15000, 20000)); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -871,7 +871,7 @@ class npc_suppresser : public CreatureScript AttackStart(valithria); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -928,7 +928,7 @@ class npc_blistering_zombie : public CreatureScript DoCast(me, SPELL_ACID_BURST, true); } - void UpdateAI(uint32 const /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (!UpdateVictim()) return; @@ -965,7 +965,7 @@ class npc_gluttonous_abomination : public CreatureScript DoCast(me, SPELL_ROT_WORM_SPAWNER, true); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -1024,7 +1024,7 @@ class npc_dream_portal : public CreatureScript return (type == MISSED_PORTALS && _used) ? 0 : 1; } - void UpdateAI(uint32 const /*diff*/) + void UpdateAI(uint32 /*diff*/) { UpdateVictim(); } @@ -1059,7 +1059,7 @@ class npc_dream_cloud : public CreatureScript me->LoadCreaturesAddon(true); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { // trigger if (_instance->GetBossState(DATA_VALITHRIA_DREAMWALKER) != IN_PROGRESS) diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp index 12868094b2e..3ffa6a0c4be 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp @@ -460,7 +460,7 @@ class npc_highlord_tirion_fordring_lh : public CreatureScript } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (_damnedKills != 2) return; @@ -611,7 +611,7 @@ class npc_rotting_frost_giant : public CreatureScript _events.Reset(); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -664,13 +664,14 @@ class npc_frost_freeze_trap : public CreatureScript public: npc_frost_freeze_trap() : CreatureScript("npc_frost_freeze_trap") { } - struct npc_frost_freeze_trapAI: public Scripted_NoMovementAI + struct npc_frost_freeze_trapAI: public ScriptedAI { - npc_frost_freeze_trapAI(Creature* creature) : Scripted_NoMovementAI(creature) + npc_frost_freeze_trapAI(Creature* creature) : ScriptedAI(creature) { + SetCombatMovement(false); } - void DoAction(int32 const action) + void DoAction(int32 action) { switch (action) { @@ -683,7 +684,7 @@ class npc_frost_freeze_trap : public CreatureScript } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { _events.Update(diff); @@ -807,7 +808,7 @@ class boss_sister_svalna : public CreatureScript me->SetHover(false); } - void DoAction(int32 const action) + void DoAction(int32 action) { switch (action) { @@ -876,7 +877,7 @@ class boss_sister_svalna : public CreatureScript } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim() && !_isEventInProgress) return; @@ -955,7 +956,7 @@ class npc_crok_scourgebane : public CreatureScript _wipeCheckTimer = 1000; } - void DoAction(int32 const action) + void DoAction(int32 action) { if (action == ACTION_START_GAUNTLET) { @@ -1237,7 +1238,7 @@ struct npc_argent_captainAI : public ScriptedAI Talk(SAY_CAPTAIN_KILL); } - void DoAction(int32 const action) + void DoAction(int32 action) { if (action == ACTION_START_GAUNTLET) { @@ -1355,7 +1356,7 @@ class npc_captain_arnath : public CreatureScript Events.ScheduleEvent(EVENT_ARNATH_DOMINATE_MIND, urand(22000, 27000)); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -1436,7 +1437,7 @@ class npc_captain_brandon : public CreatureScript Events.ScheduleEvent(EVENT_BRANDON_HAMMER_OF_BETRAYAL, urand(25000, 30000)); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -1504,7 +1505,7 @@ class npc_captain_grondel : public CreatureScript Events.ScheduleEvent(EVENT_GRONDEL_CONFLAGRATION, urand(12000, 17000)); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -1569,7 +1570,7 @@ class npc_captain_rupert : public CreatureScript Events.ScheduleEvent(EVENT_RUPERT_ROCKET_LAUNCH, urand(10000, 15000)); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -1654,7 +1655,7 @@ class npc_impaling_spear : public CreatureScript _vehicleCheckTimer = 500; } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (_vehicleCheckTimer <= diff) { @@ -1695,7 +1696,7 @@ class npc_arthas_teleport_visual : public CreatureScript _events.ScheduleEvent(EVENT_SOUL_MISSILE, urand(1000, 6000)); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (_events.Empty()) return; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h index 1407568686f..887a31baf9a 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h +++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h @@ -56,6 +56,7 @@ enum SharedSpells SPELL_FROSTMOURNE_TELEPORT_VISUAL = 73078, // Shadowmourne questline + SPELL_UNSATED_CRAVING = 71168, SPELL_SHADOWS_FATE = 71169 }; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp index 462708360e3..db4ab2f32d2 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp @@ -435,7 +435,7 @@ class instance_icecrown_citadel : public InstanceMapScript // these 2 gates are functional only on 25man modes case GO_DOODAD_ICECROWN_ROOSTPORTCULLIS_01: case GO_DOODAD_ICECROWN_ROOSTPORTCULLIS_04: - if (instance->GetSpawnMode() & 1) + if (instance->Is25ManRaid()) AddDoor(go, true); break; case GO_LADY_DEATHWHISPER_ELEVATOR: @@ -954,7 +954,7 @@ class instance_icecrown_citadel : public InstanceMapScript bool CheckRequiredBosses(uint32 bossId, Player const* player = NULL) const { - if (player && AccountMgr::IsGMAccount(player->GetSession()->GetSecurity())) + if (player && player->GetSession()->HasPermission(RBAC_PERM_SKIP_CHECK_INSTANCE_REQUIRED_BOSSES)) return true; switch (bossId) diff --git a/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp b/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp index 14e2d05a7c1..d4b16594bc8 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp @@ -144,7 +144,7 @@ public: summon->CastSpell(summon, SPELL_SUMMON_CORPSE_SCARABS_MOB, true, NULL, NULL, me->GetGUID()); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim() || !CheckInRoom()) return; diff --git a/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp b/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp index 4d5efe4e89c..35f23db24f7 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp @@ -122,7 +122,7 @@ class boss_faerlina : public CreatureScript return 0; } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp b/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp index e037f627bee..9013b051b9a 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp @@ -326,7 +326,7 @@ public: events.ScheduleEvent(EVENT_BERSERK, 15*100*1000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (nextWP && movementStarted && !movementCompleted && !nextMovementStarted) { diff --git a/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp b/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp index c735107968a..723b2538fc8 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp @@ -93,7 +93,7 @@ public: summons.Summon(summon); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictimWithGaze() || !CheckInRoom()) return; diff --git a/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp b/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp index 21f3141393a..451992b1d91 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp @@ -393,7 +393,7 @@ class boss_gothik : public CreatureScript } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim() || !CheckInRoom()) return; @@ -524,7 +524,7 @@ class mob_gothik_minion : public CreatureScript return (liveSide == IN_LIVE_SIDE(who)); } - void DoAction(int32 const param) + void DoAction(int32 param) { gateClose = param; } @@ -574,7 +574,7 @@ class mob_gothik_minion : public CreatureScript Reset(); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (gateClose && (!isOnSameSide(me) || (me->getVictim() && !isOnSameSide(me->getVictim())))) { diff --git a/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp b/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp index 536c2af2bd8..3e44fe9eba4 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp @@ -78,7 +78,7 @@ public: boss_grobbulus() : CreatureScript("boss_grobbulus") { } } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -125,11 +125,11 @@ public: return new npc_grobbulus_poison_cloudAI(creature); } - struct npc_grobbulus_poison_cloudAI : public Scripted_NoMovementAI + struct npc_grobbulus_poison_cloudAI : public ScriptedAI { - npc_grobbulus_poison_cloudAI(Creature* creature) : Scripted_NoMovementAI(creature) + npc_grobbulus_poison_cloudAI(Creature* creature) : ScriptedAI(creature) { - Reset(); + SetCombatMovement(false); } uint32 Cloud_Timer; @@ -140,7 +140,7 @@ public: me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (Cloud_Timer <= diff) { diff --git a/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp b/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp index c88ac807421..ec2335df8e1 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp @@ -133,7 +133,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim() || !CheckInRoom()) return; diff --git a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp index 1b34e2a93a7..1ee32c8a36e 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp @@ -382,7 +382,7 @@ public: KTTriggerGUID = instance ? instance->GetData64(DATA_KELTHUZAD_TRIGGER) : 0; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -735,7 +735,7 @@ class npc_kelthuzad_abomination : public CreatureScript DoCast(me, SPELL_FRENZY, true); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/Naxxramas/boss_loatheb.cpp b/src/server/scripts/Northrend/Naxxramas/boss_loatheb.cpp index 75fe66b9faf..3664a166a9f 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_loatheb.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_loatheb.cpp @@ -93,7 +93,7 @@ class boss_loatheb : public CreatureScript return uint32(_sporeLoserData); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp b/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp index 28def13a0d2..dfac6049875 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp @@ -85,7 +85,7 @@ public: events.ScheduleEvent(EVENT_SUMMON, 30000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim() || !CheckInRoom()) return; diff --git a/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp b/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp index 89b65615a2e..d0034628424 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp @@ -145,7 +145,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim() || !CheckInRoom()) return; diff --git a/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp b/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp index e77a9708ba5..13a5340fa8e 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp @@ -98,7 +98,7 @@ public: instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_MAKE_QUICK_WERK_OF_HIM_STARTING_EVENT); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp b/src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp index 52dfd60f5f8..0829ecb094d 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp @@ -99,7 +99,7 @@ public: events.ScheduleEvent(EVENT_KNIFE, 10000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp b/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp index cd68d7ecac3..878107ab35d 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp @@ -159,7 +159,7 @@ class boss_sapphiron : public CreatureScript events.ScheduleEvent(EVENT_LIFTOFF, 0); } - void DoAction(int32 const param) + void DoAction(int32 param) { if (param == DATA_SAPPHIRON_BIRTH) { @@ -217,7 +217,7 @@ class boss_sapphiron : public CreatureScript return 0; } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!_phase) return; diff --git a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp index 6c09e7156fe..ea50c67ad1c 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp @@ -159,7 +159,7 @@ public: Talk(SAY_DEATH); } - void DoAction(const int32 action) + void DoAction(int32 action) { switch (action) { @@ -218,7 +218,7 @@ public: return uint32(polaritySwitch); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (checkFeugenAlive && checkStalaggAlive) uiAddsTimer = 0; @@ -331,7 +331,7 @@ public: pThaddius->AI()->DoAction(ACTION_STALAGG_DIED); } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (!UpdateVictim()) return; @@ -423,7 +423,7 @@ public: pThaddius->AI()->DoAction(ACTION_FEUGEN_DIED); } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp index 1be93dcbaa5..b0a34047c0e 100644 --- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp +++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp @@ -501,7 +501,7 @@ public: } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -771,7 +771,7 @@ public: } } - void UpdateAI(uint32 const /*diff*/) + void UpdateAI(uint32 /*diff*/) { // When duration of oppened riff visual ends, // closed one should be cast @@ -841,7 +841,7 @@ public: } } - void UpdateAI(uint32 const /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (!_instance) return; @@ -941,7 +941,7 @@ public: // we dont evade } - void DoAction(int32 const action) + void DoAction(int32 action) { if (me->GetEntry() != NPC_HOVER_DISK_CASTER) return; @@ -1010,7 +1010,7 @@ public: DoCast(me, SPELL_ARCANE_OVERLOAD, false); } - void UpdateAI(uint32 const /*diff*/) + void UpdateAI(uint32 /*diff*/) { // we dont do melee damage! } @@ -1066,7 +1066,7 @@ public: _events.ScheduleEvent(EVENT_YELL_1, 0); } - void UpdateAI(uint32 const /*diff*/) + void UpdateAI(uint32 /*diff*/) { while (uint32 eventId = _events.ExecuteEvent()) { diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp index 955c6b801af..8d1420ce12e 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp @@ -124,7 +124,7 @@ class boss_anomalus : public CreatureScript chaosTheory = false; } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -191,11 +191,12 @@ class mob_chaotic_rift : public CreatureScript public: mob_chaotic_rift() : CreatureScript("mob_chaotic_rift") { } - struct mob_chaotic_riftAI : public Scripted_NoMovementAI + struct mob_chaotic_riftAI : public ScriptedAI { - mob_chaotic_riftAI(Creature* creature) : Scripted_NoMovementAI(creature) + mob_chaotic_riftAI(Creature* creature) : ScriptedAI(creature) { instance = me->GetInstanceScript(); + SetCombatMovement(false); } InstanceScript* instance; @@ -211,7 +212,7 @@ class mob_chaotic_rift : public CreatureScript DoCast(me, SPELL_ARCANEFORM, false); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_commander_kolurg.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_commander_kolurg.cpp index fedb1f5cebc..7f32b2bc4a5 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_commander_kolurg.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_commander_kolurg.cpp @@ -56,7 +56,7 @@ public: void EnterCombat(Unit* /*who*/) {} void AttackStart(Unit* /*who*/) {} void MoveInLineOfSight(Unit* /*who*/) {} - void UpdateAI(const uint32 /*diff*/) + void UpdateAI(uint32 /*diff*/) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_commander_stoutbeard.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_commander_stoutbeard.cpp index 39c93f15d6f..e257b898426 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_commander_stoutbeard.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_commander_stoutbeard.cpp @@ -53,7 +53,7 @@ public: void Reset() {} void AttackStart(Unit* /*who*/) {} void MoveInLineOfSight(Unit* /*who*/) {} - void UpdateAI(const uint32 /*diff*/) + void UpdateAI(uint32 /*diff*/) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp index d1a9227c6fb..8c06895f08f 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp @@ -167,7 +167,7 @@ public: intenseColdList.push_back(guid); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp index 7679ae53c80..26bf80cb32e 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp @@ -140,7 +140,7 @@ public: Talk(SAY_KILL); } - void DoAction(int32 const action) + void DoAction(int32 action) { if (action == ACTION_MAGUS_DEAD) { @@ -213,7 +213,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp index c9cfe70b8de..0f480b1d101 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp @@ -109,7 +109,7 @@ public: Talk(SAY_KILL); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -219,7 +219,7 @@ public: return type == DATA_COUNT ? _count : 0; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (_despawntimer <= diff) { diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp index feb801450b1..1a820cd3727 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp @@ -81,7 +81,7 @@ public: Talk(SAY_AGGRO); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) @@ -170,7 +170,7 @@ public: deathTimer = 19000; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (pulseTimer <= diff) { diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp index 0af498f24c6..d27909328a5 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp @@ -141,7 +141,7 @@ public: return 0; } - void DoAction(const int32 action) + void DoAction(int32 action) { if (action != ACTION_SET_NORMAL_EVENTS) return; @@ -194,7 +194,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp index 07f19ce9760..57a9c9958df 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp @@ -240,7 +240,7 @@ public: Talk(SAY_PLAYER_KILL); } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp index ec240db0b69..a2b5d340410 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp @@ -96,7 +96,7 @@ public: return coreEnergizeOrientation; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) @@ -187,7 +187,7 @@ class npc_azure_ring_captain : public CreatureScript } } - void UpdateAI(const uint32 /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (!UpdateVictim()) return; @@ -207,7 +207,7 @@ class npc_azure_ring_captain : public CreatureScript DoCast(target, SPELL_ICE_BEAM); } - void DoAction(const int32 action) + void DoAction(int32 action) { switch (action) { diff --git a/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp b/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp index f152d0011aa..1f8ba3edade 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp @@ -355,7 +355,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!(instance->GetBossState(DATA_VAROS_EVENT) == DONE)) { diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp index 16e705e45ab..6a16a644b5c 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp @@ -223,7 +223,7 @@ public: } } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { //Return since we have no target if (!UpdateVictim()) @@ -412,7 +412,7 @@ public: } } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp index 6f017884063..9ce8ea3c52c 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp @@ -198,8 +198,7 @@ public: summoned->CastSpell(summoned, DUNGEON_MODE(SPELL_SPARK_VISUAL_TRIGGER, H_SPELL_SPARK_VISUAL_TRIGGER), true); - Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0); - if (target) + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) { summoned->SetInCombatWith(target); summoned->GetMotionMaster()->Clear(); @@ -214,7 +213,7 @@ public: lSparkList.Despawn(summoned); } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { //Return since we have no target if (!UpdateVictim()) @@ -336,7 +335,7 @@ public: uiDamage = 0; } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { // Despawn if the encounter is not running if (instance && instance->GetData(TYPE_IONAR) != IN_PROGRESS) diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp index df99ab33467..fe6c1c27155 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp @@ -123,7 +123,7 @@ public: Talk(SAY_SLAY); } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp index 9b22003bb1c..1e41f346942 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp @@ -226,7 +226,7 @@ public: return 0; } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (!UpdateVictim()) return; @@ -427,7 +427,7 @@ public: me->DespawnOrUnsummon(); } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { // Return since we have no target or if we are frozen if (!UpdateVictim() || m_bIsFrozen) diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp index c9a4d2ba5bd..e24ce570c5a 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp @@ -99,7 +99,7 @@ public: instance->SetData(DATA_KRYSTALLUS_EVENT, IN_PROGRESS); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp index 7fbf5f3ee79..71222aba88b 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp @@ -107,7 +107,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) @@ -117,9 +117,7 @@ public: { if (PartingSorrowTimer <= diff) { - Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0); - - if (target) + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) DoCast(target, SPELL_PARTING_SORROW); PartingSorrowTimer = urand(30000, 40000); diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp index 9e4c97ea0fc..3b0faa08574 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp @@ -147,7 +147,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) @@ -228,7 +228,7 @@ public: Talk(SAY_SLAY); } - void DoAction(int32 const action) + void DoAction(int32 action) { if (action == ACTION_OOZE_DEAD) ++abuseTheOoze; @@ -266,7 +266,7 @@ public: uiMergeTimer = 10000; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (uiMergeTimer <= diff) { diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp index f1d690f32e0..0a9ae889588 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp @@ -204,7 +204,7 @@ public: }*/ } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (bKaddrakActivated) { 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 13a4fe23690..5a5efc36b3c 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 @@ -176,10 +176,7 @@ enum EncounterPhases { PHASE_NORMAL = 0, PHASE_ROLE_PLAY = 1, - PHASE_BIG_BANG = 2, - - PHASE_MASK_NO_UPDATE = (1 << PHASE_ROLE_PLAY) | (1 << PHASE_BIG_BANG), - PHASE_MASK_NO_CAST_CHECK = 1 << PHASE_ROLE_PLAY, + PHASE_BIG_BANG = 2 }; enum AchievmentInfo @@ -331,7 +328,7 @@ class boss_algalon_the_observer : public CreatureScript } } - void DoAction(int32 const action) + void DoAction(int32 action) { switch (action) { @@ -344,7 +341,7 @@ class boss_algalon_the_observer : public CreatureScript me->GetMotionMaster()->MovePoint(POINT_ALGALON_LAND, AlgalonLandPos); me->SetHomePosition(AlgalonLandPos); Movement::MoveSplineInit init(me); - init.MoveTo(AlgalonLandPos.GetPositionX(), AlgalonLandPos.GetPositionY(), AlgalonLandPos.GetPositionZ()); + init.MoveTo(AlgalonLandPos.GetPositionX(), AlgalonLandPos.GetPositionY(), AlgalonLandPos.GetPositionZ(), false); init.SetOrientationFixed(true); init.Launch(); events.Reset(); @@ -540,14 +537,14 @@ class boss_algalon_the_observer : public CreatureScript } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { - if ((!(events.GetPhaseMask() & PHASE_MASK_NO_UPDATE) && !UpdateVictim()) || !CheckInRoom()) + if ((!(events.IsInPhase(PHASE_ROLE_PLAY) || events.IsInPhase(PHASE_BIG_BANG)) && !UpdateVictim()) || !CheckInRoom()) return; events.Update(diff); - if (!(events.GetPhaseMask() & PHASE_MASK_NO_CAST_CHECK)) + if (!events.IsInPhase(PHASE_ROLE_PLAY)) if (me->HasUnitState(UNIT_STATE_CASTING)) return; @@ -733,7 +730,7 @@ class npc_living_constellation : public CreatureScript return _isActive ? 1 : 0; } - void DoAction(int32 const action) + void DoAction(int32 action) { switch (action) { @@ -770,9 +767,9 @@ class npc_living_constellation : public CreatureScript caster->ToCreature()->DespawnOrUnsummon(1); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { - if (!(_events.GetPhaseMask() & PHASE_MASK_NO_UPDATE) && !UpdateVictim()) + if (!(_events.IsInPhase(PHASE_ROLE_PLAY) || _events.IsInPhase(PHASE_BIG_BANG)) && !UpdateVictim()) return; _events.Update(diff); @@ -864,7 +861,7 @@ class npc_brann_bronzebeard_algalon : public CreatureScript { } - void DoAction(int32 const action) + void DoAction(int32 action) { switch (action) { @@ -915,7 +912,7 @@ class npc_brann_bronzebeard_algalon : public CreatureScript _events.ScheduleEvent(EVENT_BRANN_MOVE_INTRO, delay); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { UpdateVictim(); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp index 451ad6ed915..6ad70d38635 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp @@ -158,7 +158,7 @@ class boss_steelbreaker : public CreatureScript events.ScheduleEvent(EVENT_FUSION_PUNCH, 15000); } - void DoAction(int32 const action) + void DoAction(int32 action) { switch (action) { @@ -212,7 +212,7 @@ class boss_steelbreaker : public CreatureScript DoCast(me, SPELL_ELECTRICAL_CHARGE); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -287,7 +287,7 @@ class boss_runemaster_molgeim : public CreatureScript events.ScheduleEvent(EVENT_RUNE_OF_POWER, 20000); } - void DoAction(int32 const action) + void DoAction(int32 action) { switch (action) { @@ -338,7 +338,7 @@ class boss_runemaster_molgeim : public CreatureScript Talk(SAY_MOLGEIM_SLAY); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -440,7 +440,7 @@ class boss_stormcaller_brundir : public CreatureScript events.ScheduleEvent(EVENT_OVERLOAD, urand(60000, 120000)); } - void DoAction(int32 const action) + void DoAction(int32 action) { switch (action) { @@ -499,7 +499,7 @@ class boss_stormcaller_brundir : public CreatureScript Talk(SAY_BRUNDIR_SLAY); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp index aa8c7a96898..5faa2cc4628 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp @@ -154,7 +154,7 @@ class boss_auriaya : public CreatureScript } } - void DoAction(int32 const action) + void DoAction(int32 action) { switch (action) { @@ -207,7 +207,7 @@ class boss_auriaya : public CreatureScript Talk(SAY_DEATH); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -299,7 +299,7 @@ class npc_auriaya_seeping_trigger : public CreatureScript DoCast(me, SPELL_SEEPING_ESSENCE); } - void UpdateAI(uint32 const /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (instance->GetBossState(BOSS_AURIAYA) != IN_PROGRESS) me->DespawnOrUnsummon(); @@ -338,7 +338,7 @@ class npc_sanctum_sentry : public CreatureScript DoCast(me, SPELL_STRENGHT_PACK, true); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -408,7 +408,7 @@ class npc_feral_defender : public CreatureScript events.ScheduleEvent(EVENT_RUSH, 10000); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp index 89ddbb7ac38..236791a4f6f 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp @@ -362,7 +362,7 @@ class boss_flame_leviathan : public CreatureScript Unbroken = data ? true : false; } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim() || !CheckInRoom()) return; @@ -467,7 +467,7 @@ class boss_flame_leviathan : public CreatureScript _pursueTarget = target->GetGUID(); } - void DoAction(int32 const action) + void DoAction(int32 action) { if (action && action <= 4) // Tower destruction, debuff leviathan loot and reduce active tower count { @@ -638,7 +638,7 @@ class boss_flame_leviathan_defense_cannon : public CreatureScript DoCast(me, AURA_STEALTH_DETECTION); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -752,7 +752,7 @@ class boss_flame_leviathan_safety_container : public CreatureScript me->SetPosition(x, y, z, 0); } - void UpdateAI(uint32 const /*diff*/) + void UpdateAI(uint32 /*diff*/) { } }; @@ -802,7 +802,7 @@ class npc_mechanolift : public CreatureScript container->EnterVehicle(me); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (MoveTimer <= diff) { @@ -851,7 +851,7 @@ class npc_pool_of_tar : public CreatureScript me->CastSpell(me, SPELL_BLAZE, true); } - void UpdateAI(uint32 const /*diff*/) {} + void UpdateAI(uint32 /*diff*/) {} }; CreatureAI* GetAI(Creature* creature) const @@ -880,7 +880,7 @@ class npc_colossus : public CreatureScript instance->SetData(DATA_COLOSSUS, instance->GetData(DATA_COLOSSUS)+1); } - void UpdateAI(uint32 const /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (!UpdateVictim()) return; @@ -917,7 +917,7 @@ class npc_thorims_hammer : public CreatureScript } } - void UpdateAI(uint32 const /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (!me->HasAura(AURA_DUMMY_BLUE)) me->CastSpell(me, AURA_DUMMY_BLUE, true); @@ -963,7 +963,7 @@ public: uint32 infernoTimer; - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { npc_escortAI::UpdateAI(diff); @@ -1012,7 +1012,7 @@ class npc_hodirs_fury : public CreatureScript } } - void UpdateAI(uint32 const /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (!me->HasAura(AURA_DUMMY_GREEN)) me->CastSpell(me, AURA_DUMMY_GREEN, true); @@ -1046,7 +1046,7 @@ class npc_freyas_ward : public CreatureScript summonTimer = 5000; } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (summonTimer <= diff) { @@ -1089,7 +1089,7 @@ class npc_freya_ward_summon : public CreatureScript lashTimer = 5000; } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -1127,7 +1127,7 @@ class npc_lorekeeper : public CreatureScript { } - void DoAction(int32 const action) + void DoAction(int32 action) { // Start encounter if (action == ACTION_SPAWN_VEHICLES) diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp index 4db3b58c53f..33a14aaa3df 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp @@ -216,10 +216,12 @@ class npc_iron_roots : public CreatureScript public: npc_iron_roots() : CreatureScript("npc_iron_roots") { } - struct npc_iron_rootsAI : public Scripted_NoMovementAI + struct npc_iron_rootsAI : public ScriptedAI { - npc_iron_rootsAI(Creature* creature) : Scripted_NoMovementAI(creature) + npc_iron_rootsAI(Creature* creature) : ScriptedAI(creature) { + SetCombatMovement(false); + me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK, true); me->ApplySpellImmune(0, IMMUNITY_ID, 49560, true); // Death Grip me->setFaction(14); @@ -385,7 +387,7 @@ class boss_freya : public CreatureScript return 0; } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -720,7 +722,7 @@ class boss_elder_brightleaf : public CreatureScript Talk(SAY_ELDER_AGGRO); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim() || me->HasAura(SPELL_DRAINED_OF_POWER)) return; @@ -763,7 +765,7 @@ class boss_elder_brightleaf : public CreatureScript DoMeleeAttackIfReady(); } - void DoAction(int32 const action) + void DoAction(int32 action) { switch (action) { @@ -854,7 +856,7 @@ class boss_elder_stonebark : public CreatureScript } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim() || me->HasAura(SPELL_DRAINED_OF_POWER)) return; @@ -890,7 +892,7 @@ class boss_elder_stonebark : public CreatureScript DoMeleeAttackIfReady(); } - void DoAction(int32 const action) + void DoAction(int32 action) { switch (action) { @@ -968,7 +970,7 @@ class boss_elder_ironbranch : public CreatureScript Talk(SAY_ELDER_AGGRO); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim() || me->HasAura(SPELL_DRAINED_OF_POWER)) return; @@ -1004,7 +1006,7 @@ class boss_elder_ironbranch : public CreatureScript DoMeleeAttackIfReady(); } - void DoAction(int32 const action) + void DoAction(int32 action) { switch (action) { @@ -1049,7 +1051,7 @@ class npc_detonating_lasher : public CreatureScript changeTargetTimer = 7500; } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -1108,7 +1110,7 @@ class npc_ancient_water_spirit : public CreatureScript tidalWaveTimer = 10000; } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -1169,7 +1171,7 @@ class npc_storm_lasher : public CreatureScript stormboltTimer = 5000; } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -1230,7 +1232,7 @@ class npc_snaplasher : public CreatureScript waveCount = CAST_AI(boss_freya::boss_freyaAI, Freya->AI())->trioWaveCount; } - void UpdateAI(uint32 const /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (!UpdateVictim()) return; @@ -1295,7 +1297,7 @@ class npc_ancient_conservator : public CreatureScript DoCast(who, SPELL_CONSERVATOR_GRIP, true); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -1337,10 +1339,11 @@ class npc_sun_beam : public CreatureScript public: npc_sun_beam() : CreatureScript("npc_sun_beam") { } - struct npc_sun_beamAI : public Scripted_NoMovementAI + struct npc_sun_beamAI : public ScriptedAI { - npc_sun_beamAI(Creature* creature) : Scripted_NoMovementAI(creature) + npc_sun_beamAI(Creature* creature) : ScriptedAI(creature) { + SetCombatMovement(false); me->SetReactState(REACT_PASSIVE); DoCastAOE(SPELL_FREYA_UNSTABLE_ENERGY_VISUAL, true); DoCast(SPELL_FREYA_UNSTABLE_ENERGY); @@ -1358,10 +1361,11 @@ class npc_healthy_spore : public CreatureScript public: npc_healthy_spore() : CreatureScript("npc_healthy_spore") { } - struct npc_healthy_sporeAI : public Scripted_NoMovementAI + struct npc_healthy_sporeAI : public ScriptedAI { - npc_healthy_sporeAI(Creature* creature) : Scripted_NoMovementAI(creature) + npc_healthy_sporeAI(Creature* creature) : ScriptedAI(creature) { + SetCombatMovement(false); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC); me->SetReactState(REACT_PASSIVE); DoCast(me, SPELL_HEALTHY_SPORE_VISUAL); @@ -1370,7 +1374,7 @@ class npc_healthy_spore : public CreatureScript lifeTimer = urand(22000, 30000); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (lifeTimer <= diff) { @@ -1397,17 +1401,19 @@ class npc_eonars_gift : public CreatureScript public: npc_eonars_gift() : CreatureScript("npc_eonars_gift") { } - struct npc_eonars_giftAI : public Scripted_NoMovementAI + struct npc_eonars_giftAI : public ScriptedAI { - npc_eonars_giftAI(Creature* creature) : Scripted_NoMovementAI(creature) + npc_eonars_giftAI(Creature* creature) : ScriptedAI(creature) { + SetCombatMovement(false); + lifeBindersGiftTimer = 12000; DoCast(me, SPELL_GROW); DoCast(me, SPELL_PHEROMONES, true); DoCast(me, SPELL_EONAR_VISUAL, true); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (lifeBindersGiftTimer <= diff) { @@ -1435,15 +1441,17 @@ class npc_nature_bomb : public CreatureScript public: npc_nature_bomb() : CreatureScript("npc_nature_bomb") { } - struct npc_nature_bombAI : public Scripted_NoMovementAI + struct npc_nature_bombAI : public ScriptedAI { - npc_nature_bombAI(Creature* creature) : Scripted_NoMovementAI(creature) + npc_nature_bombAI(Creature* creature) : ScriptedAI(creature) { + SetCombatMovement(false); + bombTimer = urand(8000, 10000); DoCast(SPELL_OBJECT_BOMB); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (bombTimer <= diff) { @@ -1475,10 +1483,12 @@ class npc_unstable_sun_beam : public CreatureScript public: npc_unstable_sun_beam() : CreatureScript("npc_unstable_sun_beam") { } - struct npc_unstable_sun_beamAI : public Scripted_NoMovementAI + struct npc_unstable_sun_beamAI : public ScriptedAI { - npc_unstable_sun_beamAI(Creature* creature) : Scripted_NoMovementAI(creature) + npc_unstable_sun_beamAI(Creature* creature) : ScriptedAI(creature) { + SetCombatMovement(false); + despawnTimer = urand(7000, 12000); instance = me->GetInstanceScript(); DoCast(me, SPELL_PHOTOSYNTHESIS); @@ -1486,7 +1496,7 @@ class npc_unstable_sun_beam : public CreatureScript me->SetReactState(REACT_PASSIVE); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (despawnTimer <= diff) { diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp index 6fa2c7127e6..1642cc0483f 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp @@ -135,7 +135,7 @@ class boss_general_vezax : public CreatureScript events.ScheduleEvent(EVENT_BERSERK, 600000); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -250,7 +250,7 @@ class boss_general_vezax : public CreatureScript return 0; } - void DoAction(int32 const action) + void DoAction(int32 action) { switch (action) { @@ -333,7 +333,7 @@ class boss_saronite_animus : public CreatureScript Vezax->AI()->DoAction(ACTION_ANIMUS_DIE); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -392,7 +392,7 @@ class npc_saronite_vapors : public CreatureScript events.ScheduleEvent(EVENT_RANDOM_MOVE, urand(5000, 7500)); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { events.Update(diff); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp index 26d15d78e59..95ac326aa84 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp @@ -193,7 +193,7 @@ class npc_flash_freeze : public CreatureScript checkDespawnTimer = 1000; } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim() || me->getVictim()->HasAura(SPELL_BLOCK_OF_ICE) || me->getVictim()->HasAura(SPELL_FLASH_FREEZE_HELPER)) return; @@ -381,7 +381,7 @@ class boss_hodir : public CreatureScript } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -460,7 +460,7 @@ class boss_hodir : public CreatureScript DoMeleeAttackIfReady(); } - void DoAction(int32 const action) + void DoAction(int32 action) { switch (action) { @@ -525,7 +525,7 @@ class npc_icicle : public CreatureScript icicleTimer = 2500; } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (icicleTimer <= diff) { @@ -573,7 +573,7 @@ class npc_snowpacked_icicle : public CreatureScript despawnTimer = 12000; } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (despawnTimer <= diff) { @@ -611,7 +611,7 @@ class npc_hodir_priest : public CreatureScript events.ScheduleEvent(EVENT_DISPEL_MAGIC, urand(15000, 20000)); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim() || me->HasUnitState(UNIT_STATE_STUNNED) || me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED)) return; @@ -687,7 +687,7 @@ class npc_hodir_shaman : public CreatureScript events.ScheduleEvent(EVENT_STORM_CLOUD, urand(10000, 12500)); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim() || me->HasUnitState(UNIT_STATE_STUNNED) || me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED)) return; @@ -749,7 +749,7 @@ class npc_hodir_druid : public CreatureScript events.ScheduleEvent(EVENT_STARLIGHT, urand(15000, 17500)); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim() || me->HasUnitState(UNIT_STATE_STUNNED) || me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED)) return; @@ -824,7 +824,7 @@ class npc_hodir_mage : public CreatureScript summons.remove(summoned->GetGUID()); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim() || me->HasUnitState(UNIT_STATE_STUNNED) || me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED)) return; diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp index f525bc874f7..b040a64c75a 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp @@ -180,7 +180,7 @@ class boss_ignis : public CreatureScript summons.Summon(summon); } - void DoAction(const int32 action) + void DoAction(int32 action) { if (action != ACTION_REMOVE_BUFF) return; @@ -193,7 +193,7 @@ class boss_ignis : public CreatureScript _firstConstructKill = secondKill; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -319,7 +319,7 @@ class npc_iron_construct : public CreatureScript } } - void UpdateAI(const uint32 /*uiDiff*/) + void UpdateAI(uint32 /*uiDiff*/) { if (!UpdateVictim()) return; @@ -392,7 +392,7 @@ class npc_scorch_ground : public CreatureScript _heatTimer = 0; } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (_heat) { diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp index 24282340278..94df327d3da 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp @@ -242,7 +242,7 @@ class boss_kologarn : public CreatureScript } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp index 79edede01df..b74c4109fd7 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp @@ -224,7 +224,7 @@ class boss_razorscale_controller : public CreatureScript _JustDied(); } - void DoAction(int32 const action) + void DoAction(int32 action) { if (instance->GetBossState(BOSS_RAZORSCALE) != IN_PROGRESS) return; @@ -243,7 +243,7 @@ class boss_razorscale_controller : public CreatureScript } } - void UpdateAI(uint32 const Diff) + void UpdateAI(uint32 Diff) { events.Update(Diff); @@ -394,7 +394,7 @@ class boss_razorscale : public CreatureScript return 0; } - void UpdateAI(uint32 const Diff) + void UpdateAI(uint32 Diff) { if (!UpdateVictim()) return; @@ -562,7 +562,7 @@ class boss_razorscale : public CreatureScript } } - void DoAction(int32 const action) + void DoAction(int32 action) { switch (action) { @@ -625,7 +625,7 @@ class npc_expedition_commander : public CreatureScript summons.push_back(summoned->GetGUID()); } - void DoAction(int32 const action) + void DoAction(int32 action) { switch (action) { @@ -639,7 +639,7 @@ class npc_expedition_commander : public CreatureScript } } - void UpdateAI(uint32 const Diff) + void UpdateAI(uint32 Diff) { if (AttackStartTimer <= Diff) { @@ -739,10 +739,11 @@ class npc_mole_machine_trigger : public CreatureScript public: npc_mole_machine_trigger() : CreatureScript("npc_mole_machine_trigger") { } - struct npc_mole_machine_triggerAI : public Scripted_NoMovementAI + struct npc_mole_machine_triggerAI : public ScriptedAI { - npc_mole_machine_triggerAI(Creature* creature) : Scripted_NoMovementAI(creature) + npc_mole_machine_triggerAI(Creature* creature) : ScriptedAI(creature) { + SetCombatMovement(false); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_PACIFIED); } @@ -761,7 +762,7 @@ class npc_mole_machine_trigger : public CreatureScript NpcSummoned = false; } - void UpdateAI(uint32 const Diff) + void UpdateAI(uint32 Diff) { if (!GobSummoned && SummonGobTimer <= Diff) { @@ -818,10 +819,11 @@ class npc_devouring_flame : public CreatureScript public: npc_devouring_flame() : CreatureScript("npc_devouring_flame") { } - struct npc_devouring_flameAI : public Scripted_NoMovementAI + struct npc_devouring_flameAI : public ScriptedAI { - npc_devouring_flameAI(Creature* creature) : Scripted_NoMovementAI(creature) + npc_devouring_flameAI(Creature* creature) : ScriptedAI(creature) { + SetCombatMovement(false); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_PACIFIED); } @@ -855,7 +857,7 @@ class npc_darkrune_watcher : public CreatureScript LightTimer = urand(1000, 3000); } - void UpdateAI(uint32 const Diff) + void UpdateAI(uint32 Diff) { if (!UpdateVictim()) return; @@ -915,7 +917,7 @@ class npc_darkrune_guardian : public CreatureScript } - void UpdateAI(uint32 const Diff) + void UpdateAI(uint32 Diff) { if (!UpdateVictim()) return; @@ -961,7 +963,7 @@ class npc_darkrune_sentinel : public CreatureScript ShoutTimer = urand(15000, 30000); } - void UpdateAI(uint32 const Diff) + void UpdateAI(uint32 Diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp index 564087088d3..b75a6a67a30 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp @@ -78,7 +78,7 @@ class boss_thorim : public CreatureScript _EnterCombat(); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp index 43d19d78f8a..a358fc41db0 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp @@ -241,7 +241,7 @@ class boss_xt002 : public CreatureScript instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_MUST_DECONSTRUCT_FASTER); } - void DoAction(const int32 action) + void DoAction(int32 action) { switch (action) { @@ -269,7 +269,7 @@ class boss_xt002 : public CreatureScript ExposeHeart(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim() || !CheckInRoom()) return; @@ -451,14 +451,15 @@ class mob_xt002_heart : public CreatureScript public: mob_xt002_heart() : CreatureScript("mob_xt002_heart") { } - struct mob_xt002_heartAI : public Scripted_NoMovementAI + struct mob_xt002_heartAI : public ScriptedAI { - mob_xt002_heartAI(Creature* creature) : Scripted_NoMovementAI(creature), + mob_xt002_heartAI(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript()) { + SetCombatMovement(false); } - void UpdateAI(uint32 const /*diff*/) { } + void UpdateAI(uint32 /*diff*/) { } void JustDied(Unit* /*killer*/) { @@ -512,7 +513,7 @@ class mob_scrapbot : public CreatureScript me->GetMotionMaster()->MoveFollow(pXT002, 0.0f, 0.0f); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (_rangeCheckTimer <= diff) { @@ -573,7 +574,7 @@ class mob_pummeller : public CreatureScript } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -703,7 +704,7 @@ class mob_boombot : public CreatureScript } } - void UpdateAI(uint32 const /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (!UpdateVictim()) return; @@ -745,7 +746,7 @@ class mob_life_spark : public CreatureScript _shockTimer = 0; // first one is immediate. } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp index d3c174841ee..125f66497bf 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp @@ -565,10 +565,6 @@ class instance_ulduar : public InstanceMapScript } HandleGameObject(KologarnBridgeGUID, false); } - if (state == IN_PROGRESS) - HandleGameObject(KologarnDoorGUID, false); - else - HandleGameObject(KologarnDoorGUID, true); break; case BOSS_HODIR: if (state == DONE) diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp index f579fb2b93c..215630ac5fa 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp @@ -154,7 +154,7 @@ public: Talk(YELL_DEAD_1); } - if (events.GetPhaseMask() & (1 << PHASE_EVENT)) + if (events.IsInPhase(PHASE_EVENT)) damage = 0; } @@ -204,9 +204,9 @@ public: Talk(bIsUndead ? YELL_KILL_1 : YELL_KILL_2); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { - if (!UpdateVictim() && !(events.GetPhaseMask() & (1 << PHASE_EVENT))) + if (!UpdateVictim() && !events.IsInPhase(PHASE_EVENT)) return; events.Update(diff); @@ -358,7 +358,7 @@ public: void AttackStart(Unit* /*who*/) {} void MoveInLineOfSight(Unit* /*who*/) {} void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (uiResurectTimer) { diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp index 6e532a88396..896421909ad 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp @@ -94,7 +94,7 @@ public: instance = creature->GetInstanceScript(); } - void UpdateAI(const uint32 /*diff*/) {} + void UpdateAI(uint32 /*diff*/) {} void JustDied(Unit* /*killer*/) { @@ -193,7 +193,7 @@ public: return 0; } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -288,7 +288,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp index 05822aa2595..ef7ad659a24 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp @@ -180,7 +180,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (ghost) { @@ -340,7 +340,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (ghost) { diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp index 7103095b252..4f7f0e844bb 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp @@ -146,7 +146,7 @@ public: return near_f > 0 && near_f < 4 ? near_f : 0; } - void UpdateAI(uint32 const /* diff */) + void UpdateAI(uint32 /* diff */) { if (fm_Type == 0) fm_Type = GetForgeMasterType(); @@ -291,7 +291,7 @@ public: } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp index 36506227287..2b1d850ab25 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp @@ -174,7 +174,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (currentPhase != PHASE_GORTOK_PALEHOOF) return; @@ -325,7 +325,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) @@ -438,7 +438,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) @@ -554,7 +554,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) @@ -674,7 +674,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) @@ -771,7 +771,7 @@ public: me->SetSpeed(MOVE_FLIGHT, 0.5f); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (currentPhase == PHASE_NONE) return; diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp index 2514cb3de78..3a74eebd947 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp @@ -303,7 +303,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { switch (Phase) { diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp index dffdadc5b9c..f2090f6a2e6 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp @@ -250,7 +250,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (Phase == IDLE) return; @@ -459,11 +459,13 @@ public: return new npc_ritual_channelerAI(creature); } - struct npc_ritual_channelerAI : public Scripted_NoMovementAI + struct npc_ritual_channelerAI : public ScriptedAI { - npc_ritual_channelerAI(Creature* creature) :Scripted_NoMovementAI(creature) + npc_ritual_channelerAI(Creature* creature) :ScriptedAI(creature) { instance = creature->GetInstanceScript(); + + SetCombatMovement(false); } InstanceScript* instance; @@ -477,7 +479,7 @@ public: DoCast(me, SPELL_SHADOWS_IN_THE_DARK); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (me->HasUnitState(UNIT_STATE_CASTING)) return; @@ -599,7 +601,7 @@ class npc_scourge_hulk : public CreatureScript killedByRitualStrike = true; } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp index 99d987e63a4..f4c65216f4a 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp @@ -207,7 +207,7 @@ public: return 0; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (m_bIsWalking) { diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp index 33e0619c7e5..a4ea8649ff9 100644 --- a/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp +++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp @@ -76,7 +76,7 @@ class boss_archavon : public CreatureScript } // Below UpdateAI may need review/debug. - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -156,7 +156,7 @@ class mob_archavon_warder : public CreatureScript DoZoneInCombat(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp index b8b6acce54d..baed96453dc 100644 --- a/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp +++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp @@ -115,7 +115,7 @@ class boss_emalon : public CreatureScript _EnterCombat(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -215,7 +215,7 @@ class mob_tempest_minion : public CreatureScript } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp index fafeba6a570..50cb8f017b3 100644 --- a/src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp +++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp @@ -73,7 +73,7 @@ class boss_koralon : public CreatureScript _EnterCombat(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -149,7 +149,7 @@ class mob_flame_warder : public CreatureScript events.ScheduleEvent(EVENT_FW_METEOR_FISTS_A, 10000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp index 613b8ebf8dc..3068049e322 100644 --- a/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp +++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp @@ -74,7 +74,7 @@ class boss_toravon : public CreatureScript _EnterCombat(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -142,7 +142,7 @@ class mob_frost_warder : public CreatureScript events.ScheduleEvent(EVENT_FROST_BLAST, 5000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -196,7 +196,7 @@ public: DoZoneInCombat(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!done) { @@ -234,9 +234,9 @@ class mob_frozen_orb_stalker : public CreatureScript public: mob_frozen_orb_stalker() : CreatureScript("mob_frozen_orb_stalker") { } - struct mob_frozen_orb_stalkerAI : public Scripted_NoMovementAI + struct mob_frozen_orb_stalkerAI : public ScriptedAI { - mob_frozen_orb_stalkerAI(Creature* creature) : Scripted_NoMovementAI(creature) + mob_frozen_orb_stalkerAI(Creature* creature) : ScriptedAI(creature) { creature->SetVisible(false); creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE|UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_DISABLE_MOVE); @@ -244,9 +244,11 @@ class mob_frozen_orb_stalker : public CreatureScript instance = creature->GetInstanceScript(); spawned = false; + + SetCombatMovement(false); } - void UpdateAI(const uint32 /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (spawned) return; diff --git a/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp b/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp index 1f12685a4b0..d524e3fb708 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp @@ -89,7 +89,7 @@ public: void MoveInLineOfSight(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (instance && instance->GetData(DATA_REMOVE_NPC) == 1) { diff --git a/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp b/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp index 6c16bb98ff1..9dbb10be601 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp @@ -144,7 +144,7 @@ public: void MoveInLineOfSight(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) @@ -303,7 +303,7 @@ public: void MoveInLineOfSight(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp index fb4297f595f..364602f8fa1 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp @@ -151,7 +151,7 @@ public: } } - void DoAction(const int32 param) + void DoAction(int32 param) { if (!me->isAlive()) return; @@ -205,7 +205,7 @@ public: void MoveInLineOfSight(Unit* /*who*/) {} - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (!UpdateVictim()) return; @@ -362,7 +362,7 @@ public: return; } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (uiRangeCheck_Timer < uiDiff) { diff --git a/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp b/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp index dc0b320b307..187cf5d6b30 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp @@ -102,7 +102,7 @@ public: void MoveInLineOfSight(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp b/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp index d40f3b14f87..d308c6c696b 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp @@ -95,7 +95,7 @@ public: void MoveInLineOfSight(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp index 891b91c6dfb..b14a9e0dec5 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp @@ -154,7 +154,7 @@ public: void MoveInLineOfSight(Unit* /*who*/) {} - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { //Return since we have no target if (!UpdateVictim()) @@ -251,7 +251,7 @@ public: uiRangeCheck_Timer = 1000; } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp index cf0ee82c01c..0f150fe88b8 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp @@ -122,7 +122,7 @@ public: void MoveInLineOfSight(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Northrend/VioletHold/violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/violet_hold.cpp index 5ebc2eaf973..fbbf3fa3df5 100644 --- a/src/server/scripts/Northrend/VioletHold/violet_hold.cpp +++ b/src/server/scripts/Northrend/VioletHold/violet_hold.cpp @@ -342,7 +342,7 @@ public: } } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { ScriptedAI::UpdateAI(uiDiff); @@ -481,7 +481,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (instance && instance->GetData(DATA_MAIN_EVENT_PHASE) != IN_PROGRESS) me->CastStop(); @@ -578,7 +578,7 @@ public: void MoveInLineOfSight(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!instance) //Massive usage of instance, global check return; @@ -724,7 +724,7 @@ struct violet_hold_trashAI : public npc_escortAI } } - void UpdateAI(const uint32) + void UpdateAI(uint32) { if (instance && instance->GetData(DATA_MAIN_EVENT_PHASE) != IN_PROGRESS) me->CastStop(); @@ -832,7 +832,7 @@ public: uiSunderArmorTimer = 4000; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { violet_hold_trashAI::UpdateAI(diff); npc_escortAI::UpdateAI(diff); @@ -910,7 +910,7 @@ public: uiFrostboltTimer = 4000; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { violet_hold_trashAI::UpdateAI(diff); npc_escortAI::UpdateAI(diff); @@ -984,7 +984,7 @@ public: uiSpellLockTimer = 5000; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { violet_hold_trashAI::UpdateAI(diff); npc_escortAI::UpdateAI(diff); @@ -1044,7 +1044,7 @@ public: uiMagicReflectionTimer = 8000; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { violet_hold_trashAI::UpdateAI(diff); npc_escortAI::UpdateAI(diff); @@ -1097,7 +1097,7 @@ public: TacticalBlinkCasted =false; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { violet_hold_trashAI::UpdateAI(diff); npc_escortAI::UpdateAI(diff); @@ -1159,7 +1159,7 @@ public: uiConeOfColdTimer = 4000; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { violet_hold_trashAI::UpdateAI(diff); npc_escortAI::UpdateAI(diff); @@ -1239,7 +1239,7 @@ public: uiWhirlwindTimer = 8000; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { violet_hold_trashAI::UpdateAI(diff); npc_escortAI::UpdateAI(diff); @@ -1293,7 +1293,7 @@ public: uiManaDetonationTimer = 5000; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { violet_hold_trashAI::UpdateAI(diff); npc_escortAI::UpdateAI(diff); diff --git a/src/server/scripts/Northrend/zone_borean_tundra.cpp b/src/server/scripts/Northrend/zone_borean_tundra.cpp index 8e7507bce61..fef900e1dfd 100644 --- a/src/server/scripts/Northrend/zone_borean_tundra.cpp +++ b/src/server/scripts/Northrend/zone_borean_tundra.cpp @@ -92,7 +92,7 @@ public: void EnterCombat(Unit* /*who*/){} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!phase) return; @@ -436,7 +436,7 @@ public: DoCast(me, SPELL_DROP_CRATE, true); } - void UpdateAI(const uint32 /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (setCrateNumber) { @@ -576,7 +576,7 @@ public: go_caribou->SetGoState(GO_STATE_READY); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (phaseTimer <= diff) { @@ -701,7 +701,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (IntroPhase) { @@ -867,7 +867,7 @@ public: } } - void UpdateAI(const uint32 /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (WithRedDragonBlood && HarpoonerGUID && !me->HasAura(SPELL_RED_DRAGONBLOOD)) { @@ -1017,7 +1017,7 @@ public: } } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { npc_escortAI::UpdateAI(uiDiff); @@ -1360,7 +1360,7 @@ public: CAST_AI(npc_thassarian::npc_thassarianAI, CAST_CRE(summoner)->AI())->talbotInPosition = true; } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (bCheck) { @@ -1482,7 +1482,7 @@ public: } } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { ScriptedAI::UpdateAI(uiDiff); @@ -1622,7 +1622,7 @@ public: } } - void UpdateAI(const uint32 /*uiDiff*/) + void UpdateAI(uint32 /*uiDiff*/) { if (!UpdateVictim()) return; @@ -1674,7 +1674,7 @@ public: rebuff = 0; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { UpdateVictim(); @@ -1990,7 +1990,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (bStarted) { @@ -2005,7 +2005,7 @@ public: } } - void DoAction(const int32 param) + void DoAction(int32 param) { if (param == 1) bStarted = true; @@ -2105,7 +2105,7 @@ public: uiExplosionTimer = urand(5000, 10000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (uiExplosionTimer < diff) { @@ -2160,7 +2160,7 @@ public: uiTimer = urand(13000, 18000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (uiTimer <= diff) { @@ -2207,9 +2207,9 @@ class npc_warmage_coldarra : public CreatureScript public: npc_warmage_coldarra() : CreatureScript("npc_warmage_coldarra") { } - struct npc_warmage_coldarraAI : public Scripted_NoMovementAI + struct npc_warmage_coldarraAI : public ScriptedAI { - npc_warmage_coldarraAI(Creature* creature) : Scripted_NoMovementAI(creature){} + npc_warmage_coldarraAI(Creature* creature) : ScriptedAI(creature) {} uint32 m_uiTimer; //Timer until recast @@ -2222,7 +2222,7 @@ public: void AttackStart(Unit* /*who*/) {} - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (m_uiTimer <= uiDiff) { @@ -2358,7 +2358,7 @@ public: me->RestoreFaction(); } - void DoAction(const int32 /*iParam*/) + void DoAction(int32 /*iParam*/) { me->StopMoving(); me->SetUInt32Value(UNIT_NPC_FLAGS, 0); @@ -2383,7 +2383,7 @@ public: me->AI()->AttackStart(player); } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (uiEventTimer && uiEventTimer <= uiDiff) { diff --git a/src/server/scripts/Northrend/zone_crystalsong_forest.cpp b/src/server/scripts/Northrend/zone_crystalsong_forest.cpp index d12b5176b15..d05e442b0f4 100644 --- a/src/server/scripts/Northrend/zone_crystalsong_forest.cpp +++ b/src/server/scripts/Northrend/zone_crystalsong_forest.cpp @@ -49,9 +49,12 @@ class npc_warmage_violetstand : public CreatureScript public: npc_warmage_violetstand() : CreatureScript("npc_warmage_violetstand") { } - struct npc_warmage_violetstandAI : public Scripted_NoMovementAI + struct npc_warmage_violetstandAI : public ScriptedAI { - npc_warmage_violetstandAI(Creature* creature) : Scripted_NoMovementAI(creature){} + npc_warmage_violetstandAI(Creature* creature) : ScriptedAI(creature) + { + SetCombatMovement(false); + } uint64 uiTargetGUID; @@ -60,7 +63,7 @@ public: uiTargetGUID = 0; } - void UpdateAI(const uint32 /*uiDiff*/) + void UpdateAI(uint32 /*uiDiff*/) { if (me->IsNonMeleeSpellCasted(false)) return; diff --git a/src/server/scripts/Northrend/zone_dalaran.cpp b/src/server/scripts/Northrend/zone_dalaran.cpp index d16b6fe4588..33440cad48b 100644 --- a/src/server/scripts/Northrend/zone_dalaran.cpp +++ b/src/server/scripts/Northrend/zone_dalaran.cpp @@ -55,9 +55,9 @@ class npc_mageguard_dalaran : public CreatureScript public: npc_mageguard_dalaran() : CreatureScript("npc_mageguard_dalaran") { } - struct npc_mageguard_dalaranAI : public Scripted_NoMovementAI + struct npc_mageguard_dalaranAI : public ScriptedAI { - npc_mageguard_dalaranAI(Creature* creature) : Scripted_NoMovementAI(creature) + npc_mageguard_dalaranAI(Creature* creature) : ScriptedAI(creature) { creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_NORMAL, true); @@ -117,7 +117,7 @@ public: return; } - void UpdateAI(const uint32 /*diff*/){} + void UpdateAI(uint32 /*diff*/){} }; CreatureAI* GetAI(Creature* creature) const diff --git a/src/server/scripts/Northrend/zone_dragonblight.cpp b/src/server/scripts/Northrend/zone_dragonblight.cpp index a8fb0215902..ed7354acb50 100644 --- a/src/server/scripts/Northrend/zone_dragonblight.cpp +++ b/src/server/scripts/Northrend/zone_dragonblight.cpp @@ -248,7 +248,7 @@ class npc_wyrmrest_defender : public CreatureScript RenewRecoveryChecker = 0; } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { // Check system for Health Warning should happen first time whenever get under 30%, // after it should be able to happen only after recovery of last renew is fully done (20 sec), diff --git a/src/server/scripts/Northrend/zone_grizzly_hills.cpp b/src/server/scripts/Northrend/zone_grizzly_hills.cpp index fe1f561071c..e8eddea6ef7 100644 --- a/src/server/scripts/Northrend/zone_grizzly_hills.cpp +++ b/src/server/scripts/Northrend/zone_grizzly_hills.cpp @@ -192,7 +192,7 @@ public: RWORGGUID = 0; } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { npc_escortAI::UpdateAI(uiDiff); @@ -264,7 +264,7 @@ public: void MoveInLineOfSight(Unit* /*who*/) {} - void UpdateAI(const uint32 /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (!UpdateVictim()) return; @@ -369,7 +369,7 @@ public: m_uiPhase = 1; } - void UpdateAI(const uint32 /*uiDiff*/) + void UpdateAI(uint32 /*uiDiff*/) { if (m_uiPhase == 1) { @@ -416,7 +416,7 @@ public: m_uiPhase = 1; } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { // call this each update tick? if (me->FindNearestCreature(TALLHORN_STAG, 0.2f)) @@ -510,7 +510,7 @@ public: } } - void UpdateAI(const uint32 /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (!UpdateVictim()) return; @@ -558,7 +558,7 @@ public: uiChargedSentryTotem = urand(10000, 12000); } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (!UpdateVictim()) return; @@ -624,7 +624,7 @@ class npc_venture_co_straggler : public CreatureScript me->SetReactState(REACT_AGGRESSIVE); } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (uiPlayerGUID && uiRunAwayTimer <= uiDiff) { diff --git a/src/server/scripts/Northrend/zone_icecrown.cpp b/src/server/scripts/Northrend/zone_icecrown.cpp index 098fa80a3d3..d5641b0fcc7 100644 --- a/src/server/scripts/Northrend/zone_icecrown.cpp +++ b/src/server/scripts/Northrend/zone_icecrown.cpp @@ -219,7 +219,7 @@ public: } } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (!UpdateVictim()) return; @@ -264,9 +264,12 @@ class npc_guardian_pavilion : public CreatureScript public: npc_guardian_pavilion() : CreatureScript("npc_guardian_pavilion") { } - struct npc_guardian_pavilionAI : public Scripted_NoMovementAI + struct npc_guardian_pavilionAI : public ScriptedAI { - npc_guardian_pavilionAI(Creature* creature) : Scripted_NoMovementAI(creature) {} + npc_guardian_pavilionAI(Creature* creature) : ScriptedAI(creature) + { + SetCombatMovement(false); + } void MoveInLineOfSight(Unit* who) { @@ -370,9 +373,12 @@ class npc_tournament_training_dummy : public CreatureScript public: npc_tournament_training_dummy(): CreatureScript("npc_tournament_training_dummy"){} - struct npc_tournament_training_dummyAI : Scripted_NoMovementAI + struct npc_tournament_training_dummyAI : ScriptedAI { - npc_tournament_training_dummyAI(Creature* creature) : Scripted_NoMovementAI(creature) {} + npc_tournament_training_dummyAI(Creature* creature) : ScriptedAI(creature) + { + SetCombatMovement(false); + } EventMap events; bool isVulnerable; @@ -442,7 +448,7 @@ class npc_tournament_training_dummy : public CreatureScript isVulnerable = true; } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { events.Update(diff); @@ -584,13 +590,15 @@ class npc_blessed_banner : public CreatureScript public: npc_blessed_banner() : CreatureScript("npc_blessed_banner") { } - struct npc_blessed_bannerAI : public Scripted_NoMovementAI + struct npc_blessed_bannerAI : public ScriptedAI { - npc_blessed_bannerAI(Creature* creature) : Scripted_NoMovementAI(creature), Summons(me) + npc_blessed_bannerAI(Creature* creature) : ScriptedAI(creature), Summons(me) { HalofSpawned = false; PhaseCount = 0; Summons.DespawnAll(); + + SetCombatMovement(false); } EventMap events; @@ -629,7 +637,7 @@ public: me->DespawnOrUnsummon(); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { events.Update(diff); diff --git a/src/server/scripts/Northrend/zone_sholazar_basin.cpp b/src/server/scripts/Northrend/zone_sholazar_basin.cpp index 7db2ae4707b..63143673185 100644 --- a/src/server/scripts/Northrend/zone_sholazar_basin.cpp +++ b/src/server/scripts/Northrend/zone_sholazar_basin.cpp @@ -321,7 +321,7 @@ public: Reset(); } - void UpdateAI(const uint32 /*uiDiff*/) + void UpdateAI(uint32 /*uiDiff*/) { if (!UpdateVictim()) return; @@ -420,7 +420,7 @@ public: } } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { npc_escortAI::UpdateAI(uiDiff); @@ -582,7 +582,7 @@ public: timer -= diff; } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (phase) proceedCwEvent(uiDiff); @@ -1120,7 +1120,7 @@ public: } } - void UpdateAI(const uint32 /*diff*/) {} + void UpdateAI(uint32 /*diff*/) {} }; CreatureAI* GetAI(Creature* creature) const diff --git a/src/server/scripts/Northrend/zone_storm_peaks.cpp b/src/server/scripts/Northrend/zone_storm_peaks.cpp index dae2ffd36f6..ba725d2dda4 100644 --- a/src/server/scripts/Northrend/zone_storm_peaks.cpp +++ b/src/server/scripts/Northrend/zone_storm_peaks.cpp @@ -186,7 +186,7 @@ public: player->FailQuest(QUEST_BITTER_DEPARTURE); } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { npc_escortAI::UpdateAI(uiDiff); if (!UpdateVictim()) @@ -318,7 +318,7 @@ public: Reset(); } - void UpdateAI(const uint32 /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (!freed) return; @@ -356,34 +356,20 @@ public: enum FreedProtoDrake { + NPC_DRAKE = 29709, + AREA_VALLEY_OF_ANCIENT_WINTERS = 4437, + TEXT_EMOTE = 0, + SPELL_KILL_CREDIT_PRISONER = 55144, SPELL_SUMMON_LIBERATED = 55073, - SPELL_KILL_CREDIT_DRAKE = 55143 -}; + SPELL_KILL_CREDIT_DRAKE = 55143, -const Position FreedDrakeWaypoints[16] = -{ - {7294.96f, -2418.733f, 823.869f, 0.0f}, - {7315.984f, -2331.46f, 826.3972f, 0.0f}, - {7271.826f, -2271.479f, 833.5917f, 0.0f}, - {7186.253f, -2218.475f, 847.5632f, 0.0f}, - {7113.195f, -2164.288f, 850.2301f, 0.0f}, - {7078.018f, -2063.106f, 854.7581f, 0.0f}, - {7073.221f, -1983.382f, 861.9246f, 0.0f}, - {7061.455f, -1885.899f, 865.119f, 0.0f}, - {7033.32f, -1826.775f, 876.2578f, 0.0f}, - {6999.902f, -1784.012f, 897.4521f, 0.0f}, - {6954.913f, -1747.043f, 897.4521f, 0.0f}, - {6933.856f, -1720.698f, 882.2022f, 0.0f}, - {6932.729f, -1687.306f, 866.1189f, 0.0f}, - {6952.458f, -1663.802f, 849.8133f, 0.0f}, - {7002.819f, -1651.681f, 831.397f, 0.0f}, - {7026.531f, -1649.239f, 828.8406f, 0.0f} + EVENT_CHECK_AREA = 1, + EVENT_REACHED_HOME = 2, }; - class npc_freed_protodrake : public CreatureScript { public: @@ -393,74 +379,60 @@ public: { npc_freed_protodrakeAI(Creature* creature) : VehicleAI(creature) {} - bool autoMove; - bool wpReached; - uint16 CheckTimer; - uint16 countWP; + EventMap events; void Reset() { - autoMove = false; - wpReached = false; - CheckTimer = 5000; - countWP = 0; + events.ScheduleEvent(EVENT_CHECK_AREA, 5000); } void MovementInform(uint32 type, uint32 id) { - if (type != POINT_MOTION_TYPE) + if (type != WAYPOINT_MOTION_TYPE) return; - if (id < 15) - { - ++countWP; - wpReached = true; - } - else + if (id == 15) // drake reached village - { - // get player that rides drake (from seat 0) - Unit* player = me->GetVehicleKit()->GetPassenger(0); - if (player && player->GetTypeId() == TYPEID_PLAYER) - { - // for each prisoner on drake, give credit - for (uint8 i = 1; i < 4; ++i) - if (Unit* prisoner = me->GetVehicleKit()->GetPassenger(i)) - { - if (prisoner->GetTypeId() != TYPEID_UNIT) - return; - prisoner->CastSpell(player, SPELL_KILL_CREDIT_PRISONER, true); - prisoner->CastSpell(prisoner, SPELL_SUMMON_LIBERATED, true); - prisoner->ExitVehicle(); - } - me->CastSpell(me, SPELL_KILL_CREDIT_DRAKE, true); - player->ExitVehicle(); - } - } + events.ScheduleEvent(EVENT_REACHED_HOME, 2000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { - if (!autoMove) + events.Update(diff); + + switch (events.ExecuteEvent()) { - if (CheckTimer < diff) - { - CheckTimer = 5000; + case EVENT_CHECK_AREA: if (me->GetAreaId() == AREA_VALLEY_OF_ANCIENT_WINTERS) { - Talk(TEXT_EMOTE, me->GetVehicleKit()->GetPassenger(0)->GetGUID()); - autoMove = true; - wpReached = true; + if (Vehicle* vehicle = me->GetVehicleKit()) + if (Unit* passenger = vehicle->GetPassenger(0)) + { + Talk(TEXT_EMOTE, passenger->GetGUID()); + me->GetMotionMaster()->MovePath(NPC_DRAKE, false); + } } - } - else - CheckTimer -= diff; - } - - if (wpReached && autoMove) - { - wpReached = false; - me->GetMotionMaster()->MovePoint(countWP, FreedDrakeWaypoints[countWP]); + else + events.ScheduleEvent(EVENT_CHECK_AREA, 5000); + break; + case EVENT_REACHED_HOME: + Unit* player = me->GetVehicleKit()->GetPassenger(0); + if (player && player->GetTypeId() == TYPEID_PLAYER) + { + // for each prisoner on drake, give credit + for (uint8 i = 1; i < 4; ++i) + if (Unit* prisoner = me->GetVehicleKit()->GetPassenger(i)) + { + if (prisoner->GetTypeId() != TYPEID_UNIT) + return; + prisoner->CastSpell(player, SPELL_KILL_CREDIT_PRISONER, true); + prisoner->CastSpell(prisoner, SPELL_SUMMON_LIBERATED, true); + prisoner->ExitVehicle(); + } + me->CastSpell(me, SPELL_KILL_CREDIT_DRAKE, true); + player->ExitVehicle(); + } + break; } } }; @@ -505,7 +477,7 @@ public: { } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { npc_escortAI::UpdateAI(diff); @@ -544,7 +516,7 @@ class npc_hyldsmeet_protodrake : public CreatureScript _accessoryRespawnTimer = 5 * MINUTE * IN_MILLISECONDS; } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { //! We need to manually reinstall accessories because the vehicle itself is friendly to players, //! so EnterEvadeMode is never triggered. The accessory on the other hand is hostile and killable. diff --git a/src/server/scripts/Northrend/zone_wintergrasp.cpp b/src/server/scripts/Northrend/zone_wintergrasp.cpp index 8c255d49d25..ce0eaefac90 100644 --- a/src/server/scripts/Northrend/zone_wintergrasp.cpp +++ b/src/server/scripts/Northrend/zone_wintergrasp.cpp @@ -224,7 +224,7 @@ class npc_wg_spirit_guide : public CreatureScript { npc_wg_spirit_guideAI(Creature* creature) : ScriptedAI(creature) { } - void UpdateAI(uint32 const /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (!me->HasUnitState(UNIT_STATE_CASTING)) DoCast(me, SPELL_CHANNEL_SPIRIT_HEAL); diff --git a/src/server/scripts/Northrend/zone_zuldrak.cpp b/src/server/scripts/Northrend/zone_zuldrak.cpp index 69e8d900435..33a573b9b35 100644 --- a/src/server/scripts/Northrend/zone_zuldrak.cpp +++ b/src/server/scripts/Northrend/zone_zuldrak.cpp @@ -170,7 +170,7 @@ public: } } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (UpdateVictim()) { @@ -409,7 +409,7 @@ public: } } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { ScriptedAI::UpdateAI(uiDiff); @@ -636,7 +636,7 @@ public: DoCast(who, SPELL_IMPALE); } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (!UpdateVictim()) return; @@ -761,7 +761,7 @@ public: DoCast(me, SPELL_GROW); } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { npc_escortAI::UpdateAI(uiDiff); @@ -832,7 +832,7 @@ public: uiCorrodeFleshTimer = 6000; } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (!UpdateVictim()) return; @@ -950,7 +950,7 @@ public: } } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { npc_escortAI::UpdateAI(uiDiff); @@ -1099,7 +1099,7 @@ public: } } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (!UpdateVictim()) return; @@ -1213,7 +1213,7 @@ public: } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (!UpdateVictim()) return; @@ -1309,7 +1309,7 @@ public: m_heading = me->GetOrientation(); } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (m_uiPhase) { diff --git a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp index 040ca012902..0fb49dfc284 100644 --- a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp +++ b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp @@ -72,7 +72,7 @@ public: myClass = myclass; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -234,7 +234,7 @@ public: me->SummonCreature(19412, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 600000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -322,7 +322,7 @@ public: { } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_shirrak_the_dead_watcher.cpp b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_shirrak_the_dead_watcher.cpp index 7509f6331f7..00ec9b9fe4a 100644 --- a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_shirrak_the_dead_watcher.cpp +++ b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_shirrak_the_dead_watcher.cpp @@ -94,7 +94,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Inhibitmagic_Timer if (Inhibitmagic_Timer <= diff) @@ -185,7 +185,7 @@ public: void EnterCombat(Unit* /*who*/) { } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp b/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp index 7e1fa41c6da..f26760a82b7 100644 --- a/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp +++ b/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp @@ -149,7 +149,7 @@ public: summons.DespawnAll(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -269,7 +269,7 @@ public: summoned->AI()->AttackStart(me->getVictim()); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -335,7 +335,7 @@ public: isFireboltTurn = true; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_pandemonius.cpp b/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_pandemonius.cpp index c8bd6dbb069..e4d8d959941 100644 --- a/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_pandemonius.cpp +++ b/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_pandemonius.cpp @@ -82,7 +82,7 @@ public: Talk(SAY_AGGRO); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_darkweaver_syth.cpp b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_darkweaver_syth.cpp index 1a53a140f28..371c94035ac 100644 --- a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_darkweaver_syth.cpp +++ b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_darkweaver_syth.cpp @@ -127,7 +127,7 @@ public: DoCast(me, SPELL_SUMMON_SYTH_SHADOW, true); //right } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -220,7 +220,7 @@ public: void EnterCombat(Unit* /*who*/) { } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -279,7 +279,7 @@ public: void EnterCombat(Unit* /*who*/) { } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -333,7 +333,7 @@ public: void EnterCombat(Unit* /*who*/) { } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -388,7 +388,7 @@ public: void EnterCombat(Unit* /*who*/) { } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_tailonking_ikiss.cpp b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_tailonking_ikiss.cpp index 8a872039e37..4a9a98abcde 100644 --- a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_tailonking_ikiss.cpp +++ b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_tailonking_ikiss.cpp @@ -127,7 +127,7 @@ public: Talk(SAY_SLAY); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_ambassador_hellmaw.cpp b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_ambassador_hellmaw.cpp index b9163c13413..cd7f8e120de 100644 --- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_ambassador_hellmaw.cpp +++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_ambassador_hellmaw.cpp @@ -142,7 +142,7 @@ public: instance->SetData(TYPE_HELLMAW, DONE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!Intro && !HasEscortState(STATE_ESCORT_ESCORTING)) { diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_blackheart_the_inciter.cpp b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_blackheart_the_inciter.cpp index 4ae2d59799a..0c0bae17c5d 100644 --- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_blackheart_the_inciter.cpp +++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_blackheart_the_inciter.cpp @@ -106,7 +106,7 @@ public: instance->SetData(DATA_BLACKHEARTTHEINCITEREVENT, IN_PROGRESS); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp index 80eb7c03819..a067bbf92a0 100644 --- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp +++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp @@ -93,7 +93,7 @@ public: void EnterCombat(Unit* /*who*/){} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!VorpilGUID) { @@ -264,7 +264,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp index fbe62e2a003..e09371bca13 100644 --- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp +++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp @@ -111,7 +111,7 @@ public: me->DealDamage(target, (target->GetHealth()*90)/100, NULL, SPELL_DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NATURE, spell); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target or casting if (!UpdateVictim() || me->IsNonMeleeSpellCasted(false)) diff --git a/src/server/scripts/Outland/BlackTemple/boss_bloodboil.cpp b/src/server/scripts/Outland/BlackTemple/boss_bloodboil.cpp index 3a56a0bfed2..5a292d165cc 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_bloodboil.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_bloodboil.cpp @@ -187,9 +187,7 @@ public: void RevertThreatOnTarget(uint64 guid) { - Unit* unit = NULL; - unit = Unit::GetUnit(*me, guid); - if (unit) + if (Unit* unit = Unit::GetUnit(*me, guid)) { if (DoGetThreat(unit)) DoModifyThreatPercent(unit, -100); @@ -198,7 +196,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -279,8 +277,7 @@ public: { if (Phase1) { - Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0); - if (target && target->isAlive()) + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) { Phase1 = false; @@ -308,7 +305,8 @@ public: AcidGeyserTimer = 1000; PhaseChangeTimer = 30000; } - } else // Encounter is a loop pretty much. Phase 1 -> Phase 2 -> Phase 1 -> Phase 2 till death or enrage + } + else // Encounter is a loop pretty much. Phase 1 -> Phase 2 -> Phase 1 -> Phase 2 till death or enrage { if (TargetGUID) RevertThreatOnTarget(TargetGUID); diff --git a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp index b8003761cc7..844428c8fa7 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp @@ -422,8 +422,7 @@ public: Glaive->InterruptNonMeleeSpells(true); DoCast(me, SPELL_FLAME_ENRAGE, true); DoResetThreat(); - Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0); - if (target && target->isAlive()) + if (SelectTarget(SELECT_TARGET_RANDOM, 0)) { me->AddThreat(me->getVictim(), 5000000.0f); AttackStart(me->getVictim()); @@ -442,7 +441,7 @@ public: GlaiveGUID = guid; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -957,7 +956,7 @@ public: ++TransformCount; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if ((!UpdateVictim()) && Phase < PHASE_TALK_SEQUENCE) return; @@ -1231,7 +1230,7 @@ public: ScriptedAI::AttackStart(who); } - void DoAction(const int32 param) + void DoAction(int32 param) { if (param > PHASE_ILLIDAN_NULL && param < PHASE_ILLIDAN_MAX) EnterPhase(PhaseIllidan(param)); @@ -1303,7 +1302,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if ((!UpdateVictim()) && !Timer[EVENT_MAIEV_STEALTH]) @@ -1733,7 +1732,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!me->IsVisible()) { @@ -2079,7 +2078,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (DespawnTimer) { @@ -2150,7 +2149,7 @@ public: target->RemoveAurasDueToSpell(SPELL_PARALYZE); } - void UpdateAI(const uint32 /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (!UpdateVictim()) return; @@ -2248,7 +2247,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!me->getVictim()) { diff --git a/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp b/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp index ec85d675225..dc56f7abe07 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp @@ -174,7 +174,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; 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 f9c46aa3f77..a6432114ded 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp @@ -248,7 +248,7 @@ public: instance->SetData(DATA_RELIQUARYOFSOULSEVENT, DONE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!Phase) return; @@ -469,7 +469,7 @@ public: me->AddThreat(target, 1000000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (me->isInCombat()) { @@ -574,7 +574,7 @@ public: Talk(DESI_SAY_SLAY); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -665,7 +665,7 @@ public: Talk(ANGER_SAY_SLAY); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp index fe5af2a689e..9860cf0385a 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp @@ -139,7 +139,7 @@ public: void EnterCombat(Unit* /*who*/) {} void AttackStart(Unit* /*who*/) {} void MoveInLineOfSight(Unit* /*who*/) {} - void UpdateAI(const uint32 /*diff*/) {} + void UpdateAI(uint32 /*diff*/) {} }; }; @@ -175,7 +175,7 @@ public: void EnterCombat(Unit* /*who*/) {} void AttackStart(Unit* /*who*/) {} void MoveInLineOfSight(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (StartBanishing) return; @@ -423,7 +423,7 @@ public: void SetAkamaGUID(uint64 guid) { AkamaGUID = guid; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!me->isInCombat()) return; @@ -725,7 +725,7 @@ public: summons.DespawnAll(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!EventBegun) return; diff --git a/src/server/scripts/Outland/BlackTemple/boss_supremus.cpp b/src/server/scripts/Outland/BlackTemple/boss_supremus.cpp index 6bc6633e49e..114f83661b3 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_supremus.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_supremus.cpp @@ -203,7 +203,7 @@ public: return target; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -272,9 +272,12 @@ public: return new npc_volcanoAI (creature); } - struct npc_volcanoAI : public Scripted_NoMovementAI + struct npc_volcanoAI : public ScriptedAI { - npc_volcanoAI(Creature* creature) : Scripted_NoMovementAI(creature) {} + npc_volcanoAI(Creature* creature) : ScriptedAI(creature) + { + SetCombatMovement(false); + } void Reset() { @@ -290,12 +293,12 @@ public: void MoveInLineOfSight(Unit* /*who*/) {} - void DoAction(const int32 /*info*/) + void DoAction(int32 /*info*/) { me->RemoveAura(SPELL_VOLCANIC_ERUPTION); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (wait <= diff)//wait 3secs before casting { diff --git a/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp b/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp index 6c28b058cf7..5eb9ffcabc8 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp @@ -86,7 +86,7 @@ public: me->RemoveCorpse(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (CheckTeronTimer <= diff) { @@ -188,7 +188,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (CheckPlayerTimer <= diff) { @@ -378,7 +378,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (Intro && !Done) { @@ -468,8 +468,7 @@ public: if (CrushingShadowsTimer <= diff) { - Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0); - if (target && target->isAlive()) + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) DoCast(target, SPELL_CRUSHING_SHADOWS); CrushingShadowsTimer = urand(10, 26) * 1000; } else CrushingShadowsTimer -= diff; diff --git a/src/server/scripts/Outland/BlackTemple/boss_warlord_najentus.cpp b/src/server/scripts/Outland/BlackTemple/boss_warlord_najentus.cpp index 7a56734bc3b..127ca68ce39 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_warlord_najentus.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_warlord_najentus.cpp @@ -146,7 +146,7 @@ public: events.RescheduleEvent(EVENT_SHIELD, 60000 + inc); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Outland/BlackTemple/illidari_council.cpp b/src/server/scripts/Outland/BlackTemple/illidari_council.cpp index 03fa5235d18..d63e8ee20b0 100644 --- a/src/server/scripts/Outland/BlackTemple/illidari_council.cpp +++ b/src/server/scripts/Outland/BlackTemple/illidari_council.cpp @@ -169,7 +169,7 @@ public: void AttackStart(Unit* /*who*/) {} void MoveInLineOfSight(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!EventStarted) return; @@ -315,7 +315,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!EventBegun) return; @@ -536,7 +536,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -641,7 +641,7 @@ public: Talk(SAY_ZERE_DEATH); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -741,7 +741,7 @@ public: Talk(SAY_MALA_DEATH); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -827,7 +827,7 @@ public: Talk(SAY_VERA_DEATH); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_fathomlord_karathress.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_fathomlord_karathress.cpp index d9ad35f9552..b9df26d11c6 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_fathomlord_karathress.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_fathomlord_karathress.cpp @@ -222,14 +222,12 @@ public: StartEvent(who); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Only if not incombat check if the event is started if (!me->isInCombat() && instance && instance->GetData(DATA_KARATHRESSEVENT)) { - Unit* target = Unit::GetUnit(*me, instance->GetData64(DATA_KARATHRESSEVENT_STARTER)); - - if (target) + if (Unit* target = Unit::GetUnit(*me, instance->GetData64(DATA_KARATHRESSEVENT_STARTER))) { AttackStart(target); GetAdvisors(); @@ -360,12 +358,8 @@ public: { if (instance) { - Creature* Karathress = NULL; - Karathress = (Unit::GetCreature((*me), instance->GetData64(DATA_KARATHRESS))); - - if (Karathress) - if (!me->isAlive() && Karathress) - CAST_AI(boss_fathomlord_karathress::boss_fathomlord_karathressAI, Karathress->AI())->EventSharkkisDeath(); + if (Creature* Karathress = (Unit::GetCreature((*me), instance->GetData64(DATA_KARATHRESS)))) + CAST_AI(boss_fathomlord_karathress::boss_fathomlord_karathressAI, Karathress->AI())->EventSharkkisDeath(); } } @@ -378,17 +372,13 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Only if not incombat check if the event is started if (!me->isInCombat() && instance && instance->GetData(DATA_KARATHRESSEVENT)) { - Unit* target = Unit::GetUnit(*me, instance->GetData64(DATA_KARATHRESSEVENT_STARTER)); - - if (target) - { + if (Unit* target = Unit::GetUnit(*me, instance->GetData64(DATA_KARATHRESSEVENT_STARTER))) AttackStart(target); - } } //Return since we have no target @@ -445,12 +435,13 @@ public: pet_id = CREATURE_FATHOM_SPOREBAT; } //DoCast(me, spell_id, true); - Creature* Pet = DoSpawnCreature(pet_id, 0, 0, 0, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0); - if (Pet && target) + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) { - Pet->AI()->AttackStart(target); - SummonedPet = Pet->GetGUID(); + if (Creature* Pet = DoSpawnCreature(pet_id, 0, 0, 0, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000)) + { + Pet->AI()->AttackStart(target); + SummonedPet = Pet->GetGUID(); + } } } else Pet_Timer -= diff; @@ -500,12 +491,8 @@ public: { if (instance) { - Creature* Karathress = NULL; - Karathress = (Unit::GetCreature((*me), instance->GetData64(DATA_KARATHRESS))); - - if (Karathress) - if (!me->isAlive() && Karathress) - CAST_AI(boss_fathomlord_karathress::boss_fathomlord_karathressAI, Karathress->AI())->EventTidalvessDeath(); + if (Creature* Karathress = Unit::GetCreature((*me), instance->GetData64(DATA_KARATHRESS))) + CAST_AI(boss_fathomlord_karathress::boss_fathomlord_karathressAI, Karathress->AI())->EventTidalvessDeath(); } } @@ -519,17 +506,13 @@ public: DoCast(me, SPELL_WINDFURY_WEAPON); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Only if not incombat check if the event is started if (!me->isInCombat() && instance && instance->GetData(DATA_KARATHRESSEVENT)) { - Unit* target = Unit::GetUnit(*me, instance->GetData64(DATA_KARATHRESSEVENT_STARTER)); - - if (target) - { + if (Unit* target = Unit::GetUnit(*me, instance->GetData64(DATA_KARATHRESSEVENT_STARTER))) AttackStart(target); - } } //Return since we have no target @@ -627,12 +610,8 @@ public: { if (instance) { - Creature* Karathress = NULL; - Karathress = (Unit::GetCreature((*me), instance->GetData64(DATA_KARATHRESS))); - - if (Karathress) - if (!me->isAlive() && Karathress) - CAST_AI(boss_fathomlord_karathress::boss_fathomlord_karathressAI, Karathress->AI())->EventCaribdisDeath(); + if (Creature* Karathress = Unit::GetCreature((*me), instance->GetData64(DATA_KARATHRESS))) + CAST_AI(boss_fathomlord_karathress::boss_fathomlord_karathressAI, Karathress->AI())->EventCaribdisDeath(); } } @@ -645,17 +624,13 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Only if not incombat check if the event is started if (!me->isInCombat() && instance && instance->GetData(DATA_KARATHRESSEVENT)) { - Unit* target = Unit::GetUnit(*me, instance->GetData64(DATA_KARATHRESSEVENT_STARTER)); - - if (target) - { + if (Unit* target = Unit::GetUnit(*me, instance->GetData64(DATA_KARATHRESSEVENT_STARTER))) AttackStart(target); - } } //Return since we have no target @@ -697,11 +672,8 @@ public: Cyclone->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); Cyclone->setFaction(me->getFaction()); Cyclone->CastSpell(Cyclone, SPELL_CYCLONE_CYCLONE, true); - Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0); - if (target) - { + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) Cyclone->AI()->AttackStart(target); - } } } else Cyclone_Timer -= diff; diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_hydross_the_unstable.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_hydross_the_unstable.cpp index b31292c4b00..2f0d736d8ef 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_hydross_the_unstable.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_hydross_the_unstable.cpp @@ -212,7 +212,7 @@ public: Summons.DespawnAll(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!beam) { @@ -272,8 +272,7 @@ public: //VileSludge_Timer if (VileSludge_Timer <= diff) { - Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0); - if (target) + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) DoCast(target, SPELL_VILE_SLUDGE); VileSludge_Timer = 15000; diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lady_vashj.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lady_vashj.cpp index b0717d29228..19b57509093 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lady_vashj.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lady_vashj.cpp @@ -310,7 +310,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!CanAttack && Intro) { @@ -599,7 +599,7 @@ public: void MoveInLineOfSight(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!instance) return; @@ -677,7 +677,7 @@ public: me->AddThreat(who, 0.1f); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { // PoisonBoltTimer if (PoisonBoltTimer <= diff) @@ -754,7 +754,7 @@ public: MovementTimer = 0; } - void UpdateAI (const uint32 diff) + void UpdateAI(uint32 diff) { // Random movement if (MovementTimer <= diff) @@ -834,7 +834,7 @@ public: void MoveInLineOfSight(Unit* /*who*/) {} - void UpdateAI (const uint32 diff) + void UpdateAI(uint32 diff) { if (!instance) return; 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 2c8d067a865..f4e0c6cee2a 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 @@ -132,7 +132,7 @@ public: return; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) @@ -316,7 +316,7 @@ public: me->SetDisplayId(MODEL_NIGHTELF); // and reseting equipment - me->LoadEquipment(me->GetEquipmentId()); + me->LoadEquipment(); if (instance && instance->GetData64(DATA_LEOTHERAS_EVENT_STARTER)) { @@ -410,10 +410,10 @@ public: if (me->HasAura(AURA_BANISH)) return; - me->LoadEquipment(me->GetEquipmentId()); + me->LoadEquipment(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (me->HasAura(AURA_BANISH) || !UpdateVictim()) @@ -558,7 +558,7 @@ public: { //switch to nightelf form me->SetDisplayId(MODEL_NIGHTELF); - me->LoadEquipment(me->GetEquipmentId()); + me->LoadEquipment(); CastConsumingMadness(); DespawnDemon(); @@ -589,7 +589,7 @@ public: Talk(SAY_FINAL_FORM); me->SetDisplayId(MODEL_NIGHTELF); - me->LoadEquipment(me->GetEquipmentId()); + me->LoadEquipment(); } } }; @@ -643,7 +643,7 @@ public: StartEvent(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) @@ -737,7 +737,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (instance) { diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp index 788de7753ff..18324822c4a 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp @@ -78,10 +78,11 @@ public: return new boss_the_lurker_belowAI (creature); } - struct boss_the_lurker_belowAI : public Scripted_NoMovementAI + struct boss_the_lurker_belowAI : public ScriptedAI { - boss_the_lurker_belowAI(Creature* creature) : Scripted_NoMovementAI(creature), Summons(me) + boss_the_lurker_belowAI(Creature* creature) : ScriptedAI(creature), Summons(me) { + SetCombatMovement(false); instance = creature->GetInstanceScript(); } @@ -152,11 +153,10 @@ public: Summons.DespawnAll(); } - void EnterCombat(Unit* who) + void EnterCombat(Unit* /*who*/) { if (instance) instance->SetData(DATA_THELURKERBELOWEVENT, IN_PROGRESS); - Scripted_NoMovementAI::EnterCombat(who); } void MoveInLineOfSight(Unit* who) @@ -177,7 +177,7 @@ public: me->SetReactState(REACT_AGGRESSIVE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!CanStartEvent) // boss is invisible, don't attack { @@ -368,10 +368,11 @@ public: return new mob_coilfang_ambusherAI (creature); } - struct mob_coilfang_ambusherAI : public Scripted_NoMovementAI + struct mob_coilfang_ambusherAI : public ScriptedAI { - mob_coilfang_ambusherAI(Creature* creature) : Scripted_NoMovementAI(creature) + mob_coilfang_ambusherAI(Creature* creature) : ScriptedAI(creature) { + SetCombatMovement(false); } uint32 MultiShotTimer; @@ -392,7 +393,7 @@ public: AttackStart(who); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (MultiShotTimer <= diff) { diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_morogrim_tidewalker.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_morogrim_tidewalker.cpp index 9476bb28f8e..592746742f5 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_morogrim_tidewalker.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_morogrim_tidewalker.cpp @@ -163,7 +163,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) @@ -184,10 +184,9 @@ public: for (uint8 i = 0; i < 10; ++i) { - Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0); - Creature* Murloc = me->SummonCreature(NPC_TIDEWALKER_LURKER, MurlocCords[i][0], MurlocCords[i][1], MurlocCords[i][2], MurlocCords[i][3], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 10000); - if (target && Murloc) - Murloc->AI()->AttackStart(target); + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + if (Creature* Murloc = me->SummonCreature(NPC_TIDEWALKER_LURKER, MurlocCords[i][0], MurlocCords[i][1], MurlocCords[i][2], MurlocCords[i][3], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 10000)) + Murloc->AI()->AttackStart(target); } Talk(EMOTE_EARTHQUAKE); Earthquake = false; @@ -321,7 +320,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_hydromancer_thespia.cpp b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_hydromancer_thespia.cpp index f2ed2560bbf..c9d394f6f2d 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_hydromancer_thespia.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_hydromancer_thespia.cpp @@ -101,7 +101,7 @@ public: instance->SetData(TYPE_HYDROMANCER_THESPIA, IN_PROGRESS); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -170,7 +170,7 @@ public: void EnterCombat(Unit* /*who*/) { } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_mekgineer_steamrigger.cpp b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_mekgineer_steamrigger.cpp index 3897f370b0c..12e4e3a496f 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_mekgineer_steamrigger.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_mekgineer_steamrigger.cpp @@ -122,7 +122,7 @@ public: DoSpawnCreature(ENTRY_STREAMRIGGER_MECHANIC, 7, -5, 0, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 240000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -223,7 +223,7 @@ public: void EnterCombat(Unit* /*who*/) { } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (Repair_Timer <= diff) { diff --git a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_warlord_kalithresh.cpp b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_warlord_kalithresh.cpp index 23b25da91ea..914539b27c9 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_warlord_kalithresh.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_warlord_kalithresh.cpp @@ -167,7 +167,7 @@ public: instance->SetData(TYPE_WARLORD_KALITHRESH, DONE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Outland/CoilfangReservoir/underbog/boss_hungarfen.cpp b/src/server/scripts/Outland/CoilfangReservoir/underbog/boss_hungarfen.cpp index c55e93726a9..7e2c13483bd 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/underbog/boss_hungarfen.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/underbog/boss_hungarfen.cpp @@ -63,7 +63,7 @@ public: { } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -138,7 +138,7 @@ public: void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (Stop) return; diff --git a/src/server/scripts/Outland/CoilfangReservoir/underbog/boss_the_black_stalker.cpp b/src/server/scripts/Outland/CoilfangReservoir/underbog/boss_the_black_stalker.cpp index 1e8fd8b2676..22f406c6c5b 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/underbog/boss_the_black_stalker.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/underbog/boss_the_black_stalker.cpp @@ -102,7 +102,7 @@ public: strider->DisappearAndDie(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp b/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp index 0a5c8b0c8b6..8abde7e0694 100644 --- a/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp +++ b/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp @@ -158,7 +158,7 @@ public: } } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Outland/GruulsLair/boss_high_king_maulgar.cpp b/src/server/scripts/Outland/GruulsLair/boss_high_king_maulgar.cpp index 83596c46936..3018c18383e 100644 --- a/src/server/scripts/Outland/GruulsLair/boss_high_king_maulgar.cpp +++ b/src/server/scripts/Outland/GruulsLair/boss_high_king_maulgar.cpp @@ -217,7 +217,7 @@ public: DoZoneInCombat(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Only if not incombat check if the event is started if (!me->isInCombat() && instance && instance->GetData(DATA_MAULGAREVENT)) @@ -377,7 +377,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Only if not incombat check if the event is started if (!me->isInCombat() && instance && instance->GetData(DATA_MAULGAREVENT)) @@ -492,7 +492,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Only if not incombat check if the event is started if (!me->isInCombat() && instance && instance->GetData(DATA_MAULGAREVENT)) @@ -519,8 +519,7 @@ public: //GreaterPolymorph_Timer if (GreaterPolymorph_Timer <= diff) { - Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0); - if (target) + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) DoCast(target, SPELL_GREATER_POLYMORPH); GreaterPolymorph_Timer = urand(15000, 20000); @@ -612,7 +611,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Only if not incombat check if the event is started if (!me->isInCombat() && instance && instance->GetData(DATA_MAULGAREVENT)) @@ -722,7 +721,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Only if not incombat check if the event is started if (!me->isInCombat() && instance && instance->GetData(DATA_MAULGAREVENT)) diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp index 6d3ec669cd5..0e584686f9b 100644 --- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp @@ -84,7 +84,7 @@ class boss_broggok : public CreatureScript summoned->CastSpell(summoned, SPELL_POISON, false, 0, 0, me->GetGUID()); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -127,7 +127,7 @@ class boss_broggok : public CreatureScript } } - void DoAction(int32 const action) + void DoAction(int32 action) { switch (action) { diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp index 7d8885ae0ae..d2096140ff4 100644 --- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp @@ -201,7 +201,7 @@ class boss_kelidan_the_breaker : public CreatureScript instance->HandleGameObject(instance->GetData64(DATA_DOOR6), true); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) { @@ -330,7 +330,7 @@ class mob_shadowmoon_channeler : public CreatureScript CAST_AI(boss_kelidan_the_breaker::boss_kelidan_the_breakerAI, Kelidan->AI())->ChannelerDied(killer); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) { diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_the_maker.cpp b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_the_maker.cpp index bab49b95974..8014ee9f8e0 100644 --- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_the_maker.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_the_maker.cpp @@ -105,7 +105,7 @@ class boss_the_maker : public CreatureScript } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_omor_the_unscarred.cpp b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_omor_the_unscarred.cpp index b83307d8dcc..0c5325f7172 100644 --- a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_omor_the_unscarred.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_omor_the_unscarred.cpp @@ -118,7 +118,7 @@ class boss_omor_the_unscarred : public CreatureScript Talk(SAY_DIE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp index 30a2813b286..e820e22d65a 100644 --- a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp @@ -124,7 +124,7 @@ class boss_nazan : public CreatureScript me->SummonCreature(ENTRY_LIQUID_FIRE, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), target->GetOrientation(), TEMPSUMMON_TIMED_DESPAWN, 30000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -243,7 +243,7 @@ class boss_vazruden : public CreatureScript Talk(SAY_DIE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) { @@ -396,7 +396,7 @@ class boss_vazruden_the_herald : public CreatureScript sentryDown = true; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { switch (phase) { @@ -487,7 +487,7 @@ class mob_hellfire_sentry : public CreatureScript CAST_AI(boss_vazruden_the_herald::boss_vazruden_the_heraldAI, herald->AI())->SentryDownBy(killer); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_watchkeeper_gargolmar.cpp b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_watchkeeper_gargolmar.cpp index 7aae6cebff9..8961c94ab31 100644 --- a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_watchkeeper_gargolmar.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_watchkeeper_gargolmar.cpp @@ -112,7 +112,7 @@ class boss_watchkeeper_gargolmar : public CreatureScript Talk(SAY_DIE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp index aeec7d14b26..777f24f779b 100644 --- a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp @@ -151,7 +151,7 @@ class mob_abyssal : public CreatureScript ScriptedAI::MoveInLineOfSight(who); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (trigger) { @@ -339,7 +339,7 @@ class boss_magtheridon : public CreatureScript Talk(SAY_FREED); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!me->isInCombat()) { @@ -528,7 +528,7 @@ class mob_hellfire_channeler : public CreatureScript instance->SetData(DATA_CHANNELER_EVENT, DONE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp index 00f0fd8964e..09dd791020e 100644 --- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp @@ -213,7 +213,7 @@ class boss_grand_warlock_nethekurse : public CreatureScript instance->HandleGameObject(instance->GetData64(DATA_NETHEKURSE_DOOR), true); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (IsIntroEvent) { @@ -346,7 +346,7 @@ class mob_fel_orc_convert : public CreatureScript } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warbringer_omrogg.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warbringer_omrogg.cpp index dd23f89dcfb..ac261cc5936 100644 --- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warbringer_omrogg.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warbringer_omrogg.cpp @@ -130,7 +130,7 @@ class mob_omrogg_heads : public CreatureScript DeathYell = true; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!DeathYell) return; @@ -312,7 +312,7 @@ class boss_warbringer_omrogg : public CreatureScript instance->SetData(TYPE_OMROGG, DONE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (Delay_Timer <= diff) { diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warchief_kargath_bladefist.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warchief_kargath_bladefist.cpp index f437018ac4b..13f47b276ef 100644 --- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warchief_kargath_bladefist.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warchief_kargath_bladefist.cpp @@ -194,7 +194,7 @@ class boss_warchief_kargath_bladefist : public CreatureScript me->SummonCreature(MOB_SHATTERED_ASSASSIN, AssassExit[0], AssassExit[1]-8, AssassExit[2], 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp index f0a823472df..099bd6949cb 100644 --- a/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp +++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp @@ -212,7 +212,7 @@ class boss_alar : public CreatureScript } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!me->isInCombat()) // sometimes isincombat but !incombat, faction bug? return; @@ -515,7 +515,7 @@ class mob_ember_of_alar : public CreatureScript } } - void UpdateAI(const uint32 /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (!UpdateVictim()) return; @@ -553,7 +553,7 @@ class mob_flame_patch_alar : public CreatureScript void EnterCombat(Unit* /*who*/) {} void AttackStart(Unit* /*who*/) {} void MoveInLineOfSight(Unit* /*who*/) {} - void UpdateAI(const uint32 /*diff*/) {} + void UpdateAI(uint32 /*diff*/) {} }; CreatureAI* GetAI(Creature* creature) const diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp index 01ca1636c6b..b8245729d73 100644 --- a/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp +++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp @@ -195,7 +195,7 @@ class boss_high_astromancer_solarian : public CreatureScript return (z*sqrt(radius*radius - (x - CENTER_X)*(x - CENTER_X)) + CENTER_Y); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -245,11 +245,13 @@ class boss_high_astromancer_solarian : public CreatureScript } else { - Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0); - if (!me->HasInArc(2.5f, target)) - target = me->getVictim(); - if (target) + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + { + if (!me->HasInArc(2.5f, target)) + target = me->getVictim(); + DoCast(target, SPELL_ARCANE_MISSILES); + } } ArcaneMissiles_Timer = 3000; } @@ -441,7 +443,7 @@ class mob_solarium_priest : public CreatureScript { } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp index 07d563cd762..a6497e6a373 100644 --- a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp +++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp @@ -241,7 +241,7 @@ struct advisorbase_ai : public ScriptedAI } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (DelayRes_Timer) { @@ -465,7 +465,7 @@ class boss_kaelthas : public CreatureScript } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Phase 1 switch (Phase) @@ -1046,7 +1046,7 @@ class boss_thaladred_the_darkener : public CreatureScript Talk(SAY_THALADRED_DEATH); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { advisorbase_ai::UpdateAI(diff); @@ -1138,7 +1138,7 @@ class boss_lord_sanguinar : public CreatureScript Talk(SAY_SANGUINAR_DEATH); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { advisorbase_ai::UpdateAI(diff); @@ -1227,7 +1227,7 @@ class boss_grand_astromancer_capernian : public CreatureScript return; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { advisorbase_ai::UpdateAI(diff); @@ -1353,7 +1353,7 @@ class boss_master_engineer_telonicus : public CreatureScript Talk(SAY_TELONICUS_AGGRO); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { advisorbase_ai::UpdateAI(diff); @@ -1404,9 +1404,12 @@ class mob_kael_flamestrike : public CreatureScript : CreatureScript("mob_kael_flamestrike") { } - struct mob_kael_flamestrikeAI : public Scripted_NoMovementAI + struct mob_kael_flamestrikeAI : public ScriptedAI { - mob_kael_flamestrikeAI(Creature* creature) : Scripted_NoMovementAI(creature) {} + mob_kael_flamestrikeAI(Creature* creature) : ScriptedAI(creature) + { + SetCombatMovement(false); + } uint32 Timer; bool Casting; @@ -1426,7 +1429,7 @@ class mob_kael_flamestrike : public CreatureScript void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!Casting) { @@ -1487,7 +1490,7 @@ class mob_phoenix_tk : public CreatureScript me->SummonCreature(NPC_PHOENIX_EGG, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), me->GetOrientation(), TEMPSUMMON_TIMED_DESPAWN, 16000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -1553,7 +1556,7 @@ class mob_phoenix_egg_tk : public CreatureScript summoned->CastSpell(summoned, SPELL_REBIRTH, false); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!Rebirth_Timer) return; diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp index 468c9ab1e75..d4526e52543 100644 --- a/src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp +++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp @@ -100,7 +100,7 @@ class boss_void_reaver : public CreatureScript instance->SetData(DATA_VOIDREAVEREVENT, IN_PROGRESS); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Outland/TempestKeep/Eye/the_eye.cpp b/src/server/scripts/Outland/TempestKeep/Eye/the_eye.cpp index d5e39d09301..fd00b2c5b4e 100644 --- a/src/server/scripts/Outland/TempestKeep/Eye/the_eye.cpp +++ b/src/server/scripts/Outland/TempestKeep/Eye/the_eye.cpp @@ -62,7 +62,7 @@ class mob_crystalcore_devastator : public CreatureScript { } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_gyrokill.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_gyrokill.cpp index dc9940c87b8..2b597be8a9f 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_gyrokill.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_gyrokill.cpp @@ -79,7 +79,7 @@ class boss_gatewatcher_gyrokill : public CreatureScript Talk(SAY_SLAY); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp index 440e17a29cf..4a2026a4ed1 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp @@ -83,7 +83,7 @@ class boss_gatewatcher_iron_hand : public CreatureScript Talk(SAY_DEATH); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_mechano_lord_capacitus.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_mechano_lord_capacitus.cpp index 1a43798ccef..728b3f715b2 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_mechano_lord_capacitus.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_mechano_lord_capacitus.cpp @@ -99,7 +99,7 @@ class boss_mechano_lord_capacitus : public CreatureScript Talk(YELL_DEATH); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp index 9bda618b732..902fb8e76b3 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp @@ -91,7 +91,7 @@ class boss_nethermancer_sepethrea : public CreatureScript Talk(SAY_DEATH); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -177,7 +177,7 @@ class mob_ragin_flames : public CreatureScript { } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Check_Timer if (Check_Timer <= diff) diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp index 9d894e41b60..65cd195fb80 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp @@ -106,7 +106,7 @@ class boss_pathaleon_the_calculator : public CreatureScript } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -189,7 +189,7 @@ class mob_nether_wraith : public CreatureScript void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.cpp b/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.cpp index cd3fb897181..0b52b705753 100644 --- a/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.cpp +++ b/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.cpp @@ -138,7 +138,7 @@ class npc_millhouse_manastorm : public CreatureScript ->FailQuest();*/ } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!Init) { @@ -398,7 +398,7 @@ class npc_warden_mellichar : public CreatureScript } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!IsRunning) return; diff --git a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp index 141257dae63..c6f47fe8de7 100644 --- a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp +++ b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp @@ -152,7 +152,7 @@ class boss_harbinger_skyriss : public CreatureScript DoCast(me, SPELL_33_ILLUSION); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!Intro) { diff --git a/src/server/scripts/Outland/TempestKeep/botanica/boss_commander_sarannis.cpp b/src/server/scripts/Outland/TempestKeep/botanica/boss_commander_sarannis.cpp index 20531f1f110..6775fb95824 100644 --- a/src/server/scripts/Outland/TempestKeep/botanica/boss_commander_sarannis.cpp +++ b/src/server/scripts/Outland/TempestKeep/botanica/boss_commander_sarannis.cpp @@ -93,7 +93,7 @@ class boss_commander_sarannis : public CreatureScript BossAI::JustSummoned(summon); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Outland/TempestKeep/botanica/boss_high_botanist_freywinn.cpp b/src/server/scripts/Outland/TempestKeep/botanica/boss_high_botanist_freywinn.cpp index 2ab527c2fd5..39ca6d32196 100644 --- a/src/server/scripts/Outland/TempestKeep/botanica/boss_high_botanist_freywinn.cpp +++ b/src/server/scripts/Outland/TempestKeep/botanica/boss_high_botanist_freywinn.cpp @@ -114,7 +114,7 @@ class boss_high_botanist_freywinn : public CreatureScript Talk(SAY_DEATH); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Outland/TempestKeep/botanica/boss_laj.cpp b/src/server/scripts/Outland/TempestKeep/botanica/boss_laj.cpp index bd9195e44f8..7b4ef77ac10 100644 --- a/src/server/scripts/Outland/TempestKeep/botanica/boss_laj.cpp +++ b/src/server/scripts/Outland/TempestKeep/botanica/boss_laj.cpp @@ -167,7 +167,7 @@ class boss_laj : public CreatureScript summon->AI()->AttackStart(SelectTarget(SELECT_TARGET_RANDOM, 0)); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Outland/TempestKeep/botanica/boss_thorngrin_the_tender.cpp b/src/server/scripts/Outland/TempestKeep/botanica/boss_thorngrin_the_tender.cpp index ffd48f4dcb5..70b626190b7 100644 --- a/src/server/scripts/Outland/TempestKeep/botanica/boss_thorngrin_the_tender.cpp +++ b/src/server/scripts/Outland/TempestKeep/botanica/boss_thorngrin_the_tender.cpp @@ -95,7 +95,7 @@ class boss_thorngrin_the_tender : public CreatureScript } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Outland/TempestKeep/botanica/boss_warp_splinter.cpp b/src/server/scripts/Outland/TempestKeep/botanica/boss_warp_splinter.cpp index d2b6c44ec7b..1275550a340 100644 --- a/src/server/scripts/Outland/TempestKeep/botanica/boss_warp_splinter.cpp +++ b/src/server/scripts/Outland/TempestKeep/botanica/boss_warp_splinter.cpp @@ -90,7 +90,7 @@ class mob_warp_splinter_treant : public CreatureScript void MoveInLineOfSight(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) { @@ -190,7 +190,7 @@ class boss_warp_splinter : public CreatureScript Talk(SAY_SUMMON); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Outland/boss_doomlord_kazzak.cpp b/src/server/scripts/Outland/boss_doomlord_kazzak.cpp index 8886e3e41f0..0e66893d3ac 100644 --- a/src/server/scripts/Outland/boss_doomlord_kazzak.cpp +++ b/src/server/scripts/Outland/boss_doomlord_kazzak.cpp @@ -108,7 +108,7 @@ class boss_doomlord_kazzak : public CreatureScript Talk(SAY_DEATH); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { // Return since we have no target if (!UpdateVictim()) diff --git a/src/server/scripts/Outland/boss_doomwalker.cpp b/src/server/scripts/Outland/boss_doomwalker.cpp index 9826900d246..33896800ada 100644 --- a/src/server/scripts/Outland/boss_doomwalker.cpp +++ b/src/server/scripts/Outland/boss_doomwalker.cpp @@ -97,7 +97,7 @@ class boss_doomwalker : public CreatureScript who->CastSpell(who, SPELL_AURA_DEATH, 1); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp index d03abc82b9c..fc317c4eca7 100644 --- a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp +++ b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp @@ -71,7 +71,7 @@ public: void Reset() { } - void UpdateAI(const uint32 /*uiDiff*/) + void UpdateAI(uint32 /*uiDiff*/) { if (!UpdateVictim()) return; @@ -195,7 +195,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (IsNihil) { @@ -468,7 +468,7 @@ public: OgreGUID = 0; } - void UpdateAI(const uint32 /*uiDiff*/) {} + void UpdateAI(uint32 /*uiDiff*/) {} }; }; @@ -528,7 +528,7 @@ public: } } - void UpdateAI(const uint32 /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (!UpdateVictim()) return; @@ -654,7 +654,7 @@ class npc_simon_bunny : public CreatureScript EventMap _events; std::list<uint8> colorSequence, playableSequence, playerSequence; - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { _events.Update(diff); @@ -708,7 +708,7 @@ class npc_simon_bunny : public CreatureScript } } - void DoAction(const int32 action) + void DoAction(int32 action) { switch (action) { diff --git a/src/server/scripts/Outland/zone_hellfire_peninsula.cpp b/src/server/scripts/Outland/zone_hellfire_peninsula.cpp index 64b484268df..e950547ac30 100644 --- a/src/server/scripts/Outland/zone_hellfire_peninsula.cpp +++ b/src/server/scripts/Outland/zone_hellfire_peninsula.cpp @@ -86,7 +86,7 @@ public: Talk(SAY_SUMMON); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (Faction_Timer) { @@ -487,7 +487,7 @@ public: } } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { if (uiCheckTimer <= uiDiff) { diff --git a/src/server/scripts/Outland/zone_nagrand.cpp b/src/server/scripts/Outland/zone_nagrand.cpp index edb7a2642d5..fd193aa4835 100644 --- a/src/server/scripts/Outland/zone_nagrand.cpp +++ b/src/server/scripts/Outland/zone_nagrand.cpp @@ -274,7 +274,7 @@ public: } } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { npc_escortAI::UpdateAI(uiDiff); if (!me->getVictim()) @@ -445,7 +445,7 @@ public: ReleasedFromCage = false; } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (ReleasedFromCage) { @@ -628,7 +628,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Outland/zone_netherstorm.cpp b/src/server/scripts/Outland/zone_netherstorm.cpp index 769ee7dc68d..e25d5403c02 100644 --- a/src/server/scripts/Outland/zone_netherstorm.cpp +++ b/src/server/scripts/Outland/zone_netherstorm.cpp @@ -237,7 +237,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (Event_Timer <= diff) { @@ -506,7 +506,7 @@ public: return false; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Is event even running? if (!isEvent) @@ -784,7 +784,7 @@ public: // DoCast(me, SPELL_DE_MATERIALIZE); //} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!Materialize) { @@ -997,7 +997,7 @@ public: player->FailQuest(QUEST_MARK_V_IS_ALIVE); } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { npc_escortAI::UpdateAI(uiDiff); diff --git a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp index 0a016f0923c..a0c365a9a96 100644 --- a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp +++ b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp @@ -126,7 +126,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (bCanEat || bIsEating) { @@ -280,7 +280,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) { @@ -385,7 +385,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (PoisonTimer) { @@ -661,6 +661,7 @@ class npc_karynaku : public CreatureScript /*#### # npc_overlord_morghor +# this whole script is wrong and needs a rewrite.even the illidan npc used is the wrong one.npc id 23467 may be the correct one ####*/ enum eOverlordData { @@ -766,7 +767,7 @@ public: Player* player = Unit::GetPlayer(*me, PlayerGUID); Creature* Illi = Creature::GetCreature(*me, IllidanGUID); - if (!player || !Illi) + if (!player) { EnterEvadeMode(); return 0; @@ -794,14 +795,21 @@ public: return 2000; break; case 5: - Illi->SetVisible(true); - Illi->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + if (Illi) + { + Illi->SetVisible(true); + Illi->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + Illi->SetDisplayId(21526); + } return 350; break; case 6: - Illi->CastSpell(Illi, SPELL_ONE, true); - Illi->SetTarget(me->GetGUID()); - me->SetTarget(IllidanGUID); + if (Illi) + { + Illi->CastSpell(Illi, SPELL_ONE, true); + Illi->SetTarget(me->GetGUID()); + me->SetTarget(IllidanGUID); + } return 2000; break; case 7: @@ -810,10 +818,15 @@ public: break; case 8: me->SetUInt32Value(UNIT_FIELD_BYTES_1, 8); - return 9000; + return 2500; + break; + case 9: + // missing text "Lord Illidan, this is the Dragonmaw that I, and others, have told you about. He will lead us to victory!" + return 5000; break; case 10: - Illi->AI()->Talk(LORD_ILLIDAN_SAY_1); + if (Illi) + Illi->AI()->Talk(LORD_ILLIDAN_SAY_1); return 5000; break; case 11: @@ -821,42 +834,53 @@ public: return 6000; break; case 12: - Illi->AI()->Talk(LORD_ILLIDAN_SAY_2); + if (Illi) + Illi->AI()->Talk(LORD_ILLIDAN_SAY_2); return 5500; break; case 13: - Illi->AI()->Talk(LORD_ILLIDAN_SAY_3); + if (Illi) + Illi->AI()->Talk(LORD_ILLIDAN_SAY_3); return 4000; break; case 14: - Illi->SetTarget(PlayerGUID); + if (Illi) + Illi->SetTarget(PlayerGUID); return 1500; break; case 15: - Illi->AI()->Talk(LORD_ILLIDAN_SAY_4); + if (Illi) + Illi->AI()->Talk(LORD_ILLIDAN_SAY_4); return 1500; break; case 16: - Illi->CastSpell(player, SPELL_TWO, true); + if (Illi) + Illi->CastSpell(player, SPELL_TWO, true); player->RemoveAurasDueToSpell(SPELL_THREE); player->RemoveAurasDueToSpell(SPELL_FOUR); return 5000; break; case 17: - Illi->AI()->Talk(LORD_ILLIDAN_SAY_5); + if (Illi) + Illi->AI()->Talk(LORD_ILLIDAN_SAY_5); return 5000; break; case 18: - Illi->AI()->Talk(LORD_ILLIDAN_SAY_6); + if (Illi) + Illi->AI()->Talk(LORD_ILLIDAN_SAY_6); return 5000; break; case 19: - Illi->AI()->Talk(LORD_ILLIDAN_SAY_7); + if (Illi) + Illi->AI()->Talk(LORD_ILLIDAN_SAY_7); return 5000; break; case 20: - Illi->HandleEmoteCommand(EMOTE_ONESHOT_LIFTOFF); - Illi->SetDisableGravity(true); + if (Illi) + { + Illi->HandleEmoteCommand(EMOTE_ONESHOT_LIFTOFF); + Illi->SetDisableGravity(true); + } return 500; break; case 21: @@ -864,8 +888,11 @@ public: return 500; break; case 22: - Illi->SetVisible(false); - Illi->setDeathState(JUST_DIED); + if (Illi) + { + Illi->SetVisible(false); + Illi->setDeathState(JUST_DIED); + } return 1000; break; case 23: @@ -886,7 +913,7 @@ public: break; case 27: { - Unit* Yarzill = me->FindNearestCreature(C_YARZILL, 50); + Unit* Yarzill = me->FindNearestCreature(C_YARZILL, 50.0f); if (Yarzill) Yarzill->SetTarget(PlayerGUID); return 500; @@ -921,9 +948,11 @@ public: } break; case 32: - me->GetMotionMaster()->MovePoint(0, -5085.77f, 577.231f, 86.6719f); return 5000; + me->GetMotionMaster()->MovePoint(0, -5085.77f, 577.231f, 86.6719f); + return 5000; break; case 33: + me->SetTarget(0); Reset(); return 100; break; @@ -933,14 +962,14 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!ConversationTimer) return; if (ConversationTimer <= diff) { - if (Event && IllidanGUID && PlayerGUID) + if (Event && PlayerGUID) ConversationTimer = NextStep(++Step); } else ConversationTimer -= diff; } @@ -1096,7 +1125,7 @@ public: } } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 uiDiff) { npc_escortAI::UpdateAI(uiDiff); @@ -1297,7 +1326,7 @@ public: ++AnimationCount; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (AnimationTimer) { @@ -1485,7 +1514,7 @@ public: Announced = false; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!PlayerGUID || !EventStarted) return; @@ -1552,7 +1581,7 @@ public: CAST_AI(npc_lord_illidan_stormrage::npc_lord_illidan_stormrageAI, LordIllidan->AI())->LiveCounter(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -1946,7 +1975,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (tapped) { diff --git a/src/server/scripts/Outland/zone_shattrath_city.cpp b/src/server/scripts/Outland/zone_shattrath_city.cpp index ac26614ae69..14553be0ef4 100644 --- a/src/server/scripts/Outland/zone_shattrath_city.cpp +++ b/src/server/scripts/Outland/zone_shattrath_city.cpp @@ -101,7 +101,7 @@ public: me->RestoreFaction(); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -176,7 +176,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -519,7 +519,7 @@ public: void EnterCombat(Unit* /*who*/){} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (SayTimer <= diff) { diff --git a/src/server/scripts/Outland/zone_terokkar_forest.cpp b/src/server/scripts/Outland/zone_terokkar_forest.cpp index 2b046a7518e..caa31ed472c 100644 --- a/src/server/scripts/Outland/zone_terokkar_forest.cpp +++ b/src/server/scripts/Outland/zone_terokkar_forest.cpp @@ -125,7 +125,7 @@ public: } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (CanDoQuest) { @@ -244,7 +244,7 @@ public: void Reset() {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { npc_escortAI::UpdateAI(diff); } @@ -416,7 +416,7 @@ public: void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Outland/zone_zangarmarsh.cpp b/src/server/scripts/Outland/zone_zangarmarsh.cpp index 319da372bf8..b4899189af5 100644 --- a/src/server/scripts/Outland/zone_zangarmarsh.cpp +++ b/src/server/scripts/Outland/zone_zangarmarsh.cpp @@ -192,7 +192,7 @@ public: void EnterCombat(Unit* /*who*/) {} - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 05fad623114..edda9750709 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -1707,68 +1707,6 @@ class spell_gen_damage_reduction_aura : public SpellScriptLoader } }; -class spell_gen_luck_of_the_draw : public SpellScriptLoader -{ - public: - spell_gen_luck_of_the_draw() : SpellScriptLoader("spell_gen_luck_of_the_draw") { } - - class spell_gen_luck_of_the_draw_AuraScript : public AuraScript - { - PrepareAuraScript(spell_gen_luck_of_the_draw_AuraScript); - - bool Load() - { - return GetUnitOwner()->GetTypeId() == TYPEID_PLAYER; - } - - // cheap hax to make it have update calls - void CalcPeriodic(AuraEffect const* /*effect*/, bool& isPeriodic, int32& amplitude) - { - isPeriodic = true; - amplitude = 5 * IN_MILLISECONDS; - } - - void Update(AuraEffect* /*effect*/) - { - if (Player* owner = GetUnitOwner()->ToPlayer()) - { - const LfgDungeonSet dungeons = sLFGMgr->GetSelectedDungeons(owner->GetGUID()); - LfgDungeonSet::const_iterator itr = dungeons.begin(); - - if (itr == dungeons.end()) - { - Remove(AURA_REMOVE_BY_DEFAULT); - return; - } - - - LFGDungeonData const* randomDungeon = sLFGMgr->GetLFGDungeon(*itr); - if (Group* group = owner->GetGroup()) - if (Map const* map = owner->GetMap()) - if (group->isLFGGroup()) - if (uint32 dungeonId = sLFGMgr->GetDungeon(group->GetGUID(), true)) - if (LFGDungeonData const* dungeon = sLFGMgr->GetLFGDungeon(dungeonId)) - if (uint32(dungeon->map) == map->GetId() && dungeon->difficulty == map->GetDifficulty()) - if (randomDungeon && randomDungeon->type == LFG_TYPE_RANDOM) - return; // in correct dungeon - - Remove(AURA_REMOVE_BY_DEFAULT); - } - } - - void Register() - { - DoEffectCalcPeriodic += AuraEffectCalcPeriodicFn(spell_gen_luck_of_the_draw_AuraScript::CalcPeriodic, EFFECT_0, SPELL_AURA_MOD_DAMAGE_PERCENT_DONE); - OnEffectUpdatePeriodic += AuraEffectUpdatePeriodicFn(spell_gen_luck_of_the_draw_AuraScript::Update, EFFECT_0, SPELL_AURA_MOD_DAMAGE_PERCENT_DONE); - } - }; - - AuraScript* GetAuraScript() const - { - return new spell_gen_luck_of_the_draw_AuraScript(); - } -}; - enum DummyTrigger { SPELL_PERSISTANT_SHIELD_TRIGGERED = 26470, @@ -3518,6 +3456,63 @@ class spell_gen_replenishment : public SpellScriptLoader } }; +enum ServiceUniform +{ + SPELL_SERVICE_UNIFORM = 71450, + + MODEL_GOBLIN_MALE = 31002, + MODEL_GOBLIN_FEMALE = 31003, +}; + +class spell_gen_aura_service_uniform : public SpellScriptLoader +{ + public: + spell_gen_aura_service_uniform() : SpellScriptLoader("spell_gen_aura_service_uniform") { } + + class spell_gen_aura_service_uniform_AuraScript : public AuraScript + { + PrepareAuraScript(spell_gen_aura_service_uniform_AuraScript); + + bool Validate(SpellInfo const* /*spell*/) + { + if (!sSpellMgr->GetSpellInfo(SPELL_SERVICE_UNIFORM)) + return false; + return true; + } + + void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + // Apply model goblin + Unit* target = GetTarget(); + if (target->GetTypeId() == TYPEID_PLAYER) + { + if (target->getGender() == GENDER_MALE) + target->SetDisplayId(MODEL_GOBLIN_MALE); + else + target->SetDisplayId(MODEL_GOBLIN_FEMALE); + } + } + + void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + Unit* target = GetTarget(); + if (target->GetTypeId() == TYPEID_PLAYER) + target->RestoreDisplayId(); + } + + void Register() + { + AfterEffectApply += AuraEffectRemoveFn(spell_gen_aura_service_uniform_AuraScript::OnApply, EFFECT_0, SPELL_AURA_TRANSFORM, AURA_EFFECT_HANDLE_REAL); + AfterEffectRemove += AuraEffectRemoveFn(spell_gen_aura_service_uniform_AuraScript::OnRemove, EFFECT_0, SPELL_AURA_TRANSFORM, AURA_EFFECT_HANDLE_REAL); + } + }; + + AuraScript* GetAuraScript() const + { + return new spell_gen_aura_service_uniform_AuraScript(); + } +}; + void AddSC_generic_spell_scripts() { new spell_gen_absorb0_hitlimit1(); @@ -3553,7 +3548,6 @@ void AddSC_generic_spell_scripts() new spell_gen_vehicle_scaling(); new spell_gen_oracle_wolvar_reputation(); new spell_gen_damage_reduction_aura(); - new spell_gen_luck_of_the_draw(); new spell_gen_dummy_trigger(); new spell_gen_spirit_healer_res(); new spell_gen_gadgetzan_transporter_backfire(); @@ -3597,4 +3591,5 @@ void AddSC_generic_spell_scripts() new spell_gen_bonked(); new spell_gen_gift_of_naaru(); new spell_gen_replenishment(); + new spell_gen_aura_service_uniform(); } diff --git a/src/server/scripts/Spells/spell_holiday.cpp b/src/server/scripts/Spells/spell_holiday.cpp index dbfc2b44501..90bb689a9a9 100644 --- a/src/server/scripts/Spells/spell_holiday.cpp +++ b/src/server/scripts/Spells/spell_holiday.cpp @@ -368,7 +368,7 @@ class spell_winter_veil_px_238_winter_wondervolt : public SpellScriptLoader if (target->HasAura(spells[i])) return; - GetCaster()->CastSpell(target, spells[urand(0, 3)], true); + target->CastSpell(target, spells[urand(0, 3)], true); } } diff --git a/src/server/scripts/Spells/spell_hunter.cpp b/src/server/scripts/Spells/spell_hunter.cpp index 877248cf1a8..891a7daaa1f 100644 --- a/src/server/scripts/Spells/spell_hunter.cpp +++ b/src/server/scripts/Spells/spell_hunter.cpp @@ -38,7 +38,7 @@ enum HunterSpells SPELL_HUNTER_CHIMERA_SHOT_SERPENT = 53353, SPELL_HUNTER_CHIMERA_SHOT_VIPER = 53358, SPELL_HUNTER_CHIMERA_SHOT_SCORPID = 53359, - SPELL_HUNTER_GLYPHE_OF_ASPECT_OF_THE_VIPER = 56851, + SPELL_HUNTER_GLYPH_OF_ASPECT_OF_THE_VIPER = 56851, SPELL_HUNTER_INVIGORATION_TRIGGERED = 53398, SPELL_HUNTER_MASTERS_CALL_TRIGGERED = 62305, SPELL_HUNTER_MISDIRECTION_PROC = 35079, @@ -116,7 +116,7 @@ class spell_hun_ascpect_of_the_viper : public SpellScriptLoader { if (!sSpellMgr->GetSpellInfo(SPELL_HUNTER_ASPECT_OF_THE_VIPER_ENERGIZE)) return false; - if (!sSpellMgr->GetSpellInfo(SPELL_HUNTER_GLYPHE_OF_ASPECT_OF_THE_VIPER)) + if (!sSpellMgr->GetSpellInfo(SPELL_HUNTER_GLYPH_OF_ASPECT_OF_THE_VIPER)) return false; return true; } @@ -128,8 +128,8 @@ class spell_hun_ascpect_of_the_viper : public SpellScriptLoader uint32 maxMana = GetTarget()->GetMaxPower(POWER_MANA); int32 mana = CalculatePct(maxMana, GetTarget()->GetAttackTime(RANGED_ATTACK) / 1000.0f); - if (AuraEffect const* glyphe = GetTarget()->GetAuraEffect(SPELL_HUNTER_GLYPHE_OF_ASPECT_OF_THE_VIPER, EFFECT_0)) - AddPct(mana, glyphe->GetAmount()); + if (AuraEffect const* glyph = GetTarget()->GetAuraEffect(SPELL_HUNTER_GLYPH_OF_ASPECT_OF_THE_VIPER, EFFECT_0)) + AddPct(mana, glyph->GetAmount()); GetTarget()->CastCustomSpell(SPELL_HUNTER_ASPECT_OF_THE_VIPER_ENERGIZE, SPELLVALUE_BASE_POINT0, mana, GetTarget(), true, NULL, aurEff); } diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp index b8e17f4ecca..c9c75cdb134 100644 --- a/src/server/scripts/Spells/spell_item.cpp +++ b/src/server/scripts/Spells/spell_item.cpp @@ -140,7 +140,7 @@ class spell_item_blessing_of_ancient_kings : public SpellScriptLoader protEff->SetAmount(std::min<int32>(protEff->GetAmount() + absorb, 20000)); // Refresh and return to prevent replacing the aura - aurEff->GetBase()->RefreshDuration(); + protEff->GetBase()->RefreshDuration(); } else GetTarget()->CastCustomSpell(SPELL_PROTECTION_OF_ANCIENT_KINGS, SPELLVALUE_BASE_POINT0, absorb, eventInfo.GetProcTarget(), true, NULL, aurEff); @@ -813,53 +813,65 @@ class spell_item_scroll_of_recall : public SpellScriptLoader enum ShadowsFate { SPELL_SOUL_FEAST = 71203, - QUEST_A_FEAST_OF_SOULS = 24547 }; -class spell_item_shadows_fate : public SpellScriptLoader +class spell_item_unsated_craving : public SpellScriptLoader { public: - spell_item_shadows_fate() : SpellScriptLoader("spell_item_shadows_fate") { } + spell_item_unsated_craving() : SpellScriptLoader("spell_item_unsated_craving") { } - class spell_item_shadows_fate_AuraScript : public AuraScript + class spell_item_unsated_craving_AuraScript : public AuraScript { - PrepareAuraScript(spell_item_shadows_fate_AuraScript); + PrepareAuraScript(spell_item_unsated_craving_AuraScript); - bool Validate(SpellInfo const* /*spellInfo*/) + bool CheckProc(ProcEventInfo& procInfo) { - if (!sSpellMgr->GetSpellInfo(SPELL_SOUL_FEAST)) + Unit* caster = procInfo.GetActor(); + if (!caster || caster->GetTypeId() != TYPEID_PLAYER) return false; - if (!sObjectMgr->GetQuestTemplate(QUEST_A_FEAST_OF_SOULS)) + + Unit* target = procInfo.GetActionTarget(); + if (!target || target->GetTypeId() != TYPEID_UNIT || target->GetCreatureType() == CREATURE_TYPE_CRITTER || target->isSummon()) return false; - return true; - } - bool Load() - { - _procTarget = NULL; return true; } - bool CheckProc(ProcEventInfo& /*eventInfo*/) + void Register() { - _procTarget = GetCaster(); - return _procTarget && _procTarget->GetTypeId() == TYPEID_PLAYER && _procTarget->ToPlayer()->GetQuestStatus(QUEST_A_FEAST_OF_SOULS) == QUEST_STATUS_INCOMPLETE; + DoCheckProc += AuraCheckProcFn(spell_item_unsated_craving_AuraScript::CheckProc); } + }; - void HandleProc(AuraEffect const* /*aurEff*/, ProcEventInfo& /*eventInfo*/) + AuraScript* GetAuraScript() const + { + return new spell_item_unsated_craving_AuraScript(); + } +}; + +class spell_item_shadows_fate : public SpellScriptLoader +{ + public: + spell_item_shadows_fate() : SpellScriptLoader("spell_item_shadows_fate") { } + + class spell_item_shadows_fate_AuraScript : public AuraScript + { + PrepareAuraScript(spell_item_shadows_fate_AuraScript); + + void HandleProc(ProcEventInfo& procInfo) { - PreventDefaultAction(); - GetTarget()->CastSpell(_procTarget, SPELL_SOUL_FEAST, true); + Unit* caster = procInfo.GetActor(); + Unit* target = GetCaster(); + if (!caster || !target) + return; + + caster->CastSpell(target, SPELL_SOUL_FEAST, TRIGGERED_FULL_MASK); } void Register() { - DoCheckProc += AuraCheckProcFn(spell_item_shadows_fate_AuraScript::CheckProc); - OnEffectProc += AuraEffectProcFn(spell_item_shadows_fate_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_DUMMY); + OnProc += AuraProcFn(spell_item_shadows_fate_AuraScript::HandleProc); } - - private: - Unit* _procTarget; }; AuraScript* GetAuraScript() const @@ -2481,6 +2493,7 @@ void AddSC_item_spell_scripts() new spell_item_piccolo_of_the_flaming_fire(); new spell_item_savory_deviate_delight(); new spell_item_scroll_of_recall(); + new spell_item_unsated_craving(); new spell_item_shadows_fate(); new spell_item_shadowmourne(); new spell_item_shadowmourne_soul_fragment(); diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index e19110d0f62..4e86a895484 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -31,8 +31,8 @@ enum PriestSpells { SPELL_PRIEST_DIVINE_AEGIS = 47753, SPELL_PRIEST_EMPOWERED_RENEW = 63544, - SPELL_PRIEST_GLYPHE_OF_LIGHTWELL = 55673, - SPELL_PRIEST_GLYPHE_OF_PRAYER_OF_HEALING_HEAL = 56161, + SPELL_PRIEST_GLYPH_OF_LIGHTWELL = 55673, + SPELL_PRIEST_GLYPH_OF_PRAYER_OF_HEALING_HEAL = 56161, SPELL_PRIEST_GUARDIAN_SPIRIT_HEAL = 48153, SPELL_PRIEST_MANA_LEECH_PROC = 34650, SPELL_PRIEST_PENANCE_R1 = 47540, @@ -114,7 +114,7 @@ class spell_pri_glyph_of_prayer_of_healing : public SpellScriptLoader bool Validate(SpellInfo const* /*spellInfo*/) { - if (!sSpellMgr->GetSpellInfo(SPELL_PRIEST_GLYPHE_OF_PRAYER_OF_HEALING_HEAL)) + if (!sSpellMgr->GetSpellInfo(SPELL_PRIEST_GLYPH_OF_PRAYER_OF_HEALING_HEAL)) return false; return true; } @@ -123,9 +123,9 @@ class spell_pri_glyph_of_prayer_of_healing : public SpellScriptLoader { PreventDefaultAction(); - SpellInfo const* triggeredSpellInfo = sSpellMgr->GetSpellInfo(SPELL_PRIEST_GLYPHE_OF_PRAYER_OF_HEALING_HEAL); + SpellInfo const* triggeredSpellInfo = sSpellMgr->GetSpellInfo(SPELL_PRIEST_GLYPH_OF_PRAYER_OF_HEALING_HEAL); int32 heal = int32(CalculatePct(int32(eventInfo.GetHealInfo()->GetHeal()), aurEff->GetAmount()) / triggeredSpellInfo->GetMaxTicks()); - GetTarget()->CastCustomSpell(SPELL_PRIEST_GLYPHE_OF_PRAYER_OF_HEALING_HEAL, SPELLVALUE_BASE_POINT0, heal, eventInfo.GetProcTarget(), true, NULL, aurEff); + GetTarget()->CastCustomSpell(SPELL_PRIEST_GLYPH_OF_PRAYER_OF_HEALING_HEAL, SPELLVALUE_BASE_POINT0, heal, eventInfo.GetProcTarget(), true, NULL, aurEff); } void Register() @@ -212,7 +212,7 @@ class spell_pri_lightwell_renew : public SpellScriptLoader if (Unit* caster = GetCaster()) { // Bonus from Glyph of Lightwell - if (AuraEffect* modHealing = caster->GetAuraEffect(SPELL_PRIEST_GLYPHE_OF_LIGHTWELL, EFFECT_0)) + if (AuraEffect* modHealing = caster->GetAuraEffect(SPELL_PRIEST_GLYPH_OF_LIGHTWELL, EFFECT_0)) AddPct(amount, modHealing->GetAmount()); } } diff --git a/src/server/scripts/Spells/spell_shaman.cpp b/src/server/scripts/Spells/spell_shaman.cpp index b69295150c2..f970807bb94 100644 --- a/src/server/scripts/Spells/spell_shaman.cpp +++ b/src/server/scripts/Spells/spell_shaman.cpp @@ -296,9 +296,9 @@ class spell_sha_earth_shield : public SpellScriptLoader // Glyph of Earth Shield //! WORKAROUND - //! this glyphe is a proc - if (AuraEffect* glyphe = caster->GetAuraEffect(SPELL_SHAMAN_GLYPH_OF_EARTH_SHIELD, EFFECT_0)) - AddPct(amount, glyphe->GetAmount()); + //! this glyph is a proc + if (AuraEffect* glyph = caster->GetAuraEffect(SPELL_SHAMAN_GLYPH_OF_EARTH_SHIELD, EFFECT_0)) + AddPct(amount, glyph->GetAmount()); } } diff --git a/src/server/scripts/Spells/spell_warlock.cpp b/src/server/scripts/Spells/spell_warlock.cpp index 78bfcbab6a0..a9a4b2d749a 100644 --- a/src/server/scripts/Spells/spell_warlock.cpp +++ b/src/server/scripts/Spells/spell_warlock.cpp @@ -38,7 +38,7 @@ enum WarlockSpells SPELL_WARLOCK_DEMONIC_EMPOWERMENT_FELHUNTER = 54509, SPELL_WARLOCK_DEMONIC_EMPOWERMENT_IMP = 54444, SPELL_WARLOCK_FEL_SYNERGY_HEAL = 54181, - SPELL_WARLOCK_GLYPHE_OF_SIPHON_LIFE = 63106, + SPELL_WARLOCK_GLYPH_OF_SIPHON_LIFE = 63106, SPELL_WARLOCK_IMPROVED_HEALTHSTONE_R1 = 18692, SPELL_WARLOCK_IMPROVED_HEALTHSTONE_R2 = 18693, SPELL_WARLOCK_IMPROVED_HEALTH_FUNNEL_R1 = 18703, @@ -746,7 +746,7 @@ class spell_warl_siphon_life : public SpellScriptLoader { if (!sSpellMgr->GetSpellInfo(SPELL_WARLOCK_SIPHON_LIFE_HEAL)) return false; - if (!sSpellMgr->GetSpellInfo(SPELL_WARLOCK_GLYPHE_OF_SIPHON_LIFE)) + if (!sSpellMgr->GetSpellInfo(SPELL_WARLOCK_GLYPH_OF_SIPHON_LIFE)) return false; return true; } @@ -762,8 +762,8 @@ class spell_warl_siphon_life : public SpellScriptLoader int32 amount = int32(CalculatePct(eventInfo.GetDamageInfo()->GetDamage(), aurEff->GetAmount())); // Glyph of Siphon Life - if (AuraEffect const* glyphe = GetTarget()->GetAuraEffect(SPELL_WARLOCK_GLYPHE_OF_SIPHON_LIFE, EFFECT_0)) - AddPct(amount, glyphe->GetAmount()); + if (AuraEffect const* glyph = GetTarget()->GetAuraEffect(SPELL_WARLOCK_GLYPH_OF_SIPHON_LIFE, EFFECT_0)) + AddPct(amount, glyph->GetAmount()); GetTarget()->CastCustomSpell(SPELL_WARLOCK_SIPHON_LIFE_HEAL, SPELLVALUE_BASE_POINT0, amount, GetTarget(), true, NULL, aurEff); } diff --git a/src/server/scripts/World/achievement_scripts.cpp b/src/server/scripts/World/achievement_scripts.cpp index 41a32185620..d0ffe5214db 100644 --- a/src/server/scripts/World/achievement_scripts.cpp +++ b/src/server/scripts/World/achievement_scripts.cpp @@ -315,6 +315,30 @@ class achievement_not_even_a_scratch : public AchievementCriteriaScript } }; +enum FlirtWithDisaster +{ + AURA_PERFUME_FOREVER = 70235, + AURA_PERFUME_ENCHANTRESS = 70234, + AURA_PERFUME_VICTORY = 70233, +}; + +class achievement_flirt_with_disaster_perf_check : public AchievementCriteriaScript +{ + public: + achievement_flirt_with_disaster_perf_check() : AchievementCriteriaScript("achievement_flirt_with_disaster_perf_check") { } + + bool OnCheck(Player* player, Unit* /*target*/) + { + if (!player) + return false; + + if (player->HasAura(AURA_PERFUME_FOREVER) || player->HasAura(AURA_PERFUME_ENCHANTRESS) || player->HasAura(AURA_PERFUME_VICTORY)) + return true; + + return false; + } +}; + void AddSC_achievement_scripts() { new achievement_resilient_victory(); @@ -333,4 +357,5 @@ void AddSC_achievement_scripts() new achievement_bg_sa_defense_of_ancients(); new achievement_tilted(); new achievement_not_even_a_scratch(); + new achievement_flirt_with_disaster_perf_check(); } diff --git a/src/server/scripts/World/areatrigger_scripts.cpp b/src/server/scripts/World/areatrigger_scripts.cpp index c031c4a3b4d..83fac35b1b6 100644 --- a/src/server/scripts/World/areatrigger_scripts.cpp +++ b/src/server/scripts/World/areatrigger_scripts.cpp @@ -425,6 +425,69 @@ class AreaTrigger_at_area_52_entrance : public AreaTriggerScript std::map<uint32, time_t> _triggerTimes; }; +/*###### + ## at_frostgrips_hollow + ######*/ + +enum FrostgripsHollow +{ + QUEST_THE_LONESOME_WATCHER = 12877, + + NPC_STORMFORGED_MONITOR = 29862, + NPC_STORMFORGED_ERADICTOR = 29861, + + TYPE_WAYPOINT = 0, + DATA_START = 0 +}; + +Position const stormforgedMonitorPosition = {6963.95f, 45.65f, 818.71f, 4.948f}; +Position const stormforgedEradictorPosition = {6983.18f, 7.15f, 806.33f, 2.228f}; + +class AreaTrigger_at_frostgrips_hollow : public AreaTriggerScript +{ +public: + AreaTrigger_at_frostgrips_hollow() : AreaTriggerScript("at_frostgrips_hollow") + { + stormforgedMonitorGUID = 0; + stormforgedEradictorGUID = 0; + } + + bool OnTrigger(Player* player, AreaTriggerEntry const* /* trigger */) + { + if (player->GetQuestStatus(QUEST_THE_LONESOME_WATCHER) != QUEST_STATUS_INCOMPLETE) + return false; + + Creature* stormforgedMonitor = Creature::GetCreature(*player, stormforgedMonitorGUID); + if (stormforgedMonitor) + return false; + + Creature* stormforgedEradictor = Creature::GetCreature(*player, stormforgedEradictorGUID); + if (stormforgedEradictor) + return false; + + if ((stormforgedMonitor = player->SummonCreature(NPC_STORMFORGED_MONITOR, stormforgedMonitorPosition, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000))) + { + stormforgedMonitorGUID = stormforgedMonitor->GetGUID(); + stormforgedMonitor->SetWalk(false); + /// The npc would search an alternative way to get to the last waypoint without this unit state. + stormforgedMonitor->AddUnitState(UNIT_STATE_IGNORE_PATHFINDING); + stormforgedMonitor->GetMotionMaster()->MovePath(NPC_STORMFORGED_MONITOR * 100, false); + } + + if ((stormforgedEradictor = player->SummonCreature(NPC_STORMFORGED_ERADICTOR, stormforgedEradictorPosition, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000))) + { + stormforgedEradictorGUID = stormforgedEradictor->GetGUID(); + stormforgedEradictor->GetMotionMaster()->MovePath(NPC_STORMFORGED_ERADICTOR * 100, false); + } + + return true; + } + +private: + uint64 stormforgedMonitorGUID; + uint64 stormforgedEradictorGUID; +}; + void AddSC_areatrigger_scripts() { new AreaTrigger_at_coilfang_waterfall(); @@ -436,4 +499,5 @@ void AddSC_areatrigger_scripts() new AreaTrigger_at_nats_landing(); new AreaTrigger_at_brewfest(); new AreaTrigger_at_area_52_entrance(); + new AreaTrigger_at_frostgrips_hollow(); } diff --git a/src/server/scripts/World/boss_emerald_dragons.cpp b/src/server/scripts/World/boss_emerald_dragons.cpp index 7699712a1e4..41508a80241 100644 --- a/src/server/scripts/World/boss_emerald_dragons.cpp +++ b/src/server/scripts/World/boss_emerald_dragons.cpp @@ -113,7 +113,7 @@ struct emerald_dragonAI : public WorldBossAI } // Execute and reschedule base events shared between all Emerald Dragons - void ExecuteEvent(uint32 const eventId) + void ExecuteEvent(uint32 eventId) { switch (eventId) { @@ -137,7 +137,7 @@ struct emerald_dragonAI : public WorldBossAI } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -177,7 +177,7 @@ class npc_dream_fog : public CreatureScript _roamTimer = 0; } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -275,7 +275,7 @@ class boss_ysondre : public CreatureScript } } - void ExecuteEvent(uint32 const eventId) + void ExecuteEvent(uint32 eventId) { switch (eventId) { @@ -370,7 +370,7 @@ class boss_lethon : public CreatureScript } } - void ExecuteEvent(uint32 const eventId) + void ExecuteEvent(uint32 eventId) { switch (eventId) { @@ -490,7 +490,7 @@ class boss_emeriss : public CreatureScript } } - void ExecuteEvent(uint32 const eventId) + void ExecuteEvent(uint32 eventId) { switch (eventId) { @@ -604,7 +604,7 @@ class boss_taerar : public CreatureScript } } - void ExecuteEvent(uint32 const eventId) + void ExecuteEvent(uint32 eventId) { switch (eventId) { @@ -622,7 +622,7 @@ class boss_taerar : public CreatureScript } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!me->isInCombat()) return; diff --git a/src/server/scripts/World/guards.cpp b/src/server/scripts/World/guards.cpp index f07a9ed7671..bff30f6cca5 100644 --- a/src/server/scripts/World/guards.cpp +++ b/src/server/scripts/World/guards.cpp @@ -70,7 +70,7 @@ public: DoCast(who, spell->Id); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Always decrease our global cooldown first if (globalCooldown > diff) @@ -273,7 +273,7 @@ public: canTeleport = false; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -338,7 +338,7 @@ public: canTeleport = false; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; diff --git a/src/server/scripts/World/mob_generic_creature.cpp b/src/server/scripts/World/mob_generic_creature.cpp index 174ba8870d1..d0ac142e050 100644 --- a/src/server/scripts/World/mob_generic_creature.cpp +++ b/src/server/scripts/World/mob_generic_creature.cpp @@ -55,7 +55,7 @@ public: IsSelfRooted = true; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { //Always decrease our global cooldown first if (GlobalCooldown > diff) @@ -186,7 +186,7 @@ public: uint32 timer, interval; const SpellInfo* spell; - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (timer <= diff) { diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp index 8a3342cf2de..af2a3b5f84c 100644 --- a/src/server/scripts/World/npcs_special.cpp +++ b/src/server/scripts/World/npcs_special.cpp @@ -344,7 +344,7 @@ public: void EnterCombat(Unit* /*who*/) {} - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { // Reset flags after a certain time has passed so that the next player has to start the 'event' again if (me->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER)) @@ -444,7 +444,7 @@ public: me->SendMessageToSet(&data, true); } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!Active) { @@ -689,7 +689,7 @@ public: } } - void UpdateAI(uint32 const diff); + void UpdateAI(uint32 diff); void EnterCombat(Unit* /*who*/){} }; @@ -798,7 +798,7 @@ public: } } - void UpdateAI(uint32 const /*diff*/) + void UpdateAI(uint32 /*diff*/) { //lower HP on every world tick makes it a useful counter, not officlone though if (me->isAlive() && me->GetHealth() > 6) @@ -824,7 +824,7 @@ public: } }; -void npc_doctor::npc_doctorAI::UpdateAI(uint32 const diff) +void npc_doctor::npc_doctorAI::UpdateAI(uint32 diff) { if (Event && SummonPatientCount >= 20) { @@ -1056,7 +1056,7 @@ public: } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (CanRun && !me->isInCombat()) { @@ -1128,7 +1128,7 @@ public: { } - void UpdateAI(uint32 const /*diff*/) + void UpdateAI(uint32 /*diff*/) { if (!UpdateVictim()) return; @@ -1540,7 +1540,7 @@ public: void AttackStart(Unit* /*who*/) {} void MoveInLineOfSight(Unit* /*who*/) {} - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (ExplosionTimer <= diff) { @@ -1656,7 +1656,7 @@ public: } } - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -1734,7 +1734,7 @@ public: void EnterCombat(Unit* /*who*/){} - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (me->HasAura(20372)) { @@ -1921,7 +1921,7 @@ public: despawnTimer = 4 * IN_MILLISECONDS; } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (despawnTimer > 0) { @@ -1981,10 +1981,11 @@ class npc_training_dummy : public CreatureScript public: npc_training_dummy() : CreatureScript("npc_training_dummy") { } - struct npc_training_dummyAI : Scripted_NoMovementAI + struct npc_training_dummyAI : ScriptedAI { - npc_training_dummyAI(Creature* creature) : Scripted_NoMovementAI(creature) + npc_training_dummyAI(Creature* creature) : ScriptedAI(creature) { + SetCombatMovement(false); entry = creature->GetEntry(); } @@ -2015,13 +2016,7 @@ public: damage = 0; } - void EnterCombat(Unit* /*who*/) - { - if (entry != NPC_ADVANCED_TARGET_DUMMY && entry != NPC_TARGET_DUMMY) - return; - } - - void UpdateAI(uint32 const diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -2115,7 +2110,7 @@ public: me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FIRE, true); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -2179,7 +2174,7 @@ public: me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, true); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; @@ -2909,14 +2904,14 @@ public: void EnterCombat(Unit* /*who*/) { } - void DoAction(const int32 /*param*/) + void DoAction(int32 /*param*/) { inLove = true; if (Unit* owner = me->GetOwner()) owner->CastSpell(owner, SPELL_SPRING_FLING, true); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 diff) { if (inLove) { |